我知道有简便方法但我还是想知道我这个代码哪里有错?(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]);
}
}
}
你看看题目输出示例是不是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]);
}
}
}
如有帮助,望采纳!谢谢!
题目要求是啥,一个都没通过吗?