Javaで魔王を倒すRPGゲームを作成しようとしているのですが初心者過ぎてわかりません。

実現したいこと

魔王を倒せるか?また、もし倒せるなら何ターン掛かるかを計算するプログラムをJavaで書きたいです。このゲームはターン制で、1ターンは以下のように進む。魔王のHPはh。あなたが魔王に攻撃すると、魔王のHPがa減る。もし魔王のHPが0以下になった場合、魔王を倒したことになる。魔王は回復魔法を使い、毎ターンHPがb増える。 入力ルール:h a b   出力ルール:1行目に、もし魔王を倒せるならYESを出力、そうでないならNOを出力。もし倒せるなら、2行目に魔王を倒すために必要なターン数を出力。

発生している問題・分からないこと

実行してもうまく結果が出ないです。

エラーメッセージ

error

12not ok 1 [基本実装]入力が (h, a, b) = (10, 5, 2) のときに正解できる。 3 4 #### 入力: 5 6 10 5 2 7 8 #### 標準出力: 9 10 line[0]: 10 5 2 11 12 #### 標準エラー出力: 13 14 Picked up JAVA_TOOL_OPTIONS: -Xmx512M -XX:MaxMetaspaceSize=512M 15 16 Exception in thread "main" java.lang.NumberFormatException: For input string: "10 5 2" 17 18 at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) 19 20 at java.base/java.lang.Integer.parseInt(Integer.java:661... 21 22 23 24 ステータスコードが正常(0)ではありません

該当のソースコード

Java

1package track;2import java.util.Scanner;3import java.util.ArrayList;4 5public class App {6 7 // Scanner インスタンスをクラスレベルで宣言する8 private static Scanner scanner = new Scanner(System.in);9 10 public static void main(String[] args) {11 // このコードは標準入力と標準出力を用いたサンプルコードです。12 // このコードは好きなように編集・削除してもらって構いません。13 // ---14 // This is a sample code to use stdin and stdout.15 // Edit and remove this code as you like.16 17 String[] lines = getStdin();18 for (int i = 0, l = lines.length; i < l; i++) {19 String output = String.format("line[%s]: %s", i, lines[i]);20 System.out.println(output);21 }22 23 // 入力を取得24 int h = Integer.parseInt(lines[0]); // 魔王のHP25 int a = Integer.parseInt(lines[1]); // 攻撃力26 int b = Integer.parseInt(lines[2]); // 回復量27 28 // 必要なターン数を計算29 int turns = calculateTurns(h, a, b);30 // 結果を出力31 if (turns != -1) {32 System.out.println("YES");33 System.out.println(turns);34 } else {35 System.out.println("NO");36 }37 38 // Scanner は main メソッド内でクローズする必要はありません39 }40 41 42 private static String[] getStdin() {43 ArrayList<String> lines = new ArrayList<>();44 while (scanner.hasNext()) {45 lines.add(scanner.nextLine());46 }47 return lines.toArray(new String[lines.size()]);48 }49 50 // 必要なターン数を計算するメソッド51 private static int calculateTurns(int h, int a, int b) {52 if (a <= b) {53 return -1; // 攻撃力が回復量以下の場合、魔王を倒すことはできない54 }55 56 int turns = (h + (a - b) - 1) / (a - b); // 切り上げ除算を使用して計算57 return turns;58 }59}

試したこと・調べたこと

上記の詳細・結果

基礎知識がなく、ちゃっとGPTにお願いして書いてもらった。正直1からわからないので細かく教えていただけると助かります。

補足

特になし

コメントを投稿

0 コメント