我怀疑您最初的问题是在方法体之外有代码。这个演示类将编译和运行,并让 cmets 指出您可能一直在做的事情与正确的事情。
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,但希望这能让您走上正确的轨道,至少获得一个有效的构建。