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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改