无法在Java中读取单个字符

无法在Java中读取单个字符,java,Java,我根据我发现的一个示例编写了这段代码: do { System.out.print("¿What kind of envelope do you want? (A)Mini B)Midi C)Maxi): "); cadena = sc.next(); tipo = cadena.charAt(0); tipo=Character.toUpperCase(tipo); } while (tipo != 'A' || tipo != 'B' || tipo != '

我根据我发现的一个示例编写了这段代码:

do {
    System.out.print("¿What kind of envelope do you want? (A)Mini B)Midi C)Maxi): ");
    cadena = sc.next();
    tipo = cadena.charAt(0);
    tipo=Character.toUpperCase(tipo);
} while (tipo != 'A' || tipo != 'B' || tipo != 'C');
但它不断地问我信封的种类,而不是登记我的选择。
我做错了什么?如何解决它?

尝试将
|
运算符更改为
&
使用
!tipos.equals('A')
而不是
=

tipo != 'A' || tipo != 'B' || tipo != 'C'
如果输入为A、B或C,则条件仍将返回true。
它将继续循环,因为它与其他两个组合不匹配

!(tipo == 'A' || tipo == 'B' || tipo == 'C')

想想你的条件反射。想象所有可能的场景,找出你的条件所说的。不起作用。我甚至不能用那个操作员来做这个项目是的。早上太早了。。。(星期六)@user1043134——再试一次——我输入了
%%
,意思是
&&
tipos
char
(通过调用
Character.toUpperCase(tipo)
)类型。字符是原语,因此
=是正确的。即使它被声明为
字符
,自动装箱也意味着比较仍然可以正常工作