【问题标题】:Returning the first index of a given array返回给定数组的第一个索引
【发布时间】:2014-02-18 13:04:12
【问题描述】:

所以我有一个名为 indexOf 的方法,通过在 main 中指定一个字符串,我可以让程序打印出该字符串在数组中的索引。但是,我将如何简单地拥有一个可以打印出数组的第一个索引的方法,而我根本不需要指定一个字符串呢?如果索引不存在,我希望它返回 -1。

public static void main(String[] args)
{

    String[] v = new String[1];
    v[0] = "test";

    String s = "t";

    indexOf(v, s);
}

public static int indexOf(String[] v, String s)
{       
    int i = v[0].indexOf(s);
    System.out.println
        ("Index of the first string in the first array: " + i);

    return -1;                                      
    }
}

【问题讨论】:

  • 不清楚您要做什么。数组的第一个索引将始终为 0(如果数组没有元素,则为 undefined)。
  • 现在,我将打印出 0,因为 String s = "t";是第一个字符串,它的索引为 0。我想要的是让程序实际打印出“t”并基本上识别第一个索引并让我知道它是什么。
  • 你永远不会遍历输入数组。您也永远不会检查输入数组的边界。你对函数的返回值什么都不做。
  • 目前还不清楚你在问什么。您只想打印数组中的第一个元素吗?同样,该元素将始终位于索引 0 处,或者对于空数组未定义。
  • @David 我假设他想在字符串数组上使用 String.indexOf(),并返回第一次出现。不清楚的是他计划如何知道索引属于数组的哪个元素,而不返回int 的数组或一些自定义结果类型。

标签: java arrays indexof


【解决方案1】:

您的问题有两种解读方式。如果您希望能够只返回数组的第一个索引,请执行以下操作:

if(v.length > 0)//check length
    return 0;//return first position
return -1;//return empty string meaning there wasnt a first position.

但是,您可能希望在数组v 中返回字符串s 的第一个大小写。那么在这种情况下,请执行以下操作:

//assuming v and s are not null or do not contain null values
for(int i = 0; i < v.length; i++){//loop through the array v
    if(v[i].equals(s){//does the current value of v equal to the String s?
        return i;//found string!
    }
}
return -1;//didnt find the string

您对java 似乎很陌生。我强烈建议阅读以下两个来源:

Java: Array with loop

How do I compare strings in Java?

【讨论】:

  • 我实际上有点困惑,但这个答案帮助我理解了它。我要的是你给出的第一个答案。本质上,只要字符串存在,索引将始终为 0,否则我希望返回 -1。
【解决方案2】:

数组的第一个索引始终为 0。因此您只需 return v.length &gt; 0 ? 0 : -1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2014-02-09
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2013-02-10
    • 2018-09-23
    相关资源
    最近更新 更多