所以我一直试图从扫描仪中获取一组值并将它们填入数组中。如果用户输入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的值。我知道必须有一个更好的方法来这样做,我明白我仍然存储零值,但对于我的生活,我无法弄清楚如何防止循环在数组中存储零值
答案 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(与byte
,short
,char
,long
相同),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