在 java 中返回一个 HashMap
Returning a HashMap in java
我目前是 Java 的新手,来自 Python,我似乎无法弄清楚如何 return HashMap,我尝试在网上搜索了几个小时但找不到任何可以解决我的问题的东西。
这是代码。
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;
}
}
我什至仔细检查了我正在 returning 的变量是否是 HashMap。
这里是例外。
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
This method must return a result of type HashMap<Integer,Character>
我知道这可能是菜鸟犯的错误,但经过数小时的研究我找不到任何有用的东西。
把你定义的dict
和你的return
语句移出循环,应该没问题(进入循环前的第一个,退出循环后的最后一个)。
在您当前的代码中,return
语句不保证可以访问(即,如果您的循环甚至没有进入),必须在 non-void 函数中给出。
此外,您的方法将在每次假设迭代中调用 return
,这意味着您的方法将始终以第一次迭代结束。 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
}
我目前是 Java 的新手,来自 Python,我似乎无法弄清楚如何 return HashMap,我尝试在网上搜索了几个小时但找不到任何可以解决我的问题的东西。 这是代码。
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;
}
}
我什至仔细检查了我正在 returning 的变量是否是 HashMap。
这里是例外。
Exception in thread "main" java.lang.Error: Unresolved compilation problem: This method must return a result of type HashMap<Integer,Character>
我知道这可能是菜鸟犯的错误,但经过数小时的研究我找不到任何有用的东西。
把你定义的dict
和你的return
语句移出循环,应该没问题(进入循环前的第一个,退出循环后的最后一个)。
在您当前的代码中,return
语句不保证可以访问(即,如果您的循环甚至没有进入),必须在 non-void 函数中给出。
此外,您的方法将在每次假设迭代中调用 return
,这意味着您的方法将始终以第一次迭代结束。 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
}