无法访问数组中的第3个元素

时间:2014-05-11 05:53:02

标签: java arrays parsing

我试图在串口读取字符串并将字符串中的逗号分隔值解析为数组。我似乎能够这样做,因为我可以读取串行数据并将数组记录下来。我还能够将数组的第一个元素存储到另一个变量中。尝试访问数组中的任何其他元素时出现问题。

import processing.serial.*;
Serial myPort;
String inString="";
PFont font;
int line = 0;

float kph = 0.00;
float distance = 0;


void setup() {
  size(300, 300); //size(1920, 1080);
  printArray(Serial.list());
  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);

  myPort.bufferUntil('\n');
  font = createFont(PFont.list()[6], 20);
  textFont(font);
}

void draw() {
  //The serialEvent controls the display
  logSerialData(inString);
  displayValues();
}  

void serialEvent(Serial myPort) {

  // read a byte from the serial port:
  String inString = myPort.readStringUntil('\n');
  // split the string into multiple strings
  // where there is a ","

  String[] items = split(inString, ',');

  kph = float(items[0]);  

  print(inString);
  print(items);
  println(items[2]); //processing falls down here: Error, disabling serialEvent() for COM8 null
  int size = items.length;
  println(size);
}

1 个答案:

答案 0 :(得分:1)

如果你得到的错误是

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: ...

这是因为你的数组没有items[2],这实际上是数组中的第三个元素。

在Java中,数组从零位开始。

所以第一项是items[0]

第二项是items[1]

您可以看到这些项目的示例

public class Test
{
    public static void main(String[] args)
    {
        String[] items ="a,b".split(",");
        for (int i = 0; i < items.length; i++)
        {
            System.out.println("The item in the position "+i+" has the value "+items[i]);
        }

    }
}