簡體   English   中英

字符串與字符串數組的元素之間的比較

[英]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()”方法也會每次返回“ false”。輸出不會隨着數組的初始化而改變。例如,“ String [] week = {“ mon”,“ tues” ,......}'給出相同的輸出。當內存位置不同時,此方法返回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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM