gpt4 book ai didi

java - inputStream无法获取csv文件android

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:49 24 4
gpt4 key购买 nike

我在 Android 上加载 csv 文件花了 3 天的时间。我已经创建了 raw 文件夹并向其中添加了 brojler.csv 文件。但是,每次我尝试加载它时,都会收到 NullPointerException 错误。我尝试自己阅读并解决它,但基于这个主题( What is a NullPointerException, and how do I fix it? )我找不到原因。我是android的新手,但是,我认为所有变量都已经定义好了。奇怪的是,在另一个应用程序中,相同的代码可以工作并正确加载文件。

Brojler.csv 有 9 列和 12 行。

此外,我更改了声明列表的方式,如下所示,但没有成功

List<String> ingredients = new ArrayList<>();
List<String> em = new ArrayList<>();
List<String> bo = new ArrayList<>();
And so on,

我的代码:

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> ingredients,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);

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{
ingredients.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);
}


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

我的错误:

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 identical 1 line
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 7 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

我认为问题可能在于文件的访问级别。在一个工作应用程序中,我使用 main_activity 中的代码,而在另一个应用程序中它失败了,因为它是在另一个(非主) Activity 中调用的。

非常感谢您的帮助

最佳答案

NullPointerException 告诉您某些内容为 null。即它没有引用有效的实例。

从表面上看,您需要初始化列表。我没有看到你在哪里初始化它们。我还发现奇怪的是,Android Studio lint 没有警告您可能存在 null 变量(假设您正在使用该变量)。

好的,这是:

List<String> ingredients = new ArrayList<>(),
em = new ArrayList<>(),
bi = new ArrayList<>(),
ws = new ArrayList<>(),
ca = new ArrayList<>(),
fs = new ArrayList<>(),
na = new ArrayList<>(),
L = new ArrayList<>(),
M = new ArrayList<>();

此外,检查行是否包含预期的列数;也就是说,检查 ids 数组是否包含您需要的所有元素,除非您确定所有行都包含。

此外,我很确定有更好的方法来完成您正在做的事情。如果您可以控制数据,您还可以考虑使用 Gson/JSON。

关于java - inputStream无法获取csv文件android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com