使用1个数组实现2个循环程序

时间:2014-08-18 14:11:59

标签: java

我正在尝试创建一个程序,每计数2,它将值更改为"打开"或" 1"。

1-2-3-4-5-6-7-8-9-10

0-1-0-1-0-1-0-1-0-1 **这样的东西**在此之后每三个计数就变成了#34; Open"或" 1"。

但是如果盒子已经打开了#34;或" 1"。它应该"关闭"或" 0"。

以及最多150个计数。

我的问题是我无法将输出显示成一个数组。如果它是一个不同的数组,我没有问题。帮助......

int[] box = new int [150];
int b = 0;    
for (a = 1; a < box.length; a++) {
    if (a % 2 == 0) {
        box[b] = 1;
    }    
    else {
        box[b] = 0;
    }
}
for (int c = 1; c < box.length; c++) {
    if (c % 3 == 0) {
        if (box[b] == 1) {
            box[b] = 0;
        }
        else {
            box[b] = 1;
        }
    }
    else {
        box[b] = 0;
    }
    System.out.print(box[b]); //putting the result here only result in 001001001;
}
/*System.out.print(box[b]); -- Putting it outside results in just zero. 

如何将两个for循环合并为一个数组?我希望这对你们所有人都有意义。只要使用for循环和数组,一种不同的方法也可以。 当两者在一起时,输出程序应该是011101011101 ...

这是我现在做的第二个程序请检查原因我想要添加所有&#34; 0&#34;&#39;&#34; 1&#34;&# 39;程序执行后我只想知道如何添加它。将它放在循环中将循环到150次

int box [] =  new int [150];

int ones= 0;
int zero= 0;


for(int a= 0;a<box.length;a = a+2){
box[a]  = 1;
for(int b =0;b<box.length;b = b+3){
if(box[b]==1){
box[b] = 0;
zero++;
}
else{
box[b] = 1;
one++;
}
System.out.print("No. of ones : " + one); /* putting it here loops the additions to up    to 150 and resulting to thousands of ones */
}
System.out.print(No. of ones: " + one); /* putting it here will result to 0 and loops up to 150 counting up to thousands of zero */
}

for(int i =0; i < box.length; i++){
System.out.print(box[i]); Resulting to 00111 - up to 150 /* the next count is by 4 is this enough to for loops to add it by 5 the next and then add it by 6 then 7 and up to 150 counts till hitting the "Open" or "1"?
System.out.print("No. of one: " + sum); } -- putting it here will only result to 0

谢谢你希望你理解这些问题(很多都是这些问题)并且我很困惑

3 个答案:

答案 0 :(得分:2)

您正在a以及稍后c进行迭代,但会分配到box[b]b仍为0,因此您继续分配给box[0]。您应该分配到box[a]box[c]

此外,您应该从0开始for循环,而不是1。

答案 1 :(得分:0)

您只需要一个循环。问题只在于创造正确的条件。

int box[]=new int [150];
for (int i=1; i< box.length+1; i++) {
    boolean condition = i % 2 == 0 || i % 3 == 0;
    box[i-1] = condition ? 1 : 0;
    System.out.print(box[i-1]);
}

条件检查索引是否除以2或3.

答案 2 :(得分:0)

您正在迭代ac,但您正在分配box[b]。由于b仍为0,因此您每次都会将10分配到数组中的第一个位置(box[0])。您应该使用迭代器(box[a]box[c])索引数组,以便每次引用数组中的不同位置时。

此外,您每次都在遍历整个数组。另一种方法是“跳过”你不想要的数组中的索引,例如这样做:

for(a=0;a<box.length;a = a + 2)
    box[a]=1;

这将只遍历数组中的所有偶数。

最后,您可以在第二个循环中使用box[c] = box[c] ^ 1^表示XOR),而不是使用if(box[c]==1)。这将删除if语句,同时继续做你想要的。

修改

对于打印,您应该使用for循环遍历数组并打印数组中的每个位置,如下所示:

for (i=0;i < box.length;i++)
{
    System.out.print(box[i]);
}