Java 代码实现多次输入符号序列并判断有效性
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;
}
}
}
代码解析:
- 循环输入: 使用
while (true)循环,让程序持续接收用户输入。 - 退出条件: 用户输入
q时,if (input.equals('q'))条件满足,执行break语句,退出循环。 - 判断有效性: 调用
isValidSymbolSequence(input)方法判断输入的符号序列是否有效。 - 输出结果: 根据有效性判断结果,输出
Y或N。
使用方法:
- 将代码保存为
Main.java文件。 - 编译代码:
javac Main.java - 运行程序:
java Main - 按照提示输入符号序列,例如
( [ { } ] )或( [ )。 - 输入
q退出程序。
代码功能:
- 使用
Stack数据结构来存储符号序列中的左括号。 - 遍历符号序列,遇到左括号就入栈,遇到右括号就出栈。
- 出栈时,判断出栈的左括号与当前右括号是否匹配。
- 如果匹配,则继续遍历。
- 如果不匹配,或者栈为空,则该符号序列无效,返回
false。 - 如果遍历完所有符号,栈为空,则该符号序列有效,返回
true。
注意:
- 该代码仅判断括号匹配,不考虑其他符号。
- 代码中使用了
nextLine()方法,可以读取包含空格的输入字符串。 - 在循环结束后,需要关闭
Scanner对象,释放资源。
希望本代码对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/bQDY 著作权归作者所有。请勿转载和采集!