[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/06 13:20 / Filesize : 292 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド102【大歓迎】



1 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:21:29 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド101【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1177938653/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

次スレは>>980あたりで。

752 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:47:59 ]
>>751
Σ( ̄ロ ̄lll)
wait(long)じゃなくてwait()のところを読んでいたので気がつかなかった・・・

感謝です

753 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:50:42 ]
>>750
sunの開発者向けページにあるチュートリアル見ると幸せになれるよ。
sunのjavadocは完全に公開仕様な部分しかふれてないから
実装よりの事は伏せてある(リスナが呼ばれる順に依存しちゃダメな理由とか)。
外部プロジェクトから取り込んだライブラリのドキュメントと見比べると
コピペだって事が分かる。javadocの方針は仕様のみ書けって事だからそういうもんなんだろ。
ただ、そのコピペが所々間違えてるんでチュートリアルとかガイドをちゃんと読んだ方が良い。


754 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:57:40 ]
>>753
ここですか?
jp.sun.com/developers/individual.html

755 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:10:18 ]
>>749
>左のパネルには可能な限り大きな正方形を表示します。
>左のパネルの横幅は縦幅以上には広がりません、
>ウィンドウが横に広がれば
>右のパネルの横幅は変わらず、左のパネルだけが広がります。

矛盾してない?

756 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:39:30 ]
ウィンドウの横幅を広げれば、自動的にウィンドウの縦幅も広がっていくって事なんじゃない?

757 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 10:56:54 ]
>>748
よく知らんが、shutdownは残りのタスクが終了するまで待つとかしないん?

758 名前:749 mailto:sage [2007/06/23(土) 11:43:23 ]
分かりやすい説明がが書けず、すみません。

>>755
ウィンドウが横に広がれば、
右のパネルの横幅は変わらず、左のパネルだけが優先して広がるが、
左のパネルの横幅がウィンドウの縦幅の大きさまで達するとそこからは右のパネルが広がりだすという事です。

>>756
いえ、そうではありません。
ウィンドウが縦に広がった場合は特に特別な事はなく、右のパネルも左のパネルも
ウィンドウが広がった分だけ広がります。

759 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 12:11:12 ]
ああ、つまり
┏━━┳━┓
┃   ┃  ┃
┃   ┃  ┃
┗━━┻━┛
では無く、
┏━━┳━┓
┃   ┃  ┃
┃   ┃  ┃
┣━━┫  ┃
┗━━┻━┛
なんだな。左下にパネルで無い部分があると(右下にもあるかも知れないが)。


760 名前:749 mailto:sage [2007/06/23(土) 12:19:39 ]
あ、左のパネルが長方形でもその中に描写可能な最大の正方形をと描くという意味で、
左のパネル自体が正方形という意味ではないです。

この記述は質問レスにいらなかったかもしれませんが、
左パネルの(横幅が縦幅に達した後)広がりが止める理由が分かってもらえればと思い書きました。
実際紛らわしくなっただけのような気もしますが(^_^;)



761 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 13:20:50 ]
>>757
shutdown は新規タスクの追加を禁止して、現在のタスクが全て完了したらシャットダウンするんです。
新規タスクの追加を禁止せずに、以後タスクが全て完了したタイミングでシャットダウンを予約〜ってことをするにはどうすればいいのかなーと。

762 名前:デフォルトの名無しさん [2007/06/23(土) 18:04:47 ]
学校でコメントアウトに日本語が含まれるプログラムを自宅のPCでコンパイルすると、
警告:この文字は、エンコーディング MS932 にマップできません。
との警告が表示されます。
学校のPCでは問題なくコンパイルできます。
自宅でのコンパイルの警告をなくしたいのですが、どなたか方法知りませんでしょうか?

763 名前:デフォルトの名無しさん [2007/06/23(土) 18:11:42 ]
swingでダイアログを作ろうとして、
Dialog NewDialog = new java.awt.Dialog(new BaseFlame());
と書いても

Dialogが解決できませんとeclipseに怒られてしまいます・…
所有者ってなんでしょうか。親フレームだと思ったのですが…


764 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:32:55 ]
judeでクラス図を書こうとしてるんですけど、どうかいていけばいいかわかりません。
問題
ある旅行代理店では,宿泊施設と交通機関のチケットをセットにした商品販売を開始することにした.
この商品販売のための,計算機システムの導入も検討している.
この商品は顧客が店舗に行き,代理店の店員と価格や時間等を考慮し相談しながら販売することを想定している.
しかし,将来は顧客自身がウエブサイトや携帯電話等を通して,この商品を購入することが可能となるようにしたいと思っている.
この代理店は以下の三つの既存システムを利用可能である.

765 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:35:09 ]
* 宿泊施設の空室照会および予約システム: 交通機関の駅等の名前と,宿泊人数,宿泊希望日を入力すると,宿泊可能な宿泊施設の候補を5つ程度教えてくれる.
候補は価格の安い順,高い順でソートできる.
候補として提示される宿泊施設の情報は,施設が提供した自由記述の説明である.そして,空室を予約することができる.
* 交通機関(列車,バス,飛行機)の空席照会および予約システム: 人数,出発希望日時,到着希望日時と到着先を入力すると,空席がある交通機関の組合せ候補を5つ程度提示してくれる.
移動時間の短い順,価格の安い順で候補はソートされる.
そして,空席を予約することができる.
* 最寄駅等の照会システム: 住所を入力すると最寄の交通機関駅等の候補(5つ程度)と,そこまでの距離を教えてくれる.

尚,支払い業務については当面考えなくても良い.

766 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:39:24 ]
上記に示した商品販売のための計算機システムの設計をせよ

って問題です。
どうやって作っていけばいいのかおしえてください。

767 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:41:18 ]
>>763
たぶんDialogの完全名を解決できていない。
インスタンス生成の方にはjava.awt.を付けてるのに変数名の型に付けてないのは何で?

>>764-766
judeの使い方について説明を求めているのであれば板違い。ソフト板とかか?(違うかも)
宿題なら宿題スレへ。

768 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:41:57 ]
なんのために学校行ってるの?

769 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:46:44 ]
>>762
ソースファイルの文字エンコーディングを調べて、
例えばutf-8なら、
javac -encoding utf-8 ソースファイル
のようにコンパイルするか、
自宅のPCのOSで使われている文字エンコーディングにソースファイルを変換してからコンパイルすれ。

770 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 18:50:48 ]
>>763
せっかくswingでダイアログ作るならJDialog使えよw



771 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 19:01:53 ]
>>749 >>755-760

これでどうかな?

sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29497


772 名前:763 [2007/06/23(土) 19:26:05 ]
>>767

ありがとうございます。
単なるimport文抜けのミスでした…


>>770
フォントサイズとかレイアウトとかを自分で変更したかったので・・・
JDialogだとなんかフォントおかしくなりませんか?

773 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 19:49:55 ]
>>772
現行のswingスレの478あたりからの流れを読むといいかも

774 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 20:44:10 ]
intをStringにキャストするにはどうすればいいんですか?
int a=1;
String s;
s = (String)a;
これでエラーになります。

775 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 20:51:20 ]
Integer.toString(a);
あるいは
String.format("%d", a);


776 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 20:54:47 ]
>>775
ありがとうございます。

777 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:04:52 ]
StringBuffer sb = new StringBuffer();
String s = sb.append(a).toString();


778 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:09:39 ]
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
pw.printf("%d", a);
pw.flush();
String s = sw.toString();


779 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:11:17 ]
>>777-778
面白い?

780 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:14:27 ]
「int を String に変換」 はできるけど、「int を String にキャスト」 は不可能だと思うが……

Integer.toString(v) も『キャスト』って呼んでいいの?



781 名前:772 mailto:sage [2007/06/23(土) 23:02:08 ]
>>773

おお、そんな方法があったのですね。
自分でダイアログ用のライブラリを作ってしまいましたorz


782 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:04:07 ]
変数の帰り値を取得するのってどうするのでしょうか?

PHPの場合は
function test(&$abc, &$def) {
}

という感じだったのですが、javaの場合??になっています。


783 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:05:10 ]
>>780
>>774に対する回答としては、「キャストできない」が正解だろうな。
>>775のやり方は「キャストではないけど、変換は可能」だし。

784 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:06:46 ]
>>782
[戻り値の型] メソッド名(引数1, 引数2){}
適当にJavaの解説サイトくらい読んでから質問しろな

785 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:16:01 ]
PipedOutputStream po = new PipedOutputStream();
PipedInputStream pi = new PipedInputStream(po);
PrintStream ps = new PrintStream(po);
ps.printf("%d\n", a);
ps.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(pi));
String s = br.readLine();


786 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 03:01:39 ]
>>785
パイプが詰まったら止まっちゃうだろう。マルチスレッドで

787 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 05:50:02 ]
詰まらなくても \n 忘れると止まるw

788 名前:デフォルトの名無しさん [2007/06/24(日) 14:21:26 ]
Javaでフォーム最前面表示って可能ですか?
toFront();ループでやってみたんですが
常に最前面表示される方法は無いでしょうか?
アクティブでなくても構いません

789 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 14:42:47 ]
SwingかHTMLか話はそこからだ

790 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 14:49:27 ]
>>788
1.6以降なら java.awt.Window#setAlwaysOnTop(boolean)

それ以前だと標準APIじゃ無理。
JNI使って自力でやったりするしかない。



791 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 14:50:30 ]
>>790
1.5以降だった。

792 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 15:07:20 ]
main(String[] args) の argsの引数を受け取って、
String s1 = args[0];
String s2 = args[1];
という文を書くと、
引数無しで実行するとエラーになってしまいます。
エラーではなく、正常に実行されてif文で「引数を入れてください」みたいなコメントを出したいのですが
どういう条件にすればいいんでしょうか?

793 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 15:17:25 ]
>>792
args.length でチェック。


794 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 15:38:05 ]
プロパティファイルって普通どこにどんな名前で保存するんでしょうか

795 名前:デフォルトの名無しさん [2007/06/24(日) 17:26:43 ]
JFreeChartに関して
同じグラフの中に棒グラフと折れ線グラフを表示する方法はありますか


796 名前:792 mailto:sage [2007/06/24(日) 17:29:46 ]
>>793
出来ました。ありがごうございます

797 名前:デフォルトの名無しさん [2007/06/24(日) 17:36:52 ]
質問があります。入門書に以下のようなサンプル例文があったのですが、
実際のJavaプログラムではこのようなオブジェクト作成、クラス利用は
どのように使われているのでしょうか?

class roadstarCar{

int type;
int engine;

}

void output(){
System.out.println("車の型は" +type);
System.out.println("車のエンジンは" +type);
}

class honban{
public static void main(String args[]){

roadstarCar eunos = new roadstarCar();

eunos.type = NA6CE;
eunos.engine = B6;

eunos.output();
}

798 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:42:19 ]
>>797
それが書かれてた入門書って何?

799 名前:デフォルトの名無しさん [2007/06/24(日) 17:57:58 ]
SWINGで
ボタンにキーを割り当てる方法を教えて頂けませんか?
例えばOKボタンがあって
クリックしてもALT+スペースを押しても
同じ動作をする様にしたいです

800 名前:デフォルトの名無しさん [2007/06/24(日) 18:00:32 ]
コンストラクタが無いね

例で之は酷くない?



801 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:02:41 ]
>>797
勘違い系の入門書の筆頭だな、そりゃ

802 名前:デフォルトの名無しさん [2007/06/24(日) 18:05:42 ]
>>798
やさしいJavaって本です。
本当はCarクラスで、フィールド名はnumとgasだったのですがつまらないんで
マツダのロードスターをメインに書き換えてみました。

>>800
この本読んでもつかめなかったのですが、コンストラクタとはいったい何でしょうか?

803 名前:デフォルトの名無しさん [2007/06/24(日) 18:15:16 ]
ダイアログを消したいのですが、なぜか
「dispose() は型 new ActionListener(){} で未定義です。」
と言われます。
サンプルとか見てもこれで消えると思ったのですが…

OK_button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
dispose();
}
});

804 名前:ぴっころ [2007/06/24(日) 18:26:56 ]
はじめまして。ぴっころです。
Cとは少し違うかもしれませんが、キャリフラグとオーバフローフラグ
の違いを教えて頂けないでしょうか?

805 名前:ぴっころ [2007/06/24(日) 18:27:47 ]
すみません。誤爆でした。

806 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:42:19 ]
やっぱ、やさしいjavaか。最近エンカウント率高いな。
そんな本すぐに窓から投げ捨てろ!!

コンストラクタとはインスタンスを初期化するためのしくみ。


あ〜ちなみにやさしいjavaがどういう本かと言うと、
やさしいC++のポインタの説明が無くなったがだけ。
コードがまるっきし同じで説明もまあ、同じ事言ってるかな。
java独自の仕様にはとくに触れてないというか説明してないというか。

んでやさしいC++がCを知らんでもわかるようにってコンセプトでやさしいCって本と内容がかなり重複してる。

第3版なんて5.0対応と謳いつつ、内容は5.0の新機能を使ってないんで5.0でもコンパイラ通るだけ。


807 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:12:18 ]
すげー

808 名前:デフォルトの名無しさん [2007/06/24(日) 19:17:55 ]
>>797
色々直してみた
class RoadstarCar{ // クラス名はClassNameのように単語ごとに大文字で始める
String type;
String engine; // 文字列はString型(正確にはクラス)で

public RoadstarCar(String type, String engine){
this.type = type; // コンストラクタでインスタンスを生成すると同時に初期設定する
this.engine = engine; // ここでは引数で渡された文字列で型式とエンジン名を初期化する
}
public void printInfo(){
System.out.println("車の型は" + type); // メソッド名は具体的に分かりやすい名前をつける、
System.out.println("車のエンジンは" + type); // methodName()のように小文字で始めて単語ごとに大文字に
}
}

class Honban{
public static void main(String args[]){
// コンストラクタに型式とエンジン名を文字列として渡して初期化
// 文字列を表現するには" "で囲めばよい
// いきなりNA6CEとか言われてもコンパイラが困っちゃうよ
RoadstarCar eunos = new roadstarCar("NA6CE", "B6");
// ↑クラス名とインスタンス名、メソッド名を明確に区別するためにも
//  大文字と小文字を使い分けるのは重要でしょ
eunos.printInfo(); // 最後にeunosオブジェクトに情報を表示させる
}
}

809 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:24:44 ]
>>808
個人的な意見だが、俺なら type と engine は public final にする。

810 名前:デフォルトの名無しさん [2007/06/24(日) 19:25:57 ]
やさしいJavaか・・・乙
コンストラクタを説明するにはインスタンスを考えなきゃいけないんだが、インスタンスはOK?
クラスってのがデータの設計図で、実際にデータとするのがインスタンスだ。
クラスが携帯のアドレス帳のフォーマットで、インスタンスが登録した1件1件のデータと思いねぇ。

コンストラクタってのは、このインスタンスを生成する時に1回だけ呼び出される特殊なメソッド。
何か特別なこと(初期値の設定)とかする場合もあれば、何もしない場合もある。



811 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:30:03 ]
てか、やさしいjavaは576頁あって半分以上が変数・配列・制御文だからな。

>>808
コンスタラクタ付けただけかい。
carクラスにpublic void printInfo()はやめようぜ。

812 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:44:54 ]
>>803
・取り囲むクラスに dispose() が無い。
>>803 が静的文脈内にあるので、インスタンスメソッド dispose() を呼び出せない。

のどっちか。

813 名前:デフォルトの名無しさん [2007/06/24(日) 19:47:08 ]
>>811
それってどんなボッタ?

814 名前:797 [2007/06/24(日) 19:54:22 ]
すいません。やさしいJavaのレッスン8からレッスン10をずっと読み直していました。

>>806
本屋のPC書籍のところに大ベストセラーで置いてあって、他の本より安かったんで買ってみました。
この手のプログラミング言語は初めてだったので、これでいいかと思い選びました。
Javaはオブジェクト指向言語らしいのですが、本にはオブジェクト指向プログラムとは何かの説明がまったくないので
広辞苑で調べてみたのですが、ひとつひとつのクラスに役割をもたせて、複数のクラスでひとつの処理をする、という事であっているのでしょうか?
カバーの後ろ開きに載ってるやさしいシリーズ、全部おなじ内容だったんですね。流石、経済学部卒ですね>作者

>>808
補足ありがとうございます。今、理解しながら読んでいます。

>>810
本には「コード上で作成される車1台1台の事をオブジェクト、またはインスタンスと呼びます。
本書ではオブジェクトと呼ぶことにしましょう。」

とあるのですが、>クラスが携帯のアドレス帳のフォーマットで、インスタンスが登録した1件1件のデータと思いねぇ。
と説明されれば一発でわかるのに対して、車で解説されると逆に混乱してしまいますね。
本書に、Car car1 = new Car(); とあり、これでインスタンスを作成してるっぽいのですが
これを宣言する事によって、>>797で書いた例文だとhonbanクラスからroadStarCarクラスを呼び出す事が出来るようになる
という事でしょうか?

815 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:01:30 ]
>>814
君に「安物買いの銭失い」という言葉を贈ろう。

本は複数買ったほうが良い。1度に一気に買わなくてもいいから。
それぞれの記述の違いを見比べると本質が理解できる場合が多いよ。

816 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:04:40 ]
Core Javaに一刀入魂!

817 名前:デフォルトの名無しさん [2007/06/24(日) 20:07:14 ]
前面にIE
後ろにJavaアプリ(SWING)
の状態でIEがアクティブの時にキーストローク送って裏に有るJavaアプリを
操作する方法は無いでしょうか?

818 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:09:10 ]
>>799
InputMap

819 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:10:07 ]
JSPのELで、オブジェクトのアクセッサを介さずに、publicなインスタンス変数に直接アクセスすることはできますか。
他人の作ったクラスで、publicなインスタンス変数にアクセスするものがあるので。

820 名前:810 [2007/06/24(日) 20:17:31 ]
クラスとインスタンスの例えで、車とか動物だったらその本はまずNG

>>814
インスタンスを生成するってのは、まんまデータを作るって事。
変数を宣言してるので、car1はそのデータに名前をつけていると考えればいい。
つまり、Car car2 = new Car() と書けば、もう1つデータ(インスタンス)が作成させる。
(この辺の例えもアドレスデータで考える方が納得しやすい)

なんで、呼び出すことができるってのは間違っていないけど、まずはデータとして利用できるようになるって考えるべき。
アドレスデータであれば、登録(インスタンス化)したんで、見ることができるようになったわけだ。
例えばこんな感じ
System.out.println("車の型は" + car1.type);
car1のtypeを読み出している
ここまで理解できてから、「メソッド」という機能を習得する
これはクラス(データ)に操作(振る舞い)を持たせることができる機能



821 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:26:03 ]
メソッドや変数にstaticをつけると、クラスメソッドやクラス変数になるのはわかるのですが、
classにstaticをつけると、どのような処理になるのでしょうか?

822 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:28:51 ]
>>821
静的メンバクラスになる。
static がなければ内部クラスになる。

823 名前:808 [2007/06/24(日) 20:29:27 ]
>>812
ありがとうございます。

なぜか、ダイアログをfinalでnewしたらいけました・…


824 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:31:20 ]
>>821
前提として1つのクラスの中に別のクラスを記述する場合にしかclassにstaticは使わない
インナークラスっていうんだが、暫くはないものとして考えてOKだと思われ

825 名前:デフォルトの名無しさん [2007/06/24(日) 21:00:10 ]
>>822,824
ありがとうございます。
調べてみたところ、静的メンバクラスというのは、
クラス配下に静的メンバだけしか持たないということらしいのですが、
一体、どういったときに使用するのでしょうか?

826 名前:736 mailto:sage [2007/06/24(日) 21:04:04 ]
>>740さん
10日でおぼえるJava入門教室 第二版
という本なのですが・・・・
どうでしょうか?

827 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:17:13 ]
>>826
思いっきり丸の内じゃねーかwww

828 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:21:17 ]
>>825
> クラス配下に静的メンバだけしか持たない
逆。内部クラスは静的メンバをもてない。

内部クラスって用語は、結構混乱があるので注意。
本や人によっては「入れ子になったクラス」全般を指してたりする。
俺は言語規定の
> 内部クラス(inner class)は,明示的又は暗黙にstaticと宣言されない入れ子クラスとする。
って定義にしたがってるだけ。

829 名前:797 [2007/06/24(日) 21:32:30 ]
>>815
大体読んだのですが、そんな気がしてきました。
表面を軽く説明して読者をわかった気にさせる感じですね。
明日、>>816さんが奨めているCore Javaという本を大きめの書店に探しにいってみます。

>>820
ちょっとアドレス帳で作ってみました。こんな感じでしょうか?
この場合のメソッドとは何でしょうか?
本の方には、「クラスの機能を表す仕組み」とあるのですが、このプログラムの場合
アドレスブックに載っているデータを表示するのが目的なので、system.out〜の部分がメソッドになるのでしょうか?

830 名前:797 [2007/06/24(日) 21:38:47 ]
改行が多すぎると言われたので分けました。

class Addressbook{
String name;
String address;
int phonenum;

public Addressbook(String n, String a, int p){
n=name;
a=address;
p=phonenum;
}

public void show(){
system.out.println("名前は"+name);
system.out.println("住所は"+address);
system.out.println("TELは"+phone);
}

class Sato{
public static void main(String args[]){

Addressbook sato = new Addressbook();
sato.name = "佐藤";
sato.address = "東京都港区赤坂4";
sato.phone = 0355490000;

sato.show();
}
}



831 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:47:28 ]
show()がAddressbookクラスのメソッド
ほかにも、
public String 居住する都道府県を取得();
public void こいつに電話をかける();
とかいろいろ考えられるでしょ

832 名前:デフォルトの名無しさん [2007/06/24(日) 21:53:04 ]
>>828
内部クラス != 静的メンバクラスですか?

内部クラス(インナークラス)・・・クラスにstaticがつかず、静的メンバをもてない。
静的メンバクラス・・・クラスにstaticがつく。静的メンバを持っている??? ←ここが分かりません。


833 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:04:10 ]
staticが付いたクラスは名前の前に (外部のクラスの名前). が付いただけの独立したクラス

834 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:05:02 ]
>>832
静的メンバクラスは、インスタンスメンバも 静的メンバを持てる。
内部クラスは、インスタンスメンバは持てるが 静的メンバを持てない。

835 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:06:20 ]
× 静的メンバクラスは、インスタンスメンバも 静的メンバを持てる。
○ 静的メンバクラスは、インスタンスメンバも 静的メンバも持てる。

836 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:09:04 ]
>>832
実は全然違う。

public class Sample {
    public static class Inner01 {  // 静的内部クラス
        public String foo() { return Sample.this.toString(); }  // この行でコンパイルエラー
    }
    public class Inner02 {   // 非静的内部クラス
        public String foo() { return Sample.this.toString(); }
    }
}

new Sample.Inner01(); // クラス Sample 外からの Inner01 の new 方法
new Sample().Inner02(); // クラス Sample 外からの Inner02 の new 方法


静的内部クラスは、外部クラスのインスタンスを必要としない。
一方、非静的内部クラスは外部クラスのインスタンスを必要とするけど、その代わりそのインスタンスに暗黙的にアクセスできる。

837 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:10:28 ]
間違えた。

new Sample().new Inner02();

838 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:12:43 ]
>>827
そんなに糞なのか?
恐いものみたさに立ち読みしてみるか

839 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:21:31 ]
class Sample{
private int value;
static class InnerClass{
private Sample 外部クラスのインスタンス;
public InnerClass(Sample soto){外部クラスのインスタンス = soto;}
public void Hoge(){外部クラスのインスタンス.value = 2;}
}
これが内部クラス
実際C#だとこんな風にする

840 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:23:59 ]
実際っていうか、C# の内部クラスは java の静的内部クラスで、
java における非静的内部クラスは C# には無いからなぁ……



841 名前:デフォルトの名無しさん [2007/06/24(日) 22:25:56 ]
>>833-
みなさん、ありがとうございます。
むずかしいですね。
よく整理したいと思います。

842 名前:デフォルトの名無しさん [2007/06/24(日) 22:47:35 ]
フィールドは必要がなければprivate にしてカプセル化したほうが
よりスマート
クラスのできればpublic private 等を上手く使ったほうがいいだろう
javaのこういた部分は洗練されてるので私は好きですね

843 名前:デフォルトの名無しさん [2007/06/24(日) 23:32:24 ]
ある数以下に含まれている素数をすべてスクロールリストに表示するプログラムを作っているのですが
どうしても上手くいきません。どこがおかしいか指摘していただけるでしょうか?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class ex2a extends JFrame {
JTextField f1 = new JTextField();
JButton b1 = new JButton("変更");

844 名前:843 mailto:sage [2007/06/24(日) 23:33:41 ]
すいませんまちがえました。以下が本物です。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ex2f extends JFrame {
JTextField f1 = new JTextField();
DefaultListModel model = new DefaultListModel();
JList l1 = new JList(model);
JButton b1 = new JButton("表示");


845 名前:843 mailto:sage [2007/06/24(日) 23:34:49 ]

public ex2a() {
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane(); c.setLayout(null);
c.add(f1); f1.setBounds(40, 40, 180, 40);
c.add(b1); b1.setBounds(240, 40, 80, 40);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int n = (new Integer(f1.getText())).intValue();
boolean sosu = true;
for(int i = 2; i < n; ++i) {
if((n % i) == 0) { sosu = false; }
}
f1.setText("prime number : " + sosu);
}
});
}
public static void main(String[] args) {
(new ex2a()).setVisible(true);
}
}

846 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:07:13 ]
なにがやりたいのかがわからない。
JListに表示したいのならば、JListに追加する。
actionPerfomedの中は、
                int n = (new Integer(f1.getText())).intValue();
                Vector primeList = new Vector();
                for (int i = 2; i <= n; ++i) {
                     if(i が 素数) primeList.add(new Integer(i));
                }
                l1.setListData(primeList);
こんな感じだ。

847 名前:デフォルトの名無しさん [2007/06/25(月) 00:18:42 ]
>>817
は不可能なんでしょうか?
おねがいします

848 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:22:49 ]
>>847
WindowsアプリとJavaアプリのとの違いを勉強しておいで

849 名前:デフォルトの名無しさん [2007/06/25(月) 00:31:30 ]
dll経由のネイティブインターフェイスを使ったり
ランタイムをつかったり
いろんな方法があるので、具体的にどんな操作を
行いたいのかが纏まってからの方がよさそう

850 名前:デフォルトの名無しさん [2007/06/25(月) 00:35:02 ]
>>848,849
JNIで実装したいのですが、、



851 名前:843 mailto:sage [2007/06/25(月) 01:05:02 ]
>>846
ありがとうございます。Vectorの使い方がよく分からなかったので、配列を使ってやってみたのですが
シンボルが見つからないとエラーがでてしまいました。一体どこがおかしいのでしょうか?たびたび申
しわけございません。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ex2f extends JFrame {
JTextField f1 = new JTextField();
JList l1 = new JList();
JButton b1 = new JButton("表示");


852 名前:843 mailto:sage [2007/06/25(月) 01:06:33 ]
public ex2f() {
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane(); c.setLayout(null);
c.add(f1); f1.setBounds(40, 40, 180, 40);
c.add(l1); l1.setBounds(40, 100, 180, 40);
c.add(b1); b1.setBounds(240, 40, 80, 40);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int m = (new Integer(f1.getText())).intValue();
int j = 0;
int[] primeList = new int[100];
for(int n = 1; n <= m; ++n) {
boolean sosu = true;
for(int i = 2; i < n; ++i) {
if((n % i) == 0) { sosu = false; }
}
if(sosu) { primeList[j] = n; ++j; }
}
l1.setListData(primeList);
}
});
}
public static void main(String[] args) {
(new ex2f()).setVisible(true);
}
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef