Frage von JustinMarc, 30

Warum geht dieses programm nicht?

    package Package;
    import java.io.*;

    public class ThefirstClass 
{

    public static void main(String[] args) throws IOException
{
    int zahl = 6;
    
    System.out.println("Nenne mir eine Zahl zwischen 1 und 10");
    
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    
    String zahl = input.readLine();
     
    if(zahl == 6)
{
    System.out.println("Richtige Zahl");
}
    else 
{   
    System.out.println("Falsche Zahl");
}

}
}

//Warum geht das Programm nicht?

Mein Terminal bei Linux sagt das ein Error vorliegt bei "String zahl = input.readLine();"

Der Fehler soll die variable zahl sein

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von JupStrunk, 24

die Variable zahl ist zweimal definiert !!!

int zahl = 6;
String zahl = input.readLine();

außerdem vergleichst Du den Eingabestring mit einer Zahl, nehme ich an, ist nicht eindeutig, da zahl ja zweimal definiert ist !!!

if(zahl == 6)

sollte zahl hier der Eingabestring sein, musst Du ihn vorher "casten" !!!
das würde dann in etwa so aussehen, natürlich nur vorausgesetzt zahl ist der String...

if(Integer.parseInt(zahl) == 6)

Kommentar von JupStrunk ,

Nachtrag:

da Du die erste Deklaration von zahl eh nicht verwendest, lösch diese doch einfach (oder kommentier sie aus) !!!
dann sollte es einwandfrei laufen... ;)

Kommentar von JustinMarc ,

Hallo deine Antwort war sehr hilfreich und in Eclipse funktioniert das auch aber wenn ich das in einem editor habe und es speicher kann ich es auch mit dem befehl

javac ThefirstClass.java

zu einer  .class datei machen aber wenn es dann mit

java ThefirstClass öffnen möchte dann sagt mein Terminal

justin-marc@Praktikums-Rechner:~/Dokumente$ java ThefirstClass
Exception in thread "main" java.lang.NoClassDefFoundError: ThefirstClass (wrong name: Package/ThefirstClass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Antwort
von TheLegendary, 27

input.readLine() wird als String gewertet und du versuchst das mit einem integer zu vergleichen, du musst den String als erst umwandeln.

Kommentar von JupStrunk ,

ist zwar soweit richtig, aber nicht der Fehler hier !!!

zahl ist zweimal definiert, einmal als int und ein zweites Mal als string !!! ;)

Kommentar von TheLegendary ,

Hm soweit habe ich gar nicht geschaut, nach der Anmerkung, dass das Problem bei der Zeile liegt und ich das Problem mit den Konsoleneingaben auch letztens noch hatte, habe ich direkt den Fehler angegeben. Hast wohl recht, das war nicht der einige :v

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten