为什么这个将十进制转化为十六进制的运行结果前面几位是重复的

问题相关代码,请勿粘贴截图
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        String ret = "";
        String c = "";
        while (n != 0) {
            int b = n % 16;
            switch (b) {
                case 10: {
                    ret = "A";
                    break;
                }
                case 11: {
                    ret = "B";
                    break;
                }
                case 12: {
                    ret = "C";
                    break;
                }
                case 13: {
                    ret = "D";
                    break;
                }
                case 14: {
                    ret = "E";
                    break;
                }
                case 15: {
                    ret = "F";
                    break;
                }
                default: {
                     ret = "" + b;
                    break;
                }
            }
            n = n / 16;
            c = ret + c;
            System.out.print(c);
        }
    }
}

运行结果及报错内容

2789
5E5AE5
Process finished with exit code 0

啊我想明白啦!
最后输出的问题,不应该在while循环里打印,应该跳出来打印,否则就会重复

要学会调试,调试真的很重要!!!