我希望这段代码继续运行,只要用户在提示时不断输入"Y"或"y",任何其他输入都应该退出程序。就像我现在的代码一样,无论输入什么,它都只运行一次。我该如何解决这个问题?
这是我的代码:
import java.util.Scanner;
public class zigzag {
public static void main(String[] args) {
Scanner myScanner, sc;
myScanner = new Scanner(System. in );
while (true) {
System.out.print("Enter an integer between 3 and 33: ");
int nStars = myScanner.nextInt();
if (nStars > 33 || nStars < 3) {
System.out.println("Sorry, this input is out of the accepted range");
} else {
for (int i = 0; i < nStars; i++) {
System.out.print("*");
}
System.out.println(" ");
}
for (int j = 0; j < nStars - 2; j++) {
System.out.print(" ");
for (int k = 0; k <= j - 1; k++) {
System.out.print(" ");
}
System.out.println("*");
}
for (int g = 0; g < nStars; g++) {
System.out.print("*");
}
System.out.println(" ");
System.out.print("Enter 'Y' or 'y' to go again: ");
char ch = myScanner.next().charAt(0);
if (ch != 'y' || ch != 'Y') {
break;
}
}
}
}
你想要
if(ch!='y' && ch!='Y'){
不
if(ch!='y' || ch!='Y'){
if (ch!='y' || ch!='Y')
将永远是真的。
改为将||
更改为&&
,使其如下所示:
if (ch!='y' && ch!='Y')
if
条件是错误的 - 它将始终计算为true
。由于一个角色不能同时y
和Y
,因此它将始终"不等于y
或不等于Y
"。
相反,您需要一个条件来检查字符是否不等于y
且不等于Y
:
if( ch!='y' && ch!='Y') {
break;
}