【发布时间】:2020-08-04 00:33:18
【问题描述】:
所以这段代码应该接受用户输入并查看括号是否平衡。指令只是说使用while循环输入多行并打印“退出程序”。我的问题:我不确定如何在几行输入后跳出 while 循环,以便调用 sout("Exit program") - 其他一切正常。 PS。对此还是很陌生
import java.util.Scanner;
import java.util.Stack;
public class BracketChecker {
private Stack<Character> stack = new Stack<>();
public boolean check(String text) {
for (int i = 0; i < text.length(); i++){
char c = text.charAt(i);
if (c == '{') {
stack.push(c);
}
if (c == '}'){
if (stack.empty())
return false;
stack.pop();
}
}
if (stack.isEmpty()){
return true;
}
else{
return false;
}
}
public static void main(String[] args) {
System.out.println("Starting bracket checker app");
BracketChecker checker = new BracketChecker();
Scanner in = new Scanner(System.in);
String temp;
while(in.hasNextLine()) {
temp = in.nextLine();
if (checker.check(temp)) {
System.out.println("Syntax correct");
} else {
System.out.println("Syntax error");
}
}
System.out.println("Exiting checker");
}
}
【问题讨论】:
-
请问:这是作业吗?如果是,用户应该如何结束程序?用户输入的
in.hasNextLine()将始终返回true(我认为)。 -
同样在
check方法中,如果堆栈不为空或者除非下一次调用不能正常工作,你应该在最后清除堆栈 -
您在tio.run 中插入的代码(对类名稍作更改)按预期工作。所以请更详细地描述你的问题。
-
@Ackdari 是的,并且没有指定程序应该如何结束
-
@Ackdari 这是一个无限循环,我想知道如何摆脱它
标签: java while-loop stack brackets