4

こんにちは、コードは機能していませんが、有効な文字をチェックするためのコードです。'オペランド'が有効な文字であっても、yesを出力せず、falseを返します。文字が有効であっても、それを認識せず、常にelseステートメントに移動します。助けてください!

public static boolean checkValidOperands(char operand) {

    char[] validOperators = {'+', '-', '*', '/', 'q'};
    List<char[]> validOp = Arrays.asList(validOperators);
    if (validOp.contains(operand))  {
        System.out.println("Yes");
        return false;
    }  else {
        System.out.println("Please enter valid operand");
        return true;
    }
}
4

3 に答える 3

7

あなたが使用することができます:

List<Character> validOp = Arrays.asList('+', '-', '*', '/', 'q');
于 2013-03-01T02:50:50.643 に答える
2

文字のリストを作成する方法が間違っています。

現在のコードでは、作成したリストは実際には文字ではなく文字配列のリストです。

import java.util.Arrays;
import java.util.List;

public class Test{
    public static void main(String[] args){
    char ch = '+';
    System.out.println(checkValidOperands(ch));

    }

    public static boolean checkValidOperands(char operand) {

        Character[] validOperators = {'+', '-', '*', '/', 'q'};
        List<Character> validOp = Arrays.asList(validOperators);
        if (validOp.contains(operand))  {
            System.out.println("Yes");
            return false;
        }  else {
            System.out.println("Please enter valid operand");
            return true;
        }
    }
}

PS:また、将来的には、Javaではgenericのプリミティブ型を使用できないためList<char>List<int>などは使用しないでください。代わりに、対応するオブジェクトカウンターパーツを使用してください。詳細については、この質問を参照してください。Javaコレクションがプリミティブタイプを直接格納できないのはなぜですか。

于 2013-03-01T02:52:13.160 に答える
0

文字列は、一連の文字のより適切なデータ構造です。例えば、

String validOperators = "+-*/q";

if (validOperators.indexOf(operand) != -1)  {
    System.out.println("Yes");
    return false;
}
于 2015-03-30T17:00:43.993 に答える