返回java中的HashMap
我目前刚接触Python的Java,我似乎不知道如何返回HashMap,我在网上搜索了几个小时,但找不到任何可以解决我问题的方法。 这是密码返回java中的HashMap,java,string,hashmap,return,Java,String,Hashmap,Return,我目前刚接触Python的Java,我似乎不知道如何返回HashMap,我在网上搜索了几个小时,但找不到任何可以解决我问题的方法。 这是密码 public HashMap<Integer, Character> dataset(String text) { for (int i = 0; i < text.length(); i++) { char value = text.charAt(i); HashMap<I
public HashMap<Integer, Character> dataset(String text) {
for (int i = 0; i < text.length(); i++) {
char value = text.charAt(i);
HashMap<Integer, Character> dict = new HashMap<Integer, Character>();
dict.put(i, value);
System.out.println(dict.getClass().getSimpleName());
return dict; // Here's the error
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter text: ");
String text = sc.next();
System.out.println("============================");
System.out.println("1. Convert to uppercase");
System.out.println("2. Conver to lowercase");
System.out.println("3. Convert to a dataset");
System.out.print("Enter selection: ");
String choice = sc.next();
StringConverter obj = new StringConverter();
switch(choice) {
case "1":
text = obj.upperCase(text);
System.out.println("=====Converted to uppercase=====");
System.out.println(text);
break;
case "2":
text = obj.lowerCase(text);
System.out.println("=====Converted to lowercase=====");
System.out.println(text);
break;
case "3":
obj.dataset(text);
break;
}
}
公共HashMap数据集(字符串文本){
对于(int i=0;i
我甚至仔细检查了返回的变量是否是HashMap
这是个例外
线程“main”java.lang中出现异常。错误:未解决的编译问题:
此方法必须返回HashMap类型的结果
我知道这可能是新手犯的错误,但经过数小时的研究,我找不到任何有用的东西。将你的
dict
定义和return
语句移出循环,应该没问题(第一个在进入前,最后一个在退出循环后)
在您当前的代码中,return
语句不能保证是可访问的(即,如果您的循环甚至没有输入),必须在非void函数中给出
此外,您的方法将在每个假设迭代中调用return
,这意味着您的方法将始终以第一次迭代结束。返回
会导致函数退出,不管后面发生什么,这意味着您的代码将无法按预期工作。此外,还可以创建多个hashmap,因为每次迭代都要调用一次构造函数
public HashMap<Integer, Character> dataset(String text) {
HashMap<Integer, Character> dict = new HashMap<Integer, Character>();
for (int i = 0; i < text.length(); i++) {
char value = text.charAt(i);
dict.put(i, value);
System.out.println(dict.getClass().getSimpleName());
}
return dict; // Here's the error
}
公共HashMap数据集(字符串文本){
HashMap dict=新HashMap();
对于(int i=0;i
您从循环中返回,语法不允许只从块中返回,因为您的循环可能根本不会运行。例如,如果输入参数的大小为0,该怎么办?而是从方法返回。相应地,在方法级别定义dict
循环外。不要运行未编译的代码!错误信息很清楚:您的方法dataset
必须为每种可能的方式返回一些内容。如果text.length()
为零,则循环不会运行。在这种情况下,应该返回什么值?@GiorgiTsiklauri允许从for循环中返回(尽管在本例中,在循环中创建映射可能是错误的)。问题是编译器不够聪明,无法计算循环条件,因此它还需要在循环后返回某些内容。@markrottveel是的,只要考虑到所有可能的结果,它就是。编译器非常聪明地认为,这里唯一可能的返回变量对于动态输入是不合适的,因为该行可能永远不会执行。因此,您必须以一种方式对方法进行编码,即不考虑执行路径,您的方法将返回。。或者抛出异常。我想我的评论只提到。。虽然有点含糊,但我会这样澄清:如果涵盖了所有可能的输入,那么您可以从所需的任何方法块返回;我真不敢相信我在for循环中定义了变量,并在循环中添加了return语句。