Java计算ax^2+bx+c=0问题

注:一元二次方程为默认a!=0,此处并未声明为一元二次方程因此存在a=0的情况。

使用JDK:Java SE Development Kit 17.0.2;

运行环境:DOS

一、代码

package moment;
import java.util.Scanner;
public class moment1 {
	public static void main(String[] args) {		
		double a,b,c;
		while(true) {
			System.out.println("Please enter a:");		
			Scanner sc = new Scanner(System.in);
			a=sc.nextDouble();
			System.out.println("Please enter b:");
			Scanner sc1 = new Scanner(System.in);
			b=sc1.nextDouble();
			System.out.println("Please enter c:");
			Scanner sc2 = new Scanner(System.in);
			c=sc2.nextDouble();
			//获得三个值给a,b,c
				if(a==0&&b!=0&&c!=0) {					
					double x=-c/b;
					String A = String .format("%.2f",x);
					System.out.println("此一元二次方程的解为"+A);
					break;
					//a等于0时的情况
					}
				else if((a>0&&b==0&&c>0)||(a<0&&b==0&&c<0)||(a==0&&b==0&&c!=0)){
					System.out.println("此一元二次方程无解");
					break;
					//b等于0和a,b等于0时的情况
				}
				else if((a<0&&b==0&&c>0)||(a>0&&b==0&&c<0)) {
					double x1=Math.sqrt(-(4*a*c)/(2*a));
					double x2=-Math.sqrt(-(4*a*c)/(2*a));
					String B = String .format("%.2f",x1);
					String C = String .format("%.2f",x2);
					System.out.println("此一元二次方程的解为:"+B);
					System.out.println("此一元二次方程的解为"+C);
					break;
					//b等于0时的情况
				}
				else if(a!=0&&b!=0&&c==0) {
					double x1=-b+Math.sqrt(b*b)/(2*a);
					double x2=-b-Math.sqrt(b*b)/(2*a);
					String D = String .format("%.2f",x1);
					String E = String .format("%.2f",x2);
					System.out.println("此一元二次方程的解为:"+D);
					System.out.println("此一元二次方程的解为:"+E);
					break;
					//c等于0时的情况
				}
				else if((a==0&&c==0&&b==0)) {
					System.out.println("x为任意解");
					break;
					//a,b,c都等于0时的情况
				}
				else if((a!=0&&b==0&&c==0)||(a==0&&b!=0&&c==0)) {
					System.out.println("此一元二次方程的解为:0");
					break;
					//b,c等于0和a,c等于0时的情况
				}
				else{
					if(b*b-4*a*c>=0) {
					double x1=-b+Math.sqrt(b*b-4*a*c)/(2*a);
					double x2=-b-Math.sqrt(b*b-4*a*c)/(2*a);
					String F = String .format("%.2f",x1);
					String G = String .format("%.2f",x2);
						if(b*b-4*a*c==0) {
							System.out.println("此一元二次方程的解为:"+F);
							//Δ等于0时的情况
						}
						else {
							System.out.println("此一元二次方程的解为:"+F);
							System.out.println("此一元二次方程的解为:"+G);
							//Δ大于0时的情况
						}
					//Δ大于等于0时的情况
					}
					else {
						double x1=-b/(2*a);
						double xa=Math.sqrt(-(b*b-4*a*c))/(2*a);
						String H = String .format("%.2f",x1);
						String I = String .format("%.2f",xa);
						System.out.println("此一元二次方程的解为:"+H+"+"+I+"i");
						System.out.println("此一元二次方程的解为:"+H+"-"+I+"i");
						//德尔塔小于0时的情况
						}
					break;
					//a,b,c都不等于0为标准一元二次方程时的情况
					}
				}
		}
		
}	

 二、运行结果

 END

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值