Noob: Problem mit erster Klasse
-
Hey,
Ich bin gerade dabei, Java zu lernen und ich fange jetzt mit den Klassen an (mhm schon am Anfang ein bisschen verwirrend ;))
Ich habe ein einfaches Programm mit einer Klasse erstellt, dass den Autonamen, die PS-Zahl und den Verbrauch abfragt.
Allerdings kann man beim Verbrauch nichts eingeben, stattdessen kommt der Name nochmal. Ich stehe gerade irgendwie auf dem Schlauf, auf jeden Fall finde ich den Fehler nicht:
"Formular"-Klasse:
package Java; public class Formular { String name; int ps; int verbrauch; String getName() { return name; } void setName( String neuName ) { name = neuName; } int getPS() { return ps; } void setPS ( int neuPS ) { ps = neuPS; } int getVerbrauch() { return verbrauch; } void setVerbrauch( int neuVerbrauch ) { verbrauch = neuVerbrauch; } }
und das eigentliche Programm:
package Java; import java.io.*; public class Auto2 { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { Formular fo = new Formular(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Geben sie ihre Automarke ein: "); fo.setName(br.readLine()); System.out.print("Geben sie die PS ihres Autos ein: "); fo.setPS(br.read()); System.out.print("Geben sie ihren Verbrauch ein: "); fo.setVerbrauch(br.read()); System.out.println("Name: " + fo.getName()); System.out.println("PS: " + fo.getPS()); System.out.println("Verbrauch: " + fo.getVerbrauch()); } }
Und wenn ich das Programm starte, kommt folgendes dabei raus:
http://www.abload.de/thumb/aufzeichnenqs3p.jpg
Vielleicht seht ihr ja den Fehler ^^
-
br.read() liest nur einen einzelnen Character ein, du möchtest aber einen Integer einlesen.
Du musst also einen String einlesen und ihn in einen Integer umwandeln:System.out.print("PS-Zahl des Autos: "); String ps = br.readLine(); fo.setPS(Integer.parseInt(ps)); /* int i = Integer.parseInt("123"); -> wandelt den String "123" in einen Integer um -> wenn der String nicht umgewandelt werden kann, wird eine NumberFormatException geworfen -> analog dazu: byte b = Byte.parseByte(String s); short s = Short.parseShort(String s); long l = Long.parseLong(String s); float f = Float.parseFloat(String s); double d = Double.parseDouble(String s); */