2016-03-15 69 views
0

我会比较char,但它实际上不起作用:比较CHAR变量在Java中

//... 
System.out.print("PROCEED? (Y/N):\t"); 
line = in.nextLine(); 
ch = line.charAt(0); 

while (ch != 'y' || ch != 'n' || ch != 'Y' || ch != 'N'){ 
    System.out.print("NON-VALID INPUT. TYPE Y-N:\t"); 

    line = in.nextLine(); 
    ch = line.charAt(0); 
} 
//... 

在我的终端,因为我按yn,其结果是:

PROCEED? (Y/N): y 
NON-VALID INPUT. TYPE Y-N: y 
NON-VALID INPUT. TYPE Y-N: Y 
NON-VALID INPUT. TYPE Y-N: n 
NON-VALID INPUT. TYPE Y-N: r 
NON-VALID INPUT. TYPE Y-N: d 
... 
+0

'ch!='y'|| ch!='n''将总是*为真,因为如果'ch =='y''那么'ch!='n'';如果'ch =='n''那么'ch!='y'';如果'ch!='y''和'ch!='n''那么它也是如此。 –

回答

5

你的情况不对。它应该是:

while(ch!='y' && ch!='n' && ch!='Y' && ch!='N') 

因为该循环应该只要继续输入字符比不同所有 4上可接受的输入。

0

您需要在while循环中使用&&而不是||

0

条件错误。如果用户输入('Y','y','N','n')除外,则必须输入“and”条件(& &),才能进入该条件。 代码如下:

System.out.print("PROCEED? (Y/N):\t"); 
    Scanner in = new Scanner(System.in); 
    String line=in.nextLine(); 
    Character ch=line.charAt(0); 

    while(ch!='y' && ch!='n' && ch!='Y' && ch!='N'){ 
     System.out.print("NON-VALID INPUT. TYPE Y-N:\t"); 

     line=in.nextLine(); 
     ch=line.charAt(0); 
    } 

希望这可以帮助你。