检查另一个数组(JAVA)中是否存在数组元素

时间:2016-01-16 18:04:41

标签: java arrays string loops oop

如何检查String是否在String数组中? (JAVA)

用户应该能够输入颜色,然后程序应检查输入的颜色是否在数组内。

例如:

USER INPUTS:黑色

  

程序检查黑色是否在颜色数组中

计划输出:黑色

否则

PRORGAM OUTPUTS:抱歉,黑色无法识别。

commands []是一个参数化数组。 如果用户输入“圆圈颜色黑色”,则圆圈存储在数​​组位置[0]中,颜色存储在数组位置[1]中,黑色存储在位置[2]中,依此类推......

private String[] colours = {"black", "blue", "green", "magenta", "red", "white", "yellow"};

 /**
 * Checks if the typed in colour is valid.
 */
public void checkColour(String[] commands)
{
    String varifiedColour = null;

    if(commands[1].equals("colour")){
        for(int i = 0; i < colours.length; i++){
            if(commands[2].contains(colours[i])){
                varifiedColour = colours[i];

                //Prints varifiedColour to check if this method works.
                System.out.println(varifiedColour);
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您为什么使用String#contains?你的程序应该像

一样简单
for (String color : colors) {
  if (color.equals(input)) {
    return true;
  }
}
return false;

此外,如果这不是玩具程序,请注意拼写差异 - 例如,将输入和颜色标准化为小写并且没有周围的空白。

答案 1 :(得分:0)

尝试像这样使用第二个if删除 for(int i = 0; i < colours.length; i++){ for(int j = 0; j < commands.length; j++){ if(commands[j].contains(colours[i])){ varifiedColour = colours[i]; //Prints varifiedColour to check if this method works. System.out.println(varifiedColour); } } } ,如下所示:

.menu-item

答案 2 :(得分:0)

我个人没有发现您的代码有任何问题,但我相信您的 checkColour()方法参数存在问题。该方法由一个参数(不是三个似乎可以想到)组成,命令参数显然需要将一个String数组传递给它。

因此,这意味着无论用户输入的是什么(您都不能显示代码的一部分),都必须进行“分割”。使用 String .split()方法,以便将该输入放入字符串数组中。这样输入将根据需要分解为数组元素。然后该字符串数组作为参数传递给 checkColour()方法,例如:

如果用户输入(可能来自控制台输入)是这样的字符串:&#34;圈颜色黑&#34;然后它必须放入一个字符串数组,如下所示:

String[] userInput.split(" ");

现在将这个String数组传递给 checkColour()方法,如下所示:

checkColour(userInput);

checkColour()方法中,您还需要更改if-then条件语句:

if(commands[2].contains(colours[i])){ ....

对此:

if(commands[2].toLowerCase().equals(colours[i].toLowerCase())){ ....

String .contains()方法在这里真的不是一个好选择,因为如果用户提供的颜色让我们说&#34;灰& #34;然后是颜色&#34;灰色&#34;和&#34; lightgray&#34;对于 if-then 语句将证明是正确的,因为字符串&#34; grey&#34;确实包含在字符串&#34; lightgray&#34;中。您希望比此更精确,因此请使用 String .equals()方法。

您还会注意到我已将 String .toLowercase()方法添加到 if-then 。这样可以确保无论用户提供颜色的字母是什么,都会与 colors [] 字符串数组中的内容进行正确比较,即使中存在字母大小写差异colors [] 数组本身。