如何从用户输入返回最大值和最大计数



我试图从用户输入中获得最大的数字和最大的出现数。我的代码的问题是它只返回数组的第一个值。

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

我知道这篇文章很老了,但是Wyatt Lowery的解决方案是不正确的,以防有人像我一样从谷歌上偶然发现它。在找到最大值之前,您无法在相同的循环中计算数组中最大值的数量。

使用Wyatt的类的例子: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++;
}

我注意到一个问题:

int num = input.nextInt();

当你这样做的时候,它只会接受第一个int(意思是,只有一个数字),当你创建你的数组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 "。然后数组的内容将是这些项(And将删除空格&逗号)。完成后,您的程序应该看起来像这样:

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

希望有帮助:-)

仔细考虑你需要采取的每一步。

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

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

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

如果我们不知道将输入多少数字,则需要循环直到EOF..就像

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

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

我希望这能给你一些思考你的解决方案的东西

相关内容

  • 没有找到相关文章

最新更新