我需要帮助开发我的短信缩写解码器我试图放在一起。该程序的第一部分应该这样做:"如果用户的输入字符串与已知的文本消息缩写匹配,则输出未缩写形式,否则输出:未知。支持两个缩写: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)
我哪里做错了?
2条答案
按热度按时间bvjxkvbb1#
根据Java API文档,
next()
方法在没有更多令牌可供读取时抛出NoSuchElementException
。因此,建议在Scanner
类中调用next()
方法之前调用hasNext()
方法,以确保有令牌可供读取。因此,尝试以下操作:顺便说一句,从Java 7开始,
switch
语句可以接受String
输入,所以你可以尝试在代码中使用它。在我个人看来,它比使用多个if-else循环更具可读性。6psbrbz92#
显示的值862 1371 17需要输入到输入框中。以下是问题的工作代码。
}}