虽然提出问题的建议没有禁止这样做,但如果我通过提出具体问题违反任何规则,请告诉我。
我试图将用户输入与之前的用户输入(1-9)进行比较,然后检查重复。但是,如果遇到重复,我的程序将不会停止。我做错了什么?
import java.util.Scanner;
public class No_Duplicates {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
boolean repeat = false;
do {
int[] array = new int[9];
for(int i = 1; i <= 9; i++)
{
System.out.println("Enter a number 1 - 9");
int num = scan.nextInt();
array[i] = num;
for(int j = 1; j <= i; j++)
{
if(num==array[j])
repeat = true;
}
}
}while(!(repeat == true));
System.out.println("No Duplicates Allowed!");
}
}
答案 0 :(得分:1)
您的代码在遇到重复元素时不会停止。
我还注意到您正在从1
而不是0
访问数组索引。在Java中,数组索引从0
开始。因此,您应该从0
开始并在数组长度之前停止。否则,您将遇到ArrayIndexOutOfBoundsException
。
您可以尝试以下内容:
boolean repeat = false;
int[] array = new int[9];
for(int i=0 ; i<9 && repeat!=true ; i++)//checks for repeated input
{
System.out.println("Enter a number 1 - 9");
int num = scan.nextInt();
array[i] = num;
for(int j=0; j<i; j++)
{
if(num==array[j])
{
repeat = true;
break; //breaks out of the loop if encounters a repeated input
}
}
}
if(repeat)
System.out.println("No Duplicates Allowed!");