我正在掃描一個帶有開關盒的參數文件到一個Stack
,並且它跳過了一個.nextDouble
命令的值?Java掃描器nextDouble命令跳過切換大小寫的值?
這裏是我的代碼片段:
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 - 3/2 6 * 8 + 2.5 3
然而,掃描儀只收集:^ 2 - 3/6 * 8 + 3
。
所以它跳過了第一個數字在這裏來了一對(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]',這與@ MauricePerry的觀察一致,即你缺少'break'語句。 – DaveyDaveDave