当我完成某种方法时,我希望能够回到其中的某个点,有点像检查点。
运行代码时,有两种选择:写1或2。如果输入1,我只是希望它继续其他操作,但是如果输入2,我希望它检查布尔值是否为true。 。如果该布尔值为true,则再次要求选择1或2。如果布尔值为false,则继续输入更多代码。
boolean temp = true;
我希望它回到这里
Scanner input = new Scanner(System.in);
int choice = input.nextLine;
if(choice==1)
System.out.println("Continue code");
else if(choice==2) {
if(temp) {
在这里,我希望它重新开始
}
else {
System.out.println("Continue code");
}
}
我可以想象可能有一个函数可以执行此操作,但是我不知道它可能是什么。这是针对具有更复杂内容的实际程序的,其中while
或do while
循环并不理想,但是如果是唯一的方法,那么我也很高兴被告知如何工作。 / p>
答案 0 :(得分:2)
您还可以通过使用递归来做到这一点,在方法中编写递归代码,并在需要循环时调用该方法
public void test(Scanner input, boolean temp) {
int choice = input.nextInt();
if (choice == 1)
System.out.println("Continue code");
else if (choice == 2) {
if (temp) {
test(input, temp);
} else {
System.out.println("Continue code");
}
}
}
执行代码
public class DemoMain2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
test(sc, true);
}
public static void test(Scanner input, boolean temp) {
int choice = input.nextInt();
if (choice == 1)
System.out.println("Continue code");
else if (choice == 2) {
if (temp) {
System.out.println("calling test method again, temp value is : "+temp);
test(input, temp);
// you can update temp value as required
} else {
System.out.println("Continue code");
}
}
}
}
输入和输出
2
calling test method again, temp value is : true
2
calling test method again, temp value is : true
2
calling test method again, temp value is : true
2
calling test method again, temp value is : true
1
Continue code
由于温度始终为true
,输入为2
,因此从if
块中调用测试方法,如果输入为1
,则它将执行else块
答案 1 :(得分:1)
与某些其他语言不同,Java没有“跳转”语句(例如“ goto”)。 您必须使用循环,然后才能使用带有标签的“ continue”或“ break”语句来引用接下来应执行的语句。
boolean temp = true;
label:
while(true) {
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
if(choice==1) {
System.out.println("Continue code");
break;
}
else if(choice==2) {
if(temp) {
continue label;
}
else {
System.out.println("Continue code");
break;
}
}
}se if(choice==2) {
if(temp) {
continue label;
}
else {
System.out.println("Continue code");
}
}
请注意,这不是一个好习惯 在循环条件中使用一个不错的语句会更好:
boolean temp = true;
Scanner input = new Scanner(System.in);
int choice;
do{
choice = input.nextInt();
if(choice==1) {
System.out.println("Continue code");
temp=false;
}
else if(choice==2) {
if(!temp){
System.out.println("Continue code");
temp=false;
}
}
}
while(choice==2 && temp);
另一个选择是递归调用,但是我不建议使用该解决方案,因为它不必要地分配了大量内存并扩展了调用堆栈。