我需要帮助开发我正在尝试组装的短信缩写解码器。程序的第一部分应该这样做:“如果用户的输入字符串与已知的文本消息缩写匹配,则输出未缩写的形式,否则输出:未知。支持两种缩写:LOL - 大声笑,和 IDK - 我不知道不知道。”然后:“扩展以解码这些缩写。BFF - 永远最好的朋友,恕我直言 - 以我的愚见和 TMI - 太多信息。
这是我到目前为止的代码:
import java.util.Scanner;
public class TextMsgAbbreviation {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String textMsg = "";
{
String BFF = "best friends forever";
String IMHO = "in my humble opinion";
String TMI = "too much information";
String LOL = "laughing out loud";
String IDK = "i don't care";
System.out.println("Input an abbreviation:" + " ");
textMsg = input.next();
if (textMsg.compareTo("LOL") == 0) {
System.out.println(LOL);
} else if (textMsg.compareTo("IDK") == 0) {
System.out.println(IDK);
} else if (textMsg.compareTo("BFF") == 0) {
System.out.println(BFF);
} else if (textMsg.compareTo("IMHO") == 0) {
}
}
}
}
这是我得到的输出:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at TextMsgAbbreviation.main(TextMsgAbbreviation.java:17)
我做错了什么?
根据 Java API 文档,当没有更多令牌可供读取时,
next()
方法会抛出 NoSuchElementException
。因此,建议在调用 hasNext()
类中的 next()
方法之前先调用 Scanner
方法,以确保有令牌可供读取。所以,尝试如下所示:
if(input.hasNext()) {
textMsg = input.next();
}
顺便说一句,从 Java 7 开始,
switch
语句可以接受 String
输入,因此您可以尝试在代码中使用它。在我个人看来,它比使用多个 if-else 循环更具可读性。
一个例子:
switch(textMsg) {
case "LOL" : System.out.println(LOL);
break;
case "IDK" : System.out.println(IDK);
break;
case "BFF" : System.out.println(BFF);
break;
case "IMHO": System.out.println(IMHO);
break;
default : System.out.println("Unknown");
}
import java.util.Scanner;
public class TextMsgDecoder {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String userInput;
System.out.println("Enter text:");
userInput = scnr.nextLine();
System.out.println("You entered: " + userInput);
if(userInput.indexOf("BFF") != -1) {
System.out.println("BFF: best friend forever");
}
if(userInput.indexOf("IDK") != -1) {
System.out.println("IDK: I don't know");
}
if(userInput.indexOf("JK") != -1) {
System.out.println("JK: just kidding");
}
if(userInput.indexOf("TMI") != -1) {
System.out.println("TMI: too much information");
}
if(userInput.indexOf("TTYL") != -1) {
System.out.println("TTYL: talk to you later");
}
} }