我的第一个二进制搜索技术是否犯了一个简单的错误?

Did I make a simple mistake with my first binary search technique?

我创建了一个数组来生成 1-100 之间的 10 个随机数,并使用 for 循环对它们进行排序(应该使用 "enhanced for loop")。除了增强我的 for 循环之外,剩下的最后一件事是“输入一个值,使用 二进制搜索技术 搜索数组以确定值是否存在并输出它。你看到什么了吗错了?谢谢!

import java.util.*;

class lab4point2 //lab4.2 part 1 {
    public static void main(String args[]) {
        int[] array = new int[10]; //array of 10 numbers created.
        Random rand = new Random(); //random class created called rand.

        for (int cnt = 0; cnt < array.length; cnt++) { //for loop to generate
            array[cnt] = rand.nextInt(100) + 1;     // the 10 numbers randomly 1-100
        }
        Arrays.sort(array); //sorted
        System.out.println(Arrays.toString(array));// prints the 10 numbers to screen

        System.out.print("Enter a value to see if it is present. ");
        Scanner scanner = new Scanner(System.in);
        int value = scanner.nextint();

        boolean binarySearch(array, 0, 99, value);
        int size = 100;
        int low = 0;
        int high = size - 1;

        while (high >= low) {
            int middle = (low + high) / 2;
            if (data[middle] == value) {
                System.out.print("Value is present ");
                return true;
            }
            if (data[middle] < value) {
                low = middle + 1;
            }
            if (data[middle] > value) {
                high = middle - 1;
            }
       }
       System.out.print("Value is not present. ");
       return false;
   }
}

您的代码中存在一些语法错误。它应该看起来更像以下内容:

class SearchArray {
    private final int[] array = new int[10];
    private final Random random = new Random();

    public SearchArray() {
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(100) + 1;
        }
        Arrays.sort(array);
    }

    public String toString() {
        return Arrays.toString(array);
    }

    public boolean contains(int value) {
        int low = 0;
        int high = array.length - 1;

        while (high >= low) {
            int middle = (low + high) / 2;
            if (array[middle] == value) {
                return true;
            }
            if (array[middle] < value) {
                low = middle + 1;
            }
            if (array[middle] > value) {
                high = middle - 1;
            }
        }
        return false;
    }          

class lab4point2 {
    public static void main(String args[]) {
        SearchArray array = new SearchArray();
        System.out.println(array.toString());

        System.out.print("Enter a value to see if it is present. ");
        Scanner scanner = new Scanner(System.in);
        int value = scanner.nextint();
        if (array.contains(value)) {
            System.out.print("Value is present. ");
        } else {
            System.out.print("Value is not present. ");
        }
    }
}