Java 如何在整个类中使用对象引用

Java 如何在整个类中使用对象引用,java,reference,Java,Reference,例如,在switch语句“case1”中,我声明了一个对象引用变量,这一切都很好,但如果我尝试在“case2”中使用,它会说引用变量无法解析 如何在所有情况下都使用它 编辑: 您在case语句中声明的变量是该语句的局部变量,因此,对了,它们不会出现在case语句之外。只需在switch()之前声明变量,所有人都可以看到它 编辑:这个例子是对下面Brian Roach的回应: 编译器抱怨:“bar无法解析为变量” 若要修复,请将bar声明移动到与foo声明相同的位置。您在case语句中声明的变量是

例如,在switch语句“case1”中,我声明了一个对象引用变量,这一切都很好,但如果我尝试在“case2”中使用,它会说引用变量无法解析

如何在所有情况下都使用它

编辑:


您在case语句中声明的变量是该语句的局部变量,因此,对了,它们不会出现在case语句之外。只需在switch()之前声明变量,所有人都可以看到它

编辑:这个例子是对下面Brian Roach的回应:

编译器抱怨:“bar无法解析为变量”


若要修复,请将bar声明移动到与foo声明相同的位置。

您在case语句中声明的变量是该语句的局部变量,因此,right-o,它们不会出现在该语句之外。只需在switch()之前声明变量,所有人都可以看到它

编辑:这个例子是对下面Brian Roach的回应:

编译器抱怨:“bar无法解析为变量”


若要修复,请将bar声明移动到与foo声明相同的位置。

您在case语句中声明的变量是该语句的局部变量,因此,right-o,它们不会出现在该语句之外。只需在switch()之前声明变量,所有人都可以看到它

编辑:这个例子是对下面Brian Roach的回应:

编译器抱怨:“bar无法解析为变量”


若要修复,请将bar声明移动到与foo声明相同的位置。

您在case语句中声明的变量是该语句的局部变量,因此,right-o,它们不会出现在该语句之外。只需在switch()之前声明变量,所有人都可以看到它

编辑:这个例子是对下面Brian Roach的回应:

编译器抱怨:“bar无法解析为变量”


若要修复,请将bar声明移动到与foo声明相同的位置。

您可以发布一些您尝试的代码吗?由于
switch
语句的工作方式,您所描述的在Java中显然是错误的。在
案例
中声明的任何变量对后面的所有案例都可见,因为案例只是标签,而
开关
是封闭块。请给出一个例子,说明你正在尝试做什么,以及哪些不起作用。后期编辑:你的问题实际上与切换无关。您已经在块(
else
)中声明了一个变量,这意味着它是唯一可以使用的地方。感谢您发布代码。我下面的回答是正确的。上面是Brian的帖子编辑。请注意,我同意你将每一个案件都放在括号内的做法,这使你的复杂案件更容易阅读——它们之间的界限是明确的。虽然Brian说没有必要将案例括在括号中是对的,但在我看来,这是更好的编码实践,供参考,它在许多组织中都得到了实施。你能发布一些你尝试过的代码吗?你所描述的在Java中显然是错误的,因为
switch
语句的工作方式。在
案例
中声明的任何变量对后面的所有案例都可见,因为案例只是标签,而
开关
是封闭块。请给出一个例子,说明你正在尝试做什么,以及哪些不起作用。后期编辑:你的问题实际上与切换无关。您已经在块(
else
)中声明了一个变量,这意味着它是唯一可以使用的地方。感谢您发布代码。我下面的回答是正确的。上面是Brian的帖子编辑。请注意,我同意你将每一个案件都放在括号内的做法,这使你的复杂案件更容易阅读——它们之间的界限是明确的。虽然Brian说没有必要将案例括在括号中是对的,但在我看来,这是更好的编码实践,供参考,它在许多组织中都得到了实施。你能发布一些你尝试过的代码吗?你所描述的在Java中显然是错误的,因为
switch
语句的工作方式。在
案例
中声明的任何变量对后面的所有案例都可见,因为案例只是标签,而
开关
是封闭块。请给出一个例子,说明你正在尝试做什么,以及哪些不起作用。后期编辑:你的问题实际上与切换无关。您已经在块(
else
)中声明了一个变量,这意味着它是唯一可以使用的地方。感谢您发布代码。我下面的回答是正确的。上面是Brian的帖子编辑。请注意,我同意你将每一个案件都放在括号内的做法,这使你的复杂案件更容易阅读——它们之间的界限是明确的。虽然Brian说没有必要将案例括在括号中是对的,但在我看来,这是更好的编码实践,供参考,它在许多组织中都得到了实施。你能发布一些你尝试过的代码吗?你所描述的在Java中显然是错误的,因为
switch
语句的工作方式。在
案例
中声明的任何变量对后面的所有案例都可见,因为案例只是标签,而
开关
是封闭块。请给出一个例子,说明你正在尝试做什么,以及哪些不起作用。后期编辑:你的问题实际上与切换无关。您已经在块(
else
)中声明了一个变量,这意味着它是唯一可以使用的地方。感谢您发布代码。我下面的回答是正确的。上面是Brian的帖子编辑。请注意,我同意你将每一个案件都放在括号内的做法,这使你的复杂案件更容易阅读——它们之间的界限是明确的。虽然Brian说没有必要用括号括起案例是对的,但在我看来,这是更好的编码实践,仅供参考,在许多组织中都是如此。在Java中,这是(令人恼火的)错误的。Java中的Case语句仅适用于la
switch(choice){ 
                case 1: {
                    if(HotelObj.getClassicRoomsAvailable() == 0 && HotelObj.getExecutiveRoomsAvailable() == 0){
                        System.out.println("Sorry, there are no available rooms");
                        break;
                    }else {
                        Scanner scanInput = new Scanner(System.in);
                        System.out.print("\nEnter desired room type: ");
                        System.out.print ("\nEnter \"Classic\" for a classic type room, price: 90$ for a day");
                        System.out.println("\nEnter \"Executive\" for a executive type room, price: 150$ for a day");
                        String roomChoice = scanInput.nextLine();

                        System.out.print("Enter your name: ");
                        String clientName = scanInput.nextLine();
                        System.out.print("Enter for how many days you'll stay:");
                        int stayingDays = scanInput.nextInt();

                        Client ClientObj = new Client(clientName, roomChoice, stayingDays);

                        Client.clientCount++;
                            if(roomChoice.equals("Classic")){
                                ClientObj.clientRoom = new Room("Classic");
                                ClientObj.setMoney(ClientObj.getMoney()- stayingDays * ClientObj.clientRoom.getPrice());
                                HotelObj.decClassicRooms(1);
                                HotelObj.addIncome(stayingDays*ClientObj.clientRoom.getPrice());
                            } else {
                                ClientObj.clientRoom = new Room("Executive");
                                ClientObj.setMoney(ClientObj.getMoney()-stayingDays * ClientObj.clientRoom.getPrice());
                                HotelObj.decExecutiveRooms(1);
                                HotelObj.addIncome(stayingDays*ClientObj.clientRoom.getPrice());
                            }                    
                    }
                    break;
                }

               case 2: {
                   System.out.println("Name: "+ClientObj.getName());
                   //Error "ClientObj cannot be resolved"
               }
            }
public void main(String[] args) {         
    int foo = 11;         
    switch (foo) {        
    case 1: {
        int bar = 12;
        System.out.println("1");
        break;
    }
    case 2: {
        System.out.println("2");
        System.out.println("bar: " + bar);
        break;
    }
    default: {
        System.out.println("default");
        break;
    }     
}