这是我的代码。它看起来如此重复。有没有办法让它看起来更干净?谢谢。我的代码应该做这样的事情;
输入文字:
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;
}
}
答案 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]);
}
}
如果您稍后添加更多缩写,这会更容易阅读/更简洁。