input.charAt(0) return 不应该是一个字符串吗?为什么 input.charAt(0) >= int 有效?
Shouldn't input.charAt(0) return a String? Why input.charAt(0) >= int works?
我一直在锻炼。编写一个 Java 程序,让用户提供字母表中的单个字符。根据用户输入打印辅音的元音。如果用户输入不是字母(介于 a 和 z 或 A 和 Z 之间),或者是长度 > 1 的字符串,则打印一条错误消息。
这就是答案:
import java.util.Scanner;
public class Exercise8 {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Input a alphabet: ");
String input = in.next().toLowerCase();
boolean uppercase = input.charAt(0) >= 65 && input.charAt(0) <= 90;
boolean lowercase = input.charAt(0) >= 97 && input.charAt(0) <= 122;
boolean vowels = input.equals("a") || input.equals("e") || input.equals("i")
|| input.equals("o") || input.equals("u");
if (input.length() > 1)
{
System.out.println("Error. Not a single character.");
}
else if (!(uppercase || lowercase))
{
System.out.println("Error. Not a letter. Enter uppercase or lowercase letter.");
}
else if (vowels)
{
System.out.println("Input letter is Vowel");
}
else
{`enter code here`
System.out.println("Input letter is Consonant");
}
}
}
怎么会这样,
boolean uppercase = input.charAt(0) >= 65 && input.charAt(0) <= 90;
有效吗? input.charAt()
return 不应该是一个字符串吗?
还有,为什么有人用了
,为什么后半段代码有大小写区分
toLowerCase();
已经?
Shouldn't input.charAt(0) return a String?
没有
它returns一个char
。检查 javadoc。
Why input.charAt(0) >= int works?
因为 charAt(0)
returns 一个 char
和一个 char
可以(安全地!)与一个 int
进行比较。
话虽如此,但只有当输入字符由(7 位)ASCII 字符组成时,您的代码才能正常工作。它不适用于带重音的拉丁字符、希腊语、西里尔语、阿拉伯语或……几乎任何其他字符。 (好的,您可能只遇到过处理 ASCII 文本的问题。但在您以后的编程任务中请记住这一点。)
正如评论中指出的那样,您的代码中还有其他错误。
看来您既有问题又有答案。你首先需要知道 charAt(0) 是如何工作的,其次你想知道代码实际上是如何工作的。如果你想知道为什么你的问题被否决了,那么这就是答案。
SE 不是代码审查网站。如果您对代码的 working/workflow 有任何具体疑问,那么这绝对是您的位置。甚至我第一次开始使用 SE 时也遇到过类似的情况。不用担心否决票,你会通过经验成为提问专家。
现在回答你的问题:
The java string charAt() method returns a char value at the given
index number. The index number starts from 0.
示例:
public class Solution{
public static void main(String args[]){
String name="StackExchange";
char ch=name.charAt(4);//returns the char value at the 4th index
System.out.println(ch);
}}
输出为k ..
Also, why is there distinction for uppercase and lowercase in the
second half of a code if someone used
toLowerCase();
这正是您应该避免在 SE 中使用的方式..
它明确告诉我们这不是你的代码,你希望这里的人教你代码的逻辑。
无论如何,你这个问题的答案是,
是的,完全没有必要使用大写字母,因为你已经在输入阶段本身将每个字母都转换为小写字母
一些见解:
既然您已经理解了这段代码的逻辑,请尝试使用 正则表达式 .
实现相同的逻辑
祝一切顺利。
我一直在锻炼。编写一个 Java 程序,让用户提供字母表中的单个字符。根据用户输入打印辅音的元音。如果用户输入不是字母(介于 a 和 z 或 A 和 Z 之间),或者是长度 > 1 的字符串,则打印一条错误消息。 这就是答案:
import java.util.Scanner;
public class Exercise8 {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Input a alphabet: ");
String input = in.next().toLowerCase();
boolean uppercase = input.charAt(0) >= 65 && input.charAt(0) <= 90;
boolean lowercase = input.charAt(0) >= 97 && input.charAt(0) <= 122;
boolean vowels = input.equals("a") || input.equals("e") || input.equals("i")
|| input.equals("o") || input.equals("u");
if (input.length() > 1)
{
System.out.println("Error. Not a single character.");
}
else if (!(uppercase || lowercase))
{
System.out.println("Error. Not a letter. Enter uppercase or lowercase letter.");
}
else if (vowels)
{
System.out.println("Input letter is Vowel");
}
else
{`enter code here`
System.out.println("Input letter is Consonant");
}
}
}
怎么会这样,
boolean uppercase = input.charAt(0) >= 65 && input.charAt(0) <= 90;
有效吗? input.charAt()
return 不应该是一个字符串吗?
还有,为什么有人用了
,为什么后半段代码有大小写区分toLowerCase();
已经?
Shouldn't input.charAt(0) return a String?
没有
它returns一个char
。检查 javadoc。
Why input.charAt(0) >= int works?
因为 charAt(0)
returns 一个 char
和一个 char
可以(安全地!)与一个 int
进行比较。
话虽如此,但只有当输入字符由(7 位)ASCII 字符组成时,您的代码才能正常工作。它不适用于带重音的拉丁字符、希腊语、西里尔语、阿拉伯语或……几乎任何其他字符。 (好的,您可能只遇到过处理 ASCII 文本的问题。但在您以后的编程任务中请记住这一点。)
正如评论中指出的那样,您的代码中还有其他错误。
看来您既有问题又有答案。你首先需要知道 charAt(0) 是如何工作的,其次你想知道代码实际上是如何工作的。如果你想知道为什么你的问题被否决了,那么这就是答案。
SE 不是代码审查网站。如果您对代码的 working/workflow 有任何具体疑问,那么这绝对是您的位置。甚至我第一次开始使用 SE 时也遇到过类似的情况。不用担心否决票,你会通过经验成为提问专家。
现在回答你的问题:
The java string charAt() method returns a char value at the given index number. The index number starts from 0.
示例:
public class Solution{
public static void main(String args[]){
String name="StackExchange";
char ch=name.charAt(4);//returns the char value at the 4th index
System.out.println(ch);
}}
输出为k ..
Also, why is there distinction for uppercase and lowercase in the second half of a code if someone used
toLowerCase();
这正是您应该避免在 SE 中使用的方式..
它明确告诉我们这不是你的代码,你希望这里的人教你代码的逻辑。
无论如何,你这个问题的答案是,
是的,完全没有必要使用大写字母,因为你已经在输入阶段本身将每个字母都转换为小写字母
一些见解:
既然您已经理解了这段代码的逻辑,请尝试使用 正则表达式 .
实现相同的逻辑祝一切顺利。