Wie kann ich die Anzeige gerade und ungerade zahlen, basierend auf Benutzer-input? - java
Bitte helfen... ich muss ein Programm schreiben, das zeigt gerade und ungerade zahlen auf der Grundlage der Benutzereingabe, sondern wiederholt immer, bei meinem letzten print-Anweisung.
Hier ist was ich habe, so weit, was ist falsch?
import java.util.Scanner;
public class Integer {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = 0;
int odd = 0;
int even = 0;
System.out.println("How many numbers will be entered?");
n = input.nextInt();
while (n < 0 || n > 100) {
System.out.println("ERROR! Valid range 0-100. RE-Enter:");
n = input.nextInt();
}
while(n >= 0) {
System.out.println("Now enter " + n + " integers: ");
int num = input.nextInt();
while(num > 0) {
for(int i = 0; i <= n; i++){
if (i % 2 == 0) {
even++;
}
else {
odd++;
}
System.out.println("You entered " + odd + " odd numbers and " + even + " even numbers.");
}
}
}
}
}
- Gut, die Einrückung ist falsch, für einen start. Korrigiert wird, dies wird Ihnen helfen, Ihr problem. Ansonsten, hinzufügen von print-Anweisungen, oder verwenden Sie einen debugger. Aussagekräftige Variablen-Namen, die helfen könnten, sehen das problem auch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ein paar Probleme mit zu viele while-Schleifen. Sie nicht Dekrement
n
überall, aber Sie können auch loop aufnum
es ist zwar größer als 0 ist. So wird es eine unendliche Schleife, wenn Sie halten etwas anderes als 0 drin.Erklärung:
Sie Griff
n
Eingaben vom Benutzer und nur überprüfen, ob die Eingabe gerade oder ungerade ist, mit einer if-Anweisung. Sie wurden über-komplizieren es.n--;
am Ende derwhile (n >= 0)
Schleife.while (num > 0)
loop, sollten Sie einennum--;
, das sollte Sie näher an der richtigen Lösung, was auch immer das ist.Den unendlich/ewig Schleifen geschieht, weil der
input.nextInt()
- und dies ist durch das Verhalten vonnext()
Methode der Scanner-Klasse.next(), nextInt()
und seinen anderen Variationen nicht bewegen Sie den cursor auf die nächste Zeile (am Ende der aktuellen Zeile - stattdessen liest die erste komplette token mit Standard-Trennzeichen als Leerzeichen).nextLine()
Methode auf der anderen Seite liest die gesamte Eingabe und bewegt den cursor in die nächste Zeile.Ihrem code können behoben werden, durch hinzufügen von
input.nextLine()
bewegen Sie den cursor an den Anfang der Zeile, vor der Einnahme der nächsten Eingabe. Siehe unten geänderten code.while (n < 0 || n > 100)
ist notwendig zu halten, nervt den Benutzer zur korrekten Eingabe, bis er empfangen wird.