Java 抛出异常的问题

Java 抛出异常的问题,java,Java,方法public static List fromStringString inps创建并返回在输入字符串中找到的信号值列表。如果发现除01xX中包含“空白”的字符以外的任何字符,我必须提出ExceptionLogicMalformedSignal值。当我将1 x\tX 00作为输入传递时,它会在不应该时抛出异常。代码的逻辑有什么问题?提前谢谢!注意:HI、LO、X是枚举对象 public static List <Signal> fromString(String inps)

方法public static List fromStringString inps创建并返回在输入字符串中找到的信号值列表。如果发现除01xX中包含“空白”的字符以外的任何字符,我必须提出ExceptionLogicMalformedSignal值。当我将1 x\tX 00作为输入传递时,它会在不应该时抛出异常。代码的逻辑有什么问题?提前谢谢!注意:HI、LO、X是枚举对象

public static List <Signal> fromString(String inps)
    {
        List<Signal> values = new ArrayList<Signal>();
        for(int i = 0; i < inps.length(); i++)
        {
            if(inps.charAt(i) == '1')
                values.add(HI);
            else if(inps.charAt(i) == '0')
                values.add(LO);
            else if(inps.charAt(i) == 'X')
                values.add(X);
            else if(inps.charAt(i) == 'x')
                values.add(X);
            else if (inps.charAt(i) != ' ' || inps.charAt(i) != '\t')
                throw new ExceptionLogicMalformedSignal(inps.charAt(i), "Invalid character!");




        }
        return values;

    }

看看这种情况:

if (inps.charAt(i) != ' ' || inps.charAt(i) != '\t')
如果角色不是空格或不是制表符,则该操作将通过。单个字符不能同时为空格和制表符,因此至少有一个子条件为真。您想要&-尽管我会提取对charAt的调用:

。。。或者我只使用一个switch语句,这在我看来更清楚:

switch (inps.charAt(i)) {
    case '1':
        values.add(HI);
        break;
    case '0':
        values.add(LO);
        break;
    case 'x':
    case 'X':
        values.add(X);
        break;
    case ' ':
    case '\t':
        break;
    default:
        throw ...;
}

看看这种情况:

if (inps.charAt(i) != ' ' || inps.charAt(i) != '\t')
如果角色不是空格或不是制表符,则该操作将通过。单个字符不能同时为空格和制表符,因此至少有一个子条件为真。您想要&-尽管我会提取对charAt的调用:

。。。或者我只使用一个switch语句,这在我看来更清楚:

switch (inps.charAt(i)) {
    case '1':
        values.add(HI);
        break;
    case '0':
        values.add(LO);
        break;
    case 'x':
    case 'X':
        values.add(X);
        break;
    case ' ':
    case '\t':
        break;
    default:
        throw ...;
}

因为它总是不等于空白或制表符,因为它总是不等于空白或制表符