Java - 数组比较在找到匹配时不会终止?

时间:2017-02-17 20:13:39

标签: java arrays

虽然提出问题的建议没有禁止这样做,但如果我通过提出具体问题违反任何规则,请告诉我。

我试图将用户输入与之前的用户输入(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!");
    }
}

1 个答案:

答案 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!");