输出应为51作为输入15,为什么其输出显示为0。以下部分包括将代码重新排列为降序并将数组转换为int并最后返回g。
public class ExerciseA2 {
public static int sortDesc(final int num) {
//Your code
int h = Integer.toString(num).length();
int[] arr = new int[h];
int u,l,g = 0;
for(int i = 0;i < arr.length;i++){
for(int q = 1;q < arr.length-1;q++){
if(arr[i] < arr[q]){
u = arr[i];
arr[i] = arr[q];
arr[q] = u;
}
}
}
for(int z = 0; z < arr.length;z++)
g = (g*10)+arr[z];
return g;
}
public static void main(String[] args) {
System.out.print(sortDesc(15));
}
}
您的代码中有一些问题。
您没有初始化arr数组。默认情况下,在Java中int数组中的值为0,这就是为什么要获得0的原因。 您可以通过以下方式对其进行初始化:
String n = Integer.toString(num);
for (int i = 0; i < n.length(); i++) {
// there are many ways to convert a char to a string,
// I will leave that for you to explore which is the efficient/suitable.
// For now, this works.
// Remember to convert to int, or you will get ASCII values, which will be integers, just not the ones you want.
arr[i] = Integer.parseInt(n.charAt(i) + "");
}
现在有了数组,嵌套循环中又有一个问题。当大小为2时,条件返回false,它将永远不会执行。 您可以通过以下方式解决此问题:
for (int q = i + 1; q < arr.length; q++) {
// your code here
}
希望这可以帮助。祝好运。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。