Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从另一个java类更改变量的值?_Java_Variables - Fatal编程技术网

如何从另一个java类更改变量的值?

如何从另一个java类更改变量的值?,java,variables,Java,Variables,我是java新手,非常感谢您的帮助 我有几节课。我想将用户输入从GUI类传递到我的Basket类,在那里它将更新存储在变量中的值。下面是我目前拥有的,但它似乎没有更新变量 public class Basket { private int seatsBooked; public int getSeatsBooked() { return seatsBooked; } public void setSeatsBooked(int seatsBooke

我是java新手,非常感谢您的帮助

我有几节课。我想将用户输入从GUI类传递到我的Basket类,在那里它将更新存储在变量中的值。下面是我目前拥有的,但它似乎没有更新变量

public class Basket {
    private int seatsBooked;
    public int getSeatsBooked() {
        return seatsBooked;
    }
    public void setSeatsBooked(int seatsBooked) {
        this.seatsBooked = seatsBooked;
    }
}
一班-GUI班:我想把“座位”传给篮球班

Basket b;
b = new Basket();   
String seats = JOptionPane.showInputDialog("Enter the number of seats to book");
try {
    int currentValue = Integer.parseInt(seats);
    int newValue = currentValue;    
    b.setSeatsBooked(newValue);
    //some code emitted
}
第二个类-Basket类,我希望将“seats”传递到这个类中并存储在实例变量中

public class Basket {
    private int seatsBooked;
    public int getSeatsBooked() {
        return seatsBooked;
    }
    public void setSeatsBooked(int seatsBooked) {
        this.seatsBooked = seatsBooked;
    }
}
这是在另一个类中,我看到结果为0:

Basket b;
b = new Basket();
lblMovieSelection = new JLabel("You have booked:" + b.getSeatsBooked());

尝试将变量设为静态,例如:

public static int testInt = 0;
在另一个类中调用此函数的方式取决于您,您可以使用两个选项

//NOT CLASS NAME IS FOR YOUR ACTUAL CLASS NAME.
ClassName varName = new ClassName();
varname.testInt;

//OR YOU CAN USE
ClassName.testInt;

尝试将变量设为静态,例如:

public static int testInt = 0;
在另一个类中调用此函数的方式取决于您,您可以使用两个选项

//NOT CLASS NAME IS FOR YOUR ACTUAL CLASS NAME.
ClassName varName = new ClassName();
varname.testInt;

//OR YOU CAN USE
ClassName.testInt;

这就是错误行为的原因:

Basket b;
b = new Basket();

lblMovieSelection = new JLabel("You have booked:" + b.getSeatsBooked());

您正在创建一个新对象!因此,默认值为零,这就是错误行为的原因:

Basket b;
b = new Basket();

lblMovieSelection = new JLabel("You have booked:" + b.getSeatsBooked());

您正在创建一个新对象!因此,默认值为零,您需要传递已存储值的类对象。如果您创建一个类的新实例,您怎么能期望该对象将包含该值

在以下两种情况下

Basket b;
b = new Basket();   
String seats = JOptionPane.showInputDialog("Enter the number of seats to book");
try {
    int currentValue = Integer.parseInt(seats);
    int newValue = currentValue;    
    b.setSeatsBooked(newValue);
    //some code emitted
}

在两个块中,类
Basket
的对象
b
是否相同?答案是否定的。因此,当您从第二个代码块中新创建的类
Basket
的对象
b
调用
b.getSeatBooked()
时,您得到的值为零

解决这个问题有两种方法

  • 最好的解决方案是将类对象(作为参数)传递给第三个类,在这里调用
    getSeatBooked()
    方法
  • 示例:假设您的另一个类是
    X
    ,并且有一个名为
    method()
    的函数。然后您可以将
    Basket
    类对象作为参数传递给该函数,在该函数中您可以访问它以获取更新的值。代码可能如下所示

    class X{
        // other code
        public void method(Basket b){
            lblMovieSelection = new JLabel("You have booked:" + b.getSeatsBooked());
        }
    }
    
  • 如果要在所有类实例中共享变量
    seatsboorded
    ,可以将该变量声明为静态变量。(我想这不是你想要的)

  • 您需要传递已为其存储值的类对象。如果您创建一个类的新实例,您怎么能期望该对象将包含该值

    在以下两种情况下

    Basket b;
    b = new Basket();   
    String seats = JOptionPane.showInputDialog("Enter the number of seats to book");
    try {
        int currentValue = Integer.parseInt(seats);
        int newValue = currentValue;    
        b.setSeatsBooked(newValue);
        //some code emitted
    }
    

    在两个块中,类
    Basket
    的对象
    b
    是否相同?答案是否定的。因此,当您从第二个代码块中新创建的类
    Basket
    的对象
    b
    调用
    b.getSeatBooked()
    时,您得到的值为零

    解决这个问题有两种方法

  • 最好的解决方案是将类对象(作为参数)传递给第三个类,在这里调用
    getSeatBooked()
    方法
  • 示例:假设您的另一个类是
    X
    ,并且有一个名为
    method()
    的函数。然后您可以将
    Basket
    类对象作为参数传递给该函数,在该函数中您可以访问它以获取更新的值。代码可能如下所示

    class X{
        // other code
        public void method(Basket b){
            lblMovieSelection = new JLabel("You have booked:" + b.getSeatsBooked());
        }
    }
    
  • 如果要在所有类实例中共享变量
    seatsboorded
    ,可以将该变量声明为静态变量。(我想这不是你想要的)


  • 你确定没有更新该值吗?你正在使用的输入的输出结果是什么….???@WasiAhmad请查看我的更新代码,因为我正在尝试在另一个类中看到该变量,该变量显示为0。你确定没有更新该值吗?你正在使用的输入的输出结果是什么….???@WasiAhmad请查看我的更新代码,因为我试图在另一个类中看到该变量,该类显示为0。变量不必是静态的,以便传递给另一个对象,这是您将对我进行否决投票的部分。?他使用公共setter并将捕获的整数传递给该对象。这个答案是完全错误的。你可以避免使用公共设置器。这取决于他。我解释过。变量不必是静态的,才能传递给另一个对象。这是你要否决我的部分。他使用公共设置器,并将捕获的整数传递给那个对象。这个答案是完全错误的。你可以避免使用公开的二传手。这取决于他。我解释过。是的,我刚刚意识到。那么我该如何解决这个问题呢?对于第三个类,你需要将该值作为参数传递,,,你也可以将引用变量“b”传递给第三个类,特别是如果你要将它的属性/方法用于其他任何东西的话。是的,我刚刚意识到。那么我该如何解决这个问题呢?对于第三个类,你需要将这个值作为参数传递,,,你也可以将引用变量“b”传递给第三个类,特别是如果你要将它的属性/方法用于其他任何东西的话。是的,好的,我认为第一个解决方案更好。但是我一直在研究如何将变量传递给我的第三个类。你们有任何关于它如何工作的例子吗,因为我在网上找不到。是的,好的,我认为第一个解决方案更好。但是我坚持如何将变量传递给我的第三类。因为我在网上找不到它,所以你有它的工作原理的例子吗。