Java硬件帮助。用用户输入循环获得偶数值

时间:2019-03-12 22:09:01

标签: java loops java.util.scanner

我必须编写一个主程序,要求用户输入10到20之间的数字,并打印出该数字到50之间的偶数。如果该数字不在10到20范围内(包括10和20),该程序将不断提示用户输入有效号码。

到目前为止,这就是我所拥有的

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please choose a number between 10 and 20!  ");
        int number = keyboard.nextInt();
        int newnumber = number;

        while (number <= 10 || number >= 20) {
            System.out.print("No, between 10 and 20: ");
            System.out.println("Please choose a number between 10 and 20!  ");
            number = keyboard.nextInt();

        }
        while (number >= 10 || number <= 20) {
            int limit = 50;
            for (int i= 10; newnumber <= 50; i++) {
                if (i% 2 == 0) {
                    System.out.println(newnumber);
                    newnumber=newnumber+2;

                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

与您的问题无关,但是您的第一个while循环将阻止用户输入10或20,因为while循环会不断检查输入是否等于这两个。

您的第二个while循环执行不多,如果使用if语句则更有意义-如果您尚未验证它是否在第一个while循环的范围内。

现在,您的实际问题是您以i开头的计数器,但以newnumber递增。即使您递增i,它也永远不会因赔率而起作用,因为您的起始数字为奇数,并且递增2。您的两个选择是

  • 以数字开头i,除非数字为奇数,否则为数字+1
  • 每次迭代将循环计数器增加1

使用第一个选项

while (number < 10 || number > 20) {
    System.out.print("No, between 10 and 20: ");
    System.out.println("Please choose a number between 10 and 20!  ");
    number = keyboard.nextInt();
}

for (int i = (number % 2 == 0 ? number : number+1); i <= 50; i+=2) {
    System.out.println(newnumber);
}

请注意,由于我确保以偶数开头并以2递增,所以我退出了每次迭代是否为偶数的检查。