gpt4 book ai didi

JAVA:使用 if-cond 调用相同的方法,而不执行进一步的(旧)代码

转载 作者:行者123 更新时间:2023-12-01 11:45:57 24 4
gpt4 key购买 nike

我认为我想做的是回调。

我有一个提示询问用户是否要改变狼。如果用户按下"is",则用户可以输入两位数字。如果这些与我的模式不匹配,我想再次调用该方法。到目前为止,一切顺利。

但是当我输入错误的模式后,又出现提示,然后当我输入正确的模式后,仍然报错,这次是把之前错误的模式传递给了parse的try catch。

这是我不明白的一点。在失败的模式中,我再次调用该方法,因此代码应该退出我的方法,不存储任何值并再次重新输入,对吧?那么为什么它试图从之前的方法调用中解析错误的模式。

它应该尝试解析新输入的值(正确的模式),但坚持使用旧值。

非常感谢你们的帮助。提前致谢。

public class Wolf{

Scanner scannerInstance;
int[] position;

public Wolf (){
scannerInstance = new Scanner(System.in);
position = {2,2};

}

public static void main(String[] args){
Wolf w = new Wolf();
w.changeWolf();
}


public Wolf changeWolf(Wolf w) {
out("Change the wolf? (Yes/No)");

switch (scannerInstance.nextLine()) {
case "NO":
break;
case "YES":
changeCrds(w);
changeWolf(w);
break;
default:
out("Invalid.");
changeWorld(w);
break;
}
return w;
}


public void changeCrds(Wolf w){
String input = getNext();
String[] inputField;

if (!input.matches("\\d+,\\d+")) {
out("Invalid. REGEX error");
changeCrds(w);
}

inputF = input.split(",");

int w = 0; int t = 0;

try {
w = Integer.parseInt(inputF[0]);
t = Integer.parseInt(inputF[1]);
} catch (Exception e) {
out("Invalid. PARSe error");
changeCrds(w);
}

int[0] = w;
int[1] = t;
}
}

最佳答案

您的方法应该在错误检测后退出。

if (!input.matches("\\d+,\\d+")) {          
out("Invalid. REGEX error");
changeCrds(w);
return; // add this
}

关于JAVA:使用 if-cond 调用相同的方法,而不执行进一步的(旧)代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com