我可以在字符串数组中保存字符串变量吗? (JAVA)

时间:2010-12-08 17:10:34

标签: java android arrays

这里的基本问题,我可以将String变量放入字符串数组中的位置以及更多文本吗?

这是我正在尝试做的事情

public static final String CAT_BUD_TAB = "CAT_BUD_TAB";
public static final String inI = "INSERT INTO ";
public static final String val = " VALUES ";

public static final String[] catInsertArray = new String[13];

catInsertArray[0] = inI + CAT_BUD_TAB + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";

但显然这不会起作用,因为它期望“标记要包含的字符串的开头。无论如何这会起作用吗?

修改

不是它不是SQL im关注的,我只是试图将一些文本与字符串变量中的文本结合起来,并将它们全部保存为数组中的一个长字符串。可能会让它变得更加混乱,如果是这样,请忽略此编辑并重新阅读原始问题。

按照建议删除括号,并使用所有相关代码更新上面的代码块。

但是eclipse仍然说在令牌上有“语法错误,删除这些令牌”并且整个代码行都有潦草的红色(catInsertArray [0] = ....)

此类课程的pastebin如果你足够好看看http://pastebin.com/cKa0sKEj

4 个答案:

答案 0 :(得分:3)

我怀疑你原来的问题是代码体外的代码。这个演示类将编译并运行,并有评论指出你可能正在做什么和什么是正确的。

public class StringTest 
{

    public static final String crT = "CREATE TABLE ";
    public static final String inI = "INSERT INTO ";
    public static final String val = " VALUES ";

    public static final String[] catInsertArray = new String[13];

    // you were probably doing this, which is not allowed in Java because you are writing code outside of a method body or static initializer block
    //catInsertArray[0] = inI + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );"; 

    static
    {
         // static initialize your static member
         catInsertArray[0] = inI + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );"; 
    }

    public static void main(String [] args)
    {
        // You can put code in a method
        //catInsertArray[0] = inI + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );"; 

    }
}

从您的新评论中 - 您在pastebin链接中的代码存在一些问题。我有一件事是你在DatabaseConstants类中声明一个嵌套接口的原因?这似乎是不必要的,因为你正在为常量做一个类。

此外,您仍然遗漏了static initializer block以将内容放入String数组中。请参阅下面的代码。

package com.geistware.studentbudgetapp;

import android.provider.BaseColumns;

public class  DatabaseConstants {

    //Variables for DDL statements and such
    public static final String crT = "CREATE TABLE ";
    public static final String inI = "INSERT INTO ";
    public static final String val = " VALUES ";

    //Table Names
    public static final String CAT_BUD_TAB = "CAT_BUD_TAB";
    public static final String TWO_WEE_TAB = "TWO_WEE_TAB";

    //columns from the category_budget_table
    public static final String CAT_ITEM = "CAT_ITEM";
    public static final String IN_OUT = "IN_OUT";
    public static final String BUDGET_AMOUNT = "BUDGET_AMOUNT";
    public static final String ACTUAL_AMOUNT = "ACTUAL_AMOUNT";
    public static final String AMOUNT_STRAYED = "AMOUNT_STRAYED";
    public static final String OVERBUDGET_TF = "OVERBUDGET_TF";
    public static final String AUTOSPEND_TF = "AUTOSPEND_TF";

    //Initial DDL Statements and Initial INSERT statements to populate table
    public static final String createCATBUDTAB = (crT + CAT_BUD_TAB + 
            "(_id INTEGER PRIMARY KEY, CAT_ITEM TEXT, IN_OUT TEXT, BUDGET_AMOUNT REAL, ACTUAL_AMOUNT REAL, AMOUNT_STRAYED REAL, OVERBUDGET_TF INTEGER, AUTOSPEND_TF INTEGER);");
    public static final String createTWOWEETAB = (crT + TWO_WEE_TAB + 
            "(_id INTEGER PRIMARY KEY, SUB_CAT_ITEM TEXT, CAT_ITEM TEXT, COST REAL, ESSENTIAL_TF INTEGER, CURRENT_LAST TEXT, WEEK_ID INTEGER);");

    public static String[] catInsertArray = new String[13];

    // you still need to to put this code into a static initializer block
    static
    {
        catInsertArray[0] = inI + CAT_BUD_TAB + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";
    }

}

然而,对于像常量列表这样的东西,我更喜欢使用enumeration,但希望这能让你走上正确的轨道,至少可以获得有效的构建。

答案 1 :(得分:2)

如果变量的值也是字符串,则可以执行此操作。请记住,数组位置只是一个容器。

但是,您没有调用方法,因此请删除括号。只是做:

array[position] = stringVariable1 + stringVariable2 + " some other string";

答案 2 :(得分:2)

为什么需要将SQL的各个部分区分开来?

你可以使用StringBuffer / StringBuilder来连接你需要的位,记住在你去的时候转义引号。

答案 3 :(得分:0)

  1. 语法上没有任何错误 为建设价值 阵列
  2. “操作上”有很多错误 做。

    • 您的“CREATE TABLE”,“INSERT INTO”等不是变量,也不应该是常量。将文本拉入常量可能会减少源代码中使用的字符总数,但会增加很多不必要的复杂性。
    • 您的SQL语句具有硬编码参数。这是PreparedStatement可能更有用的地方。
    • 通过指定索引来构建数组看起来有点可怕。根据您可能正在做的其他事情,List可能更有意义。