Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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_Android - Fatal编程技术网

Java 如何转换列表<;字符串>;列出<;浮动>;安卓

Java 如何转换列表<;字符串>;列出<;浮动>;安卓,java,android,Java,Android,有没有一种简单的方法可以将列表类型从String改为Float,并将其应用于其他列表?而不会使代码变得复杂。我曾经使用Python,所以android和java语法让我搞砸了很多事情 我得到了一个csv文件,其中第一列包含字符串值,其余列包含浮点值。当我调用list.get(value\u id)时,我想从列表中以浮点形式获取数据 代码如下: package com.example.nick.calcy; import android.content.Intent; import androi

有没有一种简单的方法可以将列表类型从String改为Float,并将其应用于其他列表?而不会使代码变得复杂。我曾经使用Python,所以android和java语法让我搞砸了很多事情

我得到了一个csv文件,其中第一列包含字符串值,其余列包含浮点值。当我调用list.get(value\u id)时,我想从列表中以浮点形式获取数据

代码如下:

package com.example.nick.calcy;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Mix extends AppCompatActivity {
InputStream inputStream;
List<String> komponenty,em,bi,ws,ca,fs,na,L,M = new ArrayList<>();
String[] ids;
EditText et1,et2,et3,et4,et5,et6,et7;
Float sum;
Button buttonSum;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mix);

    et1 = findViewById(R.id.editText11);

    et2 = findViewById(R.id.editText12);

    et3 = findViewById(R.id.editText13);

    et4 = findViewById(R.id.editText14);

    et5 = findViewById(R.id.editText15);

    et6 = findViewById(R.id.editText16);

    et7 = findViewById(R.id.editText17);

    buttonSum = findViewById(R.id.button11);


    /**Loading the input file*/
    inputStream = getResources().openRawResource(R.raw.brojler);

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while ((csvLine = reader.readLine()) != null) {

            ids=csvLine.split(",");
            try{
                komponenty.add(ids[0]);
                em.add(ids[1]);
                bi.add(ids[2]);
                ws.add(ids[3]);
                ca.add(ids[4]);
                fs.add(ids[5]);
                na.add(ids[6]);
                L.add(ids[7]);
                M.add(ids[8]);

            }catch (Exception e){
                Log.e("Unknown error",e.toString());
            }
        }

    }
    catch (IOException ex) {
        throw new RuntimeException("Error in reading CSV file: "+ex);
    }

    /** button activity*/
    buttonSum.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            if(et1.getText().toString().trim().length() == 0 || 
                    et2.getText().toString().trim().length() == 0 || 
                    et3.getText().toString().trim().length() == 0 || 
                    et4.getText().toString().trim().length() == 0 || 
                    et5.getText().toString().trim().length() == 0 || 
                    et6.getText().toString().trim().length() == 0 || 
                    et7.getText().toString().trim().length() == 0) {
                CharSequence text = "Blank fields detected";
                Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
            }
            else{
            Intent i = new Intent(getApplicationContext(),Summary.class);
            Float x1 = Float.parseFloat(et1.getText().toString());
            Float x2 = Float.parseFloat(et2.getText().toString());
            Float x3 = Float.parseFloat(et3.getText().toString());
            Float x4 = Float.parseFloat(et4.getText().toString());
            Float x5 = Float.parseFloat(et5.getText().toString());
            Float x6 = Float.parseFloat(et6.getText().toString());
            Float x7 = Float.parseFloat(et7.getText().toString());

            sum = x1+x2+x3+x4+x5+x6+x7;

            i.putExtra("x1", x1);
            i.putExtra("x2", x2);
            i.putExtra("x3", x3);
            i.putExtra("x4", x4);
            i.putExtra("x5", x5);
            i.putExtra("x6", x6);
            i.putExtra("x7", x7);

            if (sum == 100){
                startActivity(i);
            } else{
                CharSequence text = "Sum must equal 100%";
                Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
            }
        }}
    });
}
}
然后将其添加到准备好的列表中,但我弄乱了数据类型

第二个想法是编写一个函数,它将根据列表的id简单地转换列表中单个值的数据类型

private Float getFloat(List list, int id)
{
 Object value;
 String step2;
 Float changed;
 value = list.get(id);
 step2 = value.toString();
 changed = Float.parseFloat(step2);
 return changed;
}
很遗憾,我的应用程序在使用时崩溃了

09-03 17:42:39.166 18888-18888/com.example.nick.calcy E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
@编辑 事实上,我发现了一个问题,我没有正确填写列表,试图解决这个问题

@编辑2 我无法从原始文件夹获取数据,调试器显示:

E/Unknown error: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
E/Unknown error: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
E/Unknown error: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
I/chatty: uid=10083(u0_a83) com.example.nick.calcy expire 8 lines
E/Unknown error: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
现在就用那个代码

package com.example.nick.calcy;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Mix extends AppCompatActivity {
    InputStream inputStream;
    List<String> komponenty = new ArrayList<String>();
    List<String> em = new ArrayList<String>();
    String[] ids;
    EditText et1,et2,et3,et4,et5,et6,et7;
    Float sum,x11;
    Button buttonSum;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mix);
    et1 = findViewById(R.id.editText11);
    et2 = findViewById(R.id.editText12);
    et3 = findViewById(R.id.editText13);
    et4 = findViewById(R.id.editText14);
    et5 = findViewById(R.id.editText15);
    et6 = findViewById(R.id.editText16);
    et7 = findViewById(R.id.editText17);
    buttonSum = findViewById(R.id.button11);
    inputStream = getResources().openRawResource(R.raw.brojler);
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while ((csvLine = reader.readLine()) != null)
        {
            ids=csvLine.split(",");
            try{
                komponenty.add(ids[0]);
                em.add(ids[1]);

            }
            catch (Exception e){
                Log.e("Unknown error",e.toString());
            }
        }

    }
    catch (IOException ex) {
        throw new RuntimeException("Error in reading CSV file: "+ex);
    }

    /** button activity*/
    buttonSum.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            if(et1.getText().toString().trim().length() == 0 ||
                    et2.getText().toString().trim().length() == 0 ||
                    et3.getText().toString().trim().length() == 0 ||
                    et4.getText().toString().trim().length() == 0 ||
                    et5.getText().toString().trim().length() == 0 ||
                    et6.getText().toString().trim().length() == 0 ||
                    et7.getText().toString().trim().length() == 0) {
                CharSequence text = "Blank fields detected";
                Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
            }
            else{
            Intent i = new Intent(getApplicationContext(),Summary.class);
            Float x1 = Float.parseFloat(et1.getText().toString());
            Float x2 = Float.parseFloat(et2.getText().toString());
            Float x3 = Float.parseFloat(et3.getText().toString());
            Float x4 = Float.parseFloat(et4.getText().toString());
            Float x5 = Float.parseFloat(et5.getText().toString());
            Float x6 = Float.parseFloat(et6.getText().toString());
            Float x7 = Float.parseFloat(et7.getText().toString());

            sum = x1+x2+x3+x4+x5+x6+x7;
            x11 = 100*getFloat(em,0);

            i.putExtra("x1", x1);
            i.putExtra("x2", x2);
            i.putExtra("x3", x3);
            i.putExtra("x4", x4);
            i.putExtra("x5", x5);
            i.putExtra("x6", x6);
            i.putExtra("x7", x7);

            if (sum == 100){
                startActivity(i);
            } else{
                CharSequence text1 = "Sum must equal 100%";
                Toast.makeText(getApplicationContext(), text1, Toast.LENGTH_LONG).show();
            }
        }}
    });
}
private Float getFloat(List<String> list, int id)
{
 String value = list.get(id);
 return Float.parseFloat(value);
}
}
package com.example.nick.calcy;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.List;
公共类混合扩展了AppCompative活动{
输入流输入流;
List komponenty=new ArrayList();
List em=new ArrayList();
字符串[]id;
编辑文本et1、et2、et3、et4、et5、et6、et7;
浮动和,x11;
按钮按钮;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mix);
et1=findViewById(R.id.editText11);
et2=findViewById(R.id.editText12);
et3=findViewById(R.id.editText13);
et4=findViewById(R.id.editText14);
et5=findViewById(R.id.editText15);
et6=findViewById(R.id.editText16);
et7=findViewById(R.id.editText17);
buttonSum=findViewById(R.id.button11);
inputStream=getResources().openRawResource(R.raw.brojler);
BufferedReader reader=新的BufferedReader(新的InputStreamReader(inputStream));
试一试{
弦线;
而((csvLine=reader.readLine())!=null)
{
ids=csvLine.split(“,”);
试一试{
komponenty.add(id[0]);
em.add(id[1]);
}
捕获(例外e){
Log.e(“未知错误”,例如toString());
}
}
}
捕获(IOEX异常){
抛出新的RuntimeException(“读取CSV文件时出错:“+ex”);
}
/**按钮活动*/
buttonSum.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
if(et1.getText().toString().trim().length()==0||
et2.getText().toString().trim().length()=0||
et3.getText().toString().trim().length()=0||
et4.getText().toString().trim().length()=0||
et5.getText().toString().trim().length()=0||
et6.getText().toString().trim().length()=0||
et7.getText().toString().trim().length()=0){
CharSequence text=“检测到空白字段”;
Toast.makeText(getApplicationContext(),text,Toast.LENGTH_LONG.show();
}
否则{
Intent i=新的Intent(getApplicationContext(),Summary.class);
Float x1=Float.parseFloat(et1.getText().toString());
Float x2=Float.parseFloat(et2.getText().toString());
Float x3=Float.parseFloat(et3.getText().toString());
Float x4=Float.parseFloat(et4.getText().toString());
Float x5=Float.parseFloat(et5.getText().toString());
Float x6=Float.parseFloat(et6.getText().toString());
Float x7=Float.parseFloat(et7.getText().toString());
总和=x1+x2+x3+x4+x5+x6+x7;
x11=100*getFloat(em,0);
i、 putExtra(“x1”,x1);
i、 putExtra(“x2”,x2);
i、 putExtra(“x3”,x3);
i、 putExtra(“x4”,x4);
i、 putExtra(“x5”,x5);
i、 putExtra(“x6”,x6);
i、 putExtra(“x7”,x7);
如果(总和=100){
星触觉(i);
}否则{
CharSequence text1=“总和必须等于100%”;
Toast.makeText(getApplicationContext(),text1,Toast.LENGTH_LONG.show();
}
}}
});
}
私有浮点getFloat(列表,int-id)
{
字符串值=list.get(id);
返回Float.parseFloat(值);
}
}

通常有更优雅的解决方案,但作为一个快速解决方案,您可以将功能更改为:

private Float getSum(List<String> list)
{
    Float sum = 0f;
    if (!list.isEmpty() && list.size() > 1) {
        for (int i = 1; i < list.size(); i++) {
            sum+= Float.parseFloat(list.get(i));
        }
    }
    return sum;
}
private Float getSum(列表)
{
浮点数和=0f;
如果(!list.isEmpty()&&list.size()>1){
对于(int i=1;i
试试这个: 循环浏览
列表
并将每个项转换为浮点,然后将其添加到
列表

我编写了这个函数,它接受
List
并返回
List
。 我希望它对你有用

List<Float> getList(List<String> stringList)
{
    List<Float> floatList = new ArrayList<>();

    for (int i = 0; i < stringList.size(); i++)
    {
        Float number = Float.valueOf(stringList.get(i));
        floatList.add(number);
    }

    return floatList;
}
List-getList(List-stringList)
{
List floatList=new ArrayList();
对于(int i=0;i
然后,像这样调用函数:

List<Float> floats = getList(strings);
List floats=getList(字符串);

这就是您所需要的全部:

   private List<Float> getList(List<String> stringList)
    {
        List<Float> floatList = new ArrayList<>();

        for (int i = 0; i < stringList.size(); i++)
        {
            Float number = Float.valueOf(stringList.get(i));
            floatList.add(number);
        }

        return floatList;
    }
private List getList(List stringList)
{
List floatList=new ArrayList();
对于(int i=0;i
Float.parseFloat(cs
   private List<Float> getList(List<String> stringList)
    {
        List<Float> floatList = new ArrayList<>();

        for (int i = 0; i < stringList.size(); i++)
        {
            Float number = Float.valueOf(stringList.get(i));
            floatList.add(number);
        }

        return floatList;
    }