println()里面的Java问号

时间:2011-11-09 19:49:48

标签: java

我正在尝试制作一个解决方程的程序,我希望以正确的方式显示答案,如果数字为负,则显示-x而不是+ -x, 例如, Eq1:4x-3而不是4x + -3,但是当它为正时显示4x + 3。我不能在引文中使用加号。 我想用? :运营商。 我试过这样的事情

System.out.println("Eq1: "+ ((a11>0) ? (+ "+" + (int)a11) : + (int)a11) +"*x1+");

此行应该打印负数(即它将是-2 * x1),如果它是正数,它应该显示+号并添加数字,但它给出了+ + + + +附近的错误

有什么想法?谢谢!

5 个答案:

答案 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

More

答案 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+");

它与您的代码相同,但没有语法错误。