2016-03-21 3 views
0

Ich bin neu in Java, also entschuldige ich mich, wenn ich einfach etwas Einfaches übersehe. Ich habe diesen Code geschrieben, um ein paar einfache Berechnungen zu machen, aber wenn ich ihn ausführe, scheint Java nicht meine erste Ganzzahl hinzuzufügen, die bei der Berechnung des Durchschnitts eingegeben wird. Alles andere scheint in Ordnung zu sein, also würde ich jede Hilfe zu schätzen wissen. Vielen Dank.Java wird keine erste Ganzzahl hinzufügen, wenn der Durchschnitt berechnet

import java.util.Scanner; 
public class IntegerCalc { 

    public static void main(String[] args){ 

     System.out.println("Enter a list of non-negative integers."); 
     System.out.println("Enter a negative number to indicate the end of your input."); 

      Scanner keyboard = new Scanner(System.in); 
      int min = keyboard.nextInt(); 
      int max = min; 
      double average = 0; 
      double numberOfInt= 1; 
      int next = keyboard.nextInt(); 
      double total = 0; 

      while (next > 0){ 
       if (next > max) 
        max = next; 
       else if (next < min) 
        min = next; 
       total = total + next; 
       numberOfInt++; 
       next = keyboard.nextInt();  
      } 
      average = total/numberOfInt; 

      System.out.println("The largest integer is " + max); 
      System.out.println("The smallest integer is " + min); 
      System.out.println("The average is " + average); 
    } 
} 
+0

Basierend auf Ihrer Logik sollten Sie Ihren Zähler auf Null (nicht eins) setzen: 'double numberOfInt = 0;' –

+0

Sie lesen einen Eingang zweimal vor dem Start 'total', vielleicht dies ist das Problem? –

+1

Danke Sasha Salauyou. Ich änderte meinen Code, um next = min zu initialisieren, und initialisierte NumberOfInt = 0, und das löste das Problem. Ich schätze die Hilfe – bshea315

Antwort

1

Es sieht aus wie der Code Summe aller eingegebenen Zahlen tut, aber Ihr numberOfInt ist von einem ab.

Sie sollten es initialisieren, um

double numberOfInt= 0; 

statt

double numberOfInt= 1; 

Sie wollen nur numberOfInt erhöhen, wenn Sie den aktuellen Wert von next zum total hinzufügen, so dass das erste Mal, wenn Sie next hinzufügen zu total, numberOfInt sollte 1 werden.

+0

Um zu erklären, warum -> Sie erhöhen '' 'numberOfInt''', wenn Sie auch eine negative Zahl eingeben. – Ritave

0

Was kann ich ist, dass innerhalb while-Schleife Sie diese Bedingung haben:

if (next > max) 
      max = next; 
     else if (next < min) 
      min = next; 

Ihr erster Wert geht nie ersten Wert auf total.Your in Richtung Durchschnitt zählt nur, wenn der Wert der neben ersten value.To gleich lösen dieses Problem, das Sie insgesamt mit max oder min initialisieren können (da sie anfangs gleich sind):

double total = (double) max; 
+1

Danke für die Hilfe. Das hat mein Problem gelöst. Sehr geschätzt. – bshea315

0

Ihre int numberOfInt sollte nicht auf den Wert 1 initialisiert werden, da Sie es erhöht um 1 bei jeder Iteration der Schleife, es ist Wert um eins. Initiiere es stattdessen auf den Wert 0.

Verwandte Themen