You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多类协作开发问题: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();
}

总结

  1. 先修正调用方式,确保给printRev传入正确的员工姓名参数;
  2. 替换掉原来错误的反转逻辑,用上面两种正确写法中的任意一种即可。

内容的提问来源于stack exchange,提问作者Gray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:39:52