我正在编写一个程序,要求用户输入以空格分隔的10个数字,然后显示不同的数字。如果用户输入程序崩溃以外的任何数字,我的问题就出现了。我正在尝试使用下一个检查器,但我不确定如何在将它们发送到我的阵列之前检查所有10个数字。这是我的代码任何建议将不胜感激。
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;
}
}
答案 0 :(得分:0)
提示:使用Scanner.hasNextInt
或捕获异常。
此外:
“任何建议都会受到赞赏。”
我建议您根据Java Style Guide格式化代码...如果您希望其他人阅读它。 (在你要求他们阅读之前格式化它将是一个好主意......)
{
阻止之前没有换行符......除了;
之后。我建议您使用boolean
而不是char
(例如cont
)来控制逻辑。