Java代码计算一元二次方程

1.0版本代码如下:
(该版本的计算并不完善,例如输入1,2,1它会提示你"该方程中的数据进行了开平方,所以不太准确",这是个意料之外的错误,以后再改,改版本仅供参考)

package calculate;
import java.util.Scanner;
class calculate_2 {
    public static void main(String[] args) {
        System.err.println("请大佬每输入一个数就按一次enter");
        System.out.println("请输入a,b,c的数值");
        Scanner Scanner1 = new Scanner(System.in);
        //System.out.println("请输入b的数值");
        Scanner Scanner2 = new Scanner(System.in);
        //System.out.println("请输入c的数值");
        Scanner Scanner3 = new Scanner(System.in);
        double a = Scanner1.nextDouble();
        double b = Scanner2.nextDouble();
        double c = Scanner3.nextDouble();
        double A = a;//后面判断方程是否有解时会用到
        double B = b;
        double C = c;
        double i, j, k;
        i = b * b / (4 * a * a);
        j = c / a;
        k = b / (2 * a);
        double d = i - j;
        d = Math.sqrt(d);
        String D = String.format("%.2f", d);//取小数点后两位
        String panduan = D.substring(1);
        //System.out.println("D的值是:"+D);
        String ling = ".00";//创建一个用来判断的字符串
        //System.out.println("被截取之后的字符串是:"+panduan);
        b = Double.parseDouble(D);
        double x, y;
        x = b - k;
        String X = String.format("%.2f", x);//X为根号下的数据并且将X的值保留小数点后两位
        y = -b - k;
        if (B * B - 4 * A * C < 0) {//该情况下没有接解
            System.out.println("你好好输入行不行?该方程无解");
        } else {
            if (B * B - 4 * A * C > 0) {//该情况下有两个解
                if (panduan != ling) {
                    System.err.println("该方程中的数据进行了开平方,所以不太准确");
                }
                System.out.println("该方程有两个解:");
                String Y = String.format("%.2f", y);//将Y的值保留小数点后两位
                String D1 = X.substring(X.length() - 2, X.length());//截取String类型的后两位
                String panduan2 = "00";
                if (
                        D1.equals(panduan2)
                ) {
                    String D2 = D.substring(0, D.length() - 3);
//                    D2为最后的X1的值
                    X = D2;

                    String DD = Y.substring(D.length() - 2, Y.length());//截取String类型的后两位
                    if (
                            DD.equals(panduan2)
                    ) {
                        String D3 = D.substring(0, D.length() - 3);
                        Y = D3;//如果正确,D3的值将会传给Y
                    } else {
                        Y = Y;
                    }
                } else {
                    System.out.println("该方程有两个解:" + "X1=" + X + ";" + "X2=" + Y);
                }
//                System.out.println("x1=" + X + "    ;   " + "x2=" + Y);
            } else {//该情况下b*b-4*a*c=0,方程只有一个解
                if (panduan != ling) {
                    System.out.println("该方程中的数据进行了开平方,所以不太准确");
                }
                String D1 = X.substring(X.length() - 2, X.length());//截取String类型的后两位
                String panduan2 = "00";
                if (
                        D1.equals(panduan2)
                ) {
                    String D2 = D.substring(0, D.length() - 3);
                    System.out.println("只有一个解:X1= " + D2);
                } else {
                    System.out.println("只有一个解:X1= " + D);
                }
            }
        }
    }
}

输出:
在这里插入图片描述

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名之辈无名之辈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值