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

标签 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 访问数组索引。在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!");

关于Java - 找到匹配时数组比较不会终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42306601/

相关文章:

java - 如何检查 Java 中的加密结果(SHA1PRNG 和 AES)?

java - Mybatis 注解映射器可以返回数组吗?

ios - 以键和值数组的形式快速从 JSON 中检索特定数组?

php - PHP 中 array_replace 和 array_merge 的区别

python - 'for x in array' 总是导致排序的 x 吗? [Python/NumPy]

iphone - 在 iPhone 应用程序中保存对象数组的最佳方式。

java - 用于集成测试的启动服务器失败

javascript - 我无需 root 即可看到的任何内存文件夹的路径是什么? AndroidStudio

java - 使用 groovy 中的 map 编写 Excel

java - 是否可以在 .war 内的属性文件上写入内容?