Java 调用方法以从开关返回不同的int

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” 我如何让我的方法返回我想要的值

我试图调用一个方法,并根据输入,将该值返回到另一个类中的开关。所以,如果我在数组中选择“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
,它在第二个开关语句中使用是的,我已经更新了我的答案,谢谢!代码还有很多其他问题。。。