public class ApiClass{
//The below method prints only the user entered values
public void printArray(int[] a){
for(int element : a){
//ignore because this is the default value when array is created not user entered
if(element != 0)
{
System.out.print(element+"\t");
}
}
}
}
public class Client{
public static void main(String... args){
ApiClass api = new ApiClass();
int[] input = new int[5];
input[0]= 3;
input[2]= 2;
input[3] = 1;
api.printArray(input);
}
}
这工作正常,但3,2,0或0,0,0或3,0,1都没有输入任何输入用户输入零
答案 0 :(得分:1)
原始int类型的默认值为0,因此数组中未启动的元素将保持0值,
现在,如果您检查元素是否不为0则打印,如果您输入3,2,0
,则它将跳过0
最好使用List
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(1);
numbers.add(0);
numbers.add(3);
现在迭代数字
for(Integer num: numbers){
//print num, no need to check for `0` any more
}
答案 1 :(得分:1)
这不是一个好方法。如果您有三个用户条目,则应该创建一个长度为3的数组(而不是长度为5的数组,其中包含两个尾随未使用的条目)。无法区分“默认”0和稍后指定的0。
另一种选择是使用Integer[]
,其中“default”为null,而不是0(但是你不能区分“default”null和后面指定的null。)
如果您事先不知道数组的长度,请改用List<Integer>
。
答案 2 :(得分:0)
您的for循环错误。
应该是
for(int element: a) {
if(element !=0){
System.out.println(element + "\t");
}
}
您的初始实现从未增加i的值。
答案 3 :(得分:0)
试试这个:
public void printArray(Integer[] a){
for(Integer element : a){
//Ignore because this is the default value when array is created not user entered
if (element != null) {
System.out.print(element.toString() + "\t");
}
}
}
public class Client{
public static void main(String... args){
ApiClass api = new ApiClass();
Integer[] input = new Integer[5];
input[0]= 3;
input[2]= 2;
input[3] = 1;
api.printArray(input);
}
}
答案 4 :(得分:0)
萨蒂亚:
如果您的问题只是从用户输入的0值中消除默认的0值,为什么不用您知道用户永远不能输入的值来初始化数组? (你需要确保是这种情况)。
一种方法是在数组之前迭代并初始化,另一种方法是使用 Arrays.fill()