如何解决这个Java数组默认初始化问题
这工作正常,但对于3,2,0或0,0,0或3,0,1,如果任何输入用户输入的值为零,则基元int类型的默认值为0,因此数组中未初始化的元素将保留0值 现在,如果您检查元素是否不是0,然后打印,如果您输入如何解决这个Java数组默认初始化问题,java,Java,这工作正常,但对于3,2,0或0,0,0或3,0,1,如果任何输入用户输入的值为零,则基元int类型的默认值为0,因此数组中未初始化的元素将保留0值 现在,如果您检查元素是否不是0,然后打印,如果您输入3,2,0,那么它将跳过0 最好使用列表 public class ApiClass{ //The below method prints only the user entered values public void printArray(int[] a){ for(int ele
3,2,0
,那么它将跳过0
最好使用列表
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);
}
}
这不是一个好办法。如果您有三个用户条目,那么应该创建一个长度为三的数组(而不是长度为五的数组中有两个尾随未使用的条目)。无法区分“默认”0和以后指定的0 另一种选择是使用
整数[]
,其中“默认值”为null,而不是0(但是您无法区分“默认值”null和以后分配的null)
如果您事先不知道数组的长度,请使用
列表
您的for循环错误
应该是
for(Integer num: numbers){
//print num, no need to check for `0` any more
}
您的初始实现从未增加i的值。请尝试使用以下方法:
for(int element: a) {
if(element !=0){
System.out.println(element + "\t");
}
}
萨蒂亚:
如果您的问题只是从用户输入的0值中区分默认的0值,为什么不使用您知道用户永远无法输入的值初始化数组?(您需要确保情况确实如此)
一种方法是在初始化之前迭代数组,另一种方法是使用
为什么
整数[]
,为什么不列出
?如果您事先不知道数组的长度,使用列表代替另一点,如果我们使用List
我们只添加真实值,那么就不需要再检查默认值了values@Thilo这是一个面试问题,面试官不同意使用List@satya您应该指定,Thilo+1我可以用任何其他语言实现这一点吗?需要考虑的是:我认为您的printArray方法不应该是决定值是否不适合打印的方法。如果数组包含元素,并且方法只是打印数组,则打印它。如果在打印之前需要对其进行过滤,那么让其他实体承担这一责任。我们可以用任何其他面向对象的语言实现这一点吗?@satya-您的问题是什么??你想在其他OO语言中实现什么?等等。你发布有缺陷的代码,然后说它不起作用。我告诉你为什么,然后你修好它。当时的问题是什么?
for(int element: a) {
if(element !=0){
System.out.println(element + "\t");
}
}
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);
}
}