为什么.indexOf()方法未检测到字符串“ IDK”,并且未将其输出?

时间:2018-10-24 22:59:52

标签: java

import java.util.Scanner;

public class TextMsgDecoder {
   public static void main(String[] args) {

      String message;
      Scanner keyboard = new Scanner(System.in);

      System.out.println("Enter text:");
      message = keyboard.nextLine();

      System.out.println("You entered: " + message);


     if (message.indexOf("IDK") > 0) {
        System.out.println("IDK: I don't know");
      }
      if (message.indexOf("BFF") > 0) {
        System.out.println("BFF: best friend forever");
      }
     if (message.indexOf("JK") > 0) {
        System.out.println("JK: just kidding");
      }
     if (message.indexOf("TMI") > 0) {
        System.out.println("TMI: too much information");
      }
     if (message.indexOf("TTYL") > 0) {
        System.out.println("TTYL: talk to you later");
      }
   }

}

2 个答案:

答案 0 :(得分:6)

if (message.indexOf("IDK") > 0) {
  System.out.println("IDK: I don't know");
}

这只会检测到不是以IDK开头的字符串中的IDK,例如(自_IDK起将检测到"_IDK".indexOf("IDK") == 1,但自IDK_起将检测不到"IDK_".indexOf("IDK") == 0

如果要在包括字符串开头的任何位置检测到IDK,请使用以下任一方法:

if (message.indexOf("IDK") >= 0) {

或更习惯上是:

if (message.contains("IDK")) {

答案 1 :(得分:0)

您正在比较输入字符串,其中您在IDK的INDEXVALUE中键入“ IDK”。它把你的字符串变成一个整数。所以没有匹配项

尝试以下方法:

 if (Objects.equals(message, "IDK")) {
        System.out.println("IDK: I don't know");
      }

您正在做的事情是获取“ IDK”的索引,该索引可能为零,但不会大于0,因此您将永远不会触发