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

How to find max number and occurrences

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

我的作业是编写一个程序来读取整数,找到其中的最大值,并计算它的出现次数。

但我有两个问题和一些障碍。我不允许使用数组或列表,因为我们还没有学过,那么你如何在同一行上从用户那里获取多个输入。到目前为止,我发布了我能发布的内容。我也遇到了让循环工作的问题。我不确定如何设置 while 条件不等于来创建基本值。我试过如果用户输入是 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 );
        }
      }
    }

So how do you take multiple inputs from the user on the same line .

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

 int userInput = input.nextInt();    

    while ( userInput != 0) {
      //all above logic
      userInput = input.nextInt();        
    }

代码:-

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。

您可以用一个循环来实现它。这样做的传统简洁模式涉及这样一个事实,即分配解析为分配的值。因此,您的循环可以使用 (x = input.nextInt()) != 0 来终止(处理异常和非整数输入留作 reader 的练习)。请记住在 循环后显示最大值和计数 ,并在找到新的最大值时将计数重置为 1。另外,我会将最大值默认为 Integer.MIN_VALUE(而不是 1)。这使得代码看起来像

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);
}