gpt4 book ai didi

java - 为什么我的 getIndex 方法不起作用?

转载 作者:行者123 更新时间:2023-11-29 03:17:19 24 4
gpt4 key购买 nike

我编写了一个名为 getIndex 的方法,当我运行测试器时它不会返回数字。

public int getIndex(String s){
int index = -1;
for(int i = 0; (i < names.length && index == 1); i++)
{
if(names[i].equals(s)) {
index = i;
}
}
return index;
}

如果不清楚,我试图让方法返回给定字符串在数组中的哪个位置。

编辑——[这是我在 ideone 上的代码] ( http://ideone.com/CM9xID )

最佳答案

您以错误的方式迭代,如果比较索引 == 1,则循环永远不会开始,因为索引是用 -1 声明的。如果你用 1 声明你的索引,循环会开始,但如果 names[1] 不等于 s,循环就会无限运行,所以只要删除它就可以了。

public int getIndex(String s){
for(int i = 0; (i < names.length; i++)
{
if(names[i].equals(s)) { //use equalsIgnoreCase if comparing should be case insensitive
return i; //found
}
}
return -1; //not found
}

执行循环的另一个版本是(如果您只想要索引,可以直接使用 indexOf(),如最后一个示例所示):

List<String> names2 = new ArrayList<String>(Arrays.asList(names));
for(String name : names2){
if(name.equals(s))
return names2.indexOf(name);
}

这是 loop 的增强版.

也可以快捷方式直接获取索引:

 List<String> names2 = new ArrayList<String>(Arrays.asList(names));
return names2.indexOf(s);

Ideone Fiddle

请注意,您始终只会获得第一次出现的索引。如果 s 在数组中出现不止一次,您必须增强它以存储找到的索引并返回所有索引!

public List<Integer> getIndexes(String s){
List<Integer> found = new ArrayList<Integer>();
for(int i = 0; (i < names.length; i++)
{
if(names[i].equals(s)) { //use equalsIgnoreCase if comparing should be case insensitive
found.add(i);
}
}
return found;
}

关于java - 为什么我的 getIndex 方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25758085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com