Java 为什么这段代码会输出';49,50,51';当我期望它输出1,2,3时

Java 为什么这段代码会输出';49,50,51';当我期望它输出1,2,3时,java,Java,当我输入数字123时,我希望显示单个数字1、2、3,我知道如果我只输出g,那么它会工作,但我想将单个数字存储在一个数组中。。。但我总是在50左右得到奇怪的结果,比如49,50,51 这是迄今为止我遇到的最奇怪的输出lol。。。。 如果要将char转换为int请使用Character.getNumericValue(g) int m=(int)g不会将1,2或3赋值给m,相反,它将接收1,2,3的ASCII值,该值分别为49,50,51。对数值char执行加法和减法时也会发生这种情况。所以你也可以

当我输入数字123时,我希望显示单个数字1、2、3,我知道如果我只输出g,那么它会工作,但我想将单个数字存储在一个数组中。。。但我总是在50左右得到奇怪的结果,比如49,50,51 这是迄今为止我遇到的最奇怪的输出lol。。。。
如果要将
char
转换为
int
请使用
Character.getNumericValue(g)

int m=(int)g
不会将1,2或3赋值给
m
,相反,它将接收
1,2,3
的ASCII值,该值分别为
49,50,51
。对数值
char
执行加法和减法时也会发生这种情况。所以你也可以用这个技巧来解决你的问题。这意味着你可以这样写,它会解决你的问题-

int m=g-'0'
如果要将
char
转换为
int
请使用
Character.getNumericValue(g)

int m=(int)g
不会将1,2或3赋值给
m
,相反,它将接收
1,2,3
的ASCII值,该值分别为
49,50,51
。对数值
char
执行加法和减法时也会发生这种情况。所以你也可以用这个技巧来解决你的问题。这意味着你可以这样写,它会解决你的问题-

int m=g-'0'

查看Javadoc中的String.tocharray。它们分别是1,2,3的ASCII值。用“0”减去每个字符,得到它们的实际值。查看Javadoc中的String.ToCharray。这些分别是ASCII值1、2、3。用“0”减去每个字符以获得其实际值。
package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        System.out.println("please enter a number");
        Scanner scn = new Scanner(System.in);
        int x = scn.nextInt();


        String jam = Integer.toString(x);
        int[] azure = new int[jam.length()];

        //  Char[] character = new Char[jam.length()];
        String java = Integer.toString(x);
        for(char g :java.toCharArray()){
            int i = -1;
            i++;
           int m = (int)g;
           azure[i] = m;

            System.out.println(azure[i]);
           // System.out.println(g);
        }
    }
}