让数组存储用户输入,然后输出最大值

时间:2019-07-24 05:53:54

标签: java arrays max

我正在创建一个程序,该程序让用户在0-100之间输入5个值并将它们存储在数组中,以便可以打印出最大值。问题是程序要求用户输入5个值后,此后它什么也不输出。

import java.util.ArrayList;
import java.util.Scanner;

public class HighestGrade {

    public static void main(String[] args){
        Scanner scan =  new Scanner(System.in);
        ArrayList<Integer> scores = new ArrayList<Integer>();
        int greatest = -1;



        for (int i=0; i<5; i++) {
            System.out.print("Enter a grade (between 0 and 100): ");
            scan.nextInt();
        }

        while (scores.size()<5) {
            int input = scan.nextInt();
            if (input <= 100 && input >= 00) {
                scores.add(input);
                if(input >= greatest)
                    greatest = input;

            }
            else{
                System.out.println("Error: Make sure the grade is between 0 and 100!\nEnter a new grade!");
            }
        }

        System.out.println("\nHighest grade: "+greatest);

    }
}

4 个答案:

答案 0 :(得分:1)

分数数组列表为空。您忘记在数组内插入值。

    for (int i=0; i<5; i++) {
                 System.out.print("Enter a grade (between 0 and 100): ");
                  int temp = scan.nextInt();         
                if (input <= 100 && input >= 00) {
                  if( temp > greatest )
                      greatest = temp;
                 }
               else{
            System.out.println("Error: Make sure the grade is between 0 and 
                100!\nEnter a new grade!");
                } 
            }

答案 1 :(得分:1)

您没有将用户输入存储在for循环中的数组中。同样在while循环中,您再次要求用户输入。因此,删除您的for循环。同样,也不必为了找到最大值而存储输入。仅一个变量就足够了。这是未经测试的用于找到最大值的代码。

import java.util.ArrayList;
import java.util.Scanner;

public class HighestGrade {

    public static void main(String[] args){
        Scanner scan =  new Scanner(System.in);
        int greatest = -1;
        int count = 0;
        while (count<5) {
            ++count;
            System.out.print("Enter a number: ");
            int input = scan.nextInt();
            if (input <= 100 && input >= 00) {
                if(input >= greatest)
                    greatest = input;

            }
            else{
                System.out.println("Error: Make sure the grade is between 0 and 100!\nEnter a new grade!");
            }
        }

        System.out.println("\nHighest grade: "+greatest);

    }
}

答案 2 :(得分:1)

这不需要两个循环。在for循环中,您只读取值。因此您只需删除它即可。尝试这样

Target

答案 3 :(得分:-2)

问题似乎出在这里,因为您没有在for循环中将输入值添加到ArrayList分数中。这意味着仅将第五个输入添加到列表中并加以考虑。因此,对于这段代码,最大的价值不会被打印出来。仅以最后一个值作为输入。

for (int i=0; i<5; i++) {
    System.out.print("Enter a grade (between 0 and 100): ");
    scores.add(scan.nextInt());
}