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 中使用的方式..

它明确告诉我们这不是你的代码,你希望这里的人教你代码的逻辑。

无论如何,你这个问题的答案是,

是的,完全没有必要使用大写字母,因为你已经在输入阶段本身将每个字母都转换为小写字母

一些见解:

既然您已经理解了这段代码的逻辑,请尝试使用 正则表达式 .

实现相同的逻辑

祝一切顺利。