//如果李三不还钱,则老汉将一直使出五连鞭,直到李三说还钱为止
//化繁为简
//不停的问还钱吗?
//使用char answer 接受,定义一个Scanner对象
//在do while的while判断如果是y就不再循环
Scanner answerScanner = new Scanner(System.in);
do{
System.out.println("老韩使出了五连鞭");
System.out.println("李三你还钱吗? y/n");
char answer = answerScanner.next().charAt(0);
System.out.println("他的回答是:"+answer);
}while(answer != 'y');
这样直接声明变量和赋值answer就会报错
但是先声明answer就不会报错
Scanner answerScanner = new Scanner(System.in);
char answer = ' ';
do{
System.out.println("老韩使出了五连鞭");
System.out.println("李三你还钱吗? y/n");
answer = answerScanner.next().charAt(0);
System.out.println("他的回答是:"+answer);
}while(answer != 'y');
因为你的 answer 是在 {} 里面定义的,作用域在里面
while 条件表达式在 {} 外面,所以不认识
Scanner answerScanner = new Scanner(System.in);
while (true){
System.out.println("老韩使出了五连鞭");
System.out.println("李三你还钱吗? y/n");
char answer = answerScanner.next().charAt(0);
System.out.println("他的回答是:"+answer);
if (answer == 'y') break;
}
可以放在一起,问题是你是在 do-while 循环里定义的char类型变量,
do-while 循环的判断条件的作用域 是 在 外层,do-while循环内部定义的变量,它的判断条件是识别不到的
这个报错是因为作用域的问题,声明和赋值是可以一起的
用单引号表示字符字面量:'a' '1'.
char ch=1 ≠ char ch='1',用char定义的是字符,1是字符代码中1指代的字符,而'1',被单引号括起来表示字符而不是一个整数。