3

クラスのプロジェクトで単語スクランブラーを作ろうとしています。ファイルを読み取り、.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 ファイルを読み取って個別の単語に分割する方法が必要です。

誰かが私を助けることができれば、それは素晴らしいことです。私が本当に探しているのは、誰かがこのためのファイル リーダーを作成するのを手伝ってくれるかどうかです。

4

3 に答える 3

1

希望はあなたを助けることができます。1番目と2番目の回答をありがとう、彼らから得ました。

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);
    }
}
于 2013-09-13T05:11:24.867 に答える
1

filereader を使用してファイルを読み取る 正規表現を使用して単語に分割する

    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();
    }
}
于 2013-09-13T01:08:31.527 に答える
0

簡潔にするために、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();
        }
    }
}
于 2013-09-13T02:06:31.587 に答える