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]);
}