char类型声明变量和赋值不可以一起吗?

//如果李三不还钱,则老汉将一直使出五连鞭,直到李三说还钱为止
        //化繁为简
        //不停的问还钱吗?
        //使用char answer 接受,定义一个Scanner对象
        //do whilewhile判断如果是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就会报错

img

但是先声明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循环内部定义的变量,它的判断条件是识别不到的

这个报错是因为作用域的问题,声明和赋值是可以一起的