我有一个疑问。
public static void main(String[] args) throws IOException{
int number=1;
System.out.println("M"+number+1);
}
输出: M11
但我想让它打印 M2 而不是 M11。我无法编号 ++,因为该变量涉及 for 循环,如果我这样做,它会给我不同的结果,并且无法使用另一个打印语句打印它,因为输出格式会发生变化。
请求您帮助我如何正确打印。
尝试这个:
System.out.printf("M%d%n", number+1);
%n
换行符在哪里
在总和周围添加一个括号,以强制sum
首先发生。这样,您bracket
的最高优先级将首先被评估,然后concatenation
才会发生。
System.out.println("M"+(number+1));
它与java连接字符串的优先顺序有关,
基本上Java在说
"M"+number = "M1"
"M1"+1 = "M11"
您可以像使用数学一样重载优先级
"M"+(number+1)
这现在读
"M"+(number+1)
= "M"+(1+1)
= "M"+2
="M2"
尝试
System.out.println("M"+(number+1));
尝试这个:
System.out.println("M"+(number+1));
一种将数据与不变量分开的更简洁的方法:
int number=1;
System.out.printf("M%d%n",number+1);
System.out.println("M"+number+1);
java中的字符串连接以这种方式工作:
如果第一个操作数是字符串类型并且您使用+
运算符,它将连接下一个操作数,结果将是一个字符串。
尝试
System.out.println("M"+(number+1));
在这种情况下,由于()
括号具有最高优先级,括号内的内容将首先被评估。然后将得到的 int 值与 String 文字连接起来,产生一个字符串“M2”
System.out.println("M"+number+1);
在这里,您在方法+
中将其用作连接运算符println()
。
要使用+
求和,你需要给它高优先级,你可以用括号覆盖它,如下所示:
System.out.println("M"+(number+1));
如果您+
在字符串之后执行操作,则将其视为连接:
"d" + 1 + 1 // = d11
而如果你反之亦然+
,则视为加法:
1 + 1 + "d" // = 2d