在我的代码中,如果用户为任一变量输入空字符串,我希望循环退出。输入空字符串后似乎没什么用。
我哪里错了?
import java.util.HashMap;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String lakeName;
String timeRun;
HashMap<String, Double> newMap = new HashMap<>();
do {
System.out.println("Enter the Lake Name");
lakeName = input.nextLine();
System.out.println("Enter number of minutes run");
timeRun = input.nextLine();
Double finalRun = Double.parseDouble(timeRun);
newMap.put(lakeName, finalRun);
if(lakeName.equalsIgnoreCase("") || timeRun.equalsIgnoreCase("")){
break;
}
} while(true);
for(String key: newMap.keySet()){
Double value = newMap.get(key);
System.out.println(key + ": "+ value);
}
}
}
答案 0 :(得分:3)
试试这个:
do {
System.out.println("Enter the Lake Name");
lakeName = input.nextLine();
System.out.println("Enter number of minutes run");
timeRun = input.nextLine();
if(lakeName.equalsIgnoreCase("") || timeRun.equalsIgnoreCase("")){
break;
}
Double finalRun = Double.parseDouble(timeRun);
newMap.put(lakeName, finalRun);
} while(true);
放if{...}
,如果没有,它将被赋予NumberFormatException。
答案 1 :(得分:2)
一种方法是检查String是否为isEmpty(),并添加break
语句。
所以在你的情况下就像是:
if(lakeName.isEmpty())
break;
你必须对timeRun
变量做同样的事情;
答案 2 :(得分:2)
当您为timeRun
输入空字符串时,您将尝试将空字符串解析为double。这会失败并抛出此异常:
java.lang.NumberFormatException: empty String
您可以通过将以下代码放入循环来解决此问题:
System.out.println("Enter the Lake Name");
lakeName = input.nextLine();
System.out.println("Enter number of minutes run");
timeRun = input.nextLine();
if (lakeName.equalsIgnoreCase("") || timeRun.equalsIgnoreCase("")) {
break;
}
Double finalRun = Double.parseDouble(timeRun);
newMap.put(lakeName, finalRun);
我刚刚将break
向上移动了几行,包括其条件。
此外,您可以将.equalsIgnoreCase("")
替换为.isEmpty()
,如其他答案中所述。