有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么数组中的字符串不起作用?

因此,一个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; 
}

这一切都很好,但当字符串被传递给方法以将字符串存储到数组中时,它就不起作用了

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) 个答案

  1. # 1 楼答案

    下面的代码工作得很好

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

    }