Can';在Java中不能对数组进行二进制搜索

Can';在Java中不能对数组进行二进制搜索,java,Java,目标 正在尝试对数字数组的值进行二进制搜索。然后返回索引并将其更改为0 到目前为止的代码: import java.util.*; public class Theater { static int [][] seats = { {10,10,10,10}, {20,20,20,20}, {30,30,30,30}, {40,40,40,40} }; public static void main(St

目标

正在尝试对数字数组的值进行二进制搜索。然后返回索引并将其更改为0

到目前为止的代码:

import java.util.*;

public class Theater {

    static int [][] seats = {
        {10,10,10,10},
        {20,20,20,20},
        {30,30,30,30},
        {40,40,40,40}
        };

public static void main(String [] args)
{

    //These two for loops print the whole array.
for ( int i=0; i<4;i++)
{
    for (int j=0; j<4; j++)
    {
        System.out.print(seats[i][j] + " ");
    }
    System.out.println("");
}


   // entering the value to be searched
    Scanner ticketReq = new Scanner(System.in);
    System.out.println("Enter the ticket price you want: ");
    int ticketVal = ticketReq.nextInt();

   int indexOfTicket = Arrays.binarySearch(seats, ticketVal);

   if (indexOfTicket > 0) {
       System.out.println("The index of element 12 is : " + indexOfTicket + ". It is purchased!");
   }
   else {
       System.out.println("Tickets with price " + ticketVal + " are no longer available.");
   }


}

}// Ends the static void block
Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Comparable
    at java.util.Arrays.binarySearch0(Unknown Source)
    at java.util.Arrays.binarySearch(Unknown Source)
    at Theater.main(Theater.java:31)

感谢您的帮助。是因为我有一个数组吗?有没有办法对数组数组进行二进制搜索?我真的在尝试制作一个剧院应用程序,它有4个座位(10、20、30、40),用户输入一个货币值,程序根据该值选择任意数量的座位。

在Java中,二维数组实际上是一维数组。因此,您的搜索会尝试在包含整数数组类型元素的数组中查找整数,这会导致类型错误,因为整数不是整数数组


也有点不清楚你期望会发生什么。二维数组中一个整数的位置如何用单个索引表示?

在java数组中。BinarySrach(arr,element)适用于一维数组。因此,您需要通过将二维数组转换为一维数组来处理您的情况,如下所示

注意:它可能不符合您的要求,但您可以据此进行思考。

Scanner ticketReq = new Scanner(System.in);
        System.out.println("Enter the ticket price you want: ");
        int ticketVal = ticketReq.nextInt();
        int indexOfTicket =-1;
        for(int i=0;i<seats.length;i++){
            indexOfTicket = Arrays.binarySearch(seats[i], ticketVal);
        }

       if (indexOfTicket > 0) {
           System.out.println("The index of element 12 is : " + indexOfTicket + ". It is purchased!");
       }
       else {
           System.out.println("Tickets with price " + ticketVal + " are no longer available.");
       }
Scanner ticketReq=新扫描仪(System.in);
System.out.println(“输入您想要的票价:”);
int ticketVal=ticketReq.nextInt();
int indexOfTicket=-1;
对于(int i=0;i 0){
System.out.println(“元素12的索引为:“+indexOfTicket+”。已购买!”);
}
否则{
System.out.println(“价格为“+ticketVal+”的票不再可用。”);
}

提供完整的错误复制您的输出并在您的问题上跳过它裁剪的图像没有帮助您。它已经回答了。不清楚“数组上的二进制搜索”是什么样子。是否希望它的工作方式与一维数组相同,在一维数组中,所有行中的所有数字都串在一起?如果你这样把它们串在一起,我们能保证数字是有序的吗(二进制搜索的要求)?如果是这样的话,最好的解决方案是自己将数组展平为一维数组,并对其进行二进制搜索。你可以在谷歌上搜索“java扁平化”来获得如何实现这一点的想法。
array.binarySearch
只接受一维数组。将席位转换为一维数组