java查询数据库中空缺的ip网段

zzh960213 2018-02-22 10:37:52
场景如下:假设数据库中存储的ip地址有如下几个
172.16.51.1 172.16.51.5 172.16.51.8 172.16.51.9 172.16.51.11
如何查询出来后插入1到11之间空缺的ip网段
不超过254

自己有些思路,又感觉抓不住点
劳烦各位大牛指点,有代码最好
给分给分~
...全文
310 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzh960213 2018-02-22
  • 打赏
  • 举报
回复
引用 5 楼 soton_dolphin 的回复:
[quote=引用 4 楼 zzh960213 的回复:] [quote=引用 2 楼 soton_dolphin 的回复:]

public static void main(String[] args){
		String[] ipAddrs = {"192.168.1.1", "192.168.1.2"};
		int[] segments = new int[255];
		Arrays.fill(segments, 0);
		for(String ipa : ipAddrs){
			int lastSegment = Integer.parseInt(ipa.substring(ipa.lastIndexOf(".")+1));
			segments[lastSegment] = 1;
		}
		
		for(int i = 1; i<segments.length; i++){
			if(segments[i] == 0){
				System.out.println("Segment " + i + " is missing");
			}
		}
	}
数组下标越界[/quote] 你要根据自己的需要改下数组的长度[/quote] 修改标红那行就可以了,谢谢大佬
soton_dolphin 2018-02-22
  • 打赏
  • 举报
回复
引用 4 楼 zzh960213 的回复:
[quote=引用 2 楼 soton_dolphin 的回复:]

public static void main(String[] args){
		String[] ipAddrs = {"192.168.1.1", "192.168.1.2"};
		int[] segments = new int[255];
		Arrays.fill(segments, 0);
		for(String ipa : ipAddrs){
			int lastSegment = Integer.parseInt(ipa.substring(ipa.lastIndexOf(".")));
			segments[lastSegment] = 1;
		}
		
		for(int i = 1; i<segments.length; i++){
			if(segments[i] == 0){
				System.out.println("Segment " + i + " is missing");
			}
		}
	}
数组下标越界[/quote] 你要根据自己的需要改下数组的长度
zzh960213 2018-02-22
  • 打赏
  • 举报
回复
引用 2 楼 soton_dolphin 的回复:

public static void main(String[] args){
		String[] ipAddrs = {"192.168.1.1", "192.168.1.2"};
		int[] segments = new int[255];
		Arrays.fill(segments, 0);
		for(String ipa : ipAddrs){
			int lastSegment = Integer.parseInt(ipa.substring(ipa.lastIndexOf(".")));
			segments[lastSegment] = 1;
		}
		
		for(int i = 1; i<segments.length; i++){
			if(segments[i] == 0){
				System.out.println("Segment " + i + " is missing");
			}
		}
	}
数组下标越界
zzh960213 2018-02-22
  • 打赏
  • 举报
回复
谢谢,我先拿去试试
soton_dolphin 2018-02-22
  • 打赏
  • 举报
回复

public static void main(String[] args){
		String[] ipAddrs = {"192.168.1.1", "192.168.1.2"};
		int[] segments = new int[255];
		Arrays.fill(segments, 0);
		for(String ipa : ipAddrs){
			int lastSegment = Integer.parseInt(ipa.substring(ipa.lastIndexOf(".")));
			segments[lastSegment] = 1;
		}
		
		for(int i = 1; i<segments.length; i++){
			if(segments[i] == 0){
				System.out.println("Segment " + i + " is missing");
			}
		}
	}
athenaflash 2018-02-22
  • 打赏
  • 举报
回复
本人小白一个感觉用for循环就可以实现了,for(i=1;i<12;i++)首先获取ip的最后一位,跟for循环的i做比较,如果想等就什么都不做,如果不等就插入一个ip,这个ip的最后一位就是i。楼主看行不,比较的时候记得转型。

50,348

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧