- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于类,我应该编写一个程序来解析包含银行帐户数据的文件,并且我必须编写一个异常类。银行帐号必须是 10 位数字,并且姓名只能包含字母字符。我遇到的问题是,当我在程序中输入文件时,没有任何反应,并且它一直要求输入文件。我也不知道异常类怎么写。为什么我的 main 方法不能正常工作?我该如何编写异常类?
BankAccountProcessor.java
// import statements
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;
public class BankAccountProcessor {
// a main method that throws a FileNotFoundException
public static void main (String[] args) throws FileNotFoundException {
// a variable that continues the program
boolean runProgram = true;
Scanner input = new Scanner(System.in);
String fileName;
// a while loop that runs only if runProgram = true
System.out.println("What file would you like to parse?");
fileName = input.next();
File file = new File(fileName);
while (runProgram) {
try {
Scanner inputFile = new Scanner(file);
while (inputFile.hasNext()){
String accountLine = inputFile.nextLine();
if (BankAccountProcessor.isValid(accountLine) == true){
System.out.println("Line " + accountLine + " has been processed.");
}
runProgram = false;
}
}
catch (FileNotFoundException e) {
System.out.println("That file does not exist");
}
catch (BankAccountException e) {
}
}
}
public static boolean isValid(String accountLine) throws BankAccountException {
StringTokenizer stringToken = new StringTokenizer(accountLine, ";");
String tokenOne = stringToken.nextToken();
String tokenTwo = stringToken.nextToken();
if (stringToken.countTokens() != 2){
throw new BankAccountException("Invalid Bank Account Info");
}
else if (tokenOne.length() != 10){
throw new BankAccountException("Invalid Bank Account Info: Account Number is not 10 digits.");
}
else if (tokenTwo.length() < 3){
throw new BankAccountException("Invalid Bank Account Info: Name must be more than 3 letters.");
}
else if (BankAccountProcessor.hasLetter(tokenOne) == true){
throw new BankAccountException("Invalid Bank Account Info: Account Number must be all digits.");
}
else if (BankAccountProcessor.hasDigit(tokenTwo) == true){
throw new BankAccountException("Invalid Bank Account Info: Account Name cannot have digits.");
}
return true;
}
// a method to check to see if the file has a digit
private static boolean hasDigit(String str){
for (char c : str.toCharArray()){
if (Character.isDigit(c)){
return true;
}
}
return false;
}
// a method to check to see if the file has a letter
private static boolean hasLetter(String str){
for (char c : str.toCharArray()){
if (Character.isLetter(c)){
return true;
}
}
return false;
}
}
BankAccountException.java
public class BankAccountException extends Exception {
// constructor
public BankAccountException(String exception) {
super();
}
}
最佳答案
在您的异常类中,只需将异常消息传递给其父类(super class)super(exception)
,您需要使用自定义消息抛出异常,并在您的catch语句中对该异常执行一些操作,例如打印堆栈跟踪。对于您的其他问题,我认为您在输入时没有给出错误的完整文件路径或文件名,它在文件未找到捕获异常子句处循环。在最后使用finally block
while (runProgram) {
try {
Scanner inputFile = new Scanner(file);
while (inputFile.hasNext()){
String accountLine = inputFile.nextLine();
if (BankAccountProcessor.isValid(accountLine) == true){
System.out.println("Line " + accountLine + " has been processed.");
}
runProgram = false;
}
}
catch (FileNotFoundException e) {
System.out.println("That file does not exist");
}
catch (BankAccountException e) {
}
finally{
runProgram =false;
}
}
关于java - 程序一直循环。异常类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548372/
我有一个在 Android 市场上相当流行的应用程序,它允许数以万计的用户按下一个按钮并向它发出语音命令。然后我就可以做很多不同的事情,比如给他们提供当前的天气预报等等...... 无论如何,我的应用
令人惊讶的是,标题基本上解释了它。我们有一个我们的客户制作的页面,我们正在重新创建该页面。 页面高度会一直增加,直到(我假设是这样)浏览器达到它的极限。我已经尝试过 Firebug 和 W3 验证器,
我是 react-native 的新手,试图创建我自己的组件,但它一直显示一个空屏幕。 这是我的组件代码 class BoxComponent extends Component { cons
我正在为我的 PHP 元素创建一个非常简单的博客,但遇到了一个简单的问题。我无法让我的页眉图像一直 float 。我有一个横幅,左边有一些文字,我有一个 1px 的切片,在可以选择的任何分辨率的宽度上
为什么我可以在另一个 Controller 的 View 中访问一个 Controller 的辅助方法?有没有办法在不破解/修补 Rails 的情况下禁用它? 最佳答案 @George Schreib
我正在使用带有最新 ADT 插件的 Eclipse Kepler SP2。每隔一分钟 Eclipse 就会说“为 Android 4.4.2 加载数据”并阻止我想做的一切。我在不同的文件夹中有几个 E
我是一名优秀的程序员,十分优秀!