在这个问题上有人可以帮助我吗
编写一个在其MainClass中包含以下内容的程序:
一个名为convertFromDecimal的方法,该方法使用两个整数作为参数。第一个整数是要转换的数字,第二个整数是要转换为的基数。
基本值可以是2(二进制)和16(十六进制)之间的任何数字。转换后的数字作为字符串返回。该方法的标题如下:public static String convertFromDecimal(int number, int base)
在您的main方法中声明并初始化一个整数。然后通过调用convertFromDecimal方法在2-16之间的所有编号系统中打印其表示形式。您应该为此部分使用for循环。
提示:
{0,1,2,3…..,9,A,B}
这是我的代码。我知道这是不正确的:(
public static void main(String[] args) {
convertFromDecimal (1,2);
}
public static String convertFromDecimal(int number, int base) {
String S=" ";
int[] converted =new int [base] ;
while (number>0) {
int R;
R=number%base;
number=number/base;
char Rchar ;
switch (R){
case 10 : Rchar='A';
case 11 : Rchar='B';
case 12 : Rchar='C';
case 13 : Rchar='D';
case 14 : Rchar='E';
case 15 : Rchar='F';
}
for (int i=0;i<base;i++)
{
converted[i]=R;
R=number%base;
}
for (int m=0;m<base ;m++)
System.out.print(S +converted[m]);
}
return S;
}
答案 0 :(得分:0)
我将按照此处所述进行转换:http://www.robotroom.com/NumberSystems3.html
一个有效的示例(我更喜欢在这里使用while
循环,但要求显示for
:
public static void main(String [] args) throws Exception {
System.out.println(convertFromDecimal(15,3));
}
public static String convertFromDecimal(int number, int base) {
String result = "";
int lastQuotient = 0;
for(int operatingNumber = number;operatingNumber > base; operatingNumber = operatingNumber/base) {
result = getRepresantationOfLowIntValue(operatingNumber%base) + result;
lastQuotient = operatingNumber/base;
}
result = getRepresantationOfLowIntValue(lastQuotient) + result;
return result;
}
您可以在while循环内找到提示1中的要求。 提示2中的要求可以在下面找到。
private static String getRepresantationOfLowIntValue(int toConvert) {
if(toConvert >= 0 && toConvert < 10) {
return "" + toConvert;
}
switch(toConvert) {
case 10 : return "A";
case 11 : return "B";
case 12 : return "C";
case 13 : return "D";
case 14 : return "E";
case 15 : return "F";
}
return "Error, cannot transform number < 0 or > 15";
//throw new IllegalArgumentException("cannot transform number < 0 or >15");
}