Java 编写一个接收字符并显示其Unicode的程序

Java 编写一个接收字符并显示其Unicode的程序,java,Java,我希望能够输入E和java显示69。我需要为???简单地将ch强制转换为int以获取其Unicode值填写什么,如 import java.util.Scanner; public class Ex4_9 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("enter character"); String a

我希望能够输入E和java显示69。我需要为???

简单地将ch强制转换为int以获取其Unicode值填写什么,如

import java.util.Scanner;

public class Ex4_9 {

 public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("enter character");

    String a = input.nextLine();
    char ch = a.charAt(0);
    if (a.length() == 1){
    System.out.println("The character entered is " + ch);
    System.out.println(" the Unicode for character " + ch + " " + ??);
    }
    else
    System.out.println("complain about the number of characters.");
 }

}
至于注释,这将适用于任何字符,但不适用于任何Unicode代码点。然而,这个问题需要一个字符的解决方案,我的工作就是为了这个字符。ch被初始化为a.charAt0,它无论如何对代理不起作用,所以我在否决票中看不到任何原因。

您想使用codepoint


Unicode在Java中很奇怪。一个java字符可能有两个代码点。这里有一个答案,类似于你想要的答案:@hooknc不,一个Java字符不可能有两个代码点…@bcsb1001你是对的。我的条件交叉了。一个代码点可以有两个字符。@Jason是的,我通过打印int'E'进行了测试,它打印了69个字符。还有,这是我用了很长时间的东西。我想它只适用于第一个平面内的代码点。@Jason也,Java字符只能表示第一个平面中的一个字符……我认为您被否决了,因为该解决方案不适用于所有unicode值,它只处理第一个平面中的代码点,对于任何需要代理项对的情况都失败。它通常适用于第一个平面,因为java使用UTF-16,UTF-16字符值16位对应于代理项对值下面的代码点。
System.out.println(" the Unicode for character " + ch + " " + ((int) ch));
System.out.println(" the Unicode for character " + a + " " + a.codePointAt(0));