我编写了一个代码,将十进制数转换为十六进制数。我们以十进制数123456
为例。我的代码会提供输出042e1
,因此正确结果的总错误顺序为1e240
。
我的问题是,我需要做些什么来改变输出的顺序?我计划转换为String
并使用new StringBuilder(hi).reverse().toString()
。但这似乎太复杂了,我的意思是,我该如何获取输出并将它们转换为string
..?必须有一个更简单的方法。
我希望你能帮助我。我很高兴我设法在没有任何帮助的情况下走得那么远,但我不知道如何让这个工作。这不是功课,所以如果你有时间,请随时提供帮助:)
这是我的代码:
import java.util.Scanner;
public class Convert{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
double x = input.nextInt();
double result = x;
do{
result = result / 16;
int temp = (int)result;
double rest = result*16-temp*16;
if((int)rest == 10){
System.out.print('a');
}
if((int)rest == 11){
System.out.print('b');
}
if((int)rest == 12){
System.out.print('c');
}
if((int)rest == 13){
System.out.print('d');
}
if((int)rest == 14){
System.out.print('e');
}
if((int)rest == 15){
System.out.print('f');
}
if((int)rest != 10 && (int)rest != 11 && (int)rest != 12 && (int)rest != 13 && (int)rest != 14 && (int)rest != 15){
System.out.print((int)rest);
}
}while((int)result != 0);
}
}
答案 0 :(得分:1)
首先,您需要制作 StringBuilder
对象:
StringBuilder builder = new StringBuilder(); // place this before the do while block
然后在每个if块中执行此操作:
if((int)rest == 10){
builder.append("a");
}
if((int)rest == 11){
builder.append("b");
}
if((int)rest == 12){
builder.append("c");
}
....
....
考虑到你已经提到过:
我的代码将输出042e1,所以总的错误顺序 正确的结果1e240。
然后在do while循环之后,只需 reverse()
就可以得到输出1e240
:
System.out.println(builder.reverse());