java - 如何检查字符串中的每个字母

标签 java

我未通过以下测试用例:

@Test (timeout=3000) public void gatenot_0(){
    GateNot g = new GateNot (new Wire("inw"), new Wire("outa"));
    g.feed("0");
    boolean ans = g.propagate();
    assertEquals(sigs1, g.read());
  }

其中显示“无效字符” - 以下方法引发异常:

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' && inps.charAt(i) != '0' 
                    && inps.charAt(i) != 'X' && inps.charAt(i) != 'x'
                    && inps.charAt(i) != ' ' && inps.charAt(i) != '\t')
                throw new ExceptionLogicMalformedSignal(inps.charAt(0), "Invalid character!");

            else 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);



        }
        return values;

    }

每次我传递包含“0”或“1”的内容时,它都会抛出异常因此,我应该将 String inps 的每个字母检查为字符串而不是 charAt() 吗?如果是,我应该如何检查?提前致谢。

最佳答案

要检查每个字母作为字符串,您可以使用

Character.toString(inps.charAt(i))

而不仅仅是inps.charAt(i)

我建议将其存储在每次迭代的变量中,而不是多次调用。

你也可以这样做

String.valueOf(inps.charAt(i))

有一个捷径

inps.charAt(i) + ""

还有另一种方式:

inps.substring(i, i + 1)

请注意,如果您结束将每个字母转换为字符串,则在比较它们时应使用 .equals 方法。

有关这方面的更多信息,您可以查看How to convert a char to a String?

关于java - 如何检查字符串中的每个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527388/

相关文章:

Java 正则表达式 : Remove all except specific phrases and words

java - 在 Spring 中消耗大量 json 有效负载的最佳方法?

java - Azure MobileService 返回 NullPointerException (Android)

java - 使用 jna 获取 IShellFolder

java - 将生成的类打包到 jar 中并将其添加到构建类路径中

Java 递归传值

cluster-analysis - 如何使用 ELKI java API 为具有字符串类型字段的自定义 POJO 在数据库中添加索引

java - Azure 连接无法连接证书错误

java - 在 Hibernate 中使用@MappedSuperClass 进行软删除

java - 使用 JRockit 安装 Tomcat 失败