编程新手,我正试图创建一个"猜字母"游戏。这个想法是第一个人按下一个键,然后第二个人按下一个键,看看她是否猜对了。
这是我的代码:
package bookExamples;
public class GuessTheLetterGame {
public static void main(String[] args) throws java.io.IOException{
char answer;
System.out.print("press a key and press ENTER:");
answer= (char) System.in.read();
char guess;
System.out.print("Have a guess and press ENTER: ");
guess = (char) System.in.read();
if (guess == answer)
System.out.println("**Right**");
}
}
它运行正常,直到第34行;猜猜并按ENTER:",然后我再次按一个键,代码没有反应。
提前谢谢你:)
答案 0 :(得分:1)
通过将System.in.read()强制转换为char,您将从系统转换为UTF-16的字节。因此String answer = "A";
Scanner scanner = new Scanner(System.in);
String guess = "";
while(! answer.equalsIgnoreCase(guess))
{
guess = scanner.nextLine();
}
System.out.println("CONGRATULATIONS YOU WON!");
仅适用于非常有限的输入。
我建议使用扫描仪读取整行。
{{1}}
答案 1 :(得分:0)
这是另一个匹配原始代码意图但提供Scanner和while循环直到匹配的
<span
id="dropdown-info"
ng-init= "myVar='images/info_icon_off.png'"
ng-mouseover="myVar='images/info_icon_on.png'"
ng-mouseout="myVar='images/info_icon_off.png'"
ng-click="doSomething()">
<img class="info-icon" ng-src="{{myVar}}" alt="Information" width="10" height="10">
</span>
答案 2 :(得分:0)
我也在学习Java,并希望有一种方法使用我知道的命令使该程序正常工作(扫描仪更高级)。
如Pshemo和Andreas所述,System.in缓冲区中仍然有一个“换行符”(ASCII 10)(假定仅输入了一个字符作为“ answer”)。
通过“读取”该字符将清空缓冲区,并在下次使用System.in.read()时,它将按预期方式输入一个条目。我添加了“ linFed”来清除它。
package BookExamples;public class GuessTheLetterGame {
public static void main(String[] args) throws java.io.IOException{ char answer; System.out.print("press a key and press ENTER:"); answer= (char) System.in.read(); char linFed; linFed= (char) System.in.read(); char guess; System.out.print("Have a guess and press ENTER: "); guess = (char) System.in.read(); if (guess == answer) System.out.println("**Right**"); }}
答案 3 :(得分:-1)
在你的代码中没有循环来继续猜测。这只是一次性交易。要继续猜测,您需要重复部分代码。
package bookExamples;
public class GuessTheLetterGame {
public static void main(String[] args) throws java.io.IOException{
char answer;
answer= 'A';
char guess = '\0';
Scanner scanner = new Scanner(System.in);
while(answer != guess) {
System.out.print("Have a guess and press ENTER: ");
guess = scanner.next().charAt(0);
System.out.println(guess);
}
System.out.println("**Right**");
}
如果你继续猜测,直到答案是正确的,你就不再需要if语句了。保持格式正确的唯一方法是向用户显示他们的猜测并开始换行。
注意:更改代码以使用扫描仪,并scanner.next()
一次获取一个字符。