1.求数组中的和为0的一对数的数量
注意,需要用到set
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);String[] s = sc.nextLine().split(",");int len = s.length;HashSet<Integer> set = new HashSet<>();for (int i = 0; i < len; i++) {set.add(Integer.valueOf(s[i].trim()));}int[] newarray = new int[set.size()];int index=0;for (Integer i:set) {newarray[index++]= i;}int sum = 0;for (int i = 0; i < newarray.length; i++) {for (int j = i+1; j < newarray.length; j++) {if(newarray[i]+newarray[j]==0){sum++;}}}System.out.println(sum);}}
2.十进制转二进制中1的个数
方法1,借用java已经实现的方法
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);int m = sc.nextInt();int num = 0;String str = Integer.toBinaryString(m);for (int i = 0; i < str.length(); i++) {if(str.charAt(i)=='1'){num++;}}System.out.println(num);}}
方法2,自己实现,注意,2的N次方的数需要加1
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);int m = sc.nextInt();int num = 0;while(m!=0){if(m==2){num++;break;}if(m%2!=0){num++;}m/=2;}System.out.println(num);}}