Avatar billede bhn.314 Nybegynder
15. maj 2001 - 09:49 Der er 5 kommentarer og
2 løsninger

Bare trykke \'enter\' og gå videre....

Vi har et kommandobaseret program hvor brugeren skal indtaste forskellige oplysninger. Men de oplysninger brugeren IKKE har nogle oplysninger til skal han bare kunne trykke \'enter\' og gå videre til næste indtastning. Eksempel herunder:

System.out.print(\"Indtast alder: \");

//venter på indtastning fra bruger
String alder = Tastatur.readString ();
                   
System.out.print(\"Indtast andre oplysninger: \");
       
//venter på indtastning fra bruger
String andet = Tastatur.readString ();

Hvis brugeren ikke vil indtaste alder skal han bare kunne trykke \'enter\' og komme til næste spørgsmål. (Alder bliver jo så bare null)

Tastaturklassen ser sådan ud:

public class Tastatur{
   
/** Metoden indlæser en linje og returnerer den som en streng. */

public static String readString(){
  String s = \"\";
  try{
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  s = in.readLine();
  }
  catch(IOException e){
  System.out.println(\"Noget gik galt under indlaesning af denne streng fra tastaturet: \" + e);
  }
  return s;
}
}
Avatar billede agermose Nybegynder
15. maj 2001 - 10:08 #1
og det virker ikke?
Avatar billede bhn.314 Nybegynder
15. maj 2001 - 10:28 #2
Nej, cursoren laver bare et linjeskift når der trykkes \'enter\' og det bliver den ved med til der tastes et eller andet.
Avatar billede disky Nybegynder
15. maj 2001 - 11:10 #3
Yep det skyldes at et input fra SYstem.in skal have en længde og afsluttes med Return.

Det skulle virke hvis du f.eks. indtaster et mellemrum.

Du skal nok lave din egen reader. Eller fange tastetryk en efter en
Avatar billede logical Nybegynder
15. maj 2001 - 15:48 #4
Jeg har lige afviklet det under NT commandPrompt, og der var ingen problemer overhovedet.

Den linie der læses ind har længden 0 (nul), og det kan du bruge i din videre undersøgelse

f.eks.
if (alder.length() == 0) alder = null;

Så har du null efterfølgende.
Avatar billede logical Nybegynder
16. maj 2001 - 07:17 #5
disky>> Man kan ikke bare læse et tastetryk en efter en med de FileDescriptors, som eksempelvis Sun har leveret, da den først afleverer data, når man taster return.

Jeg har prøvet så mange gange at omgåes det, men...
Avatar billede cyberzed Nybegynder
28. juni 2001 - 02:09 #6
Kan det ikke laves med

if(alder.equals(\"\")) alder=\"\";
så ser den jo om det er en \"\" String
Avatar billede disky Nybegynder
28. juni 2001 - 08:50 #7
logical: ok
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