任意の文字列か直角三角形を選んで好きな回数または段数表示するプログラムを作っています。
しかし入力された任意の文字列を入力する方に問題があります。
なぜこうなってしまうのか、また、解決策を教えていただきたいです。
状況は以下の通りです。
文字を表示してください。といくつ表示しますか。が行間なく出力されてしまい、入力する場所がない状態になっています。
無理に入力すると、
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Hello.main(Hello.java:38)
というエラーが出ます。
String c = stdIn.nextLine();
が問題かと思い、String c = stdIn.next();でも試してみました。
しかし、いくつ表示するかの数を打ち込むと、同じエラーが出ます。
なぜこうなってしまうのでしょうか。また、解決策を教えていただきたいです。
よろしくお願いします。
import java.util.Scanner; public class Hello{ static void reader(String c, int n) { for (int i = 1; i <= n; i++){ System.out.println(c); } } static void triangle(int m) { for(int i = 1; i <= m; i++) { for(int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } } public static void main(String[] args) { try(Scanner stdIn = new Scanner(System.in)){ int choose; do { System.out.println("文字表示なら1、三角形なら2"); choose = stdIn.nextInt(); }while (choose != 1 && choose != 2); if(choose ==1){ System.out.println("文字を入力してください。"); String c = stdIn.nextLine(); System.out.println("いくつ表示しますか。"); int n = stdIn.nextInt(); reader(c,n); } else { System.out.println("何段表示しますか?"); int m = stdIn.nextInt(); triangle(m); } } } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/20 08:35