簡體   English   中英

簡單的Java程序奇怪的輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM