Java 从用户输入获取文件并将整数存储到数组中
我试图从java中的用户输入打开一个文件,然后读取该文件,只获取每行中的整数,然后将其放入数组并返回数组。在抓取文件中的项目方面,我更熟悉python而不是java 一行中的文件内容示例: 34 a 55 18 47 89 b 45 67 59 Abbb 88 37 20 27 10 78 39 n m ghff 我的代码:Java 从用户输入获取文件并将整数存储到数组中,java,arrays,file,methods,return,Java,Arrays,File,Methods,Return,我试图从java中的用户输入打开一个文件,然后读取该文件,只获取每行中的整数,然后将其放入数组并返回数组。在抓取文件中的项目方面,我更熟悉python而不是java 一行中的文件内容示例: 34 a 55 18 47 89 b 45 67 59 Abbb 88 37 20 27 10 78 39 n m ghff 我的代码: private static int[] getArray(){ List<Integer> temp = new ArrayList<Integ
private static int[] getArray(){
List<Integer> temp = new ArrayList<Integer>();
System.out.print("Please input the name of the file to be opened: ");
try{
String filename = in.next();
File file = new File(filename);
Scanner inputFile = new Scanner(file);
while (inputFile.hasNextInt()){
temp.add(inputFile.nextInt());
}
} catch (FileNotFoundException e){
System.out.println("---File Not Found! Exit program!---");
System.exit(0);
}
int[] array = new int[temp.size()];
for (int i = 0; i < array.length; i++){
array[i] = temp.get(i);
}
return array;
}
在您的情况下,我不会使用Scanner对象来获取int值,因为当您使用Scanner时,只有当您具有EOF(文件结尾)字符时,
hasNext()
才会获得false
。
因此,一旦检索到文件名
,请使用下面的代码,这将消除给定字符串中的所有字符,并将其替换为单个空白
String stringWithSingleWS = filename.trim().replaceAll("([a-zA-Z])"," ").replaceAll("\\s{2,}"," ");
然后,您可以将其解析为数组并直接返回结果,而无需转换为列表对象变量
int[] values = java.util.Arrays.stream(stringWithSingleWS.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
return values;
在您的情况下,我不会使用Scanner对象来获取int值,因为当您使用Scanner时,只有当您具有EOF(文件结尾)字符时,
hasNext()
才会获得false
。
因此,一旦检索到文件名
,请使用下面的代码,这将消除给定字符串中的所有字符,并将其替换为单个空白
String stringWithSingleWS = filename.trim().replaceAll("([a-zA-Z])"," ").replaceAll("\\s{2,}"," ");
然后,您可以将其解析为数组并直接返回结果,而无需转换为列表对象变量
int[] values = java.util.Arrays.stream(stringWithSingleWS.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
return values;
这回答了你的问题吗?这回答了一部分,但我仍然得到0的返回,因为它似乎没有读取整数的文件。这回答了你的问题吗?这回答了一部分,但我仍然得到了0的返回,因为它似乎没有读取整数的文件。我尝试了这样做,但仍然得到了0的返回。这与我的while循环没有实际获取整数值有关吗?这对测试用例不起作用
34a 55 18 47 89 b 45 67 59 abbb 88 37 20 27 10 78 39 21 n m ghff
检查答案,我根据您的案例对其进行了改进。我尝试了这样做,但仍然得到了0的返回。这与我的while循环没有实际获取整数值有关吗?这对测试用例不起作用34a 55 18 47 89 b 45 67 59 abbb 88 37 20 27 10 78 39 21 n m ghff
检查答案,我根据您的案例改进了它。