在Java中将数组从一个方法调用到另一个方法时遇到问题

时间:2015-11-24 19:55:27

标签: java arrays

我设置代码的方式是我在一个方法中声明我的数组然后我想在另一个表格中将它打印出来。但是我想在只使用main()函数的情况下这样做。

我已经删除了大部分不相关的代码,所以这是我的代码:

public static void main(String[] array) {
    test2(array);
}

public static void test() {
    String[] array = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"};
}

public static void test2( String[] array ) {
    int count = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) { 
            System.out.print(array[count] + "\t"); 
            count++;
        }   
        System.out.println();
        System.out.println();
        System.out.println();
    }
}

当我尝试运行它时,它会在“System.out.print(array [count] +”\ t“)行上找到java.lang.ArrayOutOfBound;”

有谁知道这是为什么和/或如何修复它?

2 个答案:

答案 0 :(得分:3)

您有几个错误:

  1. 您在array。{/ li>中创建test()作为本地变量
  2. 您可以使用应用程序的参数作为参数。
  3. 您甚至不会致电test()
  4. 结果是你可能没有参数调用你的应用程序,并且最终让test2()方法试图访问空数组的第一个元素,导致你的异常。

    这是你应该做的,但继续阅读代码,我没有完成:

    public static void main(String[] args) { // This array is defined, but don't use it.
      test2(test());
    }
    
    public static String[] test() {
      return new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"};
    }
    
    public static void test2( String[] array ) {
      int count = 0;
      for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) { 
          System.out.print(array[count] + "\t"); 
          count++;
        }   
        System.out.println();
        System.out.println();
        System.out.println();
      }
    }
    

    此代码仍有问题。您确实假设您的数组中有16个元素。但你不确定。哦,是的,你确定,因为你已经添加了它们,但你不应该认为它总是如此。

    因此,最好还是检查元素的实际数量。

    public static void test2( String[] array ) {
      int count = 0;
      for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
          if (count < array.length) {
            System.out.print(array[count] + "\t"); 
            count++;
          }
        }   
        System.out.println();
        System.out.println();
        System.out.println();
      }
    }
    

答案 1 :(得分:0)

嗯,它不起作用,因为当你的“main”调用“test2(array)”时它没有传递任何东西,因为main没有定义“array”。

您想要的数组仅存在于“test”方法中。

因此,一个简单的解决方案是将代码更改为:

public static void main(String[] array) {
    test2(test());
}

public static String[] test() {
    String[] array = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"};
    return array;
}

public static void test2( String[] array ) {
    int count = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) { 
            System.out.print(array[count] + "\t"); 
            count++;
        }   
        System.out.println();
        System.out.println();
        System.out.println();
    }
}

...这样方法test()在main中调用时返回数组。

但是,代码仍然没有多大意义,特别是在面向对象的编程中。