【问题标题】:The type of expression must be an array type but it resolved to string表达式的类型必须是数组类型,但它解析为字符串
【发布时间】:2014-11-05 09:01:56
【问题描述】:

正在开发一个从数据库中获取一些数据的应用程序..但是它显示了这个错误

private void add() {


    db = (new DbHelper(this)).getReadableDatabase();
    String query = "select * from stock where product = ?";
    String list_data;
    Cursor c = db.rawQuery(query, new String[] { list_data });
    c.moveToFirst();

    final CharSequence[] items = new CharSequence[list_data.length()];

    for (int i = 0; i < list_data.length(); i++) {


        items[i] = list_data[i];//here is the error
    }

【问题讨论】:

  • 这是一个字符串:String list_data; 它不能用作数组。
  • 我不知道你想要达到什么目的,但错误是不言自明的,list_data[i] 不起作用,因为 list_data 是一个字符串,你正在尝试使用它像一个数组...
  • 在这里,您正在对字符串for (int i = 0; i &lt; list_data.length(); i++) { 中的字符数进行循环。但是这个数字是 0,因为这个字符串没有被赋值。
  • 这个问题似乎离题了,因为它对他在做什么缺乏任何了解
  • 为什么不使用 toCharArray() 转 String 类?

标签: android


【解决方案1】:

试试这个

db = (new DbHelper(this)).getReadableDatabase();
String query = "select * from stock where product = ?";
String list_data;
Cursor c = db.rawQuery(query, new String[] { list_data });
c.moveToFirst();

final CharSequence[] items = new CharSequence[list_data.length()];

for (int i = 0; i < list_data.length(); i++) {


       items[i] = list_data.charAt(i);
}

您可以使用 charAt(int index) 方法从 String 中获取 char

【讨论】:

  • 但是 list_data 是 empty,因为它从未被赋予任何值。
【解决方案2】:

您的变量 list_data 由于是字符串变量,因此不能像数组一样使用。当我说它不能用作数组时,我指的是你用来引用字符串中单个字符的方括号。

items[i] = list_data[i];

正如 Aniruddh 正确指出的那样,您必须使用在 String 类下定义的内置 charAt() 方法。

items[i] = list_data.charAt(i);

详情请参阅定义- https://developer.android.com/reference/java/lang/String.html#charAt%28int%29

干杯。

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 1970-01-01
    • 2021-07-24
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多