Avatar billede ejldk Nybegynder
22. november 2007 - 18:40 Der er 16 kommentarer og
1 løsning

Hurtigt spg om læsning af brugerinput

Hej alle!
Hvordan kan man lave så et java program læser et bruger input med det samme?
Eksempel:
"Tryk N for at afslutte, og J for at starte forfra."
Jeg kan lave det så man først trykker fx N, også derefter Enter, og først dér loader den fx en metode. Men kan man lave det så den lukker programmet med det samme man trykker på N, og starter en metode med det samme man trykker på J?
Avatar billede arne_v Ekspert
22. november 2007 - 18:49 #1
Ikke med standard console input.

Du kan lave en platform specifik løsning med noget JNI og noget platform specifikt C kode.

Du kan bruge noget AWT eller Swing GUI.
Avatar billede ejldk Nybegynder
22. november 2007 - 18:56 #2
øhm, så det er ikke så ligetil, kan jeg høre?
Lige en anden ting:
kan jeg bruge en anden metode til at læse brugerinput?
Lige nu gør jeg det her: (Og ja, det er besværligt!)

int valgt;
valgt = tastatur.nextInt();
if (valgt = 1)
{
start();
}
else if (valgt = 2)
{
system.exit();
}

Mener jeg kan huske noget med:

if (tastatur.nextInt().equals(1))
{
start();
}

else if (tastatur.nextInt().equals(2))
{
system.exit();
}
Avatar billede w13 Novice
22. november 2007 - 19:04 #3
Jeg mener umiddelbart, du skal skrive valgt==1 og valgt==2 i dine if-sætninger, da det ellers er en tildeling og ikke en sammenligning.

Og du kan droppe klammerne, så det bli'r kortere:
---------------------------
int valgt;
valgt=tastatur.nextInt();
if(valgt==1) start();
else if(valgt==2) system.exit();
Avatar billede arne_v Ekspert
22. november 2007 - 19:11 #4
Jeg er meget i tvivl om hvad du vil.

De 2 stykker gør ikke det samme !

Den første læser ind 1 gang og gør noget hvis 1 eller 2 (forudsat at du ændrer til ==).

Den anden læser ind 1 gang og sammenligner med 1 og hvis ikke så læser den ind 1 gang
til og sammenligner med 2.
Avatar billede arne_v Ekspert
22. november 2007 - 19:11 #5
Ifølge Java coding convention bruger man altid  { }.
Avatar billede w13 Novice
22. november 2007 - 19:14 #6
Ok. =) Ovenstående er det første Java, jeg nogensinde har programmeret. Troede bare, det virkede siden. Men det gør det måske også? Klammerne er bare "rigtigere", eller hvad?
Avatar billede ejldk Nybegynder
22. november 2007 - 19:16 #7
Okay, så prøver jeg at beskrive det jeg vil:
Jeg lave en System.out.print hvor der står noget i retning af "Tryk 1 efterfulgt af Enter for at prøve starte programmet forfra, eller tryk 2 efterfulgt af Enter for at afslutte programmet.

Kan du komme med et forslag til hvordan man nemt kunne få programmet til at reagere på følgene måde:

Hvis der trykkes 1 efterfulgt af Enter, starter den en metode
Hvis der trykkes 2 efterfulgt af Enter, afslutter den programmet
Avatar billede ejldk Nybegynder
22. november 2007 - 19:17 #8
og det med (valgt == 2) kan godt passe... Skrivefejl!
:-)
Avatar billede arne_v Ekspert
22. november 2007 - 19:24 #9
w13>

Det virker fint. Men det anbefales at bruge { }. Problemstillingen er:

if(a > b) {
  something();
}
somethingelse();

->

if(a > b) {
  something();
  somethingnew();
}
somethingelse();

og:

if(a > b)
  something();
somethingelse();

->

if(a > b)
  something();
  somethingnew();
somethingelse();
Avatar billede arne_v Ekspert
22. november 2007 - 19:25 #10
Hvad er problemet med:

int valgt = tastatur.nextInt();
if (valgt == 1) {
    start();
} else if (valgt == 2) {
    system.exit();
}

?
Avatar billede arne_v Ekspert
22. november 2007 - 19:26 #11
At start blokker ?
Avatar billede w13 Novice
22. november 2007 - 19:27 #12
Spørger du mig? =)
Avatar billede ejldk Nybegynder
22. november 2007 - 19:30 #13
det er rimeligt meget kode at skrive for at tjhekke for to input.
Mener man kan gøre det på andre måder, men det kan godt være mig som husker forkert?
Avatar billede ejldk Nybegynder
22. november 2007 - 19:52 #14
nå, lader til at jeg bliver nødt til at bliver nødt til at bruge
int valgt = tastatur.nextInt();
if (valgt == 1) {
    start();
} else if (valgt == 2) {
    system.exit();
}

smid et svar, så får du point.
Avatar billede w13 Novice
22. november 2007 - 21:23 #15
Synes nu, det er er rimelig rimeligt med kode for sådan en funktion i Java. =)
Avatar billede arne_v Ekspert
22. november 2007 - 21:33 #16
Man betaler ikke gebyr per linie kode.

Det vigtige er at koden er letlæselig og dermed nem at vedligeholde.
Avatar billede arne_v Ekspert
22. november 2007 - 21:33 #17
og et 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