[英]Simple Java Program Strange Output
這是我的程序
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位。
System.in.read()
返回一個字符。 然后將其整數表示轉換為雙精度。
您可以使用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();
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會引起大驚小怪!
問題在於,當您在獲取用戶輸入時將其轉換為double時,它將把輸入中的第一個字符轉換為其ascii值。 (“ 7” = 55,“ 2” = 50)
用法如下:
Scanner s = new Scanner(System.in);
double x = s.nextDouble();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.