Ich kann nicht herausfinden, warum mein Programm bis zum Ende der letzten "else" Anweisung überspringt. Dies ist mein Code wie folgt, auch ein bisschen grob, weil ich gerade angefangen habe und ich bin neu in Java. Wenn Sie noch etwas brauchen, fragen Sie einfach!Probleme mit meinen if, else Statements
Das Programm, das wir schreiben sollen, wird verwendet, um eine Schließfachkombination zu erhalten. Ich habe hart codiert, was ich die Kombination sein möchte, und das Programm funktioniert, wenn ich 12-34-56 eingib. Aber wenn ich 12-12-34 oder irgendeine andere Variation eingabe, springt es automatisch zum Ende des Programms und sagt Nicht ein Match, obwohl das nicht das Ergebnis sein sollte. Stattdessen sollte es ausdrucken "2 Zahlen in der Schätzung sind Duplikate von einander. 2 Zahlen erscheinen in der Kombination."
Lassen Sie mich wissen, wenn Sie noch etwas benötigen! Danke und einen schönen Tag! (Auch bin ich mit Java und BlueJ all dies zu tun.)
import java.util.*;
public class Combination
{
public static void main(String[] args) {
int lock1 = 12;
int lock2 = 34;
int lock3 = 56;
Scanner input = new Scanner(System.in);
System.out.print("Enter first two digits: ");
int guess1 = input.nextInt();
System.out.print("Enter second two digits: ");
int guess2 = input.nextInt();
System.out.print("Enter last two digits: ");
int guess3 = input.nextInt();
if (lock1 == guess1 && lock2 == guess2 && lock3 == guess3) {
System.out.print("Exact Match! Locker Unlocked");
}
else if (lock1 == guess1 && lock2 == guess3 && lock3 == guess2
|| lock1 == guess2 && lock2 == guess3 && lock3 == guess1
|| lock1 == guess2 && lock2 == guess1 && lock3 == guess3
|| lock1 == guess3 && lock2 == guess2 && lock3 == guess1
|| lock1 == guess3 && lock2 == guess1 && lock3 == guess2)
{
System.out.println("All numbers match but not in the correct order");
}
else if (lock1 == guess1 && lock2 == guess1 && lock3 == guess1
|| lock1 == guess2 && lock2 == guess2 && lock3 == guess2
|| lock1 == guess3 && lock2 == guess3 && lock3 == guess3) {
System.out.println("Guess contains 3 duplicate numbers.");
System.out.println("One number in the guess appears in the combination.");
}
else if (lock1 == guess1 && lock2 == guess1 && lock3 == guess2
|| lock1 == guess1 && lock2 == guess1 && lock3 == guess3
|| lock1 == guess2 && lock2 == guess2 && lock3 == guess3
|| lock1 == guess2 && lock2 == guess2 && lock3 == guess1
|| lock1 == guess3 && lock2 == guess3 && lock3 == guess2
|| lock1 == guess3 && lock2 == guess3 && lock3 == guess1
|| lock1 == guess2 && lock2 == guess1 && lock3 == guess1
|| lock1 == guess3 && lock2 == guess1 && lock3 == guess1
|| lock1 == guess3 && lock2 == guess2 && lock3 == guess2
|| lock1 == guess1 && lock2 == guess2 && lock3 == guess2
|| lock1 == guess1 && lock2 == guess3 && lock3 == guess3
|| lock1 == guess2 && lock2 == guess3 && lock3 == guess3) {
System.out.println("2 numbers in the guess are duplicates of each other." +
"2 numbers guess appear in the combination.");
}
else{
System.out.println("Sorry not a match");
}
}
}
Sind Sie sicher, dass die Boolesche Logik so funktioniert, wie Sie es möchten? Brauchen Sie vielleicht ein paar Klammern? – bradimus
Ahhh .. Sie müssen wirklich über Ihre Logik und Syntax neu denken. –
Easy: 'lock1 == guess2' ist falsch. –