Java 通过将 ArrayList 转换为数组问题来解决 FizzBuzz 问题



所以我试图通过更改字符串数组列表来解决 Java 中的 FizzBuzz 问题,然后在将上述 ArrayList 转换为字符串数组后返回一个字符串数组

这是我到目前为止所拥有的:

import java.util.ArrayList;
public class FizzBuzz 
{
public static void main(String args[])
{
ArrayList<String> arrList = new ArrayList<String>();
for (int i = 1; i<=100; i++)
{
arrList.add(String.valueOf(i));
}
for (int i = 0; i <arrList.size(); i++)
{
if (Integer.parseInt(arrList.get(i)) % 3 == 0 && Integer.parseInt(arrList.get(i)) % 5 == 0)
{
arrList.set(i, "FizzBuzz");
}
if (Integer.parseInt(arrList.get(i)) % 3 == 0)
{
arrList.set(i, "Fizz");
}
if (Integer.parseInt(arrList.get(i)) % 5 == 0)
{
arrList.set(i, "Buzz");
}   
}
String[] arr = arrList.toArray(new String[arrList.size()]);
System.out.println(arr);
}
}

它给我的错误指出:

"Fizz"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at FizzBuzz.main(FizzBuzz.java:23)

我知道此错误与无法检查 arrayList 中的字符串元素是否是 3,5 等的倍数有关,但这就是我使用 Integer.parseInt(( 方法的原因,这就是为什么我对我做错了什么感到困惑。

任何帮助将不胜感激,谢谢。

import java.util.ArrayList;
public class FizzBuzz 
{
public static void main(String args[])
{
ArrayList<String> arrList = new ArrayList<String>();
for (int i = 1; i<=100; i++)
{
arrList.add(String.valueOf(i));
}
//problem lies with all the if statements change them to if-else
for (int i = 0; i <arrList.size(); i++)
{
if (Integer.parseInt(arrList.get(i)) % 3 == 0 && Integer.parseInt(arrList.get(i)) % 5 == 0)
{
arrList.set(i, "FizzBuzz");
}
if (Integer.parseInt(arrList.get(i)) % 3 == 0)
{
arrList.set(i, "Fizz");
}
if (Integer.parseInt(arrList.get(i)) % 5 == 0)
{
arrList.set(i, "Buzz");
}   
}
//this will print the list
arrList.stream().forEach(x -> System.out.println(x));
}
}

这是因为在将 3 更改为"Fizz"后,这将抛出错误 -> Integer.parseInt("Fizz"(。 我添加了一个评论,将 if 更改为 if-else。

希望这有帮助。

上帝创造了else...

您应该这样做,以便在if命中时,它后面的if不会运行。否则,他们会尝试将新替换的字符串解析为数字。实际上:在第二个和第三个if前面写一个else

问题是,在你的数字 3 输入 if %3 之后,如果 %5 它也为 %3 和 %5 输入单独的 if,它基本上会检查转换为整数的"FizzBuzz"是否为 %3。

解决方案是将 if (%3( 和 if (%5( 转换为 else if (%3( 和 else if (%5(

最新更新