MENU

【Java】はじめてつくったコード(誕生日占い計算)

せっかくなので、初回は私がはじめて自分でつくったコードを載せようと思います。
勉強を配列まで進めたあたりで、「今の自分でもこれなら作れるんじゃないか」と思い付いたのがこれです。
tabi-labo.com

まずは、自分の誕生日、誕生月、誕生年の数字を足してください。その数字を一桁ずつ分けた上で、全てを足しててください。この計算を、数字が一桁になるまで続けましょう。以下が、計算例です。

(例)
1950年3月19日生まれの場合

1950 + 3 + 19 = 1972

1 + 9 + 7 + 2 = 19

1 + 9 = 10

1 + 0 = 1

こういう占い、こどもの頃よくやったなぁ(-_-)
というわけで、色々調べながらなんとか作り出したコードが↓です。

public class Main {
 public static void main(String[] args) {
  System.out.println("あなたの誕生日を8桁で入力してください。");
  int input = new java.util.Scanner(System.in).nextInt();
  String str = Integer.toString(input);   //入力された数値を文字列に変換
  String[] resultArray = new String[8];
  resultArray = str.split("");  //文字列を分割して配列化する
  int[] numbers = new int[8];
  for(int i = 0; i < resultArray.length; i++){
   numbers[i] = Integer.parseInt(resultArray[i]);  //文字列int型配列に代入
  }
  int result = calc(numbers[0],numbers[1],numbers[2],numbers[3],numbers[4],numbers[5],numbers[6],numbers[7]);
  System.out.println("あなたの番号は"+result+"です。");
   }
 public static int calc(int a, int b, int c, int d, int e, int f, int g, int i) {
  int result1 = a + b + c + d + e + f + g + i;
  if (result1 < 10){  //初回の結果が1桁の場合はここで終了
   return result1;
  } else {   //初回の計算結果が2桁になった場合は、もう一度計算する
   String str2 = Integer.toString(result1);
   String[] resultArray2 = new String[2];
   resultArray2 = str2.split("");
   int j = Integer.parseInt(resultArray2[0]);
   int k = Integer.parseInt(resultArray2[1]);
   int result2 = j + k;
    if ( result2 <= 9 ){ //2回目の結果が1桁ならここで終了
     return result2;
    }else {  //そうでない場合は、もう一度計算
     int result3 = 0;
     switch(result2){
      case 10:
       result3 = 1;
       break;
      case 11:
       result3 = 2;
       break;
      case 12:
       result3 = 3;
       break;
     }
     return result3;
   }
  }
 }
}

自分で見てもごちゃごちゃしててよくわからん・・・
でも、実際動かしてみてちゃんと動いたときは本当にうれしかったです。
実行結果がこんな感じになります。

f:id:kumaGoro_95:20200717121849j:plain
実行結果

これを作った時の最初にして最大の壁は、「入力された8桁の数字を、1桁ずつ足していくにはどうすればいいか」でした。
で、色々調べた結果たどりついたのが以下の手順でした。

  1. 8桁の数字を文字列に変換する
  2. 文字列を分割し、配列化する
  3. int型の配列を用意し、上記の文字型配列を数値化しながらint型配列に代入していく

この部分に該当するのが以下の箇所です。

int input = new java.util.Scanner(System.in).nextInt();
String str = Integer.toString(input);   //入力された数値を文字列に変換
String[] resultArray = new String[8];
resultArray = str.split("");  //文字列を分割して配列化する
int[] numbers = new int[8];
for(int i = 0; i < resultArray.length; i++){
numbers[i] = Integer.parseInt(resultArray[i]);  //文字列をint型配列に代入
}

この部分は、以下のページを参照しました。
teratail.com