我正在制作一个程序,该程序将扫描文本文件以找到所有整数,然后将它们打印出来,然后移至下一行
我曾尝试将if语句转换为while循环以尝试改进,但是我的代码遍历了文本文件,写出了所有数字,但是在运行到java.util.NoSuchElementException的末尾失败。如果我有一个带有数字的文本文件 1 2 3 五十五 然后打印出来 1个 2 3 5 但是它每次都在最后崩溃
import java.util.Scanner;
import java.io.*;
public class filterSort
{
public static void main()
{
container();
}
public static void run()
{
}
public static void container()
{ Scanner console = new Scanner(System.in);
int count = 0;
int temp;
try
{
System.out.print("Please enter a file name: ");
String fileName = console.nextLine();
Scanner file = new Scanner(new File(fileName));
while(file.hasNextLine())
{
while(file.hasNextInt())
{
temp = file.nextInt();
System.out.println(temp);
}
file.next();
}
}
catch(FileNotFoundException e)
{
System.out.println("File not found.");
}
}
}
答案 0 :(得分:0)
替换
file.next();
使用
if(file.hasNextLine())
file.nextLine();
每次尝试在扫描仪上前进时,都必须检查它是否具有令牌。
答案 1 :(得分:0)
下面是对我有用的程序。同样好的做法是一旦完成就关闭所有资源,并且类名应为驼峰式。都是好的习惯和标准
package com.ros.employees;
import java.util.Scanner;
import java.io.*;
public class FileTest
{
public static void main(String[] args) {
container();
}
public static void container()
{ Scanner console = new Scanner(System.in);
int count = 0;
int temp;
try
{
System.out.print("Please enter a file name: ");
String fileName = console.nextLine();
Scanner file = new Scanner(new File(fileName));
while(file.hasNextLine())
{
while(file.hasNextInt())
{
temp = file.nextInt();
System.out.println(temp);
}
if(file.hasNextLine())
file.next();
}
file.close();
console.close();
}
catch(FileNotFoundException e)
{
System.out.println("File not found.");
}
}
}