java - 数组中的重复项无效输入

标签 java arrays duplicates

我尝试编写一个简单的代码来检查数组中是否有重复的数字/小于数组大小的数字和大于数组大小的数字。 (例如对于一个大小为7的数组,数组中的数字应在1-7之间且不能重复,否则系统将打印无效错误) 例如,当我输入大小为 1 的数组并输入数字 2 时,我收到以下错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at sumn.main(sumn.java:24)

这是代码本身,对如何解决这个问题有什么想法吗?

public class sumn {
    public static boolean Duplicates(int arr[]) {
        int a, b;
        boolean flag = true;
        for (a=0;a<arr.length-1;a++) {
            for (b=a+1;b<arr.length;b++) {
                if (arr[b]==arr[a]) {
                    return false;                       
                }               
            }
        }
        return flag;
    }

    public static void main(String[] args) {
        int N = MyConsole.readInt("Enter the size of the array:");
        int arr[] = new int [N];
        int i, j;
        boolean flag = true;
        for (i=0;i<arr.length;i++) {
            arr[i]= MyConsole.readInt("Enter a number between 1 to ");  
        }
        for (j=0;j<arr.length;j++) {
            if (Duplicates(arr)==false || N<arr[i] || arr[i]<=0) 
                flag = false;
            if (flag == false)  {
                System.out.println("Invalid input");
            }
        }   
    } 


}

最佳答案

问题出在这一行

if (Duplicates(arr)==false || N<arr[i] || arr[i]<=0) 

成功

if (Duplicates(arr)==false || N<arr[j] || arr[j]<=0) 

i替换为j

关于java - 数组中的重复项无效输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47689899/

相关文章:

html - anchor 标签重复

python - Pandas 以最高值(value)保持复制

java - 在 Apache POI 中将 autoSizeColumn 放在哪里?

java - 了解 hibernate : JDBCExceptionReporter | Invalid parameter index

Java 如何将字符串化点流转换为 ArrayList<Point2D.Double>

javascript - Google Apps 脚本中的数组支持哪些函数?

JavaScript/Lodash/Angular 1 - 在对象数组中搜索并找到属性

java - 这个锁管理代码片段是否过于复杂?

javascript - 复杂场景下如何过滤重复行

mysql - MYSQL表中多表查找重复项(需要多个条件)