私はスイッチケースを持つ引数ファイルをStack
にスキャンしていますが、.nextDouble
コマンドで値をスキップしていますか? ^ 2 - 3/2 6 * 8 + 2.5 3
がJavaスキャナのnextDoubleコマンドは、スイッチケースで値をスキップしますか?
しかし、スキャナのみ収集します:^ 2 - 3/6 * 8 + 3
while (stackScanner.hasNextLine()) {
switch(stackScanner.next()) {
case"+": {
operator= new operationNode("+");
stack.push(operator);}
case"-":{
operator= new operationNode("-");
stack.push(operator);}
case"*":{
operator= new operationNode("*");
stack.push(operator);}
case"/":{
operator= new operationNode("/");
stack.push(operator);}
case"^":{
operator= new operationNode("^");
stack.push(operator);}
while(stackScanner.hasNextDouble()) {
stack.push(new numberNode(stackScanner.nextDouble()));
}
}
問題は、引数ファイルには、以下が含まれ、ここで、この最後の行、である:
は、ここに私のコードの断片です。
ここでは、ここでペアになる最初の数字(2と2.5)をスキップします。
whileループの最後にstackScanner.next();
を追加すると、保存する数字は2と2.5の値だけです。
あなたのケースでは休憩がなく、whileループがswitch文の中にあることに気付きましたか? –
@MauricePerry私はそれをデフォルトとして持っていましたが、特定の値を読み取っていませんでした。また、ブレークは私の結果に影響していないようです(?) – Gege
本当のコードを投稿してもよろしいですか?コピーして貼り付けると、あなたが見ていると言う結果が表示されません。特に、私のスタックは '' ^、2.0、 - 、*、/、^、3.0、/、^、2.0、6.0、*、/、^、8.0、+、 - 、*、/、 2.5、3.0] '@これは、あなたが' break'文を見つけていないという@MauricePerryの観察と一致しています。 – DaveyDaveDave