请在不改变结构的情况下纠正上传的代码 class Solution { public List<String> fizzBuzz(int n) { int i = n; List<String> bin = new ArrayList<>(); while(i<=n){ i % 15 == 0 ?bin.add("FizzBuzz"):i%3==0?bin.add("Fizz"):i%5==0?bin.add("Buzz"):bin.add(i);++i;} return bin; } }
时间: 2024-03-21 07:41:43 浏览: 14
这段代码存在几个问题:
1. 循环条件 `i<=n` 应该改为 `i>=1`,否则循环不会执行。
2. 在添加元素到列表 `bin` 时,应该将整数 `i` 先转换为字符串,再添加到列表中。
下面是修改后的代码:
```
class Solution {
public List<String> fizzBuzz(int n) {
int i = 1;
List<String> bin = new ArrayList<>();
while(i <= n){
if(i % 15 == 0) {
bin.add("FizzBuzz");
} else if(i % 3 == 0) {
bin.add("Fizz");
} else if(i % 5 == 0) {
bin.add("Buzz");
} else {
bin.add(Integer.toString(i));
}
++i;
}
return bin;
}
}
```
这样就可以正确地生成 FizzBuzz 数列了。
相关问题
class Solution { public List<String> fizzBuzz(int n) { int i = n; List<String> bin = new ArrayList<>(); while(i>0){i = i % 3 == 0 ? i % 5 == 0 ? bin[i]+="Buzz":bin[i]+="Fizz":bin[i]+=i;--i;} return bin; } }
这段代码有一些语法错误,我帮您修正一下:
```java
class Solution {
public List<String> fizzBuzz(int n) {
List<String> bin = new ArrayList<>();
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 5 == 0) {
bin.add("FizzBuzz");
} else if (i % 3 == 0) {
bin.add("Fizz");
} else if (i % 5 == 0) {
bin.add("Buzz");
} else {
bin.add(String.valueOf(i));
}
}
return bin;
}
}
```
这段代码的功能是生成一个长度为n的List,其中第i个元素的值根据i的值进行生成:
- 如果i可以被3整除,则为"Fizz"
- 如果i可以被5整除,则为"Buzz"
- 如果i既可以被3整除,又可以被5整除,则为"FizzBuzz"
- 否则为i的字符串形式。
例如,当n为15时,返回的List应为:
```
["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
```
把上面的代码修改成0到n
以下是修改后的代码:
```
n = int(input("请输入一个正整数:"))
for i in range(n+1):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
```
这个程序会输出从0到n的所有数字,其中如果数字是3的倍数就输出Fizz,如果是5的倍数就输出Buzz,如果既是3的倍数又是5的倍数就输出FizzBuzz。如果数字既不是3的倍数也不是5的倍数,就输出该数字本身。