Java 如何解决这些异常?
公平地说,我并没有得到这些例外,只是试图找到一个方法来覆盖这些例外。例外情况是NoTouchElementException和NumberFormatException 注意:由于txt文件很好,因此该程序工作正常。然而,引入任何不是数字的东西,它都会失败 以下是可能出现问题的主要类: BankReader.javaJava 如何解决这些异常?,java,file,io,checked-exceptions,Java,File,Io,Checked Exceptions,公平地说,我并没有得到这些例外,只是试图找到一个方法来覆盖这些例外。例外情况是NoTouchElementException和NumberFormatException 注意:由于txt文件很好,因此该程序工作正常。然而,引入任何不是数字的东西,它都会失败 以下是可能出现问题的主要类: BankReader.java package bankreader; import java.io.File; import java.io.IOException; import java.util.Sca
package bankreader;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class BankReader
{
public static void main(String[] args)
{
BankReader reader = new BankReader();
Scanner scan = new Scanner(System.in);
String fileName = "";
boolean finished = false;
while(!finished)
{
try
{
System.out.print("Enter the name of the file: ");
fileName = scan.nextLine();
scan = reader.checkFile(fileName, scan);
reader.readFile(scan);
finished = true;
}
catch(IOException ex)
{
System.out.print("\nThis file does not exist or had");
System.out.println(" characters that were not numbers. Please enter a different file.\n");
}
}
scan.close();
}
public Scanner checkFile(String fileName, Scanner scan) throws IOException
{
File file = new File(fileName);
scan = new Scanner(file);
return scan;
}
public void readFile(Scanner scan)
{
String accountNumber = "";
double accountBalance = -1;
Bank bank = new Bank();
while(scan.hasNext())
{
accountNumber = scan.next();
accountBalance = Double.parseDouble(scan.next());
BankAccount bankAccount = new BankAccount(accountNumber, accountBalance);
bank.addAccount(bankAccount);
}
if (bank.numberOfAccounts() > 0)
{
BankAccount maxBalance = bank.getHighestBalance();
System.out.println(maxBalance.getAccountNumber() + ": " + "$" + maxBalance.getBalance());
}
else
System.out.println("\nThe file had no accounts to compare.");
}
}
下面是我正在使用的txt文件:
346583155444415 10000.50
379611594300656 5000.37
378237817391487 7500.15
378188243444731 2500.89
374722872163487 25000.10
374479622218034 15000.59
342947150643707 100000.77
所以,即使这是我自己的txt文件,如果我正在访问一个文本文件,该文件中的字符不是一个数字,或者有一个帐号,但没有余额,反之亦然。我想知道如何处理这些例外情况
我所尝试的:
我曾尝试执行scan.nextLine()以避开该异常,但它只是引入了另一个异常
我还尝试使用一个使用regex检查字符串是否为数字的方法。问题是我使用的变量不是字符串,我不希望创建更多的检查
在我看来,我不再做我所做的事,发生异常后,我无法恢复扫描仪。在解析之前,您可以使用scan测试它是否为双精度。hasnext双击并解析或仅读取数字,否则您将设置默认值,然后通过读取不正确的值来移动,并且不对其执行任何操作。只需开始:您需要包含实际的异常消息:put
System.err.println(例如getMessage())
在catch
中查看实际发生的情况。此外,您可能需要打印异常的堆栈跟踪,以查看程序的哪一行正在抛出异常(将ex.printStackTrace(System.err)
放入catch
中,以执行该操作)与notAGenuineConcernException()相同或者我没有读到关于异常的解释,它将启动异常的过山车。@Barranka就像我说的,我没有得到异常,而是试图找到从这两个异常中恢复的方法,因为它们是最重要的。