2017-03-23 4 views
-3

Ich möchte ein Programm schreiben, das eine Reihe von Werten liest, die vom Benutzer eingegeben wurden. Dann möchte ich die kleinste, größte, Summe und den Durchschnitt der Werte drucken. Siehe unten:Erster Wert der übersprungenen Eingabe

 float largest = in.nextFloat(); 
     float smallest = largest; 
     while (inputs != -1) \\-1 is the sentinel 
     { 
      inputs = in.nextFloat(); 
      if (inputs !=-1) 
      { 
       sum = sum + inputs; 
       counter++; 
       if (inputs > largest) 
       { 
        largest = inputs; 
       } 
       if (inputs < smallest) 
       { 
        smallest = inputs; 
       } 

      } 

     } 

Dies funktioniert nicht. Was passiert, ist, dass für die Summe die erste Eingabe nicht gezählt wird. So würde zum Beispiel die Menge 1 2 3 4 5 -1 eine Summe von 14 anstelle von 15 ergeben (bedenke, dass -1 der Sentinel ist). Ich vermute, ich weiß, warum das so ist, weil der erste vom Benutzer eingegebene Wert verwendet wird, um "float large" zu initialisieren, und dann wird der zweite Wert der erste sein, der in "inputs" geht.

Aber obwohl ich vermute, dass ich den Fehler kenne, habe ich keine Ahnung, wie ich es beheben kann. Ich habe versucht, die ersten beiden Codezeilen in die while-Schleife zu verschieben, aber das führt zu vielen Fehlern, die nirgendwohin führen. Irgendeine Idee, wie man das macht?

+1

Siehe http://stackoverflow.com/q/13102045/5647260 – Li357

+1

Ich vermute, ich kenne den Fehler? – Omore

+0

@Omore Sie wiederholten einen Satz von der Frage, ja. –

Antwort

0

In der ersten Zeile Ihres Codes wird der Wert abgerufen und der Cursor bewegt.

Sie benötigen eine Summe vor der Schleife zu initialisieren:

float largest = in.nextFloat(); 
float smallest = largest; 
float sum = largest;