2016-10-25 4 views
0

プログラムが1-7の入力を求めるメッセージをデコードする必要があります。 は、「D」を表す。 2は「W」を表す。 3は「E」を表す。 4は「L」を表す。 5は "H"を表す。 6は「O」を表す。 7は「R」を表す。そこで私はdo-whileループを使って一緒にまとめた文字列をスキャンし、一度に各文字をスキャンし、解読された文字列に上記の文字を加えてみました。助けてください。その条件としてnumInputs < 10を使用している(おそらく代わりに、forループでなければなりません)do-whileループを使用したコード解読

 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 = 1; 

    do{ 
     System.out.println("Please enter a number: "); 
     input = in.nextInt(); 
     code+=input; 
     numInputs++; 
    }while(numInputs < 10); 

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

    System.out.println("The output is: "+deciphered); 
} 
+1

どうすれば助けてください。あなたは助けが必要な問題を表明していません。 –

+0

質問とは何ですか? –

答えて

0
  1. あなたの第二のDO-whileループ:ここに私のコードです。最初のdo-while-loopのためにnumInputsはすでに10であるため、2番目のdo-while-loopは1回だけ実行されます。他の場所にはcharNumberを使用しないでください。ここで条件を使用する方が理にかなっています。 Stringのインデックスは0

  2. で起動するのでまた、それはあなたがcodeに番号を追加すると、彼らは、その番号に対応char秒に変換されている、で開始する0に設定しなければならないであろう1 - > '1'、2 - > '2'、...これはあなたのswitchが毎回失敗する原因になります。ここには2つのオプションがあります:intの配列を使用してコードを保持するか、caseを変更して、intの代わりにをチェックします。

  3. 問題のいずれにも関係しませんが、機能の最後にはinを閉じてください。 in.close();

関連する問題