JustAnswer のしくみ:

  • 専門家に質問
    知識豊富な専門家があらゆる質問にお答えするために常に待機しています。
  • 専門家が丁寧に対応
    E メールやサイト内オンラインメッセージなど、さまざまな手段で回答を通知。
    必要に応じてフォローアップの質問をすることもできます。
  • 満足度 100% 保証
    専門家からの回答を確認し評価をすることで、支払うかどうかを決めます。

rushqkに今すぐ質問する

rushqk
rushqk, プログラマー
カテゴリ: プログラミング
満足したユーザー: 9
経験:  AV機器開発、ソフトウェア設計
60440014
ここに プログラミング に関する質問を入力してください。
rushqkがオンラインで質問受付中

プログラミングの課題が解けません

質問者の質問

 


 


 


 



・テキストファイルを読み込み,2 分木に格納された英単語をC 曲線ふうに表示(この部分は既に授業にて作成済み. 解答例は授業フォルダ内のMondai20130704Ans.java を参照) ・上記のプログラムにボタンを1 つ追加し,そのボタンを押すと,A~Z(大文字,小文字の区別はしない)の英字で始 まる単語の出現回数を,それぞれ表示する 例: A(a)で始まる単語:10 回 B(b)で始まる単語:5 回 … Z(z)で始まる単語:0 回 期末課題2(任意) 期末課題 1 で作成したプログラムに,独自機能を追加せよ.安易なものは採点外とします. 独自機能の例(これに従う必要は全くない): 単語の先頭文字によって三角形を色分けする(例えば,「A」または「a」で始まる単語はHSB カラーで赤(色相値1), 「Z」または「z」で始まる単語はHSB カラーで紫(色相値1.0)を割り当て,それ以外の英字で始まる単語は赤と紫の 間の色を連続的に割り当てる.数字など,英字で始まらない単語は白を割り当てる)


 


という課題がでました。 かなり完成したものの、A~Z(大文字,小文字の区別はしない)の英字で始 まる単語の出現回数を,それぞれ表示する 例: A(a)で始まる単語:10 回 B(b)で始まる単語:5 回 … Z(z)で始まる単語:0 回 という部分で苦戦しています。 いったいどのようにすればいいでしょう。 二分木を使うそうなのですが


以下がここまでのプログラムです


 


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class Kimatu implements ActionListener {
static Tnode root = new Tnode(); //最初のノードオブジェクト(2分木の根)


public void actionPerformed(ActionEvent e) { //ボタンが押されたときの処理
char z [] = new char [25];
for (char c = 'a'; c <='z'; c++) {
System.out.println(c+"で始まる単語:" +root.getTotalA(c));
}
}

public static void main(String[] args) {
Kimatu ac_Listener = new Kimatu();

BufferedReader reader;//ファイルを読むオブジェクト
String line;//行を格納する文字列
String delim = " \t,.\"'(){}[]"; //単語の区切り記号
StringTokenizer st;//文字列を単語に区切るオブジェクト

try { //ファイル読み込み中の例外検出
reader = new BufferedReader(new FileReader("text.txt"));
while ((line = reader.readLine()) != null) {//行がある限り繰り返し
st = new StringTokenizer(line, delim);//行を単語に分割
while (st.hasMoreTokens()) {//単語が存在する限り繰り返し
root.addTree(st.nextToken());//2分木に単語を登録
}
}
} catch (Exception e) { e.printStackTrace(); }
root.disp_count();//各単語の出現回数を表示

JFrame jf = new JFrame("C-curve");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //クローズボタンで終了
MyCanvas mc = new MyCanvas(root); //キャンバスオブジェクトを作る(2分木のノードオブジェクトを渡す)
mc.setPreferredSize(new Dimension(700,700)); //キャンバスのサイズを設定
jf.getContentPane().add(mc); //フレームにパネルを貼り付け
jf.pack(); //フレームの大きさを自動調整
jf.setVisible(true); //画面にフレームを表示

JButton b1;
b1 = new JButton("検索開始");//ボタンを追加
mc.add(b1);//ボタンを貼り付け
b1.setLayout(null);//ボタンのレイアウト
b1.setVisible(true);
b1.addActionListener(ac_Listener); //ボタン1にリスナー登録

}
}
class MyCanvas extends JPanel {
int width = 0, height = 0; //キャンバスの横と縦の長さ
Tnode root;
MyCanvas(Tnode _root) { //コンストラクタ(2分木オブジェクトを受け取る){
root = _root;
}
public void paintComponent( Graphics g ) {
super.paintComponent(g); //親クラスのpaintメソッドを呼出す
width = getWidth(); height = getHeight(); //キャンバスの横と縦の長さを得る
root.disp_tree((double)width/3, (double)height/3, (double)width/3, 0, g);//図形を表示
}
}
class Tnode {
String word = null;
int count = 0;
Tnode left = null;
Tnode right = null;
void addTree(String w) {//単語の登録およびカウントメソッド
int cond;
if (word == null) { //新しい単語が来た
word = w;//単語を格納
count = 1;//出現カウントは1
left = right = null;//子ノードは左右共にいない
} else if ( (cond = word.compareToIgnoreCase(w)) == 0) {//同じ単語が来た
count++;//出現カウントを1増やす
} else if (cond > 0) { //wがwordより辞書的に前
if (left == null)//左に子ノードがないときは
left = new Tnode();//左に子ノードを追加
left.addTree(w);//左の子ノードに単語を送る
} else {
if (right == null)//右に子ノードがないときは
right = new Tnode();//右に子ノードを追加
right.addTree(w);//右の子ノードに単語を送る
}
}
void disp_count() {//単語の出現回数を表示するメソッド
if (left != null)
left.disp_count();
System.out.println(word+" の出現回数: "+count);
if(right != null)
right.disp_count();
}

int getTotal() {//自分自身および自分より下にあるノード数を返すメソッド

int sum = 0;

if(left != null) {
sum += left.getTotal();//値を返す
}
if (right != null){
sum += right.getTotal();//値を返す
}
return sum+1;//最後に自分の値も含めて返す
}
int getTotalA ( char c ){ // ここを変える dousiyou
int sum = 0;
int sum2 = 0;
int a = word.charAt(0);//頭文字を取り出す
{
if(left != null) {
sum +=left.getTotal();
}
if (right != null ) {
sum += right.getTotal();
}
}
if(a != c){
if(left != null ) {
sum2 += left.getTotal();
}
if (right != null ) {
sum2 += right.getTotal();
}
}return sum-sum2;

}
void disp_tree(double x, double y, double L, double a, Graphics g) {
double x1 = x + L*Math.cos(a+Math.PI/4)/Math.sqrt(2);
double y1 = y + L*Math.sin(a+Math.PI/4)/Math.sqrt(2);
double x2 = x + L*Math.cos(a);
double y2 = y + L*Math.sin(a);
int ix = (int)Math.rint(x), iy = (int)Math.rint(y);
int ix1 = (int)Math.rint(x1), iy1 = (int)Math.rint(y1);
int ix2 = (int)Math.rint(x2), iy2 = (int)Math.rint(y2);
g.drawLine(ix, iy, ix1, iy1);
g.drawLine(ix1, iy1, ix2, iy2);
g.drawLine(ix2, iy2, ix, iy);
if (left != null) {
left.disp_tree(x, y, L/Math.sqrt(2), a+Math.PI/4, g);
}
if (right != null) {
right.disp_tree(x1, y1, L/Math.sqrt(2), a-Math.PI/4, g);
}

}
}


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 

投稿: 3 年 前.
カテゴリ: プログラミング

JustAnswer メディア掲載:

 
 
 
Ask-a-doc ウェブサイト:簡単な質問がある場合は、さまざまな分野の専門家が回答してくれるサイトに投稿してみてはいかがだろうか。Justanswer.jp は特にお薦めだ。
10 月以来、JustAnswer.jp では一時解雇や失業、契約解除に関する法的な質問が急増している。
justanswer.jp/legal といったウェブサイトでは、
法律に関する確実な回答が得られる。
過去 30 日で JustAnswer のトラフィックは 14 パーセント上昇し、ページ閲覧回数は 40 万に近付いている...ストレスや高血圧、飲酒、心臓の痛みに関する質問にいたっては 33 パーセントという増加率を記録した。
グッド モーニング アメリカに出演しているキャリア専門家の Tory Johnson は、注目の在宅ビジネスとして、さまざまな分野の専門家がユーザーの質問に答える JustAnswer などを紹介。
専門家として登録するには、かなり厳しい審査をパスしなければなりません。
 
 
 

ユーザーの声:

 
 
 
  • なかなか解決できないトラブルだったのですが、解決までとことん相談にのってくださいました。また、パソコンをうまく使いこなせていない私でも解りやすくアドバイスしてくださいました。 本当に助かりました! 大阪府 黒崎
< 前へ | 次へ >
  • なかなか解決できないトラブルだったのですが、解決までとことん相談にのってくださいました。また、パソコンをうまく使いこなせていない私でも解りやすくアドバイスしてくださいました。 本当に助かりました! 大阪府 黒崎
  • パソコンの操作は熟知している訳でもなく不慣れですが何回もの質問に丁寧に答えていただき問題解決しました、大変助かりました、感謝しています。 兵庫県明石市 後藤
  • 回答が早く、2日間対処には時間がかかりましたが、80%諦めていたものが解決したので、とにかく感謝の一言です。 ありがとうございました。 千葉県野田市 金澤
  • まずは親身になって回答をして頂ける専門家であったこと。説明が簡潔でわかりやすく、質問者が気持ちの整理をしやすい配慮が伺えた。 岐阜県 石川
  • 短時間で的確なアドバイスを受けることができ、かつ、回答に対する質問に対しても直ちに真摯な回答が得られました。 大阪府高槻市 川嶋
  • 専門知識のある経験豊富な方に出会う機会のない人でも、このサイトで実現出来ることは素晴らしいことだと思いました。 専門家が辛抱強く回答をしてくださる姿勢にも感謝いたしました。 茨城県日立市 池田
 
 
 

専門家の紹介:

 
 
 
  • rushqk

    rushqk

    プログラマー

    満足した利用者:

    9
    AV機器開発、ソフトウェア設計
  • http://ww2.justanswer.com/uploads/RU/rushqk/2011-9-24_21937_CIMG0197.64x64.jpg rushqk さんのアバター

    rushqk

    プログラマー

    満足した利用者:

    9
    AV機器開発、ソフトウェア設計
  • http://ww2.justanswer.com/uploads/TA/taokato/2011-5-30_02329_me.64x64.JPG taokato さんのアバター

    taokato

    プログラマー

    満足した利用者:

    1
    c言語を主に従事。 触った事のある言語: c, c#, VB.net, EXCEL VBA, perl, php, TeraTerm MACRO, H8アセンブラ 他
  • http://ww2.justanswer.com/uploads/OB/obody/2015-6-17_162039_photo.64x64.jpg Nobody_1963 さんのアバター

    Nobody_1963

    プログラマー

    満足した利用者:

    1
    Microsoft Access 専門でサポート致します。
  • http://ww2.justanswer.com/uploads/KW/kwskmkt/2011-7-4_13263_DSC04002.64x64.JPG DKK2002 さんのアバター

    DKK2002

    ITエンジニア

    満足した利用者:

    811
    NTTコミュニケーションズ .com Master★★
  • http://ww2.justanswer.com/uploads/OC/oct1290/2012-4-17_123618_akodesu.64x64.JPG oct1290 さんのアバター

    oct1290

    ITエンジニア

    満足した利用者:

    38
    日本製PCメーカー顧客、企業サポート官庁PCサポート海外3店舗のPC修理業
  • http://ww2.justanswer.com/uploads/HO/holodecks/2011-10-21_0147_20111021091343.64x64.jpg holodecks さんのアバター

    holodecks

    情報整理戦略コンサルタント

    満足した利用者:

    2
    化学科卒システム計画研究所 - シニアシステムエンジニア、ディー・リンク株式会社 取締役