我对此有疑问。
public static void main(String[] args) throws IOException{
int number=1;
System.out.println("M"+number+1);
}
输出: M11
但我想把它打印成M2而不是M11。我无法对++进行编号,因为变量与for循环有关,如果我这样做会给我不同的结果,并且无法使用另一个print语句打印它,因为输出格式会发生变化。
请求您帮我正确打印。
答案 0 :(得分:14)
试试这个:
System.out.printf("M%d%n", number+1);
%n
是换行符
答案 1 :(得分:9)
在您的总和周围添加一个括号,以强制sum
首先发生。这样,首先评估优先级最高的bracket
,然后concatenation
进行评估。
System.out.println("M"+(number+1));
答案 2 :(得分:4)
它与java连接String的优先顺序有关,
基本上Java正在说
"M"+number = "M1"
"M1"+1 = "M11"
您可以像对数学一样重载优先级
"M"+(number+1)
现在读取
"M"+(number+1)
= "M"+(1+1)
= "M"+2
= "M2"
答案 3 :(得分:3)
尝试
System.out.println("M"+(number+1));
答案 4 :(得分:2)
试试这个:
System.out.println("M"+(number+1));
答案 5 :(得分:2)
从不变量中分离数据的更简洁方法:
int number=1;
System.out.printf("M%d%n",number+1);
答案 6 :(得分:2)
System.out.println("M"+number+1);
java中的字符串连接以这种方式工作:
如果第一个操作数是String类型并使用+
运算符,则它会合并下一个操作数,结果将是一个String。
尝试
System.out.println("M"+(number+1));
在这种情况下,因为()
paranthesis具有最高优先级,所以括号内的事物将首先被评估。然后,结果int值将与字符串文字连接,结果为字符串“M2”
答案 7 :(得分:2)
System.out.println("M"+number+1);
此处您正在使用+
作为println()
方法中的连接运算符。
要使用+
进行求和,您需要赋予它高优先级,您可以使用括号覆盖它,如下所示:
System.out.println("M"+(number+1));
答案 8 :(得分:-2)
如果在字符串后执行+
操作,则将其视为串联:
"d" + 1 + 1 // = d11
反之,+
反之亦然:
1 + 1 + "d" // = 2d