gpt4 book ai didi

java - 字符串中的特殊字符[JAVA]

转载 作者:行者123 更新时间:2023-11-29 05:08:45 24 4
gpt4 key购买 nike

伙计们,如果找到除 "01xX\t" 以外的其他字符(包括传递的字符串中的空格和\t),下面的方法将抛出异常。如果我有这个字符串 "1 x\tX 00",该方法应该返回 [1,X,X,X,X,X,X,X,0,0] 但我只得到 [1,X,X,0,0] 其中 'whitespace''\t' 不知何故没有被包括在内。 'Whitespace''\n' 也应该返回 'X'。请 smb 帮帮我好吗?

    //Here's the test case that I'm failing
@Test (timeout=3000) public void signal13(){
String inp = "1 x \tX 00";
List<Signal> expecteds = Signal.fromString(inp);
assertEquals(expecteds, Arrays.asList(new Signal[]{Signal.HI, Signal.X, Signal.X, Signal.LO, Signal.LO}));
}





import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;


public enum Signal {

HI, LO, X;


public Signal invert()
{
if(this == HI)
return LO;
else if(this == LO)
return HI;
else if(this == X)
return X;

return this;
}

public static Signal fromString(char c)
{

if(c == '1')
return HI;
else if(c == '0')
return LO;
else if(c == 'X')
return X;
else if(c == 'x')
return X;
else
throw new ExceptionLogicMalformedSignal(c, "Invalid character!");

}

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) == ' ')
values.add(X);
else if(inps.charAt(i) == '\t')
{
values.add(X);
values.add(X);
}
else
throw new ExceptionLogicMalformedSignal(inps.charAt(0), "Invalid character!");
}
return values;

}

@Override
public String toString()
{
if(this == HI)
return "1";
else if(this == LO)
return "0";
else if(this == X)
return "X";

return "Error here!";
}
public static String toString(List<Signal> sig)
{
String result = "";
ArrayList<Signal> temp = new ArrayList<>();
for(Signal x: sig)
{
temp.add(x);
}

for(int i = 0; i < temp.size(); i++)
{
if(temp.get(i) == HI)
result += "1";
else if(temp.get(i) == LO)
result += "0";
else if(temp.get(i) == X)
result += "X";
}

return result;
}
}

最佳答案

似乎断言不正确,它是:

 assertEquals(expecteds, Arrays.asList(new Signal[]{Signal.HI, Signal.X, Signal.X, Signal.LO, Signal.LO}));

虽然它应该是:

List<Signal> actual = Signal.fromString(inp);
List<Signal> expected = Arrays.asList(new Signal[]{Signal.HI, Signal.X, Signal.X,Signal.X,Signal.X,Signal.X,Signal.X,Signal.X, Signal.LO, Signal.LO});
assertEquals(expected, actual);

因为预期的结果是[1,X,X,X,X,X,X,X,0,0]

关于java - 字符串中的特殊字符[JAVA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com