0

二次方程式を解くためのコードを作成しようとしましたが、特定の数式用に作成することに成功しました。ユーザー入力によって変数を提供して、ソリューションを出力する方法はありaますbc?プログラムはコマンドプロンプトでの実行も拒否しますが、Eclipseで実行できます。何が問題なのですか?

ここにあります。

public class Equationsolver {

    public static void main(String[] args) {
    double a, b, c;
    a = 2;
    b = 6;
    c = 4;

    double disc = Math.pow(b,2) - 4*a*c;
    double soln1 = (-b + Math.sqrt(disc)) / (2*a) ;
    double soln2 = (-b - Math.sqrt(disc)) / (2*a);
    if (disc >= 0) {
        System.out.println("soln1 = " + soln1);
        System.out.println("soln2 = " + soln2);
    }else{
        System.out.println("equation has no real roots");
    }

    }

}
4

2 に答える 2

5

ユーザー入力を取得する1つの可能性は、パラメーターを使用することString [] argsです。には、のString [] argsように実行したときにプログラムに渡される値が含まれますjava -jar program.jar arg1 arg2 arg3

あなたの場合、ユーザーがプログラムに3つの引数を渡すかどうかを確認し、渡す場合はそれらの値を変数に割り当てる必要があります。

これが役立つかもしれない少しのコードです。私は検証を追加しなかったので、ユーザー入力を確実にサニタイズするためにさらに検証が必要になることに注意してください。

public class Equationsolver {

    public static void main(String[] args) {
    double a, b, c;
    a = Double.parseDouble(args[0]); //Here it will get the first argument pass to the program
    b = Double.parseDouble(args[1]); 
    c = Double.parseDouble(args[2]);

    double disc = Math.pow(b,2) - 4*a*c;
    double soln1 = (-b + Math.sqrt(disc)) / (2*a) ;
    double soln2 = (-b - Math.sqrt(disc)) / (2*a);
    if (disc >= 0) {
        System.out.println("soln1 = " + soln1);
        System.out.println("soln2 = " + soln2);
    }else{
        System.out.println("equation has no real roots");
    }

    }

}

a b編集:あなたはおそらくあなたが今そしてcあなたが考えていたものではないかもしれないという事実に適応するためにあなたのコードを変更する必要があるでしょう。

于 2013-03-21T17:35:25.630 に答える
3

次の方法でも、ユーザーから動的入力を取得できます

Scanner in = new Scanner(System.in);
double a = in.nextDouble();
double b = in.nextDouble();
double c = in.nextDouble();
于 2013-03-21T18:17:13.997 に答える