Java数字While循环

Java数字While循环,java,if-statement,while-loop,java.util.scanner,Java,If Statement,While Loop,Java.util.scanner,我在一所大学里,不知道如何解决这个问题。我正在尝试制作一个程序,用户输入他/她想要的所有数字,完成后输入-1。“预期”结果由我的教授指导: 编写一个程序,允许用户输入任意数量的正整数。 用户输入完数字后将输入-1 (不要将-1作为数字包含在内)。 当用户输入完数字后,程序必须打印出以下内容: 哪个数字具有相同值的最长运行时间,以及运行时间有多长 输入的最小数量 输入的最大数量 例如,如果用户输入以下数字: 五, 九, 五, 七, 五, 七, -一, 然后程序将打印出: Longest run

我在一所大学里,不知道如何解决这个问题。我正在尝试制作一个程序,用户输入他/她想要的所有数字,完成后输入-1。“预期”结果由我的教授指导:

编写一个程序,允许用户输入任意数量的正整数。 用户输入完数字后将输入-1 (不要将-1作为数字包含在内)。 当用户输入完数字后,程序必须打印出以下内容: 哪个数字具有相同值的最长运行时间,以及运行时间有多长 输入的最小数量 输入的最大数量 例如,如果用户输入以下数字:

  • 五,
  • 九,
  • 五,
  • 七,
  • 五,
  • 七,
  • -一,
然后程序将打印出:

Longest run: 5 entered 3 times
Minimum number: 2
Maximum number: 9
如果有多个长度相等的管路,请打印出遇到的第一个这样的管路

import java.util.Scanner;

public class ExSixNumber {

  public static void main(String args []) {
    int mostUsedNumber = 0;
    int mostUsedCount = 0;

    System.out.println("I will track all your numbers!");
    System.out.println("Enter any digits between 1 and 9.");
    System.out.println("Enter '-1' when done:");

    Scanner scn = new Scanner (System.in);

    while(scn.hasNext()) {
        String userInput = scn.next();
        while (scn.equals (userInput)) {
            mostUsedNumber++;
            mostUsedCount++;
        }
        if(userInput.equals("-1")) {
            System.out.println("Your tracked data:");
            System.out.println("Longest run: " + mostUsedNumber + " entered " + mostUsedCount + " .");

            break;
        }            
    }
  }
}
这就是我所能做到的。它不喜欢跟踪我的用户输入,有人能给我指出改进程序的正确方向吗?我是新来的,不要求直接回答,但“虚拟”术语将不胜感激。:)

希望这会有所帮助:)

import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共一级{
公共静态void main(字符串参数[]){
int mostUsedNumber=0;
int mostUsedCount=0;
int maxNo=-1;
int minNo=-1;
List numberList=new ArrayList();
List mostOccuranceList=new ArrayList();
System.out.println(“我会追踪你所有的号码!”);
System.out.println(“输入1到9之间的任何数字”);
System.out.println(“完成时输入“-1”);
扫描仪scn=新扫描仪(System.in);
while(scn.hasNext()){
字符串userInput=scn.next().trim();
int user_input=Integer.parseInt(userInput);
如果(maxNo=-1&&minNo=-1){
maxNo=minNo=user\u输入;
}
如果(用户输入>0&&用户输入<10){
//返回出现的次数
int引用=Collections.frequency(numberList,用户输入);
如果(出现次数==mostUsedCount){
添加(用户输入);
}else if(出现次数>mostUsedCount){
mostUsedCount=出现次数;
//清空最常出现的列表,因为当前输入是最常出现的数字
mostOccuranceList.removeAll(mostOccuranceList);
添加(用户输入);
}
如果(用户输入>最大值)
{
maxNo=用户输入;
}

if(user_Input)你认为内部while循环做什么?@Julio,我想它会跟踪扫描仪是否匹配userInput(假设他们插入了5)。因此,如果条目中有4个5,则表示“你总共使用了5次4次。”我使用idex++;方法尝试查看它是否被跳过。问题是
mostUsedNumber
mostUsedCount
可能会被下一个数字覆盖,因此您可以编写5 4并得到“您总共使用了4次”但与现在的情况相比,这是另一种情况,++在变量中已经存在的内容上增加+1。当前代码中的每次迭代都会增加它。也请检查aliteralmind的答案。提示:MOSTUSEDNAME不需要++谢谢Sam,这一点一开始有点难理解,但它是自解释的。:)我想一个数组将要运行,但我不知道如何添加它。但问题是,maxNo和minNo到底是做什么的?和parseInt?除此之外,我理解脚本是如何运行的。抱歉,响应时间太长。由于天气恶劣,作业被推迟,我的教授给了我们一个实验室,所以这项作业被推迟了一点。max否:-要存储具有最大值的数字,minNo:-要存储具有最小值的数字,parseInt:-因为输入是作为字符串接收的,所以需要将其转换为Int。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class one {

public static void main(String args[]) {
    int mostUsedNumber = 0;
    int mostUsedCount = 0;

    int maxNo=-1;
    int minNo=-1;

    List numberList = new ArrayList<Integer>();

    List mostOccuranceList = new ArrayList<Integer>();

    System.out.println("I will track all your numbers!");
    System.out.println("Enter any digits between 1 and 9.");
    System.out.println("Enter '-1' when done:");

    Scanner scn = new Scanner(System.in);

    while (scn.hasNext()) {

        String userInput = scn.next().trim();

        int user_input = Integer.parseInt(userInput);

        if(maxNo==-1 && minNo ==-1){
            maxNo=minNo=user_input;
        }

        if (user_input > 0 && user_input < 10) {

            // returns the number of occurrences
            int occurrences = Collections.frequency(numberList,user_input);

            if (occurrences == mostUsedCount) {
                mostOccuranceList.add(user_input);
            } else if (occurrences > mostUsedCount) {
                mostUsedCount = occurrences;
                // emptying the most occurrence list since current input is the most frequent number
                mostOccuranceList.removeAll(mostOccuranceList);
                mostOccuranceList.add(user_input);
            }
            if(user_input>maxNo)
            {
                maxNo=user_input;
            }

            if(user_input<minNo){
                minNo=user_input;
            }
            numberList.add(user_input);

        }

        mostUsedNumber+=1;
        mostUsedNumber=Integer.parseInt(mostOccuranceList.get(0).toString());
        if (userInput.equals("-1")) {
            System.out.println("Your tracked data:");
            System.out.println("Longest run: " + mostOccuranceList + " entered " + mostUsedCount + " .");
            System.out.println("Maximum Number :- "+maxNo);
            System.out.println("Minimum Number :- "+minNo);
            break;
        }
    }
}

}