前提・実現したいこと
hit&blowのゲームを製作しています。スコア部分の表示で困っています。
発生している問題・エラーメッセージ
ゲームクリア後の表示に最初に入力した名前と現在の日付、ゲームクリア時刻を表示したいのですが現状nullになってしまいデータが表示されません。
まだ知識が浅く理解できない部分もあるかもしれませんが宜しくお願い致します。
該当のソースコード
java
1package game; 2 3import java.util.Arrays; 4import java.util.Scanner; 5public class MathGame { 6 public static void main(String[] args) { 7 // TODO 自動生成されたメソッド・スタブ 8 System.out.println("名前を入力してください"); 9 Score score = new Score(); 10 String name = score.getName(); 11 System.out.println("ゲームを始めます"); 12 int answer[] = new int[4]; 13 answer[0] = (int) (Math.random() * 9) + 1; 14 for (int i = 1; i < answer.length; i++) { 15 int num = -1; 16 for (boolean isNotExist = false; !isNotExist;) { 17 num = (int) (Math.random() * 10); 18 isNotExist = true; 19 for (int j = 0; j < answer.length; j++) { 20 if (answer[j] == num) { 21 isNotExist = false; 22 break; 23 } 24 } 25 } 26 if (num < 0) { 27 throw new IllegalStateException(); 28 } 29 answer[i] = num; 30 } 31 Arrays.stream(answer).forEach(System.out::println); 32 33 int input[] = new int[4]; 34 int count = 1; 35 while (true) { 36 System.out.println("4文字の数字を入力してください"); 37 String sc = new Scanner(System.in).nextLine(); 38 boolean error = false; 39 int length = sc.length(); 40 if (length != 4) { 41 error = true; 42 } 43 for (int i = 0; i < length; i++) { 44 char c = sc.charAt(i); 45 if (c < '0' || c > '9') { 46 error = true; 47 } 48 } 49 for (int i = 0; i < length; i++) { 50 for (int j = i + 1; j < length; j++) { 51 if (sc.charAt(i) == sc.charAt(j)) { 52 error = true; 53 } 54 } 55 } 56 if (error == true) { 57 System.out.println("4桁の数値を入力してください"); 58 continue; 59 } 60 for (int i = 0; i < length; i++) { 61 input[i] = Integer.parseInt(sc.substring(i, (i + 1))); 62 } 63 int hit = 0; 64 for (int i = 0; i < 4; i++) { 65 if (input[i] == answer[i]) { 66 hit++; 67 } 68 } 69 int Exist = 0; 70 for (int i = 0; i < 4; i++) { 71 for (int j = 0; j < 4; j++) { 72 if (input[i] == answer[j]) { 73 Exist++; 74 } 75 } 76 } 77 if (hit == 4) { 78 System.out.println("正解です" + count + "回目で正解です"); 79 System.out.println(" "); 80 break; 81 } else { 82 System.out.println("hit" + hit + "個、Exist" + (Exist - hit) + "個"); 83 count++; 84 } 85 } 86 System.out.println(score.getClearTime() + name + score.getPlayDate()); 87 } 88}
package game; import java.util.Calendar; import java.util.Date; import java.util.Scanner; /** * ゲームのスコアを保持するクラス */ public class Score { /** プレイヤー名 */ private String name; /** カウント数 */ private int count = 0; /** プレイ日時 */ private Date playDate; /** クリア時間(ミリ秒) */ private long clearTime; /** ゲーム開始時刻(ミリ秒) */ private long startTime; /** * プレイヤー名を取得します * * @return プレイヤー名 */ public String getName() { return this.name; } /** * プレイヤー名を設定します * * @param name プレイヤー名 */ public void setName(String name) { this.name = name; } /** * カウント数を取得します * * @return カウント数 */ public int getCount() { return this.count; } /** * カウント数を設定します * * @param count カウント数 */ public int setCount(int count) { return this.count = count; } /** * プレイ日時を取得します * * @return プレイ日時 */ public Date getPlayDate() { return this.playDate; } /** * プレイ日時を設定します * * @param date プレイ日時 */ public void setPlayDate(Date date) { this.playDate = date; } /** * カウント数をインクリメントします */ public void incrementCount() { this.count++; } /** * クリア時間を取得します * * @return クリア時間(ミリ秒) */ public long getClearTime() { return this.clearTime; } /** * クリア時間を設定します * * @param clearTime クリア時間 */ public void setClearTime(long clearTime) { this.clearTime = clearTime; } /** * ゲームスタート処理を行い、初期化されたスコアオブジェクトを取得します * * @param name プレイヤー名 */ public static Score startGame(String name) { Score score = new Score(); score.setName(name); score.setCount(0); score.startTime = System.currentTimeMillis(); return score; } /** * ゲームを終了し、このスコアオブジェクトを終了状態にします */ public void endGame() { final Date date = new Date(); this.setPlayDate(date); this.setClearTime(date.getTime() - this.startTime); } Scanner sc = new Scanner(System.in); String name1 = sc.next(); Calendar cTime = Calendar.getInstance(); { System.out.println("" + cTime.get(Calendar.HOUR_OF_DAY) + "時"); System.out.println("" + cTime.get(Calendar.MINUTE) + "分"); cTime.set(Calendar.HOUR_OF_DAY, 23); cTime.set(Calendar.MINUTE, 59); } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/24 02:52
2020/03/24 02:53
2020/03/24 03:57
2020/03/24 04:14