【发布时间】:2021-02-24 09:10:35
【问题描述】:
我正在尝试解决 FizzBuzz 问题,并决定使用数组将前 15 个结果存储在数组中,然后对其进行迭代。但是如果在循环中稍后更新,存储在数组中的变量不会更新其值
import java.util.Scanner;
public class FizzBuzz {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc= new Scanner(System.in);
System.out.println("Enter the number");
int Num= sc.nextInt();
String F= "Fizz";
String B= "Buzz";
String FB= "FizzBuzz";
String I="";
String arr[]= {FB, I, I, F, I, B, I, I, I, F, B, I, F, I, I};
for (int j = 1; j <= Num; j++) {
I = Integer.toString(j);
System.out.println(arr[j%15]);
}
}
}
变量 I 不会在 for 循环中改变它的值。它只是在 I 变量的结果中打印空格。救命!
P.S:对于 naive soln,这是一个很好的实现吗?
【问题讨论】:
-
将某些内容重新分配给
I不会改变I的先前用途。除此之外:不知道该代码首先应该如何发出嘶嘶声。为什么你一开始就知道哪个值是 fizz、buzz 或 fizzbuzz!?这是废话。 -
重新分配变量
I不会影响数组中的元素。它们是单独的变量。 -
顺便说一句,元素 6 应该是嘶嘶声。
-
不,这是一个糟糕的解决方案,它不起作用,它假设先验知识 fizzbuzz 结果,变量命名错误,其中包含无效的 cmets,...类似于
public int getRandomNumber() { return 3; /* randomly choosen */ } -
@luk2302 公平地说,FizzBuzz 序列是周期性的,周期为 15,所以你绝对知道接下来会发生什么输出。
标签: java arrays string variables fizzbuzz