0

FileInputStream を使用してテキスト ファイルを読み込もうとしていて、すべての単語を逆に表示したかった (つまり、最後の単語が最初の単語になるなど) 文字列トークナイザーを使用してすべての文字を逆に表示できましたが、そうではありませんでした言葉..私は今いくつかの異なる方法を試しましたが、これを行うことができなかったようです

ArrayList を使用すると、行を逆にすることができます (最後の行を最初に、最初の行を最後に出力します)。しかし、すべての単語を逆にする方法が見つかりませんでした。

「test.txt」ファイルの内容は次のとおりです。

Java の特徴の 1 つは移植性です。つまり、Java 言語で記述されたコンピュータ プログラムは、どのハードウェア/オペレーティング システム プラットフォームでも同じように実行する必要があります。これは、Java 言語コードをプラットフォーム固有のマシン コードに直接コンパイルするのではなく、Java バイトコードと呼ばれる中間表現にコンパイルすることによって実現されます。Java バイトコード命令はマシン コードに似ていますが、ホスト ハードウェア専用に記述された仮想マシン (VM) によって解釈されることを意図しています。エンド ユーザーは通常、スタンドアロン Java アプリケーション用に自分のマシンにインストールされた Java ランタイム環境 (JRE) を使用するか、Java アプレット用に Web ブラウザーにインストールされます。

コード:

import java.io.*;  
import java.util.ArrayList;


public class RevWords6
{
    public static void main(String[] args) throws IOException
    {   
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"), "UTF-8"));                

        String lines = br.readLine();
        ArrayList<String> buffer = new ArrayList<String>();

        //while the data is not null
        while(lines != null)
        {   
            //String words[] = lines.split(" ");

            //track formatting
            if(lines != null)
            {   
                buffer.add("\n");
                buffer.add(lines);  //I wanted to put the words array in here instead of "lines" but didn't know how
            }

            lines=br.readLine();
        }

        //reads lines backwards from ArrayList buffer but wanted to read words from end-to-beginning
        for(int i = buffer.size()-1; i>=0; i--)
        {
            System.out.print(buffer.get(i));
        }

        br.close();
    }
}

出力:

スタンドアロン Java アプリケーション用に独自のマシンにインストールするか、Java アプレット用に Web ブラウザにインストールします。ホスト ハードウェア専用に作成された仮想マシン (VM) によって。エンドユーザーは一般に、プラットフォーム固有のマシン コードに直接アクセスする代わりに、Java ランタイム環境 (JRE) バイトコードを使用します。Java バイトコード命令はマシン コードに似ていますが、ハードウェア/オペレーティング システム プラットフォームで解釈されることを意図しています。これは、Java 言語コードを Java と呼ばれる中間表現にコンパイルすることによって実現されます。 Java の 1 つの特徴は移植性です。

ご覧のとおり、下から上に始まる行を印刷していますが、下から上に始まる単語が必要でした

そしてここで、行を1つの空白で分割する文字列配列でStringBufferを使用しようとしましたが、この場合、各行を逆にすることしかできず、段落全体を逆にすることはできませんでした

コード:

import java.io.*;  


public class RevWords4
{   

    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\Conor\\Documents\\test.txt"), "UTF-8"));               
        StringBuffer buffer = new StringBuffer();   

        String line = br.readLine();
        String[] word = line.split(" ");

        while(line != null)
        {           
            if(line != null)
            {   
                word = line.split(" ");

                for(int i = word.length-1; i>=0; i--)
                {
                    StringBuilder sb = new StringBuilder(word[i] + " ");        
                    buffer.append(sb);          
                }

                buffer.append("\n");
            }

            line=br.readLine();
        }


        System.out.print(buffer);
        br.close();
    }
}

出力:

いずれも同様に実行しなければならない言語 Java は移植性を意味するプログラミング言語コンピュータであり、Java をコード化するための中間表現と呼ばれる特徴的な Java の 1 つ Java をコンパイルすることによって達成される言語がこのプラットフォームです。ハードウェア/オペレーティング システムは意図したとおりに解釈されますが、それらはコードであり、マシンから類似のものは命令バイトコード Java コードです。代わりにバイトコード (JRE) 環境ランタイム Java を直接使用するマシン プラットフォーム固有のエンド ユーザー ハードウェアが一般的です。特別に作成された (VM) マシンの仮想マシンをアプレットでホストします。ブラウザ用の Java Web またはアプリケーション、マシン用の Java スタンドアロンがインストールされている

ですから、これに関する提案やヒントを喜んで受け入れます。ありがとう

4

1 に答える 1