単語を「ABCD」のような文字に分割してABCDにし、その後、A = 1、B = 2、......、Z = 26とすると、このシーケンスを各文字に割り当て、それを合計して出力を達成します。これはどのように行うことができますか..??
質問する
1523 次
3 に答える
0
次のコードを試してください:
String data = "ABCD";
int sum=0;
String dataToProcess = data.toLowerCase();
for(int i=0;i<dataToProcess.length();i++){
char c = dataToProcess.charAt(i);
sum += c - 96;
}
System.out.println("sum is "+sum);
于 2012-11-05T11:39:29.067 に答える
0
私はあなたがいくつかでmap
あなたをマッピングするためのを維持していると仮定します。次に、文字列を分割して個々の文字を取得できます。次に、配列を反復処理して合計を取得します。characters
numbers
empty string
分割するempty string
と、配列の最初の要素として空の文字列が取得されることに注意してください。なぜなら、Javaの文字列には、empty
文字列の先頭に文字列が含まれているからです。
したがって、このコードを試すことができます:-
String str = "ABCDEF";
String[] arr = str.split("");
int sum = 0;
Map<String, Integer> map = new HashMap<String, Integer>() {
{
put("A", 1); put("B", 2); put("C", 3);
put("D", 4); put("E", 5); put("F", 6);
}
};
System.out.println(Arrays.toString(arr));
// Iteration starts from index 1, as 1st element is an empty string
for (int i = 1; i < arr.length; i++) {
sum += map.get(arr[i]);
}
System.out.println("Sum = " + sum);
出力:-:-
[, A, B, C, D, E, F]
Sum = 21
または、methodを使用して、文字列を個々String#toCharArray
の文字に直接変換することもできます。character array
その場合、マップ宣言は次のようになります。-Map<Character, Integer>
String str = "ABCDEF";
Map<Character, Integer> map = new HashMap<Character, Integer>() {
{
put('A', 1); put('B', 2); put('C', 3);
put('D', 4); put('E', 5); put('F', 6);
}
};
for (char ch: str.toCharArray()) {
sum += map.get(ch);
}
于 2012-11-05T11:33:36.417 に答える
0
int sum = 0;
for (char ch: theWordToCount.toCharArray()) {
sum += ((int)ch) - 64;
}
'A'のASCIIコードは65であるため、これによりAに+1、Bに+2などが追加されます。
大文字と小文字を処理する必要があります。たとえば、小文字の場合は96を引きます。
于 2012-11-05T11:35:57.197 に答える