首页 > 解决方案 > 如何将唯一输入的值输入到数组中

问题描述

我的作业问题是创建一个名为 NoDuplicates 的过程,它将提示用户输入 7 个唯一整数。当用户输入数字时,要求他们重新输入之前输入过的数字。输出 7 个唯一数字。

我尝试了很多不同的 while 和 for 循环组合,但没有任何效果


    import java.util.Scanner;
    public class arrayexcersisespart3num1 {

        public static void main(String []arg) {
            Scanner input = new Scanner(System.in);
            noDuplicates(input);
        }
        public static void noDuplicates(Scanner input) {
            boolean check = true;
            int jumbo;
            int[]noDuplicates = new int [7];
            System.out.println("Please enter a unique Name");

            for (int i = 0; i<noDuplicates.length;) {
                System.out.println("Enter a number");
                jumbo = input.nextInt();
                while(check ==true|| i>0) {
                    check = false;
                    System.out.println("Please enter another number");
                    jumbo = input.nextInt();
                    if (jumbo==(noDuplicates[i])) {
                        check = true;
                        System.out.println("this Name has been previously added. Please choose another number");
                    }
                }
                jumbo = noDuplicates[i];
                System.out.print("this Number has been previously successfully added in position ");
                System.out.println(i+1);
                check = false;
                i++;
            }                                   
        }
    }

标签: java

解决方案


试试这个 Collection.contains 的逻辑,然后将它添加到集合中。它将从控制台询问用户的输入并检查数据是否存储在列表中。像这样,它将向用户询问使用列表中 7 个唯一时间的值

public void uniqueDataCheckOnConsoleOnLimitByList() {
        int capacity = 7;
        List<String> dataList = new ArrayList<>(capacity);

        while (capacity != 0) {
            System.out.println("Please enter a number");
            Scanner in = new Scanner(System.in);

            String s = in.nextLine();
            if (dataList.contains(s)) {
                System.out.println("You already entered the number:" + s);
                //System.out.println("Please Enter a New Number"); 
            } else {

                dataList.add(s);
                capacity--;
            }
        }

    }

因为我没有检查对 Array 的要求。如果是数组,请检查它。

public void uniqueDataCheckOnConsoleOnLimitByArray() {
        int capacity = 7;
        String data[]= new String[capacity];


        while (capacity != 0) {
            System.out.println("Please enter a number");
            Scanner in = new Scanner(System.in);

            String s = in.nextLine();

            if (containsArray(data, s)) {
                System.out.println("You already entered the number:" + s);
                //System.out.println("Please Enter a New Number"); 
            } else {

                data[capacity-1]=s;
                capacity--;
            }
        }



    }

    public boolean containsArray(String data[],String input){
        for(String s:data){
           if(input.equalsIgnoreCase(s))
               return true;
        }
        return false;
    }

推荐阅读