有没有人知道为什么这样在CSP模拟考试中可以得到正确结果,却只能得30分?
贴一下原问题
这里开始是30分的错误代码
import java.util.*;
import static java.lang.Integer.parseInt;
public class Main {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
Stack numStack=new Stack<>();
Stack opeStack=new Stack<>();
int n=scanner.nextInt();
int index=0;
String[] input=new String[n];
for(int i=0;i<n;i++){
input[i]=scanner.next();
}
scanner.close();
for(int i=0;i<n;i++) {
while (index < input[i].length()) {
//如果是数字
if (input[i].charAt(index) <= '9' && input[i].charAt(index) >= '0') {
numStack.push(parseInt(input[i].substring(index, index + 1)));
} else if(input[i].charAt(index)=='+'){
opeStack.push(input[i].charAt(index));
}
else if(input[i].charAt(index)=='-'){
opeStack.push(input[i].charAt(index));
} else if(input[i].charAt(index)=='*'){
numStack.push(numStack.pop()*parseInt(input[i].substring(index+1,index+2)));
index++;
}
else {
numStack.push(numStack.pop()/parseInt(input[i].substring(index+1,index+2)));
index++;
}
index++;
}
//输出第i次的判断结果。
while(!numStack.isEmpty()){
if(opeStack.isEmpty()) {
if(numStack.pop()==24){
System.out.println("yes");
}
else{
System.out.println("No");
}
}
else{
if(opeStack.peek()=='+'){
opeStack.pop();
numStack.push(numStack.pop()+numStack.pop());
}
else{
opeStack.pop();
numStack.push(-numStack.pop()+numStack.pop());
}
}
}
//下一行输入,index要从0开始入栈。
index=0;
}
}
}