Пользовательский ввод с линейным и бинарным поиском в java

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

import java.util.Scanner;

public class Searching
{
public static int[] anArray = new int[100];

private int numberOfElements;

public int arraySize = numberOfElements;

public String linearSearch(int value)
{

    int count = 0;

    boolean valueInArray = false;

    String indexOfValue = "";

    System.out.print("The Value was Found in: ");

    for(int i = 0; i < arraySize; i++)
    {   
        if(anArray[i] == value)
        {   
            valueInArray = true;

            System.out.print(i + " ");

            indexOfValue += i + " ";

        }
        count ++;
    }
    if(!valueInArray)
    {
        indexOfValue = " None found";

        System.out.print(indexOfValue);
    }
    System.out.println("\nIt took " + count + " probes with a linear search to find");

    return indexOfValue;

}

public void binarySearch(int value)
{

    int min = 0;
    int max = arraySize - 1;
    int count = 0;

    while(min <= max)
    {

        int mid = (max + min) / 2;

        if(anArray[mid] < value) min = mid + 1;

        else if(anArray[mid] > value) max = mid - 1;

        else
        {

            System.out.println("\nFound a Match for " + value + " at Index " + mid);

            min = max + 1;
        }
        count ++;
    }   
    System.out.println("It took " + count + " probes with a binary search to find");
}

public static void main(String[] args)
{
    @SuppressWarnings("resource")
    Scanner scan = new Scanner(System.in);

    System.out.println("Input the number of elements in your Array");
    int numberOfElements = scan.nextInt();

    if(numberOfElements <= 0)
    {
        System.exit(0);
    }

    int[] anArray = new int[numberOfElements];

    System.out.println("\nEnter " + numberOfElements + " Integers");
    for(int i = 0; i < anArray.length; i ++)
    {
        System.out.println("Int # " + (i + 1) + ": ");
        anArray[i] = scan.nextInt();
    }

    System.out.println("\nThe integers you entered are: ");
    for(int i = 0; i < anArray.length; i ++)        // for loop used to print out each element on a different line
    {
        System.out.println(anArray[i]);
    }

    System.out.println("Which element would you like to find?");
    int value = scan.nextInt();

    Wee3Q2JOSHBALBOA newArray = new Wee3Q2JOSHBALBOA();

    newArray.linearSearch(3);

    newArray.binarySearch(value);

}
}

person user3200411    schedule 29.01.2014    source источник


Ответы (1)


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

Вместо этого попробуйте установить размер массива определенной длины. Или используйте векторы

person IronDome    schedule 30.01.2014