求高手帮看java程序。。。感激不尽: 不用已知的类,把十进制转换成二进制、八进制和16进制

2024-12-13 15:52:27
推荐回答(1个)
回答1:

你的程序我帮你改完了,你看看吧。(改动的地方见注释)
import java.util.*;
public class jinzhi2 {
public static void main(String arg[]){
Scanner y=new Scanner(System.in);
System.out.println("请输入十进制数");
int b=y.nextInt();//这里把double b=y.nextDouble()改成int b=y.nextInt()
SuanFa mySuanFa=new SuanFa();
mySuanFa.ErJinZhi(b);
mySuanFa.BaJinZhi(b);
mySuanFa.ShiLiuJinZhi(b);
}

}

class SuanFa{
void ErJinZhi(int a){//这里把void ErJinZhi(double a)改成void ErJinZhi(int a)
int i=0;
StringBuffer str=new StringBuffer("");
for(i=0;;i++)
{
if(a==1)
{str.append(a%2);
break;}
str.append(a%2);
a=a/2;
}

str.reverse();
System.out.println("二进制是"+str);

} /*转化成二进制*/

void BaJinZhi(int a){//这里把void BaJinZhi(double a)改成void BaJinZhi(int a)
int i=0;
StringBuffer str=new StringBuffer("");
for(i=0;;i++)
{
if(a<8)
{
str.append(a);
break;
}
str.append(a%8);
a=a/8;
}
str.reverse();
System.out.println("八进制是"+str);
}/*转化成八进制*/

void ShiLiuJinZhi(int a){//这里把void ShiLiuJinZhi(double a)改成void ShiLiuJinZhi(int a)
int c=0;
StringBuffer str=new StringBuffer("");
while(a>=16)
{
c=(int)(a%16);
switch(c){
case(10):str.append('A');break;//这里加一句break;
case(11):str.append('B');break;//这里加一句break;
case(12):str.append('C');break;//这里加一句break;
case(13):str.append('D');break;//这里加一句break;
case(14):str.append('E');break;//这里加一句break;
case(15):str.append('F');break;//这里加一句break;
default:str.append(a%16);
}
a=a/16;
}
c=(int)(a%16);
switch(c){
case(10):str.append('A');break;//这里加一句break;
case(11):str.append('B');break;//这里加一句break;
case(12):str.append('C');break;//这里加一句break;
case(13):str.append('D');break;//这里加一句break;
case(14):str.append('E');break;//这里加一句break;
case(15):str.append('F');break;//这里加一句break;
default:str.append(a%16);
}
str.reverse();
System.out.println("十六进制是"+str);
}/*转化成十六进制*/
}

运行结果:
请输入十进制数
31
二进制是11111
八进制是37
十六进制是1F