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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将每行从整数列表转换为整数数组?相关的知识,希望对你有一定的参考价值。

我是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;

}
答案

将你的loadGuessList类型改为List<int[]>

读取字符串后,您可以遍历字符并将每个字符转换为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?

另一答案

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

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]
另一答案

你可以试试这个:

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
}
另一答案

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


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

            /**
             * all of your code.
             */

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

另一答案

你可以使用toCharArray类的String方法:

loadGuessList.add(line.toCharArray())

现在loadGuessList是一个List<Chat[]>

另一答案

我强烈推荐Google生产的Guava,以便在需要时处理字符串或集合。也许这不适合这个话题,但你会在以后的项目中获得好处。

以上是关于将每行从整数列表转换为整数数组?的主要内容,如果未能解决你的问题,请参考以下文章

在java中将整数列表转换为整数数组[重复]

将数组/字符串列表转换为数组/整数列表的 Lambda 表达式

将4位整数转换为布尔列表

整数的分隔列表

将字符串数组转换为整数数组

我将如何迭代地将我的数组输入转换为整数