抱歉,标题令人误解或令人困惑,但这是我的两难选择。我正在输入一个字符串,并想为字母表中的每个大写字母分配一个值(A = 1,.. Z = 26),然后在该字符串中添加每个字母的值。
示例: ABCD = 10(因为1 + 2 + 3 + 4)
但是我不知道如何在字符串中添加所有值
注意 :这仅适用于 大写 字母和字符串
public class Test { public static void main(String[] args) { Scanner scannerTest = new Scanner(System.in); System.out.println("Enter a name here: "); String str = scannerTest.nextLine(); char[] ch = str.toCharArray(); int temp_integer = 64; for (char c : ch) { int temp = (int) c; if (temp <= 90 & temp >= 65){ int sum = (temp - temp_integer); System.out.println(sum); } } } }
因此,如您所见,每次循环时,我都会打印出总和,这意味着:如果我输入“ AB”,则输出将为1和2。
但是,我想更进一步,将这两个值加在一起,但是我很困惑,有什么建议或帮助吗?( 注意: 这不是作业或任何事情,只是练习习题集)
我更喜欢使用字符文字。您知道范围是A从Z(1到26),因此您可以从每个范围中减去“ A” char(但您需要加1,因为它的开头不是0)。我还要toUpperCase在输入行上打电话。就像是,
A
Z
1
26
char
0
toUpperCase
Scanner scannerTest = new Scanner(System.in); System.out.println("Enter a name here: "); String str = scannerTest.nextLine().toUpperCase(); int sum = 0; for (char ch : str.toCharArray()) { if (ch >= 'A' && ch <= 'Z') { sum += 1 + ch - 'A'; } } System.out.printf("The sum of %s is %d%n", str, sum);
我用你的例子测试了
Enter a name here: ABCD The sum of ABCD is 10