您正在获取字符串中的每个字符,并将其转换为另一个字符。但是,你根本没有把这些角色放在一起。StringBuilder
一种方法是使用类,但不一定是最有效的。该类被设计为可变的String
。
我不会写最里面的方法,但这里是一个开始。
public class ABTranslator {
public String translate(String before) {
StringBuilder b = new StringBuilder();
for (int i = 0, length = before.length(); i < length; i++) {
char a = before.charAt(i);
b.append(convert(a));
}
return b.toString();
}
public char convert(char before) {
// You write this.
}
}
您可以使用正则表达式代替if
上面的代码。
现在,编写一组 JUnit 测试来检查您的方法是否正确:
//In ABTranslatorTest.java
@Before
public void initTranslator() {
this.translator = new ABTranslator();
}
@Test
public void digitsAreConvertedToThemselves() {
Assert.assertEquals('3', translator.convert('3');
}
@Test
public void mostCharsAreConvertedToThemselves() {
Assert.assertEquals('X', translator.convert('X');
}
@Test
public void ABCAreConvertedToTwo() {
Assert.assertEquals('B', translator.convert('2');
}
@Test
public void WordsAreConvertedAsCharactersAre() {
Assert.assertEquals("222", translator.translate("AB2");
}
使所有这些工作。从您的同事那里了解如何设置 JUnit 4.11。请注意,我将所有方法都设置为非静态的。如果您没有这方面的经验,请编写一个 main 方法。不过,这应该是你唯一的static
方法。