3 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
此解決方案int使用函數(shù)將 s 轉(zhuǎn)換為字符串Integer.toString(int x)。
List<String> list = IntStream.rangeClosed(startOfRange, endOfRange)
.mapToObj(this::convert)
.collect(Collectors.toList());
System.out.println(list);
private String convert(int number) {
if (((number % 3) == 0) && ((number % 5) == 0)) {
return "FizzBuzz";
} else if ((number % 3) == 0) {
return "Fizz";
} else if ((number % 5) == 0) {
return "Buzz";
} else {
return Integer.toString(number);
}
}

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
這是一個(gè)流版本。它生成一個(gè)從 1 到 100 的封閉范圍,然后使用嵌套的三元運(yùn)算符將整數(shù)相應(yīng)地映射到適當(dāng)?shù)闹怠?/p>
List<String> list = IntStream.rangeClosed(1, 100).mapToObj(
n -> n % 15 == 0 ? "FizzBuzz"
: n % 3 == 0 ? "Fizz"
: n % 5 == 0 ? "Buzz"
: Integer.toString(n)).collect(
Collectors.toList());
System.out.println(list);

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
我會(huì)將所有值存儲(chǔ)到 aList<String>而不是泛型中,并利用Integer.toString()將迭代器轉(zhuǎn)換為 aString來(lái)存儲(chǔ)值。
在我的版本中,這個(gè)FizzBuzz類看起來(lái)像這樣:
private List<String> fizzBuzzList;
public FizzBuzz(int start, int end){
fizzBuzzList = new ArrayList<>();
this.populateFizzBuzz(start, end);
}
private void populateFizzBuzz(int start, int end){
for (int i = start ; i < end; 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(Integer.toString(i));
}
}
}
public void printFizzBuzz(){
for (String s : fizzBuzzList){
System.out.println(s);
}
}
我個(gè)人并沒(méi)有優(yōu)先使用 Java 8 流,我覺(jué)得它會(huì)使一個(gè)簡(jiǎn)單的問(wèn)題復(fù)雜化,并使它變得更加復(fù)雜。
您可以在您的main或任何靜態(tài)方法中使用它,如下所示:
FizzBuzz fb = new FizzBuzz(1, 101);
fb.printFizzBuzz();
請(qǐng)注意,101 是獨(dú)占的,而 1 是包含在內(nèi)的,因此這將從 1 迭代到 100。
添加回答
舉報(bào)