我需要编写一个代码,该代码返回用户输入的字符串的数值之和。例如,如果用户输入aa,则总和为2,bb的总和为4。这就是我所拥有的。任何帮助将非常感激。我意识到哈希映射方法可能不是最有效的,但是我想这样做。我的问题是得到结果的总和
在此处输入代码
public static void main(String[] args)
{
final Map<Character, Integer> map;
System.out.println("Plaese enter a sentence:");
Scanner read = new Scanner(System.in);
final String str = read.nextLine();
map = new HashMap<>();
// or map = new HashMap<Character, Integer> if you are using something before Java 7.
map.put('a', 1);
map.put('b', 2);
map.put('c', 3);
map.put('d', 4);
map.put('e', 5);
map.put('f', 6);
map.put('g', 7);
map.put('h', 8);
map.put('i', 9);
map.put('j', 10);
map.put('k', 11);
map.put('l', 12);
map.put('m', 13);
map.put('n', 14);
map.put('o', 15);
map.put('p', 16);
map.put('q', 17);
map.put('r', 18);
map.put('s', 19);
map.put('t', 20);
map.put('u', 21);
map.put('v', 22);
map.put('w', 23);
map.put('x', 24);
map.put('y', 25);
map.put('z', 26);
for(final char c : str.toCharArray())
{
final Integer val;
val = map.get(c);
if(val == null)
{
// some sort of error
}
else
{
System.out.print(val + " ");
}
}
System.out.println();
String numbers = val.nextLine(); //String would be 55
int sum = 0;
for (char c : numbers.toCharArray()) {
sum += c - '0';
}
System.out.println(sum); //the answer is 10
}
}
我希望这对您有用
var str = "aa";
var strArray = str.split('');
var letterValArray = strArray.map(char => char.charCodeAt(0) - 96);
var sum = 0;
letterValArray.forEach(num => sum += num)
您可以使用HashMap进行求和。您可以在for循环中执行sum + = map.get(c)。 (在循环之前声明sum并将其初始化为0)
sum=0
for(final char c : str.toCharArray())
{
final Integer val;
val = map.get(c);
if(val == null)
{
// some sort of error
}
else
{
sum+=map.get(c);
System.out.print(val + " ");
}
}