2012-01-23 20 views
0

ここでは、ユーザー入力に応じてハッシュマップから値とキーを取得しようとしています。エラー入力の処理

ここでは、ユーザーにキーボードから値を入力するよう依頼しました。また、ユーザーの入力に応じて、ハッシュマップから値またはキーのいずれかを取得します。

現在のところ、正常に動作しています。しかし、私はエラー条件を処理したい。

例えば:

  1. 、ユーザが第一のSystem.out.println()文でM/NまたはQ以外の何を与えれば。
  2. ユーザーがメインナンバーを無効にした場合など。

このように、ユーザーに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; 
      } 

     } 
    } 
} 
} 
+0

これは何をすべきか: '(a == null?" M "== null:a.equals(" M "))|| a.equals( "m") '? – NPE

+0

この条件は、それが大文字Mか小文字かどうかをチェックするだけです。それだけです。1つの条件のいずれかが満たされた場合、それはif条件の中に入ります。 –

答えて

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(); 
    } 
} 
1

ハッシュマップがあります。キーを比較する必要はありません。 streetno.get(inp)がnullかどうかを確認するだけです。 nullでない場合は値を表示でき、nullの場合はエラーメッセージを表示できます。

また、"M"==nullも常にfalseです。 nullは「値なし」を意味する特別な値です。 null以外の値をnullと比較すると、必要なものは得られません。あなたの現在のコードがまだあるために実行されるa.equals("m")ビットの、nullの入力に嘔吐します

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

:あなたはあなたのようチェックを簡素化することができます。しかし、Scannerは空の文字列を返します。ユーザがEnterキーを押すだけではnullではありません。