Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从串行端口对数据线进行排序_Java - Fatal编程技术网

Java 从串行端口对数据线进行排序

Java 从串行端口对数据线进行排序,java,Java,我有一个通过串口发送一串数据的程序 我希望将数据字符串排序到不同的数组中,以便显示它们或计算数字的平均值 数字之间用逗号分隔。第一个数字始终为0,不使用,与*之后的数字相同。 下一个数字定义逗号后的下一个数字 #0, 1,5.430, 4,-55.3, 5,6.60, 6,151.0, 51,5.500*16 #0, 1,5.440, 51,5.400*22 #0, 1,5.480, 4,-55.0, 5,6.50,

我有一个通过串口发送一串数据的程序

我希望将数据字符串排序到不同的数组中,以便显示它们或计算数字的平均值

数字之间用逗号分隔。第一个数字始终为0,不使用,与*之后的数字相同。 下一个数字定义逗号后的下一个数字

#0, 1,5.430, 4,-55.3, 5,6.60, 6,151.0, 51,5.500*16 #0, 1,5.440, 51,5.400*22 #0, 1,5.480, 4,-55.0, 5,6.50, 6,151.0*37 #0, 1,5.490, 4,-53.7, 5,6.70, 51,5.500*02 #0, 1,5.430, 4,-55.3, 5,6.60, 6,151.0, 51,5.500*16 #0, 1,5.440, 51,5.400*22 #0, 1,5.480, 4,-55.0, 5,6.50, 6,151.0*37 #0, 1,5.490, 4,-53.7, 5,6.70, 51,5.500*02 由于无法插入图片,我添加了[TAB]以显示不同的组不同的组,并添加了[TAB]

这些程序并不总是发送相同长度的行

数组“1”包含数字“5.430” 数组“4”包含数字“-55.3” 数组“5”包含数字“6.60”


依此类推。

假设您已经通过串行端口完成了整个通信,并且第二行是有效的数据集,我将使用
扫描仪将您的串行流包装起来,并将其结构如下:

String[] arrayAndValue;
int arrayToken;
double arrayValue;
Scanner serScanner = new Scanner(myInputStream);
serScanner.useDelimiter("[\\p{JavaWhiteSpace}+||\*dd]");   
While(serScanner.hasNext()) {
    scannedItem = serScanner.nextString;
    arrayAndValue=scannedItem.split(",");
    arrayToken =Integer.parseInt(arrayAndValue[0]);
    arrayValue =Double.parseDouble(arrayAndValue[1]; 
    //insert a switch statement here, 
    //based on the different values arrayToken could have
}
我所做的是使用
扫描器
类将
myInputStream
解析为成对的数组标记和值,
arrayToken
arrayValue
分别作为
字符串
,然后使用
*
模式将该字符串拆分为两个数字

这将产生一个长度为3的字符串数组,第一个数组包含
arrayToken
,第二个数组包含
arrayValue
,第三个数组是空字符串(由于后面的逗号而创建)

然后使用
Integer.parseInt
Double.parseDouble
调用来转换它们,然后将它们添加到
switch
语句中的相应数组中。
如果您不知道要接收的每种类型的确切数量,我建议您将项目输入到
ArrayLists
而不是
Arrays

您的意思是每个索引(1、4、5、6和51)都有一个数组吗?每行上的列是否总是用逗号和制表符分隔?字符串不是用制表符分隔的。我需要将1、4、5、6和51之后的数字放入不同的数组,以便能够在正确的位置显示它们。我可能需要修复用作分隔符的正则表达式。如果我有点生疏,请建议编辑。这似乎是一个很好的解决方案。我想我应该用HashMap来获取数据。ArrayList是个不错的选择。@flesk是的。Hashmap绝对是更好的选择。我通常创建自己的记录对象并将其放入arrayList,但在这里hashmap绝对是正确的选择。