我必须解码一条消息,程序要求输入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);
}
答案 0 :(得分:0)
你的第二个do-while-loop(可能应该是for-loop)使用numInputs < 10
作为条件。由于第一个do-while循环,numInputs
已经是10,因此你的第二个do-while-loop只会经历一次。你不能在其他任何地方使用charNumber
,在这里使用这个条件更有意义。此外,它必须设置为0才能开始,因为String
的索引从0开始。
当您将数字添加到code
时,它们会转换为与该数字对应的char
,因此1 - &gt; &#39; 1&#39;,2 - &gt; &#39; 2&#39;,...这会导致您的switch
每次都失败。这里有两个选项:使用int
数组来保存代码,或更改case
以检查char
而不是int
s。< / p>
与您的任何问题无关,但您应该在功能结束时关闭in
。 in.close();