Как заполнить массив 10 четными целыми числами после некоторого числа, указанного пользователем? - PullRequest
0 голосов
/ 28 ноября 2018

В основном я просто хочу взять предоставленное целое число и заполнить массив 10 четными целыми числами, которые идут после входного целого числа.Например, если пользователь вводит 10, тогда результирующий массив будет {12, 14, 16, 18, 20, 22, 24, 26, 28, 30}.Текущий код, который я использую, приведен ниже, и он создает массив правильной величины, но полностью заполнен нулями ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}).

import java.util.*;

public class arrays {
    public static void main(String args[]) {

        int[] array = new int[10];

        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter starting number: ");
        int number = sc.nextInt();

        for(int i = 0; i > number; i++) {
            if(i % 2 == 0) {
                array[i] = i;
            }
        }

        for(int element: array) {
            System.out.print(element + " ");
        }
    }
}

Как создать требуемый выходной массив, содержащий 10 четных целых чисел

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Поскольку вы хотите добавить 10 чисел, вам нужно сделать что-то вроде

for (int i=0; i < 10; i++)

, которое повторяется 10 раз с i, имеющим значение 0, 1,2, ... 9. В цикле вы можете сделать что-то вроде array[i] = next_even_number+i*2;, где next_even_number - это следующее четное число после пользовательского ввода для добавления чисел.

0 голосов
/ 28 ноября 2018

Вот ответ, который включает в себя постепенную ошибку для недопустимых типов ввода и переполнения максимальной границы типа int.Он также обнуляет массив результатов при обнаружении сбоя, предотвращающего утечку промежуточного состояния.

import java.util.*;

public class arrays {
    public static void main(String args[]) {

        int[] array = new int[10];
        int number = Integer.MAX_VALUE;

        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter starting number: ");


        try{
            number = sc.nextInt();
        }catch(InputMismatchException e){
            System.out.println("Invalid input detected - Not an integer");
            System.exit(0);
        }       

        for(int i = 0; i < array.length; ++i) {

            if(number % 2 == 0){
                array[i] = (number + 2) + (2 * i);
            }else{
                array[i] = (number + 1) + (2 * i);
            }

            if(number > array[i]){
                System.out.println("Invalid input detected - overflow of type int!");
                Arrays.fill(array, 0);
                System.exit(0);
            }
        }

        System.out.println(Arrays.toString(array));
    }
}
0 голосов
/ 28 ноября 2018

Проблема в вашем случае заключается в том, что for(int i = 0; i > number; i++) означает «сделать что-то, пока« i »больше, чем число, поэтому оно даже не войдет в цикл, поскольку i начинается с 0, а введенный вами номер равенбольше 0. Вместо этого попробуйте сделать следующее

int counter = 0;
int num = number;
while(counter < 10){
  num++;
  if(num%2 == 0){
     array[counter] = num;
     counter++;
  }
}

Используйте цикл while, который будет считать количество чисел, превышающее ваш вход, равным (num% 2 == 0), и назначьтек вашему массиву в позиции текущего счетчика

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...