所以我试图将字母表中的每个字母设置为a = 1的数字 b = 2 c = 3,依此类推。
int char = "a";
int[] num = new int{26};
for (int i = 0; i <num.length; i++){
System.out.print(i);
但是在此之后我得到了Stuck所以如果你能帮助我的话。因此,当用户输入像cat这样的单词时,它会输出3-1-20。
答案 0 :(得分:2)
您可以从每个字符中减去'a'
并添加1
。 E.g。
String input = "cat";
for (char c : input.toCharArray()) {
System.out.print(c - 'a' + 1);
}
您发布的代码无法编译,因为您无法将String
分配给int
,而char
是保留字(原始类型的名称) )
int char = "a";
您还要提到您希望输出格式为"3-1-20"
。这是实现这一目标的一种方法:
String input = "cat";
String[] out = new String[input.length()];
for (int i = 0; i < input.length(); ++i) {
out[i] = Integer.toString(input.charAt(i) - 'a' + 1);
}
System.out.println(String.join("-", out));
这两个版本仅适用于小写英文字母(a
至z
)
答案 1 :(得分:1)
为角色分配号码称为“encoding”。由于计算机只能在内部处理数字,因此这种情况始终存在。甚至这里的文本也被编码(可能是一个名为“UTF-8”的编码)然后将结果数存储在某处。
一种非常基本的编码是所谓的ASCII(美国信息交换标准码)。 ASCII已经做了你想要的,它为每个字符分配一个数字,只是“A”的数字是65而不是1。
那么,这有什么帮助?我们可以假设对于字符A-z,char
的数值等于ASCII码(对于每个字符都不是这样,但对于最基本的字符,它就足够了)。
这就是为什么这里的每个人都告诉你减去'A'或'a':你的角色是一个角色,这是一个角色,但也是该角色的数值,所以你可以减去'A'(再次,一个char)并添加1:
'B' - 'A' + 1 = 2
,因为...
66 (numeric value of 'B') - 65 (numeric value of 'A') + 1 = 2
实际上,char不是ASCII,而是UTF-8,但它开始变得稍微复杂一些,所以ASCII就足够了。
答案 2 :(得分:0)
这样做的最好方法是将String转换为byte [],如下所示:
char[] buffer = str.toCharArray();
然后每个字符都可以转换为它们的字节值(这是某个编码的常量),如下所示:
byte[] b = new byte[buffer.length];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) buffer[i];
}
现在查看结果值并减去/添加一些值以获得所需的结果!