Java 如何将两个变量从一个方法传递到另一个方法?

Java 如何将两个变量从一个方法传递到另一个方法?,java,methods,arguments,Java,Methods,Arguments,我现在陷入了一个似乎无法解决的问题 我需要通过此方法传递2个变量: public void neueRoute() { Scanner in = new Scanner(System.in); String bereich1 = "aAbBcCdDeEfFgG"; String bereich2 = "hHiIjJkKlLmMnNoO"; String start = ""; String ziel = ""; System.out.print

我现在陷入了一个似乎无法解决的问题

我需要通过此方法传递2个变量:

public void neueRoute() {
    Scanner in = new Scanner(System.in);

    String bereich1 = "aAbBcCdDeEfFgG";
    String bereich2 = "hHiIjJkKlLmMnNoO";
    String start = "";
    String ziel = "";

    System.out.println("Themenbereich 1: Bahn A - G: ");
    System.out.println("\nA\nB\nC\nD\nE\nF\nG\n");
    System.out.println("Themenbereich 2: Bahn H - O: ");
    System.out.println("\nH\nI\nJ\nK\nL\nM\nN\nO");

    while (bereich1.contains(""+start) && bereich2.contains(""+ziel)
           || bereich2.contains(""+start) && bereich1.contains(""+ziel) || start.matches(ziel)) {

            System.out.println("Geben Sie einen Startpunkt an: ");
            start = in.next();

            while (!start.matches("\\b[a-oA-O]\\b")) { 
                   System.out.println("Geben Sie einen korrekten Startpunkt an: ");
                   start = in.next();
            }

            System.out.println("Geben Sie einen Zielpunkt an: ");
            ziel = in.next();

            while (!start.matches("\\b[a-oA-O]\\b")) { 
                   System.out.println("Geben Sie einen korrekten Zielpunkt an: ");
                   start = in.next();

            }   
    }


    program(start, ziel);
}
在底部,我调用方法程序:

private void program(String start, String ziel) {
    // find connection from 'I' to 'O'
    connection = network.findConnection(start, ziel);

    // print the path
    System.out.println(connection.getPath());
    // print the distance
    System.out.println(connection.getTime());
}
我试图传递字符串变量start和ziel,并在findConnection中使用它们

我在使用Eclipse IDE时遇到错误:

Exception in thread "main" java.lang.IllegalArgumentException: graph must contain the end vertex
注意:findConnection需要字符串参数,start和ziel是。如果我将示例a和b作为findConnection中的参数,它将起作用


谢谢您的帮助。

很可能是网络。findConnection正在检查值,如果为空,则引发异常。 在调用私有方法之前检查字符串是否为空,如果为in.hasNext Scanner,则检查字符串是否为空

关于你的代码,以下是我的观察: 我认为你的循环应该是这样的,你有and和OR的混合体

while ((bereich1.contains(""+start) && bereich2.contains(""+ziel)) || (bereich2.contains(""+start) && bereich1.contains(""+ziel)) || start.matches(ziel)) { 
其次,我认为

System.out.println("Geben Sie einen Zielpunkt an: ");

ziel = in.next(); 
while (!start.matches("\\b[a-oA-O]\\b")) { 
System.out.println("Geben Sie einen korrekten Zielpunkt an: "); 
ziel = in.next(); //ziel not start
} 
我不明白的是你有一个外循环,而内循环应该是一个if


在调用程序字符串之前,字符串可以检查值是否为null或空

连接是否曾声明为类型?您需要显示findConnection的功能。它似乎不能接受可能来自neueRouteCan的空字符串。你能告诉我为什么传递的字符串是空的吗?我试着寻找答案,但似乎找不到答案。因为当我在neueRoute的底部打印start和ziel时,它将打印正确的值。@JoshuaDala这只是一个提示。除非您展示findConnection的功能,否则很难说为什么您会从该方法中获得IllegalArgumentException。您能详细说明答案吗?因为如果我在方法neueRoute的底部打印start和ziel,它将打印正确的值。但它不会作为参数传递给程序。更新了我的答案