Java编码帮助!无法获得if语句来确认字符串

问题描述

编写一个程序,提示用户提供字母中的单个字符。打印元音或辅音,具体取决于用户输入。如果用户输入的字符不是字母(介于a和z之间或A和Z之间)或长度大于1的字符串,则显示错误消息。

我一直在尝试解决这个问题,基本上已经弄清了所有问题,但是遇到了两个问题。如果用户输入数字而不是字母,如何使扫描仪识别错误。同样,人们将不必重复输入。有没有办法让第一个if语句评估用户是否输入了字符串?

import java.util.*;

public class MessAround {

    public static void main(String[] args) {
        Scanner scan = new Scanner(system.in);
        
        System.out.println("Please Provide single character from the alphabet: ");
        String letter = scan.next();
        
        if (scan.hasNext())
        {
            letter = letter.toLowerCase();
            if (letter.equals("a") || letter.equals("e") || letter.equals("i") || letter.equals("o") || letter.equals("u"))
            {
                System.out.println("Vowel");
            }
            else if (letter.length() > 1)
            {
                System.out.println("Error");
            }
            else
            {
                System.out.println("Consonant");
            }
        }
        else
        {
            System.out.println("Error");
        }
    }

}

解决方法

添加到您的if中:if (isNumber(letter)) { // A number was entered.,并创建一个isNumber(String)方法,如果该字符串是您所认为的数字,则返回true

或者最好将其设为String isValid(String)方法,并在该方法中实现您的验证规则。如果验证成功,它可能返回null,否则返回一条消息。

,

有很多方法可以解决此问题。其中几个如下:

使用正则表达式:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Please Provide single character from the alphabet: ");
        String letter = scan.next();

        if (!letter.matches("[A-Za-z]")) {
            System.out.println("Error");
        } else {
            letter = letter.toLowerCase();
            if (letter.matches("[aeiou]")) {
                System.out.println("Vowel");
            } else {
                System.out.println("Consonant");
            }
        }
    }
}

here了解正则表达式。

使用课程Character

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Please Provide single character from the alphabet: ");
        String letter = scan.next();

        if (letter.length() == 1 && Character.isAlphabetic(letter.charAt(0))) {
            char ch = Character.toLowerCase(letter.charAt(0));
            if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
                System.out.println("Vowel");
            } else {
                System.out.println("Consonant");
            }
        } else {
            System.out.println("Error");
        }
    }
}