2016-09-28 12 views
1

初級 - 私は次のように作成したJavaの2次元アレイ

import java.util.*; 

public class morse5 { 

public static void main(String [] args) 
{  

    //Declare Variables 
    String [][] myIndexAlphaMorse = {{"a", ".-"}, {"b", "-..."}, {"c", "-.-."}, {"d", "-.."}, {"e", "."}, {"f", "..-."}, {"g", "--."}, {"h", "...."}, {"i", ".."}, {"j", ".---"}, {"k", "-.-"}, {"l", ".-.."}, {"m", "--"}, {"n", "-."}, {"o", "---"}, {"p", ".--."}, {"q", "--.-"}, {"r", ".-."}, {"s", "..."}, {"t", "-"}, {"u", "..-"}, {"v", "...-"}, {"w", ".--"}, {"x", "-..-"}, {"y", "-.--"}, {"z", "--.."}, {"1", ".----"}, {"2", "..---"}, {"3", "...--"}, {"4", "....-"}, {"5", "....."}, {"6", "-...."}, {"7", "--..."}, {"8", "---.."}, {"9", "----."}, {"0", "-----"}, {" ", "|"}}; 


    //Test 
    System.out.println(Arrays.deepToString(myIndexAlphaMorse)); 
    System.out.println(myIndexAlphaMorse[8][0]); 


} 

私が知りたいのですが、何がユーザーの入力に基づいて対応する位置の値を取得する方法です。私は学んでいるので、ちょうど例として、"a"が入力されたときに戻って.-を取得する方法について説明したいと思います。

Map<String, String> myIndexAlphaMap = new HashMap<>(); 
myIndexAlphaMap.put("a", ".-"); 
myIndexAlphaMap.put("b", "-..."); 
// etc. 

// given user input of "a" you can access via 
myIndexAlphaMap.get("a"); 

答えて

3

単にあなたの配列を反復処理し、0番目の要素を比較する:あなたはMapの代わりに、この問題のための2次元配列を使用することを検討すべきである

+0

これはおそらくインテントに近いでしょう。私はループを学んだ。私はこれを試してみましょう。 – VanDal

+0

これは機能します!皆様のご協力と迅速な対応に感謝いたします。私はすべての答えが正しいと確信しています。私はちょうど私の低レベルで1つが必要でした! – VanDal

2

あなたが探しているキャラクターとの各位置で。

String input = "v"; 
String result= ""; 
for(int i = 0; i < myIndexAlphaMorse.length; i++){ 
    if(myIndexAlphaMorse[i][0].equals(input)){ 
     result = myIndexAlphaMorse[i][1]; 
     break; 
    } 
} 
System.out.println("morse for " + input + " = " + result); 

しかし、もう1つの答えとして、このタスクに最適なマップを使用する必要があります。

1

または文字列の配列のマップ

Map<String, String[]> myIndexAlphaMap = new HashMap<String, String[]>(); 
myIndexAlphaMap.put("a", new String {".","-"}); 
myIndexAlphaMap.put("b", new String {"-",".","."}); 

// given user input of "a" you can access via 
myIndexAlphaMap.get("a")[0]; 
+0

私はまだマップを学習していません。この演習のポイントは、入力された値を取得する方法を学び、1Dまたは2D配列を使用して対応する値を返すことです。 – VanDal

1

あなたはまた、彼らはすでにHashMapの/地図の上にサンプルを与えてくれたことから、ハッシュテーブルを使用することができます。

Hashtable<String, String> table = new Hashtable<String, String>(); 
table.put("a", ".-"); 
table.put("b", "-..."); 

はまた、同期化され、より大きなデータ・セットのちょっぴり遅いとはいえ、ハッシュマップとは異なり、スレッドセーフ。

1

まず文字をStringオブジェクトとして読み込む必要があります。配列を繰り返して、探しているものが見つかると、それを印刷してループを壊すことができます:

Scanner scanner = new Scanner(new InputStreamReader(System.in)); 
String letter = scanner.next(); 
for (int i=0; i<myIndexAlphaMorse.length; i++) 
    if (myIndexAlphaMorse[i][0].equals(letter)){ 
     System.out.println(myIndexAlphaMorse[i][1]); 
     break; 
    } 
関連する問題