java 递归问题
public class CreatePort {
public void getPort(int x){
try {
DatagramSocket ds=new DatagramSocket(x);
} catch (SocketException e) {
if(x<9193){
System.out.println(x);
getPort(x++);
}
e.printStackTrace();
}
}
public static void main(String arg[]){
CreatePort cp=new CreatePort();
cp.getPort(9191);
}
}
这段代码会报java.lang.StackOverflowError错误高手求解
追问:为什么?这段程序有这样一个意图: 我想动态获取未被占用的端口,如果端口被占用DatagramSocket ds=new DatagramSocket(x); 就会抛异常,说明端口被占用, 在catch 里我继续递归调用这个函数,直到程序不抛异常,返回未被占用的端口号。I know, why
答案:if(x<9193){
System.out.println(x);
getPort(x++);
}
在try里面写
其他:栈溢出了吧! 可以这样: public static double tenToN(int n){ if(n==0)return 1; 加上那个指的是 你那以上的所有if都不满足时 返回0 这个是java的语法
上一个:java产生随即数字的问题!!!!在线等!高手进!
下一个:java array size 问题