11

我有一个疑问。

public static void main(String[] args) throws IOException{
  int number=1;
  System.out.println("M"+number+1);
}

输出: M11

但我想让它打印 M2 而不是 M11。我无法编号 ++,因为该变量涉及 for 循环,如果我这样做,它会给我不同的结果,并且无法使用另一个打印语句打印它,因为输出格式会发生变化。

请求您帮助我如何正确打印。

4

9 回答 9

19

尝试这个:

System.out.printf("M%d%n", number+1);

%n换行符在哪里

于 2012-11-18T19:44:29.447 回答
13

在总和周围添加一个括号,以强制sum首先发生。这样,您bracket的最高优先级将首先被评估,然后concatenation才会发生。

System.out.println("M"+(number+1));
于 2012-11-18T19:42:01.077 回答
5

它与java连接字符串的优先顺序有关,

基本上Java在说

  • "M"+number = "M1"
  • "M1"+1 = "M11"

您可以像使用数学一样重载优先级

"M"+(number+1)

这现在读

  • "M"+(number+1)= "M"+(1+1)= "M"+2="M2"
于 2012-11-18T19:49:38.093 回答
3

尝试

System.out.println("M"+(number+1));
于 2012-11-18T19:42:09.663 回答
2

尝试这个:

System.out.println("M"+(number+1));
于 2012-11-18T19:43:06.470 回答
2

一种将数据与不变量分开的更简洁的方法:

int number=1;
System.out.printf("M%d%n",number+1);
于 2012-11-18T19:46:50.300 回答
2
  System.out.println("M"+number+1);

java中的字符串连接以这种方式工作:

如果第一个操作数是字符串类型并且您使用+运算符,它将连接下一个操作数,结果将是一个字符串。

尝试

 System.out.println("M"+(number+1));

在这种情况下,由于()括号具有最高优先级,括号内的内容将首先被评估。然后将得到的 int 值与 String 文字连接起来,产生一个字符串“M2”

于 2012-11-18T19:46:59.880 回答
2

System.out.println("M"+number+1);

在这里,您在方法+中将其用作连接运算符println()

要使用+求和,你需要给它高优先级,你可以用括号覆盖它,如下所示:

System.out.println("M"+(number+1));

于 2012-11-18T19:47:33.043 回答
0

如果您+在字符串之后执行操作,则将其视为连接:

"d" + 1 + 1     // = d11 

而如果你反之亦然+,则视为加法:

1 + 1 + "d"     // = 2d 
于 2018-12-23T07:29:27.283 回答