Gå til innhold

Problem med Keyboard input


Anbefalte innlegg

Eg lager ein metode som gjer at eg kan lesa in det eg skriver på tastaturet i programmet mitt.

Problemet er at når eg skriver inn så må eg skrive det inn 2 gonger kvar gang.

Ein gang er jo nok :)

 

import java.io.*;

 

public class KeyboardInput {

 

/* Here I will create the input methods

  * for my application.

  */

 

private static BufferedReader stdin = new BufferedReader(

        new InputStreamReader( System.in ) );

 

private String stringInput=null;

private int number;

 

public KeyboardInput(){

}

 

public int intIn(){

  try{

  stringInput = stdin.readLine();

  number = Integer.parseInt( stringInput );

  // converts a String into an int value

  }

  catch (Exception e){

            System.out.println ("Error reading Input");

        }

  return number;

}

}

 

 

Korleis kan eg fikse på sånt at eg bare skriver det inn ein gang.

Lenke til kommentar
Videoannonse
Annonse

Jeg hadde brukt Scannerklassen (Java 1.5).

Da er det bare til å opprette et scannerobjekt, og bruke denne til innlesing.

 

import java.util.Scanner;

Scanner lexer = new Scanner(System.in);

lexer.nextLine()

lexer.next();

lecer.nextInt()

etc......

 

 

--------------------------

Her er koden fra Terminalklassen vi brukte i INF100 ved UiB. Denne gjør alt du vil fra terminalen på en enkel måte.

 

import java.io.*;

/**

* Denne klassen tilbyr metoder for innlesing av heltall, flyttall og

* strenger fra terminalen.

*

* Pass på at du legger denne filen i samme katalog som programmene dine,

* og kompilerer den før du kjører disse.

*

* @version 2.0

* @author Rolf W. Rasmussen

* @author Khalid A. Mughal

* @author Torill Hamre

*/

public final class Terminal {

private Terminal() {};

private static BufferedReader leser = new BufferedReader( // (1)

new InputStreamReader(System.in)

);

 

/**

* Leser en int-verdi fra terminalen.

*/

public static int lesInt() { // (2)

while (true) // (3)

try { return Integer.parseInt( leser.readLine() ); } // (4)

catch (IOException io) { reportError(); } // (5)

catch (NumberFormatException nf) { reportError(); } // (6)

}

/**

* Leser en double-verdi fra terminalen.

*/

public static double lesDouble() {

while (true)

try { return Double.parseDouble( leser.readLine() ); }

catch (IOException io) { reportError(); }

catch (NumberFormatException nf) { reportError(); }

}

/**

* Leser en linje fra terminalen og returnerer denne som et objekt

* av typen String.

*/

public static String lesString() {

while (true)

try { return leser.readLine(); }

catch (IOException io) { reportError(); }

}

/**

* Skriver ut en streng eller strengrepresentasjonen av en annen verdi

* til terminalen og går videre til neste linje.

*/

public static void promptln( Object str ) { System.out.println( str );

}

 

/**

* Skriver feilmelding og går videre til neste linje på terminalen

* slik at brukeren kan taste inn verdi på nytt.

*/

private static void reportError() {

System.out.println( "Feil i inndata. Prøv på nytt!" );

}

}

Endret av Pitbullo
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...