0

我正在尝试制作一个执行二次公式的计算器。

目前,如果我的结果是小数,它会返回 NaN。(编辑:已解决)

最好我希望结果采用简化的激进形式(即 √(99) = 3√(11) )。

我将如何实现这一目标?

这就是我到目前为止所拥有的。

// Do the math
private double mathCalcPlus(double varA,double varB,double varC) {
    return ((-varB + Math.sqrt(varB * varB - 4 * varA * varC)) / 2 * varA);

}

private double mathCalcMinus(double varA,double varB,double varC) {
    return ((-varB - Math.sqrt(varB * varB - 4 * varA * varC)) / 2 * varA);

}

任何帮助将不胜感激。

4

2 回答 2

1

这很好用!但是,我决定添加激进符号的顶部栏只是为了好玩:D

 import java.util.Scanner;

public class Radical {

public static void main(String[] args) {

    System.out.print("Enter the unsimplified radical: ");
    Scanner scan = new Scanner(System.in);
    int input = scan.nextInt();

    recurse(input);

}

public static void recurse(int x) {

    System.out.println("                         ______");
    System.out.println("Attempting to simplify -/" + x);

    int a = 0;
    int b = 0;
    int count = 0;

    for (int i = 1; i < x; i++) {
        if ((i * (x/i)) == x) {
            //System.out.println(i + "<i rest>" + (x/i));
            a = i;
            b = x/i;
            if (Math.sqrt(a)%1==0) {
                if (a != 1) {
                System.out.println("                      ______");
                System.out.println("                   " + (int)Math.sqrt(a) + "-/" + b);
                count = 1;
                }
            }
        }
    }

    if (count>0) {
        recurse(b);
    } else if (count==0) {
        System.out.println("                  ______");
        System.out.println("Cannot simplify -/" + x);
    }

}

}
于 2013-02-18T23:51:15.093 回答
0

就简化部首而言,这可能会有所帮助。给它一个未简化的部首(比如 850),它应该返回正确的答案(5-/34)。它还尝试递归地简化根号中剩余的内容,以防需要再次分解。

这写得很快,所以我确信我错过了一些边缘情况,这些情况会影响计算,但我希望它至少有一点帮助。祝你好运!

import java.util.Scanner;

public class Radical {

public static void main(String[] args) {

    System.out.print("Enter the unsimplified radical: ");
    Scanner scan = new Scanner(System.in);
    int input = scan.nextInt();

    recurse(input);

}

public static void recurse(int x) {

    System.out.println("Attempting to simplify -/" + x);

    int a = 0;
    int b = 0;
    int count = 0;

    for (int i = 1; i < x; i++) {
        if ((i * (x/i)) == x) {
            //System.out.println(i + "<i rest>" + (x/i));
            a = i;
            b = x/i;
            if (Math.sqrt(a)%1==0) {
                if (a != 1) {
                System.out.println((int)Math.sqrt(a) + "-/" + b);
                count = 1;
                }
            }
        }
    }

    if (count>0) {
        recurse(b);
    } else if (count==0) {
        System.out.println("Cannot simplify -/" + x);
    }

}

}
于 2012-04-04T18:59:02.747 回答