※当サイトの記事には、広告・プロモーションが含まれます。

Java 文字列の数字を文字へ変換からの数値として足し算

「はたらけど はたらけど猶わが生活楽にならざり ぢっと手を見る」、石川啄木の有名な歌ですね、啄木は浪費家だったそうですが、浪費しているわけでもないのに、私にはお金が無い、それは給料が安いから~、どうもボクです。

お金持ちになれる日はいつ来るんでしょうかね(哀)。

というわけで、今回もJavaのお話です。

ご存知、AIZU ONLINE JUDGEで。

f:id:ts0818:20190206220556p:plain

レッツ~トライ。

 

文字列を文字にしてからの数値計算

まぁ、使い道がまったく思いつかないですが、やってみますか。

EclipseJavaプロジェクトを適当に作りまして、クラスなんかも適当に作成。

f:id:ts0818:20190206221016p:plain

で、ソースコードはこんな感じで。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class CharNumberSum {

  public static void main(String[] args) throws IOException {
    // 標準入力用のオブジェクトを用意(コンソールの入力を受け取る用)
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

    String inputStr = null;  // 入力値の文字列を受け取る用の変数
    char[] charNumber = null;  // 入力値の文字列を受ける用の文字配列
    Map<Integer, Integer> strNumberArr = new HashMap<>();  // 文字配列の合計値を保持用のマップ
    int index = 0;  // マップのkey用
    // 無限ループ
    while (true) {
      inputStr = input.readLine();  // 入力値を文字列として受け取る
      // 入力された文字が、"0"の場合
      if ("0".equals(inputStr)) {
        // "0"が入力されるまでに入力された文字列の数値としての合計
        for (Map.Entry<Integer, Integer> entry : strNumberArr.entrySet()) {
          System.out.println(entry.getValue());
        }
        break; // while文を抜ける。無限ループからの脱出
        
      } else {
        // 入力された文字列を文字配列に
        charNumber = inputStr.toCharArray();
        // 文字数だけループ
        for (int i = 0, sum = 0; i < charNumber.length; i++) {
          // 文字を数値として合計する
          sum += Character.getNumericValue(charNumber[i]);
          // ループの最後に、マップに保存
          if (i == charNumber.length - 1) {
            strNumberArr.put(index, sum);
            index++;  // マップのkeyをインクリメンタルジャーニー(すみません...ただ、+1加算してるだけです)
          }
        }
      }
    }
  }
}

んで、実行してみますか。

f:id:ts0818:20190206221345p:plain

適当な数字を入力して、終了するときは、0を入力で。

f:id:ts0818:20190206221448p:plain

まぁ、なんていうか、実用性ゼロですな... 

一応、OKということらしいっす...

f:id:ts0818:20190206221809p:plain

 

今日も、まったく成長していないのであった...

今回はこのへんで。