Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于Java,如果我想执行if语句以确保输入只接受一个字符,我应该如何继续?_Java_Char_Try Catch - Fatal编程技术网

对于Java,如果我想执行if语句以确保输入只接受一个字符,我应该如何继续?

对于Java,如果我想执行if语句以确保输入只接受一个字符,我应该如何继续?,java,char,try-catch,Java,Char,Try Catch,我试图做一个while循环来获取用户输入,并确保他们输入的只是一个字符,因此如果他们做ab,它将要求他们进行另一个用户输入,而不是将他们输入的第一个字母作为答案。我可以用下面这样的试一试吗?它现在不起作用,我不知道为什么 谢谢你的帮助 boolean single = true; while(single) { try {

我试图做一个while循环来获取用户输入,并确保他们输入的只是一个字符,因此如果他们做ab,它将要求他们进行另一个用户输入,而不是将他们输入的第一个字母作为答案。我可以用下面这样的试一试吗?它现在不起作用,我不知道为什么

谢谢你的帮助

            boolean single = true;
        
                while(single) {
                
                    try {
                        if(letter.length()==1) {
                            break;
                        } else {
                            System.out.println("Please enter a single character only!");
                        }
                    } catch (Exception e) {
                      System.out.println("Please enter a single character only!");
                    }
                }

这不适合引发异常。首先,检查输入的长度,如果它有效,检查
input.charAt(0)
是否为字母。您可以使用布尔变量来跟踪输入是否无效,并在输入无效时返回

有不同类型的循环。对于这种情况,我更喜欢使用
do而
循环。
do-while
循环保证其主体将至少执行一次。查看以了解更多信息

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean valid;
        String input;
        do {
            valid = true;
            System.out.print("Enter a letter: ");
            input = scanner.nextLine();
            if (input.length() == 0 || input.length() > 1 || !Character.isLetter(input.charAt(0))) {
                System.out.println("This is an invalid input. Please try again.");
                valid = false;
            } else {
                System.out.println("This is a valid input.");
                // ...do other processing
            }
        } while (!valid);
    }
}
运行示例:

Enter a letter: 
This is an invalid input. Please try again.
Enter a letter: abc
This is an invalid input. Please try again.
Enter a letter: 1
This is an invalid input. Please try again.
Enter a letter: w
This is a valid input.

将输入作为字符串,并检查其长度是否等于1?只需获取输入的字符串的长度,然后测试它是否为字符。注意,您的代码格式非常糟糕--为什么要使代码比必要时更难阅读和理解?我已经修好了,但是以后,请你自己努力去做。你不想为此抛出一个例外。只需检查while循环中的长度,如果长度为1,则中断循环。例外情况适用于例外情况。