繁体   English   中英

如何在数组中添加indexOf以及如何向数组中添加元素(java)

[英]How to add indexOf in array and how to add elements to an array (java)

当我应该得到0、3、6、9时,我的答案一直是0。 还如何将数组的索引添加到数组? 不知道我是否做得正确。

/**
         * This returns an int array containing a multiplication table. Your method
         * should start by allocating an array whose length is {@code numEntries} (e.g.,
         * the second parameter). You should then set the value of each entry in the
         * array equal to {@code constant} (e.g., the first parameter) times the index
         * of that entry.<br/>
         * Precondition: numEntries MUST BE 0 or larger. (PRECONDITIONS SPECIFY
         * RESPONSIBILITIES ON A METHOD'S CALLER; YOU SHOULD ASSUME THIS IS TRUE.)
         *
         * @param constant
         *            Value whose multiplication table is to be calculated.
         * @param numEntries
         *            Length of the array to be returned
         * @return Array of the appropriate length containing the multiplication table
         *         for {@code constant}.
         */
        public static int[] generateTable(int constant, int numEntries) {
            int arr[];
            arr=new int[numEntries];
            int i;
            int ans;
            for(i=0;i<arr.length;i++){
                ans=(arr[i])*constant;
                System.out.println(ans);
                arr[i]=ans;

            }
            System.out.println(arr);
            return arr;


        }
public static void main(String[] args) {
        generateTable(3,4);
    }

您想要ans = i * constant; 但是,我会消除ans 我也只会在呼叫者中打印。 喜欢,

public static int[] generateTable(int constant, int numEntries) {
    int[] arr = new int[numEntries];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = i * constant;
    }
    return arr;
}

和,

public static void main(String[] args) {
    System.out.println(Arrays.toString(generateTable(3, 4)));
}

当然,在Java 8+中,您也可以使用lambda来做到这一点。 喜欢,

public static int[] generateTable(int constant, int numEntries) {
    return IntStream.range(0, numEntries).map(i -> i * constant).toArray();
}

首先,您必须从一个初始值开始(首次使用时,您没有为arr [0]分配任何东西)。 然后,您必须将计算结果分配给不同于从中获得索引的索引。 我建议在循环之前设置arr [0] = const,让循环运行直到i <arr.length-1,然后在循环内部将ans分配给arr [i + 1]。

那是因为您没有为数组初始化/设置任何值。 您刚刚创建了一个大小为'numEntries'的数组,并且该数组中的每个条目均为0([0,0,0,0])。 将此ans =(arr [i]) 常量更改为ans = i常量

这就是代码中发生的情况,当您将条目数设为4时,它将创建一个长度为4的数组,每个数组的值均为0。 这就是最初调用arr=new int[numEntries];时的样子(数组) arr=new int[numEntries];

在此处输入图片说明

  ans=(arr[i])*constant;

因此,当您执行上述行时,即使您与常数相乘,初始值仍为0,所以它将始终为您提供0。

   arr[i]=ans;

结果,当您执行上述行时,ans(始终为0)将分配给该索引的元素,从而导致输出

我一直得到0作为答案

您需要做的就是更改

ans =(arr [i])* constant;

ans=i*constant;

会给你结果

0,3,6,9

整个代码应该是这样的

 public static void main(String[] args) {
    generateTable(3,4);
}


public static int[] generateTable(int constant, int numEntries) {
        int arr[];
        arr=new int[numEntries];
        int i;
        int ans;
        for(i=0;i<arr.length;i++){
            ans=i*constant;
            System.out.println(ans);
            arr[i]=ans;

        }
        System.out.println(arr);
        return arr;
}

注意:获得相同输出(0,3,6,9 ...)的方式有很多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM