我有一个分配,我需要编写一个包含trycatch
语句的while循环代码块。 try
块从输入文件中检索每一行,并调用我创建的isValid
方法来检查格式是否正确,从文件中传递给它。如果没有更多要解析的行,runProgram
设置为false
,则while循环终止。 catch
块将捕获我所做的异常。到目前为止我已经
public static void main(String[] args)
{
File file;
Scanner inputFile;
String fileName;
Scanner scan = new Scanner(file);
fileName = scan.nextLine();
boolean runProgram = true;
while(runProgram)
{
try
{
// for loop to check each line of my file
// invoke isValid
// Check if it's the last line in the file, and end program if so
}
catch(BankAccountException e)
{
System.out.println("Account Exception. Do you wish to quit? y/n");
String quit = scan.nextLine();
if(quit.equals("y"))
runProgram = false;
else
runProgram = true;
}
}
}
我根本不知道如何打开文件,检查下一行,使用我的isValid
方法(只检查格式正确的StringTokenizer
),并在到达时关闭文件的结尾。
这是我的isValid
方法:
private static boolean isValid(String accountLine) throws BankAccountException
{
StringTokenizer strTok = new StringTokenizer(accountLine, ";");
boolean valid = true;
if(strTok.countTokens() == 2)
{
if(strTok.nextToken().length() == 10)
{
if(!strTok.nextToken().matches(".*[0-9].*"))
{
valid = true;
}
}
}
else
valid = false;
return valid;
}
我对上述方法也有疑问。如果我两次调用.nextToken()
,我是否正确期望第一次迭代处理第一个令牌,第二次处理第二次令牌?或者他们都会检查第一个令牌?
答案 0 :(得分:0)
只是为了让你开始。
try {
BufferedReader reader = new BufferedReader(new FileReader(new File("/path/to/File")));
String currLine;
while ((currLine = reader.readLine()) != null) { // returns null at EOF
if (!isValid(currLine)) throw new BankAccountException();
}
} catch (BankAccountException e) {
// same
} finally {
reader.close();
}