Java 调用方法以从开关返回不同的int
我试图调用一个方法,并根据输入,将该值返回到另一个类中的开关。所以,如果我在数组中选择“1”元素,我会将返回的reply作为“4”返回到我的另一个类中,并让它运行switch“4” 在另一个类中,我将开关“4”设置为另一个方法。但是,我一直从方法中获取返回的int值“1”,因为它一直在调用该方法(开关“1”)。这很有意义,因为它是数组中的“1”元素,它应该运行开关“1”,但我认为通过设置“reply=4”,它会将int“4”返回到我的另一个类中,从而调用开关“4” 我如何让我的方法返回我想要的值,这样我就可以把它放入我的开关中 这是我的第一节课,我在这里打电话:Java 调用方法以从开关返回不同的int,java,methods,switch-statement,Java,Methods,Switch Statement,我试图调用一个方法,并根据输入,将该值返回到另一个类中的开关。所以,如果我在数组中选择“1”元素,我会将返回的reply作为“4”返回到我的另一个类中,并让它运行switch“4” 在另一个类中,我将开关“4”设置为另一个方法。但是,我一直从方法中获取返回的int值“1”,因为它一直在调用该方法(开关“1”)。这很有意义,因为它是数组中的“1”元素,它应该运行开关“1”,但我认为通过设置“reply=4”,它会将int“4”返回到我的另一个类中,从而调用开关“4” 我如何让我的方法返回我想要的值
package bunnyhunt;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Messages {
//Objects
public Rooms roomCall = new Rooms();
//Instance Variables
public static boolean gameOver = false;
public static int roomNum;
public static int reply;
boolean visitedOtherRoom = false;
//Constructors
//Methods
public void start() {
//while loop
while (gameOver == false) {
//do-while loop
do {
String[] parkEntrance = {"Spring Meadow", "Aeryn's Overlook", "Garden Gate"};
reply = JOptionPane.showOptionDialog(null, "You're at the Park Entrance! What do you want to do?", "Bunny Adventure", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, parkEntrance, parkEntrance[0]);
switch (reply) {
case 0:
System.out.println("oh man...Spring");
visitedOtherRoom = true;
roomCall.springMeadow();
break;
case 1:
System.out.println("oh man...Aeryn");
visitedOtherRoom = true;
roomCall.aerynsOverlook();
break;
case 2:
System.out.println("oh man...Garden");
visitedOtherRoom = true;
roomCall.gardenGate();
break;
default:
System.out.println("error");
}
} while (visitedOtherRoom == false);
switch (reply) {
case 0:
System.out.println("second 0!!!");
visitedOtherRoom = true;
roomCall.parkEntrance();
break;
case 1:
visitedOtherRoom = true;
System.out.println("yes man!");
roomCall.aerynsOverlook();
break;
case 2:
visitedOtherRoom = true;
roomCall.gardenGate();
break;
case 3:
visitedOtherRoom = true;
roomCall.peacefulPond();
break;
case 4:
visitedOtherRoom = true;
roomCall.readingNook();
break;
default:
System.out.println("default");
}
}
JOptionPane.showMessageDialog(null,
"Game Over!!!");
}
}
我的第二个地方,我称之为居住的地方:
package bunnyhunt;
import javax.swing.JOptionPane;
public class Rooms {
public static int reply;
public int springMeadow() {
String[] springMeadow = {"Park Entrance", "Reading Nook", "Search"};
Messages.reply = JOptionPane.showOptionDialog(null, "You're in the Spring Meadow! What do you want to do?", "Spring Meadow", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, springMeadow, springMeadow[0]);
switch (reply) {
case 0:
reply = 0;
break;
case 1:
reply = 4;
break;
case 2:
JOptionPane.showMessageDialog(null,
"You searched!");
break;
default:
System.out.println("error");
}
return reply;
}
public int aerynsOverlook() {
String[] aerynsOverlook = {"Park Entrance", "Peaceful Pond", "Search"};
Messages.reply = JOptionPane.showOptionDialog(null, "You're in Aeryn's Overlook! What do you want to do?", "Aeryn's Overlook", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, aerynsOverlook, aerynsOverlook[0]);
return reply;
}
public int gardenGate() {
String[] gardenGate = {"Park Entrance", "Rose Gardent", "Butterfly Garden", "Flowering Forest"};
return reply;
}
public int readingNook() {
String[] readingNook = {"Spring Meadow", "Search"};
Messages.reply = JOptionPane.showOptionDialog(null, "You're in the Reading Nook! What do you want to do?", "Reading Nook", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, readingNook, readingNook[0]);
return reply;
}
public int parkEntrance() {
String[] parkEntrance = {"Spring Meadow", "Aeryn's Overlook", "Search"};
Messages.reply = JOptionPane.showOptionDialog(null, "You're in the Park Entrance! What do you want to do?", "Park Entrance", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, parkEntrance, parkEntrance[0]);
return reply;
}
public int peacefulPond() {
String[] peacefulPond = {"Raven's Tower", "Aeryn's Overlook", "Search"};
Messages.reply = JOptionPane.showOptionDialog(null, "You're in the Peaceful Pond! What do you want to do?", "Peaceful Pond", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, peacefulPond, peacefulPond[0]);
return reply;
}
}
您没有从
start()
方法返回reply
值,因为此方法无效,并且内部的switch
语句不返回任何内容,尽管它们包含对适当方法(如int-aerynsOverlook())的调用。您应该像这样修改
start`方法:
public int start() {
...
switch (reply) {
case 0:
System.out.println("oh man...Spring");
visitedOtherRoom = true;
return roomCall.springMeadow();
...
其次,我看不出您是如何调用
start()
方法来获取其返回值并在第二个开关中使用它的。您的消息
类与房间没有任何连接
返回回复
变量的代码在哪里?@GiorgosAltanis确实有!很抱歉,它只是在一些注释掉的代码之后才出现在底部。在一个类中声明的变量(reply
)与在另一个类中声明的变量不同,也就是说,您没有使用从springMeadow
返回的值-可能这是有效的reply=roomCall.springMeadow()代码>,其他情况也一样我确实有!,它位于一些注释掉的代码的底部。谢谢你的提示。请更新你的代码,并向我们展示你是如何使用First的值调用第二个开关的。我添加了这两个类,所以所有的信息都在那里。我想我的一个问题可能是我正在进行的do-while循环,它会把所有东西都扔掉。这似乎不是问题的解决方案,更重要的是返回值应该分配给reply
,它在第二个开关语句中使用是的,我已经更新了我的答案,谢谢!代码还有很多其他问题。。。