尝试获取Java函数以基于传递给它的字符串参数返回数组 - java

这就是我想要做的;我正在尝试编写一个小程序,该程序使用一个函数来获取包含基于所选部门的部门成员的数组。大约有40个部门,每个部门有1-4个成员。所以我做了这个,但是我似乎无法解析为一个变量:

从主要:

String[]names = initial(department)

部门是传递给功能的部门的名称。在函数中,我有:

public static String[] initial (String responsibleDepartment) {

    if (responsibleDepartment.equals("Accounts Receivable")) {
        String[] assignInitial = {"Mike Davis", "Ben Jones", "Ann Smith"}
     }

    if (responsibleDepartment.equals("Customer Service")) {
        String[] assignInitial = {"Mary Wexler", "Turd Ferguson"}
     }

   // and 38 more if statements with the rest of the departments. Finally I have:
        return assignInitial;
        }

如此看来,“ assignInitial无法解析为变量”(这就是return语句的意思。)如果我尝试在第一个“ if”语句之前初始化变量,然后删除String []的初始化在第一个“ if”语句中的assignInitial旁边,然后显示“数组常量只能在初始化程序中使用”。我相信有更好的方法可以做到这一点,但是我似乎无法在网上找到任何进展。有没有人?

非常感谢!
-蒙克

参考方案

问题在于您要在String[] assignInitial语句中声明每个if,因此该变量的作用域是if语句的局部范围。在if语句之外,未声明该变量。

要解决此问题,请将声明从if范围拉出,并放入方法范围。您必须在每个数组前面添加new String[],因为数组常量只能在初始化程序中使用。

public static String[] initial (String responsibleDepartment) {

String[] assignInitial = null;

if (responsibleDepartment.equals("Accounts Receivable")) {
    // Note the new String[] below
    assignInitial = new String[] {"Mike Davis", "Ben Jones", "Ann Smith"};
 }

if (responsibleDepartment.equals("Customer Service")) {
    assignInitial = new String[] {"Mary Wexler", "Turd Ferguson"};
 }

// Other if statements here

return assignInitial;

请注意,除了这一系列的assignInitial语句以外,还有其他更简便的方法可以找到if的值。例如,您可以构建switch语句或Map<String, String>

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

Java-固定大小的列表与指定初始容量的列表之间的差异 - java

我在理解这一点上遇到了问题。当我们做 List<Integer> list = Arrays.asList(array); 我们不能在该列表上使用添加,删除之类的方法。我知道Arrays.asList()返回固定大小的列表。我不明白的是,如果我们创建一个具有指定初始容量的列表,例如List<Integer> list2 = new A…

从方法返回数组-Java - java

private static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…

Java Double与BigDecimal - java

我正在查看一些使用双精度变量来存储(360-359.9998779296875)结果为0.0001220703125的代码。 double变量将其存储为-1.220703125E-4。当我使用BigDecimal时,其存储为0.0001220703125。为什么将它双重存储为-1.220703125E-4? 参考方案 我不会在这里提及精度问题,而只会提及数字…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…