我陷入了我的这种困境之中,我很乐意接受任何建议。所以这就是:
我目前正在使用一种方法,在方法的开头部分为某个变量分配一个特定的值。在该方法的过程中,该变量被外部组件用作参数,该外部组件基本上返回结果代码。在其中一个结果代码中,我必须更改前面提到的变量的值,并使用新值重复整个过程。这个概念如下,但我尽可能地简化了它:
public void myMethod (String args[]) {
String server;
server = "some value";
switch (someExternalOperation(server)) {
case 1:
//process....
break;
case 2:
server = "new value";
//repeat myMethod using new value of server String variable
break;
}
}
public int someExternalOperation (String str) {
//after several operation
return 1; //example purposes
}
顺便说一句,我已经检查过并研究了goto和其他替代方案。我可能忽略了一些结果,最后在这里问。任何帮助将非常感激。谢谢。
答案 0 :(得分:3)
一个简单的选择是使用server
参数进行私有重载 - 然后您可以递归调用它:
public void myMethod(String args[]) {
myMethod(args, "some value");
}
private void myMethod(String[] args, String server) {
switch (someExternalOperation(server)) {
case 1:
// process....
break;
case 2:
myMethod(args, "new value");
break;
}
}
当然,你需要确保不会无限递归。
另一种选择是在你的方法中有一个循环:
public void myMethod (String args[]) {
String server = "some value";
while (true) { // Or ideally a different condition...
switch (someExternalOperation(server)) {
case 1:
// process....
// Done! Exit the method...
return;
case 2:
server = "new value";
// We'll now continue to the next iteration of the loop
break;
default:
// ?
}
}
}
答案 1 :(得分:0)
我想办法解决问题。谢谢大家阅读。我只是简单地使用外部操作并检查它是否会返回案例2.
public void myMethod (String args[]) {
String server;
server = "some value";
if (someExternalOperation(server) == 2)
server = "new value";
switch (someExternalOperation(server)) {
case 1:
//process....
break;
}
}
public int someExternalOperation (String str) {
//after several operation
return 1; //example purposes
}
无论如何,谢谢你的帮助。