我在大学,我不明白如何解决这个问题。我正在尝试创建一个程序,用户输入他/她想要的所有数字,并在他/她完成时输入-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;
}
}
}
}
这是我所得到的。它不喜欢跟踪我的userInput,有人能指出我正在改进程序的方向吗?我是新人而不是要求直接回答,但“虚拟”条款将不胜感激。 :)
答案 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;
}
}
}
}