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

时间:2017-07-07 15:28:03

标签: java methods arguments

我目前遇到的问题似乎无法解决。

我需要从这个方法传递2个变量:

Element

在底部我调用方法程序():

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

我试图通过String变量start和ziel并在findConnection()中使用它们

我收到错误(我正在使用Eclipse IDE):

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

注意:findConnection()需要String参数,start和ziel是。如果我举起例如" a"和" b"作为findConnection()中的参数,它可以工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

很可能network.findConnection正在检查值并在空时抛出异常。 在调用私有方法之前检查字符串是否为空,如果是in.hasNext()(扫描程序)

至于你的代码,这些是我的观察: 我认为你的循环应该是这样的,你有ANDs和ORs的混合

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?!!!

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