Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查一个数组的元素是否存在于另一个数组中(JAVA)_Java_Arrays_String_Loops_Oop - Fatal编程技术网

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

检查一个数组的元素是否存在于另一个数组中(JAVA),java,arrays,string,loops,oop,Java,Arrays,String,Loops,Oop,如何检查字符串是否在字符串数组中?(爪哇) 用户应能够输入颜色,然后程序应检查输入的颜色是否在阵列内 例如: 用户输入:黑色 该程序检查黑色是否在一系列颜色中 程序输出:黑色 其他 项目输出:抱歉,伙伴,黑色不被识别 commands[]是一个参数化数组。 如果用户键入“圆圈颜色黑色”,则圆圈存储在数组位置[0],颜色存储在数组位置[1],黑色存储在位置[2],依此类推 private String[] colours = {"black", "blue", "green", "magenta"

如何检查字符串是否在字符串数组中?(爪哇)

用户应能够输入颜色,然后程序应检查输入的颜色是否在阵列内

例如:

用户输入:黑色

该程序检查黑色是否在一系列颜色中

程序输出:黑色

其他

项目输出:抱歉,伙伴,黑色不被识别

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);
            }
        }
    }
}
private String[]colors={“黑色”、“蓝色”、“绿色”、“洋红”、“红色”、“白色”、“黄色”};
/**
*检查键入的颜色是否有效。
*/
公共void checkcolor(字符串[]命令)
{
字符串VarifiedColor=null;
if(命令[1]。等于(“颜色”)){
对于(int i=0;i
为什么要使用
字符串#contains
?您的程序应该尽可能简单

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

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

尝试使用第二个
for loop
如下删除
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);
        }
      }
  }
String[] userInput.split(" ");
for(int i=0;i
我个人没有发现您的代码有任何错误,但我相信您的checkcolor()方法参数有问题。该方法由一个参数组成(不像想象中的三个),命令参数显然需要向其传递一个字符串数组

因此,这意味着必须使用String.split()方法“拆分”来自用户的任何输入(您不显示代码的该部分),以便将该输入放入字符串数组中。这样,输入将被分解为您想要的数组元素。然后将该字符串数组作为参数传递给checkcolor()方法,例如:

如果用户输入(可能来自控制台输入)是如下所示的字符串:“黑色圆圈”,则必须将其放入如下所示的字符串数组中:

   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);
        }
      }
  }
String[] userInput.split(" ");
现在,此字符串数组被传递到checkcolor()方法,如下所示:

checkColour(userInput);
checkcolor()方法中,您还需要将if-then条件语句从以下内容更改为:

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

if(commands[2].toLowerCase().equals(colours[i].toLowerCase())){ ....
String.contains()方法在这里确实不是一个好的选择,因为如果用户提供颜色,比如说“灰色”,那么颜色“灰色”和“浅灰色”都将被证明符合if then语句,因为字符串“灰色”确实包含在字符串“浅灰色”中。您希望比这更精确,因此请使用String.equals()方法


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

您面临的问题(请不要说“它不起作用”-我们知道/假设,否则您就不会在这里-所以请尝试更具体一些)。因此,我使用blues作为我的开发环境,我得到一个错误,说“java.lang.String不能转换为java.lang.String[]“每当我输入颜色时。我想检查一个字符串数组是否在另一个字符串数组中?我是一个初学者,所以我发现很难在“技术谈话”中解释。请回答你的问题,并把你得到的错误信息放在那里。不,这不是一个游戏/实验程序。哦,好的,那么你的意思是使用java api中的.trim()方法和.toLowerCase()方法?程序必须:“如果输入的颜色与数组中存储的元素具有精确的字符匹配,那么将对象的颜色更改为用户输入的任何颜色。”所以我看不出返回true或false将如何实现这一点?您对如何使用true或false更改对象颜色有什么建议吗?@ReeLink所有要求都应该是您原始问题的一部分。不要只在一些答案下发布它们(你限制了你获得正确答案的机会,因为不是每个愿意帮助你的人都愿意在不同的位置搜索所有要求,而不是你的帖子)。哦,好的,对不起,我对编程和使用此网站是新手:/如果我以后发布问题,我会记住这一点。谢谢你试图帮助我@pshemo我会试试的。谢谢你的建议,我会让你知道我是如何相处的。你这样做很有效!非常感谢你!