如何将混合类型文件中的整数存储到数组中?JAVA
我有一个包含一些整数和字符串的文本文件(扫描文件)。我想遍历该文件,获取整数并将其存储到整数数组(array1)中 以下是我正在使用的方法:如何将混合类型文件中的整数存储到数组中?JAVA,java,arrays,file-io,Java,Arrays,File Io,我有一个包含一些整数和字符串的文本文件(扫描文件)。我想遍历该文件,获取整数并将其存储到整数数组(array1)中 以下是我正在使用的方法: public void printIntArray(Scanner file){ int x = 0; while(file.hasNext()){ array1[x] = file.nextInt(); x++; } System.out.println("The li
public void printIntArray(Scanner file){
int x = 0;
while(file.hasNext()){
array1[x] = file.nextInt();
x++;
}
System.out.println("The list size is: " + (x+1));
System.out.print("The list is:");
for(int z=0; z <= x ; z++)
System.out.println(array1[z]);
}
我建议使用
列表
而不是[]
。只需遍历文件,用逗号删除所有非数字字符,替换所有重复的逗号,然后用逗号拆分即可
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(new FileInputStream("input.txt"));
printIntArray(scanner);
}
public static void printIntArray(Scanner file) {
List<Integer> list = new ArrayList<Integer>();
while (file.hasNext()) {
String[] tokens = file.nextLine().replaceAll("\\D", ",").replaceAll(",+", ",").split(",");
for (String token : tokens) {
if(!token.equalsIgnoreCase("")){
list.add(Integer.parseInt(token));
}
}
}
for (Integer num : list) {
System.out.println(num);
}
}
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
Scanner Scanner=new Scanner(新文件输入流(“input.txt”);
打印阵列(扫描仪);
}
公共静态无效打印阵列(扫描程序文件){
列表=新的ArrayList();
while(file.hasNext()){
String[]tokens=file.nextLine().replaceAll(“\\D”,“,”).replaceAll(“,+”,“,”).split(“,”);
for(字符串标记:标记){
if(!token.equalsIgnoreCase(“”){
add(Integer.parseInt(token));
}
}
}
for(整数编号:列表){
系统输出打印项数(num);
}
}
您在哪里声明array1[]?可能尝试在while循环中打印nextInt的结果可能您已经使用next()
方法生成输出(12 dsafa 14 daf 11 10 afa 3.5
)。如果您随后将相同的扫描器
对象(文件
)传递给此方法,它仍然位于文件的末尾,因此您可能应该首先调用重置()
。我想这就是我在方法末尾所做的。“你的意思不同吗?”米歇尔·迈克尔迈耶我说了,说得好。但是,我只是在while循环的开头尝试实现file.reset()。输出没有变化。这起作用了。非常感谢。你能解释一下while循环中发生了什么吗?新特性..while循环捕获文件的每一行。然后,它用一个,
替换文件中的所有非数字字符,然后用一个逗号替换所有连续的逗号。然后它使用逗号作为分隔符将字符串拆分为一个数组。然后它遍历字符串数组并将所有非空字符串转换为整数,然后存储在列表中
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(new FileInputStream("input.txt"));
printIntArray(scanner);
}
public static void printIntArray(Scanner file) {
List<Integer> list = new ArrayList<Integer>();
while (file.hasNext()) {
String[] tokens = file.nextLine().replaceAll("\\D", ",").replaceAll(",+", ",").split(",");
for (String token : tokens) {
if(!token.equalsIgnoreCase("")){
list.add(Integer.parseInt(token));
}
}
}
for (Integer num : list) {
System.out.println(num);
}
}