我正在尝试制作一个解决方程的程序,我希望以正确的方式显示答案,如果数字为负,则显示-x而不是+ -x, 例如, Eq1:4x-3而不是4x + -3,但是当它为正时显示4x + 3。我不能在引文中使用加号。 我想用? :运营商。 我试过这样的事情
System.out.println("Eq1: "+ ((a11>0) ? (+ "+" + (int)a11) : + (int)a11) +"*x1+");
此行应该打印负数(即它将是-2 * x1),如果它是正数,它应该显示+号并添加数字,但它给出了+ + + + +附近的错误
有什么想法?谢谢!
答案 0 :(得分:0)
你试过System.out.printf()吗?这是一个链接。printf
答案 1 :(得分:0)
我会使变量始终为正,如此
"Eq1: " + (a11 >= 0 ? " + " + (int)a11 : " - " + (int)(-a11)) + " * x1 +"
答案 2 :(得分:0)
您需要格式化字符串
String.format("Ed1: %+d x %+d", v1,v2);
哪里
%+d
- 是格式表达式,代表“雇用显示带符号的数字”
v1和v2是数字值。
执行示例
v1 v2 result
1 1 Ed1: +1 x +1
2 0 Ed1: +2 x +0
3 -2 Ed1: +1 x -2
-3 2 Ed1: -3 x +2
-2 -1 Ed1: -2 x -1
-1 -4 Ed1: -1 x -4
答案 3 :(得分:0)
老实说,三元运算符的可读性已经低于简单的if / else语句。但是,如果它用于连接(使用+运算符)符号“+”,则它变得非常难以理解。
这个怎么样:
String s = Integer.toString(a11);
if (a11 > 0) {
s = "+" + s;
}
System.out.println("Eq1: 4x" + s);
答案 4 :(得分:-1)
我真的不明白你想做什么,但试试这个:
System.out.println("Eq1: "+ ((a11>0) ? ("+" + (int)a11) : + (int)a11) +"*x1+");
它与您的代码相同,但没有语法错误。