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



我正在创建一个程序,让用户输入 5 个介于 0-100 之间的值并将它们存储在数组中,以便可以打印最高值。问题是,在程序要求用户输入 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);
    }
}

您没有将用户输入存储在 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);
    }
}

分数数组列表为空。您忘了在数组中插入值。

    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!");
                } 
            }

这不需要两个循环。在 for 循环中,您只读取值。因此,您可以简单地将其删除。并尝试这样

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;
    while (scores.size()<5) {
      System.out.print("Enter a grade (between 0 and 100): ");
      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);
  }
}

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

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

最新更新