基本上我需要写这条消息:
System.out.println("Invalid grade - must enter exactly one letter");
而且我不知道如何写一个(if,for,while循环),如果 letterGrade 大于一个字符,它必须只有一个字符,如果&gt ;这个消息应该跟1个字符。
问题是我知道如何用string.length()
来做这件事,但这是char,它不起作用。
我试过这个:
while(String.valueOf(letterGrade).length() > 1)
{
System.out.println("Invalid grade - must enter exactly one letter");
System.out.print("Enter grade (one character): ");
letterGrade = in.next().charAt(0);
}
但它没有打印出我想要的消息,是否有一些方法可以找到大于一个字符的字符? charAt()
可以帮助我吗?
答案 0 :(得分:2)
我建议使用正则表达式,因为您可能只想允许字母a-f / A-F。 要使用的表达式是
[a-fA-F]
用于检查这个的Java代码是:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("Type");
Scanner reader = null;
try {
// Read from System.in
reader = new Scanner(System.in);
// Only work with first character
char c = reader.findInLine(".").charAt(0);
// ""+c creates a string since RegEx only works on strings
String testString = ""+c;
// Test string
if(!(""+c).matches("[a-fA-F]")) {
System.out.println("Invalid input");
return;
}
// c has a valid grade
System.out.println("Valid input");
}
catch(Exception ex) {
if(reader != null)
reader.close();
}
}
}
测试结果:
a > Valid input
z > Invalid input
az > Valid input
za > Invalid input
答案 1 :(得分:0)
如果您只想阅读一个字符,可以使用System.in.read();
。