我编了个求一元二次方程的程序,要求用户输入Y或y时继续求下一个方程的解,输入N或n时终止程序,问题是用户输入y时会出入回车,怎么跳过回车啊?
在C中直接写scanf(" %c", &ch); 在%c前面加个空格 就OK了,小弟刚学JAva,请诸位指教
import java.util.*;  //Scanner在java.util包中
import java.io.*;class FangCheng
{
public static void main(String[] args) throws Exception
{
double a, b, c;
double delta;
double x1, x2;
char ch;
Reader read = new Reader();
Scanner scan = new Scanner(System.in); do
{
System.out.println("请输入一元二次方程的三个系数:");
System.out.print("a = ");
a = scan.nextDouble(); System.out.print("b = ");
b = scan.nextDouble(); System.out.print("c = ");
c = scan.nextDouble(); delta = b*b - 4*a*c; if (delta > 0)
{
x1 = (-b + Math.sqrt(delta)) / (2*a);
x2 = (-b - Math.sqrt(delta)) / (2*a);

System.out.printf("有两个解 x1 = %f, x2 = %f\n", x1, x2);
}
else if (0 == delta)
{
x1 = -b / (2*a);
System.out.printf("有一个解 x1 = x2 = %f\n", x1);
}
else
{
System.out.printf("无实数解!\n");
} System.out.printf("您想继续么(Y/N): ");
ch = (char)read.read();  //这个语句编译时会出错,请问该用哪个类中的哪个方法啊?
}
while ('y'==ch || 'Y'==ch);
}
}

解决方案 »

  1.   

    可以和ASCII码比较一下,进行判断
      

  2.   


    public static String f(String s)
    {
    return s.replaceAll("[\\s+\r\n]","");
    }正则,替换所有回车(\r),换行(\n)与空格(\\s+) 
      

  3.   

    把Reader read=new Reade();
    这句去掉,然后再将ch = (char)read.read();  改成ch=(char)System.in.read();就行了
      

  4.   

    改3个地方就可以了:
    //这里没有不一定非要用字符型
    //既然输入默认是字符串就用字符串好了
    1.Char ch; 改为 String ch
    //scan.next()把回车当做结束标志,不会放入ch中
    //所以就不用担心回车问题
    2.ch = (char)read.read(); 改为 ch = scan.next();
    //注意用字符串比较时要用equals()方法,这样比较的是内容
    //如果用==的话比较的是地址
    3.while ('y'==ch || 'Y'==ch); 改为 while (ch.equals("y") || ch.equals("Y")); 看的出楼主是刚从C语言转过来
    程序有明显的C语言风格
    希望楼主早是转型成功
    加油!!