如果char有多个符号(使用char,而不是String),则打印消息

时间:2015-08-13 13:27:38

标签: java

基本上我需要写这条消息: 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()可以帮助我吗?

2 个答案:

答案 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();