Ввод в массив без измерения без списка массивов - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу создать программу, которая будет читать значения int от пользователя, пока не будет введено значение, не являющееся int.Тогда я хочу узнать, сколько чисел равно.Я попробовал этот код

import java.util.Scanner;

public class Equals {
    public static void main(String[] args){
        Scanner keyboard = new Scanner(System.in);
        Scanner input = keyboard;
        int index = 0;
        int equals = 0;
        while(keyboard.hasNextInt()){
            keyboard.nextInt();
            index++;
        }
        int[] equals = new int[index];
        for(int i = 0 ; i < index ; i++){
            int aux = input.nextInt();
            values[i] = aux;
            for(int b = 0 ; b < index ; b++){
                if(aux == values[b]){
                    equals++;
                }
            }
        }
        System.out.print(equals);
    }
}

Этот код не работает, потому что сканер клавиатуры получает только количество значений, введенных пользователем, и я использую это для размера массива, но я не могу получить каждое отдельное значение для сравнения.Я не могу использовать списки массивов.

1 Ответ

0 голосов
/ 16 ноября 2018

Если вы не можете использовать списки массивов, что вы можете использовать? Вы можете использовать это?

 int[] values = new int[0];

 while(keyboard.hasNextInt()){
        values  = Arrays.copyOf(values, values.length + 1);
        values[values.length-1] = keyboard.nextInt();
        index++;
   }

И если вам не разрешено создавать класс массивов, вы можете изменить размер массива вручную, как показано ниже, и использовать эту функцию вместо Arrays.copyOf:

private int[] resize(int[]s, int capacity) {
    int[] copy = new int[capacity];
    for (int i = 0; i < s.length; i++) {
        copy[i] = s[i];
        s = copy;
    }
    return copy;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...