多类协作开发问题:Worker类方法调用参数不匹配错误
解决Java方法调用报错与字符串反转逻辑问题
嘿,我来帮你搞定这两个问题!咱们一步步拆解:
一、方法调用报错的直接原因
你定义的printRev(String fName)方法必须接收一个String类型的参数,但你在UseWorker.java里调用时写的是anil.printRev();这种无参的写法——Java编译器找不到匹配的无参printRev方法,所以才会抛出"The method printRev(String) in the type Worker isn't applicable for the..."的错误。
解决这个问题很简单:调用时把员工的姓名作为参数传进去就行。比如你的Worker类有个name成员变量,那调用代码应该改成:
// 假设name是公共属性,或者用getter方法如anil.getName() anil.printRev(anil.name); jasmin.printRev(jasmin.name); fred.printRev(fred.name);
二、字符串反转逻辑的错误
另外,你当前的printRev方法逻辑并不能正确实现字符串反转!咱们看你的循环代码:
public String printRev(String fName) { for (int i = 0; i < fName.length(); i++) { fName = fName.charAt(i) + fName; } return fName; }
每次循环都会把当前索引的字符拼接到原字符串前面,最终得到的是重复叠加的结果(比如输入"Anil",最终会得到inAAAnil这种完全不符合预期的字符串),根本不是反转后的结果。
正确的反转实现方案
这里给你两种靠谱的写法:
写法1:手动从后往前遍历拼接
用StringBuilder(比直接拼接String更高效)从字符串最后一位开始往前遍历,逐个追加字符:
public String printRev(String fName) { StringBuilder reversedStr = new StringBuilder(); // 从最后一个字符的索引开始,向前遍历到第一个字符 for (int i = fName.length() - 1; i >= 0; i--) { reversedStr.append(fName.charAt(i)); } return reversedStr.toString(); }
写法2:利用StringBuilder自带的reverse方法(更简洁)
Java的StringBuilder类已经内置了反转方法,直接用它就行,代码更简洁:
public String printRev(String fName) { return new StringBuilder(fName).reverse().toString(); }
总结
- 先修正调用方式,确保给
printRev传入正确的员工姓名参数; - 替换掉原来错误的反转逻辑,用上面两种正确写法中的任意一种即可。
内容的提问来源于stack exchange,提问作者Gray
相关产品推荐
相关产品推荐

