Преобразование каждой строки из списка целых чисел в массив целых чисел? - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в Java, поэтому извиняюсь, если что-то из этого неясно - я хочу преобразовать список четырехзначных целых чисел в список целочисленных массивов - т.е. если у меня есть целое число 4567, я хочу преобразовать это в массив из четырех отдельных целых чисел [4, 5, 6, 7]. Поэтому я хочу преобразовать каждую строку / индекс списка в свой собственный массив (а не преобразовывать весь список в массив). В настоящее время я читаю файл, который имеет четырехзначные целые числа (каждое в новой строке) и добавляю их в список, который затем возвращает этот список - любые идеи о том, как я могу его кодировать, чтобы он возвращал список целых чисел вместо массивов?

    public List <Integer> loadGuesses (String fileName){

    List<Integer> loadGuessList = new ArrayList<>();

    try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
        String line;
        while ((line = reader.readLine()) != null) {
            loadGuessList.add(Integer.parseInt(line));
        }
    } catch (FileNotFoundException f){
        System.out.println("File not found - please re-enter with correct file name.");
        getPlayerFile();
    } catch (IOException e){
        System.out.println("Incorrect file name - Please re-enter with correct file name.");
        getPlayerFile();
    }
    return loadGuessList;

}

Ответы [ 6 ]

0 голосов
/ 03 сентября 2018

Я настоятельно рекомендую гуаву, созданную Google, для обработки строки или коллекций, если вам это нужно. Может быть, это не подходит для этой темы, но вы получите выгоду от этого в ваших последующих проектах.

0 голосов
/ 03 сентября 2018

Вы можете просто использовать метод toCharArray класса String:

loadGuessList.add(line.toCharArray())

Теперь loadGuessList - это List<Chat[]>.

0 голосов
/ 03 сентября 2018

Класс списка уже предоставляет удобный метод ( toArray ) для преобразования себя в массив. Вы можете использовать приведенный ниже фрагмент как справку по вашей проблеме.


    public Integer[] loadGuesses(String fileName) {
            List loadGuessList = new ArrayList();

            /**
             * all of your code.
             */

            return loadGuessList.toArray(new Integer[loadGuessList.size()]);
    }

0 голосов
/ 03 сентября 2018

Вы можете попробовать это:

public static void main(String[] args) throws Exception {
    List<Integer> list = new ArrayList<Integer>();

    BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
    String line = null;
    while((line = reader.readLine()) != null ) {
        char[] tmp = line.toCharArray();
        for(int i=0; i<tmp.length; i++) {
            list.add(Character. getNumericValue(tmp[i]));
        }

    }
    // TODO release resources
}
0 голосов
/ 03 сентября 2018

Чтобы преобразовать строку с номером в массив целых чисел с цифрами текста, используйте этот метод:

public static int[] toDigits(String text) {
    int[] digits = new int[text.length()];
    for (int i = 0; i < text.length(); i++)
        digits[i] = Character.digit(text.charAt(i), 10);
    return digits;
}

Тест

System.out.println(Arrays.toString(toDigits("4567")));
System.out.println(Arrays.toString(toDigits("0014789632500")));
System.out.println(Arrays.toString(toDigits("123FOO")));

выход

[4, 5, 6, 7]
[0, 0, 1, 4, 7, 8, 9, 6, 3, 2, 5, 0, 0]
[1, 2, 3, -1, -1, -1]
0 голосов
/ 03 сентября 2018

Измените свой тип loadGuessList на List<int[]>.

После прочтения строки вы можете перебирать символы и преобразовывать их в целое число.

  List<int[]> loadGuessList = new ArrayList<>();

  while ((line = reader.readLine()) != null) {
    int [] digits = new int[4];
    for (int i = 0; i < line.length(); i++) { //Assuming line.length() will be 4
        digits[i] = line.charAt(i) - '0';
    }
    loadGuessList.add(digits);
}

Ссылка: Как я могу преобразовать char в int в Java?

...