String []的问题

时间:2012-04-30 22:15:40

标签: java

我有一个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设备上运行它时,它会崩溃。我在这里缺少什么?

7 个答案:

答案 0 :(得分:10)

String[] SomeLinesFromFile = null;

SomeLinesFromFilenull,因此您无法执行此操作:

SomeLinesFromFile[i] = ...

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

String[] SomeLinesFromFile = new String[10];

<小时/> 顺便提一下,以大写字母开头命名变量被认为是不好的做法。因此,您应始终使用someLinesFromFile代替SomeLinesForFile

答案 1 :(得分:1)

你的第二个数组是null,用正确的维度初始化它(在你的情况下10应该足够了):

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

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

答案 2 :(得分:1)

改变这个:

String[] SomeLinesFromFile = null;

到此:

String[] SomeLinesFromFile = new String[10];

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

String[] SomeLinesFromFile = new String[10];

答案 5 :(得分:1)

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

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上的文档。基本上,您有一个临时数组可以提取新信息。然后它将它存储在另一个数组中,以允许创建一个新的临时数组以提取更多信息。

答案 6 :(得分:0)

SomeLinesFromFilenull(您可能会在日志中看到)。 我建议使用List,例如LinkedList或ArrayList。使用方法toArray()

完成后,它们也可以转换为数组