当我应该得到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);
}
答案 0 :(得分:2)
您想要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();
}
答案 1 :(得分:0)
首先,您必须从一个初始值开始(首次使用时,您没有为arr [0]分配任何内容)。然后,您必须将计算结果分配给不同于从中获得索引的索引。
我建议在循环之前设置arr [0] = const,让循环运行直到i
答案 2 :(得分:0)
那是因为您尚未初始化/设置数组的任何值。您刚刚创建了一个大小为'numEntries'的数组,并且该数组中的每个条目均为0([0,0,0,0])。将此ans =(arr [i]) constant更改为ans = i constant
答案 3 :(得分:0)
这就是代码中发生的情况,当您将条目数设为4时,它将创建一个长度为4的数组,每个数组的值均为0。这就是您调用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 ...)的方式有很多。