m0_59657290 2021-11-18 23:34 采纳率: 50%
浏览 58
已结题

10进制转16进制(java)

我知道有简便方法但我还是想知道我这个代码哪里有错?(pta显示最终答案有错)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {

System.out.println("请输入一个整数:");
  Scanner input=new Scanner(System.in);
  int a=input.nextInt();
  int b=a;
  int n=a;
  int k=0;
  char[] c=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  int[] d=new int[a];
  int i=0;
  int flag=0;
 while(b!=0)
 {
    b=b/16;
    d[i]=n%16;
    n=b;
    i++;
    flag++;
 }
 for(i=flag-1;i>=0;i--)
 {
     k=d[i];
 System.out.print(c[k]);
 }
 }
}

  • 写回答

2条回答 默认 最新

  • 关注

    你看看题目输出示例是不是A到F字符要大写的
    你题目的解答代码如下:

    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    
    //System.out.println("请输入一个整数:"); //这一行去掉,不要输出题目没要求的提示
      Scanner input=new Scanner(System.in);
      int a=input.nextInt();
      int b=a;
      int n=a;
      int k=0;
      char[] c=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
      int[] d=new int[100];//d数组长度和a没有关系
      int i=0;
      int flag=0;
        do{     // 改成do while 考虑到输入是0的情况,要让循环至少运行一次
            b=b/16;
            d[i]=n%16;
            n=b;
            i++;
            flag++;
        } while(b!=0);
        for(i=flag-1;i>=0;i--)
        {
            k=d[i];
        System.out.print(c[k]);
        }
     }
    }
    

    如有帮助,望采纳!谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月19日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置