从键盘格式化输入

 完成一个 java application应用程序,把已知字符串(在程序中赋初值或通过键盘输入) “a=3.2&b=20&c=1.1” 作为一元二次方程 ax2+bx+c=0 的a、b、c三个参数值的取值描述,并求解此方程的根。
主要思路是利用String类的index方法获得a,b,c在输入字符串中的位置,再利用substring截取,最后转换为double型。

import java.util.*;

public class sp131 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("输入格式为a=3.2&b=20&c=1.1\nPlease input:");
        String name = in.nextLine();

        //获取a所对应数字两边的=和&的索引,以截取数字
        int indexa1 = name.indexOf("=");
        int indexa2 = name.indexOf("&");

        //获取b,同上
        int indexb1 = name.indexOf("=",name.indexOf("=")+1);
        int indexb2 = name.indexOf("&",name.indexOf("&")+1);

        //获取c,同上
        int indexc1 = name.indexOf("=",name.indexOf("=",name.indexOf("=")+1)+1);
        int indexc2 = name.length();

        //通过index截取数字
        String a = name.substring(indexa1+1, indexa2);
        String b = name.substring(indexb1+1, indexb2);
        String c = name.substring(indexc1+1, indexc2);

        //截取的数字为字符串,将它们转换为double类型
        double a1 = Double.parseDouble(a);
        double b1 = Double.parseDouble(b);
        double c1 = Double.parseDouble(c);

        if((Math.pow(b1,2)-4*a1*c1)<0){          //Δ<0无解
            System.out.println("方程无解");
        }
        else{
            if((Math.pow(b1,2)-4*a1*c1)==0){     //Δ=0有唯一解
                double x= (-b1/(2*a1));
                System.out.println("方程有唯一解:" + x);
            }
            else{                                //Δ>0有两个不同解
                double x1= ((-b1+Math.sqrt(Math.pow(b1,2)-4*a1*c1))/(2*a1));
                double x2= ((-b1-Math.sqrt(Math.pow(b1,2)-4*a1*c1))/(2*a1));
                System.out.println("方程有两个解:" + x1+"和"+x2);
            }
        }
    }
}

结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Ramer42/article/details/83037584