【发布时间】:2017-06-29 12:09:47
【问题描述】:
目标
尝试对数字数组的值进行二分搜索。然后返回索引,改成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)的剧院应用程序,用户输入一个货币值,程序会根据该值选择任意数量的座位。
【问题讨论】:
-
提供完整错误
-
复制您的输出并将其粘贴到您的问题上,裁剪后的图像无法帮助您。
-
已经回复here。
-
目前还不清楚“对数组数组进行二进制搜索”会是什么样子。您是否希望它像您有一个一维数组一样工作,您只需将所有行中的所有数字串在一起?如果您确实像这样将它们全部串在一起,我们是否可以保证这些数字是有序的(二进制搜索的要求)?如果是这样,最好的解决方案是自己将数组展平为一维数组并对其进行二进制搜索。你可以在谷歌上搜索“java flatten”来了解如何做到这一点。
-
Arrays.binarySearch只接受一维数组。将席位转换为一维数组stackoverflow.com/a/5466581/6743203
标签: java