使用do-while循环的代码解码

时间:2016-10-25 18:50:15

标签: java loops do-while

我必须解码一条消息,程序要求输入1-7。 1代表“D”。 2代表“W”。 3代表“E”。 4代表“L”。 5代表“H”。 6代表“O”。 7代表“R”。所以我尝试使用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-loop(可能应该是for-loop)使用numInputs < 10作为条件。由于第一个do-while循环,numInputs已经是10,因此你的第二个do-while-loop只会经历一次。你不能在其他任何地方使用charNumber,在这里使用这个条件更有意义。此外,它必须设置为0才能开始,因为String的索引从0开始。

  2. 当您将数字添加到code时,它们会转换为与该数字对应的char,因此1 - &gt; &#39; 1&#39;,2 - &gt; &#39; 2&#39;,...这会导致您的switch每次都失败。这里有两个选项:使用int数组来保存代码,或更改case以检查char而不是int s。< / p>

  3. 与您的任何问题无关,但您应该在功能结束时关闭inin.close();