Avatar billede blackscorpion Nybegynder
23. september 2002 - 19:39 Der er 35 kommentarer og
2 løsninger

Problem med if-else / why-catch og while løkke.

Hej Ekspert brugere.

Jeg er lige startet på Datamatiker uddannelsen, og har så programmering i Java.

Nu er jeg rendt ind i et pisse irriterende problem.

Min kode ser ud som følgende:

*******************************************************

import java.io.*;
import java.util.*;

public class InputOutput
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        FileReader fil = new FileReader("d:/java/sampledir/users.txt");
        BufferedReader ind = new BufferedReader(fil);
               
        String username, password;
        String linie = ind.readLine();
       
        System.out.print("Username: ");
        username = input.readLine();
        System.out.println(username);
        System.out.print("Password: ");
        password = input.readLine();
        System.out.println(password);
       
        while (linie != null)
        {           
            try
            {               
                StringTokenizer bidder = new StringTokenizer(linie, ":", false);
                String brugernavn = bidder.nextToken();
                String pwd = bidder.nextToken();
                String status = bidder.nextToken();
               
                if(username.equals(brugernavn.trim()) && password.equals(pwd.trim()))
                    System.out.println("Welcome "+username+" your Status is "+status);
                    linie = ind.readLine();
            }
            catch (FileNotFoundException u)
            {
                System.out.println("Filen kunne ikke findes.");
            }
            catch (Exception u)
            {
                System.out.println("Fejl ved læsning af fil.");
                u.printStackTrace();
            }
        }
        ind.close();
    }       
}

*******************************************************

problemet er at få den til at skrive noget, hvis ingen af de statements finder sted.

Altså hvis ingen af linierne i filen passer det til brugeren skriver ind.

Jeg kan simplethen ikke få lortet til det. :(

Nogle der ved hvad der skal gøres, eller kan se fejlen??

- TheSpeaker.
Avatar billede riversen Nybegynder
23. september 2002 - 19:44 #1
hvor går du?
Avatar billede blackscorpion Nybegynder
23. september 2002 - 19:45 #2
*SMOK* *klasker hovedet i bordet*

Ballerup Handelsskole.

Men nu det var ikke spørgsmålet. ;)
Avatar billede riversen Nybegynder
23. september 2002 - 19:53 #3
hvis jeg fjerne det med status kører det fint...har du lige et linieeksempel fra users.txt?
Avatar billede blackscorpion Nybegynder
23. september 2002 - 19:57 #4
brugernavn:password:status

sådan er der flere af.

så kan du selv lave nogle brugere med tilhørende password og status.

sæt status på igen, og hvad der sker hvis du bare skriver brugernavn: test og password: test, og brugeren ikke findes i filen.
Avatar billede riversen Nybegynder
23. september 2002 - 20:03 #5
jeg er nok ikke helt med på hvad du vil have der skal ske...
Avatar billede blackscorpion Nybegynder
23. september 2002 - 20:16 #6
okey har du oprettet users.txt og smidt 1 eller flere brugere i den??

hvis ja.

Så prøv at køre programmet, og skriv et brugernavn der ikke findes i filen.

så sker der INTET efter du har tastet brugernavn og password... right??

Der vil jeg gerne have at den skal skrive "Welcome username your Status is Guest" ...

sådan at der sker noget, uanset hvad man gør.

- TheSpeaker.
Avatar billede rudidanmark Nybegynder
23. september 2002 - 20:26 #7
Kan du ikke bare sætte en boolean i din if-sætning, som sættes til TRUE hvis navnet findes? fx.
import java.io.*;
import java.util.*;

public class InputOutput
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        FileReader fil = new FileReader("d:/java/sampledir/users.txt");
        BufferedReader ind = new BufferedReader(fil);
               
        String username, password;
        String linie = ind.readLine();
       
        System.out.print("Username: ");
        username = input.readLine();
        System.out.println(username);
        System.out.print("Password: ");
        password = input.readLine();
        System.out.println(password);
        Boolean navnFindes = false;
        while (linie != null)
        {           
            try
            {               
                StringTokenizer bidder = new StringTokenizer(linie, ":", false);
                String brugernavn = bidder.nextToken();
                String pwd = bidder.nextToken();
                String status = bidder.nextToken();
               
                if(username.equals(brugernavn.trim()) && password.equals(pwd.trim()))
                    System.out.println("Welcome "+username+" your Status is "+status);
                    linie = ind.readLine();
                    navnFindes = true;
            }
            catch (FileNotFoundException u)
            {
                System.out.println("Filen kunne ikke findes.");
            }
            catch (Exception u)
            {
                System.out.println("Fejl ved læsning af fil.");
                u.printStackTrace();
            }
        }
        ind.close();
        if(!navnFindes)
        {
          System.out.println("snydt");
        }
    }       
}
Avatar billede rudidanmark Nybegynder
23. september 2002 - 20:27 #8
husk tuborg ved if-sætning ;)
Avatar billede blackscorpion Nybegynder
23. september 2002 - 20:32 #9
okey prøver når jeg har spist.
Avatar billede riversen Nybegynder
23. september 2002 - 20:39 #10
if( username.equals(brugernavn.trim()) &&
                                password.equals(pwd.trim()))
                      {
                          System.out.println( "Welcome " + username +
                                                                  " your Status is " + status );
                          linie = ind.readLine();
                      }
                        else
                        {
                            System.out.println( "Welcome username your Status is Guest" );
                            break;
                        }

det her virker i hvert fald.
Avatar billede blackscorpion Nybegynder
23. september 2002 - 20:40 #11
InputOutput.java [34:1] cannot resolve symbol
symbol  : variable navnfindes 
location: class InputOutput
                    navnfindes = true;
                    ^
InputOutput.java [47:1] cannot resolve symbol
symbol  : variable navnfindes 
location: class InputOutput
        if(!navnfindes)
            ^
2 errors
Errors compiling InputOutput.java.
Avatar billede blackscorpion Nybegynder
23. september 2002 - 20:42 #12
Okey jeg laver den lige om, der var noget jeg havde overset.

InputOutput.java [22:1] incompatible types
found  : boolean
required: java.lang.Boolean
        Boolean navnFindes = false;
                            ^
InputOutput.java [36:1] cannot resolve symbol
symbol  : variable navnfindes 
location: class InputOutput
                    navnfindes = true;
                    ^
InputOutput.java [49:1] cannot resolve symbol
symbol  : variable navnfindes 
location: class InputOutput
        if(!navnfindes)
            ^
3 errors
Errors compiling InputOutput.java.
Avatar billede blackscorpion Nybegynder
23. september 2002 - 20:43 #13
har lige rettet en tastefejl, men får stadig samme fejl.
Avatar billede riversen Nybegynder
23. september 2002 - 20:53 #14
naaaaaaaaaaarj...nevermind
Avatar billede blackscorpion Nybegynder
23. september 2002 - 20:57 #15
hvad!?

jeg har lige kopieret hele det script ind du lige har skrevet... stadig samme fejltype.
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:01 #16
He, du er jo nødt til at prøve dig lidt frem jo, når programmet ikke virker..
Du skal her lave boolean med småt, ikke Boolean med stort ;)
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:02 #17
rudidanmark -> okey, prøver lige...
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:03 #18
Rudi -> så får jeg denne fejl:

InputOutput.java [48:1] variable navnFindes might not have been initialized
        if(!navnFindes)
            ^
1 error
Errors compiling InputOutput.java.
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:05 #19
Okey når jeg skriver boolean navnFindes = false;

så laver den ingen fejl... men den skriver INTET efter brugernavn og password...
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:06 #20
skriver du boolean NavnFindes eller navnFindes, hvor du laver din boolean?
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:07 #21
du skal selvfølgelig have samme navne gennem programmet
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:08 #22
det har jeg også... hvis jeg skriver

if(navnFindes) istedet for if(!navnFindes)

så skriver den snydt ved alle... men sætter jeg så ! på igen, sker der igen intet...
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:09 #23
navnFindes
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:13 #24
du skal lige indsætte et par tuborg i din if sætning, så navnFindes kun er sand, når navnet er der.
if(username.equals(brugernavn.trim()) && password.equals(pwd.trim()))
{                   
  System.out.println("Welcome "+username+" your Status is "+status);
  linie = ind.readLine();
  navnFindes = true;
}
se om det ikke skulle virke
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:15 #25
linie = ind.readLine() skal nok være efter din if-sætning
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:16 #26
VIIIIIIIIIIIIIIILDT!!!!!!!!!!!!!!!!!!!!!!!!!!!
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:17 #27
men hvorfor fortsætter den så uendeligt hvis linie = ind.readLine(); står inde i min if løkke??
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:17 #28
! kan du bruge til at finde ud af om din boolean er false
Avatar billede aslan Nybegynder
23. september 2002 - 21:18 #29
import java.io.*;
import java.util.*;

public class InputOutput
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        FileReader fil = new FileReader("d:/java/sampledir/users.txt");
        BufferedReader ind = new BufferedReader(fil);
               
        String username, password;
        String linie = ind.readLine();
       
        System.out.print("Username: ");
        username = input.readLine();
        System.out.println(username);
        System.out.print("Password: ");
        password = input.readLine();
        System.out.println(password);
        int navnFindes = 0;
        while (linie != null)
        {           
            try
            {               
                StringTokenizer bidder = new StringTokenizer(linie, ":", false);
                String brugernavn = bidder.nextToken();
                String pwd = bidder.nextToken();
                String status = bidder.nextToken();
               
                      if( username.equals(brugernavn.trim()) && password.equals(pwd.trim()))                             
                      {
                          System.out.println( "Welcome " + username +
                                                                  " your Status is " + status );
                          linie = ind.readLine();
                          navnFindes=1;
                      }
                      else
                      {
                            System.out.println( "Welcome username your Status is Guest" );
                            break;
                      }
            }
            catch (FileNotFoundException u)
            {
                System.out.println("Filen kunne ikke findes.");
            }
            catch (Exception u)
            {
                System.out.println("Fejl ved læsning af fil.");
                u.printStackTrace();
            }
        }
        ind.close();
        if(navnFindes==0)
        {
          System.out.println("snydt");
        }
    }       
}
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:20 #30
Yep det virker. ;)

har dog programmeret Perl og PHP. ;)

Men nu har jeg så en quest mere. ;)

At få den til at spytte det ud i et browser vindue, med knapper og input bokse...

nogle du vil hjælpe med, eller vil du have dine 60 point?? *G*
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:21 #31
fordi du ikke læser en ny linie ind, når din if-sætning ikke er gyldig, og while løkken stopper jo først når linie er lig null
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:22 #32
ahhhh okey. ;)

*skriver det sig bag øret.*
Avatar billede rudidanmark Nybegynder
23. september 2002 - 21:24 #33
Joh det vil jeg da, men har du ikke en bog at starte med først?
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:26 #34
jeg sidder med dem nu. *GGG* og jeg bruger dem også så vidt muligt. *GGG* ;)
Avatar billede aslan Nybegynder
23. september 2002 - 21:42 #35
Du får mere ud af at læse her end at jeg giver dig løsningen:

http://java.sun.com/docs/books/tutorial/uiswing/index.html


Hvis du arbejder med swing skal du bruge JTextArea,JButton,JTextField og en ActionListener der reagere på componenternes actions....
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:43 #36
Okey nu har jeg gloet i over 20 mins i de skide bøger, og jeg kan ikke finde andet end System.out.println("");

hvordan skal jeg skrive det ud i en browser?
Avatar billede blackscorpion Nybegynder
23. september 2002 - 21:44 #37
swing!?... *lost* *GGGGG* Kigger lige. ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester