使用Java循环将字符串转换为单词中每个字母的等效unicode数字?

使用Java循环将字符串转换为单词中每个字母的等效unicode数字?,java,unicode,Java,Unicode,我一直在想如何将Strings转换成用户输入的数字Unicode。从作业中,我知道我应该使用循环来将单词转换为Unicode,但我不确定如何做到这一点 我很确定这应该是一段时间或者一个循环。他们说while循环,如果你没有一个集合的迭代,我认为这个并没有 我已经查找了Unicode,但仍然感到困惑,但我认为这可能是Unicode站点: 这让我想到了基本的拉丁语: 但我不知道该怎么办 我还看到了另一个类似于我的问题,但使用了ord(),但这是针对Python的,所以我不知道Java是否有类似的问

我一直在想如何将
String
s转换成用户输入的数字Unicode。从作业中,我知道我应该使用循环来将单词转换为Unicode,但我不确定如何做到这一点

我很确定这应该是一段时间或者一个循环。他们说while循环,如果你没有一个集合的迭代,我认为这个并没有

我已经查找了Unicode,但仍然感到困惑,但我认为这可能是Unicode站点:

这让我想到了基本的拉丁语:

但我不知道该怎么办

我还看到了另一个类似于我的问题,但使用了
ord()
,但这是针对Python的,所以我不知道Java是否有类似的问题

到目前为止,我掌握的代码如下: 包装计算

import java.util.Scanner;

public class UniCal {
    public static void main(String[] args) {

        String word1;
        String word2;

        String resultFullWord;
        int resultAbsVal = 0;

        Scanner scanner = new Scanner(System.in);

        System.out.println("What is your first word?");
        word1 = scanner.nextLine();

        System.out.println("And your second word?");
        word2 = scanner.nextLine();

        resultFullWord = (word1 + " " + word2);
        System.out.println(resultFullWord);

        word = input("Enter a word: ")
                for letter in word:
                    print(letter + ': ', ord(letter)); 
    }

    // while (resultFullWord.equals(resultFullWord)) {
            // Do something ...
            // Get input into userChar
    // }

        // Math.abs
        System.out.println("Your absolute value based on your word is : " + resultAbsVal);
        scanner.close();

    }

}

您缺少一个关键点,即Java
char
值已经提供了Unicode的数字编码,而且Java
String
s具有提取Unicode“代码点”的方法,即Unicode分配给字符的数字值

目前还不清楚这项任务的具体期望是什么。如果“numeric unicode等价物”表示UTF-16代码单位值,那么您只需迭代字符串的
char
s即可。根据打印方法的不同,您可能需要将它们强制转换为键入
int
,以获得数字结果,而不是数字

我猜想以上是作业期望您做的事情,因为您似乎对Unicode概念或术语了解很少或根本没有。但是,实际上您需要知道,UTF-16以及Java字符串将大多数Unicode字符编码为两个-
char
“代理项对”。如果要打印由
字符串
编码的每个Unicode字符的数值,而不是每个Java
字符
,则需要一种不同的方法:要迭代由
字符串
表示的代码点,而不是
字符


要迭代
字符串的所有Unicode代码点
,我倾向于使用
String.codePoints()
,但这会以
IntStream
的形式提供它们。这是一种非常方便的形式,除了它不利于通过
for
while
循环执行显式迭代之外,如果您是Java新手,那么您可能还没有了解流。在这种情况下,您可以使用
String.codePointCount()
找出字符串包含多少代码点,然后使用
for
循环迭代代码点索引,通过
String.codePointAt()

提取每个代码点索引欢迎使用堆栈溢出。请阅读。java中的字符串已使用unicode字符生成。您可以简单地使用
tocharray()
并处理单个unicode字符。您甚至可以将它们转换为
int
,以获得这些字符的“数字unicode等价物”。Java字符串以UTF-16编码。这将BMP字符编码为它们自己的代码点值,但其他Unicode字符编码为代理项对。@Progman感谢您提供了ToCharray()。我认为这是因为字符串中的单词在其单独的一行上构成了每个字母。但是,我不知道如何将它们转换为int以获得与unicode等效的数字?你有链接或示例吗?@JackieTowns你可以使用
inti=(int)charValue
将字符值转换为整数值。到目前为止,我已经掌握了Java的基本知识。我想尝试一下String.codePointCount(),然后使用for循环来迭代代码,因为这似乎是我迄今为止所学的所有内容中最基本的。但是,你有什么例子吗?“我正在努力让代码正常工作,但到目前为止我甚至不知道我在做什么……我很同情,@JackieTowns,但我能提供的任何有用的例子都将构成任务的大部分解决方案。”。你应该自己解决这个问题——这就是大部分学习的方式。拒绝给你这个好处不符合任何人的利益。