有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在循环中找到最小和最大的数字?

我需要从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 " + );

    }
}

共 (5) 个答案

  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;
            {
            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);
    
        }
    }
    
  2. # 2 楼答案

    在循环之外,用Double初始化一个新变量min。MAX_值和一个新变量MAX with Double。最小值。 在循环内部,如果ng大于max,则使用ng更新max。如果ng小于min,则用ng更新min

  3. # 3 楼答案

    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);
    
        }
    }
    
  4. # 4 楼答案

    这里有一个简单的方法。有关解释,请参见注释

    我们的想法是添加两个新变量,一个用于你的最高成绩,一个用于你的最低成绩。每次从键盘输入新值时,都会将输入的值与当前的最高值和最低值进行比较。如果新值高于最高值(或低于最低值),则将新值指定为新的最高/最低等级

    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);
    
        }
    }
    
  5. # 5 楼答案

    你可以创建一个树集,把每个数字加到树集中,然后简单地取第一个和最后一个条目——它们是树集排序时的最小值和最大值

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

    在while循环中,添加double:

    set.add(ng);
    

    在while循环之后,获得

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