2016-09-11 86 views
1

所以IPv4的字符串傳遞給isValidElement爲什麼不是這個字符串數組工作?

public static boolean isValidElement(String token) { 
    String[] validString = token.split("\\."); 
    if (validString.length != 4) 
     return false; 
    for (String str: validString) { 
     try{     
      int i = Integer.parseInt(str); 
      if ((i < 0) || (i > 255)) { 
       return false; 
      } 
     } 
     catch(NumberFormatException ex){ 
      return false; 
     } 
    } 
    return true; 
} 

和多數民衆都非常愉快,但是當該字符串傳遞給字符串存儲到一個數組的方法,它doenst工作。

public void setParts(String ip) { 
    parts = new int[4]; 
    if (!isValidElement(ip)) 
     for(int i = 0; i <= parts.length; i++) 
      parts[i] = 0; 
    else 
     try { 
      String[] ipArr = ip.split("\\."); 
      for (int i = 0; i < ipArr.length; i++) { 
       parts[i] = Integer.parseInt(ipArr[i]); 
      } 
     } 
     catch (NumberFormatException e) { 
      parts = new int[4]; 
     } 
} 

我去哪裏錯了/我錯過了什麼?

我有一個JUnit測試

public void testSetPartsString() { 
    correct1.setParts("12.14.16.18"); 
    int[] a = correct1.getParts(); 
    assertEquals(4, a.length); 
    assertEquals(12, a[0]); 
    assertEquals(14, a[1]); 
    assertEquals(16, a[2]); 
    assertEquals(18, a[3]); 

,但是它停止在

assertEquals(4, a.length); 

工作我不是正確復位實例組的部分?

+1

請張貼[MCVE。 – c0der

+0

爲什麼不設置斷點並在調試模式下觀看代碼? –

+0

@TimmyJim我通過setParts插入斷點但它不適用於我 –

回答

0

以下代碼工作得很好。

public class AssertionCheck { 

public static void main(String[] args) { 
    String ip="12.14.16.18"; 
    int[] parts = new int[4]; 
      if(!(isValidElement(ip))) 
       for(int i = 0; i<=parts.length; i++) 
        parts[i] = 0; 
      else{ 
        String[] ipArr = ip.split("\\."); 
        Assert.assertEquals(4, ipArr.length); 
        Assert.assertEquals(12, Integer.parseInt(ipArr[0])); 
        Assert.assertEquals(14, Integer.parseInt(ipArr[1])); 
        Assert.assertEquals(16, Integer.parseInt(ipArr[2])); 
        Assert.assertEquals(18, Integer.parseInt(ipArr[3])); 
        System.out.println("Assertion completed Successfully"); 
      } 
      } 

public static boolean isValidElement(String token) { 
    String[] validString = token.split("\\."); 
    if (validString.length != 4) 
     return false; 
    for (String str: validString) { 
     try{     
      int i = Integer.parseInt(str); 
      if ((i < 0) || (i > 255)) { 
       return false; 
      } 
     } 
     catch(NumberFormatException ex){ 
      return false; 
     } 
    } 
    return true; 
} 

}

相關問題