Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回java中的HashMap_Java_String_Hashmap_Return - Fatal编程技术网

返回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

我目前刚接触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数据集(字符串文本){
对于(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语句。