java - 试图弄清楚如何只接受来自用户输入的 1 个字符
问题描述
我不确定如何验证用户是否只输入一个字符进行输入。我知道我所拥有的长度检查根本不正确。我只是用它来填充。请帮忙。我尝试了许多不同的方法,并在这个网站和其他网站上搜索了几天以找到答案。
final char SIZE = 10;
char [] letter = new char [SIZE];
// initiallizing input device
Scanner scan = new Scanner(System.in);
for (char index = 0; index < SIZE;)
{
System.out.println ("Please enter Letter #" + (index + 1));// gets letter from user
while ((!scan.hasNext("[A-Za-z]+")) || (!scan.hasNext(length(1)))){
if(!scan.hasNext(length (1))){
System.out.println ("Please only enter one Letter at a time: ");
letter [index] = scan.next().charAt(0); // accepts first character entered by user
}
if(!scan.hasNext("[A-Za-z]+")){
System.out.println ("Please enter a valid Letter: ");
letter [index] = scan.next().charAt(0); // accepts first character entered by user
}
else if((scan.hasNext("[A-Za-z]+")) && (scan.next(length(1)))){// makes sure letter entered is a letter
letter [index] = scan.next().charAt(0); // accepts first character entered by user
index++;// increases index if proper letter entered
}
}
}
for (char index = 0; index < SIZE; index++)
{
System.out.println ("Letter #" + (index + 1) + ": " + letter [index]);// prints characters entered by user in order
}
解决方案
有很多方法可以做到这一点。一种方法是 AK 发布的内容。一种方法如下:
for (char index = 0; index < SIZE;)
{
String temp = scan.nextLine();
if (temp.length() != 1)
{
// This means their input was too big
}
else
{
// This means their input was one character
}
}
你也可以使用scan.next().charAt(0);
这行代码只会将控制台中的一个字符作为输入。
如果您有任何问题或此答案不是您想要的,请在下方评论,我很乐意为您提供帮助。
推荐阅读
- python - 如何从 Kivy 中的数组更新纹理?
- ios - iOS 中的构建警告日志
- python - 如何使用 \t 从表单输入到选项卡来写入文件?(\\t 到 \t)
- python-3.x - pyqtgraph custom grid [Python/Qt]
- java - 使用 JAX RS 使用 Rest API 从远程服务器下载文件
- python - Reportlab 和 PIL:解包需要长度为 1 的字符串参数 影像库不可用,无法仅导入位图 jpeg
- asp.net-mvc - Web 应用程序文件夹的权限
- android - 如何使用改造将 2 个参数传递给 GET 请求?
- react-admin - 如果react-admin中查询字段的长度很短,如何防止发送get请求
- flutter - 在颤动页面视图中动态更新内容