我使用处理软件接收txt
并将其分配到一个数组中,例如:
dog
cat
wolf...
但是我需要a = 1
,b=2
,c=3
等...才能拥有值,所以最后整个单词会加起来,这样我就可以找到哪个词的价值最大。
我可以做大量的if
陈述,但其中26条过多且不必要。那么在这种情况下,最好的方法是什么?
答案 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您已将A
和a
映射到1,将B
和b
映射到2.如果您要检查此范围之外的字符,我建议您首先使字符有效一个if语句。