Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 并行遍历两个String[]数组?_Java_String_Iterator - Fatal编程技术网

Java 并行遍历两个String[]数组?

Java 并行遍历两个String[]数组?,java,string,iterator,Java,String,Iterator,当每个数组中只有一个条目时,以下操作可以正常工作,但会导致出现IllegalArgumentException: 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: in

当每个数组中只有一个条目时,以下操作可以正常工作,但会导致出现
IllegalArgumentException

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)
线程“main”java.lang.IllegalArgumentException中的异常:无法分析[255.255.255.0,255.255.255.0] 位于org.apache.commons.net.util.SubnetUtils.toInteger(SubnetUtils.java:287) 位于org.apache.commons.net.util.SubnetUtils.tocidrotation(SubnetUtils.java:360) 位于org.apache.commons.net.util.SubnetUtils。(SubnetUtils.java:62) 在GetSubnetInfoJava.main(GetSubnetInfoJava.java:13) 我如何并行地循环通过大量网关和网络掩码,以便在每次迭代中生成一个新的subnetInfo对象

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"};
现在,您有了2个包含2个条目的数组,可以对其进行适当的迭代

这就是问题所在。声明一个字符串数组,每个字符串只有一个条目。换成

String[] defaultGWs = {"10.0.0.138", "10.0.0.138"};
String[] interfacesNetmasks = {"255.255.255.0","255.255.255.0"};
现在,您有了2个包含2个条目的数组,您可以正确地对其进行迭代

更改:

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"};
致:


您当前的代码实际上会遍历每个defaultGW的所有InterfaceNet掩码,因此如果您希望并行遍历数组:

  • 根据字符串的数量为循环创建一个
  • 循环,使用索引(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);
    
    }
    
    String[]defaultGWs={“10.0.0.138”,“10.0.0.138”};
    字符串[]interfacesNetmasks={“255.255.255.0”,“255.255.255.0”};
    for(int i=0;i

您当前的代码实际上会遍历每个defaultGW的所有InterfaceNet掩码,因此如果您希望并行遍历数组:

  • 根据字符串的数量为循环创建一个
  • 循环,使用索引(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);
    
    }
    
    String[]defaultGWs={“10.0.0.138”,“10.0.0.138”};
    字符串[]interfacesNetmasks={“255.255.255.0”,“255.255.255.0”};
    for(int i=0;i

将{“10.0.0.138,10.0.0.138}更改为{“10.0.0.138”,“10.0.0.138}与interfacesNetmasks相同。或者最好使用
映射
来保持IP和网络掩码的连接,尤其是在IP不同的情况下。将{“10.0.0.138,10.0.0.138}更改为{“10.0.0.138”,“10.0.0.138”}与interfacesNetmasks相同。或者最好使用
地图
将您的IP和网络掩码连接到它们,尤其是在IP不同的情况下,等等。谢谢。除了语法错误之外,这正是我想要的。谢谢。除了语法错误之外,这正是我想要的。