为什么输入的数大了就不行了?是什么错误?能解答一下吗?

import java.util.Scanner;
public class transformation{
public double A(double x){//十进制转二进制
int y=(int)x;
int a,b,c=1,d,sum=0;
while(y>=1){
a=y/2;
b=y%2;
y=a;
d=cb;
c=c
10;
sum=sum+d;
}
int i=1,b1;double sum1=0;
double f=x-(int)x,a1,c1=0.1,d1;
while(f!=0){
a1=f2;
b1=(int)a1;
f=a1-b1;
d1=c1
b1;
c1=c10.1;
sum1=sum1+d1;
i++;
if(i==5){
break;
}
}
return sum+sum1;
}
public int B(String N){//二进制转十进制
int sum=0,j=1,n=1;
for(int i=N.length()-1;i>=0;i--){
char ch=N.charAt(i);
switch(ch){
case '0':int x=0;
n=x
j;
break;
case '1': x=1;
n=xj;
}
j=j
2;
sum=sum+n;
}
return sum;
}
public static void main(String[] args){
Scanner reader=new Scanner(System.in);
transformation me=new transformation();
System.out.println("请选择操作:1,十进制转二进制 2,二进制转十进制");
int a=reader.nextInt();
for(;a!=1&&a!=2;){
System.out.println("输入错误,请重新输入");
a=reader.nextInt();
}
if(a==1){
System.out.println("请输入一个十进制数");
double b=reader.nextDouble();
System.out.println("这个数的二进制数为:"+me.A(b));
}
if(a==2){
System.out.println("请输入一个二进制数");
String c=reader.next();
System.out.println("这个数的十进制数为:"+me.B(c));
}
}
}

img

你这个代码。。。我放到IDEA里整理之后出了问题啊

img


img


这些都是不知道哪里声明过的变量。我直接全复制下来,放IDEA里就冒红了。你这个代码里的这些变量又没有注释,别人压根没法看。而且变量命名完全是随性命名的,压根看不出这些变量啥意思。找吧又找不着在哪里声明过。
emm。总之,我是帮不了你了。我发这个回答只是想让你把发出来的代码优化一下,加点注释啥的。你这个变量命名太随性了,而且一点注释都没有。我复制完代码都直接看蒙了。你如果不优化一下问题,加点注释的话,我估计别人来了看了也一脸懵。
PS:以下是我整理后的代码,不过没加注释。这里面变量用的太多了。其他的想要帮助题主的朋友,可以看我整理后的代码。原题的代码完全没有整理,看了直接一脸懵。可以看我这个,我这个对代码的层次进行了整理,能轻松看出层次。其他想要帮助题主的朋友可以看这个:

import java.util.Scanner;

public class transformation{
    public double A(double x)//十进制转二进制
    {
        int y=(int)x;
        int a,b,c=1,d,sum=0;
        while(y>=1){
            a=y/2;
            b=y%2;
            y=a;
            d=cb;
            c=c10;
            sum=sum+d;
        }
        int i=1,b1; double sum1=0;
        double f=x-(int)x,a1,c1=0.1,d1;
        while(f!=0)
        {
            a1=f2;
            b1=(int)a1;
            f=a1-b1;
            d1=c1b1;
            c1=c10.1;
            sum1=sum1+d1;
            i++;
            if(i==5)
            {
                break;
            }
        }
        return sum+sum1;
    }
    public int B(String N)//二进制转十进制
    {
        int sum=0,j=1,n=1;
        for(int i=N.length()-1; i>=0; i--)
        {
            char ch=N.charAt(i);
            switch(ch)
            {
                case '0':
                    int x=0;
                    n=xj;
                    break;
                case '1':
                    x=1;
                    n=xj;
            }
            j=j2;
            sum=sum+n;
        }
        return sum;
    }
    public static void main(String[] args)
    {
        Scanner reader=new Scanner(System.in);
        transformation me=new transformation();
        System.out.println("请选择操作:1,十进制转二进制 2,二进制转十进制");
        int a=reader.nextInt();
        for(; a!=1&&a!=2;)
        {
            System.out.println("输入错误,请重新输入");
            a=reader.nextInt();
        }
        if(a==1)
        {
            System.out.println("请输入一个十进制数");
            double b=reader.nextDouble();
            System.out.println("这个数的二进制数为:"+me. A(b));
        }
        if(a==2){
            System.out.println("请输入一个二进制数");
            String c=reader.next();
            System.out.println("这个数的十进制数为:"+me. B(c));
        }
    }
}