arraylist中的java FizzBuzz解决方案
我要做的是经典的FizzBuzz测试。然而,这个问题还有一个额外的任务,就是在ArrayList中显示结果。我知道你不能把整数和字符串值放在一个列表中。因此,这给我带来了麻烦
我曾尝试将从循环中得到的数字转换成字符串,然而,它变得太复杂了,我想可能是我把事情复杂化了。或者也许我做错了什么,因为像这样的简单任务如此耗时
下面是我尝试过的最新代码和收到的指导意见
- 实现一个循环,该循环将获取列表范围并解析值以解决FizzBuzz问题李>
- 您需要在循环中向私有类变量“Private List range”添加一个成功的值李>
- 例如,虽然循环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”,因此这给了我一个错误
我一直在努力解决这个问题,现在我已经没有办法尝试了。任何建议都会很有帮助,我们将不胜感激。谢谢
# 1 楼答案
此解决方案使用
Integer.toString(int x)
函数将int
转换为字符串