Java 问题-不兼容类型:可能从double转换为int
在下面的代码中,以下几行不断触发问题标题中提到的错误。我一直在尝试各种方法,但都无济于事。一种方法是,我尝试了各种配置,将mid和currentNum设置为double/int等。请使用修复程序进行响应,这样就不会再次发生此错误。谢谢 导致错误的代码行:Java 问题-不兼容类型:可能从double转换为int,java,types,int,double,Java,Types,Int,Double,在下面的代码中,以下几行不断触发问题标题中提到的错误。我一直在尝试各种方法,但都无济于事。一种方法是,我尝试了各种配置,将mid和currentNum设置为double/int等。请使用修复程序进行响应,这样就不会再次发生此错误。谢谢 导致错误的代码行: int arrayWidth = twoDArr[0].length int mid = (low + high) / 2; double currentNum = twoDArr[mid/arrayWidt
int arrayWidth = twoDArr[0].length
int mid = (low + high) / 2;
double currentNum = twoDArr[mid/arrayWidth][mid%arrayWidth];
这些代码行所属的方法:
private static void findValue(){
double searchValue; //number to search
double arraySize = twoDimArray2.length * twoDimArray2[0].length - 1;
String input = "";
char again;
Scanner keyboard = new Scanner(System.in);
do {
try {
System.out.println("Enter a search value:");
searchValue = keyboard.nextDouble();
System.out.println(binarySearch(twoDimArray2, 0, arraySize, searchValue));
}catch(NumberFormatException e) {
JOptionPane.showMessageDialog(null, "This program searches for double values only. Please try again.");
input = "y";
}}while(input.charAt(0) == 'y' || input.charAt(0) == 'Y');
}
//method for recursive searching goes here.
public static boolean binarySearch(double[][] twoDArr, double low, double high, double valToSearch) {
if(low <= high)
{
int arrayWidth = twoDArr[0].length;
int mid = (low + high) / 2;
double currentNum = twoDArr[mid/arrayWidth][mid%arrayWidth];
if(currentNum == valToSearch) {
return true;
} else if(currentNum < valToSearch) {
return binarySearch(twoDArr, (mid + 1), high, valToSearch);
} else if (currentNum > valToSearch) {
return binarySearch(twoDArr, low, (mid-1), valToSearch);
} else {
return false;
}
}
private static void findValue(){
double searchValue;//要搜索的数字
double arraySize=twoDimArray2.length*twoDimArray2[0]。长度-1;
字符串输入=”;
再次烧焦;
扫描仪键盘=新扫描仪(System.in);
做{
试一试{
System.out.println(“输入搜索值:”);
searchValue=keyboard.nextDouble();
System.out.println(二进制搜索(twoDimArray2,0,arraySize,searchValue));
}捕获(数字格式){
showMessageDialog(null,“此程序仅搜索双值。请重试”);
输入=“y”;
}}而(input.charAt(0)='y'| | input.charAt(0)='y');
}
//这里是递归搜索的方法。
公共静态布尔二进制搜索(双[][]twoDArr、双低、双高、双valToSearch){
if(低电压搜索){
返回二进制搜索(twoDArr,low,(mid-1),valToSearch);
}否则{
返回false;
}
}
嘿!你明白错误告诉你的是什么以及它发生的原因吗?是的,我明白-所以我实际上只是设法解决了我这边的问题,但现在必须解决那里的返回语句。非常感谢您如此快速的响应:-)错误似乎不言自明,数组的索引必须是int
,并且您应该在binarySearch()方法中接受int
。嘿!你明白错误告诉你的是什么以及它发生的原因吗?是的,我明白-所以我实际上只是设法解决了我这边的问题,但现在必须解决那里的返回语句。非常感谢您如此快速的响应:-)错误似乎不言自明,数组的索引必须是int
,并且您应该在binarySearch()方法中接受int
。