m0_63145759 2021-12-17 22:49 采纳率: 84.2%
浏览 38
已结题

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

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

  • 写回答

1条回答 默认 最新

  • 2022编程新篇章 2021-12-18 07:55
    关注

    用long long 代替int即可

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月18日
  • 创建了问题 12月17日

悬赏问题

  • ¥15 如何用MATLAB写一段烟幕弹拦截导弹的代码?
  • ¥15 这两个验证谁能解决,带价来
  • ¥15 matlab可视化全球TEC含量图
  • ¥15 怎么将普通C++转入UE5
  • ¥15 求一段多输入类型的matlab lstm的代码
  • ¥15 零基础200题编字典问题
  • ¥15 win11移除微软账户登录
  • ¥15 部署zabbix登录时跳转如下页面
  • ¥15 cup+fpga+88E1111 rgmii to sgmii
  • ¥15 请问如何从gprmax中导出的merged.out文件获取雷达数据(应该是个二维数组吧),我看到网上很多对雷达数据的操作但是都没有说如何获得这个数据,因为out文件不能直接操作要转成其他格式是吧