2016-11-24 30 views
0

下工作正常时,有每个阵列中只有一个入口,否则会导致IllegalArgumentException并行迭代两个String []数组?

String[] defaultGWs = {"10.0.0.138, 10.0.0.138"}; 
String[] interfacesNetmasks = {"255.255.255.0, 255.255.255.0"}; 

for (String defaultGW: defaultGWs) { 
     for (String interfacesNetmask: interfacesNetmasks) { 
      SubnetInfo subnetInfo = (new SubnetUtils(defaultGW, interfacesNetmask).getInfo()); 

      // CIDR signature 
      String cidrSignature = subnetInfo.getCidrSignature(); 
      System.out.println("CIDR Signature: " + cidrSignature); 
     } 

例外:

Exception in thread "main" java.lang.IllegalArgumentException: Could not parse [255.255.255.0, 255.255.255.0] 
    at org.apache.commons.net.util.SubnetUtils.toInteger(SubnetUtils.java:287) 
    at org.apache.commons.net.util.SubnetUtils.toCidrNotation(SubnetUtils.java:360) 
    at org.apache.commons.net.util.SubnetUtils.<init>(SubnetUtils.java:62) 
    at GetSubnetInfoJava.main(GetSubnetInfoJava.java:13) 

我怎样才能通过网关的大名单环和并行的网络掩码,以便在每次迭代中,我可以生成一个新的subnetInfo对象?

+2

更改{ “10.0.0.138,10.0.0.138”}到{ “10.0.0.138”, “10.0.0.138”}同样与interfacesNetmasks。 –

+0

或者可能更好地使用'Map '来保持你的IP和网络掩码,特别是如果IP不同等。 –

回答

2

您当前的代码实际上遍历全部 interfaceNetmasks for each de faultGW所以如果你想通过数组并行:

  • 创建基于字符串的数量环一个
  • 通过循环使用索引(for循环编号)从每个数组中拉出一个字符串。
  • 保持代码的其余部分相同 - 除了修复数组项中的引号外。

    String[] defaultGWs = {"10.0.0.138", "10.0.0.138"}; 
    String[] interfacesNetmasks = {"255.255.255.0", "255.255.255.0"}; 
    
    for (int i = 0; i < defaultGWs.length; i++) { 
    
        SubnetInfo subnetInfo = (new SubnetUtils(defaultGWs[i], interfacesNetmasks[i]).getInfo()); 
    
        // CIDR signature 
        String cidrSignature = subnetInfo.getCidrSignature(); 
        System.out.println("CIDR Signature: " + cidrSignature); 
    
    } 
    
+0

谢谢。除了我犯的这个语法错误之外,我正是这么做的。 – santafebound

2
String[] defaultGWs = {"10.0.0.138, 10.0.0.138"}; 
String[] interfacesNetmasks = {"255.255.255.0, 255.255.255.0"}; 

这些都是问题所在。你声明一个只有1个条目的字符串数组。将其更改为

String[] defaultGWs = {"10.0.0.138", "10.0.0.138"}; 
String[] interfacesNetmasks = {"255.255.255.0","255.255.255.0"}; 

现在你有2个阵列,2项,您可以通过正常

1

更改迭代:

String[] defaultGWs = {"10.0.0.138, 10.0.0.138"}; 
String[] interfacesNetmasks = {"255.255.255.0, 255.255.255.0"}; 

要:

String[] defaultGWs = {"10.0.0.138", "10.0.0.138"}; 
String[] interfacesNetmasks = {"255.255.255.0", "255.255.255.0"};