【问题标题】:Java System.out.println() help. Operator trouble?Java System.out.println() 帮助。运营商麻烦?
【发布时间】:2014-10-14 07:14:45
【问题描述】:

谁能告诉我他们认为是什么输出?老实说,我不明白我为什么错了。

int a = 9; 
int b = 3; 
int c = 4; 

System.out.println((a+b) + c + " = " + a + b + c); 
System.out.println(a + b + c + " = " + a + (b + c)); 

我认为输出将是 124 = 934 和 934 = 97。 Jcreator 说它是 16 = 934 和 16 = 97。有人可以解释一下吗?

【问题讨论】:

  • 使用描述性的标题和标签。你的问题显然是+,而不是System.out.println,以及“帮助”。 Please help :3" 部分标题没有添加任何信息。您可以使用标签来指定您正在谈论的编程语言,这会更有帮助。
  • 对不起,我第一次使用这个,所以我不熟悉。

标签: java console output


【解决方案1】:

让我们看看:

  System.out.println((a+b) + c + " = " + a + b + c); 

我们应该从从左到右执行

  (a + b) + c - the result is int so far and it's 16

但是,当我们添加" = " 时,结果变为String 并且将是String,因为:

  (a+b) + c + " = " // String equals to "16 == "

现在我们添加到String

  (a+b) + c + " = " + a         is "16 = 9"  (note a is treated as a String)
  (a+b) + c + " = " + a + b     is "16 = 93" (note a, b are treated as String)
  (a+b) + c + " = " + a + b + c is "16 = 934" (note a, b, c are treated as String)

当有

  System.out.println(a + b + c + " = " + a + (b + c)); 

我们应该先执行 (b + c) 那是int: 7 然后从左到右继续

  a + b + c is int == 16
  a + b + c + " = " becomes String == "16 = "
  a + b + c + " = " + a is String == "16 = 9"
  a + b + c + " = " + a + (b + c) is String == "16 = 97" // (b+c) was computed before

【讨论】:

  • 非常感谢,从来没有这样考虑过,这绝对是有道理的。非常感谢
【解决方案2】:

按照你的结构方式,你可能不会得到想要的结果。

主要是从左到右执行。

请参阅下面的修改版本..注意在几个地方添加了一个空字符串以停止进行数值计算并改为字符串连接。

System.out.println((a+b) + "" + c + " = " + a + b + c); 
System.out.println(a + "" + b + "" + c + " = " + a + (b + c)); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多