2015-05-20 164 views
0

下面給出的是我的arduino腳本的輸出。我使用Java(Netbeans IDE)來計算下面一組值的步數。我將這組值存儲在緩衝區中。我只想用java提取時間和陀螺儀的x,y,z值。我記得有一種方法可以指向「時間」並添加索引號。但我對此不太確定,我該怎麼做?請幫助存儲在緩衝區從緩衝區中提取字符串

值:

左腿 時間(ms):676589

陀螺儀:-1.20,-1.38,-3.05

加速度計:-0.03,-0.12 ,-1.05

磁力計:0.35,0.32,-0.26

右腿

時間(ms):222875

陀螺儀:1.53,-0.46,-2.21

加速度:0.29,-0.69,0.63

磁力計:0.34,-0.31,-0.01

左腿

時間(ms):676710

陀螺儀:-1.37,-1.22,-3.15

加速度計:-0.03,-0.12,-1.05

磁力:0.35,0.32,-0.26 ....................... .......................

+1

Habe你試過什麼嗎? –

+1

什麼是「緩衝區?」這個緩衝區? http://docs.oracle.com/javase/7/docs/api/java/nio/Buffer.html – grill

+0

是的,我試圖使用「索引」功能和子字符串函數。但是每次運行代碼時索引號都會改變。因此,我需要一些其他函數來獲取「時間」和「陀螺儀」值,其中(inputStream.available()> 0)嘗試輸入數據的時間和「陀螺儀」值爲 – Aleesha

回答

0

您可以分割每個String和提取值,你需要:

String firstRow = "Left Leg Time(ms): 676589"; 
String secondRow = "Gyroscope : -1.20 , -1.38 , -3.05"; 

String[] firstRowParts = firstRow.split(" "); 
int time = Integer.parseInt(firstRowParts[3]); // 676589 
String[] secondRowParts = secondRow.split(" "); 
int x = Integer.parseInt(secondRowParts[2]);  // -1.20 
int y = Integer.parseInt(secondRowParts[4]);  // -1.38 
int z = Integer.parseInt(secondRowParts[6]);  // -3.05 
+0

String firstRow =「Left Leg Time(ms):676589」; String secondRow =「陀螺儀:-1.20,-1.38,-3。05「;問題是我有一組值每毫秒進來,我的最終目標是計算步數,這意味着每毫秒我的時間和x,y,z值是不同的。從緩衝區而不是聲明爲上述 – Aleesha

+0

謝謝...它幫助我了 – Aleesha

0

作出上述解決方案更一般, 我會做以下幾點:

int time = 0; 
int x = 0; 
int y = 0; 
int z = 0; 
String[] lines = buffer.split("\n") 
//you will have the lines here, assuming that you have the Buffer values in a string called buffer 
for(String string in lines){ 
    if (string.contains("Time")){ 
    String[] values = string.split(" "); 
    time = Integer.parseInt(values[1]); 
    } 
    if (string.contains("Gyroscope")){ 
    String[] values = string.split(" "); 
    x = Integer.parseInt(values[1]); 
    y = Integer.parseInt(values[2]); 
    z = Integer.parseInt(values[3]); 
    } 
} 

我沒有測試它,所以我希望它裏面沒有錯別字...

+0

謝謝,我會嘗試 – Aleesha