2016-09-11 2 views
1

따라서는 IPv4 문자열은이 문자열이 배열 작업에 영향을 미치지 않는 이유는 무엇입니까?

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

을 isValidElement에 전달 벌금과 멋쟁이 모든 먹으 렴하지만 문자열이 문자열을 배열로 저장하는 방법에 전달 될 때, 그것은 일을 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 테스트는하지만 내가하지 제대로 인스턴스 배열 부분을 다시 적이

assertEquals(4, a.length); 

에서

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]); 

작동을 멈 춥니 다 있나요?

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

}

관련 문제