我未通过以下测试用例:
@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/