分别输入了一元二次方程的三个系数,怎样简单输出整个方程?

ZZZ5512536 2010-10-10 05:33:49
建立了一个方程类,对象是A,调用b和c 的值.
初学者,没办法 只有用这种效率低的做法了^...
if(A.getB()<0 && A.getC()<0) {
System.out.println(A.getA()+"x*x" + A.getB()+ "x"+A.getC()+"=0");
}
else if(A.getB()>0 && A.getC()>0) {
System.out.println(A.getA()+"x*x" +"+"+ A.getB()+ "x"+"+"+A.getC()+"=0");
}
else if(A.getB()>0 && A.getC()<0) {
System.out.println(A.getA()+"x*x" +"+"+ A.getB()+ "x"+A.getC()+"=0");
}
else {
System.out.println(A.getA()+"x*x" + A.getB()+ "x"+"+" + A.getC()+"=0");
}

有什么简单的方法输出正确的方程啊? 主要是系数是正数时 前面要有个 "+" 号
...全文
328 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
solosky772 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zzz5512536 的回复:]
引用 5 楼 solosky772 的回复:
System.out.println(String.format("%dx*x + %+dx + %+d = 0",
A.getA(), A.getB(), A.getC()));

经测试,这样也是额可以的。


这里面的 %+dx 输出只能输出为正的吗? 如果为负 前面还会有那个 + 号没?

另外再问个刚发现的小问题…
我在定……
[/Quote]

1.负数的时候前面有没有负号,我不说,你测试一下就知道了。
2.你是不是这样写的:

public class A{
private int disc; //#1
disc =(int) (Math.pow(b,2)-4*a*c); //#2
private int disc =(int) (Math.pow(b,2)-4*a*c); //#3
public void calc(){
.....
}
}

#1在类中定义了一个disc的私有成员变量,没有初始化没有错误;
#2这是一行代码,不能在定义成员变量的时候编写;
#3这样写是正确的,含义是在定义成员变量的时候就初始化;
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 solosky772 的回复:]
System.out.println(String.format("%dx*x + %+dx + %+d = 0",
A.getA(), A.getB(), A.getC()));

经测试,这样也是额可以的。
[/Quote]

这里面的 %+dx 输出只能输出为正的吗? 如果为负 前面还会有那个 + 号没?

另外再问个刚发现的小问题…
我在定义方程类里的δ时
private int disc =(int) (Math.pow(b,2)-4*a*c); 可以正常通过;

但将这个分开写就要报错了,这是为什么呢?
private int disc; //提示这行出错
disc =(int) (Math.pow(b,2)-4*a*c);
凉岑玉 2010-10-11
  • 打赏
  • 举报
回复
改一下方法的返回值··用switch case··
lijiemissfei 2010-10-11
  • 打赏
  • 举报
回复
就你那样可以了
solosky772 2010-10-11
  • 打赏
  • 举报
回复
System.out.println(String.format("%dx*x + %+dx + %+d = 0",
A.getA(), A.getB(), A.getC()));

经测试,这样也是额可以的。
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 solosky772 的回复:]
System.out.println(
A.getA()+"x*x" +
(A.getB()<0?"":"+")+ A.getB()+
"x"+
(A.getC()<0?"":"+")+A.getC()+
+"=0"
);

//上面是使用了三元运算符减少if语句,好像也可以使用String.format()方法来格式化,没有用过,就不贴了。
[/Quote]

谢谢了!


还有其他方法吗?
solosky772 2010-10-11
  • 打赏
  • 举报
回复
System.out.println(
A.getA()+"x*x" +
(A.getB()<0?"":"+")+ A.getB()+
"x"+
(A.getC()<0?"":"+")+A.getC()+
+"=0"
);

//上面是使用了三元运算符减少if语句,好像也可以使用String.format()方法来格式化,没有用过,就不贴了。
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
谢谢2L的支持……

怎么没人回答啊 。。
domonate 2010-10-10
  • 打赏
  • 举报
回复
给你顶一下吧,是不是用字符串的形式实现啊

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧