Java 代码实现多次输入符号序列并判断有效性

本代码使用 Java 语言,实现了一个程序,可以多次输入符号序列,并判断其有效性。用户可以通过输入 'q' 退出程序。

import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        while (true) {
            System.out.print('请输入符号序列(输入'q'退出):');
            String input = scanner.nextLine();
            
            if (input.equals('q')) {
                break;
            }

            if (isValidSymbolSequence(input)) {
                System.out.println('Y');
            } else {
                System.out.println('N');
            }
        }
        
        scanner.close();
    }

    public static boolean isValidSymbolSequence(String input) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else if (c == ')' || c == ']' || c == '}') {
                if (stack.isEmpty() || !isMatchingPair(stack.peek(), c)) {
                    return false;
                }
                stack.pop();
            }
        }
        return stack.isEmpty();
    }

    public static boolean isMatchingPair(char opening, char closing) {
        if (opening == '(' && closing == ')') {
            return true;
        } else if (opening == '[' && closing == ']') {
            return true;
        } else if (opening == '{' && closing == '}') {
            return true;
        } else {
            return false;
        }
    }
}

代码解析:

  1. 循环输入: 使用 while (true) 循环,让程序持续接收用户输入。
  2. 退出条件: 用户输入 q 时,if (input.equals('q')) 条件满足,执行 break 语句,退出循环。
  3. 判断有效性: 调用 isValidSymbolSequence(input) 方法判断输入的符号序列是否有效。
  4. 输出结果: 根据有效性判断结果,输出 YN

使用方法:

  1. 将代码保存为 Main.java 文件。
  2. 编译代码:javac Main.java
  3. 运行程序:java Main
  4. 按照提示输入符号序列,例如 ( [ { } ] )( [ )
  5. 输入 q 退出程序。

代码功能:

  • 使用 Stack 数据结构来存储符号序列中的左括号。
  • 遍历符号序列,遇到左括号就入栈,遇到右括号就出栈。
  • 出栈时,判断出栈的左括号与当前右括号是否匹配。
  • 如果匹配,则继续遍历。
  • 如果不匹配,或者栈为空,则该符号序列无效,返回 false
  • 如果遍历完所有符号,栈为空,则该符号序列有效,返回 true

注意:

  • 该代码仅判断括号匹配,不考虑其他符号。
  • 代码中使用了 nextLine() 方法,可以读取包含空格的输入字符串。
  • 在循环结束后,需要关闭 Scanner 对象,释放资源。

希望本代码对您有所帮助!

Java 代码实现多次输入符号序列并判断有效性

原文地址: https://www.cveoy.top/t/topic/bQDY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录