2016-10-27 6 views
0

私はこれについて以前に投稿しましたが、まだいくつか問題があります。私はユーザーから与えられたメッセージをデコードする必要があります。コード解読プログラムの作成

メッセージは、一連の数字で構成され、これらの置換を使用して復号化されるべきである:

例えば
1 = D 
2 = W 
3 = E 
4 = L 
5 = H 
6 = O 
7 = R 

5344626741HELLOWORLDあります。

私は多くのことを試してみましたが、近づいてきましたが、出力が正しくありません。特定の文字列を検索する際に問題があると思います。

すべてのヘルプは大歓迎され、ここに私のコードは次のとおりです。

public static void main(String[] args){ 
    Scanner in = new Scanner(System.in); 

    System.out.println("Please enter 10 numbers, after each number you put in, press enter. The numbers can only be from 1 - 7."); 

    int numInputs = 0; 
    String code = "", deciphered = ""; 
    int input = 0, charNumber = 7; 
    //5344626741 
    do{ 
     System.out.println("Please enter a number: "); 
     input = in.nextInt(); 
     if(input>=8 || input<=0){ 
      System.out.println("Please enter a different number: "); 
      input = in.nextInt(); 
      code+=input; 
      numInputs++; 
     } 
     else{ 
     code+=input; 
     numInputs++; 
     } 
    }while(numInputs < 10); 

    System.out.println("Your code is " + code); 
    for(int add = 0; add < 10; add++){ 
     switch(code.charAt(charNumber)){ 
     case '1': deciphered+="D"; 
     case '2': deciphered+="W"; 
     case '3': deciphered+="E"; 
     case '4': deciphered+="L"; 
     case '5': deciphered+="H"; 
     case '6': deciphered+="O"; 
     case '7': deciphered+="R"; 
     break; 
     default: System.out.println("Something went wrong! Try again with numbers only 1 - 7."); 
     charNumber++; 
     } 
    } 

    System.out.println("The output is: "+deciphered); 
    in.close(); 
} 
+3

それぞれの 'case'に対して' break'が必要です。そうでなければ、 'case'に落ちます。 –

+0

数字を文字にマッピングする配列を考えましたか? –

+0

また、ユーザーが無効な入力を2回入力した場合は、無視する必要がある場合に有効な数字として使用することに注意してください。 –

答えて

1

これは、単純なタイプミスと1つのロジックエラーのように見えます。 switch(code.charAt(charNumber))switch(code.charAt(add))に変更し、2番目のforループの最後に削除する必要があります。charNumber++;

それぞれのcase文の後にbreak文もありません。

最後のforループでは、正しいインデクサーで繰り返していることを確認する必要があります。ここでは、プログラムの初めにcharNumberを7に初期化したように見えるので、文字列の長さを超えたときにエラーが表示されます。

+0

コードを取得しました。私は自分のケースに休憩を追加しなければならず、あなたが提案したようにcharAt(追加)を使用しました。どうもありがとうございました! –

+0

@BrandonLatimerよろしくお願いします。この回答が十分にあなたの質問に答えるように感じたら、受け入れる答えボタンをチェックすることを忘れないでください! –