java indexOf忽略第一次出现

时间:2017-02-11 21:10:48

标签: java if-statement indexof

这是我的代码。它看起来如此重复。有没有办法让它看起来更干净?谢谢。我的代码应该做这样的事情;
输入文字: IDK,如果我去。这是我BFF的生日  您输入了:IDK,如果我要去的话。这是我BFF的生日 BFF:永远最好的朋友 IDK:我不知道

import java.util.Scanner;

public class TextMsgDecoder {
   public static void main(String[] args) {
      /* Type your code here. */
      String a = "BFF";
      String b = "IDK";      
      String c = "JK";
      String d = "TMI";
      String e = "TTYL";
      Scanner scr = new Scanner(System.in);
      System.out.println("Enter text:");
      String f = scr.nextLine();
      System.out.println("You entered: "+ f);

      if(f.indexOf(a)>=0)
      System.out.println("BFF: best friend forever");
      if(f.indexOf(b)>=0)
      System.out.println("IDK: I don't know");
      if(f.indexOf(c)>=0)
      System.out.println("JK: just kidding");
      if(f.indexOf(d)>=0)
      System.out.println("TMI: too much information");
      if(f.indexOf(e)>=0)
      System.out.println("TTYL: talk to you later");



      return;
   }
}

1 个答案:

答案 0 :(得分:0)

只是重复评论中所说的内容(因为评论可能会被清理),

if(f.indexOf(e)>0)

实际应该是

if(f.indexOf(e)>=0)

或者,更好的是,只需使用string.contains

第三种选择是创建哈希表。我没有坐在IDE的前面而且我在手机上写这个,但这里有一个粗略的想法(使用更接近C#语法而不是"直接" Java):

// A C# Dictionary is a hash table
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("BFF", "Best Friend Forever");
// Add the rest of the abbreviations

// Loop over every key (abbreviation) in the hash table
foreach (string abbreviation in dict.Keys) {
    // If the string contains the abbreviation
    if (f.contains(abbreviation)) {

         Console.WriteLine(abbreviation + ": " + dict[key]);
    }
}

如果您稍后添加更多缩写,这会更容易阅读/更简洁。