读取从文件到数组的每个单词

时间:2013-10-11 21:32:34

标签: java arrays file

我需要一些帮助,无论我试图将其放入下面编写的代码中,它都无法正常工作。我希望它从文件Alice.txt中读取,然后将每个单词放入带有较低字母的数组ordArray中,然后使用程序的其余部分计算每个单词,每个单词的每个出现以及每个单独的单词。请帮忙!如果你能给我一些关于我可以做得更好的提示,或者我应该如何实现将信息写入文件Opplysning.txt的部分,请不要保持安静。

try {
        File skrivFil = new File("Opplysning.txt");
        FileWriter fw= new FileWriter(skrivFil);
        BufferedWriter bw = new BufferedWriter(fw);

        Scanner lesFil = new Scanner("Alice.txt");
        int i=0;
        int totalOrd=0;
        int antUnikeOrd=0;

        String[] ordArray = new String[5000];
        int[] antallOrd = new int[5000];    
        String ord = lesFil.next().toLowerCase();
        totalOrd++;
        boolean ordFraFor=false;
        int y=0;
        int z=0;

        for(i=0; i<ordArray.length; i++) {
             if (ord.equals(ordArray[i])) {
        antallOrd[i]++;
        ordFraFor=true;
        }
    }
        if(ordFraFor=false) {
            antUnikeOrd++;
            y=0;
            boolean ordOpptelling=false;

        while(ordOpptelling=false) {
        if(ordArray[y] == null) {
            ordArray[y] = ord;
            antallOrd[y]++;
            ordOpptelling=true;
        }
        y++;
    }
}

        for(String s: ordArray) {
        System.out.println(s);
        }
        lesFil.close();

        } catch (Exception e){
        System.out.print(e);
        }
    }
}

编辑: 尝试添加文件,我想它工作,但我仍然无法写入数组。我真的很擅长这个,这就是为什么我必须在接下来的一周才能真正得到这些东西...... 无论如何,我试图将所有单词添加到一个arraylist中,我希望它能起作用。它没有,它给了我一个nosuchelementexception而不是。 代码的一部分:

File tekstFil = new File ("Alice.txt");
Scanner lesFil = new Scanner(tekstFil);
int i=0;
int totalOrd=0;
int antUnikeOrd=0;

ArrayList<String> liste = new ArrayList<String>();
while (lesFil.hasNext()){
  liste.add(lesFil.next());
}

String[] ordArray =liste.toArray(new String[liste.size()]);;
int[] antallOrd = new int[5000];

1 个答案:

答案 0 :(得分:2)

您的扫描程序正在尝试扫描字符串文字“Alice.txt”,而不是相应的文件。如果需要File,则先构造文件,然后将其传递给Scanner构造函数:

File textFile = new File("Alice.text"); // or file path variable
Scanner fileScanner = new Scanner(textFile);

// go to town with your Scanner

或,...

InputStream inStream = getClass().getResourceAsStream(someResourcePath);
Scanner myTextScanner = new Scanner(inStream);

接下来我们将讨论不使用ArrayList而是使用Map<String, Integer>,例如HashMap<String, Integer>


修改
你说:

  

尝试添加文件,我猜它有用,但我仍然无法写入数组。我真的很擅长这个,这就是为什么我必须在接下来的一个星期才能真正得到这些东西...无论如何,我试图将所有的单词添加到一个arraylist中,我希望它能起作用。它没有,它给了我一个nosuchelementexception而不是。代码的一部分:

我建议您停止,暂停程序,并尝试单独解决程序的每个部分。首先看看你是否真的拿到了你的文件。

创建类似的东西,但当然要更改文件路径以使其有效:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Foo {

   // **** you will use a different String literal here!! ****
   private static final String FILE_PATH = "src/foo/foo.txt";

   public static void main(String[] args) throws FileNotFoundException {
      File file = new File(FILE_PATH);

      // check if file exits and if we're looking in the right place
      System.out.println("File path: " + file.getAbsolutePath());
      System.out.println("file exists: " + file.exists());

      Scanner scan = new Scanner(file);

      // scan through file to make sure that it holds the text 
      // we think it does, and that scanner works.
      while (scan.hasNextLine()) {
         String line = scan.nextLine();
         System.out.println(line);
      }
   }
}

然后,只有在您完成此工作后,才能将文本读入ArrayList。

与往常一样,请努力改进代码格式,尤其是缩进。如果出现错误或异常,请在此处打印整个文本,并指出抛出异常的代码行。