Java 数组列表中的数组
在输入文件中,有两列:1)词干,2)词缀。在我的编码中,我将每列识别为标记,即标记[1]和标记[2]。但是,对于令牌[2],其内容为:ng ny ngeJava 数组列表中的数组,java,arrays,Java,Arrays,在输入文件中,有两列:1)词干,2)词缀。在我的编码中,我将每列识别为标记,即标记[1]和标记[2]。但是,对于令牌[2],其内容为:ng ny nge stem affixes ---- ------- nyak ng ny nge 我这里的问题是,如何声明令牌[2]下的内容?下面是我的代码片段: try { FileInputStream fstream2 = new FileInputStream(file2); DataInputStream in2 = new
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
试试看{
FileInputStream fstream2=新的FileInputStream(file2);
DataInputStream in2=新的DataInputStream(fstream2);
BufferedReader br2=新的BufferedReader(新的InputStreamReader(in2));
字符串str2=“”;
字符串词缀=”;
而((str2=br2.readLine())!=null){
系统输出打印项次(“原件:+str2”);
令牌=str2.split(\\s);
如果(标记长度<4){
继续;
}
字符串干=令牌[1];
System.out.println(“茎是:”+stem);
//这是我的观点
词缀=标记[3]。拆分(“”);
for(int x=0;x
您正在使用令牌作为数组(令牌[1]),并为其分配String.split(“”)的值。因此,它清楚地表明令牌的类型是String[]数组
其次,,
您试图在分割标记[3]后设置词缀的值,我们知道标记[3]属于String类型,因此对该字符串调用split函数将生成另一个String[]数组
因此,以下是错误的,因为您正在创建一个字符串,而您需要字符串[]
String affixes = " ";
因此,正确的类型应如下所示:
String[] affixes = null;
然后您可以继续并为其分配一个数组
affixes = tokens[3].split(" ");
你在找这样的东西吗
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
你能把这段代码的输出发出去吗?也许这能帮助我们回答你的问题。我不确定你到底想达到什么目的?你想要令牌(2)来包含一个数组,每个词缀作为一个单独的项目吗?当然……词缀是否可以被看作是一个标记?我将使用'ng'并检入另一个文件,同时转到'ny'和'nge'。是的,词缀存储在字符串[]词缀中,这是一个长度为3的字符串数组。我尝试了编码,但仍然无法工作。词缀只带有标记[1]:ng..,因此它将其他标记视为标记[1]。因为我从输入文件中读取,有没有语法我遗漏了?它实际上是分隔词缀的空格字符,还是制表符或其他空格?代替拆分(“+”),你可以尝试拆分(“\s+”)。在语法上,只有一个空格来分隔词缀。但是它仍然把词缀看作是由NG NGE NY组成的一个标记。我的期望是NG=令牌[1 ],NGE=令牌(2)和NY=令牌(3)。现在,这些值将存储为:
词缀[0]=ng,词缀[1]=nge,词缀[2]=ny