2016-11-30 4 views
1

my whileループが受け取る入力値から最小値と最大値を見つける必要があります。私はこれをする方法を知らない。 これは私が持っているものです。ループ内で最小の番号と最大の番号を見つける方法を教えてください。

ループのうち
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

あなたは何をすべきと思いますか?あなたは変数 "maxValue"を持っていることを考えて、あなたがそこで見つけた最大の価値を保存していますか? – Acapulco

答えて

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

、Double.MAX_VALUEで新しい変数minとDouble.MIN_VALUEにして新しい変数maxを初期化します。 ループ内で、ngがngでmax update maxより大きい場合。 ngがminより小さい場合、minをngで更新します。

2

TreeSetを作成し、それにすべての数値を追加して、最初と最後のエントリを取ることができます。これらはTreeSetのソート時にminとmaxです。あなたのwhileループで

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

、ダブルを追加します。

set.add(ng); 

とwhileループの後、

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

ここであなたがそれを行うことができます簡単な方法です取得します。説明はコメントを参照してください。

2つの新しい変数を追加することをお勧めします.1つは最高級の変数、もう1つは最低の変数です。キーボードから新しい値を入力するたびに、入力した値と現在の最高値と最低値を比較します。新しい値が最高値よりも高い場合(または最低値よりも低い場合)、新しい値を新しい最高/最低の等級として割り当てました。

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); 

    } 
} 
関連する問題