整数入力を取り、入力に基づいていくつかの文字を出力し、プログラムを再度実行するように求めるプログラムがあります。例えば
Please enter an integer --> 3
x
xx
xxx
xx
x
Do you want to run again?
これは私のプログラムのコードです:
import java.util.*;
public class CMIS242Assignment1Stars
{
public static void main(String[] args)
{
String again;
do //start of "run again" loop
{
System.out.print("Input a positive integer and press [ENTER]--> ");
Scanner input = new Scanner(System.in);
if (input.hasNextInt()) // check if input is parsable to an int
{
int num = Integer.parseInt(input.next());
if (num <= 0) //check if num is positive
{
System.out.println(num + " is not a positive integer. Using +" + (num*-1) + " instead.");
num = num *= -1;
}
String stars = new String(new char[num]).replace("\0", "*"); // create a string of '*' of length 'num'
int forNum = num * 2;
int flip = 0;
for (int x = 0; x <= forNum ; x++)
{
System.out.println(stars.substring(0,stars.length() - num)); //create substrings of variable length from 'stars'
if(num <= 0)
{
flip = 1;
}
if(flip == 0)
{
num--;
}
else
{
num++;
}
}
}
else
{
System.out.println("ERROR: Please input a positive integer!");//error message if a non-integer is entered
}
System.out.print("Would you like to run again? [Yes / No] ");
again = input.next();
}
while(again.equalsIgnoreCase("yes") || again.equalsIgnoreCase("y")); // end of "run again" loop
System.out.print("Good Bye!"); //exit message
}
}
問題は、正しい入力を保証するコードにあると思います。int または負の int が入力された場合、プログラムは完全に機能しますが、非 int が入力として入力された場合、プログラムは「再実行」プロンプトを待ちません。どうすればこれを修正できますか?