我的这个程序为什么到最后不能循环了,谢谢
import java.io.*;
public class Computer
{
public static void main(String [] args) throws IOException
{
InputStreamReader str=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(str);
String a,check;
do
{
System.out.print("请输入第一个数:"+"\t");
a=br.readLine();
int num1=Integer.parseInt(a);
System.out.print("请输入希望的运算方法(1表示加法,2表示减法,3表示乘法,4表示除法):"+"\t");
a=br.readLine();
int operations=Integer.parseInt(a);
System.out.print("请输入第二个数:"+"\t");
a=br.readLine();
int num2=Integer.parseInt(a);
switch(operations)
{
case 1: 
System.out.println(num1+"+"+num2+"="+(num1+num2));
break;
case 2:
System.out.println(num1+"-"+num2+"="+(num1-num2));
break;
case 3:
System.out.println(num1+"*"+num2+"="+(num1*num2));
break;
case 4:
System.out.println(num1+"/"+num2+"="+(num1/num2));
break;
default:
System.out.println("您输入的运算方法无效,所以不能计算!!!");
break;

}
System.out.println("是否继续计算?(Y/N)"+"\t");
check=br.readLine();
//char a1=Char.parseChar(check); 
}while (check=="Y" || check=="y");
}
} 如果我这样作的话,会有错误,这是为什么呢?
import java.io.*;
public class Computer
{
        public static void main(String [] args) throws IOException
        {
                InputStreamReader str=new InputStreamReader(System.in);
                BufferedReader br=new BufferedReader(str);
                String a;
                char check;
                do
                {
                        System.out.print("请输入第一个数:"+"\t");
                        a=br.readLine();
                        int num1=Integer.parseInt(a);
                        System.out.print("请输入希望的运算方法(1表示加法,2表示减法,3表示乘法,4表示除法):"+"\t");
                        a=br.readLine();
                        int operations=Integer.parseInt(a);
                        System.out.print("请输入第二个数:"+"\t");
                        a=br.readLine();
                        int num2=Integer.parseInt(a);
                        switch(operations)
                        {
                                case 1: 
                                        System.out.println(num1+"+"+num2+"="+(num1+num2));
                                        break;
                                case 2:
                                        System.out.println(num1+"-"+num2+"="+(num1-num2));
                                        break;
                                case 3:
                                        System.out.println(num1+"*"+num2+"="+(num1*num2));
                                        break;
                                case 4:
                                        System.out.println(num1+"/"+num2+"="+(num1/num2));
                                        break;
                                default:
                                        System.out.println("您输入的运算方法无效,所以不能计算!!!");
                                        break;                        }
                        System.out.println("是否继续计算?(Y/N)"+"\t");
                       // check=br.readLine();
                        check=(char)System.in.read();
                        //char a1=Char.parseChar(check); 
                }while (check=='Y' || check=='y');
        }
}

解决方案 »

  1.   

    这是System.in.read();后,再readLine()它会去读System.in.read();这一行。                do
                    {                 System.out.print("please input first number:"+"\t");
                            a=br.readLine();
                            if(a.equals(""))a=br.readLine();
                            int num1=Integer.parseInt(a);
    你可以在这里测试(在输入Y/N处多输入几个字符。如果你只输入一个,那它readLine()时就只能读到个空串。当然在转换时会报错。
                            System.out.println("continue?(Y/N)"+"\t");
                           // check=br.readLine();
                            check=(char)System.in.read();
                            System.out.println(check+" br:"+br.readLine());
                            //char a1=Char.parseChar(check); 
                    }while (check=='Y' || check=='y');
      

  2.   

    是不是循环时 没用 (a=br.readLine())!=null