循环中的Java字符串数组作用域

西蒙

这是一个相当简单的Java范围界定问题,但是我对Java还是很陌生,很难解决这个问题。具体来说,这是针对Android应用程序的,但是我不确定这个问题是否重要

我有一种方法将采用SQLite表数据并将其写到CSV文件中。根据要传递给方法的数据类型,我想从其他表中写入数据:

public void exportSubjectData(File outputFile, String subNum, String sensorType) throws IOException, SQLException {

        csvWrite = new CSVWriter(new FileWriter(outputFile));

        switch (sensorType) {
            case "acc": {
                curCSV = db.rawQuery("SELECT * FROM " + DATA_ACC_TABLE_NAME + " WHERE id = " + subNum, null);
                String arrStr[] = {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),
                        curCSV.getString(3), curCSV.getString(4)};
                break;
            }
            case "gyro": {
                curCSV = db.rawQuery("SELECT * FROM " + DATA_GYRO_TABLE_NAME + " WHERE id = " + subNum, null);
                String arrStr[] = {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2)};
                break;
            }
        }

        csvWrite.writeNext(curCSV.getColumnNames());

        while (curCSV.moveToNext()) {
            csvWrite.writeNext(arrStr);
        }

        csvWrite.close();
        curCSV.close();
    }

我的问题是,根据sensorType传入的内容,我想1)从其他表中选择,2)写出不同数量的列。arrStrswitch块中进行声明和初始化,但是当我尝试将每一列写入CSV时,该while块无权访问arrStr大概这是一个范围界定问题。解决此问题的正确方法是什么?

当我尝试arrStr在交换机外部声明时,出现意外的令牌错误:

    String[] arrStr;

    switch (sensorType) {
        case "acc": {
            curCSV = db.rawQuery("SELECT * FROM " + DATA_ACC_TABLE_NAME + " WHERE id = " + subNum, null);
            arrStr[] = {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),curCSV.getString(3), curCSV.getString(4)};
            break;
        }
        case "gyro": {
            curCSV = db.rawQuery("SELECT * FROM " + DATA_GYRO_TABLE_NAME + " WHERE id = " + subNum, null);
            arrStr[] = {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),curCSV.getString(3), curCSV.getString(4)};
            break;
        }
    }

我也尝试了以下方法,但是android studio抱怨arrStr可能尚未初始化:

    String[] arrStr;

    switch (sensorType) {
        case "acc": {
            curCSV = db.rawQuery("SELECT * FROM " + DATA_ACC_TABLE_NAME + " WHERE id = " + subNum, null);
            arrStr = new String[]{curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),curCSV.getString(3), curCSV.getString(4)};
            break;
        }
        case "gyro": {
            curCSV = db.rawQuery("SELECT * FROM " + DATA_GYRO_TABLE_NAME + " WHERE id = " + subNum, null);
            arrStr = new String[]{curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),curCSV.getString(3), curCSV.getString(4)};
            break;
        }
    }
瓦西里·卡布诺夫(Vasily Kabunov)

尝试这样声明数组变量(在之外switch):

public void exportSubjectData(File outputFile, String subNum, String sensorType) throws IOException, SQLException {

    csvWrite = new CSVWriter(new FileWriter(outputFile));

    String arrStr[] = null;

    switch (sensorType) {
        case "acc": {
            curCSV = db.rawQuery("SELECT * FROM " + DATA_ACC_TABLE_NAME + " WHERE id = " + subNum, null);
            arrStr = new String[] {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),
                    curCSV.getString(3), curCSV.getString(4)};
            break;
        }
        case "gyro": {
            curCSV = db.rawQuery("SELECT * FROM " + DATA_GYRO_TABLE_NAME + " WHERE id = " + subNum, null);
            arrStr = new String[] {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2)};
            break;
        }
    }

    csvWrite.writeNext(curCSV.getColumnNames());

    while (curCSV.moveToNext()) {
        csvWrite.writeNext(arrStr);
    }

    csvWrite.close();
    curCSV.close();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串替换在for循环中不起作用-Java

来自分类Dev

字符串与数组在循环中的比较

来自分类Dev

字符串数组:在循环中添加元素

来自分类Dev

拆分字符串类型并放入循环中的新数组

来自分类Dev

在 bash 的 for 循环中读取字符串数组

来自分类Dev

字符串数组不会在for循环中添加字符串

来自分类Dev

Java While循环中的字符串条件

来自分类Dev

Java内联字符串是否在for-each循环中

来自分类Dev

Java内联字符串是否在for-each循环中

来自分类Dev

Matlab:比较for循环中的字符串

来自分类Dev

在.each循环中串联字符串

来自分类Dev

bash循环中的字符串长度

来自分类Dev

嵌套的for循环中的字符串匹配

来自分类Dev

嵌套 for 循环中的字符串操作

来自分类Dev

for 循环中的字符串编辑

来自分类Dev

在循环中添加输出/字符串

来自分类Dev

返回在 for 循环中创建的字符串

来自分类Dev

如何在循环中访问字符串数组以根据需要将字符串存储到数组中

来自分类Dev

for 循环字符串数组

来自分类Dev

输入不匹配的字符串时,scanf在while循环中不起作用

来自分类Dev

循环中的Jupyter Notebook中的Python F字符串不起作用

来自分类Dev

在MySQL插入查询中,For循环中的PHP字符串不起作用

来自分类Dev

为什么“ for..in”循环中的数字数组索引的类型被认为是字符串?

来自分类Dev

在单个循环中将字符串与数组的所有元素进行比较

来自分类Dev

在循环中用数组内容替换html中的字符串

来自分类Dev

如何将一维字符串数组放入循环中?

来自分类Dev

在循环中将多个字符串存储在数组中

来自分类Dev

将数组的字符串元素的长度设置为javascript中for循环中的变量

来自分类Dev

在while循环中将空格分隔的字符串读入数组

Related 相关文章

  1. 1

    字符串替换在for循环中不起作用-Java

  2. 2

    字符串与数组在循环中的比较

  3. 3

    字符串数组:在循环中添加元素

  4. 4

    拆分字符串类型并放入循环中的新数组

  5. 5

    在 bash 的 for 循环中读取字符串数组

  6. 6

    字符串数组不会在for循环中添加字符串

  7. 7

    Java While循环中的字符串条件

  8. 8

    Java内联字符串是否在for-each循环中

  9. 9

    Java内联字符串是否在for-each循环中

  10. 10

    Matlab:比较for循环中的字符串

  11. 11

    在.each循环中串联字符串

  12. 12

    bash循环中的字符串长度

  13. 13

    嵌套的for循环中的字符串匹配

  14. 14

    嵌套 for 循环中的字符串操作

  15. 15

    for 循环中的字符串编辑

  16. 16

    在循环中添加输出/字符串

  17. 17

    返回在 for 循环中创建的字符串

  18. 18

    如何在循环中访问字符串数组以根据需要将字符串存储到数组中

  19. 19

    for 循环字符串数组

  20. 20

    输入不匹配的字符串时,scanf在while循环中不起作用

  21. 21

    循环中的Jupyter Notebook中的Python F字符串不起作用

  22. 22

    在MySQL插入查询中,For循环中的PHP字符串不起作用

  23. 23

    为什么“ for..in”循环中的数字数组索引的类型被认为是字符串?

  24. 24

    在单个循环中将字符串与数组的所有元素进行比较

  25. 25

    在循环中用数组内容替换html中的字符串

  26. 26

    如何将一维字符串数组放入循环中?

  27. 27

    在循环中将多个字符串存储在数组中

  28. 28

    将数组的字符串元素的长度设置为javascript中for循环中的变量

  29. 29

    在while循环中将空格分隔的字符串读入数组

热门标签

归档