-2
私は10個の数字をスペースで区切って入力するように求めているプログラムを書いています。ユーザーがプログラムがクラッシュする番号以外に何かを入力した場合、私の問題が発生します。私は次のチェッカーを使用しようとしていますが、配列に送る前に10個の数字をすべてチェックする方法がわかりません。ここに私のコードは何かアドバイスをいただければ幸いです。ユーザインプットをチェックして各intがJavaの数字であることを確認してください
import java.util.Scanner;
public class DistinctNumbers
{
static double input;
static int number;
public static void main(String[] args)
{
char cont='N';
do{
menue();
menueCatch();
cont=contOption();
}while(cont=='Y');
}
private static void menue()
{
System.out.print("Please make a selection."
+"\n1: Begin"
+"\n2: Exit"
+"\n");
}
private static void menueCatch()
{
Scanner userIn= new Scanner(System.in);
int userChoice=userIn.nextInt();
String input="";
switch(userChoice)
{
case 1:
{
process();
break;
}
case 2:
{
break;
}
}
}
private static void process()
{
Scanner userIn = new Scanner(System.in);
int[] numbers = new int[10];
int count = 0;
do
{
System.out.print("Enter ten numbers with a space seperating each number: ");
while (!userIn.hasNextInt())
{
System.out.println("That's not a number!");
System.out.println("Re-enter a number: ");
userIn.next();
}
number = userIn.nextInt();
} while (number <);
for (int index = 0; index < numbers.length; index++)
{
int num = userIn.nextInt();
if (isNew(numbers, num))
{
numbers[count++] = num;
}
}
System.out.println("The number of distinct number is " + count);
System.out.print("The distinct numbers are: ");
for (int index = 0; index < count; index++) {
System.out.print(numbers[index] + " ");
}
}
private static boolean isNew(int[] numbers, int num) {
for (int index : numbers){
if (num == index) return false;
}
return true;
}
private static char contOption()
{
char answer;
Scanner userIn=new Scanner(System.in);
System.out.print("\nDo you wish to enter another 10 numbers?(Y/N): ");
answer=userIn.next().toUpperCase().charAt(0);
return answer;
}
}
入力を取っている間にtry catchを使用すると、 –
がクラッシュすると、スタックトレースが取得され、どこに、なぜそれが表示されますか? – John3136