gpt4 book ai didi

java - 缩进某个字符之后的所有行,直到另一个字符

转载 作者:行者123 更新时间:2023-12-02 13:37:18 25 4
gpt4 key购买 nike

对于作业,我们正在创建一个 java 程序,它接受 java 文件,修复困惑的代码并输出到新文件。

我们假设每行只有一个括号 { } 并且每个括号出现在该行的末尾。 If/else 语句也使用括号。

我目前无法找到一种方法来缩进左括号后的每一行直到下一个右括号,然后减少右括号后的缩进直到下一个左括号。我们还需要使用以下方法:

稍微更新了代码:

public static void processJavaFile() {
}
}

最佳答案

这个算法应该可以帮助您入门。我留下了一些你必须修复的小故障。(例如,它不会像当前编写的那样缩进 {括号},并且会为每个分号添加一个额外的换行符)

缩进由“深度”计数器处理,该计数器跟踪要添加的“选项卡”数量。

如果您想要对每次迭代进行更多控制,请考虑使用条件 for 循环而不是 foreach。 (我写这篇快速而肮脏的文章只是为了让您了解如何完成)

public String parse(String input) {
StringBuilder output = new StringBuilder();
int depth = 0;
boolean isNewLine = false;
boolean wasSpaced = false;
boolean isQuotes = false;
String tab = " ";
for (char c : input.toCharArray()) {
switch (c) {
case '{':
output.append(c + "\n");
depth++;
isNewLine = true;
break;
case '}':
output.append("\n" + c);
depth--;
isNewLine = true;
break;
case '\n':
isNewLine = true;
break;
case ';':
output.append(c);
isNewLine = true;
break;
case '\'':
case '"':
if (!isQuotes) {
isQuotes = true;
} else {
isQuotes = false;
}
output.append(c);
break;
default:
if (c == ' ') {
if (!isQuotes) {
if (!wasSpaced) {
wasSpaced = true;
output.append(c);
}
} else {
output.append(c);
}
} else {
wasSpaced = false;
output.append(c);
}
break;
}
if (isNewLine) {
output.append('\n');
for (int i = 0; i < depth; i++) {
output.append(tab);
}
isNewLine = false;
}
}
return output.toString();
}

关于java - 缩进某个字符之后的所有行,直到另一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42918561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com