不应该输入.charAt(0)返回一个字符串?为什么input.charAt(0)> = int有效?

时间:2016-10-19 06:29:18

标签: java uppercase lowercase charat

我一直在做运动。编写一个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()返回一个字符串吗?

另外,如果有人使用

,为什么在代码的后半部分有大写和小写的区别
toLowerCase();

已经?

2 个答案:

答案 0 :(得分:0)

  

不应该输入.charAt(0)返回一个字符串?

没有

返回char。检查javadoc。

  

为什么input.charAt(0)&gt; = int有效?

因为charAt(0)会返回char,而char可以(安全!)与int进行比较。

话虽如此,如果输入字符由(7位)ASCII字符组成,则代码只能正常工作。它不适用于重音拉丁字符,希腊语或cyrilic或阿拉伯语或....其他任何东西。 (好吧,你可能只设置了处理ASCII文本的问题。但是在你未来的编程任务中要记住这一点。)

正如评论中所指出的,代码中还有其他错误。

答案 1 :(得分:0)

好像你有问题和答案。你需要知道charAt(0)在第一时间是如何工作的,其次你想知道代码是如何工作的。如果你想知道为什么你的问题被低估了,那么这就是答案。

SE不是代码审查网站。如果您对代码的工作/工作流程有任何疑问,那么这绝对是您的理想选择。当我第一次开始使用SE时,我甚至经历过类似的情况。不要担心投票,你将成为一名专业人士通过经验提问。

现在回答你的问题:

  

java字符串charAt()方法返回给定的char值   索引号。索引号从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 ..

  

另外,为什么区分大写和小写   代码的后半部分,如果有人使用

     

toLowerCase();

这正是你应该避免在SE中使用的方式..

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

无论如何回答你的问题是,

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

几点见解:

现在您已了解此代码的逻辑,请尝试使用 正则表达式 实现相同功能。

一切顺利。