Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从用户输入返回最大值和最大计数_Java_Arrays_Loops_For Loop_User Input - Fatal编程技术网

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的值是用户输入指定的数组长度。