【发布时间】:2012-03-03 10:03:33
【问题描述】:
我想生成一些随机 IP 地址。但是这个 generateIPAddress 函数每次都会返回 0.0.0.0 字符串作为 ipAddress。但它应该每次都返回 0.0.0.0 以外的一些随机 ipAddress。有什么建议为什么会发生?
private void callingGeoService() {
int p1 = 255;
int p2 = 0;
int p3 = 0;
int inc = 5;
String ipAddress = generateIPAddress(p1, p2, p3);
p3 += inc;
if (p3 > 255) {
p3 = 0;
p2 += inc;
if (p2 > 255) {
p2 = 0;
p1--;
if (p1 <= 0) {
p1 = 0;
}
}
}
}
这是 generateIPAddress 方法
private String generateIPAddress(int p1, int p2, int p3) {
StringBuilder sb = null;
int b1 = (p1 >> 24) & 0xff;
int b2 = (p2 >> 16) & 0xff;
int b3 = (p3 >> 8) & 0xff;
int b4 = 0;
String ip1 = Integer.toString(b1);
String ip2 = Integer.toString(b2);
String ip3 = Integer.toString(b3);
String ip4 = Integer.toString(b4);
//Now the IP is b1.b2.b3.b4
sb = new StringBuilder();
sb.append(ip1).append(".").append(ip2).append(".").append(ip3).append(".").append(ip4);
// System.out.println(sb);
return sb.toString();
}
我想以p1,p2,p3 的形式为ipAddress 分配一个随机值,最后一位应该是0。
【问题讨论】:
-
Java没有out-parameters这样的东西
-
这是什么意思。我没听懂?
-
哦,没关系;我以为你想为 p1/p2/p3 分配一些东西,但我的反应有点太快了。仍然不确定调用
generateIPAddress后应该做什么修改(p3 += inc;等)。应该说:Java没有方法级别的静态变量,因为离开方法作用域后p1/p2/p3的修改会丢失。