代码之家  ›  专栏  ›  技术社区  ›  Ankush Pandit

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

  •  1
  • Ankush Pandit  · 技术社区  · 7 年前

    我的部分代码:

      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()'方法每次都返回“false”,即使字符串包含的内容相同。输出不会随阵列的初始化而改变。e、 g.“字符串[]周={“周一”,“周二”,“……}”提供相同的输出。当内存位置不同时,此方法是否返回false?请澄清。

    3 回复  |  直到 7 年前
        1
  •  1
  •   user9081948 user9081948    7 年前

    下面的Ankush对我来说很好,请确保您对这段代码使用相同的大小写。如果要匹配任何案例,请使用 等信号情况 而不是 等于

    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();
        }
    }
    
        2
  •  0
  •   Dylan Meeus    7 年前

    当您使用 scanner.nextLine() 您读取的内容超过了输入的字符串。您也在阅读EOL。尝试对此进行调试,并查看“day”变量中实际包含的字符串。

        3
  •  0
  •   Przemysław Moskal    7 年前

    您可能只想从扫描器中读取一个单词,但在这之后,您需要清除输入末尾键入的新行字符,方法是按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();