字符串函数 "CharAt" 在 "char" 中存储和显示数值

String function "CharAt" storing and displaying numeric values in "char"

好的,我正在使用这个字符串函数 "charAT" 来存储要存储在 char r 中的字符变量。但我们知道用户可以输入任何内容。当用户输入 123 或 5 之类的数值时,charAt 会将其存储在 char 变量 r 中。例外应该来了,但它没有。 char 变量如何能够保存数值。我怎样才能解决这个问题?我希望 "r" 仅保存 char 值,并希望在用户输入数值时发生异常。

package string;

import java.util.Scanner;

public class Example 
{

Scanner s1;
String str;
char r;

Example()
{
  s1 = new Scanner(System.in);
}

void display()
{
    while(true)
    {
    try {

    System.out.println("Please enter the grade");
    str = s1.nextLine();
    r = str.charAt(0);
    System.out.println("The grade is "+ r);
    break;
    }
    catch(Exception e)
    {
        System.out.println("you have entered an invalid input. Please try again \n");
    }
    }
}

public static void main(String[] args)
{
    new Example().display();
}
}

在Java中Stringchar的值也可以接受数值。因此,如果您输入 123 作为输入,则字符串将为“123”,字符将为 1。如果您只想获取字母作为输入,那么您可以使用 Java 的 Scanner class 中的 hasNext 方法来完成。这将使用 Regular Expression 例如 [A-Za-z] 来确保只能输入字母。

while(true)
{
    try
    {
        System.out.println("Please enter the grade");
        while (!s1.hasNext("[A-Za-z]+")) {
            System.out.println("you have entered an invalid input. Please try again \n");
            s1.next();
        }
        str = s1.next();
        r = str.charAt(0);
        System.out.println("The grade is "+ r);
        break;
    }
    catch (Exception e)
    {
        System.out.println("There was an exception \n");
    }
}

听起来你需要测试字符是否在特定的 ASCII 范围内:

ascii = (int) str.toLowerCase().charAt(0);
if ( ( ascii >= (int) 'a' ) && ( ascii <= (int) 'f' ) ) {
    // Valid!
} else {
    // Invalid!
}