Für loop-Eingang in BlueJ (Endlosschleife)
Arbeite ich an einem Projekt für die Schule und bin ratlos, wo ich in dem moment bin. Wenn ich mein Projekt, den VM zu sein scheint, stecken in einer Schleife und wird nicht geladen (Eine Konsole sollte pop-up, die mir erlaubt, um die Zeichen für die CombinationLock Klasse setDigit()
- Methode). Ich glaube, es hat etwas zu tun mit meiner for-Schleife in meinem Interface.java
Klasse. Wenn jemand könnte einen Blick und bringen mich in die richtige Richtung, das wäre sehr geschätzt. Dank einem Haufen!
Interface.java
import java.util.*;
public class Interface
{
public static void main() {
Scanner in = new Scanner(System.in);
CombinationLock combo = new CombinationLock();
for(int i = 0; i < 3; i++) {
String ltr = in.nextLine();
combo.setDigit(ltr.charAt(0), i);
System.out.println("Digit " + i + " has been set to " + ltr);
}
}
}
CombinationLock.java
public class CombinationLock
{
String[] combo = new String[3];
public CombinationLock() { }
public boolean setDigit(char letter, int index) {
if (Character.isDigit(letter)) {
return false;
}
combo[index] = String.valueOf(letter);
return true;
}
public boolean unlock(String combo) {
if (combo.length() > 3) {
return false; //Longer then it can be, not valid
}
char[] comboArray = combo.toCharArray();
for (char c : comboArray) {
if (Character.isDigit(c)) {
return false; //Contains numbers, not valid
}
}
boolean valid = true;
for (int i = 0; i < 3; i++) {
if (combo.charAt(i) != comboArray[i] && valid == true) {
valid = false;
break;
}
}
return valid;
}
}
- Sieht aus wie Sie bekommen werden, sollte ein index-out-of-bounds-exception bei
combo[index] = String.valueOf(letter);
weilcombo
ist eine null-Länge-array. - Versuchen
String[] combo = new String[3];
stattString[] combo = {};
. - Ich habe die Datei bearbeitet, um diese änderungen wiederzugeben 🙂 @BheshGurung
- Schauen Sie sich meine Antwort, es war nicht in der Lage zu finden, Ihre main-Methode, weil es die falsche Signatur.
- Hinweis: Wenn Sie zum Start von der Kommandozeile (in der Regel) eine sehr hilfreiche Fehlermeldung, falls etwas schief geht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Initialisiert wurde
combo
array inCombinationLock
- Klasse mit einer Länge0
alsString[] combo = {};
. Das ist eine UrsacheArrayIndexOutOfBoundsException
wenn Sie anrufencombo.setDigit(ltr.charAt(0), i);
. Bitte korrigieren Sie die Initialisierung. Ich glaube, Sie erfassen möchten 3 Eingänge, in diesem Fall, initialisieren Sie bittecombo
imCombinationLock
mit Länge 3 wie folgt:Dein problem ist (die Signatur der main-Methode falsch ist)
sollte es
Ich gefunden habe, wo mein Fehler war, über die BlueJ-IDE muss man die Ausgabe etwas zu der Konsole, bevor es auftaucht, und ermöglicht Ihnen die Eingabe von Daten, daher ist es nie aufgetaucht, weil ich nie verwendet
System.out.println
oderSystem.out.print
. Nach tun, der Konsole aufgetaucht ist, und erlaubt mir die Eingabe meiner Daten. Dank Euch für all Eure Anregungen und Hilfe!