数组列表中的数组

时间:2011-08-16 02:21:44

标签: java arrays

在输入文件中,有2列:1)词干,2)词缀。在我的编码中,我将每个列识别为令牌,即令牌[1]和令牌[2]。然而,对于令牌[2],内容是:ng ny nge

stem  affixes
----  -------
nyak  ng ny nge

我的问题在这里,如何在令牌下声明内容[2]?以下是我编码的片段:

try {
    FileInputStream fstream2 = new FileInputStream(file2);
    DataInputStream in2 = new DataInputStream(fstream2);
    BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));

    String str2 = "";
    String affixes = " ";

    while ((str2 = br2.readLine()) != null) {

        System.out.println("Original:" + str2);

        tokens = str2.split("\\s");

    if (tokens.length < 4) {
            continue;
        }

    String stem = tokens[1];
    System.out.println("stem is: " + stem);

// here is my point

   affixes = tokens[3].split(" ");
   for (int x=0; x < tokens.length; x++)
    System.out.println("affix is: " + affixes);  

     }  

    in2.close();
  } catch (Exception e) {
    System.err.println(e);
  } //end of try2

2 个答案:

答案 0 :(得分:2)

您正在使用标记作为数组(标记[1])并为其指定String.split(“”)的值。所以它清楚地表明令牌的类型是String []数组。

接着, 你试图在分割标记之后设置词缀的值[3],我们知道标记[3]是String类型,所以在该字符串上调用split函数将产生另一个String []数组。

所以以下是错误的,因为你正在创建一个String,而你需要String []

String affixes = " ";

所以正确的类型应该是这样的:

String[] affixes = null;

然后你可以继续为它分配一个数组。

affixes = tokens[3].split(" ");

答案 1 :(得分:0)

你在找这样的东西吗?

public static void main(String[] args) {
    String line = "nyak  ng ny nge";
    MyObject object = new MyObject(line);
    System.out.println("Stem: " + object.stem);
    System.out.println("Affixes: ");
    for (String affix : object.affixes) {
        System.out.println("  " + affix);
    }
}

static class MyObject {
    public final String stem;
    public final String[] affixes;

    public MyObject(String line) {
        String[] stemSplit = line.split(" +", 2);
        stem = stemSplit[0];
        affixes = stemSplit[1].split(" +");
    }
}

输出:

Stem: nyak
Affixes: 
  ng
  ny
  nge