-3

別のクラス内のメソッドからクラスにいくつかの整数を呼び出そうとしています

public class Variables
{
    public void vary()
    {
        int DSpr
    }
}

public class BattleCalc
{
    public static void main(String[] args)
    {
        Variables v = new Variables();
        v.vary();
        Scanner spr = new Scanner(System.in);
        DSpr = Integer.parseInt(spr.nextLine()); //This line here
    }
}

これはこれまでの私のコードですが、DSpr = Integer.parseInt... では、Eclipse で「DSpr を解決できません」というエラーが表示されます。Variables から DSpr を呼び出さないのはなぜですか?

4

7 に答える 7

0

はい上記のコードでエラーが発生するはずです。これが私の解決策です。vary()で変数値を変更したいと思います。ただし、BattleCalcで変更された値を使用していないため、これの使用法はわかりません。したがって、ゲッターとサーターを使用できる整数変数を取得して設定しますが、ここでは、理解しやすいようにコードに最小限の変更を加えます(したがって、ここではゲッターとセッターを使用していませんが、理想的な方法です)

public class Variables {
    public int DSpr;

    public void vary() {
        // Change the value of DSpr
        DSpr = 10;
    }
 }

 public class BattleCalc {

    public static void main(String[] args) {
            Variables v = new Variables();
            v.vary();
            Scanner spr = new Scanner(System.in);
            v.DSpr = Integer.parseInt(spr.nextLine()); //This line here
    }
}
于 2012-12-28T03:46:38.660 に答える
0

これを試してください: 別のクラスの変数にアクセスするには、クラス変数として宣言する必要があります。

あなたのクラス変数で:

       public class Variables{
           int DSpr;

           public void vary(){
               //do assignment here or operation, if you want to create a method
               DSpr = 0;
           }
       }

次に、メインクラスで呼び出します。

于 2012-12-27T06:12:28.467 に答える
0

int DSprメソッド内でローカルに宣言されているvary()ため、そのメソッドの外部ではアクセスできません。囲んでいるクラスであってもVariables

別のクラスの変数にアクセスするには、インスタンス フィールドとして定義する必要があります。(またはクラス変数/静的変数)

public class Variables
{
    public int DSpr;
    // OR
    // public static int DSpr;
    public void vary()
    {

    }
}

これで、BattleCalcクラスでは次のようにアクセスできます。

Variables v = new Variables();
v.DSpr = Integer.parseInt(spr.nextLine());
// OR
// Variables.DSpr = Integer.parseInt(spr.nextLine());
于 2012-12-27T06:12:34.907 に答える
0

「別のクラス内のメソッドからクラスにいくつかの整数を呼び出す」は意味がありません。メソッド内の変数は、そのメソッドに対してのみローカルです

あなたがやりたいことはこのようなものだと思います

public class Variables
{
...
   public int DSpr;
}
...
v.DSpr = Integer.parseInt(spr.nextLine());

つまり、DSpr をVariables クラスのパブリック メンバー変数にします。

代わりに、それを変数にして、クラス外のユーザーが使用できるように setter-getter メソッドを記述することをお勧めします。private

于 2012-12-27T06:12:38.963 に答える
0

ここで、DSpr変数のスコープはこのメソッドのみに限定されます。

public void vary()
{
    int DSpr
}

そのため、他の場所にはアクセスできません。

他の場所で使用している場合は、次のように再宣言する必要があります。

int DSpr = Integer.parseInt(spr.nextLine());
于 2012-12-27T06:12:53.690 に答える
0

まったく別のクラスから DSpr に値を割り当てたいとします。DSpr を Variable クラスのメンバ変数として宣言し、そのクラスで setter を呼び出して割り当てる必要があります。

あなたのコードはこのようになります。

 public class Variables
{
 private int DSpr;
 public void setDSPR(int DSpr)
 {
    this.DSpr=DSpr;
 }

}

public class BattleCalc
{
public static void main(String[] args)
{
    Variables v = new Variables();
    Scanner spr = new Scanner(System.in);
    try {
        v.setDSPT(Integer.parseInt(spr.nextLine())); //This line here 
    } catch(NumberFormatException ex) {
        System.out.print("Invalid Input.!")
    }
}
}
于 2012-12-27T06:14:06.370 に答える
0

これを試して..

import java.io.*;
import java.util.*;

class Variables
{
    public void vary()
    {
        int DSpr; 
    }
}

public class BattleCalc
{
    public static void main(String[] args)
    {
        Variables v = new Variables();
        v.vary();
        Scanner spr = new Scanner(System.in);
        int DSpr = Integer.parseInt(spr.nextLine()); //This line here
    }
}
于 2012-12-27T06:15:47.007 に答える