我有一个给定格式的输入流,它是在arduino编程软件中编码的。我使用Netbeans+JDK从串口读取。
左腿
时间(毫秒):14448
加速度计:-1.38,2.2,1.3
陀螺仪:1.0,-0.9,1.2
磁力计:-2,1,-1.2
我需要编写一个算法来计算步数,因此我只需要从上述输入流中提取加速度计 (x,y,z) 读数。下面给出的是代码。
while (inputStream.available() > 0) {
//int numBytes = inputStream.read(readBuffer);
char buffer = (char)inputStream.read();
this.bufferRx += buffer;
System.out.print(buffer);
}
如何才能仅从字符串缓冲区获取时间和加速度计 x、y、z 值并将其存储为 int 和 float 值?
最佳答案
普通的旧java:
BufferedReader br = new BufferedReader(new InputStreamReader(input, "ascii"));
for (String line; null != (line = br.readLine()); )
{
if (line.startsWith("Accelerometer:"))
{
String[] split = line.split("[:,]");
float x = Float.parseFloat(split[1]);
float y = Float.parseFloat(split[2]);
float z = Float.parseFloat(split[3]);
// do somehting with the data.
System.out.printf("%f,%f,%f\r\n",x,y,z);
}
}
享受 java 8 的乐趣:
Iterator<float[]> iterator =
new BufferedReader(new InputStreamReader(input, "ascii"))
.lines()
.filter(s -> s.startsWith("Accelerometer:"))
.map(s -> s.split("[:,]"))
.map(p -> new float[]{
Float.parseFloat(p[1]),
Float.parseFloat(p[2]),
Float.parseFloat(p[3]),
}).iterator();
while (iterator.hasNext())
{
float[] p = iterator.next();
System.out.printf("%f,%f,%f\r\n", p[0], p[1], p[2]);
}
关于java - 如何从缓冲区读取并存储为 int 和 float 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360202/