import java.util.Scanner;
public class CheckPassFail {
static char tr;
public static void main(String[] args){
do{
Scanner x = new Scanner(System.in);
double mark;
System.out.println("Enter a random number :");
mark = x.nextDouble();
double g = mark%2;
if(g==0)
System.out.println("BREAK EVEN");
else
System.out.println("PRETTY ODD");
System.out.println("You want to try another number?\nY = YES and N = NO");
tr = x.next().charAt(0);
}
while(tr == 'Y');
}
}
答案 0 :(得分:3)
第一个:添加一个toUpperCase()来删除小写字符(因此y的解释方式与Y相同。
tr = x.next().toUpperCase().charAt(0);
第二个:你说要循环直到有N.为此只需要替换
while(tr == 'Y');
与
while(tr != 'N');
除此之外,你的代码似乎应该做它应该做的事情。我测试了它,它应该工作。
答案 1 :(得分:2)
您可以尝试这样做:
Scanner in = new Scanner(System.in); //Instantiate outside of loop.
String str = ""; //Define and initialize before the loop as well to avoid a null pointer exception.
do {
str = in.next();
} while (str.startsWith("Y"));
此外,您应该在循环外实例化Scanner对象。这样,您不必每次迭代都不必要地重新实例化一个全新的实例。
答案 2 :(得分:1)
你不需要使用tr变量
while(x.next().equals("Y"));
答案 3 :(得分:1)
您可以使用while(tr != 'N');
代替while(tr == 'Y');
。