检查数字是否均匀并且可以被3或7整除

时间:2017-10-18 16:58:33

标签: java if-statement conditional-statements

我正在编写一个程序用于编辑Ap编程课程。程序要求用户输入必须符合某些条件的三个整数。

第一个数字必须是数字3。 第二个数字可以是数字1,也可以是33到100之间(含)。 第三个数字必须是一个正数,可以被3整除或者可以被7整除。

我个人测试时出现零错误,但是,在编辑器中输入代码时coderunner没有通过。

我想查看是否正确使用我的if语句条件,特别是第三个条件或第3阶段。

 import java.util.Scanner;
    import java.lang.Math; 

class Main2{
    public static void main(String[] args)
     {
      Scanner scan = new Scanner(System.in);

      String name;
      int phase1;
      int phase2;
      int phase3;
      int flag = 1;
      int flag2 = 0;


      System.out.println("Welcome. What is your name?");
        name = scan.nextLine();
       System.out.println("Hello "+name+". Try your best to crack the code!");

      while(flag == 1){
        System.out.println("PHASE 1");

        System.out.println("Enter a number: ");
        phase1 = scan.nextInt();

        if(phase1 == 3){
          System.out.println("Correct!");
          flag2++;}
        else{
           System.out.println("Sorry, that was incorrect!\nBetter luck next time");
          break;
        }


        System.out.println("PHASE 2");

        System.out.println("Enter a number: ");
        phase2 = scan.nextInt();

        if(phase2 == 1 || (phase2 > 33 && phase2 <100)){
           System.out.println("Correct!");
           flag2++;}
        else{
           System.out.println("Sorry, that was incorrect!\nBetter luck next time!");
          break;
        }

        System.out.println("PHASE 3");

        System.out.println("Enter a number: ");
        phase3 = scan.nextInt();

        if(phase3 % 2 == 0 && (phase3 % 3 == 0 || phase3 % 7 == 0)){
           System.out.println("Correct!");
           flag2++;}
          else{
           System.out.println("Sorry, that was incorrect!\nBetter luck next time!");
          break;
        }

         if(flag2==3)
           flag=2;
         System.out.println("You have cracked the code!");
    }
    }
}

2 个答案:

答案 0 :(得分:0)

首先,在问题标题中你说“数字是偶数”,但在问题中你说数字应该是正数。那些是非常不同的东西。

在第2阶段,您的情况不具包容性。

在第3阶段,我没有看到你确认数字是否为正,假设这是你想要的。 “phase3%2 == 0”不会检查是否为正,它会检查该数字是否可以除以2(因此是偶数)。

答案 1 :(得分:0)

  1. 均匀分割意味着你没有余数。在你的第3个条件中没有必要检查是否(阶段3%2 == 0),因为这不是必需的。

  2. 介于33和100之间意味着您应该将条件&gt; =和&lt; =而不是&gt;和&lt;