2017-09-23 3 views
-1

Iは、次のコードブロックを有する:Java - 値が突然変更され、行ステートメントが2回実行されますか?

コードの出力は次のとおりになる:

コール

Exception in thread "main" java.lang.ArithmeticException:/by zero 
at PrefixSolver.getOperatorExpression(PrefixSolver.java:245) 
at PrefixSolver.solveExpression(PrefixSolver.java:83) 
at PrefixSolver.parseDefinition(PrefixSolver.java:168) 
at PrefixSolver.parseEnviornment(PrefixSolver.java:122) 
at PrefixSolver.solveExpression(PrefixSolver.java:55) 
at PrefixSolver.parseDefinition(PrefixSolver.java:168) 
at PrefixSolver.parseEnviornment(PrefixSolver.java:122) 
at PrefixSolver.solveExpression(PrefixSolver.java:55) 
at PrefixSolver.getOperatorExpression(PrefixSolver.java:232) 
at PrefixSolver.solveExpression(PrefixSolver.java:83) 
at PrefixSolver.parseDefinition(PrefixSolver.java:168) 
at PrefixSolver.parseEnviornment(PrefixSolver.java:122) 
at PrefixSolver.solveExpression(PrefixSolver.java:55) 
at PrefixSolver.getOperatorExpression(PrefixSolver.java:232) 
at PrefixSolver.solveExpression(PrefixSolver.java:83) 
at PrefixSolver.solve(PrefixSolver.java:12) 
at Prefix.main(Prefix.java:17) 

私はこれがどのように可能なのか非常に混乱しています。最初のprintlnは正しいですが(10 2)、何とか変更されていますか?何らかの形でsolveExpressionが再び呼び出されるかどうかを確認するために、printlnをメソッドに配置し、再度呼び出されることはありません。値はちょうど何とか変化している.. ..?

+0

実行を渡されたかを確認するために、デバッグのために行きます。 – Henry

答えて

0

は、再帰的なメソッド呼び出しのように見える - ヘンリーが言ったように、作られて呼び出し、何のparamsは本当に何が起こっているのかを見るためにデバッガでそれを

関連する問題