首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理错误输入

处理错误输入
EN

Stack Overflow用户
提问于 2012-01-23 17:37:44
回答 2查看 156关注 0票数 0

这里,我试图根据用户的输入从哈希映射中检索值和键。

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

到现在为止,一切都很顺利。但是我想要处理错误的条件。

例如:

如果用户在第一个statement.

  • What () System.out.println()中给出了M/N或Q以外的其他值,如果用户的主号码无效,那怎么办?

像这样,在请求用户输入System.out.println()语句后,我希望处理所有可能的错误条件。

/* *若要更改此模板,请在编辑器中选择Tools x template *并打开该模板。*/包装蟋蟀;

代码语言:javascript
复制
  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;
            }

        }
    }
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-23 20:15:01

检查它们的输入是否有效,如果不正确,则请他们再次输入

代码语言:javascript
复制
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();
    }
}
票数 0
EN

Stack Overflow用户

发布于 2012-01-23 17:43:08

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

而且,"M"==null总是错误的。null是一种特殊的价值,意思是“无价值”。将非空值与null进行比较不会得到您想要的结果。您可以将检查简化为:

代码语言:javascript
复制
if("M".equals(a) || "m".equals(a)) { ... }

由于正在运行的a.equals("m")位,当前的代码仍将对空输入进行run。(不过,我确实相信,如果用户按Enter键,Scanner将返回空字符串,而不是null。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8976042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档