如何为字符串Java中的每个字符赋值

时间:2016-01-17 21:14:00

标签: java arrays processing

我使用处理软件接收txt并将其分配到一个数组中,例如:

dog
cat
wolf...

但是我需要a = 1b=2c=3等...才能拥有值,所以最后整个单词会加起来,这样我就可以找到哪个词的价值最大。

我可以做大量的if陈述,但其中26条过多且不必要。那么在这种情况下,最好的方法是什么?

3 个答案:

答案 0 :(得分:3)

char已经是一个数值。它只是屏幕上的表示和与其他整数类型不同的数据类型。更确切地说,Java的char支持UTF-16,因此长度为16位,就像short - 值一样。因此无需将任何值重新分配给字符。事实上,与现有的字符集相比,这种方法更容易出错(例如缺少字符)。

如果您只想将字母表中的字符存储为数字,例如“a = 1”,“b = 2”等,只需使用int v = inputChar - 'a' + 1作为小写字母,并应用相同的原则带有'A'而不是'a'的大写字母。

答案 1 :(得分:1)

对于像这样的问题,

The Processing reference应该是您的第一站。 loadStrings()引用显示了如何将文件读入数组,然后使用for循环遍历字符串:

local debounce = false

part.Touched:connect(function()
   if debounce == false then
     debounce = true
     --Your code goes here.
     wait(1)--Wait one second until you'll be able to execute the code again.
     debounce = false
   end
end)

答案 2 :(得分:0)

  

有一个= 1,b = 2,c = 3等...我可以做很多的If语句,但其中有26个

或者你可以做到

char ch = ...
int a = ch & 0x1f;

int a = ch % 32;

int a = ch - 'a' + 1;

在每种情况下,这都使用基本数学。 “a”到“z”的ASCII值在此表中。

http://www.asciitable.com/index/asciifull.gif

正如你所看到的,'a'从97开始,它在ASCII表的第3个和最后一个32个字符的块中,因此当你模数为32或使用& 31您已将Aa映射到1,将Bb映射到2.如果您要检查此范围之外的字符,我建议您首先使字符有效一个if语句。