java 短信缩写解码器:无此类元素异常

yvt65v4c  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(162)

我需要帮助开发我的短信缩写解码器我试图放在一起。该程序的第一部分应该这样做:"如果用户的输入字符串与已知的文本消息缩写匹配,则输出未缩写形式,否则输出:未知。支持两个缩写: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)

我哪里做错了?

bvjxkvbb

bvjxkvbb1#

根据Java API文档,next()方法在没有更多令牌可供读取时抛出NoSuchElementException。因此,建议在Scanner类中调用next()方法之前调用hasNext()方法,以确保有令牌可供读取。因此,尝试以下操作:

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");
   }
6psbrbz9

6psbrbz92#

显示的值862 1371 17需要输入到输入框中。以下是问题的工作代码。

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");
   }

}}

相关问题