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

标签 java reference

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

如何在每种情况下使用它?

编辑:

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"
               }
            }

最佳答案

您在 case 语句中声明的变量是该语句的本地变量,因此,正确的是,它们不会在该语句之外看到。只需在 switch() 之前(上方)声明您的变量,它就会对所有人可见。

编辑:此示例是对下面 Brian Roach 的回应:

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;
    }     
}

编译器提示:“bar 无法解析为变量”

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

关于java - 如何在整个类中使用对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622368/

相关文章:

java - Android:相同的代码行无法在单独的方法中工作

c++ - 无法从 'DerivedClass *' 转换为 'BaseClass *&'

java - 使用 Hibernate 在外键字段中插入空值

java - 关于 varargs 参数的困惑

java - 如何在 Android 9 上保持 UTF-8 的向后兼容性?

java - 从父类(super class)调用子类中的重写方法

javascript - Gmail 上下文小工具 - 不支持引用 JS 和 CSS?

java - 使用 or 运算符 java 的替代方法?

string - 不匹配的类型 : expected &str found String when assigning string

c++ - 从常量引用初始化非常量引用