java - 如何解决这个Java数组默认初始化问题

标签 java

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 则失败

最佳答案

原始 int 类型的默认值为 0,因此数组中未初始化的元素将保存 0 值,

现在,如果您检查 element 是否不为 0,则打印,如果您输入 3,2,0 那么它将跳过 0

最好使用列表

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
}

关于java - 如何解决这个Java数组默认初始化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8921301/

相关文章:

java - Android Studio音板: How to start a loop with a mediaplayer button?

java - 在 Java 中,我应将 Timer 类事件监听器附加到哪些对象?

java - 显示文件选择器中的图像

java - JPA/hibernate 按子类属性排序

java - Hibernate 5.4.x 由 : org. hibernate.boot.MappingException 引起:访问 stax 流时出错:origin(null)

Java库解析文本并计算唯一单词的数量?

java - 关闭 Android 模拟器后 OpenJDK 继续运行

java - Proguard 和 lambda 表达式

java - 为 Java 寻找合适的 Git 库

java - 为从 i 到 n 求和的递归方法编程