对各种异常使用 try-catch 块 (java)
Using try-catch blocks for various exceptions (java)
所以我试图在我的 Postfix 表达式求值器中创建几个 try-catch 语句来捕获输入文件中出现的异常。我只需要帮助来制作那些 try-catch 语句。
所以当前输出为:
5
2
1
8
-4
2
-4
Exception in thread "main" java.util.EmptyStackException
at LinkedStack.pop(LinkedStack.java:44)
at PostFix.postfixEvaluation(PostFix.java:171)
at PostFix.readFromTheFile(PostFix.java:49)
at PostFix.main(PostFix.java:21)
而我希望它输出:
5
2
1
8
-4
2
-4
ERROR: java.lang.RuntimeException: Bad character input: " "
ERROR: java.util.EmptyStackException for 1+1
ERROR: java.util.EmptyStackException for 11+*
ERROR: java.util.EmptyStackException for +11
ERROR: java.lang.RuntimeException: Bad character input: "@"
输入文件包含:
511+93/2-932/-149657%/*-+14+96*5/7%-149-+6*57%/ 1+111+*+1111@
这是我当前的代码方法,try-catch 块会放在这里:
public static Integer postfixEvaluation(String input){
StackInterface<Integer> stack = new LinkedStack<Integer>();
Integer result = new Integer(0);
for(int i=0;i<input.length();i++){
String characterNum = input.substring(i, i+1);
Integer integer1 = new Integer(0);
Integer integer2 = new Integer(0);
if (characterNum.equals("0")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("1")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("2")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("3")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("4")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("5")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("6")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("7")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("8")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("9")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("*")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 * integer2;
stack.push(result);
}
else if (characterNum.equals("/")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 / integer2;
stack.push(result);
}
else if (characterNum.equals("%")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 % integer2;
stack.push(result);
}
else if (characterNum.equals("+")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 + integer2;
stack.push(result);
}
else if (characterNum.equals("-")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 - integer2;
stack.push(result);
}
}
return result;
}
任何帮助将不胜感激
当你得到任何字符时,首先检查字符是否为空,如果是,则通过你的自定义异常。
if(characterNum.equals("")){
throw new BadCharacterException(" Bad character input: \" \"");
}
如果我理解你的话,你不希望你的异常在应用程序结束时分组。我认为您可以像往常一样捕获异常(例如 atish shimpi answare),然后在 catch 部分通过将异常推送到某种 fifo 集合来处理异常。在处理完整个输入后,只需将其打印出来。
我会在这里选择检查异常,并在您打印异常的地方处理异常的打印。然后您可以决定是否要停止,如何格式化消息等
所以我试图在我的 Postfix 表达式求值器中创建几个 try-catch 语句来捕获输入文件中出现的异常。我只需要帮助来制作那些 try-catch 语句。
所以当前输出为:
5
2
1
8
-4
2
-4
Exception in thread "main" java.util.EmptyStackException
at LinkedStack.pop(LinkedStack.java:44)
at PostFix.postfixEvaluation(PostFix.java:171)
at PostFix.readFromTheFile(PostFix.java:49)
at PostFix.main(PostFix.java:21)
而我希望它输出:
5
2
1
8
-4
2
-4
ERROR: java.lang.RuntimeException: Bad character input: " "
ERROR: java.util.EmptyStackException for 1+1
ERROR: java.util.EmptyStackException for 11+*
ERROR: java.util.EmptyStackException for +11
ERROR: java.lang.RuntimeException: Bad character input: "@"
输入文件包含:
511+93/2-932/-149657%/*-+14+96*5/7%-149-+6*57%/ 1+111+*+1111@
这是我当前的代码方法,try-catch 块会放在这里:
public static Integer postfixEvaluation(String input){
StackInterface<Integer> stack = new LinkedStack<Integer>();
Integer result = new Integer(0);
for(int i=0;i<input.length();i++){
String characterNum = input.substring(i, i+1);
Integer integer1 = new Integer(0);
Integer integer2 = new Integer(0);
if (characterNum.equals("0")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("1")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("2")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("3")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("4")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("5")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("6")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("7")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("8")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("9")) {
Integer character = (Integer.valueOf(characterNum));
stack.push(character);
}
else if (characterNum.equals("*")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 * integer2;
stack.push(result);
}
else if (characterNum.equals("/")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 / integer2;
stack.push(result);
}
else if (characterNum.equals("%")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 % integer2;
stack.push(result);
}
else if (characterNum.equals("+")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 + integer2;
stack.push(result);
}
else if (characterNum.equals("-")) {
integer2 = stack.pop();
integer1 = stack.pop();
result = integer1 - integer2;
stack.push(result);
}
}
return result;
}
任何帮助将不胜感激
当你得到任何字符时,首先检查字符是否为空,如果是,则通过你的自定义异常。
if(characterNum.equals("")){
throw new BadCharacterException(" Bad character input: \" \"");
}
如果我理解你的话,你不希望你的异常在应用程序结束时分组。我认为您可以像往常一样捕获异常(例如 atish shimpi answare),然后在 catch 部分通过将异常推送到某种 fifo 集合来处理异常。在处理完整个输入后,只需将其打印出来。
我会在这里选择检查异常,并在您打印异常的地方处理异常的打印。然后您可以决定是否要停止,如何格式化消息等