せっかくなので、初回は私がはじめて自分でつくったコードを載せようと思います。
勉強を配列まで進めたあたりで、「今の自分でもこれなら作れるんじゃないか」と思い付いたのがこれです。
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; } } } }
自分で見てもごちゃごちゃしててよくわからん・・・
でも、実際動かしてみてちゃんと動いたときは本当にうれしかったです。
実行結果がこんな感じになります。
これを作った時の最初にして最大の壁は、「入力された8桁の数字を、1桁ずつ足していくにはどうすればいいか」でした。
で、色々調べた結果たどりついたのが以下の手順でした。
- 8桁の数字を文字列に変換する
- 文字列を分割し、配列化する
- 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