Java:如何编写程序,使用布尔值和字符串只识别大写字母
我是编程和Java新手。我有一个问题,这是使我的程序只识别大写字母和显示错误消息,如果用户输入是非字母字符。我被指示使用布尔和字符串来解决这个问题。 谢谢Java:如何编写程序,使用布尔值和字符串只识别大写字母,java,Java,我是编程和Java新手。我有一个问题,这是使我的程序只识别大写字母和显示错误消息,如果用户输入是非字母字符。我被指示使用布尔和字符串来解决这个问题。 谢谢 如果只想检查大写字母,那么一种方法是检查每个字符的ASCII值,看看它是否在65到90之间。如果字符串中的所有字符都符合此条件,则您的字符串仅包含a-Z。如果不符合此条件,则可以根据需要显示错误消息。根据您的代码,请参见下面的示例 Scanner in = new Scanner(System.in); System.out.
如果只想检查大写字母,那么一种方法是检查每个字符的ASCII值,看看它是否在65到90之间。如果字符串中的所有字符都符合此条件,则您的字符串仅包含a-Z。如果不符合此条件,则可以根据需要显示错误消息。根据您的代码,请参见下面的示例
Scanner in = new Scanner(System.in);
System.out.println("Your message here");
String userInput = in.nextLine();
in.close();
// Here you don't know what they entered
// but looking at your code, you want
// only ONE uppercase character
// validate the input
boolean validInput = false;
if (userInput.length() == 1) {
char letter = userInput.charAt(0);
if (letter >= 65 && letter <= 90) {
validInput = true;
}
}
// handle accordingly
if (validInput) {
// your logic here
} else {
System.out.println("Your error message");
}
//这里的方法
专用布尔值isUppercaseLetter(字符c){
return(c>='A'&&c='0'&&c='!'&&c我不确定您的要求。但是我修改了您的代码,因此它可以根据我的方式运行
Scanner in = new Scanner(System.in);
System.out.println("Enter a single letter, and I will tell you what the corresponding digit is on the telephone:");
String letter = in.nextLine();
boolean hasUpper = false;
if (letter.equals("A") || letter.equals("B") || letter.equals("C")){
hasUpper = true;
System.out.println("The digit 2 corresponds to the letter " + letter + " on the telephone.");
}
else if(letter.equals("a") || letter.equals("b") || letter.equals("c")){
System.out.println("Error! The letter has to be uppercase.");
}
else{
System.out.println("Please enter a letter.");
}
boolean letter=letter.hassuppercase();
将letter重新指定为boolean
而不是字符串。您的if语句中应该会出现编译器错误。请更正它们。当您说您遇到问题时,您能告诉我您遇到了什么问题吗?我认为这看起来是一个好的开始(我看到了一些小问题,但让我们先谈谈您的问题!)您需要验证用户是否只输入了一个字符(letter.length()==1
),然后提取该字符(letter.charAt(0)
),并验证它是大写字母(介于'A'
和'Z'
之间)。我不知道如何编写一个代码,告诉程序只识别大写字母。String
类中实际上没有hassuppercase()
方法。另外,当说“使用布尔值和字符串”时,这是否意味着“仅”这个问题是可以解决的吗?这个问题是可以解决的,有一个小小的加法,<代码>字符串本身没有,但是它的作用是这样。为了提高易读性,65可以用“A”来改变,90可以用“Z'来表示。我很高兴你发现它有用。如果它解决了你的问题,考虑接受答案。如果没有,请提供更多的细节,我会尝试T。o帮助。正如Marcos所指出的,您可以将ascii值交换为它们的等效字符;请参阅“可打印字符”部分以获取更多信息。由于您的帮助,我的代码工作正常。您能否演示如何对非字母字符执行相同的操作。在用户输入数字或符号的情况下。您需要查看if(字母>=65&&letter if(letters>=00&&letters很抱歉造成混淆。我的代码尚未完成。如果用户输入为小写“a”,则输出应为“Error!字母必须为大写”。并使用布尔值。
// Here you don't know what they entered
// the validation / execution changes based on your needs
// suggestion: define other methods
if (userInput.length() == 1) {
char c = userInput.charAt(0);
// what kind of character is it?
if (isUppercaseLetter(c)) {
// do something with the uppercase letter
} else if (isDigit(c)) {
// do something with the digit
} else if (isSymbol(c)) {
// do something with the symbol
} else {
// whatever else it might be, this could be an error message
}
}
// methods here
private boolean isUppercaseLetter(char c) {
return (c >= 'A' && c <= 'Z'); // ascii codes 65 to 90
}
private boolean isDigit(char c) {
return (c >= '0' && c <= '9'); // ascii codes 30 to 39
}
private boolean isSymbol(char c) {
return (c >= '!' && c <= '/'); // 21 to 47, modify based on acceptable symbols
}
Scanner in = new Scanner(System.in);
System.out.println("Enter a single letter, and I will tell you what the corresponding digit is on the telephone:");
String letter = in.nextLine();
boolean hasUpper = false;
if (letter.equals("A") || letter.equals("B") || letter.equals("C")){
hasUpper = true;
System.out.println("The digit 2 corresponds to the letter " + letter + " on the telephone.");
}
else if(letter.equals("a") || letter.equals("b") || letter.equals("c")){
System.out.println("Error! The letter has to be uppercase.");
}
else{
System.out.println("Please enter a letter.");
}