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