2016-11-30 4 views
1

Ich muss den kleinsten und größten Wert von den Eingängen finden, die meine while-Schleife empfängt. Ich weiss nicht, wie ich das machen soll. Das ist, was ich habe:Wie finde ich die kleinste und größte Zahl in einer Schleife?

import java.text.NumberFormat; 
import java.io.*; 
import java.text.DecimalFormat; 
import java.util.Scanner; 

public class average { 
    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 
     int count = 0; 
     double ng = 0, total = 0, average; 
     int countt; 
     { 
     BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
     } 
     while (ng > -1) { 
      if (ng > -1) 
      System.out.print("Enter your next grade (-1 to quit) : "); 
      ng = keyboard.nextDouble(); 
      total = total + ng; 
      count++; 
     } 
     countt=count-1; 
     average = (total + 1)/countt; 
     System.out.println(" "); 
     System.out.println("Total number of students: " + countt); 
     System.out.println("Average of grades " + average); 
     System.out.println("Highest grade " +); 

    } 
} 
+0

Was denken Sie, was Sie tun sollten? Haben Sie über eine Variable "maxValue" nachgedacht und speichern Sie den größten Wert, den Sie dort gefunden haben? – Acapulco

Antwort

0
 import java.text.NumberFormat; 
import java.io.*; 
import java.text.DecimalFormat; 
import java.util.Scanner; 

public class average { 
    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 
     int count = 0; 
     double ng = 0, total = 0, average; 
     int countt; 
     { 
     BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
     } 
int max = 0; 
     while (ng > -1) { 
      if (ng > -1) 
      System.out.print("Enter your next grade (-1 to quit) : "); 
      ng = keyboard.nextDouble(); 
      total = total + ng; 
      count++; 
      max = ng > max? ng : max; 
     } 
     countt=count-1; 
     average = (total + 1)/countt; 
     System.out.println(" "); 
     System.out.println("Total number of students: " + countt); 
     System.out.println("Average of grades " + average); 
     System.out.println("Highest grade " + max); 

    } 
} 
0

aus der Schleife, eine neue Variable min mit Double.MAX_VALUE initialisieren und einen neuen Variable max mit Double.MIN_VALUE. Innerhalb der Schleife, wenn ng größer ist als max max mit ng aktualisieren. Wenn ng kleiner als min ist, aktualisiere min mit ng.

2

Sie können ein TreeSet erstellen, jede Nummer hinzufügen und dann einfach den ersten und letzten Eintrag nehmen - das sind min und max, da das TreeSet sortiert ist.

Set<Double> set = new TreeSet<>(); 

in Ihrer while-Schleife, fügen Sie den Doppel:

set.add(ng); 

und nach der while-Schleife erhalten

Object[] sa = set.toArray(); 
System.out.println("min: " + sa[0]); 
System.out.println("max: " + sa[sa.length - 1]); 
0

Hier ist eine einfache Art und Weise Sie es tun können. Siehe die Kommentare für die Erklärung.

Die Idee besteht darin, zwei neue Variablen hinzuzufügen, eine für Ihre höchste und eine für Ihre niedrigste. Jedes Mal, wenn Sie einen neuen Wert über Ihre Tastatur eingeben, vergleichen Sie den eingegebenen Wert mit Ihren aktuellen höchsten und niedrigsten Werten. Wenn der neue Wert höher als Ihre höchste (oder niedriger als Ihre niedrigste) ist, haben Sie den neuen Wert als neue höchste/niedrigste Note zugewiesen.

import java.text.NumberFormat; 
import java.io.*; 
import java.text.DecimalFormat; 
import java.util.Scanner; 

public class Average { 
    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 
     int count = 0; 
     double ng = 0, total = 0, average; 
     int countt; 

     // Add these variables 
     boolean firstRun = true; 
     double largest = 0; 
     double smallest = 0; 

     { 
      BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
     } 
     while (ng > -1) { 
      if (ng > -1) 
       System.out.print("Enter your next grade (-1 to quit) : "); 
      ng = keyboard.nextDouble(); 

      // Add this part for calculating largest and smallest 
      if (ng > -1) { 
       // When you run it the first time, assign this first value as the largest and 
       // smallest value, since it is the only value you've seen at the moment 
       if (firstRun) { 
        firstRun = false; 
        largest = ng; 
        smallest = ng; 
       } else { // If it's not the first run, then compare the values 
        // Check if the current value is bigger than your current max value 
        if (ng > largest) { 
         largest = ng; 
        } 

        // Check if the current value is smaller than your current min value 
        if (ng < smallest) { 
         smallest = ng; 
        } 
       } 
      } 

      total = total + ng; 
      count++; 
     } 
     countt=count-1; 
     average = (total + 1)/countt; 
     System.out.println(" "); 
     System.out.println("Total number of students: " + countt); 
     System.out.println("Average of grades " + average); 

     // Et voila! 
     System.out.println("Highest grade " + largest); 
     System.out.println("Lowest grade " + smallest); 

    } 
} 
0
import java.text.NumberFormat; 
import java.io.*; 
import java.text.DecimalFormat; 
import java.util.Scanner; 

public class average { 
    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 
     int count = 0; 
     double ng = 0, total = 0, average, smallest = -1, largest = -1; 
     int countt; 
     { 
     BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
     } 
     while (ng > -1) { 
      if (ng > -1) 
      System.out.print("Enter your next grade (-1 to quit) : "); 
      ng = keyboard.nextDouble(); 
      if (smallest == -1 || (ng != -1 && ng < smallest)) 
       smallest = ng; 
      if (ng > largest) 
       largest = ng; 
      total = total + ng; 
      count++; 
     } 
     countt=count-1; 
     average = (total + 1)/countt; 
     System.out.println(" "); 
     System.out.println("Total number of students: " + countt); 
     System.out.println("Average of grades " + average); 
     System.out.println("Highest grade " + ""); 
     System.out.println("largest: " + largest); 
     System.out.println("smallest: " + smallest); 

    } 
} 
Verwandte Themen