【问题标题】:How to fill an array with 10 even integers following some user provided integer?如何在一些用户提供的整数之后用 10 个偶数整数填充数组?
【发布时间】:2018-11-28 19:24:12
【问题描述】:

基本上,我只想获取提供的整数并用输入整数之后的 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 个偶数的所需输出数组?

【问题讨论】:

  • 所以你的问题是“i > number”永远不是真的。下次提问时请说明您面临的问题:)。
  • 你试过调试你的代码吗?截至目前,由于您的条件i > number,它甚至不会进入那个for循环。
  • @adam-o-hanlon 如果您的问题已得到解答,请接受该问题的答案(不一定是我的)。

标签: java arrays integer


【解决方案1】:

这是一个答案,其中包括无效输入类型的正常失败和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));
    }
}

【讨论】:

    【解决方案2】:

    由于您要添加 10 个数字,因此您需要执行类似的操作

    for (int i=0; i &lt; 10; i++)

    循环 10 次,i 的值为 0、1、2、... 9。在循环中,您可以执行类似 array[i] = next_even_number+i*2; 的操作,其中 next_even_number 是用户输入后的下一个偶数添加数字。

    【讨论】:

      【解决方案3】:

      您的问题是 for(int i = 0; i &gt; number; 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) 的数字数量,并在当前计数器的位置分配给您的数组

      【讨论】:

      • 请考虑添加解释。用户是来学习的,不是给代码的
      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多