java - 如何结束连续接受字符的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");
}
}
}
}
解决方案
使用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
}
推荐阅读
- git - Git 克隆错误:'致命:不允许多次更新 ... ref'
- html - 如何从照片中删除缩进(带照片的块)?
- shell - 如何在管道分隔文件中使用 awk 命令从文件中仅获取奇数条目?
- workflow - 由于对作业完成的冗长顺序检查,Snakemake 处理大型工作流程缓慢?>100x 减速
- python-3.x - Odoo 11 无法在 SaaS 计划中创建模板数据库
- forms - symfony 3.4 中的多重过滤器
- python - RenderContext spritesheet 动画
- cocoa - 使用 FileAttributeKey.posixPermissions 与使用 stat -f %A 有何不同?
- c# - c#:带有多个条件的字典的Linq
- tensorflow - 在 tensorflow element-wise 中重复/平铺数据