У меня есть назначение, где мне нужно написать блок кода цикла while, содержащий оператор trycatch
. Блок try
извлекает каждую строку из входного файла и вызывает метод isValid
, который я создал, чтобы проверить правильность формата, передав ему строку из файла. Если линий для синтаксиса больше нет, runProgram
устанавливается в false
, цикл while завершается. Блок catch
поймает исключение, которое я сделал. До сих пор яОшибка ловить и файл IO
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()
два раза, я прав, ожидая, что первая итерация будет работать с первым токеном, а вторая - со вторым? Или они оба просто проведут первый токен?
Посмотрите на [File] (http://docs.oracle.com/javase/6/docs/api/java/io/File.html), [FileReader] (http://docs.oracle .com/javase/6/docs/api/java/io/FileReader.html) и [BufferedReader] (http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html) , Они должны уметь добиваться того, чего вы хотите. В противном случае исследуйте пакет IO. Полезно также [учебник] (http://docs.oracle.com/javase/tutorial/essential/io/). – BevynQ