Java实现字符串反转以'-'分隔时报类声明错误如何解决
错误产生原因
这是Java的基础语法强制规定:被public修饰的顶层类,类名必须和其所在的源代码文件名称完全一致(大小写也需要匹配)。你当前把代码存放在了Main.java文件中,但代码里的公共类名为ClassSet15,两者不匹配,因此编译器抛出该错误。
修复方案
二选一即可解决编译问题:
- 方案1:修改文件名
将存放代码的Main.java文件重命名为ClassSet15.java,和公共类名完全匹配即可正常编译。 - 方案2:修改类名
把代码中第三行的公共类定义改为public class Main {,和现有文件名Main.java匹配即可。
额外逻辑问题补充
你当前的代码解决编译问题后,运行会触发索引越界错误,因为插入-的逻辑存在问题:循环过程中调用insert会让StringBuffer的长度动态增加,你用固定的2*s1.length()-1作为循环边界,且直接用当前循环的i作为插入下标,会导致索引超出当前字符串长度。
可以优化为如下逻辑:
public static String reversedAndParsedString(String s1){ StringBuffer sb = new StringBuffer(s1).reverse(); for (int i = 1; i < sb.length(); i += 2) { sb.insert(i, '-'); } return sb.toString(); }
这样每插入一个-,下次插入位置向后跳2位,不会出现索引错误,也能得到符合要求的输出。
内容的提问来源于stack exchange,提问作者Sparkle
相关产品推荐
相关产品推荐

