xix0xix 2020-01-26 22:09 采纳率: 0%
浏览 642

String index out of range: - 1输入读取问题?

小弟用processing做了一个有通讯功能的GUI介面,通讯模块接收到资料后,由TTL串口转USB传到计算机来,最后显示在UI上。引用了controlP5(GUI)与processing.serial(串口通讯)两个函式库。

现在的问题是想透过计算机再回传讯息到通讯模块,原本设定输入AT+HELP=1后会在UI上显示一些资讯,结果编程器却故障并收到错误"String index out of range: - 1"。上网看了一些帖子有提到字符串读取相关的问题,但是改了改还是出错,在这边因为代码有些太多就不全放了,只放我认为跟问题相关的部分,麻烦大佬们解惑了...

void controlEvent(ControlEvent field) {      //
  String tmp = field.getStringValue();
  char x = tmp.charAt(tmp.length()-1);
  if(tmp.indexOf(x)==-1){
    println("nope..");
    print(tmp.substring(0, tmp.lastIndexOf(x)));
    return;
  }
  else{
    if(field.getName() == "send_back_APRS")
      APORT.write(tmp + "\n");
    else if(field.getName() == "send_back_TT&C")
      TPORT.write(tmp);
    else if(field.getName() == "send_back_PM2.5")
      PPORT.write(tmp);
    else
      print("retransmitting failed!");
  }
}
  • 写回答

1条回答 默认 最新

  • 花匠小林 2020-01-28 21:31
    关注

    报错的地方在这里:

    if(tmp.indexOf(x)==-1){
        println("nope..");
        print(tmp.substring(0, tmp.lastIndexOf(x)));
        return;
    }
    

    tmp.lastIndexOf(x)的值是-1,所以这里会报错。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!