1.输入一个十进制数转换成二进制数,输出二进制中有几个1?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int fangZu = sc.nextInt();
String a=Integer.toBinaryString(6);
char []b=a.toCharArray();
int count=0;
for (int i = 0; i < b.length; i++) {
if (b[i]=='1') {
count++;
}
}
System.out.println(count);
}
}
2.给定IP段列表,每行包含一个IP段和对应的阿里巴巴机房位置;IP段的数量会比较多;任何两段IP不会存在冲突;
输出IP所在的网段。
例如:
输入:
10.20.86.3192.168.0.0/24 千岛湖机房 192.168.0.0/24 张北机房10.20.86.2/8 张北机房210.20.86.9/24 张北机房
end
输出:
10.20.86.9/24 张北机房
程序答案:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String res;
String _ip;
try {
_ip = in.nextLine();
} catch (Exception e) {
_ip = null;
}
ArrayList<String> _ipRangeList = new ArrayList<>();
while (in.hasNextLine()) {
try {
String temp = in.nextLine();
if ("end".equals(temp.trim())) {
break;
}
_ipRangeList.add(temp);
} catch (Exception e) {
}
}
res = ipMatch(_ip, _ipRangeList.toArray(new String[_ipRangeList.size()]));
System.out.println(res);
}
private static String ipMatch(String ip, String[] array) {
String[] a = ip.split("\\.");
int b=Integer.valueOf(a[a.length-1]);
String k=a[0]+"."+a[1]+"."+a[2];
int index=0;
for (int i = 0; i < array.length; i++) {
String k2="10.20.86.9";
if (array[i].indexOf(k)!=-1) {
String[] c=array[i].split("\\.");
String[] d=c[c.length-1].split("/");
int b0=Integer.valueOf(d[0]);
String[] bb=d[1].split(" ");
int b1=Integer.valueOf(bb[0]);
if (b0<b&&b1>b) {
index=i;
}
}
}
return array[index];
}
}