使用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的数字编码,而且JavaString
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,但我能提供的任何有用的例子都将构成任务的大部分解决方案。”。你应该自己解决这个问题——这就是大部分学习的方式。拒绝给你这个好处不符合任何人的利益。