Как ввести однозначно введенные значения в массив - PullRequest
0 голосов
/ 23 сентября 2019

Мой домашний вопрос - создать процедуру под названием 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++;
            }                                   
        }
    }

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Я не понимаю ваш код, но:

final int N = 7; // Constant, used multiple times throughout the program
Scanner sc = new Scanner (System.in);
int[] noDuplicates = new int[N];
noDuplicates[0] = sc.nextInt();
for(int i=1; i<N; i++){ // Loops through the array to put numbers in
    int query = sc.nextInt(); // Number to be put into the array
    for(int j=0; j<i-1; j++){
        if(noDuplicates[j] == query){ // If they are the same
            i--;
            continue; // Tells them to input a new number, skips all code ahead
        }
    }
    noDuplicates[i] = query;
}
0 голосов
/ 23 сентября 2019

Попробуйте эту логику 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--;
            }
        }

    }

Поскольку я не проверял требования к массиву.Пожалуйста, проверьте это в случае массива.

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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...