所以我试图通过更改String ArrayList并在将上述ArrayList转换为String数组后返回字符串数组来解决Java中的FizzBuzz问题。
这是我到目前为止的内容:
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()方法的原因,这就是为什么对于我做错的事情感到困惑。
任何帮助,将不胜感激,谢谢。
问题是,在您的数字3输入%3和if%之后,它还会为%3和%5输入单独的if,并且它将基本上检查“ FizzBuzz”转换为整数是否为%3。
解决方案是将if(%3)和if(%5)转换为else if(%3)和else if(%5)
这是因为在将3更改为“ Fizz”之后,这将引发错误-> Integer.parseInt(“ Fizz”)
希望这可以帮助。
查看您的堆栈跟踪。它说问题出在第23行。
再次查看您的堆栈跟踪。它说抛出了NumberFormatException。意思是,您试图将某些文本转换为数字,但是该文本不是有效数字。
我建议您在第23行中设置一个断点并进行检查。