Как вернуть многомерный arrayList в Java? - PullRequest
0 голосов
/ 10 мая 2018

Я хочу создать многомерный массив и передать его в качестве параметра в метод, а затем заполнить arrayList элементами и вернуть новую версию arrayList, чтобы иметь возможность использовать этот массив в разных классах, но я получаю java.lang.NoSuchMethodError: Я думаю, что проблема в том, как я возвращаю массив.Я искал, но я не мог найти.Как я могу сделать это правильно?

вот мой код;

public test{

 public static List<List<String>> 2Darray=new ArrayList<List<String>>(); // TE ERROR IN THIS LINE


 public List<List<String>> fillArray(List<List<String>> array){

BufferedReader in = null;
            ArrayList<String> row = new ArrayList<String>();
            try {
                in = new BufferedReader(new FileReader("sampleFile.txt"));
                String read = null;
                    while ((read = in.readLine()) != null) {
                        String[] splited = read.split("\\s+");                       
                        for(int i=0; i<splited.length ; i++){                           
                            row.add(splited[i]);
                        }                        
                        array.add(row);
                    }                         

                } catch (IOException e) {
                System.out.println("There was a problem: " + e);
                e.printStackTrace();
            } finally {
                try {
                    in.close();
                } catch (IOException e) {
                }
      return array;
}

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Немного изменил ваш код, чтобы он компилировался, и заменил чтение из текстового файла на чтение строки. Было несколько проблем, но похоже на работу. Попробуйте.

Основными проблемами, которые я заметил, было несовпадение фигурных скобок и начало имени переменной с числа.

import java.util.*;
import java.io.*;

public class Main {
  public static List<List<String>> array2D = new ArrayList<List<String>>();

  public List<List<String>> fillArray(List<List<String>> array) {

    BufferedReader in = null;
    ArrayList<String> row = new ArrayList<String>();
    try {
      String str = "Some test text";
      InputStream is = new ByteArrayInputStream(str.getBytes());
      //in = new BufferedReader(new FileReader("sampleFile.txt"));
      in = new BufferedReader(new InputStreamReader(is));
      String read = null;
      while ((read = in.readLine()) != null) {
        String[] splited = read.split("\\s+");                       
        for(int i=0; i<splited.length ; i++) {                           
            row.add(splited[i]);
        }                        
        array.add(row);
      }                         

    } 
    catch (IOException e) {
      System.out.println("There was a problem: " + e);
      e.printStackTrace();
    }
    finally {
      try {
        in.close();
      } 
      catch (IOException e) {
      }
    }
    return array;
  }

  public static void main(String[] args) {
    Main main = new Main();
    List<List<String>> test = main.fillArray(array2D);

    for(int i  = 0; i < test.size(); i++) {
      for(int j = 0; j < test.get(i).size(); j++) {
        System.out.println(test.get(i).get(j));
      }
    }
  }
}
0 голосов
/ 10 мая 2018

Немного повозиться (просто заставить его скомпилировать) приводит к тому, что, похоже, нет проблем. Возможно, ваша проблема в другом месте.

public List<List<String>> fillArray(List<List<String>> array) {

    BufferedReader in = null;
    ArrayList<String> row = new ArrayList<String>();
    try {
        in = new BufferedReader(new FileReader("sampleFile.txt"));
        String read = null;
        while ((read = in.readLine()) != null) {
            String[] splited = read.split("\\s+");
            for (int i = 0; i < splited.length; i++) {
                row.add(splited[i]);
            }
            array.add(row);
        }

    } catch (IOException e) {
        System.out.println("There was a problem: " + e);
        e.printStackTrace();
    } finally {
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return array;
}

Кстати: вы действительно должны использовать попробовать с ресурсами - это намного понятнее.

...