在JAVA中存储一组格式化的名称?

时间:2018-12-17 21:06:41

标签: java arrays arraylist

我在分配作业时遇到了麻烦,而且很长一段时间以来我一直在挠头。这是标准- 您的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,但找到了java.lang.String”错误,它现在甚至无法正常工作。但是即使那样,我也不知道该怎么办。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

  

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

您必须更改返回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对象。

答案 1 :(得分:0)

问题

  

我收到“需要数组,但找到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;
    }
}