gpt4 book ai didi

java - 有时 ArrayIndexOutOfBoundsException,有时代码运行完美?

转载 作者:行者123 更新时间:2023-12-02 04:51:44 26 4
gpt4 key购买 nike

我正在尝试测试 Arduino 音频可视化工具,但是当我运行 Java 可视化工具 10 次中有 9 次时,我得到了 ArrayIndexOutOfBoundsException,而其他时候它运行得很好。 ArrayIndexOutOfBoundsException:数字每次在 0 到 32 之间变化。

我考虑为 ArrayIndexOutOfBoundsException 添加第二个 catch 语句,但这感觉就像在更大的问题上贴了创可贴。

void draw()
{
String tempC = myPort.readStringUntil('\n');
if (tempC != null)
{
String[] items = tempC.replaceAll("\\[", "").replaceAll("\\]",
"").replaceAll("\\s", "").split(",");

int[] data = new int[32];

for (int i = 0; i < 32; i++)
{
try {
data[i] = Integer.parseInt(items[i]);
}
catch (NumberFormatException nfe) {};
}
background(123);
rect (20,300,10,-(data[0]));
rect (40,300,10,-(data[1]));
rect (60,300,10,-(data[2]));

此代码应从串行端口接收一个字符串(始终包含 32 个数字),如下所示:160,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,10,10,0, 0,0,0,0,0,10,10并将该字符串转换为一个名为 data 的大小为 32 (data[32]) 的数组,其中数组中的每个项目都是由“,”分隔的数字之一。然后代码将创建高度等于数据大小的矩形。当我运行此代码时,我收到错误消息ArrayIndexOutOfBoundsException:然后是 0 - 32 范围内的某个数字。非常感谢任何帮助。

最佳答案

您的item array 并不总是有 32 个值,这就是它有时抛出错误有时不抛出错误的原因。最好的方法是初始化 data精确长度为items ,然后根据 items 中的元素数量进行循环数组。

int[] data = new int[items.length];

for (int i = 0; i < items.length ; i++){
try {
data[i] = Integer.parseInt(items[i]);
}
catch (NumberFormatException nfe) {};
}

关于java - 有时 ArrayIndexOutOfBoundsException,有时代码运行完美?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56433751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com