我需要编写一个方法,当传递一个双数组 arr 和一个int值 target 时,返回一个项的第一个出现的索引,该项的整数部分等于目标。
例如,如果arr = {1.2,3.6,5.2,9.2,5.6}和target = 5,则目标必须返回2并且如果array为null则返回-1。
到目前为止,我的代码是
public static int yes(double[]arr, int target){
if (arr == null){
return -1;
}
for (int i= 0; i < arr.length(); i++){
if(arr[i] == target)
return i;
}
return 1;
}
并且有一个编译错误,我只是不明白在double和int之间进行转换?感谢
答案 0 :(得分:2)
在检查arr[i]
是否与目标相等时,尝试将int
投射到for (int i= 0; i < arr.length; i++){
if((int)arr[i] == target)
return i;
}
:
arry[i]
这样做会删除300*299
的小数部分,使其成为整数,从而与目标相媲美。
答案 1 :(得分:1)
public class Main{
public static void main (String[] args) {
double[] arr = new double[]{1.2, 3.6, 5.2, 9.2, 5.6};
int target = 31;
System.out.println(yes(arr,target));
}
public static int yes(double[] arr, int target){
if (arr == null){
return -1;
}
for (int i= 0; i < arr.length; i++){
if((arr[i] - target) >= 0.0 && (arr[i] - target) < 1.0)
return i;
}
return -1;
}
}
答案 2 :(得分:0)
你的代码是完美的,你只是错过了投两个
(int) arr[i] == target
public static int yes(double[]arr, int target){
if (arr == null){
return -1;
}
for (int i= 0; i < arr.length(); i++){
if((int) arr[i] == target)
return i;
}
return 1;
}
答案 3 :(得分:0)
将此作为你的for循环
for (int i= 0; i < arr.length(); i++){
if((int)arr[i] == target)
return i;
}
如果有帮助就Upvote!
答案 4 :(得分:0)
以下代码应该有效。它将与目标进行比较的双重转换为int。所以示例双数组:{1.2,3.6,5.2,9.2,5.6}将变为{1,3,5,9,5},当与目标进行比较时,您将得到正确的回报。如果你没有在数组中找到目标,我建议你让函数返回-1。祝你好运,编码愉快!
public static int yes(double[]arr, int target){
if (arr == null){
return -1;
}
for (int i= 0; i < arr.length; i++){
if((int)arr[i] == target) return i;
//use (int) to cast the double to an int. 3.9 and 3.2 would both become an int of 3
}
return 1;
//returns 1 if target is not in arr
}
答案 5 :(得分:0)
for (int i = 0; i < arr.length(); i++) {
if ((int) arr[i] == target)
return i;
}
这没关系,但我认为这可能更好。
for (int i = 0; i < arr.length(); i++) {
if (arr[i] == (double)target)
return i;
}