ユーザーが次のいずれか以外の何かを入力した場合、UnknownOperatorExceptionがスローされるはずです。+ - */PR
ただし、正しく機能していないようです。ここにサンプル出力があります。UnkownOperatorExceptionがスローされないのはなぜですか?
Enter an operator and a number:
+5
Enter an operator and a number:
g9
5.0
は、メインクラスは、特にメッセージが出力されませんが、例外がスローされている方法はありません...ので、例外がキャッチされた場合にメッセージが印刷されないでしょうか?ここで
は私のメインクラスです:
public class Main{
public static void main (String[] args) throws Exception {
Calculator a = new Calculator(0);
a.setNumber(a.aResult(a));
a.setNumber(a.aResult(a));
String theString = String.valueOf(a.getNumber());
System.out.println(theString);
}
}
これは例外最後に
public void whatOperator() throws Exception
{
String operatorString = null;
operatorString = enterNumber();
// shouldn't this test the string and throw the exception if needed?
throwOperatorException(operatorString);
if(operatorString.substring(1).equals(""))
{
switch(operatorString){
case "R":
result = RESET;
break;
case "P":
System.out.println("Goodbye");
System.exit(0);
}
}
else
theNumber = Double.parseDouble(operatorString.substring(1));
char theOperator = operatorString.charAt(0);
this.operator = theOperator;
operatorString ="";
operatorString += theOperator;
switch(operatorString){
case "*":
result = getNumber() * theNumber;
break;
case "/":
result = getNumber()/theNumber;
break;
case "+":
result = getNumber() + theNumber;
break;
case "-":
result = getNumber() - theNumber;
break;
}
}
例外方法自体をスローするメソッドを呼び出す方法です。どういうわけかそれは投げられていません。私はそれが内に入れられたifステートメントと関係していると思いますが、これを修正する方法がわかりません。
public void throwOperatorException(String entry) throws Exception
{
char oneOperator;
for(int i = 0; i < ALL_OPERATORS.length();i++)
{
oneOperator = ALL_OPERATORS.charAt(i);
if(entry.charAt(0) != oneOperator && i == ALL_OPERATORS.length())
{
try{
throw new UnkownOperatorException(entry);
}catch(UnkownOperatorException e){
System.out.println(e.getMessage());
}
}
}
}
これが本当であることはない
i == ALL_OPERATORS.length()
以来ALL_OPERATORS
private final String ALL_OPERATORS = "+-*/RP";
これは意味があります。だから私はちょうど長さから1を引く必要があります.... – mark1092
@ mark1092はうまくいくはずですが、あなたが試してみなければ保証されません。 – nullpointer