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

问题描述 投票:-1回答:1

我必须写一个主程序,询问用户10到20之间的数字,并打印出该数字和50之间的偶数。如果数字不在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;

                }
            }
        }
    }
}
java loops java.util.scanner
1个回答
0
投票

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

你的第二个while循环没有做太多,并且作为if语句更有意义 - 如果你还没有确认它在你的第一个while循环中的范围内。

现在你的实际问题是你开始你的计数器作为i但增加newnumber。即使你增加i,它仍然永远不会适用于赔率,因为你的起始数字是奇数,你增加2.你的两个选项是

  • 从数字开始,除非数字是奇数,然后数字+ 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递增。

© www.soinside.com 2019 - 2024. All rights reserved.