2016-03-26 15 views
0

私はメソッド自体の中でメソッドを呼び出す変数の使い方を知りたいだけです。私はそれを呼び出す変数に2を追加するpublic void addTwoメソッドがある場合、どのように2を追加するコードでそれを呼び出す変数を使用するのですか?メソッド内のメソッドを呼び出す変数を使用するにはどうすればよいですか?

public void addTwo(){ 
    //add two to the variable that calls 
    //This is where i need help 
} 
public static void main(String[] args){ 
    int x = 3; 
    x.addTwo(); 
    S.O.P(x); 
} 

それはあなたがおそらくここで何をしたいのか5

+4

あなたは原始的でメソッドを呼び出す呼び出すことはできませんタイプ;参照型ではありません。 –

+2

その理由から、単純な答えは「あなたはありません」です。任意のコードを作り、それがなぜ機能しないのか不思議ではありません。 – EJP

答えて

0

を印刷し、このです:

public static int addTwo(int x){ 
    return x + 2; 
} 

public static void main(String[] args){ 
    int x = 3; 
    x = addTwo(x); 
    S.O.P(x); 
} 

それは、インスタンスのに属している場合にのみ、インスタンス(例えばx.addTwo())でメソッドを呼び出すことができますクラスにアクセスできます。 xは基本クラス(クラスではない)であるため、x.addTwo()を実行することはできません。

0

@ElliottFrischは、プリミティブデータ型のメソッドを呼び出すことはできないと述べています。あなたがしようとしているように見えるから、あなたは "addTwo"メソッドを取ってintを返す必要があります。

public static int addTwo(int n) { 
    return n + 2; 
} 

してから、変数x

int x = 1; 
x = addTwo(x); 
+0

"代わりに、プリミティブデータ型intとは対照的に、Intクラスを拡張することもできます。これを明確にすることはできますか? –

+0

@JeroenVannevelは無視する - 私はSwiftについて考えていた、答えを編集した、それを指摘してくれてありがとう –

1

に結果を代入しますが、この方向に行きたい理由は私はわからないが、私はあなたがそれを避けるためにお勧めします。

x.y()という表記法は、オブジェクトxのメソッドyを呼び出すために使用されます。xをintとして宣言すると、プリミティブ型になり、パーソナライズされたメソッドはありません。

public class StackOverflowInt{ 
    private int x; 

    public StackOverflowInt(int value) { 
    this.x = value; 
    } 

    public int addTwo(){ 
    return this.x+2; 
    } 
} 

して、あなたの結果を達成するために、このクラスを使用します:あなたは何ができるか

は内部で整数を埋め込むパーソナライズメソッドを持つ新しいクラスを作成することです

public static void main(String[] args) { 
    StackOverflowInt integer = new StackOverflowInt(3); 
    System.out.println(integer.addTwo()); 
} 

これは5を出力します

もう1つの代替実装は、次のとおりです。

public class StackOverflowInt{ 
private int x; 

public StackOverflowInt(int value) { 
    this.x = value; 
} 

public void addTwo(){ 
    this.x = this.x+2; 
} 

@Override 
public String toString(){ 
    return String.valueOf(x); 
} 
} 

、次いで:Javaのintで

public static void main(String[] args) { 
    StackOverflowInt integer = new StackOverflowInt(3); 
    integer.addTwo(); 
    System.out.println(integer); //prints 5 
    } 
0

がプリミティブ型ではなくオブジェクトです。だから、あなたはx.addTwo() を書き込むことはできませんおそらく次のクラスは、あなたに合う:

public class MyInt { 
    private int value; 

    public MyInt(int value) { 
     this.value = value; 
    } 

    public int getValue() { 
     return value; 
    } 

    public void setValue(int value) { 
     this.value = value; 
    } 

    public void addTwo() { 
     value += 2; 
    } 
} 

次のように続いて、あなたがそれを使用することができます。

x = new MyInt(3); 
x.addTwo(); 
System.out.println(x.getValue()); 
関連する問題