将每行从整数列表转换为整数数组?
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,以便在需要时处理字符串或集合。也许这不适合这个话题,但你会在以后的项目中获得好处。
以上是关于将每行从整数列表转换为整数数组?的主要内容,如果未能解决你的问题,请参考以下文章