我有一项任务,我需要使用用户输入的数据在单独的方法中进行某些计算。我的问题是用户输入。它应该用一个单独的方法完成(我不认为我可以使用数组来存储输入)。用户应该能够输入他们想要的任意数量的值,然后以“q”退出。然后程序应该取前两个数字,例如计算一个区域和体积与那些(我没有在这里包括的其他方法),显示结果,采取用户输入的下两个数字,计算和显示结果。这应该重复,直到达到“q”值。例如:
Enter your values: 9 5 3 7 q
radius: 9 height: 5
Area = 254
Volume = 424
radius: 3 height: 7
Area = 28
Volume = 65
我遇到的一个问题是,只有第一个值被赋给变量,然后用户必须再次为下一个变量输入数据,即使第一次还剩下更多的数字。
import java.util.Scanner;
public class Stack {
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int radie, height;
radie = userInput("");
height = userInput("");
}
public static int userInput(String message) {
int number = Integer.MAX_VALUE;
while (number == Integer.MAX_VALUE) {
System.out.print(message);
if (input.hasNextInt()) {
number = input.nextInt();
}
input.nextLine();
}
return number;
}
}
我知道我的代码存在很大的缺陷,我很丢失,不知道从哪里开始解决问题。我们非常欢迎任何帮助或提示!提前致谢!
您是否阅读过“Scanner.hasNextInt()”方法文档?写成:返回:当且仅当此扫描器的下一个标记是有效的int值时才返回true
所以问题是否
number == Integer.MAX_VALUE
没有意义。
试着询问hasNextInt()是返回true还是false
编辑:另外为什么你认为数字后总是'q'?
在while语句中更改条件
真的不明白你的意思,但我做了一些改变:
import java.util.Scanner;
public class stack {
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
userInput();
}
public static void userInput() {
while (true) {
System.out.println("Enter your values:");
String message = input.nextLine();
//Split data with space
String[] data = message.split(" ");
int pointer = 2;
for (String i : data) {
if (i.equals("q")) {
System.out.println("Stopped.");
System.exit(0);
}
if (pointer % 2 == 0) {
System.out.println("radius: " + i);
}
if (pointer % 2 == 1) {
System.out.println("height: " + i);
}
pointer++;
}
}
}
}
影响:
Enter your values:
1 2 3 4 5 6 7 8
radius: 1
height: 2
radius: 3
height: 4
radius: 5
height: 6
radius: 7
height: 8
Enter your values:
1 q
radius: 1
Stopped.
Process finished with exit code 0