java - while + 扫描仪与 System.in + hasNext

标签 java input java.util.scanner

我应该编写一个程序来处理用户输入并将其翻译成 Pig Latin 并打印出来。我翻译成 pig 拉丁语的指令是:

Pig Latin 是英语,其首辅音移至每个单词的末尾,后跟“ay”。以元音开头的单词只需附加一个“ay”。例如,短语 最深的蘑菇蓝 在 Pig Latin 中将具有以下外观: e-Thay epest-day ade-shay of-ay ushroom-may ue-blay

所以我写了这个程序:

import java.util.Scanner;

public class Nothing
{
    public static void main(String args[])
    {
        System.out.println("Enter sentence that has to be translated into Pig Latin ");
        Scanner console = new Scanner(System.in);
        String token = console.next();
        String translated = processToken(token) + " ";

    while(console.hasNext())
    {
        token = console.next();
        translated = translated + processToken(token) + " ";
    }

    System.out.println(translated);
}

public static String processToken(String token)
{
    String processed = "";
    if(!(fC(token) == 'a' || fC(token) == 'e' || fC(token) == 'i' || fC(token) == 'o' || fC(token) == 'u' || fC(token) == 'y'))
    {
        if(fC(token) != 't')
        {
            processed = token.substring(1) + "-" + token.charAt(0) + "ay";
        }

        else
        {
            processed = token.substring(2) + "-" + token.substring(0, 2) + "ay";
        }
    }

    else
    {
        processed = token + "-ay";
    }

    return processed;
}

    public static char fC(String token) //returns first character in lowercase
    {
        return Character.toLowerCase(token.charAt(0));
    }
}

它不起作用:(我输入了输入,它没有做任何事情:/我在扫描仪中用一个简单的字符串而不是System.in对其进行了测试,它起作用了。请帮助我!

最佳答案

我认为正在等待额外的输入。已发送 EOF 信号,因为您的代码中没有其他终止逻辑。您可以在调试中运行它(在循环中使用断点来验证,

关于java - while + 扫描仪与 System.in + hasNext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687441/

相关文章:

Java:用户输入 - 扫描仪 - 第二次输入后程序挂起

java - Modbus TCP 从线程 - 设置和获取寄存器值

java - 在 Java 中一次从控制台读取一个单词

java - 将数据从一个类存储到另一个类

java - 在 java Scanner.next() 中

c - 使用 sscanf 读取字符串

java - 如何使用java在工作簿中创建Excel工作表?

java - 在 Java 中使用 selenium 等待元素加载时出现问题

Java:如何制定有效的机会方法

jquery - 在页面加载后,您如何不关注表单中的任何输入文本字段?