0

Java の char を通常の演算子と比較できることは知っていますanysinglechar == y。ただし、この特定のコードには問題があります。

do{ 
    System.out.print("Would you like to do this again? Y/N\n");
    looper = inputter.getChar();
    System.out.print(looper);
    if(looper != 'Y' || looper != 'y' || looper != 'N' || looper != 'n')
        System.out.print("No valid input. Please try again.\n");
}while(looper != 'Y' || looper != 'y' || looper != 'N' || looper != 'n');

問題は他のメソッド、inputter.getChar() ではないはずですが、とにかくダンプします。

private static BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
public static char getChar() throws IOException{
    int buf= read.read();
    char chr = (char) buf;
    while(!Character.isLetter(chr)){
        buf= read.read();
        chr = (char) buf;
    }
    return chr;
}

私が得ている出力は次のとおりです。

Would you like to do this again? Y/N
N
NNo valid input. Please try again.
Would you like to do this again? Y/N
n
nNo valid input. Please try again.
Would you like to do this again? Y/N

ご覧のとおり、入力した char はn. その後、正しく印刷されます (したがって、2 回表示されます)。ただし、その比較は当てはまらないようです。

私は明らかな何かを見落としていると確信しています。

4

2 に答える 2