java - if 语句不遵守的规则

标签 java if-statement

下面的代码应该告诉用户他的输入是元音、辅音还是小于 1 的数字。但是,程序会为包括辅音在内的所有大写字母返回“元音”,并且每当输入数字时都会返回“辅音”。例如 - 如果输入 a,结果 = 元音。如果 b,结果 = 辅音。如果 B,结果 = 元音(应该是辅音)。如果为 1,则结果 = 辅音(应为数字)。任何建议将不胜感激。谢谢。

package checkVowelorConstantorNumber;
import java.util.Scanner;
public class Main {
public static void main (String [] args) {
    Scanner inp = new Scanner (System.in);
    boolean tf = false;


    while(tf == false) {
    System.out.println("Enter a character which is a - z or A - Z or 
    less than 1");
    char cha = inp.next().charAt(0);
    inp.nextLine();

    if(Character.isLetter(cha) && cha == 'a'||cha == 'e' || cha == 'i' || cha == 'o' || cha == 'u' || Character.isUpperCase(cha)) {
     System.out.println("Vowel");
    }
    else if(Character.isLetter(cha) && cha != 'a'|| cha != 'e' || cha != 'i' || cha != 'o' || cha != 'u' || Character.isUpperCase(cha)) {
     System.out.println("Consonant");
    }

    else if(Character.isDigit(cha) && cha <= 1 ) {
     System.out.println("Digit");
    }
    else  System.out.println("Invalid character");
    }
 }
}

最佳答案

您的 if 语句首先检查给定字符是否是字母而不是 a,1 两者都不是,因此为 false,然后检查 1 是否不等于 'e' 导致该语句为 true,从而打印 'Consonant'。每次比较都必须检查 isLetter。因此我会推荐这样的东西:

if(Character.isLetter(cha)) {
   // Check for vowel or consonant based on letters
} else if(Character.isDigit(cha) && cha <= '1') {
   System.out.println("Digit");
} else {
   System.out.println("Invalid character");
}

您还应该为辅音使用 && 而不是 || 制作 if 语句,因为它不应该是指定的字符。

关于java - if 语句不遵守的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900429/

相关文章:

java - 如何使用 Java 将数据从 Cassandra 导出到 CSV 文件

java - java判断文件是否存在

javascript - 检查用户是否存在于 JSON 文件(或 mongoDB)中的条件语句

Excel IF(ISNUMBER(SEARCH 忽略某些字符

javascript - 基本 JS 对象 {a :1, b :2} not supported in Nashorn?

java - 是否可以在 Java 中捕获高分辨率网络摄像头图像?

java - 尝试定义模块时,Maven 无法将 EJB 识别为项目的依赖项

r - `if` 比 ifelse 快吗?

swift - 为什么在 Swift 中编写此代码时会出现 'Use of unresolved identifier' 错误?

java - 获取空指针并转换结果 java.lang.NullPointerException : lock == null