【问题标题】:scan character in do while loop java language [closed]在do while循环java语言中扫描字符[关闭]
【发布时间】:2021-04-22 04:25:46
【问题描述】:

使用 do...while() 循环,扫描字符(每行一个)并打印。如果输入是元音或输入的字符数已经达到 5 个,则循环终止符。

这是一个简单的问题,但我不知道为什么会这样:

输入:

  c
  f
  a

输出:

Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:937)
    at java.base/java.util.Scanner.next(Scanner.java:1478)
    at Main.main(Main.java:11)

这是我尝试过的代码:

 int count = 0;
    char ch;

    do {
        ch = input.next().charAt(0);
        System.out.println(ch);
        count++;
    } while((ch != 'a') || (ch != 'e') || (ch != 'i') || (ch != 'o') || (ch != 'u') || (count < 5));

【问题讨论】:

  • do-while-loop 的 or 条件将始终为真。想象角色是“a”。然后你的陈述减少到(真)|| (假)...所以它是真的。

标签: java loops char do-while


【解决方案1】:

你需要解决两件事:

  1. 在每次迭代时增加 count
  2. while-loop 中的条件应该检查​​是继续下一次迭代还是终止,这就是为什么我们需要检查字符是否不是任何元音并且count 仍然小于 5。李>
Scanner input = new Scanner(System.in);
int count = 0;
char ch;
do {
    ch = input.next().charAt(0);
    count++;
    System.out.println(ch + " " + count);
} while((ch != 'a') && (ch != 'e') && (ch != 'i') && (ch != 'o') && (ch != 'u') && (count < 5));

【讨论】:

  • 如果你能解释你为什么做出你所做的决定,那将是最好的。
  • @NomadMaker 好点,我添加了更多说明
猜你喜欢
  • 2014-03-28
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2020-08-26
  • 2023-01-08
  • 2018-04-28
相关资源
最近更新 更多