gpt4 book ai didi

java - char[i] 返回错误的数字

转载 作者:行者123 更新时间:2023-12-01 07:45:17 26 4
gpt4 key购买 nike

我有一个“算法”,它有一个整数k作为输入参数。例如,我传递 k = 54321 作为参数。在这个方法中我想要:

  • 将此整数转换为字符数组,这样它就不再是 54321,而是 [5,4,3,2,1] 等等
  • 将此数组升序排序,将每个字符添加到 ArrayList
  • 返回数组列表

但是当涉及到 for 循环时,如果我通过 char[position] 获取项目,它会给我随机值。更实际的是,

public class Main {

public static void main(String[] args) {
System.out.println(sortMet(54321));
}

static ArrayList<Integer> sortMet(int k) {
ArrayList<Integer> tab_cyfr = new ArrayList<>();
char[] chars = String.valueOf(k).toCharArray();
int n = chars.length;
Arrays.sort(chars);

for (int i = 0; i < n; i++) {
tab_cyfr.add(chars[i]);
}

return tab_cyfr;
}

}

这应该返回[1,2,3,4,5],但返回[49,50,51,52,53],这些数字来自哪里?

另外,对变量命名表示抱歉,我正在对局部变量进行随机练习。

最佳答案

String.valueOf(k).toCharArray() 返回 String 中的字符作为其 char 表示形式。根据ASCII table 491 的 char 值,502 的 char 值,依此类推。

您应该将 k 转换为数字,而不是 char。这可以通过使用 % 操作来完成:

int k = 8421753;
ArrayList<Integer> digits = new ArrayList<>();
while (k > 0) {
digits.add(k % 10);
k /= 10;
}
Collections.sort(digits);
System.out.println(digits); // [1, 2, 3, 4, 5, 7, 8]

关于java - char[i] 返回错误的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54074960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com