刷题有一个疑问

发布于:2024-03-29 ⋅ 阅读:(16) ⋅ 点赞:(0)
public class Main {
    public static void main(String[] args) {
//	    	boolean a = zhengchu(2,10);
//	        System.out.print(a);
//        boolean a = btrue(126);
//        System.out.print(a);

	        int decimalNumber = 10; // 十进制数
	        String binaryString = Integer.toString(decimalNumber, 8); // 转换为二进制字符串
	        int num = Integer.parseInt(binaryString);
	        System.out.println(num);
进制转换
	    	boolean flag = true;
	    	int n = 0;
	    	int i = 1;
	    	while(true) {
                 if(btrue(i)){
                	 n++;
                	 if(n == 2023) {
                		 System.out.println(i);
                		 break;

                	 }
                 }
                 i++;
	    	}
    }
    public static boolean btrue(int i){
        int n2,n8,n10,n16;
		n2=n8=n10=n16=0;
        int n=i;
        while(n!=0) {
        	n2 +=(n%2);
        	n = n/2;
        }
        n = i;
        while(n!=0) {
        	n8 +=(n%8);
        	n = n/8;
        }
        n = i;
        while(n!=0) {
        	n10 +=(n%10);
        	n = n/10;
        }
        n = i;
        while(n!=0) {
        	n16 +=(n%16);
        	n = n/16;
        }
        //String N16 = Integer.toString(i, 16);
        //int n16 = Integer.parseInt(N16);//错误点7e这个字符串不能转回十进制;在字符串转回整数类型时高进制转低进制是会失败的
        if(((i%n2)==0) && ((i%n8)==0) && ((i%n10)==0) && ((i%n16)==0)) {
            return true;
        }
        else {
            return false;
        }	
	}
    public static boolean zhengchu(int n , int i) {
        int sum=0;
        while(true) {
            if(n != 0) {
                sum += n%10;
                n = n/10;
            }
            else {
                break;
            }
        }
        if(i%sum == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

这个代码没问题,但下面这个代码一直会报错。

Exception in thread "main" java.lang.NumberFormatException: For input string: "10000000000"

at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)

at java.base/java.lang.Integer.parseInt(Integer.java:665)

at java.base/java.lang.Integer.parseInt(Integer.java:781)

at lanqiao/lanqiao2023_2.Main.btrue(Main.java:33)

at lanqiao/lanqiao2023_2.Main.main(Main.java:19)

package lanqiao2023_2;

public class Main {
    public static void main(String[] args) {
//	    	boolean a = zhengchu(2,10);
//	        System.out.print(a);
//        boolean a = btrue(126);
//        System.out.print(a);

	        int decimalNumber = 10; // 十进制数
	        String binaryString = Integer.toString(decimalNumber, 8); // 转换为二进制字符串
	        int num = Integer.parseInt(binaryString);
	        System.out.println(num);
进制转换
	    	boolean flag = true;
	    	int n = 0;
	    	int i = 1;
	    	while(flag) {
                 if(btrue(i)==true) {
                	 n++;
                	 if(n == 2023) {
                		 System.out.println(i);
                		 break;

                	 }
                 }
                 i++;
	    	}
    }
    public static boolean btrue(int i){
    	int n1=i;
        String N2 = Integer.toString(n1, 2);
        int n2 = Integer.parseInt(N2);
        int n3 = i;
        String N8 = Integer.toString(n3, 8);
        int n8 = Integer.parseInt(N8);
        int n16 =0;
        int n = i;
        while(n!=0) {
        	n16 +=n%16;
        	n = n/16;
        }
        //String N16 = Integer.toString(i, 16);
        //int n16 = Integer.parseInt(N16);//错误点7e这个字符串不能转回十进制;在字符串转回整数类型时高进制转低进制是会失败的
        if(zhengchu(n2,i) && zhengchu(n8,i) && zhengchu(i,i) && (i%n16==0)) {
            return true;
        }
        else {
            return false;
        }
    }
    public static boolean zhengchu(int n , int i) {
        int sum=0;
        while(true) {
            if(n != 0) {
                sum += n%10;
                n = n/10;
            }
            else {
                break;
            }
        }
        if(i%sum == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

本文含有隐藏内容,请 开通VIP 后查看