【问题标题】:Storing an array of formatted names in JAVA?在 JAVA 中存储格式化名称的数组?
【发布时间】:2018-12-17 21:06:41
【问题描述】:

我的作业遇到了麻烦,而且我一直在摸索很长时间。这是标准—— 您的 EmployeeNames 类需要有一个名为 convertName() 的静态方法。 该方法应接受姓氏的array 作为输入参数。 该方法应返回格式化名称的array(名字和中间名首字母以及姓氏)。 对于每个元素,它应该确定名称的第一个首字母和中间首字母并正确格式化(例如,H. T. Smith) 它应该将这些格式化名称中的每一个都存储为格式化名称数组中的元素。

处理完所有名称后,该方法应将格式化名称array返回给调用程序。

这是我的代码:

public class EmployeeNames {
    String[] names;
    public static String convertName(String names) {
        for (int i=0; i<10; i++) {
            names[i] = names.substring(names[i].length - 2, names[i].length);
        }
        return names;
    }
}

它现在甚至无法正常工作,因为我收到了“array required,但java.lang.String found”错误。但即使在那之后,我也不知道该怎么办。有人可以帮忙吗?

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    处理完所有名称后,该方法应返回格式化的 名称数组返回给调用程序。

    您必须更改方法以返回 String[] 而不是 String

    public static String[] convertName(String[] nameString) { ... }
    
                                                  ^
                                                  |
    
                         /* Note: I have changed it to avoid any confusions */
    

    您还必须将names 设为static

    private static String[] names;
    

    编辑:感谢@Mark 指出该方法还应接受String[] 而不是单个String 对象。

    【讨论】:

    • 刚刚试了一下,但是出现了“需要数组,但是找到了 java.lang.String”的错误,现在在返回码处出现了不兼容的类型错误(String 无法转换为 String[] ?)
    • 我没有意识到你的形式参数的名称也是names。将其更改为 nameString 等其他内容。
    • 要求还说“该方法应该接受一个姓氏数组作为输入参数。”这就是为什么我认为应该删除全局 names 并方法参数从String更改为String[]
    • @Mark 抱歉,我错过了那部分。将更新我的答案。感谢您指出。
    【解决方案2】:

    问题

    我收到“需要数组,但找到 java.lang.String”错误。

    您有一个名为names 的全局变量,但还有在您的方法参数中有一个名为names 的变量。

    因为它们具有相同的名称,所以方法参数中的names 隐藏了全局变量names。由于您的方法参数 names 被声明为 String 而不是 String[] 它会抛出该错误。

    修复

    要解决您的问题,请删除全局 names 并将参数 namesString 更改为 String[]

    之后你会注意到你也应该改变:

    • StringString[]的返回类型
    • names.substringnames[i].substring
    • names[i].lengthnames[i].length() 因为这是 String 的长度方法。

    更改代码

    修改后的代码:

    public class EmployeeNames {
    
        public static String[] convertName(String[] names) {
            for (int i = 0; i < 10; i++) {
                names[i] = names[i].substring(names[i].length() - 2, names[i].length());
            }
            return names;
        }
    }
    

    【讨论】:

    • 嗨,马克,刚刚尝试过——删除了全局变量,并按照您的建议将 String 转换为 String[]。但是,错误似乎仍然存在。
    • @taramenon 是同一个错误还是不同的错误?
    • 其实看到你修改后的代码版本,就可以了!我想我只是错过了一步。非常感谢!
    猜你喜欢
    • 2012-02-05
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多