返回数组到另一个类

时间:2019-04-12 07:44:32

标签: java

帮帮我,我想返回HashMap的结果 但是最后显示错误“ return lg”

public static void main(String[] langCookies) {

    if (langCookies.equals("ind")) {  
        Map<String, String> lg = new HashMap<>();
        lg.put("Login", "Masuk");
    } else if (langCookies.equals("eng")) {  
        Map<String, String> lg = new HashMap<>();
        lg.put("Login", "Login");
    } else {
        Map<String, String> lg = new HashMap<>();
        lg.put("Login", "Login"); 
    }

    return lg;    
}

1 个答案:

答案 0 :(得分:1)

好吧,...您的代码段有很多问题。

首先,变量的范围。您要在方法中返回的HashMap在if子句的每个块中都已定义(并重新定义)。这意味着,它仅在这个非常特定的块中有效。因此,即使您能够通过main方法返回内容,HashMap甚至在这里都无效。

第二,您需要了解main方法的用途。它是程序的入口,仅用于进行需要立即完成的基本设置,然后调用其他对您来说很繁重的方法。因为它是Java中每个程序的入口,所以它具有固定的方法签名,如下所示:

public static void main(String[] args) {}

在您的情况下,请特别注意单词void,这表示返回类型,因为什么都不会可以返回。而且由于不允许您更改main方法的签名,并且因为这样您的程序将无法再启动,因此无法在main方法本身中返回任何内容。

您可以执行以下操作:

public static void main(String args) {
    //here comes generic stuff you may need to do on startup
    //also, you need to get your langCookies from somewhere, i suppose its meant to  
    //be passed as a parameter on startup?
    HashMap<String, String> langCookies = processLangCookies(args);
    //do stuff with langCookies, or whatever you want to call that variable.
}

public static HashMap<String, String> processLangCookies(String[] langCookies) {
    HashMap<String, String> lg = new HashMap<String, String>();
    if(langCookies.equals("ind")) {  
        lg.put("Login", "Masuk");
    } else if(langCookies.equals("eng")) {  
        lg.put("Login", "Login");
    } else {
        lg.put("Login", "Login"); 
    }
    return lg;
}

尽管上面的代码主要基于假设,因为您没有写,a)您想完全要做的事情,b)错误完全是什么。您只写了“那里到那里都有错误”。正如您对问题的评论中已经提到的那样,您在说什么错误?什么样的错误?在这种情况下,说实话很明显,但是在其他情况下,情况可能并非如此。因此,如果您没有彻底描述错误预期行为错误行为,则可能只会得到许多不相关的答案,或者根本没有答案。