处理错误输入

时间:2012-01-23 17:37:45

标签: java error-handling hashmap

这里我试图从Hash映射中检索值和键,具体取决于用户输入。

这里我要求用户输入键盘上的值。然后根据用户输入,我从哈希映射中检索值或键。

截至目前,它工作正常。但我想处理错误情况。

E.g:

  1. 如果用户在第一个System.out.println()语句中给出M / N或Q以外的内容,该怎么办。
  2. 如果用户主号码无效,等等。
  3. 像这样我想在System.out.println()语句中询问用户输入之后处理所有可能的错误条件。

    / *  *要更改此模板,请选择“工具”|模板  *并在编辑器中打开模板。  * / 包cricketpur;

      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;
                }
    
            }
        }
    }
    }
    

2 个答案:

答案 0 :(得分:1)

你有一个hashmap。您不必比较密钥。只需查看streetno.get(inp)是否为空。如果它不为null,则可以显示该值,如果为null,则可以显示错误消息。

此外,"M"==null总是错误的。 null是一个特殊值,意思是“没有价值”。将非空值与null进行比较无法获得您想要的效果。您可以将检查简化为:

if("M".equals(a) || "m".equals(a)) { ... }

由于运行a.equals("m")位,您当前的代码仍将在空输入上进行barf。 (但我相信Scanner将返回一个空字符串,如果用户只是按Enter键,则返回null。)

答案 1 :(得分:0)

检查他们的输入是否有效,如果不是,则要求他们再次输入

System.out.println("Enter M/N and Q to quit:");    
while(true)
{
    a = s.nextLine();
    if(/*a is valid*/)
    {
        break;
    }
    else
    {
        System.out.println("Insert invalid input message here.  Enter M/N and Q to quit:");    
        a = s.nextLine();
    }
}