2012-04-01 13 views
1

für diese Richtlinien:
Was ist der logische Fehler in dieser Schleife?

Schreiben Sie eine Schleife, die positive Ganzzahlen aus der Standardeingabe liest und endet, wenn eine Ganzzahl gelesen wird, die nicht positiv ist. Nachdem die Schleife beendet ist, druckt sie, getrennt durch ein Leerzeichen und auf einer einzelnen Zeile, die Summe aller gelesenen geraden ganzen Zahlen und die Summe aller gelesenen ungeraden ganzen Zahlen aus. Deklarieren Sie alle benötigten Variablen.

ÜBERNEHMEN Sie die Verfügbarkeit einer Variablen, stdin, die auf ein Scanner-Objekt verweist, das der Standardeingabe zugeordnet ist.

Ich habe diesen Code geschrieben, aber es wird die HW-Software nicht wegen eines logischen Fehlers außer es. Ich kann den logischen Fehler hier nicht finden. Kann jemand darauf hinweisen, was falsch daran ist?

int sumP=0; 
    int sumO=0; 
    Scanner stdin = new Scanner (System.in); 

    System.out.println("enter an odd or even number"); 

    while (stdin.nextInt() >= 0){ 
    if(stdin.nextInt()%2 == 0) 
     sumP+= stdin.nextInt(); 
    else 
     sumO += stdin.nextInt(); 
    } 
    System.out.println(sumP + " " + sumO); 

Antwort

7

Sie müssen den Wert, den Sie gelesen haben, speichern, sonst werden Sie in der while-Schleife und der Addition verschiedene Werte verwenden.

int n; 
while((n = stdin.readInt()) >= 0) { 
    // use the same value of n 
+0

Vielen Dank für die Hilfe. Und danke für die Erklärung. – gnawthatthingoffyourface

+2

Manchmal, wenn Sie die gleiche Methode aufrufen, erhalten Sie das gleiche, aber mit Streams erhalten Sie nur den nächsten Wert. –

0

Dieser arbeitete für myprogramminglab - Java

int sum=0; 
boolean areMore = true; 
int negative; 
while (areMore) 
{ 
    int number = stdin.nextInt(); 
    if (number <= 0) 
    areMore = false; 
    else if (number %2 ==0) 
    sum = sum + number;  
else 
    negative = sum + number; 
}  
System.out.println(sum); 
0
int number = 1; 
while (stdin.hasNextInt() && number > 0) 
{ 
      number = stdin.nextInt(); 
      if (number % 2 == 0 && number > 0) 
         System.out.print(number + " "); 
} 

Die Antwort auf diese und viele andere Codelab Übungen können bei Java Codelab Solutions