Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Moin Moin,
ich weiß das mein Problem sowas von primitiv ist, aber ich komme nicht weiter.
Ich suche seit 2 Stunden, wie ich in BlueJ eine Zahl eingeben kann, z.B. eine x-Koordinate eines Punktes, und das die dann weiter verwendet wird.
import java.io.*;
import java.util.*;
public class Punkt
{
private int x;
public void setX()
{
input.nextInt = x; \\ <-- an der Stelle, glaube ich
}
public int getX()
{
return x;
}
}
Ich weiß, dass das was da steht falsch ist. Nur so als Platzhalter. Bis jetzt will ich nur das man eine Zahl eingeben kann und diese auch wieder ausgeben.
Ich gehe davon aus, dass ihr mir weiter helfen könnt. Bin trotzdem dankbar für jede Hilfe.
Erstmal danke für die Antwort.
Ich hab jetzt mal den Scanner ausprobiert:
import java.io.*;
import java.util.*;
public class Punkt
{
private int x;
public void setX()
{
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
System.out.print(x);
}
public void getX()
{
System.out.print("X= ");
System.out.print(x);
}
}
Bei setX() kann ich jetzt eine Zahl eingeben die es mir sofort danach wieder ausgibt, was schon ein Fortschritt ist. Wenn ich danach aber getX() laufen lasse gibt er mir für x wieder 0. Wie kann ich das ändern?
Du bist die eingelesene Zahl der Instanzvariable zuweisen
So sollte deine setX() aussehen:
Java:
public void setX(){
Scanner sc = new Scanner(System.in);
this.x = sc.nextInt();
}
Jedoch solltest du bei dieser Art des Einlesens aufpassen, dass keine fehlerhaften Eingaben getätigt werden. Sollte dies nämlich passieren wird eine NumberFormatException geworfen
Du bist die eingelesene Zahl der Instanzvariable zuweisen
So sollte deine setX() aussehen:
Java:
public void setX(){
Scanner sc = new Scanner(System.in);
this.x = sc.nextInt();
}
Jedoch solltest du bei dieser Art des Einlesens aufpassen, dass keine fehlerhaften Eingaben getätigt werden. Sollte dies nämlich passieren wird eine NumberFormatException geworfen
Vielen vielen Dank. Ich bin gerade so erleichtert. Es ist zwar recht einfach, doch ich bin gestern und auch heute Morgen fast verzweifelt. Nochmal danke.
int x = scanner.nextInt(); // hier erstellst du eine neue Variable mit dem Namen x
Der Grund für dein Problem ist, dass du den eingelesenen Wert nicht der Instanzvariablen "x" zuweist, sondern einer neuen Variablen "x", die du lokal innerhalb der Methode setX() deklarierst.
Eine Deklaration besteht immer aus dem Typen und dem Namen der Variablen. Da du hier eine Typangabe machst, hast du damit auch eine neue Variable.
Richtig ist demnach:
Java:
x = scanner.nextInt(); // keine neue Variable, sonder Zuweisung an die existierende Instanzvariable
Optional (in diesem Fall) auch
Java:
this.x = scanner.nextInt(); // this ist die Referenz auf die aktuelle Instanz, da es in der Methode nur ein x gibt, brauchst du es nicht unbedingt