在这里,我尝试根据用户输入从 HashMap 中检索值和键。
在这里,我要求用户从键盘输入值。然后根据用户输入,我从 HashMap 中检索值或键。
目前一切正常。但我想处理错误情况。
例如:
- 如果用户在第一个 System.out.println() 语句中给出除 M/N 或 Q 以外的值会怎样?
- 如果用户的主号码无效怎么办?
像这样,我想在要求用户在 System.out.println() 语句中输入后处理所有可能的错误情况。
/* * 要更改此模板,请选择“工具”|“模板 * 并在编辑器中打开模板。 */ 包板球;
import java.lang.*;
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
// TODO code application logic here
HashMap<String, String> streetno = new HashMap<String, String>();
streetno.put("1", "Sachin Tendulkar");
streetno.put("2", "Dravid");
streetno.put("3", "Sehwag");
streetno.put("4", "Laxman");
streetno.put("5", "Kohli");
Scanner s = new Scanner(System.in);
String a;
String inp;
for (;;) {
System.out.println("Enter M/N and Q to quit:");
a = s.nextLine();
if ((a == null ? "M" == null : a.equals("M")) || a.equals("m")) {
System.out.println("Enter the Main number:");
inp = s.nextLine();
} else if ((a == null ? "Q" == null : a.equals("Q")) || a.equals("q")) {
break;
} else {
System.out.println("Enter the Street name:");
inp = s.nextLine();
}
for (Map.Entry<String, String> entry : streetno.entrySet()) {
if (inp.equals(entry.getKey())) {
System.out.println(entry.getValue());
break;
} else if (inp.equals(entry.getValue())) {
System.out.println(entry.getKey());
break;
}
}
}
}
}
最佳答案
你有一个 HashMap 。您不必比较 key 。只需查看 streetno.get(inp)
是否为 null 即可。如果不为null,则可以显示该值,如果为null,则可以显示错误消息。
此外,"M"==null
始终为 false。 null
是一个特殊值,意思是“无值”。将非空值与 null
进行比较不会得到您想要的结果。您可以将检查简化为:
if("M".equals(a) || "m".equals(a)) { ... }
由于运行了 a.equals("m")
位,您当前的代码仍会在空输入上崩溃。 (不过,我确实相信,如果用户只是按 Enter 键,Scanner
将返回一个空字符串,而不是 null
。)
关于java - 处理错误输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8976042/