首页 > 解决方案 > 如何结束连续接受字符的while循环

问题描述

我正在检查输入是否是元音、辅音或其他。当输入任何其他数据类型(int、double、long 等)时,我想打破我的 while 循环。提前感谢您的任何帮助。

import java.util.Scanner;
/**
 *
 * @author Babatunde
 */
public class vowelConsonantOne {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        char ch;
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("Enter an Alphabet");
            ch = sc.next().charAt(0);

            if (ch == 'A' || ch == 'a' || ch == 'E' || ch == 'e' || ch == 'I' || ch == 'i' || ch == 'O' || ch == 'o' || ch == 'U' || ch == 'u') {
                System.out.println("This is a vowel");
            } else {
                System.out.println("This is a consonant");
            }
        }
    }

}

标签: java

解决方案


使用Character类及其各种方法:Character.isLetter应该完成这项工作(isAlphabetic(int)仅适用于代码点)。

        if (ch == 'A' || ch == 'a' || ch == 'E' || ch == 'e' || ch == 'I' || ch == 'i' || ch == 'O' || ch == 'o' || ch == 'U' || ch == 'u') {
            System.out.println("This is a vowel");
        } else if (Character.isLetter(ch)) {
             System.out.println("This is a consonant");
        } else {
          break; // exit the loop.
        }

或者,如果您不想退出循环并继续阅读字符:

     for(;;) {
        System.out.println("Enter an Alphabet");
        char ch = sc.next().charAt(0);
        if (ch == 'A' || ch == 'a' || ch == 'E' || ch == 'e' || ch == 'I' || ch == 'i' || ch == 'O' || ch == 'o' || ch == 'U' || ch == 'u') {
            System.out.println("This is a vowel");
        } else if (Character.isLetter(ch)) {
             System.out.println("This is a consonant");
        }
      }

顺便说一句,你不需要这个Scanner类:

InputStreamReader isr = new InputStreamReader(System.in, StandardDefaultCharsets.UTF_8);
for (;;) {
  System.out.println("Enter an Alphabet");
  int n = isr.read();
  if (n == -1) break; // end of stdin.
  char ch = (char) n;
  // the if here
}

推荐阅读