0

ファイルの 3 番目の列 (treeout1.txt) を読み取り、それらの内容を別のファイル (tree.txt) に書き込むコードを書きました。そして今、tree.txt を開いてその内容を stem.txt に書き込みます。 tree.txt の内容は各行に 1 つの単語であり、各行の最後に区切り文字があります。その txt ファイルを以下に添付しました。これを表示して理解を深めることができます。区切り文字「###」が見つかりました...たとえば、「女の子自身の紙」と次の行の巻など....私はそれを試しましたが、ArrayIndexOutOfBoundsExceptionが[]に来ます...なぜですか?そしてその方法それを解決しますか?

テキストファイルtree.txtを以下に示します

the
girl
own
paper
###
vol
###
viii
###
no
###
@card@
###
October
@card@
@card@
###
price
one
penny
###
as
the
baron
have
conjecture
the
housemaid
whom
he
have
call
out
of
the
nursery
to
look
for
###
lons
cane
on
find
her
master
have
go
without
it
do
not
hurry
back
but
stop
talk
###

コード:

 package simple;

 import java.io.*;
 import java.util.Scanner;
 import java.util.StringTokenizer;

 public class Simple {

   public static void main(String[] args) throws IOException {
     String line;
     String line2;
     String[] a = new String[100];
     int i = 0;
     try {
       BufferedReader br = new BufferedReader(new FileReader("C:/TreeTagger/treeout1.txt"));
       BufferedWriter output = new BufferedWriter(new FileWriter("D:/tree.txt"));
       String separator = System.getProperty("line.separator");
       while ((line = br.readLine()) != null) {
         StringTokenizer st2 = new StringTokenizer(line, "\n");
         while (st2.hasMoreElements()) {
           String line1 = (String) st2.nextElement();
           String[] array = line1.split("\\s+", 3);
           //System.out.println(array[2]);
           output.append(array[2]);
           output.newLine();
         }
       }
       output.close();
       br.close();
       BufferedReader br1 = new BufferedReader(new FileReader("D:/tree.txt"));
       BufferedWriter out = new BufferedWriter(new FileWriter("D:/stem.txt"));
       while ((line2 = br1.readLine()) != null) {
         StringTokenizer st = new StringTokenizer(line2, " ");
         while (st.hasMoreTokens()) {
           String element = st.nextToken();
           System.out.println(element);
           while (element != "###") {

             a[i] = element;
             i++;
           }
           out.append(a[i]);
           element = element.replace(element, "");

         }

       }
     } catch (IOException e) {

     }
   }
 }
4

1 に答える 1

0

区切り文字i to 0を見つけたら、リセットする必要があります。###そうしないと、100 (の最大値)iを超えるまで増加し続けます。a

また、文字列で演算子を使用することはできません!=(コードから: element != "###")。以下を使用する必要があります。

!"###".equals(element);
于 2013-11-04T04:12:57.490 に答える