Java 如何将两个变量从一个方法传递到另一个方法?
我现在陷入了一个似乎无法解决的问题 我需要通过此方法传递2个变量: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
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,它将打印正确的值。但它不会作为参数传递给程序。更新了我的答案