将十进制转换为十六进制但是错误的顺序输出的书面代码

时间:2017-04-11 13:07:28

标签: java string printing output

我编写了一个代码,将十进制数转换为十六进制数。我们以十进制数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);   
    }
}

1 个答案:

答案 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());