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));
}
}
}
为什么输入的数大了就不行了?是什么错误?能解答一下吗?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CTimet 2021-12-18 16:45关注
你这个代码。。。我放到IDEA里整理之后出了问题啊
这些都是不知道哪里声明过的变量。我直接全复制下来,放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)); } } }
解决 无用评论 打赏 举报
悬赏问题
- ¥100 如何寻找到黑客帮助,愿意付丰厚的酬劳
- ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
- ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
- ¥15 PPOCRLabel
- ¥15 混合键合键合机对准标识
- ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
- ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
- ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
- ¥200 C++表格文件处理-悬赏
- ¥15 Windows Server2016本地登录失败