如何解决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");
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。