java - 继续做事直到输入空行

标签 java string while-loop sentinel

由于某种原因我无法让它工作。我有一个读取交易的应用程序,当输入空行时,它需要打印出一些内容。

    int transationCount = 0;
    while(sc.hasNext())
    {
        String trans = sc.next();


            String mode = trans.substring(0, 1);
            Double amount = Double.valueOf(trans.substring(1));

            if(mode.equals("C"))
            {
                c.charge(amount);
                ps.println(c.getBalance());
                transationCount = transationCount + 1;
            }
            else if(mode.equals("P"))
            {
                c.pay(amount);
                ps.println(c.getBalance());
                transationCount = transationCount + 1;
            }
    }
    ps.println(c.getBalance());
    ps.println(transationCount);

我尝试过

while(sc.hasNext() && !(sc.next().equals("")))

不起作用。我还尝试在 while 循环内添加

else if (!(trans.equals("")) {break;}

最佳答案

默认情况下,扫描仪将忽略空行,因为它不是有效的 token 。

您可以手动检查该行是否为空:

public static void main(String[] args) throws Exception {
    Scanner sc = new Scanner(System.in);

    while(true) {
        String line = sc.nextLine();
        if (line.isEmpty()) {
            System.out.println("Empty line entered");
        } else {
            System.out.println("received line: " + line);
            String[] tokens = line.split("\\s+");
            System.out.println("tokens: " + Arrays.toString(tokens));
        }
    }
}

关于java - 继续做事直到输入空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592143/

相关文章:

java - CharAt 遇到麻烦

java - 如何比较列表中的对象并删除重复项

java - 从 JSON 反序列化 java 枚举

java - 使用 java Mail API 提取邮件正文中的内嵌图像

ruby - 如何将字符串拆分为数组,并保持换行符?

java - 在java中旋转字符串中的单词

c - fgets 被跳过/不停止输入

c# - 数据读取器中的 while 和 IF

java - 我的程序可以运行,但在应该打印时却无法打印

java - 配置 Intellij 的 "New Project"默认值以使用 Spring MVC 版本 5