Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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中的CSV文件中提取值_Java_Android_Csv - Fatal编程技术网

从java中的CSV文件中提取值

从java中的CSV文件中提取值,java,android,csv,Java,Android,Csv,我在从我正在开发的android应用程序的CSV文件中提取值时遇到一些问题。CSV文件采用以下格式: Acton Town (District),Acton Town (Piccadilly),2.00 Aldgate (Circle),Aldgate (Metropolitan),4.00 Aldgate East (District),Aldgate East (Hammersmith And City),2.00 我尝试使用以下方法将其导入java类: public ArrayList&

我在从我正在开发的android应用程序的CSV文件中提取值时遇到一些问题。CSV文件采用以下格式:

Acton Town (District),Acton Town (Piccadilly),2.00
Aldgate (Circle),Aldgate (Metropolitan),4.00
Aldgate East (District),Aldgate East (Hammersmith And City),2.00
我尝试使用以下方法将其导入java类:

public ArrayList<Connection> importConnections(){
        try 
        {
            //gets the lines.txt file from assets
            in = this.getAssets().open("connections.csv");
            Scanner scan = new Scanner(in);
            TextView lineData = (TextView)findViewById(R.id.displayLine);
            String connection = null;
            String startingStation = null;
            String endingStation = null;
            Float duration = 0;
            do
            {
                connection = scan.nextLine();
                String delimiter = ",\n";
                StringTokenizer tokens = new StringTokenizer(connection, delimiter);
                startingStation = tokens.nextToken();
                endingStation = tokens.nextToken();
                duration = Float.parseFloat(tokens.nextToken());
                connections.add(startStation, endStation, duration);
            }
            while(scan.hasNext());
            //for testing purposes
            lineData.setText(endingStation);
        } 
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return connections;
    }
如果我把这个评论删掉

duration=Float.parseFloat(tokens.nextToken())


它将运行该方法。有人能找到这种方法的任何错误吗?

您可以尝试使用OpenCSV

它使用起来非常简单,并返回每行的数组

CSVReader reader = new CSVReader(new FileReader(<filepath>));

String[] temp;
int NUM = #; //number of rows in csv, or insert code to read through file until null.

for(int i = 0; i < NUM; i++)
{               
    temp = reader.readNext();               //read next line into temp
}

System.out.println(temp[0]); //Acton Town (District)
System.out.println(temp[1]); //Acton Town (Piccadilly)
System.out.println(temp[2]); //2.00 (string)


reader.close();
CSVReader reader=new CSVReader(new FileReader());
字符串[]温度;
int NUM=#//csv中的行数,或插入代码以读取文件直至为空。
for(int i=0;i

就像我说的,它很容易使用,并且可以防止您自己解析字符串。

您可以尝试使用OpenCSV

它使用起来非常简单,并返回每行的数组

CSVReader reader = new CSVReader(new FileReader(<filepath>));

String[] temp;
int NUM = #; //number of rows in csv, or insert code to read through file until null.

for(int i = 0; i < NUM; i++)
{               
    temp = reader.readNext();               //read next line into temp
}

System.out.println(temp[0]); //Acton Town (District)
System.out.println(temp[1]); //Acton Town (Piccadilly)
System.out.println(temp[2]); //2.00 (string)


reader.close();
CSVReader reader=new CSVReader(new FileReader());
字符串[]温度;
int NUM=#//csv中的行数,或插入代码以读取文件直至为空。
for(int i=0;i

正如我所说,它很容易使用,并且可以防止您自己解析字符串。

如果您需要帮助,可以做几件事。你能发日志吗?你能告诉我们哪条线路出故障了吗?您是否在调试器中运行它并查看是什么导致它失败的?如果让我猜一猜,那就是你用的分隔符。我想应该是“,”。读线应该使用\n我认为。您没有异常名称和堆栈跟踪吗?这就是为什么会发生错误的原因。@Kaediil您想要日志的哪一部分?我以前从未在这里发布过logcat。@entonio堆栈跟踪返回null这行
connections.add(开始、结束、持续时间)不编译。起点和终点在哪里定义?这应该是
startingStation
endingStation
?如果您需要帮助,可以做几件事。你能发日志吗?你能告诉我们哪条线路出故障了吗?您是否在调试器中运行它并查看是什么导致它失败的?如果让我猜一猜,那就是你用的分隔符。我想应该是“,”。读线应该使用\n我认为。您没有异常名称和堆栈跟踪吗?这就是为什么会发生错误的原因。@Kaediil您想要日志的哪一部分?我以前从未在这里发布过logcat。@entonio堆栈跟踪返回null这行
connections.add(开始、结束、持续时间)不编译。起点和终点在哪里定义?这应该是
startingStation
endingStation
?OpenCSV支持浮动吗?在您给出的示例中,持续时间为2,但持续时间最多可以是2位小数,例如3。78@BenNewton它以
字符串的形式返回每个值。您可以使用
Float.parseFloat(string)
进行转换。编辑文章以显示正确的输出,Geobits的注释回答了您的问题。OpenCSV支持Float吗?在您给出的示例中,持续时间为2,但持续时间最多可以是2位小数,例如3。78@BenNewton它以
字符串的形式返回每个值。您可以使用
Float.parseFloat(string)
对其进行转换。编辑帖子以显示正确的输出,Geobits的评论回答了您的问题。