Java - 如果满足条件则继续

时间:2015-09-29 01:11:13

标签: java

很抱歉,如果代码看起来有点乱。这是我第一次发帖,并且我不确定如何在时间限制下为网站设置格式。

我在这里很有约束力。我现在已经试图解决这个问题很长时间了,但似乎无法解决这个问题。我是Java的新手,所以如果代码有点乱,乱,或者它的作用有点太长,请不要介意。我的问题在于前几行:

"扫描仪输入=新扫描仪(System.in);"

我能够在输入高于或低于0/99的数字的情况下使if语句正常工作,但是如果输入这两者之间的数字,则没有任何反应。我在我的教科书(Java编程综合第10版简介)中搜索过,似乎无法确定问题所在。有没有办法让程序继续超过"如果"声明和涉及" input2"?

的代码行

提前致谢!

package lab03;

import java.util.Scanner;

public class Lab03 {
    public static void main(String[] args) {
     Scanner input = new Scanner(System.in);
     System.out.println("Please enter an integer between 0-99: ");
     int input1 = input.nextInt();

       if (input1 < 0 || input1 > 99) 
       System.out.println(" Outside range. Please enter an integer between  0-99: ");
       input1 = input.nextInt();
       if (input1 < 0 || input1 > 99) {
        System.out.println("Outside range. Program ending.");
        System.exit(0);

       System.out.println("Next, please enter another integer between 0-99: "); 
       int input2 = input.nextInt();

       if (input2 < 0 || input2 > 99) 
       System.out.println(" Outside range. Please enter an integer between 0-99:         `enter code here`");
       input2 = input.nextInt();
       if (input2 < 0 || input2 > 99) {
        System.out.println("Outside range. Program ending.");
        System.exit(0);

5 个答案:

答案 0 :(得分:1)

我会将它们置于while(scanner.hasNextInt())循环中,然后如果符合条件,则调用continue,它将返回到while循环的开头。

答案 1 :(得分:0)

问题是由于您致电System.exit(),因此无法访问这些语句。 if语句执行它们下面的下一行或大括号内的所有内容。正如您所看到的那样,您有一个开放式支撑,但实际上并未发布支撑关闭的代码。这意味着下一行下面的所有内容都将执行,包括System.exit()

if (input1 < 0 || input1 > 99) {

您当前的程序可以简化为

public static void main(String args[]) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter an integer between 0-99: ");

    int input1 = input.nextInt();
    if (input1 < 0 || input1 > 99) {
        System.out.println(" Outside range. Please enter an integer between  0-99: ");
    }

    input1 = input.nextInt();
    if (input1 < 0 || input1 > 99) {
        System.out.println("Outside range. Program ending.");
        System.exit(0);

        // everything below this will never execute
    }
}

答案 2 :(得分:0)

我认为你缺少大括号,它们定义了你的第一个if语句所导致的范围。你可能意味着像这样的东西

   if (input1 < 0 || input1 > 99) {
       System.out.println(" Outside range. Please enter an integer between  0-99: ");
       input1 = input.nextInt();
       if (input1 < 0 || input1 > 99) {
           System.out.println("Outside range. Program ending.");
           System.exit(0);
       }
   }

但实际发生的是该程序正在等待第二次尝试输入input1

答案 3 :(得分:0)

基本上,您已将“持续”状态包裹在“失败”状态if阻止......

if (input1 < 0 || input1 > 99) {
    System.out.println("Outside range. Program ending.");
    System.exit(0);

    // This is included within the failed block
    // but will never execute because of the previous statement
    System.out.println("Next, please enter another integer between 0-99: ");
    int input2 = input.nextInt();

    if (input2 < 0 || input2 > 99) {
        System.out.println(" Outside range. Please enter an integer between 0-99:         `enter code here`");
    }
    input2 = input.nextInt();
    if (input2 < 0 || input2 > 99) {
        System.out.println("Outside range. Program ending.");
        System.exit(0);
    }

}

else条件“无法”满足时,您应该执行if条件

if (input1 < 0 || input1 > 99) {
    System.out.println("Outside range. Program ending.");
    System.exit(0);
} else {
    // This is included within the failed block
    // but will never execute because of the previous statement
    System.out.println("Next, please enter another integer between 0-99: ");
    int input2 = input.nextInt();

    if (input2 < 0 || input2 > 99) {
        System.out.println(" Outside range. Please enter an integer between 0-99:         `enter code here`");
    }
    input2 = input.nextInt();
    if (input2 < 0 || input2 > 99) {
        System.out.println("Outside range. Program ending.");
        System.exit(0);
    }

}

请记住{...}为其所围绕的代码添加上下文

根据您想要实现的目标,您还可以使用do-while循环在输入循环中“捕获”用户,直到他们输入正确的值...

int input1 = -1;
do {

    System.out.println("Please enter an integer between 0-99: ");
    String text = input.nextLine();
    try {
        input1 = Integer.parseInt(text);
        if (input1 < 0 || input1 > 99) {
            System.out.print("Outside range. ");
        }
    } catch (NumberFormatException exp) {
        System.out.println(text + " is not a valid numerical value");
    }

} while (input1 < 0 || input1 > 99);

现在,请记住,这会捕获它们,直到它们输入介于0和99之间的值为止,因此您可能需要考虑添加“转义”条件(即“(键入'e'退出)然后要么突破循环或退出程序;)

答案 4 :(得分:0)

您当前的代码仅适用于大于99且小于0的数字。对于程序继续,您需要一个介于0和99之间的数字的else语句。

    if (input1 < 0 || input1 > 99) {
   System.out.println(" Outside range. Please enter an integer between 0-99: ");
   input1 = input.nextInt();
   }else{
      //Continue on with program
   }
   if (input1 < 0 || input1 > 99) {
    System.out.println("Outside range. Program ending.");
    System.exit(0);