【问题标题】:Converting int to String and then String to int array将 int 转换为 String,然后将 String 转换为 int 数组
【发布时间】:2022-01-28 00:49:18
【问题描述】:

我一直在尝试做这个简单的程序,我需要检查整数的哪一位是最大的一位。所以我最初的想法是,我应该把它全部转换成一个数组,然后用 for 循环来检查数组的哪个元素是最大的。为了做到这一点,我将整数转换为字符串,然后将字符串的字符转换为数组的元素。我遇到了问题,我在网上寻找解决方案。我不明白为什么我需要“ temp.charAt(i) - '0'” 部分才能将字符串的字符存储为数组的元素。为什么不能只有arrTemp[i] = temp.charAt(i),没有“-'0'”部分。

    String temp = Integer.toString(n);
    int arrTemp[] = new int[temp.length()];
    int max = arrTemp[0];
    for(int i = 0; i<temp.length(); i++) {
        arrTemp[i] = temp.charAt(i) - '0';

【问题讨论】:

  • 阅读javadoc 以获得String.toCharArray。您在 Internet (?) 上找到的解决方案过于复杂。 (记住:在网上发帖的人不一定知道他们在说什么……)
  • “我不明白为什么我需要“ temp.charAt(i) - '0'” 部分才能将字符串的字符存储为数组的元素。 " - 出于您的目的,您不需要这样做。实际上所做的是将数字字符转换为整数的相应值;例如'0' -> 0,以此类推。

标签: java arrays string integer


【解决方案1】:

'0' 是字符'0',而不是整数0。字符使用 int 值(ascii 代码)表示。
'0' 的 ascii 码是整数值 48。

int n = (int) '0'; //n would be 48.

因此,要将'0' 转换为整数0,您需要减去'0'-'0' = 48-48 = 0

将'9' 转换为int 9:

'9' - '0' = 57-48 = 9

查看ASCII码https://en.wikipedia.org/wiki/ASCII

【讨论】:

    【解决方案2】:

    在许多编程语言(Java、C 等)中,字符变量本身并不包含字符值,而是字符变量的ascii value。 ascii 值以数字表示字符变量,每个字符变量都分配有从 0 到 127 的某个数字范围(十进制数字系统)。例如,'A' 的 ascii 值为 65,'0' 为 48。

    您可以通过从该字符中减去'0' 将任何数字字符转换为整数。由于 ascii 值,字符之间的这种减法是可能的。

    假设您想将数字字符'9' 转换为整数9。字符'9'的ASCII值是57,字符'0'的ASCII值是48。现在,如果您执行字符的减法运算,'9' - '0',它将被视为57 - 48,因此会给您9 的结果。这种字符减法运算将字符 '9' 转换为整数 9。

    试试这个代码示例:

        class Converter {
            public static void main(String[] args) {
                System.out.println('9'-'0'); 
            }
        }
    

    你可以看到所有的字符都指向一个ascii值,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2011-04-06
      • 2011-03-05
      相关资源
      最近更新 更多