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
- 根据字符串的数量为循环创建一个
- 循环,使用索引(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
映射
来保持IP和网络掩码的连接,尤其是在IP不同的情况下。将{“10.0.0.138,10.0.0.138}更改为{“10.0.0.138”,“10.0.0.138”}与interfacesNetmasks相同。或者最好使用地图
将您的IP和网络掩码连接到它们,尤其是在IP不同的情况下,等等。谢谢。除了语法错误之外,这正是我想要的。谢谢。除了语法错误之外,这正是我想要的。