贴上菜鸡Java第一题代码,看到多行数据就改了下循环,脑子抽了没把代码里的 return 去掉,结束了才看见。。怪不得读不到多行的数据(awsl)。只过了50%,但我觉得应该能ac,欢迎指错讨论。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            String[] arr = sc.nextLine().split("\\s+");

            // 首先把 error 的情况搞出来
            // and or 不能开头,不能结尾
            // true false 类别不能连续
            // and or 类别也不能连续
            boolean preIsAndOr = true;
            boolean error = false;
            for(int i = 0; i < arr.length; i ++) {
                String s = arr[i];
                if(preIsAndOr && ("and".equals(s) || "or".equals(s))) {
                    error = true;
                } else if(!preIsAndOr && ("true".equals(s) || "false".equals(s))) {
                    error = true;
                }

                preIsAndOr = "and".equals(s) || "or".equals(s) ? true : false;
            }
            
            if(error || preIsAndOr) {
                System.out.println("error");
                continue;
            }

            // 能到这,说明序列本身已经没有问题了。
            // 碰到 and 直接算
            LinkedList<String> stack = new LinkedList<>();
            for(int i = 0; i < arr.length; i ++) {
                String s = arr[i];
                if("true".equals(s) || "false".equals(s)) {
                    stack.push(s);
                } else if("and".equals(s)) {
                    String pre = stack.pop();
                    String next = arr[++ i];
                    if("false".equals(next) || "false".equals(pre)) {
                        stack.push("false");
                    } else {
                        stack.push("true");
                    }
                }
            }

            // 栈里的都当 or 处理
            String res = "false";
            for(String s : stack) {
                if("true".equals(s)) {
                    res = "true";
                    break;
                }
            }

            System.out.println(res);
        }
        
    }
    
}