-4

単語を「ABCD」のような文字に分割してABCDにし、その後、A = 1、B = 2、......、Z = 26とすると、このシーケンスを各文字に割り当て、それを合計して出力を達成します。これはどのように行うことができますか..??

4

3 に答える 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あなたをマッピングするためのを維持していると仮定します。次に、文字列を分割して個々の文字を取得できます。次に、配列を反復処理して合計を取得します。charactersnumbersempty 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 に答える