如何 return 来自用户输入的最大值和最大计数

How to return the Max Value and Max Count from a user input

我正在尝试从用户输入中获取最大数字和最大出现数字。我的代码的问题是它只是 returns 数组的第一个值。

public class CountMax {
public static void main(String [] args) {
    //Create scanner object
    Scanner input = new Scanner(System.in);

    //Obtain user input 
    System.out.println("Enter numbers: ");
    int num = input.nextInt(); 
    int array[] = new int[num]; 

    //loop through array
    int max = array[0];
    int count = 1;
        for (int i = 0; i < array.length; i++) { 
            array[i] = num; 
            if(array[i] > max) {
                max = array[i];
                count = 1;
            } else if(array[i] == max) {
                count++;
            }
        }
    //output results
    System.out.println("The largest number is " + max);
    System.out.println("The occurrence count of the largest number is " + count);
}}

更仔细地考虑您需要采取的每个步骤。

你知道用户会输入多少个数字吗? 现在你只接受一个数字,因为你没有循环输入

int num = input.nextInt(); 
int array[] = new int[num];

在这里,您正在创建一个数组,其大小与用户输入的数字相同。这是一个正确的做法,更典型的 C,如果用户会告诉你 "I will enter 10 numbers" 然后输入 10 个数字。这很方便,因为你会知道要循环 10 次,而且你最多需要数 10 个不同的数字。

如果我们不知道要输入多少个数字,您将需要循环直到 EOF.. 类似

while(input.hasNext()) {
   int currentInt = input.next();
   ...
}

现在您必须考虑如何计算这些项目。

我希望这能让您在解决问题时考虑一些事情..

我注意到的一个问题:

int num = input.nextInt();

当你这样做时,它只会采用第一个整数(意思是只有一个数字)同样,当你创建数组时 int array[] = new int[num],你正在创建一个 SIZE 为 num 的数组,而不是实际创建一个 VALUES 为 num 的数组。 (尽管 num 只是一个数字)要实际创建一个数字数组,请执行以下操作:

System.out.pritnln("Enter in numbers:");
String[] array = input.nextLine().split(", ");

示例输入为:“13、12、14、14”。然后数组的内容就是那些术语(并且会删除空格和逗号)。完成后你的程序应该看起来像这样:

public class CountMax {
public static void main(String [] args) {
    //Create scanner object
    Scanner input = new Scanner(System.in);

    //Obtain user input
    System.out.println("Enter numbers: ");
    String[] array = input.nextLine().split(", ");

    //Loop through array
    int max = Integer.parseInt(array[0]);
    int count = 0;
    for (int i = 0; i < array.length; i++) {
        if(Integer.parseInt(array[i]) > max) {
            max = Integer.parseInt(array[i]);
        } else if(Integer.parseInt(array[i]) == max) {
            count++;
        }
    }
    //Output 
    System.out.println("The largest number is " + max);
    System.out.println("The occurrence count of the largest number is " + count);
    }
}

希望这对您有所帮助:-)

我知道这个 post 很旧,但是 Wyatt Lowery 的解决方案是不正确的,以防有人像我一样从 Google 偶然发现它。在找到最大值之前,您不能像这样在同一个循环中计算数组中最大值的数量。

使用怀亚特 class 的示例:2 显然是一个错误的答案。

Enter numbers: 
1, 2, 3, 4, 5, 5, 7
The largest number is 7
The occurrence count of the largest number is 2

我会做:

int max = array[0];
int sum = 0;
for(int i = 1; i < array.length; i++) {
    if(array[i] > max) max = array[i];
}
for(int i = 0; i < array.length; i++) {
    if(array[i]==max) sum++;
}