-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

试试这个:为了访问另一个类的变量,它必须被声明为类变量。

在你的类变量中:

       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 DSprvary()方法中本地声明,因此不能在该方法之外访问。即使在它的封闭类中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 类的公共成员变量

建议您改为将其设为private变量,并为类外的用户编写 setter-getter 方法以使用它。

于 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 回答
0

是的,您应该在上面的代码中遇到错误,这是我的解决方案,我假设您想更改变量()中的变量值。但我不确定它的用法,因为您没有使用 BattleCalc 中的更改值。所以获取并设置整数变量,您可以使用 getter 和 sertter,但在这里我将对您的代码进行最少的修改以使其易于理解(所以我在这里不使用 getter 和 setter,尽管它是理想的做法)

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 回答