将每一行从整数列表转换为整数数组?

时间:2018-09-03 04:26:52

标签: java arrays arraylist integer

我是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 :(得分:1)

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);
}

参考: How can I convert a char to int in Java?

答案 1 :(得分:0)

要将带有数字的字符串转换为带有文本数字的整数数组,请使用以下方法:

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]

答案 2 :(得分:0)

您可以尝试以下操作:

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
}

答案 3 :(得分:0)

列表类已经提供了一种方便的方法(toArray),用于将自身转换为数组。您可以使用以下代码段作为问题的参考。


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

            /**
             * all of your code.
             */

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

答案 4 :(得分:0)

您可以只使用String类的toCharArray方法:

loadGuessList.add(line.toCharArray())

现在loadGuessListList<Chat[]>

答案 5 :(得分:0)

我强烈建议您使用Google生产的Guava来处理字符串或集合。 也许不适合该主题,但是您将在以后的项目中从中受益。