-2

次のプログラムは、数値の二乗を計算することになっています (前の質問とは別のプログラムです)。前のプログラムは、スキャナーを使用しようとして、これで bufferedReader を使用していたので、これを実行してみました。たとえば、数値として 2 を入力すると、その数値の 2 乗値として 1.0 が出力されます。どんな助けでも大歓迎です!なんらかの理由で各行を 4 回空けない限り、最初の画面を通過できません。

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    System.out.println("enter number");
    Scanner in=new Scanner(System.in);
    System.out.println("the sqare of that number  is "+sqrt(in.nextInt()));
  }

  static double sqrt(double x){
    double result;
    double i=0;
    if(x<0)
      result=-1;
    else{
      while (true){
        if((i*i)>x)
          break;
        i++;
      }
      i=i-1;
      result= (i * i);
      result= (i * i);
    }
    return result;
  }
}
4

2 に答える 2

2

なぜ戻ってきたのresultですか?i変数は - ループの最後に平方根を保持します。whileを戻してみてくださいi。次に、その最初のifステートメントは単純に次のようになります。

if (x < 0)
    return -1;

そして完全に取り除くことができますresult


ここであなたの目標が何であるかを完全には理解していません。あなたのwhile-loop は平方根を計算しますx- そのポイントは何ですか? だけではないのはなぜreturn x*xですか?sqrt実際、(かなり名前が悪い)メソッドさえ必要ありません。

System.out.print("Enter a number: ");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println("The sqare of that number  is " + (n*n));
in.close();
于 2013-03-06T22:07:47.313 に答える
0

whileループがあなたに欲しいもののように見えますif ( i > x) break;。次に、whileループの後でiから1を引くと、結果は正しくなります。これにより、xと等しくなります。result = i * iつまり、 i == xなので、はxの2乗です。

于 2013-03-06T22:20:16.963 に答える