Java初学者のためのテキストエリアの文字数カウントアプリ

このQ&Aのポイント
  • Java初学者のために、テキストエリアの文字数をカウントするアプリを作成しようとしています。簡単な本を終えた後、自分の役に立つものを作ってみたいと思っています。
  • 具体的には、縦に2分割されたフレームに、文字数カウント、行数カウント、テキストの貼り付けなどのボタンを配置します。結果はラベルで表示されます。
  • 文字数のカウント方法については、テキストエリア内の文字列を直接扱う方法がわからないため、困っています。テキストエリアの文章をString型の変数に入れる方法があれば教えてください。
回答を見る
  • ベストアンサー

テキストエリアの文字数を数えたい

Java初学者です。簡単な本をやり終えたので、ちょっと自分の役に立つ ものを作ってみようということになりました。 そこでレポート作成の際に使えそうな、 文字数、行数をカウントできるアプリケーションを作ることにしました。 具体的には、フレームは縦に2分割され、左側にボタン、右側がテキストエリアとなっています。 ボタンとは[文字数を数える][行数を数える][貼り付け]などのボタンです。 ボタンの下にその結果を表示するラベルも用意します。 貼り付けなどは既に用意されているpasteメソッドなどを使えば済む話ですが 肝心の文字数をカウントするのをどう実現するかで悩んでいます。 そもそも、テキストエリア内にある文字列?を直接扱う術が分かりません。 このままでは既に用意されている関数以外の操作は出来ないことになってしまいます。 テキストエリアないの文章をString型の変数に入れる、とかは出来ないんでしょうか。 幼稚な質問かもしれませんが、よろしくお願いいたします。

  • R-gray
  • お礼率41% (1005/2413)
  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yama06
  • ベストアンサー率61% (101/164)
回答No.2

charAt(int)を使えば任意の位置の文字を取得できます。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/String.html#charAt(int) > for(i=0;ch[i]!='\0';i++){ > if (ch[i]=='\n'){count++;}} は、 // テキストエリア内の文章をString型の変数に入れる String str = text.getText(); // 数える for(int i = 0; i<str.length(); i++){ if(str.charAt(i) == '\n'){ count++; } } でいかがでしょうか。toCharArray()で配列を取得するという 方法もあります。 詳しくは下記のAPIリファレンスを参照してください。 (仕事では毎日何十回と使います)

参考URL:
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html
R-gray
質問者

お礼

ありがとうございます! 今を持って、どうにか完成させることが出来ました!感謝です。

その他の回答 (1)

  • yama06
  • ベストアンサー率61% (101/164)
回答No.1

現時点でのソースコードをお見せいただかないことには、 どなたも回答できないと思います。

R-gray
質問者

補足

肝心の内部的な処理が分からないので無意味に近いですが・・・晒してみます ********************************************************************* import javax.swing.*; import java.awt.*; import java.awt.event.*; public class PaperHelper{ /** *GUI部品を宣言 */ private JFrame frame = new JFrame("Paper Helper"); private JPanel panel = new JPanel(); private JButton btnCLetters = new JButton("Count letters"); private JButton btnCRow = new JButton("Count rows"); private JButton btnCBoth = new JButton("Count both"); private JButton btnAppend = new JButton("Append text"); private JButton btnReplace = new JButton("Replace text"); private JLabel labL = new JLabel("-- letters",JLabel.CENTER); private JLabel labR = new JLabel("-- rows",JLabel.CENTER); private JTextArea text = new JTextArea(); private JScrollPane scroll = new JScrollPane(text); private JMenuBar menubar = new JMenuBar(); private JMenu menuHelp = new JMenu("Help"); private JMenuItem sig = new JMenuItem("Signature"); //コンストラクタ(動作メイン部分) public PaperHelper(){ /** *frame,panel,textareaのレイアウト設定 */ frame.setLayout(new BorderLayout()); panel.setLayout(new GridLayout(7,1)); text.setLineWrap(false); /** *各GUI部品の関係を設定 */ frame.add(panel,BorderLayout.WEST); frame.add(scroll,BorderLayout.CENTER); panel.add(btnCLetters); panel.add(btnCRow); panel.add(btnCBoth); panel.add(labL); panel.add(labR); panel.add(btnAppend); panel.add(btnReplace); frame.setJMenuBar(menubar); menubar.add(menuHelp); menuHelp.add(sig); /** *frameのsize,visibleをセット */ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(600,800); frame.setVisible(true); /* *ボタンが押された時のアクション設定 */ //append text btnAppend.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ text.paste(); } }); //replace text btnReplace.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //?????????? } }); } public static void main(String[] args){ PaperHelper application = new PaperHelper(); } } ******************************************************************** 困っていることを再度強調しますと、Cだと文字列といえど文字の配列に過ぎなかったので 一文字一文字ダイレクトに扱えたのですが、Javaでそれをどうしたらいいかが分かりません。 行数を数えるのもCだと for(i=0;ch[i]!='\0';i++){ if (ch[i]=='\n'){count++;}} て感じにできるのはわかるのですが似たようなことをJavaでやるにはどうしたら。。。 ということで困っています。初心者丸出しで申し訳ないのですがお願いいたします。。。

関連するQ&A

  • テキストエリアのイベント

    天才プログラマーの皆様。JavaScript、jQuery テキストエリアのコンテキストメニューによる貼り付け・切り取りイベントを取得(実行された時の処理を設定)したいです。 ツイッターのツイートの文字数は、右クリックによる貼り付け・切り取りにも反応して文字数をカウントしています。 このサイトはできていないようですが、、 setTimeoutでずっとカウントしてればいいですが、ブラウザに負担が大 よろしくお願いします。

  • テキストエリアで文字数が200になったら警告

    テキストエリアで文字数が200になったら警告するようなことができますか? (例) テキストエリアに文字を入れていって、201文字目に入ったらぽっぷアップで「これ以上入力できません」とお知らせ。

  • テキストエリアにあわせた文字サイズ変更

    Javascript自体うまく動かすことができず、 サンプルを探しても見つからず、困っております。 やりたいことは、 Aのテキストエリアに入力した文字を「OK」ボタンクリックと同時に Bという別のテキストエリア(エリアの枠は固定)にリサイズ表示させたいと思います。 テキストエリア自体を文字数により大きくするサンプルはありましたが その逆のテキストエリアのサイズに文字をあわせるものが見つかりません。 申し訳ありませんが、おしえていただけますでしょうか。

  • テキストエリアの文字制限をはずしたい。

    メールフォームにてテキストエリアに文字制限を外したいです。 kent-webを流用しています。 テキストエリアに文字数の制限があるようなのではずしたいのですがいかんせん、どこをいじればよいのかわかりません。 よろしくおねがいします。

    • ベストアンサー
    • CGI
  • テキストエリア入力文字数の表示で全角と半角を区別したいです。

    JavaScriptで以下のようにテキストエリアで入力文字数を表示させているのですが、 全角文字も半角文字も同じ1文字としてカウントされてしまいます。 入力された文字が全角なら2、半角なら1としてカウントするように出来ないでしょうか? ================================================================ /*テキスト入力フォームで文字数を表示する*/ function ShowLength( str ) { document.getElementById("inputlength").innerHTML = str.length + "文字"; } ---------------------------------------------------------------- <textarea cols="70" rows="10" onkeyup="ShowLength(value);" /></textarea> <p id="inputlength">0文字</p> ================================================================ 宜しくお願い致します。

  • Mac テキストエディットで文字数と行数を変える

    テキストエディットで、 文字数36、行数を26に変えるにはどうすれば良いの? 教えてください。

    • 締切済み
    • Mac
  • テキスト文字数を数えてくれるソフトありませんか?

    タイトルの通りです。 webなどの投稿などで文字制限があって書きたいことのすべてが 収まらないケースが多々あります。 300文字だったり、127文字だったり。 そこで少々文面を短くしたり、言い換えたりして文章を作っています。 そうすると、まだ文字数オーバーなのはエラーで分かるのですが、 何文字多いのかがわかりません。 つまり、あらかじめ文字数をカウントしてくれるテキストソフト上で テキストを打ち、これをコピペすればいいのではないかという結論に達しました。 そんな便利なソフトご存じありませんか? よろしくお願いします。

  • フォームテキストエリアの文字制限について

    ** どなたか分かる方、教えてください。 フォームのテキストエリア(複数行の)で、 1.入力できる文字数を制限したい(200文字とか) 2.テキストエリアの右側に出てくるスクロールバーを消したい ・・・のですが、出来そうなのに、私にはできません。 cgiは使えない環境です。 あとはどんな方法もOKです。 何か方法がありますか? --------- くろぶた

  • あらかじめ入力されたテキストエリア内のバイト数表示

    以下のようなスクリプトで、テキストエリアに入力された文字のバイト数をカウントしているのですが、 あらかじめテキストエリアに文字が入力されてる場合に「0文字」と表示されます。 ページを開いたとき、あらかじめテキストエリアに文字が入力されてる場合に、そのバイト数を 表示させる方法はあるでしょうか。 もし、おわかりになる方がおられましたら、ご教示いただければ幸いです。 function ShowLength( str ) { len = 0; for(i=0;i<str.length;i++) { var c = str.charCodeAt(i); if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)){ len += 1; } else { len += 2; } } document.getElementById("inputlength").innerHTML = len + "文字"; } <textarea onkeyup="ShowLength(this.value);"></textarea> ちなみに、onload="ShowLength(this.value);"では上手くいきませんでした。 宜しくお願い申し上げます。

  • テキストボックス内の文字数

    具体的にはパワーポイント内の総文字数を知りたいのですが、現在、各テキストボックスからワードにコピペして(D&D)、ワードの文字カウント機能を使って文字数を出しています。 もっと効率の良い方法をご存じでしたら是非教えてください! PPTには、アウトラインはなく、テキストボックスとグラフのみで、送信→ワードも使えません。 原始的な作業がこの暑さにはつらいです! よろしくお願いします!!!

専門家に質問してみよう