输入特殊值时如何从头开始执行程序

时间:2019-03-07 17:50:06

标签: java

最近我正在执行一个代码,该代码的构造之一是如果我输入一个特殊值,程序将转到第5步(跳过几行),然后回到第1步。

public static void doall(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter VAL. -1 to end:");
    int val, a, b, c, count = 0;
    val = input.nextInt();
    PrintWriter output=new PrintWriter("Sum.txt");
    while (val != -1) {
        System.out.println("Enter a,b,c:");
        a = input.nextInt();
        b = input.nextInt();
        c = input.nextInt();
        int max, facto, even;
        max = findSum(a, b, c, output);
        output.println("The three original integers are " + a + " " + b + " " + c + " \n"
                + max + " is the sum");
        even = howmanyeven(max);
        output.println("there is/are "+even+ " even number(s)\n");
        while (a == 99) {

        }
    }
}

在while(a == 99)之间应该放置什么,所以如果我输入99,它将跳过findsum方法和evennumber方法,并返回到要求我输入a,b,c的开头。所有的答案表示赞赏。

2 个答案:

答案 0 :(得分:0)

在扫描仪中使用nextint()可能会引起问题。 尝试使用nexline()并将其转换为int。 因此,如果您想全部与',' 在字符串上使用split。 例如,如果您可以在不同的行中输入数字

System.out.Print("enter a: ");
  Int a = Int.Parse(input.nextLine());
  System.out.Print("enter b: ");
  Int b = Int.Parse(input.nextLine()); 
  System.out.Print("enter c: ");
  Int c = Int.Parse(input.nextLine());

答案 1 :(得分:0)

您需要先将整数变量初始化为0,因为它们在本地范围内,并且默认情况下不会初始化为0。 我看到您可能在此行尝试这样做:

int val, a, b, c, count = 0;

但是,在这种情况下,只有count会取值为0,这样就不能在声明变量时初始化变量。

可能的是:

int val, a, b, c, count;
val = a = b = c = 0;

然后您可以执行以下操作:

do {
    System.out.println("Enter a,b,c:");
    a = input.nextInt();
    b = input.nextInt();
    c = input.nextInt();
} while(a == 99);

<rest of code here>

希望获得帮助。

已编辑:请确保还要为变量val分配另一个值,否则循环将永远持续下去。