Найти, есть ли число в массиве, и если да, сколько раз оно появляется - PullRequest
0 голосов
/ 22 мая 2019

Проблема в том, что массив 10000 уже заполнен для меня. Диапазон чисел, которые будут заполнять массив, будет между 0 и 2500. Массив не отсортирован. Моя цель - найти существование 1320 с помощью одного линейного поиска, а второй линейный поиск проверит, сколько раз появляется число 1320. Массив является случайным массивом.

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

public static void main(String[] args) {
    // Finish adding Code
    boolean DoesItExist;
    int iHowMany;
    final int SIZE = 10000, ENTRY = 1320;
    int[] NumArray = new int[SIZE];


    OwenHeading.getHeader("Assignment 9: Arrays.");
    fillTheArray(NumArray, SIZE);
    System.out.println("DONE");
}


public static void fillTheArray(int[] iTempArray, int SIZE) {
    final int RANGE = 2500;
    Random rand = new Random();

    for (int index = 0; index <= SIZE - 1; index++)
        iTempArray[index] = rand.nextInt(RANGE);
}

public static boolean linearSearchOne(int[] iTempArray, int SIZE, int ENTRY) {

    boolean TempDoesItExist;

    return TempDoesItExist;
}

public static int linearSearchTwo(int[] iTempArray, int SIZE, int ENTRY) {

    int HowManyExist;

    return HowManyExist;
}

public static void programOutput(boolean TempDoesItExist, int TempHowMany) {

    if (TempDoesItExist)
        System.out.println("does");
        // Cool, you found the number 1320
    else
        System.out.println("does not");
        // Dang, you didn't find the number 1320
}

}

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

Ответы [ 3 ]

1 голос
/ 22 мая 2019

Инициализируйте ваши логические значения и счетчик

Bool doesItExist = false;
Int iHowManyTimes = 0;

Вы можете проверять значения в массивах в java линейным образом, как это:

for (int number : NumArray) {
    if (anItemInArray == myValue) {
        doesItExist = true;
        return;
    }
}

, а затем делать все заново и увеличиватьваш счетчик

    for (int number : NumArray) {
       if (number == ENTRY) {
          iHowMany += 1;
       }
    }

Редактировать: оператор возврата добавлен в первый цикл, так как нет причины продолжать после того, как значение найдено

0 голосов
/ 22 мая 2019

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

public static boolean linearSearchOne(int[] iTempArray, int SIZE, int ENTRY) {
    for (int i = 0; i < SIZE; i++) {
        if (iTempArray[i] == ENTRY) {
            return true;
        }
    }
    return false
}

public static int linearSearchTwo(int[] iTempArray, int SIZE, int ENTRY) {

    int HowManyExist;
    for (int i = 0; i < SIZE; i++) {
        if (iTempArray[i] == ENTRY) {
            HowManyExist ++;
        }
    }
    return HowManyExist;
}

0 голосов
/ 22 мая 2019

Похоже, вы не вызывали методы линейного поиска. Для линейного поиска вы можете просто сделать что-то вроде следующего:

found=false; 
howManyCounter=0; 
for (int x=0, x<array.length; x++){
    if (array[x]==numberYouWant){
       found=true;
       howManyCounter++;  
    }
}
...