gpt4 book ai didi

java - 程序阻止打印这两条消息

转载 作者:行者123 更新时间:2023-12-02 02:33:41 26 4
gpt4 key购买 nike

我这里有一些代码,我试图让用户输入一个字母, 数字或符号,我让它们都可以工作,但是当我输入字母时,它 打印出“您已输入一封信”和“您已输入一个 符号”但事实是,我一开始就没有输入过符号,只是一个 信。其外观如下:

输入单个字符:

D

您输入了一封信!

您输入了一个符号!

import static java.lang.System.*;
import java.util.*;

public class Java1304
{
public static void main(String[] args)
{
new Problem();
}
}

class Problem
{
char letter;

public Problem()
{
input();
process();
output();
}

void input()
{
Scanner scan = new Scanner(in);

out.println("Enter a SINGLE character:");
letter = scan.nextLine().charAt(0);
}

void process()
{
if(Character.isLetter(letter))
{
out.println("You entered a LETTER!");
}
if(Character.isDigit(letter))
{
out.println("You entered a NUMBER!");
}
if(!Character.isLetter(letter) || !Character.isDigit(letter))
//else
out.println("You entered a SYMBOL!");

}

void output()
{
out.println();
out.println();
out.println();

}
}

最佳答案

您想要的行为没有反射(reflect)在您编写的代码中。语句 !Character.isLetter(letter) ||如果字符不是字母或不是数字(因为 || 是 or 的逻辑运算符),!Character.isDigit(letter) 计算结果为 true。

回到您的示例,如果您输入“A”,Character.isDigit(letter) 的计算结果为 false,因此 !Character.isDigit(letter) 的计算结果为正确,所以 !Character.isLetter(letter) || !Character.isDigit(letter) 计算结果为 true。

根据您的示例,您的 if block 可以更好地写为:

 if(Character.isLetter(letter)){
out.println("You entered a LETTER!");
} else if(Character.isDigit(letter)){
out.println("You entered a NUMBER!");
} else {
out.println("You entered a SYMBOL!");
}

关于java - 程序阻止打印这两条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com