-1

我目前是来自 Python 的 Java 新手,我似乎无法弄清楚如何返回 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;
        
    }
}

我什至仔细检查了我返回的变量是否是 HashMap。

这是一个例外。

线程“main”java.lang.Error 中的异常:未解决的编译问题:此方法必须返回 HashMap<Integer,Character> 类型的结果

我知道这可能是一个新手错误,但经过数小时的研究,我找不到任何有用的东西。

4

1 回答 1

1

将您的定义dictreturn语句移出循环,应该没问题(进入前的第一个,退出循环后的最后一个)。

在您当前的代码中,return不能保证该语句是可访问的(即,如果您的循环甚至没有进入),必须在非 void 函数中给出。

此外,您的方法将return在每个假设迭代中调用,这意味着您的方法将始终以第一次迭代结束。Areturn导致函数退出,无论之后发生什么,这意味着您的代码将无法按预期工作。此外,您将创建多个 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
}
于 2020-10-23T13:56:32.897 回答