Java 如何从用户输入返回最大值和最大计数
我试图从用户输入中同时获取最大数和最大发生数。我的代码的问题是它只返回数组的第一个值Java 如何从用户输入返回最大值和最大计数,java,arrays,loops,for-loop,user-input,Java,Arrays,Loops,For Loop,User Input,我试图从用户输入中同时获取最大数和最大发生数。我的代码的问题是它只返回数组的第一个值 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: ");
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);
}}
公共类CountMax{
公共静态void main(字符串[]args){
//创建扫描仪对象
扫描仪输入=新扫描仪(System.in);
//获取用户输入
System.out.println(“输入数字:”);
int num=input.nextInt();
int数组[]=新的int[num];
//循环阵列
int max=数组[0];
整数计数=1;
对于(int i=0;imax){
max=数组[i];
计数=1;
}else if(数组[i]==max){
计数++;
}
}
//输出结果
System.out.println(“最大值为”+max);
System.out.println(“最大数字的出现计数为”+计数);
}}
仔细考虑你需要采取的每一步
您知道用户将输入多少个数字吗?
现在您只接受一个数字,因为您没有循环输入
int num = input.nextInt();
int array[] = new int[num];
这里,您正在创建一个数组,大小与用户输入的数字相同。如果用户告诉您“我将输入10个数字”,然后输入10个数字,这是一种正确的方法,更典型的是C语言。这很方便,因为您将知道循环10次,并且最多需要计算10个不同的数字
如果我们不知道将输入多少个数字,则需要循环直到EOF。。差不多
while(input.hasNext()) {
int currentInt = input.next();
...
}
现在你必须考虑你将如何计算这些项目。
我希望这能给您提供一些解决方案的思路。我注意到的一个问题:
int num = input.nextInt();
当您这样做时,它只需要取第一个int(也就是说,只有1个数字)当您创建数组时int array[]=new int[num]
,您创建的是一个大小为num的数组,而不是实际创建一个值为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);
}
}
公共类CountMax{
公共静态void main(字符串[]args){
//创建扫描仪对象
扫描仪输入=新扫描仪(System.in);
//获取用户输入
System.out.println(“输入数字:”);
字符串[]数组=input.nextLine().split(“,”);
//循环阵列
int max=Integer.parseInt(数组[0]);
整数计数=0;
for(int i=0;imax){
max=Integer.parseInt(数组[i]);
}else if(Integer.parseInt(数组[i])==max){
计数++;
}
}
//输出
System.out.println(“最大值为”+max);
System.out.println(“最大数字的出现计数为”+计数);
}
}
希望这有帮助:-)我知道这篇文章很旧,但怀亚特·洛厄里的解决方案是不正确的,以防万一有人像我一样从谷歌上偶然发现它。在找到最大值之前,不能像这样计算同一循环中数组中的最大值数 使用怀亚特的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++;
}
int max=array[0];
整数和=0;
for(int i=1;imax)max=array[i];
}
for(int i=0;i
您已将数组的所有值设置为数组的长度。@RamanSB具体设置如何?查看for循环,循环遍历数组的每个索引并将其设置为num。num的值是用户输入指定的数组长度。