循环中的Java编号

时间:2014-02-03 04:01:58

标签: java if-statement while-loop java.util.scanner

我在大学,我不明白如何解决这个问题。我正在尝试创建一个程序,用户输入他/她想要的所有数字,并在他/她完成时输入-1。 “预期”结果如我的教授指示:

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

  • 5
  • 9
  • 5
  • 7
  • 5
  • 7
  • -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;
        }            
    }
  }
}

这是我所得到的。它不喜欢跟踪我的userInput,有人能指出我正在改进程序的方向吗?我是新人而不是要求直接回答,但“虚拟”条款将不胜感激。 :)

1 个答案:

答案 0 :(得分:1)

希望这会有所帮助:)

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

}