java字符比较不起作用
我必须写一个程序制作一个二维数组并打印出来。然后我应该引导一个“角色”通过这个迷宫。所以我想让它向上/向下/向左/向右移动。用户可以输入u/u/d/d/l/l/r/r
我输入了,如果其中一个没有输入,它会给我一个错误。但是,如果输入正确,它仍然会给我一个错误
char move;
System.out.println("Which way do you want to move? U/D/L/R");
move=stdin.nextLine().charAt(0);
while(move != 'u' || move !='U') {
while( move != 'd' || move != 'D'){
while( move != 'l' || move != 'L'){
while(move != 'r' || move != 'R'){
System.out.println("Invalid input. Try again.");
move = stdin.nextLine().charAt(0);
}}}}
# 1 楼答案
语法有点奇怪(为什么是“while”而不是“if”?…为什么是嵌套的?)。。。但基本上,您希望使用“&&;'不是“| |”
在英语中:如果输入不是A且输入不是B,则为错误。如果你做了“或”,那么它将永远是错误的,因为那些“不”中的一个总是正确的
编辑: 容易犯错误-对于风格/清晰度,我建议:
# 2 楼答案
您也可以尝试以下方法(以不同的方式执行相同的操作)
与其他字段声明一起:
在方法内部:
它的可读性更高,如果您希望修改允许的键集,则只需要很少的更改
# 3 楼答案
试试这个:
您当前的代码没有意义。如果我键入R(例如),这将使程序进入无限循环。因为,上面while上的所有条件都将计算为true。因此,没有到达要求另一个输入的指令(
stdin.nextLine()
)