![](/img/trans.png)
[英]How to make a particular string input the condition for while loop and it checks everytime an input is entered
[英]How to set up a loop condition that ends when a particular string input is entered
这是我的问题的输入部分。 编写一个程序,让用户不断输入以下内容:
* 3 个不同实例的温度
3 个输入的温度单位(摄氏度、华氏度、开尔文)
用于转换的温度单位(摄氏度、华氏度、开尔文)
如果不满足这些条件或 output 已打印,则它将返回询问
用户输入新值。
如果在输入阶段的任何时候用户输入单词“退出”然后结束程序。 *
我能够解决问题中的所有问题,但我跳过了上面的最后一个条件,因为我不知道如何设置它。 现在这是我程序的输入阶段:
Scanner sc = new Scanner(System.in);
System.out.println("Please give three numbers");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
System.out.println("Choose the temperature unit of the three numbers.");
System.out.println("Enter 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
int tempUnit = sc.nextInt();
switch (tempUnit) {
case (1) -> System.out.println("Celsius was chosen.");
case (2) -> System.out.println("Fahrenheit was chosen.");
case (3) -> System.out.println("Kelvin was chosen.");
}
System.out.println("Choose the temperature unit you want to convert it into.");
System.out.println("Enter 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
int chosenTemp = sc.nextInt();
switch (chosenTemp) {
case (1) -> System.out.println("Celsius was chosen.");
case (2) -> System.out.println("Fahrenheit was chosen.");
case (3) -> System.out.println("Kelvin was chosen.");
}
只要在任意点输入字符串“Quit”,循环结束程序就结束了。
顶部的 while 循环将完成检查输入“退出”是否已输入的条件
一切,但我大部分时间都在失败,因为如果使用不同的数据类型,我会收到错误
输入的内容比被问到的要多。
有人告诉我,我的提示没有设置为接收我的 while 循环的“退出”。 任何人都可以
给我一个例子或教我如何设置它?
首先,我们创建一些辅助方法来读取用户输入:
public static int readNumber(){
Scanner sc = new Scanner(System.in);
String string = sc.nextLine(); //Read anything that user typed
//Terminate program if "quit" was typed
if(string.equalsIgnoreCase("quit")){
System.exit(0);
}
try {
return Integer.parseInt(string);
} catch (Exception e){
return readNumber(); //If user typed gibberish - retry
}
}
public static int readNumber(int lowerBound, int upperBound){
int number = readNumber();
if(number < lowerBound || number > upperBound){
return readNumber(lowerBound, upperBound);
}
return number;
}
之后更改主程序:
public static void main(String[] args) {
//Run program indefinitely
while(true) {
System.out.println("Please give three numbers");
int num1 = readNumber();
int num2 = readNumber();
int num3 = readNumber();
System.out.println("Choose the temperature unit of the three numbers.");
System.out.println("Enter 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
int tempUnit = readNumber(1, 3);
switch (tempUnit) {
case 1: System.out.println("Celsius was chosen.");
case 2: System.out.println("Fahrenheit was chosen.");
case 3: System.out.println("Kelvin was chosen.");
}
System.out.println("Choose the temperature unit you want to convert it into.");
System.out.println("Enter 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
int chosenTemp = readNumber(1, 3);
switch (chosenTemp) {
case 1: System.out.println("Celsius was chosen.");
case 2: System.out.println("Fahrenheit was chosen.");
case 3: System.out.println("Kelvin was chosen.");
}
}
}
将获取用户输入的逻辑移到单独的方法中。 即使在小型程序中,这通常也是一个好主意,因为它允许您一次专注于一件事。
private int readInt();
静态定义 Scanner 或将其作为输入提供。 为简单起见,我将说我们将其作为输入提供,因此我们将其添加为参数。
private int readInt(Scanner scanner);
该方法将从用户那里读取一行输入,如果匹配“退出”则终止程序,然后解析并返回 integer 值。 它将报告错误输入并允许用户重试,直到他们退出或输入有效的 int 值。
private int readInt(Scanner scanner) {
while (true) {
String line = scanner.readLine();
if ("quit".equalsIgnoreCase(line)) {
System.exit(0);
}
try {
return Integer.parse(line);
} catch (Exception e) {
System.out.println("That does not appear to be an integer - try again");
}
}
}
用法看起来像
Scanner scanner = new Scanner(System.in);
... stuff ...
int value = readInt(scanner);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.