如何 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++;
}
我正在尝试从用户输入中获取最大数字和最大出现数字。我的代码的问题是它只是 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++;
}