2

我有一个 String[] LinesFromFile ,其中包含从文件加载的大约 100 行,例如

LinesFromFile[0] 是“Line1”

LinesFromFile[1] 是“Line2”

LinesFromFile[2] 是“Line3”

...

LinesFromFile[99] 是“Line100”

我现在想创建一个新的 String[] SomeLinesFromFile 并将 LinesFromFile 中的一些行分配给这个变量。

我原以为它会很简单:

String[] SomeLinesFromFile = null;
int offset = 45;

for (i = 0; i < 10, i++)
{
    SomeLinesFromFile[i] = LinesFromFile[offset + i];
}

我会假设这段代码会将 SomeLinesFromFile[0] 设置为 SomeLinesFromFile[9],并将 LinesFromFile[46] 的值设置为 LinesFromFile[56]。

当我尝试在我的 android 设备上运行它时,它崩溃了。我在这里想念什么?

4

7 回答 7

10
String[] SomeLinesFromFile = null;

SomeLinesFromFilenull,所以你不能这样做:

SomeLinesFromFile[i] = ...

您需要先创建一个数组,例如:

String[] SomeLinesFromFile = new String[10];


顺便说一句,以大写字母开头命名变量被认为是不好的做法。因此,您应该始终使用someLinesFromFile而不是SomeLinesForFile.

于 2012-04-30T22:18:24.990 回答
1

您的第二个数组为空,使用正确的维度对其进行初始化(在您的情况下,10 应该足够了):

String[] SomeLinesFromFile = new String[10];
int offset = 45;

for (i = 0; i < 10, i++)
{
    SomeLinesFromFile[i] = LinesFromFile[offset + i];
}
于 2012-04-30T22:19:28.007 回答
1

改变这个:

String[] SomeLinesFromFile = null;

对此:

String[] SomeLinesFromFile = new String[10];
于 2012-04-30T22:20:08.407 回答
1

您可以改用 ArrayList 来避免固定大小。

http://www.java-tips.org/java-se-tips/java.lang/use-of-arraylist-class.html

于 2012-04-30T22:20:30.340 回答
1

您忘记初始化字符串数组:

String[] SomeLinesFromFile = new String[10];
于 2012-04-30T22:21:49.097 回答
1

SomeLinesFromFile[i] 不存在。SomeLinesFromFile 设置为空。你可以尝试这样的事情:

String[] SomeLinesFromFile = new String[0];
String[] Temp = null;

int offset = 45;

for (i = 0; i < 10, i++)
{
    Temp = new String[SomeLinesFromFile.length +1];

    if(SomeLinesFromFile.length>0){
        System.arraycopy(SomeLinesFromFile, 0, Temp, 0, SomeLinesFromFile.length;
    }

    Temp[i] = LinesFromFile[offset+i];
    SomeLinesFromFile = new String[Temp.length];
    System.arraycopy(Temp, 0, SomeLinesFromFile, 0, Temp.length);
}

这是一个粗略的草图,所以我可能错过了一些东西,但这就是它的要点。可能有更好或更简单的方法来做到这一点,但这就是我能想到的。如果需要,这里是关于arraycopy的文档。基本上,您有一个临时数组来拉取新信息。然后它将它存储在另一个数组中,以允许创建一个新的临时数组以获取更多信息。

于 2012-04-30T22:38:04.993 回答
0

SomeLinesFromFilenull(您可能可以在日志中看到)。顺便说一下,我建议使用诸如 LinkedList 或 ArrayList 之类的列表。使用该方法完成后,它们也可以转换为数组toArray()

于 2012-04-30T22:19:51.900 回答