字符串与字符串数组元素之间的比较

Comparison between a string and an element of an array of strings

我的部分代码:

  int t,w;
  String day;
  String[] week=new String[]{"mon","tues","wed","thurs","fri","sat","sun"};
  .
  .
  .
  day=sc.nextLine();
  .
  .
   for(i=0;i<7;i++)
   {
           if(day.equals(week[i]))
           {

                break;
           }
    }

'.equals()' 方法每次都是 returning 'false' 即使字符串包含 same.The 输出不会随着 [=20 的初始化而改变=].g. 'String[] week={"mon","tues",......}' 给出相同的 output.Does 此方法 return false 当内存位置不同时?请说明。

当您使用 scanner.nextLine() 时,您阅读的内容比输入的字符串多。您也在阅读 EOL。尝试调试它并查看哪个字符串实际包含在 "day" 变量中。

下面的 Ankush 对我来说很好用,确保你对这段代码使用相同的大小写。如果您想匹配任何大小写,请使用 equalsIgnoreCase 而不是 equals

package com.java;

import java.util.Scanner;

public class Test {

    static void check() {
        String day;
        String[] week = new String[] { "mon", "tues", "wed", "thurs", "fri", "sat", "sun" };

        Scanner sc = new Scanner(System.in);

        day = sc.nextLine();

        for (int i = 0; i < 7; i++) {
            if (day.equals(week[i])) {
                System.out.println("break");
                break;
            }
        }

        sc.close();
    }

    public static void main(String args[]) {
        Test.check();
    }
}

您可能只想从扫描仪读取一个单词,但之后您需要清除您在输入末尾按“Enter”键入的换行符:

int t,w;
String day;
String[] week = new String[] {"mon","tues","wed","thurs","fri","sat","sun"};

 . . . 

day = sc.next();
 . . 
for (i = 0; i < week.length; i++) {
    if(day.equalsIgnoreCase(week[i])) {
        break;
    }
}
sc.nextLine(); // here you get rid of remaining new line character
sc.close();