11

次の疑問があります。

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

出力: M11

しかし、M11ではなくM2で印刷したいと思います。変数がforループに関係しているため、number ++を実行できませんでした。これを実行すると、出力形式が変更されるため、別のprintステートメントを使用して出力できなかった場合に異なる結果が得られます。

正しく印刷する方法を教えてください。

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での文字列連結は、次のように機能します。

最初のオペランドがString型であり、+演算子を使用すると、次のオペランドが連結され、結果はStringになります。

試す

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

この場合、()paranthesisの優先順位が最も高いため、括弧内のものが最初に評価されます。次に、結果のint値は、文字列リテラルと連結され、文字列「M2」になります。

于 2012-11-18T19:46:59.880 に答える
2

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

ここ+では、メソッド内のItsとして連結演算子として使用してい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 に答える