这是我的计划......
import java.lang.Math;
class SquareRoot
{
public static void main(String args[])
{
try
{
System.out.println("Enter A Number To Find its Square Root");
System.out.flush();
double x = (double) System.in.read();
double y;
y = Math.sqrt(x);
System.out.println("Square Root of " + x + " is " + y);
}
catch (Exception e)
{
System.out.println("I/O Error! Humein Maaf Kar Do Bhaaya");
}
}
}
如果我输入75作为输入它显示.. 55.0的平方根是< 55的平方根>
在输入23时,它显示平方根为50.0。我哪里错了?编译没问题。
我正在使用DrJava IDE。 JDK 7u25编译器。 Windows 7 32位。
答案 0 :(得分:8)
System.in.read()
会返回一个字符。然后它的整数表示转换为double。
您可以使用BufferedReader
:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
double number = Double.parseDouble(s);
或Scanner
:
Scanner scanner = new Scanner(System.in);
double number = scanner.nextDouble();
答案 1 :(得分:4)
double x = (double) System.in.read();
不。我建议将其包装在Scanner
。
Scanner s = new Scanner(System.in);
double x = s.nextDouble();
String str = s.nextLine(); // <-- Just an example!
只需制作更好的代码!
记住
将import java.util.Scanner
放在页面顶部,否则Java会有点大惊小怪!
答案 2 :(得分:2)
问题在于,当您在获取用户输入时将其转换为double时,它会将输入中的第一个字符转换为其ascii值。 ('7'= 55,'2'= 50)
答案 3 :(得分:1)
使用以下:
Scanner s = new Scanner(System.in);
double x = s.nextDouble();