我试图从用户输入中获得最大的数字和最大的出现数。我的代码的问题是它只返回数组的第一个值。
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();
...
}
现在你必须考虑如何计算这些项目。
我希望这能给你一些思考你的解决方案的东西