2012-12-04 35 views
0

我一直试图解析这个字符串格式“X - >我”到字符串[“X”]和字符串[“我”]一段时间,但没有得到它上班。谁能帮我吗?解析这个字符串然后返回它的问题

我已经试过:

public String[] parse(){ 

    String s = "X -> i"; 

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

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

} 

它不会编译,但我不能找出问题的所在逻辑。

+4

看起来你想要做的就是返回'标记'本身。 –

+1

这就是你需要的一切:'public String [] parse(){return“X - > i”.split(“ - >”); }' – dasblinkenlight

+0

返回标记将为我创建数组? – EGHDK

回答

0

它比

public String[] parse(){ 

    String s = "X -> i"; 

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

    return tokens; 
} 
+0

你和@Greg有类似的答案......但你为什么不使用静态? – EGHDK

+1

对..这是一个错误。我只是测试这个方法,并从一个静态主调用它。忘了删除它。编辑即将到来 – cjds

0

你的编译错误来源于事实,你有两个return语句简单得多。你只需要一个。一旦你解决了这个错误(你问到的那个),其他答案就必须考虑在内。

1
public String[] parse(){ 
    String s = "X -> i"; 
    String[] tokens = s.split(" -> "); 
    return tokens; 
} 
0

有几个 '逻辑' 的问题:

  1. 你有2个return语句,并没有花括号来分割循环逻辑。 (虽然不是必需的它是java约定,可读性更好,减少了看不见的错误的机会。

    parse() { 
        return new String myarray[] {t, t}; 
        return myarray[]; 
    } 
    

    删除了后者。

  2. 使用的变数名称的“myarray中”是多余的,删除它们保持在阵列[]声明的语法。

  3. 您正在使用的方法。

    会更好地从所述方法中提取的变量中。

    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; 
}