企业网站建设哪里做网站好,南京工程造价信息网,p2p网站开发 源代码,分类信息网站建设计划由题可知就是要求计算一个数字#xff0c;可以整除10进制的每一位#xff0c;亦可以整除8进制和16进制的每一位。要求找出第2023个能够在三个进制下同时被10进制整除的数字。
Java中已经封装了进制转换的方法#xff0c;以下是一些常用的转换方法#xff1a;#x1f447;…
由题可知就是要求计算一个数字可以整除10进制的每一位亦可以整除8进制和16进制的每一位。要求找出第2023个能够在三个进制下同时被10进制整除的数字。
Java中已经封装了进制转换的方法以下是一些常用的转换方法 十进制转二进制 int n 18; String binaryString Integer.toBinaryString(n); System.out.println(n 的二进制是: binaryString); 十进制转八进制 String octalString Integer.toOctalString(n); System.out.println(n 的八进制是: octalString); 十进制转十六进制 String hexString Integer.toHexString(n); System.out.println(n 的十六进制是: hexString); 十进制转任意进制 String base3String Integer.toString(n, 5); System.out.println(n 的五进制是: base3String);
我们可以从1开始寻找合适的数字使用String转换为对应字符串截取每一位转换成int类型的值进行比较但是这样显然太麻烦要做很多次的判断和比较。我们考虑直接模拟对应的方法使用一个函数获取每一位的值并且直接返回int类型。使用我们常用的十进制截取来比例 static int fn1(int num) {//获取每一位的值int ans0;while (num0) {ansnum%10;num/10;}return ans;}
即将传进来的参数进行判断每次对10取余就是个位上的值取到个位上的值再用除法将个位去掉依次进行。那么十进制除以10对十取余我们只需要将10改为变量即可。
解题代码 static int fn1(int num,int k) {//获取每一位的值int ans0;while (num0) {ansnum%k;num/k;}return ans;}static boolean check(int x){//判断是否符合题意if (x%fn1(x, 2)0 x%fn1(x, 8)0 x%fn1(x, 10)0 x%fn1(x, 16)0) {return true;}else {return false;}}public static void main(String[] args) {int count2023;//从2023递减int i1;//从1开始while (count0) {if (check(i)) {count--;}}System.out.println(i);}
代码留下了一个BUG你能不能找出来是哪里有问题