提问人:bluebrigade23 提问时间:4/14/2014 最后编辑:Not a bugbluebrigade23 更新时间:11/13/2023 访问量:164
让用户输入整数
Get user to input integers
问:
我想制作一个程序,不断提示用户输入整数(来自 CUI),直到它从用户那里收到“X”或“x”。 然后,程序打印出输入数字的最大数量、最小数量和平均值。
我确实设法让用户输入数字,直到有人输入“X”,但如果有人输入“x”和第二位,我似乎无法让它停止。
这是我设法解决的代码:
Scanner in = new Scanner(System.in);
System.out.println("Enter a number")
while(!in.hasNext("X") && !in.hasNext("x"))
s = in.next().charAt(0);
System.out.println("This is the end of the numbers");
关于我如何进一步进行的提示?
答:
您将需要执行如下操作:
Scanner in = new Scanner(System.in);
System.out.println("Enter a number")
while(!(in.hasNext("X") || in.hasNext("x")))
s = in.next().charAt(0);
System.out.println("This is the end of the numbers");
每当你使用 while 循环时,你必须使用 {},以防 while 块中的参数超过 1 行,但如果它们只是一行,那么你可以继续不使用 .{}
但是问题,我想你遇到的是使用 而不是 .(AND) 运算符的作用是在两个语句都为真时执行,但如果任何条件都为真,则 (OR) 运算符有效。&&
||
&&
||
如果你说while(!in.hasNext(“X”) || !in.hasNext(“x”))',这是有道理的。理解?while(!in.hasNext("X") && !in.hasNext("x")) it makes no sense as the user input is not both at the same time, but instead if you use
最后,关于如何计算平均值......,为此,您需要做的是将所有输入变量存储到一个数组中,然后取出该数组的平均值,或者您可以考虑一下并自己编写一些代码。比如去掉均值,你可以做一个变量,然后继续添加用户输入的整数,并保留一个变量,该变量将保持输入的整数数的计数,最后你可以将它们两者相除得到你的答案sum
count
更新:为了检查最小值和最大值,您可以做的是创建 2 个新变量,例如当用户输入新变量时,您可以检查int min=0, max=0;
//Note you have to change the "userinput" to the actual user input
if(min>userinput){
min=userinput;
}
和
if(max<userinput){
max=userinput;
}
评论
min
max
min
||
!in.hasNext("X") && !in.hasNext("x") == !(in.hasNext("X") || in.hasNext("x"))
!a && !b
!(a || b)
!a || !b
!(a && b)
false
X
x
这将满足您的需求:
public void readNumbers() {
// The list of numbers that we read
List<Integer> numbers = new ArrayList<>();
// The scanner for the systems standard input stream
Scanner scanner = new Scanner(System.in);
// As long as there a tokens...
while (scanner.hasNext()) {
if (scanner.hasNextInt()) { // ...check if the next token is an integer
// Get the token converted to an integer and store it in the list
numbers.add(scanner.nextInt());
} else if (scanner.hasNext("X") || scanner.hasNext("x")) { // ...check if 'X' or 'x' has been entered
break; // Leave the loop
}
}
// Close the scanner to avoid resource leaks
scanner.close();
// If the list has no elements we can return
if (numbers.isEmpty()) {
System.out.println("No numbers were entered.");
return;
}
// The following is only executed if the list is not empty/
// Sort the list ascending
Collections.sort(numbers);
// Calculate the average
double average = 0;
for (int num : numbers) {
average += num;
}
average /= numbers.size();
// Print the first number
System.out.println("Minimum number: " + numbers.get(0));
// Print the last number
System.out.println("Maximum number: " + numbers.get(numbers.size() - 1));
// Print the average
System.out.println("Average: " + average);
}
评论
上一个:让用户输入整数
评论