我的代码采用一个包含代码的文本文件,当它看到{时,它会将缩进增加4并且当它看到}时,它会将缩进减少4个。我遇到的问题是当双重时括号pops(}}或{{)或当一行有两个();我无法成功地将它们分开并在下一行打印出正确的缩进。
public static void face (Scanner File){
int spacect = 0;
while (File.hasNextLine()) {
String w = File.nextLine();
String a = w.trim();
if(a.contains(})){
spacect-=4;
}
for(int i=0;i<spacect;i++){
System.out.print(space);
}
if(a.contains({)){
spacect+=4;
}
}
<小时/> 示例文件输入将是:
public static void sound (String t, PrintStream output){
Scanner d = new Scanner(t);
if(d.hasNext())
{
output.print(d.hasNext());
while (d.hasNext()){
output.print(" " + d.next();}}
output.println(); d.close();
}
正确的输出应该是:
public static void sound (String t, PrintStream output){
Scanner d = new Scanner(t);
if(d.hasNext()){
output.print(d.hasNext());
while (d.hasNext()){
output.print(" " + d.next();
}
}
output.println();
d.close();
}
答案 0 :(得分:0)
您的问题是您使用String.contains("{")
和{{
。如果您的字符串包含{
,则其字符串只会与}}
相同,而}
和String.contains()
则相同。这是因为true
只是告诉你是否包含该字符。如果角色重复,它仍然只是说{
。因此,如果一行上有多个括号,那么您当前的代码不知道。
每次看到}
或{{1}}时,您都需要执行类似迭代字符串和更改缩进级别的操作。