19-03-02(二十四点)

第一次卡在了输入问题上:
输入n=input.nexInt()之后紧跟着输入String temp = input.nextLine();
这时temp会读取nextInt之后的空字符,导致读入一直为空,而出错

实际上半小时之内就完成了,但是开始并没有找到这个错误,而是想要还一种处理方法(把数字改为字符串处理之类的),但是换方法之后的结果依然如此,从而在输入上发现这个问题

import java.util.*;
public class Test {
    
    
    public static void main(String[] args){
    
    
        Scanner input = new Scanner(System.in);
        int n = Integer.parseInt(input.nextLine());

//        int n =1;
//        String temp = "5x6/5x4";
        for(int i =0;i< n;i++){
    
    
            String temp = input.nextLine();
            if(check(temp))
                System.out.println("Yes");
            else
                System.out.println("No");
        }

    }
    public static boolean check(String s){
    
    
        char[] c = s.toCharArray();
        int n = c.length;
        String[] stack = new String[n];
        String[] result = new String[n];
        int top =0;
        int rtop=0;
        //先运算乘除
        for(int i =0;i<n;i++){
    
    
            if(c[i] == 'x'){
    
    
                stack[top-1] = ""+(Integer.parseInt(stack[top-1])* Character.getNumericValue(c[i+1]));
                i++;
                continue;
            }
            if(c[i] == '/'){
    
    
                stack[top-1] = ""+(Integer.parseInt(stack[top-1])/Character.getNumericValue(c[i+1]));
                i++;
                continue;
            }
            stack[top++] = c[i]+"";
        }
        //在运算加减
            for(int i =0;i<n;i++){
    
    
                if(Objects.equals(stack[i], "+")){
    
    
                    result[rtop-1]  = ""+(Integer.parseInt(result[rtop-1]) + Integer.parseInt(stack[i+1]));
                    i++;
                    continue;
                    // stack[top-1] = stack[top-1]*c[i+1];
                }
                if(Objects.equals(stack[i], "-")){
    
    
                    result[rtop-1]  = ""+(Integer.parseInt(result[rtop-1]) - Integer.parseInt(stack[i+1]));
                    i++;
                    continue;
                    //stack[top-1] = stack[top-1]/c[i+1];
                }
                result[rtop++] = stack[i];
            }
        //System.out.println(result[0]);
        if(Integer.parseInt(result[0]) == 24)
            return true;
        return false;
    }
}
//9+3+4x3
//5+4x5x5
//7-9-9+8
//5x6/5x4
//8/5+6x9

猜你喜欢

转载自blog.csdn.net/qq_51985653/article/details/121057329