2015-09-20 233 views
1

我有这一点的代码,但是我得到一个ArrayIndexOutofBoundException。我意识到split函数删除所有空数组元素,但我相信如果我添加一个负限制,空数组元素将不会被删除。话虽如此,inputString [3]仍然超出界限。我知道我可以创建另一个String []数组并复制inputString []中的值,然后将元素添加到我的新数组中,但我想知道是否有办法停止拆分函数以放弃空数组元素。Java拆分丢弃空数组元素

public static String[] getData() { 
    String weightHeight = JOptionPane.showInputDialog("Enter your weight in pounds \nfollowed by a comma \nfollowed by your height in inches"); 
    String[] inputString = new String[4]; 
    inputString = weightHeight.split(",|\\'", -1); 
    if(inputString[2]!= null){ 
     inputString[3] = inputString[1]; 
    } 
    return inputString;  
+0

'new String [4]'丢失,split将返回另一个数组。 – laune

+0

因为拆分函数会创建一个新数组。所以你预先确定数组大小为4是不会在这里实现的。而不是零检查,我将使用inputString.length> 2检查 – DhruvG

+0

if语句应该实现的是什么? – laune

回答

0

希望这会对你有所帮助。我已经创建了一个合并函数来将split函数的输出合并到你的inputString数组中。

private static void merge(String[] source, String[] dest) { 
    for(int i=0; i< dest.length && i< source.length; i++) { 
     dest[i] = source[i]; 
    } 
} 
public static String[] func(String[] args) { 
    String input = "150,5'6"; 
    String[] inputString = new String[4]; 
    merge(input.split(",|\\'", -1), inputString); 
    if(inputString[2]!= null){ 
     inputString[3] = inputString[1]; 
    } 

    return inputString;  


}