1

これは私のプログラムです...

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 コンパイラ。ウィンドウズ7 32ビット。

4

4 に答える 4

8

System.in.read()1 文字を返します。次に、その整数表現が 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();
于 2013-08-08T15:14:01.053 に答える
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 が大騒ぎになります!

于 2013-08-08T15:15:32.807 に答える
2

問題は、ユーザー入力を取得するときに double としてキャストすると、入力の最初の文字が ASCII 値に変換されることです。('7' = 55、'2' = 50)

于 2013-08-08T15:14:29.223 に答える
1

使用は次のとおりです。

Scanner s = new Scanner(System.in);
double x = s.nextDouble();
于 2013-08-08T15:16:58.413 に答える