我试图将奇数存储在一个数组中,但是当我运行代码时,我得到9
,这是答案的五倍。它只存储值9
。
以下是代码:
public class Number2 {
public static void main(String[] args) {
int[] element = new int[5];
for(int i=0; i<5; i++) {
for(int j=1; j <= 10; j=j+2) {
element[i] = j;
}
}
for(int i=0; i < 5; i++) {
System.out.println(element[i]);
}
}
}
你能告诉我我的节目有什么问题吗?
答案 0 :(得分:7)
你使用两个循环,你只需要一个循环。当前对于数组中的每个元素,将其设置为1,然后设置为3,然后设置为5,然后设置为7,然后设置为9,每次都会覆盖前一个值。因此,最后,您的数组只是{9,9,9,9,9}
。你可能想这样做:
for(int i = 0; i < element.length; i++) {
element[i] = i*2 + 1;
}
答案 1 :(得分:2)
对于外部索引循环的每次迭代,内部循环(变量j
)从1
运行到9
,并始终将值赋给element[i]
因此每个element
数组的值为9
。
按照你的逻辑,它应该是这样的:
for (int i = 0, j = 1; i < 5; i++, j += 2)
element[i] = j;
您希望使用索引变量将沿设置的值递增。
一些改进:
由于element
不仅仅是一个元素,因此您应该将其命名为复数,例如elements
。也不要在代码中的多个位置重复数组长度,数组知道它的长度:elements.length
,在for
语句中使用它:
int[] elements = new int[5];
for (int i = 0, j = 1; i < elements.length; i++, j += 2)
elements[i] = j;
你也不需要2个变量来做你想做的事情,可以根据索引来计算i
th 奇数:
for (int i = 0; i < elements.length; i++)
elements[i] = i*2 + 1;
答案 2 :(得分:1)
您正在将数组中的所有元素更改为j的最后一个值。
您的循环必须是:
for (int i=0;i<5;i++)
{
elements[i]=2*i +1;
}
以这种方式思考:
当i为0时,您将分配从1到9的元素[0]值(j循环)。分配的最后一个值是9.
答案 3 :(得分:1)
您正在将每次迭代中的数组值替换为9(分别为1,3,5,7,9)
尝试下面
for(int i=0; i<5; ){
for(int j=1; j <= 10; j=j+2,i++){
element[i] = j;
}
}
你也可以用一个for循环来写这个
for(int j=1,i=0 ; j <= 10 && i<5; j=j+2,i++){
element[i] = j;
}
输出
答案 4 :(得分:1)
当最后一次内循环执行j = 9
的值并且j
成为11
时,它将退出。您将j
的每个值存储在同一索引中。即。你在内循环中每次都覆盖element[i]
,而i
在内循环中不会改变。因此,只有j
的最终值可用。
下面的代码将给出前五个奇数,即(1, 3, 5, 7, 9)
for(int i=0,j=1; i <= 4; j=j+2,i++)
{
element[i] = j;
}
答案 5 :(得分:0)
用一层用于循环就可以了
int elements [] = new int [5];
for (int i=0,j=1; j<=10; i++, j=j+2 )
{
elements[i] = j;
}
for (int i=0; i<5 ; i++ )
{
System.out.println(elements[i]);
}
答案 6 :(得分:0)
public static void main(String[] args) {
int[] element = new int[5];
for (int i = 0; i < element.length; i++) {
element[i]=2*i+1;
}
for(int i : element){
System.out.println(i);
}
}
答案 7 :(得分:0)
您有两个循环,j循环是i循环的内部代码,它的运行时间是i循环的编码的5倍,对于i = 0,j将运行j = 1,2,3,4,5,6 ,7,8,9且大于9将存储在j [0]中 接下来,对于i = 1,j = 1,2,3,4,5,6,7,8,9,并且比9将存储在j [1]中,依此类推, 所以你将不得不改变
int j=1;
for(int i=0;i<5;i++){
element[i]=j;
j=j+2;
}
并且仅用于打印
for(int i=0;i<5;i++){
System.out.println(element[i]);
}