Java初学者です。
学習の課題として、Javaを使って、サイコロを振って1-6のいずれかの数字を出力するという機能を作っています。
任意の数をユーザーに入力してもらい、入力された数のサイコロを同時に振る設定にしています。
また、複数のサイコロを振った時の、出た数字の合計も表示させています。
さらに、ユーザーが希望する場合何度でも繰り返しサイコロを振るという動きをさせています。
「いくつサイコロを振りたいかという入力を受け取り、サイコロをふり、数字の合計を出す」ためのメソッドを作成したのですが、これを実行した後にその後の処理が行われなくなってしまいました。
処理が行われない理由、修正方法を教えていただけますと非常に助かります。
###メインメソッド
Java
1 2 public static void main(String[] args) { 3 System.out.println("Welcome :)"); 4 System.out.print("How many dices would you like to roll? Please enter a number:"); 5 6 askAndRollAndSum(); 7 8 while (true) { 9 System.out.println("Would you still like to roll the dice(s) again?(Yes or No)"); 10 Scanner sc = new Scanner(System.in); 11 String answer = sc.next(); 12 if (answer.toLowerCase().equals("yes")) { 13 System.out.println("How many dices would you like to roll this time?"); 14 askAndRollAndSum(); 15 } else { 16 System.out.println("Thank you for your time :)"); 17 break; 18 } 19 } 20 } 21 22
5行目で以下のメソッドを呼び出しており、当該メソッドは実行されるのですが、それ以降のコードが実行されません。
###問題のメソッド
Java
1 public static void askAndRollAndSum() { 2 while (true) { 3 int sum = 0; 4 Scanner sc = new Scanner(System.in); 5 int numberOfDices = sc.nextInt(); 6 if (numberOfDices <= 0) { 7 System.out.println("Please enter a number bigger than 0"); 8 numberOfDices = sc.nextInt(); 9 if (numberOfDices <= 0) { 10 System.out.println("Please try again! Sorry :("); 11 break; 12 } 13 } 14 for (int i = 0; i < numberOfDices; i++) { 15 int resultOfThisTime = valueOfDice(); 16 System.out.println(resultOfThisTime); 17 sum += resultOfThisTime; 18 } 19 System.out.println("Total: " + sum); 20 } 21 } 22
一度ほぼこの通りのコードで想定通りの動きをしたのですが、細かい部分を修正していたら、どこかいじってしまったようで、このメソッドの実行後の処理が行われなくなってしまいました。
###問題の起きていないメソッド
Java
1 public static int valueOfDice() { 2 Random rand = new Random(); 3 int result = rand.nextInt(6) + 1; 4 return result; 5 } 6
###出力:
Welcome :) How many dices would you like to roll? Please enter a number:(入力)2 5 1 Total: 6
###想定している出力:
Welcome :) How many dices would you like to roll? Please enter a number:(入力)2 5 1 Total: 6 Would you still like to roll the dice(s) again?(Yes or No) (入力)Yes How many dices would you like to roll this time? (入力)3 2 2 6 Total: 10 Would you still like to roll the dice(s) again?(Yes or No) (入力)No Thank you for your time :)
一度想定通りうまくにいったのですが、色々と細かいところをいじっていたら、メインメソッド5行目のaskAndRollAndSum();の後の処理が行われないようになってしまいました。
試しに、問題のメソッドの代わりに、問題の起きていないメソッドを5行目にて実行・printしてみたのですが、こちらは問題なくその後の処理も行われました。
Eclipse IDE for Java Developers(4.18.0)を使っています。
長文で見づらく、申し訳ありません。処理が行われない理由、修正方法を教えていただけますと大変助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー