java - 处理错误输入

标签 java error-handling hashmap

在这里,我尝试根据用户输入从 HashMap 中检索值和键。

在这里,我要求用户从键盘输入值。然后根据用户输入,我从 HashMap 中检索值或键。

目前一切正常。但我想处理错误情况。

例如:

  1. 如果用户在第一个 System.out.println() 语句中给出除 M/N 或 Q 以外的值会怎样?
  2. 如果用户的主号码无效怎么办?

像这样,我想在要求用户在 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/

相关文章:

java - 如何将两个数组列表的对象在指定索引处相互传递

java - if(a&&b) 是否应该比 if(a) if(b) 花费更多时间?

codeigniter - 重定向页面,错误代码为igniter

java - 如何将 Java HashMap<String, Pojo> 变量名映射到 typescript

java - 从复杂的 JSON 数据创建 Hashmap

java - Android java在动画发生后更新图像的坐标

java - 如何仅在按下按钮时才重新加载 recyclerview?

php - 我怎样才能告诉 PHP 将异常转储为原始文本而不是 HTML?

paypal - Vauge PayFlow 错误

java - 将HTTP风格的键值对解析为java.util.HashMap