Avatar billede gladmhensk Nybegynder
06. april 2004 - 18:25 Der er 6 kommentarer og
1 løsning

Læse fra keyboard

Hey !
Sidder med noget kode fra min bog med streams. Jeg har 3 filer og det er i TestFormattedInput at jeg ikke fatter hvad der sker.

FormattedInput__________________________________________-
import java.io.*;


public class FormattedInput {
//Int method
public int readInt() throws InvalidUserInputException {
    if(readToken() != tokenizer.TT_NUMBER){
        throw new InvalidUserInputException("readInt() failed. Input data not nummeric");   
               
        }   
return (int) tokenizer.nval;
}

//Double method
public double readDouble() throws InvalidUserInputException {
    if (readToken() != tokenizer.TT_NUMBER){
        throw new InvalidUserInputException(" readDouble() failed. Input not numeric");
    }
return tokenizer.nval;
}

//String method
public String readString() throws InvalidUserInputException {
    if (readToken() == tokenizer.TT_WORD || ttype =='\"' || ttype == '\''){
        return tokenizer.sval;
        } else {
            throw new InvalidUserInputException(" readString() failed. Input not string");
        }
}

//Read Method
private int readToken() {
    try {
        ttype = tokenizer.nextToken();
        return ttype;
    } catch (IOException e){
        e.printStackTrace(System.err);
        System.exit(1);
    }
    return 0;
}


private StreamTokenizer tokenizer = new StreamTokenizer(
                                      new BufferedReader(
                                          new InputStreamReader(System.in)));
private int ttype;


}


InvalidUserInputException___________________________________

public class InvalidUserInputException extends Exception {
    public InvalidUserInputException() {}
   
    public InvalidUserInputException(String message){
        super(message);
    }
   

}


TestFormattedInput____________________________________-

public class TestFormattedInput {

    public static void main(String[] args) {
        FormattedInput kb = new FormattedInput();
        for(int i = 0; i < 5; i++){
       
        try{
            System.out.print("Enter an integer: ");
            System.out.println("Integer read: "+ kb.readInt());
        } catch (InvalidUserInputException e) {
            System.out.println("InvalidUserInputException thrown. \n "+ e.getMessage());
        }
    }
}
}



Hvordan kan det være at i den sidste fil TestFormattedInput kan jeg skrive ved
System.out.print("Enter an integer: ");

Det giver for mig ingen mening.
Avatar billede arne_v Ekspert
06. april 2004 - 18:36 #1
System.out.print("Enter an integer: ");

= udskriv prompt uden linie skift

kb.readInt()

= læser det du skriver (spor det selv tilbage)
Avatar billede gladmhensk Nybegynder
06. april 2004 - 18:56 #2
Tror jeg forklarede mig for dårligt.

System.out.print("Enter an integer: "); Tillader mig at skrive i prompt. Men hvorfor må jeg det ? Hvis jeg skrev  System.out.print("Enter an integer: "); i en main uden noget som helst andet til streams etc. ville jeg ikke have mulighed for at skrive til programmet. Forstår du/i ?
Avatar billede arne_v Ekspert
06. april 2004 - 19:07 #3
Du kan skriv i prompten fordi kb.readInt læser.
Avatar billede arne_v Ekspert
06. april 2004 - 19:10 #4
Simpleste eksempel:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter something: ");
String line = br.readLine();

Og det er altså readLine så gør det.
Avatar billede gladmhensk Nybegynder
06. april 2004 - 19:21 #5
Takker :) Var heldigvis ikke indviklet :D
Avatar billede gladmhensk Nybegynder
06. april 2004 - 19:21 #6
Lægger du ikke et svar ?
Avatar billede arne_v Ekspert
06. april 2004 - 19:22 #7
svar
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