Java 将字符串传递给浮点数组?
嗨,我有一个数字串,想把它们放到一个浮点数组中,这样我就可以访问这些值了Java 将字符串传递给浮点数组?,java,android,arrays,nullpointerexception,Java,Android,Arrays,Nullpointerexception,嗨,我有一个数字串,想把它们放到一个浮点数组中,这样我就可以访问这些值了 // this bit works fine, data is split into string array. String fdata[] = data.split(","); Float array_f[] = new Float(fdata.length); // this is the bit which throws an error and causes my app to crash. for (int
// this bit works fine, data is split into string array.
String fdata[] = data.split(",");
Float array_f[] = new Float(fdata.length);
// this is the bit which throws an error and causes my app to crash.
for (int i = 0; i < fdata.length; i++){
float y = Float.parseFloat(fdata[i]);
array_f[i] = y;
}
//此位工作正常,数据被拆分为字符串数组。
字符串fdata[]=data.split(“,”);
浮点数组_f[]=新浮点(fdata.length);
//这是引发错误并导致我的应用程序崩溃的位。
对于(int i=0;i
这个错误是一个错误
java nullpointerexception:尝试调用虚拟方法
空对象上的java.lang.string java.lang.split(java.lang.string)
参考资料
谢谢
除此之外,我想我还需要进一步解释,所以我提供了更多的代码来说明我要做什么
String data; //does this need to define the number of bytes needed then?
start_Acq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
channel_a = String.valueOf(channel_Acq.getSelectedItem());
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
connection.start_acquisition(channel_a);
data = connection.start_acquisition(channel_a);
connection.stop_acquisition();
}catch (Exception e ){
e.printStackTrace();
}
}
});thread.start();
data_recived.setText(data);
String fdata[] = data.split(",");
Float array_f[] = new Float[fdata.length];
for(int i = 0; i<fdata.length; i++){
float y = Float.parseFloat(fdata[i]);
array_f[i] = y;
}
}
});
字符串数据//这是否需要定义所需的字节数?
start_Acq.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
channel_a=String.valueOf(channel_Acq.getSelectedItem());
Thread Thread=新线程(new Runnable(){
@凌驾
公开募捐{
试一试{
连接。启动采集(通道a);
数据=连接。启动采集(通道a);
连接。停止采集();
}捕获(例外e){
e、 printStackTrace();
}
}
});thread.start();
数据接收。设置文本(数据);
字符串fdata[]=data.split(“,”);
浮点数组_f[]=新浮点[fdata.length];
对于(int i=0;i首先,数据
为空;修复它并按此进行尝试
float y = java.lang.Float.parseFloat(fdata[i]);
您的阵列初始化错误,应该是这样的
Float array_f[] = new Float[fdata.length];
长度之后应该有分号,而不是“,”
for (int i=0; i<fdata.length;i++){
对于(int i=0;i使用此
获取字符串数组到字符串,然后转换浮点
然后添加浮点数组代码的问题是初始化,您所要做的就是使用基本浮点而不是浮点:
String data = "123,5468,1,25,36";
String fdata[] = data.split(",");
float array_f[] = new float[fdata.length];
for (int i = 0; i < fdata.length; i++){
array_f[i] = Float.parseFloat(fdata[i]);
System.out.println(array_f[i]);
}
String data=“1235468,1,25,36”;
字符串fdata[]=data.split(“,”);
浮点数组_f[]=新浮点[fdata.length];
对于(int i=0;i
数据为空,您需要检查原因……您不能拆分空字符串:)在第一行,你的数据是空的。可能重复使用这个@BatuhanCoskun。我不明白的是它怎么可能是空的,值数据有存储值,我可以用任何值(如1)启动数据变量来定义一个内存位置吗?字符串有大约16384 x32字节的数据。我真的不知道该怎么做做haha@llyasse我只是把自己弄糊涂了,我想,我还在学习。我已经更新了我的问题,但是用我的全局变量数据来说,初始化时,我必须用分配给它的空间量来定义它,以便它接收数据。因为它需要存储32 x 16384字节。不,你不必指定空间量,但你需要e确保数据存储在“数据”中变量,正如错误显示的那样,您正在尝试对空对象进行拆分!@llyasse我认为问题在于程序正在加快速度以完成上一步,例如,它正在尝试拆分数据变量,而它仍在从DAQ获取数据变量。当添加断点并一次执行一步时,它可以工作好的。任何建议都可以。是的,我认为您应该在thread.start()之后添加thread.join()。join调用将等待线程终止后再返回。是的,它现在可以工作,不会传递空字符串。谢谢您的帮助
for(int i=0;stringarray.length>i;i++){float_var = Float.valueOf(string_array.get(i)); float_array.add(float_var);}
String data = "123,5468,1,25,36";
String fdata[] = data.split(",");
float array_f[] = new float[fdata.length];
for (int i = 0; i < fdata.length; i++){
array_f[i] = Float.parseFloat(fdata[i]);
System.out.println(array_f[i]);
}