当前位置:编程学习 > JAVA >>

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 问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,