帮帮我,我想返回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;
}
答案 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)错误完全是什么。您只写了“那里到那里都有错误”。正如您对问题的评论中已经提到的那样,您在说什么错误?什么样的错误?在这种情况下,说实话很明显,但是在其他情况下,情况可能并非如此。因此,如果您没有彻底描述错误和预期行为和错误行为,则可能只会得到许多不相关的答案,或者根本没有答案。