使用For循环填充数组

时间:2014-03-07 01:11:25

标签: java arrays if-statement for-loop

所以我一直试图从扫描仪中获取一组值并将它们填入数组中。如果用户输入10个整数值或-1,则循环结束并且数组停止填充值。以下是我到目前为止编写的代码:

// Input scanner and input controls
Scanner scan = new Scanner(System.in);

System.out.print("Please enter 10 integers \n");

int maxnum = 10;
boolean done = false;
int count = 0;
int[] arrays = new int[maxnum];


// Store values in count array
for (count = 0; (count < maxnum && !done); count++) {
    arrays[count] = scan.nextInt();
    if (arrays[count] == -1) {
        arrays[count] = 0;
        done = true;
    }

}

// print count values
for (count = 0; (count < maxnum); count++) {
    if (arrays[count] != 0) {
        System.out.println(arrays[count]);
    }

}

我做了什么,所以-1没有存储在数组中设置值为-1到0然后告诉我的下一个循环不打印任何0的值。我知道必须有一个更好的方法来这样做,我明白我仍然存储零值,但对于我的生活,我无法弄清楚如何防止循环在数组中存储零值

4 个答案:

答案 0 :(得分:3)

由于条目数可能少于maxnum,处理问题的正确方法是存储用户输入的实际数字,而不是-1,然后在打印最后一个数字之前停止第二个循环。这样你就不在乎-1是否在数组中,因为它无论如何都不会打印出来。

您已经保留了count,您需要做的就是在第二个循环中使用它:

for (int i = 0; i < count ; i++) {
    System.out.println(arrays[i]);
}

答案 1 :(得分:3)

如何将输入存储到另一个变量并在填充到数组之前进行检查?

for (count = 0; (count < maxnum && !done); count++) {
    int testnum = scan.nextInt();

    if (testnum  == -1) {
        done = true;
    }
    else {
          arrays[count] = testnum;
    }

}

答案 2 :(得分:1)

如果在引用之前未发生另一个赋值,则始终将原始数据类型(包括其数组)分配为其默认值。如果是int,则默认值为0(与byteshortcharlong相同),float为0.0 }和double。对象实例的默认值为null。因为您使用的是int[]数组,所以如果您还没有这样做,则其中的所有对象都会自动分配给0。

但是因为你不想在数组中存储0,所以不要。使用不同的数字,-1就可以了,除非您有任何其他偏好。

答案 3 :(得分:1)

仅存储不为-1的数字。输入-1时,循环终止。

   import  java.util.Scanner;
/**
   <P>{@code java TenIntsOrNeg1}</P>
 **/
public class TenIntsOrNeg1  {
   public static final void main(String[] ignored)  {
     int maxInts = 10;
     int[] ints = new int[maxInts];

     Scanner scan = new Scanner(System.in);

     System.out.println("Please enter 10 integers, or -1 to quit.");

     int idx = 0;

     //Keep going for all ten elements...
     while(idx < 10)  {
        System.out.print((idx + 1) + ": ");

        int inputNum = scan.nextInt();   //Assumes it *IS* an int

        //...unless they enter -1 to terminate.
        if(inputNum == -1)  {  
           //End-condition. Number is not stored
           break;
        }

        //Not -1. Store it.
        ints[idx++] = inputNum;
     }

     System.out.println("DONE. Printing:");

     for(int i = 0; i < ints.length; i++)  {
        System.out.println(i + ": " + ints[i]);
     }
   }
}

输出:

[C:\java_code\]java TenIntsOrNeg1
Please enter 10 integers, or -1 to quit.
1: 6
2: 1
3: 2
4: 8
5: 121
6: -1
DONE. Printing:
0: 6
1: 1
2: 2
3: 8
4: 121
5: 0
6: 0
7: 0
8: 0
9: 0