如何查找最大数量和出现次数

How to find max number and occurrences

提问人:Trevon Corbett 提问时间:10/10/2021 最后编辑:Trevon Corbett 更新时间:10/11/2021 访问量:1031

问:

所以我是第一次学习 java,似乎不知道如何正确设置 while 循环。

我的任务是编写一个程序,读取整数,找到其中最大的整数,并计算其出现次数。

但我有 2 个问题和一些障碍。我不被允许使用数组或列表,因为我们还没有学到,那么你如何从同一行的用户那里获得多个输入。到目前为止,我发布了我能发布的内容.我在让循环工作方面也遇到了问题。我不确定如何设置 while 条件不等于创建 sential Value。我尝试了如果用户输入为 0,则我无法使用用户输入,因为它在 while 语句中。旁注:我认为首先甚至不需要循环来创建它,我不能只使用一连串的 if else 语句来完成这一点。

 package myjavaprojects2;
import java.util.*;
public class Max_number_count {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        int count = 0;
        int max = 1;
        System.out.print("Enter a Integer:");
        int userInput = input.nextInt();    

        while ( userInput != 0) {
           
                        
        if (userInput > max) {
            int temp = userInput;
            userInput = max;
            max = temp;
         } else if (userInput == max) {
             count++ ;
             
             
         }
             
    
        System.out.println("The max number is " + max );
        System.out.println("The count is " + count );
        }
      }
    }
循环 while-loop 整数 java.util.scanner

评论

0赞 Martheen 10/10/2021
stackoverflow.com/a/25173354/529282
0赞 Elliott Frisch 10/10/2021
if (userInput > max) { max = userInput; count = 1; }不知道为什么你觉得需要交换,你忘了设置为.祝你好运。count1
0赞 Martheen 10/11/2021
@ArvindKumarAvinash 我链接的精确答案与接受的答案具有相同的方法调用

答:

0赞 Manh Nguyen 10/10/2021 #1

那么,如何在同一行上从用户那里获得多个输入呢?

您可以像在代码中一样使用 scanner 和 nextInput 方法。但是,由于 nextInt 一次只读取 1 个由空格分隔的值,因此您需要在 while 循环结束时重新分配 userInput 变量以更新当前处理值,如下所示。

 int userInput = input.nextInt();    

    while ( userInput != 0) {
      //all above logic
      userInput = input.nextInt();        
    }
0赞 Sourashis Pal 10/10/2021 #2

代码:-

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int max = 0, count = 0, num;

        System.out.println("Enter numbers:-");
        while ((num = sc.nextInt()) != 0) {
            if (num > max) {
                max = num;
                count = 1;
            } else if (num == max) {
                count++;
            }
        }

        System.out.println("\nCount of maximum number = "+count);
    }
}

而且您不必使用 ArrayList 或 Array。只需继续输入数字,直到得到 0。

0赞 Elliott Frisch 10/11/2021 #3

你可以用一个循环来实现这一点。这样做的传统简洁模式涉及这样一个事实,即赋值解析为赋值。因此,您的循环可用于终止(处理异常,以及非整数输入作为读者的练习)。请记住在循环显示最大值和计数,并将计数重置为找到新的最大值时。另外,我会默认 max 为 (not ).这使得代码看起来像(x = input.nextInt()) != 01Integer.MIN_VALUE1

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter a Integer:");
    int count = 0, max = Integer.MIN_VALUE, userInput;
    while ((userInput = input.nextInt()) != 0) {
        if (userInput > max) {
            max = userInput;
            count = 1;
        } else if (userInput == max) {
            count++;
        }
    }
    System.out.println("The max number is " + max);
    System.out.println("The count is " + count);
}