我被要求进行经典的 FizzBuzz 测试。但是,该问题还有一项额外任务,即在 ArrayList 中显示结果。我知道您不能将一个整数和一个字符串值放在一个列表中。因此,这给我带来了问题。
我已经尝试将从循环中获得的数字转换为字符串,但是它变得太复杂了,我想也许我把事情复杂化了。或者,也许我做错了什么,因为如此简单的任务如此耗时。
下面我包含了我尝试过的最新代码和我得到的指导意见。
实现将获取列表范围并解析值以解决 FizzBuzz 问题的循环。
您需要在循环内将成功值添加到私有类变量“私有列表范围”。
例如,while 循环 3 将等于应该添加到 fizzBuzzList 中的 fizz。
下面设置了两个私有变量,用于保存列表和 FizzBuzz 列表。
public class FizzBuzz {
private List range;
private List fizzBuzzList = new ArrayList();
public FizzBuzz(int startOfRange, int endOfRange){
range = IntStream.rangeClosed(startOfRange, endOfRange).boxed().collect(Collectors.toList());
fizzBuzzIterator(range);
}
public void fizzBuzzIterator(List range){
for (int i = 1 ; i < range.size(); i++) {
if (((i % 3) == 0) && ((i % 5) == 0)) {
fizzBuzzList.add("FizzBuzz");
}
else if ((i % 3) == 0) {
fizzBuzzList.add("Fizz");
}
else if ((i % 5) == 0) {
fizzBuzzList.add("Buzz");
}
else {
fizzBuzzList.add(i);
}
}
}
public List getFizzBuzzList() {
return fizzBuzzList;
}
}
下面是我应该测试结果的测试代码。
public class FizzbuzzTests {
FizzBuzz fizzBuzz = new FizzBuzz(1,16);
@Test
public void fizzBuzzIteratorTest(){
List<String> minFizzBuzzList = List.of("1","2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz");
Assert.assertEquals(fizzBuzz.getFizzBuzzList(), minFizzBuzzList);
}
}
显示的预期结果应该采用 [1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz] 等格式。上面写的代码以相同的格式给出了结果,但是,区别在于一个使用“java.util.ArrayList”而另一个使用“java.util.ImmutableCollections$ListN”,因此这给了我一个错误。
一段时间以来,我一直在尝试解决这个问题,但我已经没有什么想法可以尝试了。任何建议都会很有帮助和赞赏。谢谢。
芜湖不芜
红颜莎娜
千巷猫影
相关分类