Java HW Help. Циклы с пользовательским вводом для четных числовых значений - PullRequest
0 голосов
/ 13 марта 2019

Мне нужно написать основную программу, которая запрашивает у пользователя число от 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;

                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 13 марта 2019

Не имеет отношения к вашей проблеме, но ваш первый цикл while будет препятствовать тому, чтобы пользователь вводил 10 или 20, потому что цикл while продолжает проверять, совпадают ли входные данные с этими двумя.

Ваш второй цикл while isn 'Я делаю много, и в этом было бы больше смысла в качестве оператора 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.

...