Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 解析此字符串然后返回它时出现问题_Java - Fatal编程技术网

Java 解析此字符串然后返回它时出现问题

Java 解析此字符串然后返回它时出现问题,java,Java,我已经尝试将这个字符串格式“X->I”解析为字符串[“X”]和字符串[“I”]有一段时间了,但还没有成功。有人能帮我吗 我试过: public String[] parse(){ String s = "X -> i"; String[] tokens = s.split(" -> "); for (String t : tokens) return new String myarray[] {t, t};

我已经尝试将这个字符串格式“X->I”解析为字符串[“X”]和字符串[“I”]有一段时间了,但还没有成功。有人能帮我吗

我试过:

public String[] parse(){

     String s = "X -> i";

        String[] tokens = s.split(" -> ");

        for (String t : tokens)
          return new String myarray[] {t, t};
        return myarray[];

}

它不会编译,但我无法从逻辑上找出问题所在。

比这简单得多

public String[] parse(){

    String s = "X -> i";

    String[] tokens = s.split(" -> ");

    return tokens;
}

编译错误源于您有两个return语句。你只需要一个。修复此错误(您询问的错误)后,必须考虑其他答案。

有几个“逻辑”问题:

public String[] parse(){
    String s = "X -> i";
    String[] tokens = s.split(" -> ");
    return tokens;
}
  • 您有2个return语句,没有大括号来分隔循环逻辑。(虽然这不是必需的,但它是java约定,更好地提高可读性,并减少出现看不见的bug的机会

    parse() {
        return new String myarray[] {t, t};
        return myarray[];
    }
    
    删除后者

  • public String[][] parse(String toParse) {
    
        // String s = "X -> i";
        String[] tokens = toParse.split(" -> ");
        String[][] temp = new String[tokens.length][];
    
        int i = 0;
        for (String t : tokens) {
             temp[i++] = new String[] { t, t };
        }
        return temp;
    }
    
  • 变量名“myarray”的使用是多余的,请删除它们并保留array[]声明语法

  • 您正在使用一种方法

    最好从方法中提取变量

    public static String[] parse(String toParse) {
        return toParse.split(" -> ");
    }
    
  • 从这些错误来看,似乎不知道您实际想要返回的令牌的格式是什么?您想要的是split方法生成的令牌的实际数组吗?还是想要两个数组。下面是关于后者的一些疯狂代码

    public String[][] parse(String toParse) {
    
        // String s = "X -> i";
        String[] tokens = toParse.split(" -> ");
        String[][] temp = new String[tokens.length][];
    
        int i = 0;
        for (String t : tokens) {
             temp[i++] = new String[] { t, t };
        }
        return temp;
    }
    

    看起来您只需要返回
    标记本身。这就是您所需要的:
    公共字符串[]parse(){return“X->i.split(->)”;}
    返回令牌将为我创建数组?你和@Greg有相似的答案…但为什么你使用static而他没有使用?对..这是一个错误。我刚刚测试了这个方法,并从static main调用了它。忘了删除它。编辑