有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将通过Arduino串行发送的字符串转换为处理

我从Arduino发了一条线。 绳子看起来像这样

2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,1/ 

其中第一个数字是Arduino管脚,然后由一个角隔开,然后管脚状态1=高0=低

这里是引脚2=低,引脚3=低。。。。引脚13=高

当这个字符串开始处理时,我需要将字符串拆分,并将值分配给对应于管脚的变量

差不多

int p2=0; int p3=0; .. .. .. int pin8=1

实现这一目标的有效方法是什么

我在这里得到的信息就是我所做的

rawInput = "2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,1";
pinNumber = split(rawInput, '/');
for (int i =0; i < pinNumber.length; i++) {
  pinValue = split(pinNumber[i], ",");
  hm.put(Integer.parseInt(pinValue[0]), Integer.parseInt(pinValue[1]));
}

这里有什么明显的缺陷吗?看起来很有效


共 (1) 个答案

  1. # 1 楼答案

    除了存储为HashMap之外。可以通过",/"将字符串拆分为字符串数组。然后在你的模式中,偶数索引是你的管脚号,奇数索引是你的管脚值。一个循环可以很快实现这一点

    String str = "1,0/2,1"
    String[] strArr = str.split("/,");
    Map<String, Integer> storeMap = new HashMap(); 
    for (int i = 0, i < strArr.length; i++) {
        if (i % 2 == 0) {
            storeMap.put(String.valueOf(i), Integer.parseInt(strArr[i + 1]));
        }
    }