我是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;
}
答案 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);
}
答案 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)
答案 5 :(得分:0)
我强烈建议您使用Google生产的Guava来处理字符串或集合。 也许不适合该主题,但是您将在以后的项目中从中受益。