【问题标题】:How do I get the index of an array which I don't know?如何获取我不知道的数组的索引?
【发布时间】:2013-04-25 15:58:01
【问题描述】:

任务

方法:

public int indexOfTarget (int[] values, int target)

说明:

必修练习 8) 完成 indexOfTarget 方法,该方法传递两个参数:ints(values) 数组和 int(target)。该方法返回指定整数目标第一次出现在数组中的索引位置。如果 target 出现在数组中,则返回第一次出现的索引。

例如,如果输入数组是 {3, 7, 2, 4},目标是 7

方法返回1

如果该数组中没有出现这样的整数,则返回-1。

一个例子: indexOfTarget({3, 7, 2, 4}, 7)` 应该返回 1。

到目前为止我已经写过:

public int indexOfTarget (int[] values, int target) {
int targetMatch=-1;
for(int i=0;i<values.length;i++){
if(values[i]==target){
targetMatch=values[i];
}
}
return targetMatch;
}

CodeWrite 错误的结果


(来源:gyazo.com

【问题讨论】:

  • 尝试先考虑或调试。
  • @Alya'a Gamal 对我的回答的评论值得一看,娜塔莉

标签: java arrays loops indexing


【解决方案1】:

你应该改用targetMatch = i。您需要索引值,而不是该索引处的数组值。

【讨论】:

  • 这使得所有的试验工作除了:输入:{1、4、20、0、4、5、4},目标:4预期:1实际:6结果:失败跨度>
  • @NatalieCorfe-Tan 我在回答中解决了这个问题
  • 所以一旦你成功进入 if 块,剩下的就是离开 for 循环。如果不退出 for 循环,则有可能再次进入 if 块并覆盖索引值,即。尝试搜索如何退出 for 循环 :)
  • 或者不要搜索,而是查看@durron597 的答案。他给了你你正在寻找的答案。
  • 不错。很高兴我们能提供帮助。这一切都有意义吗?
【解决方案2】:

你想要targetMatch = i; 而不是targetMatch=values[i];

您应该保存索引,而不是值。

我还会在if 语句中添加break;,在您设置targetMatch 的值之后立即

【讨论】:

    【解决方案3】:

    当数组包含有效的 int 值时,此 java 代码应该适用于所有场景。 * 不是有效的 int 值。

    public class Program
    {
     public static void main(String[] args)
        {
        int[] values= {3, 7, 2, 4};
        int target = 7;
        int position = indexOfTarget(values,target);
        if(position>-1)
        System.out.println("Pass");
        else
        System.out.println("Fail");
        }
    
    public static int indexOfTarget (int[] values, int target) {
    int targetMatch=-1;
    for(int i=0;i<values.length;i++){
    if(values[i]==target){
    targetMatch=i;
    return i;
    }
    }
        return targetMatch;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 2021-11-05
      • 2017-03-26
      • 2020-09-09
      相关资源
      最近更新 更多