Java 我的程序符合要求,但不';不要打印任何东西
我正在编写这个程序,检查Java 我的程序符合要求,但不';不要打印任何东西,java,Java,我正在编写这个程序,检查{[(/*是否与])”*//code>平衡,我们需要忽略注释块中的内容。我在终端运行代码时遇到了一个问题,没有打印出来。我知道错误在哪里,但不知道为什么错了。在我试图编写忽略注释的代码之后,我开始遇到这个奇怪的问题。我们需要编写自己的名为MyStack.java的堆栈类,但它非常简单,所以这里不包括它 我认为问题发生在这里: int start = str.indexOf("/*"); int end = str.indexOf("*/"); if(start != -1
{
[
(
/*
是否与
]
)
”
*//code>平衡,我们需要忽略注释块中的内容。我在终端运行代码时遇到了一个问题,没有打印出来。我知道错误在哪里,但不知道为什么错了。在我试图编写忽略注释的代码之后,我开始遇到这个奇怪的问题。我们需要编写自己的名为MyStack.java的堆栈类,但它非常简单,所以这里不包括它
我认为问题发生在这里:
int start = str.indexOf("/*");
int end = str.indexOf("*/");
if(start != -1){
str = str.substring(0,start) + str.substring(end+2);
以下是全部代码:我希望没有任何逻辑谬误
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class SymbolBalance {
public static void main(String[] args){
if(args.length>0){
try{
Scanner input = new Scanner(new File (args[0]));
MyStack<Character> ms = new MyStack<>();
String str;
char ch;
boolean quoteStart = true;
loop: while(input.hasNext()){
str = input.next();
int start = str.indexOf("/*");
int end = str.indexOf("/*");
if(start != -1){
str = str.substring(0,start) + str.substring(end+2);
for(int i=0;i<str.length();i++){
ch = str.charAt(i);
if(ch == '{'||ch =='(' || ch=='[')
{
ms.push(ch);
}
else if((ch == '/'&&i<str.length() -1&&str.charAt(i+1)=='*')){
ms.push(str.charAt(i+1));
}
else if (ch==')'){
if(ms.isEmpty()||ms.pop()!= '('){
System.out.println(") is mismatched");
break loop;
}
}
else if(ch == ']'){
if(ms.isEmpty() || ms.pop() != '['){
System.out.println("] is mismatched");
break loop;
}
}
else if(ch == '}'){
if(ms.isEmpty() || ms.pop() != '{'){
System.out.println("} is mismatched");
break loop;
}
}
else if(ch == '*' && i<str.length()-1&&str.charAt(i+1) == '/'){
if(ms.isEmpty() || ms.pop() != '*'){
System.out.println("*/ is mismatched");
break loop;
}
}
else if(ch == '"'){
if(quoteStart == true) {
ms.push(ch);
quoteStart = false;
}
else {
if(ms.isEmpty() || ms.pop() != '"'){
System.out.println(" \" is mismatched");
break loop;
}
quoteStart = true;
}
}
}
}
}
input.close();
}
catch(FileNotFoundException e){
System.out.println("Cannot find file");
}
}
else{
System.out.println("No command line argument");
}
}
}
注释的开头和结尾使用相同的字符:
int start = str.indexOf("/*");
int end = str.indexOf("/*");
结束注释字符串应为:
int end = str.indexOf("*/");
在提出问题之前,您应该调试代码。“我认为问题发生在这里”您为什么这么认为?你认为问题出在哪里?你试过什么?您遇到了哪些问题,您不确定如何解决?StackOverflow是一个问答网站,不是一个调试服务。请发布包含示例的输入文件Hi,即使在编辑之后代码仍然不起作用。
int end = str.indexOf("*/");