課題で、テキストファイルから単語を読み込み、その単語の数をカウントして表示するプログラムを作成しています。
例) りんご:3回です。
○単語登録用の配列数は6
○それ以上は登録できない
○アクセス制御とパッケージ化を使用する
○全ての処理をmainメソッドだけで行わない
○staticはmainメソッドのみ使用可
○以下は必ず使用
・メインクラス TextWordCounter
・単語登録用配列 tw[]
・単語登録クラス TextWord
・単語 word (文字列) privateで
・回数 cnt (整数) privateで
○その他必要に応じて適宜
getやsetを上手く使用できず、コンパイルは通りますが、単語の登録も出現回数もぬるぽになってしまいます。
とりあえずcount[]を一時的に作成して、先に単語の登録をどうにかしようと試行錯誤しているのですが、どうすればいいのでしょうか。
アドバイスよろしくお願いします。
テキストファイルはこんな感じです↓
りんご
みかん
りんご
ぶどう
りんご
めろん
すいか
きうい
ばなな
みかん
いちご
ざくろ
Java
1import java.io.*; 2import java.util.Scanner; 3import java.util.*; 4import mypackage.TextWord; 5 6 7 8public class Test{ 9 10 void scan(){ 11 12 //変数の定義 13// String tw[] = new String[6]; 14 int i = 0; 15 String s = null; 16 TextWord tw[]= new TextWord[6]; 17 int count[] = new int[tw.length]; 18 19// count[i] = tw[i].getCnt(); 20 21 try{ 22 23 //ファイルを開く 24 Scanner scn = new Scanner ( new File("テキストのファイル名")); 25 26 27 //ファイルの読み込み 28 while( scn.hasNextLine() ) { 29 s =scn.nextLine(); 30 for ( i = 0; i < tw.length; i++ ) { 31 32 //未登録単語の場合 33 if ( tw[i] == null) { 34 if("".equals( s )){ 35 //改行はカウントせずにスルーする 36 }else { 37 tw[i].setWord( s ); 38 count[i] = 1; 39// tw[i].setCnt(1); 40 } 41 break; 42 43 //登録済み単語の場合 44 } else if ( tw[i].equals( s ) ) { 45 count[i]++; 46// tw[i].setCnt(tw[i].getCnt()+1); 47 break; 48 } 49 } 50 51 i++; 52 53 } 54 scn.close(); 55 56 }catch(FileNotFoundException e){ 57 System.out.println("ファイルが存在しません。"); 58 59 } 60 61 // 登録リストの表示 62 try{ 63 for ( i = 0 ; tw[i] != null ; i++ ) { 64 System.out.println( tw[i].getWord() + ":" + count[i] + "回です。" ); 65 } 66 }catch(ArrayIndexOutOfBoundsException e){ 67 System.out.println("登録件数は上限です。"); 68 } 69 70 } 71 72 73 74 75 //実行 76 public static void main ( String [] args ) { 77 78 Test t = new Test(); 79 t.scan(); 80 81 } 82} 83
Java
1package mypackage; 2 3public class TextWord { 4 5 //単語 文字列型 6 private String word = null; 7 8 9 public String getWord(){ 10 return this.word; 11 } 12 13 public void setWord(String word){ 14 this.word = word; 15 } 16 17 //出現回数 整数型 18 private int cnt = 0; 19 20 public int getCnt(){ 21 return this.cnt; 22 } 23 24 public void setCnt(int cnt){ 25 this.cnt = cnt; 26 } 27 28 29} 30
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/30 04:22