【问题标题】:How to make a Java File Reader如何制作 Java 文件阅读器
【发布时间】:2013-09-17 13:41:22
【问题描述】:

我正在尝试为课堂上的一个项目制作单词扰频器。它需要读入一个.txt 文件并输出一个包含文件中所有单词的字符串;但被炒了。例如:

这就是单词应该被打乱的方式。

忽略标点符号并保留第一个和最后一个字母。

我在将文件读入数组时遇到问题。我打算使用 collections.shuffle 通过忽略第一个和最后一个字母并随机化内部字母来打乱内层。

我不知道如何实现文件阅读器,但这里是我的每个单词的加扰器。

public static String shuffle(String input){
    input = "supercalifragilisticexpialidocious";
    int i = 0;
    ArrayList<Character> chars = new ArrayList<Character>(input.length());
    String output = "";
    char[] characters = input.toCharArray();
    char[] newWord = new char[input.length()];



    newWord[0] = characters[0];
    newWord[input.length()-1] = characters[input.length()-1];

    for (i=1; i < input.length()-1;i++ ) {
        chars.add(characters[i]);
    }

    System.out.println(chars);
    for (i = 1; i <= input.length()-2; i++)
    {
        Collections.shuffle(chars);
    }
    Character[] middle = chars.toArray(new Character[chars.size()]);
    for (i = 1; i < newWord.length - 2; i++)
    {
        newWord[i] = middle[i];
    }

    System.out.println(newWord);
    StringBuffer r= new StringBuffer(output);
    for (i = 0; i < newWord.length-1; i++)
    {
        r.append(newWord[i]);
    }

    return output;
}

这会像我想要的那样输出saxupieipclflaurrtocslcidigaiiois,但现在我需要一种方法来读取 .txt 文件并将其拆分为单独的单词。

如果有人可以帮助我,那就太好了。我真正在寻找的是是否有人可以帮助我为此制作文件阅读器。

【问题讨论】:

    标签: java file filereader scramble


    【解决方案1】:

    希望能帮到你。感谢第一个和第二个答案,从他们那里得到。

    public class FileReader 
    {
    
        public static void main(String[] args) {
    
            String filePath = "data.txt";
            File file = new File(filePath);
            Scanner scanner = null;
            List<String> words = new ArrayList<String>();
            try {
                scanner = new Scanner(file);
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine();
                    words.addAll(getWords(line));
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } finally {
                scanner.close();
            }
            for(String word : words)
            {
                System.out.println(word);
            }
        }
    
        public static List<String> getWords(String text) {
            String[] words = text.split("[^\\w']+");
            return Arrays.asList(words);
        }
    }
    

    【讨论】:

      【解决方案2】:

      使用文件阅读器读取文件使用正则表达式拆分成单词

          BufferedReader br = new BufferedReader( new FileReader( "file.txt" ) );
          try {
              StringBuilder sb = new StringBuilder();
              String line = br.readLine();
      
              while ( line != null ) {
                  sb.append( line );
                  sb.append( '\n' );
                  line = br.readLine();
              }
              String everything = sb.toString();
              String[] words = everything.split( "[^\\w']+" );
      
              System.out.println( words );
      
          } finally {
              br.close();
          }
      }
      

      【讨论】:

      • 所以这会给我 .txt 文件中的所有内容作为由空格分隔的字符串?您是否建议使用 .split 将它们变成单独的单词?
      【解决方案3】:

      为简洁起见,我建议使用Scanner 类:

      import java.io.File;
      import java.io.FileNotFoundException;
      import java.util.Scanner;
      
      public class ScannerReadFile {
      
          public static void main( String[] args ) {
      
              final File file = new File( "data.txt" );
      
              try ( final Scanner scanner = new Scanner( file ); ) {
                  while ( scanner.hasNextLine() ) {
                      String line = scanner.nextLine();
                      System.out.println( line );
                  }
              } catch ( FileNotFoundException e ) {
                  e.printStackTrace();
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-10-10
        • 2016-12-18
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 2019-10-11
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        相关资源
        最近更新 更多