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