2016-10-01 9 views
-2

は、このコードを考える:なぜ2の代わりに1を出力しますか?どのように改善できますか?

public class Test { 

    public void add(int x){ 
    x++; 
    } 

    public static void main(String args[]){ 
    Test t = new Test(); 
    int a = 1; 
    t.add(a); 
    System.out.println(a); 
    } 
} 

は、私はちょうど私が私が間違ってこのメソッドを呼び出すと思う2の代わりの1をプリントアウトしたいです。 理由を理解できたら助かりますか?

+0

結果を返さないと、返されるはずです。x ++; ** –

答えて

1

javaは値渡しです。つまり、変数がシリアル化され、その値がメソッドに送信されたことを意味します。

2を印刷するには、メソッドが増分後の値を返すようにする必要があります。

1

あなたのメソッドはvoidと宣言され、何も返されません。変数は、のメソッドを呼び出すときに常に使用されます。を追加します。

それはあなたの目的のために、次のようになります。

public int add(int x){ 
    return x++; 
} 
1

あり、あなたのコード内のエラーの多くはあり、あなたが適切でJavaを勉強しなければなりません。これは単項演算子を理解していないことを示しています。これは厳密にはJavaに関係していません。

は、しかし可能な解決策の一つは、(多くがあります)、以下のようにコードを変更することです:

public class Test { 

    public int add(int x){ 
    return ++x; 
    } 

    public static void main(String args[]){ 
    Test t = new Test(); 
    int a = 1; 
    a = t.add(a); 
    System.out.println(a); 
    } 

} 

ここでも、研究正しくJavaのいずれかの運動をしようとか、SOに投稿する前に。 次回は、新しい質問を投稿する前にhow to askを確認してください。

関連する問題