トピックス要件:
私たちが遊ぶために使用されるイディオムソリティアゲームは、我々は英語ソリティアでそれを試してみてください:テキストファイルは、N個の異なる英語の単語を持って、我々はすぐに英語の単語の最長チェーンを接続することができるエンドツーエンドを見つけるために、プログラムを書くことができ、各言葉だけで、最高1回使用することができます。最長の定義は次のとおりです関わらず、単語の単語や文字の数の最大数。 例えば、文書があります: アップル 動物園 の象 の下 フォックス 犬 ・ムーンは、 リーフ ツリー Pseudopseudohypoparathyroidism 英語の単語の最も長い文字列が接続されている:アップル - 象-ツリー、内部のファイルへの出力には、これは次のとおりです。 アップル 象 の木の 要件プログラム(WordList.exe)入力ファイルが何であるかを知って、コマンドライン引数を処理することができ、出力ファイルがどこに配置する必要があります。学生アシスタントは、ソースコードを取得する際にこのように、あなたは一連のテストをコンパイルして実行することができます。 Wordlist.exe / input1.txt I / O output1.txt Wordlist.exe / input2.txt I / O output2.txt ... それはテストがあるので、あなたのプログラムがそれをクラッシュします、または正常に終了し、ユーザーへの迅速な情報し、コーナーの多くは、例えば、ファイルが存在しないがあるでしょうか?ファイルは任意の単語、1ワードのみを持っていない場合は、何も言葉がエンドツーエンドを接続することはできない、どのようにプログラムが出力する必要がありますか? プログラムの正しさを検証することが完了したら、プログラムの効率性をテストするためのコマンドライン・タイミング・ツールを使用することができます。もちろん、学生はまた、「法の構築」、彼らの最初のテストを導入し、プログラムの効率を改善するために参照することができ、それがどのように時間の使用を確認するために単純なアルゴリズムを記述し、その後、効率、改善、分析を分析するのが最善です... 場合、ファイルは10千個の言葉を持っているどのくらいの速あなたのプログラムを出力することができ、結果を入力してください?コースは、すべての学生が動作をテストするために大容量のファイルを同じコンピュータ上の助手となり、準備してください。
自己のアイデア:
1.ファイルを読みます
2.最初の単語を読みます
3.最後の文字Bの最初の単語を読みます
ちょうど記録された最後の単語の次の文字の最初の文字と、n番目4.読みます
サイクルはなしまで繰り返されます
6.ステップ2-5最初の単語から第nループでワード
ここで私は、同様の場合、彼の私のコピーである場合は、コードを統合するためのさまざまな方法から集められたものです
パッケージtext6_6。 輸入java.io.BufferedReader; インポートのjava.io.File; 輸入java.io.FileReader。 輸入java.io.FileWriter; インポートにjava.io.IOException; パブリッククラスOnebyone { 公共の静的な無効メイン(文字列[]引数)は、IOExceptionがスロー { // TODO自动生成的方法存根 = "input1.txt"文字列のファイル名; =新しいファイル(ファイル名)ファイル。 ファイルファイル=新しいファイル( "output1.txt"); 長いのstartTime =にSystem.currentTimeMillis(); // judeFileExists(A); IF(judeFileExists(A)) { danci(ファイル名)。 } 他 { {しようとし てFileWriter FW =新しいてFileWriter(ファイル); fw.write( "文件不存在")。 fw.flush(); fw.close(); } キャッチ(IOExceptionをE){ e.printStackTrace(); } } ロングたendTime =にSystem.currentTimeMillis(); //終了時刻を取得する } 公共の静的な無効danci(文字列S) IOException {スロー BufferedReaderのをBufferedReaderのBR =新しい新しい(FileReaderの新しい新しい(S)); StringBufferのStringBufferの新しい新しいSB =を(); 文字列= NULLテキスト; (!(= br.readLineテキスト())= NULL)、一方{ sb.append(テキスト); //読み出した文字はのStringBufferに追加され } br.close(); //閉じるストリームに読み込みます 文字列str = sb.toString()toLowerCaseメソッドは、( );. // たStringBufferと小文字に切り替え 列[]の単語= str.splitを( " [^(-ZA-Z)] +"); // 非単語の文字切り出し、全ての単語 のStringBufferヤオStringBufferの新しい新=(); 文字列の単語B1 = [0]; yao.append(B1); yao.append( ""); IF(b1.equals( "") ) { のSystem.out.println( "ファイルが空である"); yao.append( "ファイルが空である"); } そうでなければ { (words.length == 1)であれば { するSystem.out.println(「ファイルのみです英語「); } のため(int型I = 1。私はwords.lengthを<;私は++します) 文字列の終わり= b1.substring(B1。長さ() - 1、b1.length())。 //するSystem.out.println(終了)。 { 文字列は、[i]は.substringワード=(0,1)を開始します。 IF(end.equals(開始)) { (judechong(ヤオ、単語[I]))場合 、{} 他 { 端=ワード[I] .substring(単語[I] .LENGTH() - 1、単語[I] .LENGTH())。 yao.append(単語[I])。 yao.append(」「); } } } もし(yao.toString()に等しい(単語[0] + " ")) { yao.append("无互联语句")。 System.out.println( "无互联词"); } } ファイルファイル=新しいファイル( "output2.txt"); {試みる file.createNewFileを(); }キャッチ(IOExceptionを電子){ e.printStackTrace(); } {試みる てFileWriter FW =新しいてFileWriter(ファイル)。 fw.write(yao.toString())。 fw.flush(); fw.close(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } パブリック静的ブールjudechong(StringBufferのヤオ、文字列の単語) { 列A = yao.toString()。 ブール・フラグ= FALSE。 文字列[]ワード= a.split( "[^(-ZA-Z)] +")。//非单词的字符来分割、得到所有单词 ため(INT i = 0; iはwords.lengthを<; iは++) { IF(word.equals(単語[I])) { ;真へ=フラグに } } フラグに戻り; } //ファイルが存在するか否かを判定する {パブリック静的ブールjudeFileExists(ファイルのファイル) (File.Exists()){IF ( "ファイルが存在する")するSystem.out.printlnが trueに戻ります。 他の{} のSystem.out.println( "ファイルが存在しない"); falseに戻るには、 } } //フォルダがあるか否かを判断する(無修正) 公共の静的な無効judeDirExists(ファイルファイル){ IF(File.Exists()){ }他{ IF(file.isDirectory()){ System.out.println( "DIRが存在します")。 System.out.println(「同じ名前のファイルが存在し、ディレクトリを作成することはできません」); } } {他 のSystem.out.println( "DIRない存在は、それを作成...")。 file.mkdir(); } } }
このコードは、私に長い時間の複製を必要とし、熟考、来ます。