Java 是否可以搜索数组并返回值的索引

Java 是否可以搜索数组并返回值的索引,java,arrays,search,Java,Arrays,Search,我正在编写一个简单的Java程序,它基本上存储了一组以前出现在图表中的艺术家;这是到目前为止我的程序代码 package searching; import java.util.*; public class Searching { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String artists[]

我正在编写一个简单的Java程序,它基本上存储了一组以前出现在图表中的艺术家;这是到目前为止我的程序代码

package searching;

import java.util.*;

public class Searching {
    public static void main(String[] args) {          
        Scanner scanner = new Scanner(System.in);

        String artists[] = {"Rihanna", "Cheryl Cole", "Alexis Jordan", "Katy Perry", "Bruno Mars",
                        "Cee Lo Green", "Mike Posner", "Nelly", "Duck Sauce", "The Saturdays"};

        System.out.println("Please enter an artist...");
        String artist = scanner.nextLine();
    }
}

我只是想知道,用户是否可以键入其中一位艺术家的名字,获取搜索数组的代码并返回该值的索引?如果是这样的话,我会怎么做,因为我不知道从哪里开始。。。提前谢谢

您需要在for循环中遍历美术师数组,然后如果值等于美术师值,则返回索引


您需要在for循环中遍历美术师数组,然后如果该值等于美术师值,则返回索引

我只是想知道,用户是否可以键入其中一位艺术家的名字,获取搜索数组的代码并返回该值的索引

是的,这是可能的

由于您不知道从何处开始,我想说您可以使用for循环开始遍历数组,并验证artist变量是否等于数组的当前元素。如果它们相等,则可以返回数组元素的当前索引。如果未找到任何内容,则返回一个默认值,如-1,您可以处理该值,并返回一条消息,如Artist not found

我只是想知道,用户是否可以键入其中一位艺术家的名字,获取搜索数组的代码并返回该值的索引

是的,这是可能的


由于您不知道从何处开始,我想说您可以使用for循环开始遍历数组,并验证artist变量是否等于数组的当前元素。如果它们相等,则可以返回数组元素的当前索引。如果未找到任何内容,则返回一个默认值,如-1,您可以处理该值,并返回一条消息,如Artister not found。

对于未排序的数组,一个选项是将艺术家放入列表中并使用


如果对艺术家进行了排序,您可以使用。

和未排序的数组,一个选项是将艺术家放入列表并使用


如果艺术家被分类,你可以使用。

你可以这样做:

int index = -1;

for (int i = 0; i < artists.length; i++) {
    if (artist.equals(artists[i]))
        index = i;
}

if (index == -1)
    System.out.println("Artist not found");
else
    System.out.println("Index of artist: " + index);
}
这并不像tieTYT的解决方案那样雄辩,但确实有效。索引设置为-1。for循环将每个艺术家与数组中的每个值进行比较。如果找到匹配项,则将索引设置为元素的索引

在for循环之后,如果索引仍然是-1,则通知用户未找到匹配项,否则将输出相应的艺术家和索引


for循环的用户是滚动数组内容并将元素与给定值进行比较的最常见方式。通过调用艺术家[i],可以对照输入字符串检查数组的每个元素。

您可以这样做:

int index = -1;

for (int i = 0; i < artists.length; i++) {
    if (artist.equals(artists[i]))
        index = i;
}

if (index == -1)
    System.out.println("Artist not found");
else
    System.out.println("Index of artist: " + index);
}
这并不像tieTYT的解决方案那样雄辩,但确实有效。索引设置为-1。for循环将每个艺术家与数组中的每个值进行比较。如果找到匹配项,则将索引设置为元素的索引

在for循环之后,如果索引仍然是-1,则通知用户未找到匹配项,否则将输出相应的艺术家和索引


for循环的用户是滚动数组内容并将元素与给定值进行比较的最常见方式。通过调用artists[i],可以对照输入字符串检查数组的每个元素。

在为OP解决家庭作业之前,请参阅,以了解将来类似的问题。@Luigimendoza引用了您的链接:不要否决善意回答家庭作业问题的其他人,即使他们违反了这些准则。@LuiggiMendoza他没有明确说明这是家庭作业。即使他这样做了,我也会抽出时间自己写这篇文章来帮助那些需要帮助的人。如果你不喜欢我做这件事的方式,我很抱歉,但你不必表现得像公司的老板。@tieTYT,谢谢你,伙计,真的很感谢你的帮助。。。至于说人们都是阿瑟,那不是家庭作业,是我在休息了几年后试图回到爪哇。@LuiggiMendoza:哦,看在皮特的份上,放弃吧。许多人通过SO的精彩论坛学习。如果没有这一惊人的资源,我将无法做我现在能做的事情的一半。我们都以不同的方式学习。连续几个小时盯着屏幕看我不感兴趣。迅速找到答案,通读并理解这个答案,发展我对这门语言特定部分的知识,对我来说更具吸引力——因此,我在发布一个简单问题的简单答案时没有问题。在解决作业作业的家庭作业之前,请参考类似问题。@LuiggiMendoza引用你的链接:不要投反对票其他人真诚地回答家庭作业问题,即使他们违反了这些准则。@LuiggiMendoza他没有明确说明这是家庭作业。即使他这么做了,我也会接受

我每天抽出时间自己写这篇文章是为了帮助需要帮助的人。如果你不喜欢我做这件事的方式,我很抱歉,但你不必表现得像公司的老板。@tieTYT,谢谢你,伙计,真的很感谢你的帮助。。。至于说人们都是阿瑟,那不是家庭作业,是我在休息了几年后试图回到爪哇。@LuiggiMendoza:哦,看在皮特的份上,放弃吧。许多人通过SO的精彩论坛学习。如果没有这一惊人的资源,我将无法做我现在能做的事情的一半。我们都以不同的方式学习。连续几个小时盯着屏幕看我不感兴趣。迅速找到答案,通读并理解这个答案,发展我对这门语言特定部分的知识,对我来说更具吸引力——因此,我在发布一个简单问题的简单答案时没有问题。-1:与@tieTYT相同:在为OP解决家庭作业之前,请参考将来类似的问题。@Luigimendoza:你将在这里如果你打算否决每一次帮助新用户的尝试,那就需要很长时间。我会继续这样做,因为在我刚开始的时候,有很多有帮助的用户帮助了我。如果我是这样的话,那么我会对OP的问题投否决票,甚至投票结束。相反,我提供了一个答案来解释解决问题的方法,而不是给出完整的答案,让另一个僵尸程序员只是复制/粘贴他/她在网上的帖子中看到的任何东西。-1:与@tieTYT相同:在解决作品《家庭作业》之前,请参考未来类似的问题。@Luigimendoza:如果你对帮助新用户的每一次尝试都投反对票,你会在这里呆很长时间。我会继续这样做,因为在我刚开始的时候,有很多有帮助的用户帮助了我。如果我是这样的话,那么我会对OP的问题投否决票,甚至投票结束。相反,我提供了一个答案来解释解决问题的方法,而不是给出完整的答案,让另一个僵尸程序员只是复制/粘贴他/她在网上的帖子中看到的任何东西。我喜欢这个开始,但我建议将其作为一个适当命名的小方法编写,并可能显示签名的外观。然后它就变得更自然了:如果knownartististist{..}else{..}@user2246674对不起,这几乎占了家庭作业的50%或更多。我不同意。它只是提供将问题划分为逻辑上的小部分的指导。根据此答案中的指导,没有此建议也可以完成作业。@user2246674-将问题分解成微小的部分是编程的主要任务和技能之一。@ANDYTOMAS Cramer我同意!这就是为什么新程序员应该被教导和指导如何去做。这是一项习得的技能,一个人可以在CS程序中一路挣扎,但仍然可以编写非常糟糕的代码。我喜欢开始,但我建议将其作为一个适当命名的小方法编写,并可能显示签名的外观。然后它就变得更自然了:如果knownartististist{..}else{..}@user2246674对不起,这几乎占了家庭作业的50%或更多。我不同意。它只是提供将问题划分为逻辑上的小部分的指导。根据此答案中的指导,没有此建议也可以完成作业。@user2246674-将问题分解成微小的部分是编程的主要任务和技能之一。@ANDYTOMAS Cramer我同意!这就是为什么新程序员应该被教导和指导如何去做。这是一项习得的技能,一个人可以在CS程序中一路挣扎,但仍然可以编写绝对糟糕的代码。
 List<String> artistsList = Arrays.asList( artists );
 ...
 int index = artistsList.indexOf( artist );
int index = -1;

for (int i = 0; i < artists.length; i++) {
    if (artist.equals(artists[i]))
        index = i;
}

if (index == -1)
    System.out.println("Artist not found");
else
    System.out.println("Index of artist: " + index);
}