Java 文本消息缩写解码器:NoTouchElementException
我需要帮助开发我的短信缩写解码器,我正试图把它们放在一起。程序的第一部分应该这样做:“如果用户的输入字符串与已知的文本消息缩写匹配,则输出未修改的形式,否则输出:未知。支持两个缩写:LOL——大声大笑,IDK——我不知道。”然后:“展开并解码这些缩写。BFF——永远的好朋友,依我和TMI的拙见——信息太多了 这是我目前掌握的代码:Java 文本消息缩写解码器:NoTouchElementException,java,java.util.scanner,nosuchelementexception,Java,Java.util.scanner,Nosuchelementexception,我需要帮助开发我的短信缩写解码器,我正试图把它们放在一起。程序的第一部分应该这样做:“如果用户的输入字符串与已知的文本消息缩写匹配,则输出未修改的形式,否则输出:未知。支持两个缩写:LOL——大声大笑,IDK——我不知道。”然后:“展开并解码这些缩写。BFF——永远的好朋友,依我和TMI的拙见——信息太多了 这是我目前掌握的代码: import java.util.Scanner; public class TextMsgAbbreviation { public static voi
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) {
}
}
}
}
这是我得到的输出:
线程“main”java.util.NoSuchElementException中的异常
位于java.util.Scanner.throwFor(Scanner.java:862)
下一步(Scanner.java:1371)
位于TextMsgAbbreviation.main(TextMsgAbbreviation.java:17)
我做错了什么?根据,当没有更多可读取的令牌时,next()
方法抛出一个NoTouchElementException
。因此,建议在调用Scanner
类中的next()
方法之前调用hasNext()
方法,以确保有可读取的令牌。因此,请尝试以下方法:
if(input.hasNext()) {
textMsg = input.next();
}
另一方面,从Java7开始,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");
}
我也是Java新手,但我想你可能有太多的花括号了?你检查过了吗?你的代码对我来说运行得很好,在这种情况下你就出现了错误?在这种情况下,一个
NoTouchElementException
表示没有来自系统的输入。在中-你如何向程序提供输入?也许你关闭了系统。在中-我以前遇到过这种情况,但在你的代码中似乎不是这样