2016-11-12 93 views
0

搜索我需要编写一个方法,当通过了双阵列ARR,和一个int值目标,返回其整数部分等于目标的项目的第一次出现的索引。初学者通过阵列

例如,如果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; 
} 

和那里有一个编译错误,我只是不明白双和int之间的转换?由于

+0

Double是十进制数(简化,反正)。整数是一个整数,舍去(截断)。 比较是5.2是一样的5不会返回true。你可以通过这样做将double转换为int:'(int)arr [i]' –

+1

虽然这段代码非常简单,但下一次当您寻找编译器错误的帮助时,您应该提供(a)错误消息和(b)它发生的路线。 –

回答

2

尝试检查时看到您铸造arr[i]int如果它等于你的目标:

for (int i= 0; i < arr.length; i++){ 
      if((int)arr[i] == target) 
       return i; 
     } 

这样做会下降的arry[i]小数部分,使之成为整数,从而可比你目标。

+0

不知道这是那么简单,谢谢你们! –

+0

没问题,很高兴我/我们可以提供帮助。 :) – Gulllie

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; 
    } 
} 
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; 
} 
0

以此作为你的for循环

for (int i= 0; i < arr.length(); i++){ 
     if((int)arr[i] == target) 
      return i; 
    } 

给予好评,如果有帮助!

0

下面的代码应该可以工作。它将与目标进行比较的双精度值转换为整型。因此,示例double数组{1,2,3,3,5,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 
} 
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; 
}