【初心者】Java質問・相談スレッド65【大歓迎】
1 :
デフォルトの名無しさん :
2005/04/08(金) 17:51:52
2 げと
4 :
デフォルトの名無しさん :2005/04/08(金) 18:23:23
4さま
5 :
デフォルトの名無しさん :2005/04/08(金) 21:07:44
>>1 ∧__∧
(`・ω・´) 乙!
.ノ^ yヽ、
ヽ,,ノ==l ノ
/ l |
"""~""""""~"""~"""~"
6 :
まゆみ☆ :2005/04/08(金) 22:01:33
たすけてください!!言語 ASP & javascript + vbs CREATEOBJECTにてExcel起動を行っているのですが,Windows 2000 server IIS5だと問題なく動作するのですが、 Windows 2003 server IIS6だとそのページさえいきません。。。現象としてはグループで分類し240件を超えてしまうと まったく動作しなくなってしまいます。 れ以下だとプリントできます。どなたかお知恵をお貸しください どうぞよろしくお願いいたします。以下にリンクスクリプトを記載いたします。 長文失礼いたします。 //リンクを行う parent.menu2.location.href = "TanPrint.asp";
7 :
デフォルトの名無しさん :2005/04/08(金) 22:05:49
>>7 処理の内容やプログラムの書き方に依存します
URLで示されている発言の内容について知りたいのであれば
当該スレで書き込みを行われたご本人に伺うのが良いかと思います
>>7 頭痛い。板に関わらず対立系スレの参加者って馬鹿っぽい。
JavaってGUIのからまないサーバ系処理とか単純論理演算とかだと、すでにCより速いとか いう実験結果が出てるんだけどな。 バブルソートとかそういうのね。
>>11 いまだそんな誇大広告に踊らされてんなよ(^^;
複数のベンチマークサイトで同じような結果が出ていたと思ったが
>>13 CオプティマイズなしJavaガチガチオプティマイズとかおおよそ理不尽な条件下のベンチだろ
Javaが遅いという思い込みしている人っていまだにいるのよね。 アプレットの印象が強いのだろうね。
1.1系をいまだに引きずっているのね・・・
ダイナミックなコンパイル技術は一生もののテーマ こっちでは普通にコンパイルするが、こっちではSSE使えるので使おうとか そういう実装をJavaではすでにしてるからね あらかじめコンパイルしておく技術はターゲットとなるマシンから環境が かけ離れると最適にならないわけで、Cより早い可能性は十分にあります
JavaがCより高速に動作できる唯一のパターンは、動的オプティマイズが効果するようなケースだよ、 それ以外で勝つのは無理、バブルソートが高速になるというのはハッタリ系だと思われ。
>>10 一応。そのスレは対立系スレでは無いですよ。
22 :
デフォルトの名無しさん :2005/04/08(金) 23:37:13
>>11 バブルソートなんてC,Java言語間の差じゃなくて
コンパイラの性能じゃない?
で、CとJavaで同じ速度は出せると思うけど
リソース消費量はJavaの方が大きいのだろうな、
という予想はつく。
遅いのが嫌なやつはJavaやめろよ
24 :
デフォルトの名無しさん :2005/04/08(金) 23:42:34
>>23 遅いとは思わないが、
リソースの消費が無駄に大きいのを何とかしてくれると
より好きになれると思います。
>>24 リソース消費が無駄に大きいというけど、具体的に何処が無駄だと思ってる?
>>22 最近のCPUは動作速度がおっそろしく早いので、メモリーを読みに行くような行為をするとボロボロになるんだ、
リソース消費量が多い=メモリーを読みに行く機会が増える
キャッシュヒットミスが増える、これが高速化が無理って理由の一つでもある。
さらに間接参照の多さもキャッシュヒットミスの原因の一つ。(読み込み先アドレスが読み込みの直前まで判らないため予測キャッシュできない)
まだ他にも、エラーチェック、境界チェックの有る無し等も影響して、これら全てに打ち勝たないとCより速くなるのは無理。
もちろんその可能性として色々面白いものをVMは持っているのだが、それだけでは簡単に勝てないよ。
かなり無茶なJavaらしくない汚いコードとか書けば勝てなくはないだろうけど、それはかなり不本意なプログラムになりまっせ。
>>25 メモリーだけでも二〜三倍くらい消費するよ。
>>26 「何処が無駄か」を聞いてるんだよ。それとも、指摘できないのか?
>>27 「メモリーだけでも二〜三倍くらい消費」する、
ゆえに『何処かに無駄があるに違いない』
とか言われると予想。答えになってないけどね。
>>27 Javaにとってはムダではないメモリーだよ、ガベージコレクタという重要な機能を動作させるのに必要だからね。
Cにはガベコレ無いですよね、もちろん作って入れてもいいだろうけれど、普通はそんな事はしないからね。
>>27 > もちろんその可能性として色々面白いものをVMは持っているのだが
ちなみに、知ってるものを列挙してみ?
>>30 列挙できるほど沢山はしならいが、一つに実行時オプティマイズかな、
実行中に履歴を調べて状況に応じて最適化するって奴、これが目玉かと思う。
>>33 ではもう一つ、ガベージコレクタのメモリー解放はCより速い。
>>32 っつか実行時最適化って、このスレ内で既出じゃん。
>>33 素直に教えてくださいって言えばいいのにwww
>>35 つかそれ以外に決め手になるような物も無いし・・・
>>38 ガベージコレクタのメモリー解放は解放済みマークをつけるだけだからだよ、
Cだとfreeとなるが、これは実際に解放処理がそこに入る。
>>39 ……ガベコレでメモリ再配置やるのとか知らんのか?
Cの freeだってヒープから取ったメモリなら
解放済みマーク付けるだけだぞ。
41 :
デフォルトの名無しさん :2005/04/09(土) 00:13:45
>>39 お前が回答する側に回るには
知識が無さ過ぎるぞ。
その回答は致命的だ。
>>40 >ガベコレでメモリ再配置やるのとか知らんのか?
知ってるよ
>Cの freeだってヒープから取ったメモリなら
>解放済みマーク付けるだけだぞ。
知らんかった、最近は頑張ってるんだな。
サーバサイドでは、もはや動作速度至上主義は通用しない。 安全で安定して動作することが求められている。 これは、管理された箱庭で動作するJavaなり.NETなりがサーバサイドで多く 採用されつつある主因の一つである。 クライアントサイドのアプリケーションでは、動作速度が最重視されることもまだ 少なくないかもしれない。 しかし、Microsoftはクライアントアプリすら箱庭の中で管理しようとしつつある。 年寄りの皆様、もう少し思考を行ってみませんか? でないと本当に痴呆が始まってしまいますよ?
>>43 最近の C使いはヒープも自分で実装せんのか?
>>48 いや、VMが遅いとか無駄があるとか言うような連中なら、
ヒープぐらい自力で実装しそうなもんだが。
>>49 実装した事はあるよ、その場で開放してたよ、
前後のリンク繋ぐだけだし、頻繁に使わないなら大層な処理でもないし。
ヒープの解放といえば、 ・メモリを管理してる構造体とかに未使用フラグを立てる ・前後に未使用領域があって連結できるなら連結する。 ぐらいか? これがガベコレより遅い、と。
>>50 その場で解放って何だ?
ヒープの癖に内部でfree呼ぶのかと思ったぞ?
>>51 マークつけるならストア1回、リンク繋ぐとリードが数回入るね、
キャッシュが問題になるのはリードの方、全てをヒープにして頻繁に使うJavaのような事をするなら問題が起こるね
。
Cならどうでもいい話。
>>54 リンク繋ぐのはガベコレでメモリ再配置するのと同じで冗長な処理と言われたら、
解放の部分は単に未使用フラグ付けるだけだぞ?
>>54 っつか、本当にどうでも良い話だな。
>>26 は実行時最適化しか知らなかったでFA?
>>56 >実行時最適化しか知らなかったでFA?
どうぞお好きに(藁
59 :
デフォルトの名無しさん :2005/04/09(土) 01:02:21
ファックアナル
なんか見てないうちに急にスレが痛くなったな
61 :
デフォルトの名無しさん :2005/04/09(土) 01:39:39
そうか? 文法についてあれこれ聞くだけより よっぽどレベルは高いと思うが。
62 :
デフォルトの名無しさん :2005/04/09(土) 01:46:00
JFrameを閉じたときのイベント処理はどう記述すればいいのでしょうか
>>62 java.awt.event.WindowListener の windowClosed(WindowEvent) を適切に実装した
addWindowListener(WindowListener) でセットするとか。
JFrame#setDefaultCloseOperation(int) で
javax.swing.WindowConstants の
DISPOSE_ON_CLOSE、DO_NOTHING_ON_CLOSE、EXIT_ON_CLOSE、HIDE_ON_CLOSE
とかをセットするとか。
64 :
61 :2005/04/09(土) 02:13:26
>>60 確かに痛いね。
ま、数十レスで静かになったんだから良い方なのかもしれないけどさ。
Fedora Core3 にJDK(J2SE?)をインストールしようとしてます。 CPUがPentium4 640で64BitのCPUを積んでいて、Fedoreも64bitで動作させています。 できればJ2SE 5.0をインストールしたいのですが、64Bitは Linux AMD64 Platformと Solaris AMD64 Platform しかありません。 J2SE1.4.2の方は Windows IA64 Platform Linux IA64 Platform があります。 J2SE5.0はIntelの64BitCPUには未対応なのでしょうか? どなたかご存じの方教えてください。
テレビ欄みたいなビューを持つブラウザから閲覧できるプログラムを JSP+Servletで作りたいんですが、参考になるいいフリーのソース公開ライブラリとかありませんかね? 1日を時単位で24分割、それぞれにたとえば1時〜3時みたいにひとつだけの状態 (テレビ欄で言うなら「その時間の放送番組」のようなもの)を付加していく、 最終的に8〜12個のカテゴリ(テレビ欄で言うなら「各テレビ局」)を管理したいのですが。
>>67 JSP+Servletなら最終出力はhtmlだろうから
自分でがんばってtableを組むしかないだろ。
>>69 ビューHTMLはいくらでもかけるのでまあ無くてもなんとかなるんですが
(どうせビューは動作するベースにあわせてカスタマイズしなきゃいけませんしね)、
コントローラ部としての挙動仕様を見てみたい(つーか使いたい)ことや、
DB(Oracle)勉強中なのでデータストアの部分をどのように整理しているか見てみたいと思いまして。
まあぶっちゃけ言っちゃうと自宅のDVDレコーダに対して予約を入れる/入れたつーのを
自宅鯖で閲覧/操作できるWebアプリを作ってみたいなと。そんな感じです。
>>68 釣りじゃないんですけど(つД`)
CPU詳しくないから変な勘違いしてるかも。
良ければ教えてくだされ。
>>72 俺はその一つ上のグレードのCPUだけど
J2SE 5.0のLinux AMD64 Platformで動かしてる。
ウホッ 浦山氏
75 :
デフォルトの名無しさん :2005/04/09(土) 08:04:17
readLineを使って文字列を一行づつ改行しながら読み込むにはどうしたらいいのでしょうか? concatメソッドを使ったら、改行されずにくっついてしまいますが、、
77 :
デフォルトの名無しさん :2005/04/09(土) 08:21:45
なるほど!ありがとうございます
>>72 IA64ってIA32とはまったく別のアーキテクチャだよ
Pentiumなんてナマエはつかない
だからつりだと誰でも思うのさ
>>80 そのあたりで混乱を生じているんだと思うよ
IA64ってーのはいわゆるたっかいサーバー製品用だからな アーキテクチャがまったく違う 64bit拡張IA32はx64という言い方してる
EM64はインテル独自だろ? AMDはAMD64といってるし 汎用的なx86-64がx64
>>84 「64bit拡張IA32はx64」と「64bit拡張IA32はEM64T」はどっちが正確?
EM64といってるのはインテル AMD64といってるのはAMD インテルが妥協して命令セットが統一されたので 結局そのどちらも同じでx64(MSが提唱) ってだけだろ?
87 :
デフォルトの名無しさん :2005/04/09(土) 19:08:55
あのaxisを使ったウェブサービスを勉強し始めたのですが、サーバ上のjavabeans から使うためのファイルってのはどこに置いておけばいいのでしょうか。 同じサーバ上で結構です。要は何フォルダに置いておけばいいのでしょうか?という事ですね。 ちなみに、スレ違いだった場合は激しく申し訳ない。誘導キボンヌ
>>87 WEB-INF/classesに置いておいて、
getClass().getResourceAsStream("/hoge.txt")
でInputStream取得すればいいんじゃね?
89 :
デフォルトの名無しさん :2005/04/09(土) 22:45:38
さっき拾ってきたあるアプリなんですが、 GUIがちょっと普通と違ったので調べてみたところJavaで作られてるらしかったです。 なのですが、画面の右下の所に例のティーカップみたいなのが現れません。 普段はJava製の物を動かすとそれが現れるんで これはJavaを使ってるんだなってのが分かるんですが、 これはどういうことなんでしょうか?
>>89 appletがティーカップ。
applicationでは出ない。
そういう風に作ってるんでしょう。
93 :
デフォルトの名無しさん :2005/04/09(土) 22:59:07
ガベコレなんて、ユーザーからみれば、百害あって一利無し。
>>93 そもそも、ユーザはガベコレなんて知らない。
>>90 ごめんなさい。ボケてました。ありがとう。
>>93 プログラマ責任のメモリリークが撲滅されるのでウマー
GUI についての質問なのです。 JFrame に対して、JTextField を貼り付けると(正しくは JFrame の getContentPane() で取得できるコンテナに対して)、 正常に JTextField に文字を入力することができるのですが、 JWindow に対して同様のことをすると、JTextField に文字を入力できません。 キャレット自体が表示されていないようです。 何か回避方法はありませんでしょうか???
JWindowを使う理由は?
>>98 タイトルバー、クローズボタンなどのないウィンドウを使いたかったんです。
JFrameのAPIみてみそ
101 :
97 :2005/04/09(土) 23:47:20
トップレベルじゃないから、不可能ってことですか?
ガペコレなんて自称プログラマの巻き起こすメモリリークが少々軽減される程度 ガペコレに頼るより低学歴低賃金プログラマを雇わない方が遙かに効果大 ユーザーはガペコレは知らなくてもJavaの遅さや引っかかりにウンザリ
>>102 ソフトの値段が跳ね上がり競争力上がってアボーン。
まぁ、当然他のバグもアホほどあって、火消しにハイスキルな奴を投入したりとかのリスクを考えると同意。
携帯Javaアプリなんぞはメインループの頭で必ずSystem.gc()してたりする奴も多いんだが。 (まじでメモリ足らんからねorz)
>>104 昔はJ2SEもフレームレート安定のためにそれやるの基本だったよ
世代別GC採用してからやると余計に遅くなったがね
>>102 みたいなあふぉは論外として
比較的最近のニュースによると携帯もHotspot搭載らしいので
今後はたしょうはよくなっていく・・・のかなぁ
JavaはCPUじたいがどうのこうのよりやはりメモリ総量がかなりきくからねぇ
>>102 メモリリークさせた事が無いなんて奴は半人前だろ。
そーゆー奴が凄腕プログラマである事は無い。
単にメモリリークさせた事に自分で気付かないだけ。
メモリの話はもういいよ。
つまりガペコレは、メモリリークを頻発させる、低脳プログラマにだけ必要であって、 デバッグ段階でメモリリークを除去できる、普通のプログラマや、 ソフトを使うだけのユーザーには、かえって害のある物って事だな。 でも、ドカタプログラマを大量に使う、Javaのプログラム開発では、 ある意味、必須だよな。
>>97 JFrameをsetUndecoratedにしたやつだとどうなる?
コスト軽減のため、ガベコレは画期的な物だ
大きなソースになればなるほど、メモリリークする確率は上がるし、
見つけるの時間かかるし。
ってか、実際使用してメモリリークするまで気づかない事多いし。
また、ユーザーにはJAVAでメモリリークが絶対無いって事が、
仕様上で保証されてるから安心と言えば安心。
>>109 のようなヤツが作る物が一番怪しいんだよ・・・
小さなプログラムしか作った事がないか、
自分だけが使うプログラムしか作った事がない。
もしくは配布or販売してるがユーザーが少なく
フィードバックも少なくてメモリリークのバグ報告が少ないとかじゃない?
>>109 > つまりガペコレは、メモリリークを頻発させる、低脳プログラマにだけ必要であって、
その定義であれば、世の中には低能プログラマだけしかいない。
大きな違いは自分が低能と気付いているかどうか。
>>109 は自分が低能と気付いていない人。
>>109 テストじゃなくてデバッグなんて言ってるし。
>>113 無知の知ですな。
個人的にはインスタンスを返す関数をインスタンスを引数に取る関数に直接渡せるのが便利。
C++で同じことすると速攻リークですが。。。
>>114 俺らがしっかり叩くからお前は後ろの方でギムネバ茶でも飲んでてください。
> 個人的にはインスタンスを返す関数をインスタンスを引数に取る関数に直接渡せるのが便利。 具体的にどーゆー事を言ってるんだか?
普段Javaに使い慣れてるからC++ではnewした一次変数を 渡しまくってしまってdelete出来ねぇよウワァァンってとこじゃない? アフォだけど
>>115 って修飾語を削ると、
関数を関数に渡せるのが便利ってなるんだが……
Hoge bar() { ....; Hoge aHoge = new Hoge(); ...; return aHoge; } foo(Hoge aHoge) { // use aHoge; } ってことだろうな。
>>121 aHoge・・・ahoge・・・アホ毛・・・ハァハァ。なかなかいい趣味だ。やらないか?
>>117 具体的もなにもデコレーターパターンが直ぐに思い浮かぶが?
C++だったらリークする等とは全く思わんが・・・・・・
俺としては、クラス間でオブジェクトを投げ合う様な場面で、誰が何処で
生成したオブジェクトなのかを意識する必要がないのがありがたい。
C++で hoge(new CString()); ってリークしないんですか?
>>124 書き方変えろよ!JavaにはJavaの、C++にはC++の書き方がある。
125 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/10(日) 13:04:41
>>124 書き方変えろよ!JavaにはJavaの、C++にはC++の書き方がある。
126 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/10(日) 13:08:04
>>125 アホか。
>>123 >C++だったらリークする等とは全く思わんが・・・・・・
ちょんぷろ書いたらばっちりリークしました。
どういう意味だったのでしょうか。
aho = new Nanika hoge(aho) aho.sine とでもすれ。
C++なら std::auto_ptr<Hoge> aHoge; foo(aHoge.get()); foo 側で解放処理をしない限り、Java の ようには書けないな。これがC++風
132 :
97 :2005/04/10(日) 13:51:31
>>110 でけた!
こんな俺の為にアドバイスをくれた方々、ありがとうございました。
Java厨って、相変わらずキモイね。新興宗教の信者みたい・・・
>>133 いや変態が1人いて
自作自演繰り返してるだけだと思うよ
>>133-134 誰のことだよ、いったい。はっきり書け、ボケ。お前も自作自演ダロが!
>>112-116 のガペコレ盲目的信者あたりか?こんなのを、普通のプログラマとゴチャマゼにすんな。
変態信者なんて、ほんの一部で、大半はまともなんだよ!
ketsuge
>>135 メモリーリークしないとか言いはる奴って
恐らくバグも出さないんだろうな。
注意すれば(あるいは高学歴and/or高収入であれば?)、
あらゆるバグは未然に防げるとか言い出しそう。
>>137 こういうアホが、ガペコレとかに妄想いだくんだろうな。
同じJavaを使うものとしては、哀しいことだ。
バグもリソースリークも、テストで防げるよ。
もちろんゼロにはならないが、実用的レベルでって事だ。
じゃなきゃ、銀行のシステムで、プログラムなんて使えないだろ。
それが、職業プログラマってもんだ。
いいかげん、ウザい。
敗北宣言も出たことだし、いい加減終わりにしろよ。
>>138 こーゆー奴がいるからUFJ銀行とかでシステムダウンしたりするんだろうな。
誰であれ、バグもリソースリークも未然に防ぐ事はできない。
だからテストするんだが、テストにだってバグの可能性はあるし、
テスト漏れの可能性も常につきまとう。
成果物が実用的レベルかどうかは客が判断する事だ。
それが、職業プログラマってもんだ。
ガペコレがあればメモリーリークしないとか言いはる奴って おそらくシステム開発に携わったことないんだろうな
>>143 > ガペコレがあればメモリーリークしないとか言いはる奴って
誰もそんな事言って無いと思うが。
(少なくとも俺は言って無い)
具体的にレス番示してくれるか?
粘着Java厨同士の争いっての実物初めてみた
黄金週間明けまでこんな調子なのかな?
ホントしつこいね
>テストにだってバグの可能性はあるし テストをテストするんだよ、多分
動きゃいいんだよ、動きゃ
テンプレ
>>1 >以下のエラーが表示されて、途方にくれているあなたは、下のページへ。 」
>「Exception in thread "main" java.lang.NoClassDefFoundError: 」
>
http://www.wikiroom.com/java/?path,classpath と同じ症状で途方にくれてるものですが
リンク先の処置をしても同じようなエラーが出ます
それで質問なんですがこちらwin98seでautoexe.batを開くと
loadhigh C:\WINDOWS\COMMAND\nlsfunc.exe C:\WINDOWS\country.sys
しか書いてなく
PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\J2SDK1.4.2_01\BIN
を追加したのですが
loadhigh C:\WINDOWS\COMMAND\nlsfunc.exe C:\WINDOWS\country.sys
が1つしか書いてないautoexe.batは正常ですかね?
153 :
152 :2005/04/10(日) 20:07:12
板違いスマソ 吊ってきます
JAVAのコンソールプログラムから他のプログラムに入力し、結果を 受け取るにはどうすればいいのでしょうか? pipeを使うらしいのですが、いまいち分からないです。
155 :
デフォルトの名無しさん :2005/04/10(日) 20:32:49
>>109 ソフトウェア開発の変化の上で必須となりつつある技術であり
CやJavaに携わる技術者の質の問題ではない。
ドカタプログラマを大量に使うような開発が行われていると認識しているのであれば、
それは「Javaの」プログラム開発のせいではなく、
「現在の」プログラム開発の形態がそうなりつつあるからなのだろう。
そういった意味では、現代のプログラム開発の形態に
C言語はそぐわなくなっている、ということになる。
>>154 Javaに限った話題ではありませんので
適切な場所に移動して質問されることをオススメします
とりあえず「ガペコレ」とか書いてるのは全部釣りだろ
159 :
152 :2005/04/10(日) 21:25:17
こっちで良かったようなのでできれば
>>152 の質問お願いします
>>159 こっちで良くないです
Javaの話題じゃなくてWindowsの話でしょ
ガペコレって書いてるのは同一人物 ドカタって書いてるのは同一人物 メモリリークって書いてるのは同一人物
とりあえず「JAVA」とか書いてるのは全部釣りだろ
JAVAに不満がある椰子はこのスレ来るなよ
>>159 autoexe.batに何が書かれているかはjavaとは関係ないです。
よってスレ違い。というかNoClassDefFoundErrorとautoexe.batは関係ない。
>>159 とにかく「どの行で」その例外になったかを調べて、具体的に
「どのクラスが見つからないか」を決定すること。それが自作の
クラスなら.classファイルの転送し忘れとかでしょ。そうでない
ならコンパイル時と実行時でCLASSPATHの設定が違うとか?
>>159 それ、CLASSPATHの問題だから。
というかクラス定義が見つかりませんってちゃんと書いてあるでしょ。
CLASSPATHってなに、とおもうんだったら、もう一度
>>1 を読みなさい。
それFAQだから。
>>168 classpath程度でもの凄い偉そうですね。
まぁ。その程度の人なんだけれど。
おいおい。
そりゃclasspathなんて基礎の基礎の上にちょっと調べりゃ出てくる
FAQ中のFAQなんだから、馬鹿にされて当然。
やさしく教えてたらそういうのが増えて困る。少なくとも
>>168 は
参照先を示しているだけまし。
>>170 他人をバカにしてる時点で負けてるんですよ。
人生がどうしてもうまくいきません。 おしえてください。 public class Life { public void run() { ... } public static void main( String[] args) { Thread th = new Life(); th.start(); } }
スレタイにある「初心者大歓迎」というのは嘘なわけ?
質問すみません 登録した全員に一斉にメールを送る事が出来る機能って、何ていうんでしょう
>>173 「class Life」の後ろに「extends Thread」を追加すれ。
そうしないと変数thにLifeのインスタンスを入れられない。
>175 とりあえずJavaMailでぐぐって下さいな。 ……「Javaで」登録した全員に一斉にメールを送る機能の実現方法を知りたいんだよね?
>>177 レス感謝します、ググってみます
友人と作ろうと話して、いざパソコンの前に来たら何とググれば良いか分らなくて…
助かりました
>>174 Javaの初心者は大歓迎だが
Javaの話に辿りつけてない者は相手にしない
>>180 こんなの書いてるくらいだったら
おまいが回答してやってはどうか
お前らこんなところでケンカするなよ。 >やさしく教えてたらそういうのが増えて困る。 初心者歓迎ってスレタイにあるんだから我慢汁。 答えるのが嫌なら放っておけ。 煽っても荒れるだけなんだから。
185 :
デフォルトの名無しさん :2005/04/11(月) 00:44:42
@オブジェクト.メソッド ←オブジェクトのメソッドを実行 Aオブジェクト.メソッド ←オブジェクトに対してメソッドを実行し、その結果をオブジェクトに代入 B変数=オブジェクト.メソッド ←オブジェクトに対してメソッドを実行し、その結果を変数に代入 オブジェクト.メソッドの使い方として 上記3通りがあると認識しているのですが AとBの使い分けの根拠ってあるのでしょうか?
うんこ喰った
189 :
185 :2005/04/11(月) 01:15:29
すみません。出直してきます
>>185 2と3の違いがよくわからん。2の説明に代入ってあるのに代入してなくない?
もしかして2で呼んでるメソッドの中でそのオブジェクト自身のプロパティに値をセットしてるの?
メソッドの結果をオブジェクト自身にセットするか返り値で返すかの使い分けってことかな。
191 :
185 :2005/04/11(月) 01:24:55
Aはオブジェクトに対してtrim()などのAPIを使ったときに その結果がオブジェクトに返されるのではないかと思ったわけです・・。
>>191 String は不変オブジェクトだから trim() しても、そのインスタンス自体は変化しないぞ。
>>185 @とかは機種依存文字だから使わないように。
代入してると言うより、オブジェクトの内部状態が変化したということだな。 ちなみにtrim()は値を返すので、3のやり方になるよ。 Stringのような、内部状態を一切持たない「不変オブジェクト」は、trim()とかすると、 状態が変化した新しいオブジェクトを作って返す。 2のようにメソッドを実行した結果内部状態が変わるのは「可変オブジェクト」。 Stringに対して、StringBufferは可変オブジェクトだな。 不変オブジェクトはマルチスレッド環境においても排他制御しなくても絶対安全 という特徴がある(状態がないのだから、マルチスレッドからアクセスしても、 常に同じ状態であることが保証できるから)。 一方で、なんかするたびに新しいオブジェクトをぱかぱか作るので、メモリバカ食い するという欠点がある。
195 :
デフォルトの名無しさん :2005/04/11(月) 07:39:35
文字 ① はUnicodeでは U+2460。
海外のJavaプログラマが書いたソースみると、 よくオブジェクト名の頭に"m"を付けてるんだけど、 これは何の意味なんでしょう? mIDとか、mNameとか。
ヒント: m稲垣
例えば外部コマンドの呼び出しを Runtime#exec()で行うとして、 これに任意のタイムアウト値(10秒以上経過でエラーとか) を設定することってできるんですかね? もしやったことある!って方いたら教えてください。。。
>>197 メンバーってことですか。
クラスのメンバー変数?どういう意味でしょうか。。。
ソースあさってきまつ
>>200 そう。
メソッド内のローカル変数とクラスのメンバー変数を区別しやすくする
ために、メンバー変数に m とか m_ とか f とか this-> とか付ける流
儀がある。
202 :
デフォルトの名無しさん :2005/04/11(月) 14:03:40
javaのコーディング方法についての質問です。 if (!source.equals(destination1) && !source.equals(destination2)) と、制御構文のパラメータが2行にまたがる時は if (!source.equals(destination1) && !source.equals(destination2)) { statement; } と、{ の位置を2行目と同じ行にするか if (!source.equals(destination1) && !source.equals(destination2)) { statement; } と、{ を一行下げて書くか、どちらの方が正規のJavaコーディングに 沿ってるのでしょうか?
>>201 > this-> とか付ける
付けない。っつか、構文エラーだ。
>>202 たしか、Sunのコーディング規約では上のはず。
職場やプロジェクトのコーディング規約があるならそっちに従え。
>>195 2chってSJISでしょ。機種依存文字はダメ。
っつか、Unicdeでキャラクタコードが割り当てられてても
対応したフォントが無ければ表示できないし。
>>207 個人的にはインスタンス変数である事を示すためだけに
中途半端にハンガリアン記法使うぐらいなら
this. を強制した方がマシだとは思うけど。
>>201 は入門者か? 慣れてる人なら間違えないと思うし。
209 :
201 :2005/04/11(月) 15:52:15
いやー、Javaはもう10年近く触ってるんだけど、C++も使うから間違え ちゃた。てへ。
>>207 アレだろ。最近粘着してる、ガペコレとか書いてた C++厨の彼だろ。
>>210 阿呆な癖に粘着性だけは抜群だったよね。
たぶん、まだいるから刺激しない方が良いよ。
>>210 奴はC++厨じゃなくて単なる厨だと思うが。
あんなんと同類にされたらC++厨が可哀そうだ。
>>212 そだね。
スレ違いは悪いんだけど、C++でもthisだったら「this.名前(...)」 じゃないの。thisがいきなりポインタであるようなクラスって 作る方法あるの?
すんません、逆にthisって全部ポインタっすね、吊って来ます…
粘着Java厨キモイ
text→XML→XSLで変換 という処理を作成したいのですが 中間のXMLファイルを出力したくありません。 仮想ファイルみたいのを扱えるクラスは存在するのでしょうか?
>>207 =
>>217 お前、ガペコレとか言ってたC++厨だろ。
お前みたいな低レベルの馬鹿に、Javaは無理なんだよ。
このスレから消えろ。
>>208 mとかfとかつけるのはハンガリアンでは あ り ま せ ん
無職で2chばかりやってると、社会復帰できないほど性格が歪んでくるよね。 いくら妄想を書き込んでも、将来は暗いし誰も雇ってくれないし。 本当は、もう人生終わってるんだよね。
>>221 自分の実体験ですか? ま、頑張ってね。
>>221 ガンバレ
プログラマやめて新聞配達でもすれば生きてはいける(´∇`)
無職で2ちゃんに入り浸りで、JAVAプログラマになるのが夢って、夢というより妄想だよな。すねかじられてる親は泣いてるよ。
>>220 ハンガリアンに詳しい人ハケーン
っつか、この件に関しては、接頭辞に m_ 使おうが m 使おうが f 使おうが
やってる事同じだから区別する必要はないのだが。
>>224 ちゃんと自分の事理解してるじゃん。
頑張ってね。とりあえずバイトからかな?
バイトしながら2chやってる奴を、無職の妄想家っていうんだよ
>>227 あぁ、バイトはしてるんだ? 偉いね〜(完全無職よりは)
>>226 プ
自分はバイトをやってるから無職じゃないとか思ってた?
プププ
コンビニのバイトは、やっぱ「職」とは言えないよなあ。
>>221-230 お前ら Java に関係ない話は他所でやれ。
っつか、なんでバイトって単語に過剰反応してんだろう?
byte[] bytes = { (byte)221, (byte)229 }
byte[] signature = { (byte)202, (byte)254, (byte)186, (byte)190 };
フリーアルバイター = 無職 フリーアルバイター = 無職 フリーアルバイター = 無職 援交 = 売春 援交 = 売春 援交 = 売春 これ社会の常識
まだ、正確な不具合箇所が判明してないんで悪いんだけど 知っている人がいたら教えてください。 Linux上でApache+Resinを連携させてServletを作ってるんだけど HttpServletRequest#getParameter() をコールしているところで 例外が発生して困ってます。 発生条件として、秒間20〜30アクセスの負荷をかけると パラメータ取得時にArrayIndexOutOfBoundsExceptiongaが発生します。 やっぱ、getParameter()を使ってる箇所を synchronized 化するしかないですか? それとも、Resin 特有の問題で他のコンテナでは違う実装方法がとられてたりするんですか?
>>218 XMLをStringやchar[]やbyte[]に保持しておけばいいのでは。
つーかストリームわかっていればそれがファイルだろうがソケットだろうが メモリ内だろうがかわらんだろうに その使用するライブラリがFileを必ず使うとかだとちと無理だがな
>>225 というかmとかつけるのはプレフィクスであって
ハンガリアン記法はプレフィクスとして型名の一部をつけるのが特徴じゃなかったっけ?
239 :
デフォルトの名無しさん :2005/04/12(火) 00:41:55
J2MEじゃなくてJ2SEでbluetoothを用いたプログラミングをしたいんですが、できますでしょうか? どこかにサンプルコードがあれば、教えていただきたいです。 ME用のサンプルコードならあるのですが、SE用のがgoogleしても見あたらなくてこまってます。
240 :
デフォルトの名無しさん :2005/04/12(火) 01:07:13
JDK1.4環境で、HttpUrlConnectionクラスから接続に使用したproxyの情報を 取得する方法が判るとかいう方います? JDK5.0のproxySelectorを使えとか言われるとそれまでなんだけど。
242 :
デフォルトの名無しさん :2005/04/12(火) 01:08:56
>>170 > やさしく教えてたらそういうのが増えて困る。
じゃあお前が出て行きゃ済む話では?
俺は優しく教えるし、そういうのが増えても特に困らん。
243 :
デフォルトの名無しさん :2005/04/12(火) 01:10:29
>>196 MFCはm_だよね。
つーか、そんなにm多い?
Javaのコーディング標準では推奨していなかったと思うけど。
244 :
デフォルトの名無しさん :2005/04/12(火) 01:13:22
ガストアルバイター ガストアルバイター ガストアルバイター
>>241 System.getProperty("http.proxyHost") とかでとってこれんかったっけ?
実装依存かもしれんが?
>>242 ところで70番以上まえのネタをいつまでやるんだ?
今日の格言 無知な初心者とガペコレとか言ってる奴は氏んだ方が良い
しつこさと執念深さだけは(☆∀☆)1だね
249 :
235 :2005/04/12(火) 08:27:39
で、俺の質問に答えられる先輩方はいないわけか・・・ 面倒だがコンテナのソース追うか・・・
250 :
デフォルトの名無しさん :2005/04/12(火) 08:27:54
Tiffファイルから、画像データ部分をバイトで取得したいです。 組み込みなので ネイティブに依存しないライブラリで、そのようなことができるものはりますか? (JAIはDLLなどが必要みたいのでだめです)
>>236 いったんString,char[],byte[]にするより、XSLへの入力だったらDOMに
するのが実行効率が最も良さそう。
252 :
デフォルトの名無しさん :2005/04/12(火) 11:01:09
すいません。質問なのですが・・・。 Javaサーブレットを使うWebなどでDBのロックって可能なんでしょうか。 というか、そんなことやっちゃっていいんでしょうか。 何かのシステムである画面にDBのデータを表示し、 その後、その画面情報を編集して更新をするという場合に 最初の情報取得時にDBのロックをしてしまうと、 他人さんが情報取得できなくて、Webじゃなくなりますよね。 最初の情報取得時にタイムスタンプ情報をあわせて取得しておき、 編集実行時にそのタイムスタンプ情報に変更がなければ、 更新をかける、というふうに考えるのが普通なんですよね?
>>235 まずApacheと連携しない形でテストして、問題が起きるかどうか調べた方がいい。
こういう場合は問題の切り分けが大切。
複数のリクエストにまたがってDBのロックを行うのはかなり特殊です 限定条件下でなければ普通は使いません >他人さんが情報取得できなくて ではなく、クライアントの生死判定が簡単にはできないのが理由 クライアントが落ちても(意図的にブラウザを閉じた場合も含む)ロックを外せないのは致命的 コネクションを保持し続けないといけないのも微妙なところです タイムスタンプを使用する方法はロックの次に確実性が高いですね ユーザー数が少ないのであれば普通に使う方法だと思います ただ、そこまで厳密に整合性を合わせないといけないプログラムの場合 使用するユーザーも限定されるのでは? 自分の場合は、後勝ちで問題ない仕様にした上でチェック無し更新に落とすことが多いです
>>249 それセッションアクセスしてる?
なら同期化が必要だよ
わからなければ図でかいてみれ
コンテナ依存の部分は俺はわからんが、上記のことは
わりと運用してから多発しているのをみる
>>250 Tiffファイルをバイトストリームで読み込んでヘッダ部分を読み飛ばせばイイじゃん
257 :
200 :2005/04/12(火) 18:27:41
>>201 お礼が遅くなりました。
ありがとうございました(・∀・)
コマンドラインから入力した数値の和を 計算するプログラムを作りたいのですが、 入力されたコマンドライン引数が、 数値だけならtrue 数値以外に文字も入力していたらfalse という感じで分岐させたいのですが、 どうしたらいいんでしょうか?
Integer.parseInt() して例外が投げられたら false
>>258 char[] chars = args[0].toCharArray();
boolean isDigit = true;
for(int i=0; i<chars.length; i++) {
isDigit = Character.isDigit(char[i]);
if(!isDigit) break;
}
こんな感じで判別すればいいと思われ。
Exception発生させて判別なんて論外です。
boolean b = false; int[] num = new int[args.length]; try { for (int i = 0; i < args.length; i++) { num[i] = Integer.parseInt(args[i]); } b = true; } catch (NumberFormatException e) { b = false; }
262 :
258 :2005/04/12(火) 21:04:36
>>259 , 260, 261
みなさまアドバイスありがとうございます。
isDigitを使う方法とtry catchを使う方法があるみたいですね。
260さんによるとException発生させて判別する、
というのは論外との事ですが、
エラーを残したまま処理するよりも
エラーをちゃんと解決して処理させた方がいい、
ってことですか?
>>262 例外処理ってのは予期せぬ事象が発生したときのためにある。
決してPGが楽するためのものではない。
>>263 ここでは"数字じゃない"って事象が例外じゃん
せっかくparseIntが例外投げてくれるんだから、それを使えばいい
もし、「数字ならA、記号ならB、ひらがななら・・・」みたいな処理ならば、
ここでNumberFormatExceptionを使うのは適当でないと思うけどね
Character.isDigitを使えば、 個々の文字が「数字」はは判定できるけど、 全体として「数値」として意味を持つ形をしているかは 判定できないですね。 あと、アラビア数字以外でもCharacter.isDigitがtrueになる 「数字」群がいくつかあります。 本気でやるならNumberFormat.parseでしょうか。
「動きゃいいのよ」
あ、アラビア数字ってのは、0〜9の算用数字(インドアラビア数字) のつもりでした。 単にアラビア数字というとアラビア文字の数字(0〜9とかなーり形が違う) の意味になることもあるのでした。
268 :
263 :2005/04/12(火) 21:42:59
私は非チェック例外はcatchすべきではないと思ってましたが諸説あるようですね。 NumberFormatExceptionをcatchするのも間違ってないかも。 只、Integer#parseIntは全角数字も通ってしまうようなのでご注意を。
>>268 このケースに限らず、
「Exceptionがthrowされる事を判断材料に使うのべきでない」
という考えは賛成。Exceptionのthrowは、コストの高い処理だから、
そういうことに使うものではない。
楽チンで確実に動作するコードが得られるから使っているだけだと思う。
俺はperseIntで手抜きする派。
0から9の算用数字なら、正規表現 ^[0-9]$ とマッチするかどうかでもいいんじゃないか。
throwのコストなんてグチグチ考えるなら、JAVAなんてやめろよ。
>>270 正規表現やisDigit()ではint値の範囲チェックが出来ないです。
まあ自分ですればよいですが。
throwのコストなんて、よっぽど頻繁に呼ぶ処理や 大量に回すループの中でもなきゃどうでもいい程度だよな。 コンパイラが吐くバイトコードまで考えて最適化するようなレベルならともかく。 まあ、このケースだとthrowを例外ではなく条件分岐に使ってるから 意味的に正しくないというのは同意。
274 :
218 :2005/04/13(水) 00:25:29
>>236 ,237,251
レスありがとうございます。
251殿のDOMというのが気になったので調べてようやく理解しました。
実はXMLがさっぱり分からなくて
何から調べて良いのか分からない状態だったのでとても助かりました。
javax.xmlパッケージの存在も知らなかったので、
強引に処理しようと思っていましたが、
DOMSourceとか色々使ってスマートに出来上がりました。
ありがとうございました。
275 :
デフォルトの名無しさん :2005/04/13(水) 00:34:02
ACCESSのグリッドみたいなものをHTMLのTABLEタグを利用して作成したいとおもうんですが ソート(複数列可能 SQL のORDER BY の要領で)をどうやって実装すればいいのか分かりません これを実現するにはどのようなデータの保持の仕方がいいか教えてくださいまし
>>276 すいません
おととしソフ開取らせていただきました
>>275 処理スピードのことを考えないのなら意外と簡単に実装できるよ。
例えば、ORDER BY a, b, c を実装したい場合
a, b, c のフィールドを持つクラスを作って
c -> b -> a の順でソート処理を行えばよい。
ORDER BY の指定と逆にソートをするってところがポイントで
良く考えればわかるはず。
ただし、ソートのアルゴリズムは「安定なソート」である必要がある。
まー、コレクションのソートはマージソートなので問題無し。
279 :
デフォルトの名無しさん :2005/04/13(水) 01:02:09
>>273 >throwのコストなんて、よっぽど頻繁に呼ぶ処理や
>大量に回すループの中でもなきゃどうでもいい程度だよな。
どうでもいいと言えるほど軽い処理ではないことは知っておいた方がいい。
よっぽど頻繁に呼ぶ処理や大量に回すループの中でもなきゃ どうでもいい程度に軽いよ。
入力値チェックというのは結構頻繁に呼ぶように思うんだが。
んなもんバリデータでも使ってろよ、アホか
> 処理スピードのことを考えないのなら意外と簡単に実装できるよ。 Javaで処理速度なんて考えるなよ。 何も考えないで素直に実装するのがJava流。 もちろん遅いが、誰でも作れて、メンテナンスも楽だろ。
>>284 > 何も考えないで素直に実装するのがJava流。
throw を使うのが素直なのかは疑問。
>>282 そんなのはコストが気になるような頻繁ではない。
>>281 >throwのコストなんて、よっぽど頻繁に呼ぶ処理や
>大量に回すループの中でもなきゃどうでもいい程度だよな。
どうでもいいと言えるほど軽い処理ではないことは知っておいた方がいい。
SwingのどこがMVCなのか懇切丁寧に解説してるサイトってありますか?
>>287 よっぽど頻繁に呼ぶ処理や大量に回すループの中でもなきゃ
どうでもいい程度に軽いよ。
>>289 もしかして、「最近のJavaは、Cと比べても充分に速い。」とか言ってる人?
いや 全ての処理に、エラー処理を記述するべきだ。 とか言ってる人かも。
>>290-291 おまえはJavaをやる気がないなら他所のスレ行け。
まぁ他所のスレからも追い出されたのかもしれんが。
Process process = Runtime.getRuntime().exec("/bin/bash -exec /opt/java/test.sh"); みたいに記述すると動くんだけど、 Process process = Runtime.getRuntime().exec("/opt/java/test.sh"); とすると動かない。。。プロンプトで直接実行したらどっちもうまくいくのに。 例えばtest.shにパラメータを渡したいと思って Runtime.getRuntime().exec("/bin/bash -exec /opt/java/test.sh param1"); みたいに書いてみてもうまく渡ってないし・・・ 詳しい人アドバイスを下さい。。。
>>282 入力チェック自体は頻繁でも、
チェックの結果exceptionをthrowするcaseはそんなに多くないんじゃね?
まあ状況にもよるが。
本当に気になるのならバリデータ自分で書くんだろうけど、
労力に比べて得られるモノが少なそうだよな。
今回はそれほどのことでもないだろ、と思うが如何。
JAXBとかでXMLのデータバインディングとやらをやってるんですが、 eclipseでは問題なく動くんですがコマンドラインからだとエラーです。 >java -classpath C:\Sun\jwsdp-1.5\jaxb\lib\*.jar;C:\Sun\jwsdp-1.5\jwsdp-shared\lib\*.jar -jar hoge.jar Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException JAXBExceptionはC:\Sun\jwsdp-1.5\jaxb\lib\jaxb-api.jarにあるんじゃないんですか。。。 クラスパスについてあちこち調べましたがさっぱりです。 ワイルドカードやめていっこいっこ指定したりとか全然です。 助けてください。
299 :
デフォルトの名無しさん :2005/04/13(水) 17:49:11
すいません、質問です。 Jakarta PoiでExcelドキュメントを扱うPGを組んでいるのですが、 HSSFRow.getLastCell()メソッドで取得する値について、 たとえばExcelシート内に3行のレコードがあった場合だと 0,1,2と数えて取得値は2になるのでしょうか? それとも1行目、2行目、3行目という感じで取得値は3になるのでしょうか? 使い慣れないライブラリでドキュメントをゆっくり探す間がないんで、 申し訳ないですが、知ってる方がいらっしゃれば教えてくださいませんか?
300 :
デフォルトの名無しさん :2005/04/13(水) 18:57:35
int型をString型に変えるにはどうすればいいのでしょうか
>>300 StringクラスのAPIマニュアルよんでみそ
303 :
デフォルトの名無しさん :2005/04/13(水) 19:27:29
strutsのカスタムタグについて質問です。 <input type="text" name="userName" value="<%=a.getName%>" /> (aというBeanからgetNameメソッドで取り出した値をテキストボックスにいれておく) これをカスタムタグで実現するにはどのように書けばいいのでしょうか? <html:text property=useName・・・・・
>>303 実装方法(クラス設計)がおかしい。
それをやりたいならActionでuserNameにnameを入れれ。
int a = 100; String b = "" + a; ・・・?
Threadクラス使ってタイムアウトが発生したらエラー! って処理を組みたいんですけど。。。 thread.join(30000); みたいに書いてます。 タイムアウトが発生したのか普通の終わったのか見分ける方法ってあります?? なんか.NETだと普通にjoin()の返り値で判断できるっぽいすね・・・うらやまし
307 :
デフォルトの名無しさん :2005/04/13(水) 21:24:01
>>304 Actionクラス(サーブレット)でuserNameにname(ひろゆき)を入れてしまえば
<html:text property=useName />
で、テキストボックスにひろゆきと入ってるわけですか?
それともActionForm?
>>306 できるよ
java.util.concurrentパッケージのぞいてみれ
本見ながらサンプルのプログラム作るたびに思うよ・・・ JavaのGUIって難しいね・・・(´・ω・`) いやJava以外のGUI勉強した事ないから、他わかんないけど・・・ 本当にちゃんと自分でJavaアプリ作れるか疑わしく思うよ・・・_| ̄|○
>>310 うーん・・・全体的に・・・w
Perlは使えるんだけどさ。
でも、Perlは関数使うでしょ
いくつか関数覚えれば、それで動くよね。
型なんてないしさw
Javaは全部メソッド
オブジェクトの中
これが戸惑うね〜(´・ω・`)
それに、クラス&メソッドが沢山ありすぎる・・・
型だってあるし、どのメソッドの戻り値は○○型って覚えるのって無理_| ̄|○
それと、例外処理。
これもあまり馴染みがないから戸惑うね・・・
どれが例外投げる物かとかわかんないし・・・
まぁ、コンパイルしてエラーでたらどれが例外投げる物かわかるんだろうけど。
なにより難しいのはGUIの概念。
GUI勉強するのは初めてだから、しょうがないのかなぁ〜
別に文句言ってる訳じゃないよ。
とりあえず、慣れるしかないって事でいろいろサンプル組ながら勉強してみるよ〜
>>308 判定はできるようになったけど今度はThreadの破棄でハマってまつ。。。
destroy()とかstop()ってやっぱ使うのマズいんだよなぁ。。。
>>311 > それに、クラス&メソッドが沢山ありすぎる・・・
perlやなんかと同じで頻繁に使うクラスやメソッドは限られてる。
> 型だってあるし、どのメソッドの戻り値は○○型って覚えるのって無理_| ̄|○
> どれが例外投げる物かとかわかんないし・・・
ちゃんとドキュメント読む癖をつけた方が良いよ。
> GUI勉強するのは初めてだから、しょうがないのかなぁ〜
しょうがないと思われ。
俺は専門卒で就職したことはないけど、 フリーアルバイターやりつつ独学で実力を付けて、 このスレでもいろいろと回答したりしてる。 最近はなんか、プライドばかりでレベルの低いプログラマが増えて、 なんかダメだなーって思う。 デザインパターンすら知らない、書籍を読んで勉強しようともしない、 そんなんでスパゲティコード書き散らして、 メンテナンス出来ないようなシステム作って、 それでプログラマって呼べるのかな?
>>314 スレ違い。っつか、板違いだな。マ版いってやれ。
>>314 このスレから消えてくれ。脳内世界から回答されたら初心者も迷惑だ。
>>294 配列を引数に取る方のexec()をつかってみ。
319 :
デフォルトの名無しさん :2005/04/13(水) 23:22:31
すいません、質問です。教えてください。 小数点2位以下が0でないデータがあればエラーとして扱う入力チェックをしたいのです。 引数の型は文字列です。 たとえば引数が「1.10」ならセーフで、「1.01」ならエラーにしたいのです。 しかも値は-10〜10までしか受け付けないようにしたいのです。 ちなみに「9」や「-3」など値が範囲内であれば整数でもセーフ扱いにしたいのですが、 BigDecimalでこのような制御ってできるんでしょうか?
>>319 >小数点2位以下が0でないデータ
データを10倍して整数かどうかを判定すればいい。
>-10〜10までしか受け付けない
データが-10〜10かどうかを判定すればいい。
上のと同時にやるなら10倍したデータが-100〜100かどうかを判定すればいい。
321 :
319 :2005/04/13(水) 23:37:38
レスありがとうございます。 さくっと考えたまま作ってみました。 float f = 0; String str = "1.11"; try{ f = Float.parseFloat(str); int i = (int)(f * 10); } catch (NumberFormatException e){ return error; } こんな感じですかね。
class Oya{ int d=10; void print(){ System.out.println(d); } } class Okochama estends Oya{ int d=100; void print(){ System.out.println(d); } } class Test{ public static void main(String[] args){ Oya oya = new Okochama(); System.out.println(oya.d); } } でTestを実行すると表示されるのが"100"ではなくて"10"になる理由がわかりません。 誰か教えてください。
>>322 TestクラスでoyaオブジェクトがOyaクラスじゃん。
そのOyaオブジェクトの変数を参照しているからだろう?
>>322 逆に聞きたい。
何で100が表示されると思ったの?
325 :
322 :2005/04/13(水) 23:58:45
Testクラスにおいて "System.out.println(oya.d);"の代わりに "oya.print();" だと"100"が表示されるからどういうこと何だろうと思いました。
>>322 ポリモフィズムが適用されるのはインスタンス・メソッドだ。
oya.dはフィールド参照。フィールド参照は、オブジェクト参照の型に左右される。
oyaの型はOyaだから、10が表示される。
もしgetD()とかいうメソッドを作って、Okochamaでオーバーライドしてやれば、
望んでいる動作をする。
ついでにいうと、フィールドに直接アクセスなんてするなよ。
327 :
322 :2005/04/14(木) 00:04:46
>>326 "フィールド参照は、オブジェクト参照の型に左右される"
のはなぜなのか知りたいのですが…。
教えていただけませんか。
>>325 System.out.println(((Okochama)o).d);
なら100って表示されるよ。
Oya型の参照では、Okochama型のdは参照できない。
Okochama型の参照では、Oya#d, Okochama#d の両方を参照することは可能。
ただし、この場合はOya#dを「隠蔽」しているので、結局キャストする必要がある。
コンパイラは、フィールドにアクセスするとき、参照の型で
先頭アドレスからのオフセットを決めてる。
例えば・・・
oya.d だと、「インスタンスの先頭アドレスを基準として 0 byte 目から4byteを整数値と扱います」
((Okochama)oya).d だと「インスタンスの先頭アドレスを基準として 4 バイト目から 4 byte を整数値で扱います」
ってな感じで、コンパイラに伝えてるだね。
この辺りは C/C++ をやってないとピンとこないかも知れないね。
Java言語仕様。 「プログラミング言語Java 第3版」にも「フィールドにアクセスする場合には、宣言されている 参照型が使用されます」とだけ書かれている。 なんでそうなるかという(理論的な問題でなく)技術的なところが気になるなら、 フィールドへのアクセスはコンパイル段階で解決されるから。 実行時の実型判定が行えないタイミングでバイトコード変換されている。 ちなみにメソッドアクセスは、実行時に判定されているという違いがある。
331 :
322 :2005/04/14(木) 00:29:19
まー、Javaプログラマにはメソッドにもポインタ(参照)でアクセスできるなんて
思いもしないことだろうな。
クラスの非finalメソッドの参照が仮想関数テーブルに new されているときに
格納されているなんて夢にも思っていないんだろうね。
とりあえず、
>>322 はママのオッパイでも吸ってなwww
>>324 中身はOkochamaのインスタンスだからだろ
いくらなんでもそのくらいは察しろ
ようは、フィールドはオブジェクト型を参照するんではなく 参照型変数の型を指定する。メソッドはインスタンスメソッド の場合、オブジェクトの型によって決まる。 ってことでいいんじゃない
ちょっと熱くなってるじゃねぇかよ。
>>322 の内容は結構ディープな内容だからね。
本気で理解したいなら C++ やるだけではなく
コンパイル時にアセンブラコードも出力して、それを追えば
どうやって、インスタンスのフィールドにアクセスしてるのか
どうやって、ポリモフィズムを実現しているのかを理解できると思うんだけどね。
手っ取り早いのが「プログラムはなぜ動くのか?」だっけか?
アレ読めばわかるかも。
あっ、私は関係者じゃないですよ。
でも、アレ読んだとき自分が3年位やってきたことを
上手にまとめてるなって感じたからね。
もちろん、本の内容は広く浅くだけど・・・
その後、深く勉強するのは本人次第だし。
とりあえず、
>>322 は頑張れ。
俺的には良い疑問だと思うよ。
>>332 そりゃ、わざわざそういった概念を排除して言語設計したんだから当然じゃねーの?
質問させてください。Eclipseで、JFrameを使った中途半端な アプリケーション(Java@2ch−Wiki-ソースの貼り付け参照)を試しに作っています。 コンパイルは通りましたが、実行時に java.lang.NoClassDefFoundError: S0 Exception in thread "main" というエラーが出ます。Java@2chのWikiは見ましたが、自分の場合に 該当してないように思われます。(ほかのプログラムは、動いていますし、 mainメソッドは、点検しました。) HTMLのルビのためのタグをはずすプログラムです。出力をJTextAreaに 表示させて、ルビが外れた元の普通の日本語文が出てくれば、 成功というものです。ソースは、Wikiに貼り付けました。 たぶん、文字列処理のところは、今回のエラーに関係ないと思いますので、 省略しました。よろしくお願いします。
すいません。テキスト整形のルールを読んでなかったので、 貼り付けられませんでした。出直してきます。
点検したそのmainメソッドをさらしてみろ。簡略版でもいいけどシグネチャだけはコピペして。 あと実行方法もな。
import文など、少し、変ですが、ソースの貼り付けに書き込めました。結局、 全文貼り付けました。よろしくお願いします。
このスレ自作自演大杉
>>340 うちでは起動する。
だから君の環境の問題。おそらくS0.classのあるところにクラスパスが通っていない。
もう一度Wikiをじっくり見てみたらどうだ。
>>327 実際のところは、言語設計した人間に聞いてみないとわからんけど、
子クラスで親クラスと同名のフィールドが宣言できないのは不便とか考えたのでは?
クラスメソッドでも同名、同引数型だと覆い隠しが発生するよね?
>>332 > クラスの非finalメソッドの参照が仮想関数テーブルに new されているときに
それを言うなら new されているときじゃなくてクラスのロード時、かな。
>>345 レスありがとうございます。
申し訳ございません。いちからプロジェクトーークラスへと
作り直して、ソースは、クラス名を変えてコピペで起動できました。
ひとつのソースをいじりながら、
プロジェクト間で、同じクラス名とかを使いまわしたので、
Eclipseの実行ボタンにある履歴にソースのそんざいしないものが
残っていたようです。主観的には、不思議ですが、たぶんそうだろうと
思います。お騒がせしました。
おかげさまで、解決しましたが、この場合、Wikiのソースの貼り付けは、 該当部分を消去するのがいいのでしょうか?
>>349 よくわからないんだけど、自由にしたらいいんだと思う。
誰か特定の管理者が管理してるわけではないんだし。
現在実行中のThreadをstop()、destroy()使わないで 途中終了する方法をどなたか教えてくれませんか・・・? ちなみにjdk1.3.1_08なのでTimerThreadクラスとかは使えません。。。
スレッドプール使えば?
353 :
デフォルトの名無しさん :2005/04/14(木) 10:20:13
javaの新しいのをインスコしたら暴走しちゃうのですが (ブラウザじゃないところに文字がでたり) バージョンのダウンって出来ますか?
>>307 HogeForm hoge = new HogeForm();
hoge.setUserName("ひろゆき");
request.setAttribute("hogeForm", hoge); //キー名はstruts-configのForm名
これでuserNameにデフォで「ひろゆき」が入る。
初期値が決まっているならFormのコンストラクタで設定してもよい。
>>351 その辺のメソッドが非推奨になったときに、Sunが代替手段を
まとめたドキュメントをjava.sun.comにおいたから一読するのを
すすめる。
>>356 どうもです。
目を通して見ましたが、やっぱり代替手段としては
スレッド処理内でフラグを持たせて判定するしかないみたいですね。
run() {
process.getRuntime().exec("rcp user@host");
}
みたいになってたとして、exec()で応答が返ってこない!
なんてことがあるとどうにもこうにも止めようがないってことですね。
>>357 どっかに Process の参照持っといて、destroy() すれば?
っつか、waitFor() してないからサブプロセス起動したら
(サブプロセスが終了する/しないに関係なく)すぐに復帰せんか?
C++だろうがおなじだよ 安全じゃないスレッド終了はやるべきではない
360 :
デフォルトの名無しさん :2005/04/14(木) 12:51:16
あの、wait()した時って、いくつかロックもってたら全部開放するの? たとえば public synchronized hoge(){ synchronized(foo){ foo.wait(); } } みたいな時。ちと気になったので教えてよろ
JavaアプレットがOracleと接続するにはどうしたらいいですか?
Oracle製品さわっていてOTNしらないはずはねぇ
なあ、thisキーワードを使って、オーバーロードされた他のコンストラクタを呼び出すことが出来るじゃないか。 それを、呼び出されたコンストラクタを呼び出すオーバーロードされたコンストラクタを呼び出した場合、 どんなことになるんだろうな。 つまり class Hoge { public Hoge() { this(""); } public Hoge(String s) { this(); } } こんなことをする。 どうせ「そこまで書くなら自分で試せ」とか言うんだろ? うるせーよ、氏ねよ。 じゃあ、やってやるよ。 > コンストラクタの呼び出しが再帰的です。 とか言われて叱られたじゃねーか。 これで満足か?ばーかばーか
じゃあ、this("")とかで、オーバーライドされたコンストラクタを呼び出したら、super()を呼べないのかな? どうせ自分で調べろとか、過去ログ嫁とか、空気嫁とか言うんだろ? 知ってるよ、そんなことは。 thisかsuperしか呼べないんだよ!当たり前だろ? class Hoge { public Hoge() { super(); this(""); } public Hoge(String s) { super(); } } こんなことになってたら、superが二回呼ばれるじゃねーか。 それぐらい気付け、馬鹿。お前が過去ログと空気嫁。
いまいち
質問してもいいでしょうか ソースを読んでいたら class Test { public static class inClassA { public int x, y ; } public static class inClassB { public void func(){} } } こんなクラスが出てきたのですが inClassA は静的なのでTestのインスタンスが生成されてもinClassAは共通のクラスになるんでしょうか Test t1 = new Test(); Test t2 = new Test(); t1.inClassA.x = 1 ; としたときにt2.inClassA.xの値はどうなっているのでしょう
> inClassA は静的なのでTestのインスタンスが生成されてもinClassAは共通のクラスになるんでしょうか 日本語になってないぞ。
>>370 > としたときにt2.inClassA.xの値はどうなっているのでしょう
どうにもならない。
というか、
> t1.inClassA.x = 1 ;
これがコンパイル時にエラーにならないコンパイラは言語規定に反する。
DBのテーブルにアクセスする基礎オブジェクトクラスを作りたいのですが、 具体的にどうやってつくればいいのかイメージがわきません。 参照になるようなソースや説明があるサイトってあるのでしょうか。 なにをキーにして検索したらいいのかも分からないのですが。。。 申し訳ないですけど教えていただけませんでしょうか。 BaseDaoクラスみたいな親クラスを作って、サブクラスに それぞれのテーブルクラスを作るようなイメージです。
>>373 > BaseDaoクラスみたいな親クラスを作って、サブクラスに
> それぞれのテーブルクラスを作るようなイメージです。
イメージできてるじゃん。君が何をしたいのか私にはイメージできませんが。
>>374 レスありがとうございます。
おかしな表現ですいません。
BaseDao(仮)というクラスでなにをすればいいのかが
イメージができていないのです。
サブクラスの各テーブルクラスでSQLをがしがし書くだけに
すればいいのだろうとは自分なりに考えてはいるんですが。
じゃ、親クラスでできることはなに?と考えた場合に
なんだろう・・・?と思って悩んでいる状態です。
DBアクセスクラスとしての設計とテーブルの関連をオブジェクト化する設計とを 混同しているように見えるのだが
>>376 なんかそのへんも含めてごちゃごちゃになってます。
だから具体的なイメージがわきにくいので、
サンプルを探しています・・・。
O/Rマッピングの勉強をしてみてはいかがでしょう Torque や Hibernate を触ってみるのもいいかもしれない
>>378 できればゆっくり勉強したいのですが、
納期に間に合いません。助けてください。
じゃあ、今回はあきらめろ
>>379 BaseDaoを親クラスとしないで、BaseDaoからコネクションを取得する
というような設計にすれば?勿論プーリングさせる。
つーか、データアクセス設計なしで開発入ってるの?Webアプリ?
>>382 必死ですね
>>383 データアクセスクラス自体がいい加減です。
唐突にPJに入れられましたが、
DAOクラスとか根幹的なクラスが全然ないです。
actionクラスでむりやりSQL書いてたそうです。
選択しかSQLなかったんですが、マスタメンテナンス作れと
言われたそうで私がやることになりますた。
385 :
しょうがくせい :2005/04/14(木) 18:38:22
すうがくがぜーんぜんできなくてもつかいこなせるげんごってあるんですか?
387 :
しょうがくせい :2005/04/14(木) 19:01:21
>>386 おじさんありがとうございますcげんごならいます
388 :
デフォルトの名無しさん :2005/04/14(木) 19:05:13
390 :
デフォルトの名無しさん :2005/04/14(木) 19:19:11
map2 = (HashMap<Integer, Integer>)map1.clone() 上のようにHashMapのclone()をしてキャストすると以下のような警告がでるんですけど なんとかならないのでしょうか? Hoge.java:10: 警告: [unchecked] 無検査キャストです 以下のようにObjectにそのまま代入すると何もでないんですが Object obj = map1.clone()
>>390 class MyHashMap extends HashMap<Integer,Integer>{
public MyHashMap clone(){ return (MyHashMap)super.clone(); }
}
とかすれば?
1.5を使ったこと無いけど答えてみる Collections.checkedMap を使えばいいのかな? おそらく汎用型で宣言しても、外からはその型が何かわからない状態で 実際にキャストして見てエラーがでても知らないよってことじゃなかろうか
map2の型がただのMapだったり?
>>390 ジェネリクスつかってるならコレクションで型指定が無いから
コンパイルオプションに-warnuncheckedいれると詳細が出るよ
警告じゃなくてエラーにしてくれるので安全なコードがかける
これだけのためにJ2SE5にするのはあり
List list = new ArryList();
って書き方は通らないからね
亀レスに必死にならなくても…
>394の >List list = new ArryList(); >って書き方は通らないからね ってマジっすか?
これがダメだと、1.4 -> 1.5のマイグレーションは物凄く面倒っぽいな・・・
つーか、コレクションは型指定するのが当たり前だろ? C++から流れてきたから今のJavaのコレクションの仕様が気に食わない。 何でも入れられるから、何でも入れるってのは間違いだからな。 とりあえず、ちょっとだけJavaを認めてやるよ。
自作自演の楽園って此処ですか?
>>400 自作自演っつーか、C++厨が暴れてるだけ。
まぁ、そのうち飽きると思うけど。
奴さんが引き篭もり無職だと時間かかるかもね……
これからはList#toArray(Object[])はいらなくなるかな
>>402 ライブラリ作らない人とか、古いAPI使わない人なら使う頻度は減るかも。
>>397 コンパイルオプションを入れた場合ね
いれないと注意文がでる
いままでとおなじにしたいのなら
List<Object> list = new ArrayList<Object>();
とかくわけさ
>>398 警告というかメッセージが出る
コンパイルオプションでエラーにすれば詳細なメッセージが出る
実行時にバグがわかるという1.4までの問題が解決されるすばらしいものだよ
>>390 なんか曖昧な説明しかできないんだけど、汎用型の情報はコンパイル時にのみ
使われて、コンパイル後のバイトコードからは消えているというところがポイントかと。
キャストの正当性確認は実行時に行われるけど、HashMap<Integer, Integer>という
情報は実行時には存在しない。だからそのキャストは無意味だしチェックもできない
といってるんだと思う。
ただチェックできないということは知らせとかないといけないので、ワーニングにして
ると思われる。
>>404 ところで未検査変換って警告じゃなくて、エラーになるんだっけ?
>>405 HashMapが public Object clone() でなく
public HashMap<K,V> clone() みたいに
オーバーライドすれば良いだけのような気がするが……
java.util.Collections の複製メソッド使えって事なのかな?
408 :
デフォルトの名無しさん :2005/04/14(木) 23:31:15
JTextAreaにsetTextを使ってテキストを配置するさいに、上書きしないで追加するようにするにはどうしたらよいのでしょうか
>>384 actionクラスということはstrutsかな?
こんな感じでActionクラス継承したクラス作れば、かなりすっきりすると思うけど。
DBUtilsなんか組み合わせるといいかも。
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String forwordName = null;
Connection connection = null;
try {
connection = getConnection(); //コネクションの取得。取得方法は割愛。データソースでも可。
forwordName = invoke(connection, form, request, response);
} catch (Exception e) {
throw e;
} finally {
try { connection.close(); } catch(Exception e) {}
}
return mapping.findForward(forwordName);
}
protected abstract String invoke(Connection con, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception;
>>407 たしかコンストラクタを使えとSunのどっかのページに書いてあった。
411 :
297 :2005/04/14(木) 23:53:58
JAXBで質問させていただいた者です。 -jarオプションだと-classpathは無視されるのはわかったんですが、 するとjarから実行したい場合、jaxbなどライブラリのjarを指定するにはどうするんでしょう? マニフェストのClass-PathにURL形式で指定してもダメみたいだし、 javaのlib/extにコピーはなんか対症療法のような。。。
>>411 1番簡単なのはjaxbなどライブラリのjarを解凍して実行jarに入れちゃう...
ものによればひっかかるだろ だから「これを動かすには○○が必要です」とかやるしかないんだろうな
416 :
デフォルトの名無しさん :2005/04/15(金) 00:30:27
Strutsの質問なんですけどいいんでしょうか。 スレ違いなら無視してください。 そして長くなるかもしれませんが、許して下さい。 sampleJSPという画面で入力を行い、sampleFormクラスと sampleActionクラスを作りました。 sampleJSP内では<html:text property="input1"/>や <html:file property="input2"/>などがあるとします。 あ、submitボタンもあるとしてください。 submitが行われたら、入力にエラーがあってもなくても、 kakuninJSPという確認画面に遷移して、 sampleJSPで入力された値を表示させたい時、 <bean:write property="input1"/> <bean:write property="input2"/> <bean:write property="input3"/> というようにすれば表示されるのでしょうか。 またそのkakuninJSPで入力エラーがない場合、 さらに「確定」ボタンでDBへの処理を行いたいのですが、 <bean:write>タグだと表示だけですよね。 kakunin.JSPでもその値を保持し、kakuninActionでも利用したいのですが <html:text>などを使わないで値を保持するには どうしたらいいんでしょうか??? 長々とすいません。
417 :
デフォルトの名無しさん :2005/04/15(金) 00:34:39
struts 関係の質問です 入力jsp → 出力jsp の過程で全角文字が出力jspのほうで文字化けしてしまいます 半角英数については問題無しでした 入力JSP→<html:text property="id" size="16"/> アクション→String id = DataForm.getId(); フォーム→private String id と普通にゲッターセッター 出力JSP→<bean:write name="id" scope="session"/> アクションのところにsession.setAttribute("id", "あいうえお"); としてやるとあいうえおと表示されました。文字化けはああああと textに書いたとき!(!(!(!(もしくは(!(!(!(!こんな風に出てたと思います 資料が不明確ですいません、なんか情報漏洩法?かなんかのせいで 会社厳しくなって一切持ち帰りできないので・・・・
>>416 自分も質問してる身ですけど sampleJSPの<html:text property="input1"/>
のproperty名と同じ名のフィールドをもつBeanを作って
そのBeanを元にArrayListを作ると保持できますよ
>>416 > submitが行われたら、入力にエラーがあってもなくても、・・・
sampleFormがSessionスコープの場合はマッピングすれば表示される。
> またそのkakuninJSPで入力エラーがない場合、・・・
<html:hidden... を使用。fileは無理ですね多分。
>>417 form
public void reset(ActionMapping mapping, HttpServletRequest request) {
try {
request.setCharacterEncoding("EUC-JP"); //サーバの文字コードを指定
} catch (Exception e) {
e.printStackTrace();
}
}
これで1回やってみてください。
>>422 有り難うございます。明日になってしまいますが
メモして持ってきます。
>>411 配布するときはフォルダまとめて提供するとして、
アプリケーションjarと同列にlibディレクトリでもつくって、そこにjaxbとかの
jarをおいて、アプリケーションjar内のマニフェストのClass-pathにlib以下の
jarをlib/xx.jarって感じで指定してやればだいたいいける。
残念ながらjarの中のjarをクラスパスに指定することはできない。
僕も初心者ですけど、偉そうにするなら、教えてくれなくていいです。
427 :
デフォルトの名無しさん :2005/04/15(金) 00:57:04
レスありがとうございます。
>>420 さん
それはArrayListを作成しないと保持できないのですかね。
>>421 さん
<html:hidden>を考えたんですが、hiddenってvalue属性ありましたっけ?
<html:hidden property="input1"/>だけでいいんですか?
同じproperty名が同じkakuninJSP内にあったらだめですよね。
<html:hidden property="input1-1" value=<%=XXXX%>/>でOK?
>>425 漏れはどんなにえらそうでも教えてくれたら
それでもう感謝だ。仕事とかで切羽詰ってないからじゃないかな?
仕事切羽詰って2chで質問ってのもあれだがw・・・
頼りになる話しやすい先輩がホスィ・・・
429 :
デフォルトの名無しさん :2005/04/15(金) 01:01:52
このスレバカばっかり 二度とこねーよこんなスレ
>>427 <form action="/hoge">にマッピングされているbean(form)のプロパティです。
<html:form action="/hoge">
<html:hidden property="input1"/>
</html:form>
input1に値が入っていればvalueも同値。
>>430 ホントにバカが混じってたと純粋に驚いた。
434 :
デフォルトの名無しさん :2005/04/15(金) 01:13:42
みなさんいろいろご丁寧にレスほんとうに感謝してます。 会社にろくな参考書がなくてネットや2ちゃん頼りに 探しまくってます。いまいろいろやってます。 決して無視してるわけではないので。
435 :
仕様書無しさん :2005/04/15(金) 03:59:56
javaサーブレットで掲示板を作ろうと思います JSPをビューにして掲示板の作成クラスと削除クラスを二つ作ってパスワードをいれれば自分の登校したものを削除できるようにしたいんですが うまくいきません。以下コードを書きます。何かアドバイスがあったらください。
真のバカは、このスレに常駐してる椰子だろうな。
437 :
390 :2005/04/15(金) 08:54:18
とりあえず警告の原因がジェネリクスの型指定をしてないからだということは理解しました
そんで
>>410 さんのコンストラクタを使うやり方で警告を抑えることもできました
map2 = new HashMap<Integer, Integer>(map1);
沢山のレスありがとうございました
>>408 setTextじゃ無理。appendを使う。
J2SEとJ2EEの違い ≒ servlet能力 じゃあ、 J2SEとJ2MEの違いって何だ。 WTKだけか。
いきなりですがご質問をば リフレクションで型のキャストは不可能です? 不可能なのこれぐらい?
同じクラスローダー内であれば可能な気がする と、無責任な回答
> リフレクションで型のキャストは不可能です? 何が出来れば「リフレクションで型のキャストが可能」って事になるん?
443 :
デフォルトの名無しさん :2005/04/15(金) 21:20:52
strutsのlogicタグについて質問があります。 aが空とnullの時に・・ という2つの条件を持たせるにはどのように書けばいいのでしょうか? <logic:equal name="a" value= >
logic:presentでいいんじゃねーの?
つ [empty]
446 :
443 :2005/04/15(金) 22:10:10
<logic:empty name="a" />でよろしいでしょうか? それともpresent? nullと空の両方を満たすのはemptyですか?
447 :
デフォルトの名無しさん :2005/04/15(金) 23:10:10
JDBCドライバを動的にロードして使いたいのですが、方法をご存知の方いますか? 次のコードで良いと思ったのですが、DでClassNotFoundExceptionが出ます。 またDのかわりにcl.newInstance();とすると、EでSQLException: No suitable driverが出ます。 もちろんJDBCドライバにクラスパスを通せば正常動作します。 どこに問題があるのでしょうか? @File jarFile = (new File("mysql-connector-java-3.0.16-ga-bin.jar").getCanonicalFile(); AURL baseURL = jarFile.toURL(); BURLClassLoader loader = new URLClassLoader(new URL[] { baseURL }); CClass cl = loader.loadClass("com.mysql.jdbc.Driver"); DClass.forName("com.mysql.jdbc.Driver"); EConnection con = DriverManager.getConnection("jdbc:mysql://localhost/test_db?useUnicode=true&characterEncoding=SJIS","root","");
>>447 (2)でちゃんとURLは正しく取れているか?
あと、丸数字は使わないほうが良い
449 :
447 :2005/04/15(金) 23:43:31
>>448 (2)でURLは取れています。
(4)までは問題なく動作しています。
うーん、昨日からこれで悩んでいます。。
>>447 DriverのクラスローダとDriverManagerのクラスローダが違うのが原因。
DriverManagerを使わずに
Driver driver = (Driver) cl.newInstance();
Connection con = driver.connect("jdbc:mysql://localhost/test_db", props);
とやればできるのは前に試したことがある(propsには接続用パラメタをいれておく)。
>>447 File jarFile = new File("mysql-connector-java-3.0.16-ga-bin.jar").getCanonicalFile();
URL baseURL = jarFile.toURL();
URLClassLoader loader = new URLClassLoader(new URL[] { baseURL });
Class.forName("com.mysql.jdbc.Driver", true, loader);
これならどうでしょう?
452 :
447 :2005/04/16(土) 00:10:41
解決しました。
>>450 その方法で解決しました!ありがとうございました。
>>451 その方法ですと
(6)でSQLException: No suitable driver
という結果がでました。
検討して頂きありがとうございました!
みなさん凄いですね、ありがとうございます。
こんなに早く解決するならもっと早く相談すべきでした。
>>452 調子に乗ってくだらないこと質問すると叩かれますよ
454 :
297 :2005/04/16(土) 00:25:20
>>412-415 >>424 詳しく教えていただいてありがとうございます。
ライブラリを一緒に配布してしまうのも問題がありそうですし、
ユーザーにもインストールとlib/extへのコピーをやってもらうのが一番無難そうですね。
jaxbって配布しちゃいけないんだっけ。
雰囲気の悪いスレだなあ
>>454 >ユーザーにもインストールとlib/extへのコピーをやってもらう
かなり悪いやり方。lib/extは触れるべきではない。
>>424 が正解。
458 :
440 :2005/04/16(土) 10:22:18
>441 お返事どうもです。はい、正直に申します。 おっしゃった事が高度過ぎてよくわかりません。 久々に危機感もって探求しています。今のとこさっぱりです。 その為、お返事には時期尚早と感じております。 >442 お返事どうもです。調べてて自分も同じ事思いました。切り分け難しいです。 System#arraycopy(...)と同等な事を動的にいけます? >442-457 同感です。とにかくリフレクションあまり使うもんじゃないですね、すっきりしない
459 :
デフォルトの名無しさん :2005/04/16(土) 10:49:37
くだらない質問なんですけど、JSTL(JSPの標準タグ)はどうして あまり使われないのでしょうか? いま、やっている開発(Strutsでの開発)では、ぜんぜん使われていなくて、 当たり前ですが、Strutsのタグライブラリが頻繁に使われています。 JSTLとStrutsのタグライブラリは、機能的に補完しあうような関係でなく、 どちらかというと、競合するような関係と認識していますが、この理解で あってますでしょうか?
>>458 > 調べてて自分も同じ事思いました。切り分け難しいです。
切り分けより、
>>440 から
> System#arraycopy(...)と同等な事を動的にいけます?
を連想しろという方がよほど難しい。
> System#arraycopy(...)と同等な事を動的にいけます?
結果が同じでリフレクション使ってやれば良いってだけなら、
java.lang.reflect.Array 使えば簡単に出来ると思われ。
っつか、キャストは全く関係ないと思うが。
>>459 > JSTLとStrutsのタグライブラリは、機能的に補完しあうような関係でなく、
> どちらかというと、競合するような関係と認識していますが、この理解で
> あってますでしょうか?
どちらとも言える。
機能がかぶっている部分もあるし、JSTLにしか無いものも、Strutsにしか無いものもあるし、
機能によってはかぶっていてもStrutsタグのほうがいいものもある。
>>461 >どちらとも言える。
>機能がかぶっている部分もあるし、JSTLにしか無いものも、Strutsにしか無い>ものもあるし、
>機能によってはかぶっていてもStrutsタグのほうがいいものもある。
おお、そうなんですか。どちらともいえますか。
場合によって使いわけろというわけですね。
464 :
デフォルトの名無しさん :2005/04/16(土) 13:25:27
初心者です。 Javaってなんですか?
465 :
デフォルトの名無しさん :2005/04/16(土) 13:28:09
axis内でServletContextを得るにはどうすればよいでしょうか。リソースをGetしたいです。 教えてください。よろしこ orz
467 :
440 :2005/04/16(土) 20:32:12
>460 ごもっともです。すいません、arraycopyは Collection#toArray(Object[]) ここらへんのキャストからくるものです。 調べてたらどんどん焦点がずれてきてる次第です。 (Object[]) null; みたいなことできますでしょ、これどんな仕組みか
468 :
デフォルトの名無しさん :2005/04/16(土) 22:40:42
昨日からJAVAを始めた初心者です。ハローワールドを作ろうとしました。 ところが、コンパイルは出来たのですが(.classファイルは出来ました)、JAVAの実行ができません。 C:\>Java C:\〜 Exception in thread "main" java.lang.NoclassDefFoundError: C:\〜 ・・・というエラーが出ます。 Path、Classpathは以下のように設定してあります C:\>set Path Path=C:\j2sdk1.4.1_07\bin C:\>set Classpath Classpath=%Classpath%;. ソースは以下のとおりにしました public class HelloWorld { public static void main(String[] args) { System.out.println("Hello Java World !"); } } これで考えられるエラーの原因は何でしょうか? よろしければお願いします
469 :
デフォルトの名無しさん :2005/04/16(土) 22:42:37
クラスパスなんて設定しなくていいし、 実行時に、c\なんて余計な入力しなくていい。
>>468 javaコマンドはクラス名を引数にとるのであって、ファイルパスじゃない。
もし君が引数に C:\aa\bb\cc と指定したなら、javaコマンドは
"C:\aa\bb\cc" という名前(Cから最後のcまでが全部クラス名だ)の
クラスを探す。つまり「"C:\aa\bb\cc.class"」という正体不明のファイルが
CLASSPATH内にあるかどうか一生懸命探す。
こんな必死におまえの命令に忠実であろうとするjavaコマンドにもっと優しい
指定をしたらどうだ。たとえば、普通にクラス名「cc」を渡してやるとか。
472 :
デフォルトの名無しさん :2005/04/16(土) 23:48:36
DataInputStreamで1バイトに1つの文字が入っているようなデータを読み取るにはどうしたらよいのでしょうか。 readCharメソッドだと2バイト分読み込んでしまいますよね、、、?
read()
474 :
472 :2005/04/17(日) 00:00:56
ありがとうございます
475 :
297 :2005/04/17(日) 00:40:52
>>457 >>424 でも、どのみちライブラリのインストールと
アプリケーションjarと同列のlibフォルダへのコピーは
やってもらわないといけないですよね。
それともライブラリのjarファイルを一緒に配布しちゃっていいんでしょうか。
>>475 他人のライブラリ持ってきたときに仕様許諾契約結んだだろ?
>>475 世の中のオープンソースなJavaアプリケーションは、普通に依存jarファイルをlibにつっこんで
配布しとる。
というか、ライセンス的に配布可能なjarしか使ってない。
そういうアプリケーションはほとんど
app/
--bin/
--lib/
--doc/
てな構成て配布されてるぞ? libにはjarが山盛り。そりゃそうだろ、「このアプリ使うには、
jarファイルを10個、いろんなサイトからダウンロードして、自分でlibディレクトリに入れて
くださいね」とかいわれたら、誰もそんなクソアプリ使うかよ。
479 :
472 :2005/04/17(日) 03:21:19
>>472 で質問したものですが、read()メソッドでバイト配列を取り出し、その中身をプリントアウトすると、
文字列ではなく数字が表示されてしまうのですが、どうしたら正しく文字を取り出すことができるのでしょうか。
Java以前の問題だと思いますよ 元ファイルが文字列だろうがなんだろうが byte 単位で見ればただの2進数の羅列 read で読み出したものは byte であって String ではありません 文字コード(数値)から文字列への変換が必要ですよ そもそも DataInputStream で使ってるってことは DataOutputStream で書き出したもの を読み込んでるんだよね? それだと 1byteで一文字って状況が良く分からないのですが
>>479 charに変換するとかnew String(bytes, "us-ascii")とか...って話になる
けど、そもそもなんで1文字1byteの単位でデータが収められたDataInputStream
なんてのがあるわけ? 用途間違えてないか? そのあたりの意図がわからないので、
472を読む限りだとなんかすげー遠回りしてそうな印象を受けた。
483 :
482 :2005/04/17(日) 03:45:44
480とかぶった。orz.
おまえら相手の要件聞かずにコーディング始めるタイプなんだろうな
>>479 君がしたいのがどういうことかによる。単にバイト列を取得したいなら
>>473 の回答の
通りだし、読み込みデータの1バイトを読んで、それをJavaのchar型として扱いたいと
いうなら、むしろ読み込みエンコード指定付きコンストラクタで作成したInputStreamReader
のread()のほうが適当。
吐き出すときはOutputStreamWriterのwrite(int c)な。あるいはPrintWriterのwrite( int c)。
486 :
479 :2005/04/17(日) 04:16:21
皆さんありがとうございました
487 :
デフォルトの名無しさん :2005/04/17(日) 05:22:58
jTextAreaにappend()していくときに、同じ内容があれば処理を変える(書き込まない等)といったことを するにはどうすればいいのでしょうか。
488 :
デフォルトの名無しさん :2005/04/17(日) 05:28:30
ここでJAVAのバージョンはどれがいい、と聞いた者ですが 皆さんはJavaを組み立てるとき どんなエディタを使っていますか? 教えてください 私はJextを使っていたのですが、英語だけで、とても疲れたので 皆さんはどんなものを使っているか知りたいです。
>>488 Emacs+日本語Patch もしくは JBuilder
仕事柄 WebSphere Studio Application Developer 5.1.2 ばかりだが別のと言われたらやっぱり Eclipse
491 :
デフォルトの名無しさん :2005/04/17(日) 06:47:40
jTextAreaにappendした文字列を指定した行だけ取り出すにはどうしたらいいのでしょうか
>>491 ・素直にreadLine
・改行コードを検索し、指定行数分ループ
493 :
デフォルトの名無しさん :2005/04/17(日) 07:08:27
eclipseを使ってゲームを作りたいのですが pngなどの透明色指定する方法がわかりません。 誰かわかりませんか?
っ ぉ ァ お ぇ ぇ し る ハ は k w w と う え の ハ w う ぇっ w け ァ う w w w w
>493 君が頑張って質問したたくさんのスレッドのどれかで回答ついてたよ。 頑張って探して二度と来るな。
496 :
491 :2005/04/17(日) 11:50:56
readLineとはJTextAreaのメソッドという意味でしょうか? エラーが出てしまうのですが、、。
497 :
デフォルトの名無しさん :2005/04/17(日) 12:05:07
while分の中にswitch文があった場合、switch文の中からwhileのループをbreakするにはどうしたらいいのでしょうか。
499 :
デフォルトの名無しさん :2005/04/17(日) 12:32:10
>>489-490 皆さん市販されているものを使っているんですか、
私は、まだ初心者なのでフリーのエディタでいいのですが
知りませんか?
初心者向けのフリーの開発環境ならEclipseが無難だな。 エディタだけで書いてると、クラスを使い始める頃にはコードの煩雑さで死ねる。 EclipseなどのようなIDE(統合開発環境)は趣味プログラマでも必須だと思う。
503 :
297 :2005/04/17(日) 13:54:08
>>476 ,477
へぇ〜、なるほど。そういうものなんですか。
ためになりました。ありがとうございます。
ライセンスを読まないとダメですね。英語はどうも。頑張ってみます。
初心者ならNetBeans4.0を薦める。 上級者でもGUI使うなら必須だけど。 Sun純正であることとJavac使ってるので最新に対応しやすいことなど メリットはそれなりにあるはず Eclipse3より軽いし・・・
>>493 わかるがスレ違いなので教えない
マルチ野郎には教えたくもない
506 :
デフォルトの名無しさん :2005/04/17(日) 20:52:02
>>499 返事を下さってありがとうございます。
皆さんの意見を参考にして色々試してみます。
字種切り方について知りたいのですが、詳しく説明されているサイトや書物が中々見つかりません 字種切り方が詳しく載っているサイト・書物を教えていだたけたら幸いです
字種切り法というと、文章をひらがなやカタカナで切り出しす方法だよな? 単純に一文字ずつ判定していくだけじゃダメですかい?
>507 うーむ、KaKaSiとかChaSenとかMeCabのソースを読んでみるというのはどうだろう?
なあ、ルー(rkx
>>508 ,510
どうもありがとうございます
字種切り法=Java用語だと思っていましたorz
一文字ずつ判定ですか…難しそうだ…
510氏が教えてくださったソースを理解してみます
LANアダプタのMACアドレスに割り当てられたIPアドレスを Javaで取得したい場合は、やはりJNI使う以外に手は無いでしょうか?
IPアドレスの取得なら普通に出来ると思うが
>>517 ARP/RARPはJavaの標準APIでは使えなかったと思う。
520 :
デフォルトの名無しさん :2005/04/18(月) 16:14:57
初心者なんですが質問します。 javaはmacでも使えるんですか?仕事で使うらしいのだがまったくわからないので…
>>517 ARP/RARPで情報を取得するクラスを作成しては?
523 :
520 :2005/04/18(月) 16:20:37
>>522 ありがとうございます。当方macしか持ってないもので…
これから勉強します。
524 :
517 :2005/04/18(月) 16:31:57
>>518 >>519 >>521 レスサンクス(・∀・)
今、ググりまくってるんだけど、やはりJavaのみでは無理のようですね。
やりたいことは、同じネットワークセグメント内にあるIP-reachableなPCの
MACアドレスだけが解っている状態に対し、
そのMACアドレスを入力値として、対応するIPアドレスを取得したいのですが。
Windowsのコンソールで動くコマンドなんかで、MACアドレス入れると、
それから引いたIPアドレス返してくれるツールなんかがあれば、
そいつを起動するとかでもいいんですけどね。。。
525 :
デフォルトの名無しさん :2005/04/18(月) 17:14:46
Javaで前のページに戻れなくするやり方ってありますか? JavaScriptでいうlocation.replace()見たいなものが欲しいんですけど。。 forwardタグではその前のページに戻ってしまいます。 教えてエロイ人
javaを激しく勘違いしてるな
>>524 MACアドレス自体でどうのこうのっていう危険なのはJavaにはない
ただ、NICを列挙、そしてそれら列挙されたNICからさらにIPを列挙
というところまでは1.4での新機能としてある
まぁ妥当な実装やね
529 :
525 :2005/04/18(月) 18:06:27
>>529 1. エロイ人ではありません
2. あなたの示した情報から回答できる範囲は
>>527 までです
3. 情報を小出しにされるのは嫌いなので私からの回答は
>>527 で終了です
4. 本当に回答が欲しいのであれば質問の仕方を熟考されるべきかと思います
java.net.NetworkInterface#getNetworkInterfaces() か。 どうでもいいがなんで1.4で導入された癖に Enumerationで返すんだ、コイツ。1.1時代ならともかく。
>>525 要するにリダイレクトすればいいのでは?
>>524 対象PCでNetBIOSが動いてるなら、Port137に対して適切なコマンド
(うろ覚えだけど、確かそんなコマンドが有ったはず)をブロードキャ
ストしてやれば取得できると思う。
534 :
デフォルトの名無しさん :2005/04/18(月) 22:02:28
すいませんすごい初歩的な質問なんですけど、 HttpServletクラスを使いたいとき、J2SEだと、Tomcatの下階層のディレクトリにあるservlet-api.jarにクラスパスを通さないとコンパイルできませんよね。 でも、はじめからJ2EEをインストールしていれば、HttpServletクラスを使ったクラスをコンパイルできるということなんですか?
Strutsの開発を行なっているのですが、tilesの関連した問題でつまり ずっと滞っております。 ActionServletを呼び出し、画面遷移しようとする下記のような例外が 発生します。 どうも、tilesファイルが定義されていないようで、いろいろとWEBと本を 参考にし、同じようにやっているのですが、同じエラーが出てしまいます。 どなたか心当たりある方、ご教授お願いします。 2005-04-18 22:20:44 StandardWrapperValve[action]: サーブレット action のServlet.service()が例外を投げました java.lang.NullPointerException at org.apache.struts.tiles.xmlDefinition.FactorySet.getDefinition(FactorySet.java:116) at org.apache.struts.tiles.definition.ComponentDefinitionsFactoryWrapper.getDefinition(ComponentDefinitionsFactoryWrapper.java:86) at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:153) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:300) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) ちなみに、Tilesの定義はstruts-config.xmlで下記のように定義し、tiles-defs.xmlとstruts-tiles.tldは WEB-INFの下においております。 <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" /> <set-property property="definitions-parser-validate" value="true" /> </plug-in>
>>535 ですが、補足として、ボタンを押して画面遷移しようとするとき、
FormBeanが生成され値が保持され、Actionロジックまでは正常なログが
出ています。やはり、遷移のときの問題のようです。。
537 :
デフォルトの名無しさん :2005/04/18(月) 22:40:16
>>524 ブロードキャストのpingってできるんだっけ?
で返事が返ってきたら
ARPキャッシュ一覧をどうにかして取得して
その中から対象のMACアドレスを探して、対応するIPアドレスをゲットするとか
ブロードキャストドメインにしか使えないかな
あとPCがpingに応答しなくても使えない
>>537 いや、NetBIOSにコマンドが用意されてたと思う(NODE STAT REQUESTだっけ?
とにかくNetBIOS名の一覧を要求するコマンド)。
この時にIPまで手に入るのか、再び何らかのコマンドを投げてIPを得るのかは
実際に必要に迫られた事がないんで把握できてないんだけど、とにかくIPを得
る事はできる。
あとは得たIPをARPで投げると対象ホスト自身が返事をするはず。
>ブロードキャストドメインにしか使えないかな
セキュリティ系のページに設置されたCGIで、設定の甘いPCからMACアドレス
を得るという実験がされてたから、何らかの方法を用いれば取得できるのかも
しれないけど、少なくとも一般的な方法ではないと思う。
て言うか、そもそもLAN外からMACアドレスを取られる様な設定はちょっとどう
かと思う。
540 :
525 :2005/04/19(火) 02:16:42
>>530 分からないなら分からないといえ
アフォ
何なん君ら。 まずは最初に来たレス熟読して脊髄反射レスなんてくだらんもん書くな。 回答する気がなければ書くな。無駄に煽りが入る。 適当なこと言ってると思うなら適当なところ書けよ。
>>541 君は自分の発言が煽りを過剰反応させるモノだと言うことに気づくことから始めよう。
君の論は正論だが、それならば君もまたそのようなレスを書き込んではいけないことになる。
そして私のこのレスも然りだ。
結局私たちは煽りを放置できない厨房だってこった。
543 :
デフォルトの名無しさん :2005/04/19(火) 06:47:16
jTextAreaの中の指定した文字列を削除するにはどうしたらいいのでしょうか
馬鹿は煽りに即レス
545 :
デフォルトの名無しさん :2005/04/19(火) 07:07:01
どなたか探索木における幅優先探索のプログラムをうpしてください おねがいします
546 :
デフォルトの名無しさん :2005/04/19(火) 07:09:45
548 :
デフォルトの名無しさん :2005/04/19(火) 07:54:00
>>534 J2EEは単なる仕様なので、その仕様に基づいて作られた動作環境(Tomcatなど)が
必要。おそらく「J2EE」と言っているのはJ2EE RIのことだと思うけど、J2EE RI
もJ2EE仕様にのっとって作られた動作環境の一つだから、Tomcatで動かすので
あれば、J2EE RIは不要。
550 :
デフォルトの名無しさん :2005/04/19(火) 09:31:05
javaでユーザーのブラウザがjavascriptが有効かどうか判別できる 方法ってないでしょうか?
553 :
デフォルトの名無しさん :2005/04/19(火) 10:25:27
すいません、教えていただけないでしょうか。 Strutsを使って開発しています。 JSPで<html:select>タグを使っている部分があり、 画面で選択された値をActionクラス(DynaActionForm継承)で 取得したいのですがIllegalArgument例外が投げられます。 DynaActionForm df = (DynaActionForm)form; String dataType = (String)df.get("date_type"); というようにActionクラスで記述しているのですが、 なぜこのような例外が投げられるかが分かりません。 selectタグの場合の取得はなにか特別な方法があるのでしょうか? どなたか教えていただけないでしょうか・・・?
Dynaならxmlの記述と矛盾してるとかじゃないかな?
>>554 struts-config.xmlは以下のようになっております。
記述の方法、間違ってますか??
<form-bean dynamic="true" name="import" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="data_type" type="java.lang.String" />
</form-bean>
この部分はおかしくないよね… multiple とか指定した上で String で受け取ったらエラーになるのだろうか? 今、試せる環境が無いんだ。ゴメン ところで、他のパラメータは問題なし?
557 :
556 :2005/04/19(火) 11:43:45
こっちが小出しになって申し訳ない… IllegalArgumentException自体のメッセージは?
ご回答ありがとうございます。 とりあえず今無理やり値を入れて スルーして別テストやってます。 しばらくして、またエラー内容をペーストしてみます。 こちらから尋ねているのに申し訳ありませんが、 しばらくお待ちください・・・。
こんなエラーがでました。 java.lang.IllegalArgumentException: Invalid property name 'date_type' org.apache.struts.action.DynaActionForm.getDynaProperty(DynaActionForm.java:600) org.apache.struts.action.DynaActionForm.get(DynaActionForm.java:196) town_manager.action.ImportAction.execute(ImportAction.java:62) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:121)
おーいおーい Invalid property name 'date_type' ~~~
>>560 ( ゚д゚)ハッ!
解決できました・・・。
なんでこんなんに気づかなかったんだ・・・(T∀T)
ありがとうございます!
Tomcat 5 から単体で EJB 使えるようになったんだっけか?
565 :
デフォルトの名無しさん :2005/04/19(火) 15:22:52
あの、Javaのアプリケーションを配布したいんですが、J2SDKとかがインストールされて いないPCの場合どうすればよいのでしょうか?ちなみに知り合いのPCではjavaコマンドは通りませんでした。 今のWindowsであればJREぐらいはデフォルトで入っているんですよね?
>>565 Windowsには入ってない。
メーカーによってはプリインストールマシンにJRE入れるところもある。
567 :
デフォルトの名無しさん :2005/04/19(火) 15:36:07
>>566 JREの入っているマシンであればユーザーが意図的にpathを通しておかなくてもjava
コマンドが通る状態になっているのでしょうか?
Sun のインストーラーで入れられた jre ならパスは通ってるんじゃないかな? それよりも jre 付で配布のほうが win ユーザーには優しいかもね jre のバージョンも考えなくていいのも利点
必要なもの以外を削ったら、それなりに小さくはなるけれども FDはちょっと無理っぽい
FDってフラッシュディスクでそ?
システムフォルダにMS様謹製のjava.exeが入っている場合もあるから あったら削除なり名前変更なりしとかないと、面倒な事になる場合もある。
インストーラーごと同梱じゃなく、jreだけ同梱のつもりで言ってみた バッチもしくは vb あたりでランチャ作れば起動も楽だし、 使用者の環境を汚さないでいいかなと
>>573 そういう配布形態は認められていたっけ?
JREを、AS ISじゃなく中身選別して配布するのはアウトだったような気がするなぁ。
たしかJRE同根の再配布は認められてるが、REDMEだったかドキュメントになにをいれて なにをはずしていいかの一覧がかいてあるのでそれを参考に レジストリの登録する場合の仕方とかも詳しく書いてあったはず 日本語のドキュメントはオンライン上でみつかるはずだ かってにこれいらないとランタイム小さくしたりするのはダメ まずWEBSTARTくらいしか削除できないけどなー
java知らなかったらjvmのバージョンとかインスコ先とか、pathとか全然わからんよね。 かつコマンドプロンプトも触れんかったらjavaファイルだけじゃ厳しいね。 jvmのバージョン古かったりjvm沢山入ってたり・・・。winもマンドクセーナー
<html:frame href=C:\Test.pdf>ってやってるんですけど 全く表示されません・・・・・ IEのソース上は<frame src="C:\Test.pdf"> となり、アドレス(C:\Test.pdf)を違うブラウザのアドレスに打つと表示される のですが、<html:frame>を使うとなぜか表示されません・・ WinXP SP2 IE6.0 WSSD5.1 使用
>>580 一般ユーザの平均レベルだと、この程度でも難易度高すぎだと思われる。
ダメなヤツはとことんダメだぞ。 読んで理解しようとしないから。
>>581 frame内にPDF表示させようとしたらIE固まった
謝罪と賠(ry
とりあえず、スレどころか板違いです
どうもです! 恥ずかしい質問なんですけど 3を2進数表示すると11になりますよね? これを00000011というように表示させたいのですが 3を11に変換してたのは Integer.toBinaryStringを使ってます。 助言よろしくお願いします
ゼロパディングしたいということなら、 final String PLACEHOLDER = "00000000"; String s = (PLACEHOLDER + Integer.toZBinaryString()); s = s.substring(s.length() - PLACEHOLDER.length()); # そうか、java.util.Formatterには2進表記を指定する記法はないのかぁ
>>585 ありがとうございます。 とりあえずこれでやってみようと思います!
>>585 java.util.Formatterにはないみたいですね! Integerの中のtoBinaryStringは どうも符号なしの2進数表示みたいですね! もし、これが符号ありの2進数表示だったら 0000011って表示できてましたよねぇ
>>588 情報処理の基礎って言われても 何をどう初めていいやら・・・ すみません わけわからなくて
符号ありなしの話 −1をいれてみそ
>>590 10000001になりました。MSBが符号ビットなのですね。
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\torao>copy con a.java public class a{ public static void main(String[] args){ System.out.println(Integer.toBinaryString(-1)); return; } } ^Z 1 個のファイルをコピーしました。 C:\Documents and Settings\torao>javac a.java C:\Documents and Settings\torao>java a 11111111111111111111111111111111 C:\Documents and Settings\torao>
>>593 がただしい
2の補数とか勉強せいやということだ
ぽっかり開いた、心の穴を、 JAVAで埋めて、この先生き残っていくよ。
なんだふられたのか。
597 :
デフォルトの名無しさん :2005/04/20(水) 06:36:39
文字列配列の中から、毎回ランダムでどれかを取り出すにはどうすればいいのでしょうか?
つ java.util.Random
599 :
デフォルトの名無しさん :2005/04/20(水) 08:17:51
時刻取得のソースですが、calender メソッドを 使って取得すると calendar.get(Calendar.HOUR_OF_DAY) 12時間 表記で取得されてしまいます。 24時間表記で取得したいです、 どうやって取得すればいいでしょうか
現在、Jsp、ServletでWEBアプリを作っています。 ServletにはExceptionをキャッチしたら以下のようにエラーテーブルに書き込む 記述をしてあります。 〜 }catch(Exception ex){ String error_msg = ex.getMessage(); 以下エラー書き出し処理 〜 WEBアプリは現在稼動しているのですがエラーテーブルを見てみると エラーメッセージ:Broken pipe エラーメッセージ:なし のようにBroken pipeエラーとエラーメッセージのないエラーが入っています。 エラーをキャッチしてcatch句に入っているのに書き出されていないのです。 この2つのエラーはどういうものなのか分かる方ご教授おねがいします。 なお、DBアクセスしてますがconnection、statement、resultsetはすべて 使ったらすぐにクローズしています。
エラー処理として意図した動作になってないのでは? Broken pipe は、おそらく IOException のメッセージです メッセージだけを書き出しても、なにが発生しているのか分からないことのほうが多いです メッセージを持たない Exception も多々ありますし、Excepion種+メッセージは最低でも 出しておきたいですね エラーのほうですが低頻度で発生して、なおかつ画面上は正常というのであれば特に 気にする必要はないエラーです (通信の途中でブラウザの停止ボタンを押したりすると発生します) それ以外の常に同じ処理で発生しているというのならば、考えないといけません
>>599 取得の仕方はどこもおかしくありません
これで取れないとなると…
Locale とかに依存したりするのでしょうかねぇ
とりあえず Calendar の中身が PM な時間であるのは確かでしょうか?
603 :
デフォルトの名無しさん :2005/04/20(水) 10:05:24
ジャバのプログラムをプロンプトで開いてみたんですが −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− KohoTspSource.java:235: クラス KohoTsp は public であり、ファイル KohoTsp.java で宣言しなければなりません。 public class KohoTsp extends Applet ^ 注: KohoTspSource.java は推奨されない API を使用またはオーバーライドしています。 注: 詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくだ さい。 エラー 1 個 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ↑ こんなエラーが出ちゃったんですがどうしたら実行できるんですか? 初心者な質問でごめんなさい
604 :
599 :2005/04/20(水) 10:09:20
>>602 ご返答ありがとうございます
16時とかに実行すると、4:XX:XXって出るんですよ
で、4時に実行すると、4:++:++ って出ます
他に時刻の取得方法ってないですか?
>>604 SimpleDateFormat format = (SimpleDateFormat)SimpleDateFormat.getInstance();
format.applyPattern( "HH:mm:ss" );
Calendar cal = Calendar.getInstance();
cal.setTime( format.parse( "20:30:12" ) );
System.out.println( cal.get( Calendar.HOUR_OF_DAY ) );
これで試してみ
>>603 それはクラス名(KohoTsp)とファイル名(KohoTspSource.java)で矛盾が発生しているからです
ファイル名が「クラス名.java」となるようにしてください
また、「注」となってる内容は Warning です
放置しても実行はできますが出ないようにするのがベターです
そこに書いてあるようにコンパイルオプションを設定すれば詳細情報が出ますので、
修正してみてください
607 :
604 :2005/04/20(水) 11:16:29
>>605 どうもありがとうございます
ちょっとためしてみます
608 :
600 :2005/04/20(水) 16:45:47
610 :
デフォルトの名無しさん :2005/04/20(水) 20:13:30
>610 マルチポストはご遠慮下さい。
>>600 サーブレットまたは JSP がデータを送信途中に TCP/IP レベルで
切断されたときに発生する。大抵は画面の表示途中で戻るボタンを
押したとか、読み込みキャンセルボタンを押したとか、画面が表示し
切れてない状態で次の画面へ行くボタンやリンクを押した場合。
だからサーバ側ではエラーに見えるがクライアントとしては正常動作。
DB にエラーメッセージが入ってないのは知らん。そういう作りなんだろ。
613 :
610 :2005/04/20(水) 20:28:25
>>611 すいません…
スレ違いと注意を受けてしまい、
こちらに同じ文章を載せてしまいました…
申し訳ないです。
>>613 エラーの起きた行番号と原因が出てるんだからまずそれをひとつづつ調べて潰せ。
メッセージをそのまま google で検索すれば大抵どこかに載ってる
あの量のコードがかけてコンパイルエラーがひとつも分からないなら宿題の丸写し
だろ、あきらめて回線切って首吊って留年せれ。
615 :
デフォルトの名無しさん :2005/04/20(水) 21:01:07
お知恵を貸してください。 フレームワークはwebwork、seasar、hibernateを使っています。 テーブルの更新処理で、JTAで以下のようなことがしたいのです。 1.セッションを取得 2.トランザクション開始 <ここから該当データ分ループ> 3.該当データの検索 4.該当データの更新 <ここまでループ> 5.コミット(トランザクション終了) 今の状態は、セッションのコネクションのautoCommitをfalseにしていて、 確かに更新する(session.update)ときはコミットされないのですが、 次の行を検索しにいく(session.find)ところでコミットされてしまいます。 セッションが新しいセッションを作ろうとしているのでしょうか? 何か良い手がかりを掴ませてください。 よろしくおねがいします。
コマンドライン引数で受け取った文字列(半角・全角の英数字、カタカナ) を全角⇒半角、半角⇒全角に変換して表示する。 というプログラムを作りたいのですが、 ・半角文字列の配列 ・全角文字列の配列 を用意して、 入力されたのが全角なら半角文字列の配列にアクセスして、 それに対応した半角文字を出力、 半角文字を入力されたならその逆で、 とやっていくのかな、と思ったんですが、 実際どのようなやり方をすればいいのでしょうか? こんなやり方がある、というものがあれば是非教えていただけないでしょうか? 何かヒントだけでもお願いいたします。 よろしくおねがいします。
>616 やっつけで変換クラス作ったときはほぼ似たような理屈でやった。 配列でなくて元文字がキー、変換後文字が値のHashMap使った程度だな、違いは。 達人な方もうちょっとエレガントな解をキヴォンヌ。 // そもそも「半角」と「全角」って何を指して言ってるんだ? というラディカルな論議は勘弁。
英数字であれば、charに対して一定量の値を増減してやれば半角←→全角の変換はできるけど カナの場合はそもそも濁点・半濁点の処理があるから (「パ」は「パ 」ではなく「パ」にしなければならない、逆も同じ) ロジックで何とかするしかないよね。
>>613 確かにエラーはたくさん出たが、これ全部分からないのか?
せめて「この部分がよくわかりません」とかないの?
宿題スレにもあったので、ほんとに宿題なのなら、「実は宿題なんです」って
宿題スレではっきり言ってしまえばいいんじゃない?
宿題じゃないなら、ここで「どこが分からないのか」ちゃんと書いて質問することだね。
>>604 Calendar.HOURなら、AM/PMの時間が取れる(16時だと4が返る)けど、
Calendar.HOUR_OF_DAYならば16が取れるはずだぞ。
public static final int HOUR
Field number for get and set indicating the hour of the morning or afternoon. HOUR is used for the 12-hour clock (0 - 11). Noon and midnight are represented by 0, not by 12. E.g., at 10:04:15.250 PM the HOUR is 10.
public static final int HOUR_OF_DAY
Field number for get and set indicating the hour of the day. HOUR_OF_DAY is used for the 24-hour clock. E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22.
>>615 とりあえずSession#findの直前でSession#flushが呼ばれる仕様なのは了解?
でflushされたデータはホントにコミットされてるか(ロールバックできない、
隔離レベルが2以上の別のトランザクションから読めないなど)確認した?
623 :
デフォルトの名無しさん :2005/04/20(水) 23:31:24
>>622 ありがとうございます。
session.findの前にflushされる仕様なんですね。勉強になりました。
flushされたデータがコミットされているのは確認済みです。
こういうのを回避するには、どうしたら良いのでしょうか。
S2hibernateを使用しているのですが。。
>621 何を分かりきった事を。APIリファレンスなんて真っ先に確認するだろ。 16が取れるはずなのに4が返るから質問したんだろ? とりあえず>605の結果待ちだろ。 どっか別の場所にコーディングミスがあるんだろうが、環境の問題の可能性もある。
626 :
デフォルトの名無しさん :2005/04/21(木) 07:17:54
InputStreamがよくわからない、、、 たとえばInputStreamの中身を while (true) { int c = stream.read(); if (c == -1) { stream.close(); break; } System.out.print((char)c); } ではなく、String型で読み込みたい場合はどうすればよろしいでしょうか?
BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = br.readLine();
628 :
626 :2005/04/21(木) 08:00:14
>>627 返事ありがとうございます;
ProcessBuilder builder = new ProcessBuilder("ypcat", "passwd");
Process process = builder.start();
InputStream stream = process.getInputStream();
InputStreamReader is = new InputStreamReader(stream);
BufferedReader br = new BufferedReader(is);
String line = br.readLine();
System.out.println(line);
で試して見ましたが、一行目しか表示できなくて、
二行目はnullになってしまいました。。。
629 :
626 :2005/04/21(木) 08:12:58
javaのファイル関連で質問です。 ファイルやディレクトリーが更新されたら、 それを通知するAPIってありますか? WinAPIで言う所のFindFirstChangeNotificationみたいなやつです。 過去ログにも無い様なので、お願いします。
631 :
デフォルトの名無しさん :2005/04/21(木) 10:34:09
現在jsp、servletを使ってWebアプリを作っています。 ボタンを押すとDBに接続して表を動的に生成するページがあるのですが、 ためしに3つ窓を開いて3つ同時にボタンを押してみると一つの窓で以下のような エラーがでました。 Root cause: java.util.ConcurrentModificationException このエラーを自分で調べてみるとスレッドの同期が取れていないときに発生 するようです。やはり同時にボタンを押したのが原因のようです。 ここで調べてみたのですがデーターベースコネクト周りのConnection、 Statement、ResultSetは全てメソッドの中で定義しています。 ですが取り出した値をjspに返す部分で以下のような記述をしていました。 public class sampleClass{ 〜 private String pk; public String getPk(){return pk;} public void setPk(String pk){this.pk = pk;} 〜 } ここで変数pkはクラス変数ですがこれを同時に使おうとしているのが 原因なのではと思っています。 こういう記述をしている場合上のようなエラーは出るのでしょうか? また、この記述が原因ならどのように書けばエラーが でなくなるのでしょうか? ご教授おねがいします。
>>615 >1.セッションを取得
>2.トランザクション開始
順序が逆だと思うんだが。
>5.コミット(トランザクション終了)
5.セッションのクローズ
6.コミット(トランザクション終了)
じゃね?
>今の状態は、セッションのコネクションのautoCommitをfalseにしていて、
JTA管理のコネクションだとsetAutoCommit()は例外を投げる。
DB周りでそれがスローされることは無いと思う もしかして HttpSession を使ってたりします?
634 :
633 :2005/04/21(木) 10:40:47
635 :
631 :2005/04/21(木) 10:44:32
>>633 ご返答ありがとうございます。
HttpSessionを使っている箇所はありません。
636 :
631 :2005/04/21(木) 10:54:31
小出しですいません。 public class sampleClass{ 〜 private String pk; public String getPk(){return pk;} public void setPk(String pk){this.pk = pk;} 〜 } はServletとは違うクラスファイルに記述されておりServletでsetPkで 値を格納し、jspで <jsp:useBean id="result" type="Vector" scope="request"/> を宣言し、 <% Iterator i = result.iterator(); while(i.hasNext()){ sampleClass sampleClass = (sampleClass)i.next(); if(sampleClass.getPk() != null){ %> <%= sampleClass.getPk() %> <% } %> で取り出して表示しています。 以上です。
637 :
633 :2005/04/21(木) 11:06:11
見返すとものすごい言葉足らずだ orz ConcurrentModificationException ですが、マルチスレッドに対応していない オブジェクトが、複数スレッドから変更を受けた時に投げられる Exception です 自動的に検出されるものではなく、オブジェクト自身が「そんな操作無理デス!」と 意図的に投げられるエラーです ConcurrentModificationException が発生するよくある事例としては、非同期なコレクションに 対する複数スレッドからの操作があります 複数窓からの同時操作は同じ Session を見る場合があるのでアヤシイと判断したのですが、違ったようで…
っと、追加情報が "result" で定義されている Vector が一番アヤシイです Iterator を使用している間に元のコレクションに変更がかかると、件の Exception が発生します Vector はどこで宣言されてます? Servlet のフィールドになってたりしませんか?
639 :
631 :2005/04/21(木) 11:26:01
他のファイルsampleClass2で Vector result = new Vector(); public Vector getResult(){return result;} が定義されてましてサーブレットで sampleClass.setPk("値"); sampleClass2.getResult().add(sampleClass); request.setAttribute("result",sampleClass2.getResult()); としています。 getResult()をシンクロナイズ宣言すればいいんでしょうか?
>>639 そんなとこsynchronizeにしても意味がない。
Vectorがどこかで操作されている間
別のところで操作されないようにしないといけないんだから
やるとしたら
synchronized(result) {
Iterator i = result.iterator();
&nbps;while(i.hasNext()) {
中略
}
}
641 :
631 :2005/04/21(木) 11:49:14
スゲー!!! 本当にエラーでなくなりました!!! ありがとうございまする〜 m(_ _)m ドコドコド synchronized使うと先に操作している人がいたら 次の人は待つことになりますがそれはしょうがないんですよね? エラーでるよりはましということですよね
642 :
631 :2005/04/21(木) 11:59:48
ありがとうございました or2
エラー出るよりマシというかそもそも 複数スレッドで同時に操作したら普通は結果がおかしくなるだろ。 時そばみたいなもんで、途中で邪魔が入るとわけがわからなくなる。 IteratorをとるときにVectorのコピーを作れば別だがな。
644 :
631 :2005/04/21(木) 12:10:50
あなたは神ですm(_ _)m
つーか、それマルチスレッドでの基本だから
646 :
631 :2005/04/21(木) 12:17:55
申し訳ありません神様m(_ _)m お怒りをお静めください ありがとうございます
647 :
桜木 :2005/04/21(木) 12:19:12
超恐縮ですが、ディレクトリってどうやって作るんですか?
学校の教材で、「ホームディレクトリに Java というディレクトリを
作成して下さい.この講義で作るプログラムは,全て Java
ディレクトリの下のどこかに入れることになります.
Java ディレクトリの下に Hello というディレクトリを作成して下さい.」
と書いてあるのですが、その時点で行き詰ってます。ついでにpath変数の
更新方法についても分かりません。
http://www.wikiroom.com/java/?path,classpath を見てやってみましたが
うまくいかないです。根ほり葉ほり教えてくださる方、お願いします。
>>647 そのレベルだと講師に直接聞いた方がいいよ
君の場合これからもいろいろ聞くことになりそうだしね。
649 :
桜木 :2005/04/21(木) 12:41:45
>>648 やっぱその方がいいですかねぇ。
一番怖いのが講師に呆れられることなので・・。
それってディレクトリの作り方習った後でしょ? そうでないなら聞いても問題ないだろう
651 :
604 :2005/04/21(木) 16:17:20
>>605 昨日の話ですが、ありがとうございました。
確実に、24時間表記になりました。
652 :
604 :2005/04/21(木) 16:22:39
>>621 >>625 お手数お掛けいたしました。
どうもjavaのバージョンが古い部分もあり、HOURでも
16時と帰ってきていたので、どうしたもんかと思っていましたが、
Simpledateformat 宣言によって、何度実行しても
24時間表記になりました。 本当にお手数お掛けいたしました。
>>651 なぜよくなったのか書いてもらわないと
よく自己解決しましたとかいうのみるが、あれはふざけてるな
654 :
604 :2005/04/21(木) 16:30:44
>>653 すみません なぜという具体的な理由が定かではないです
JAVA のSDKを一度削除して、新しいのを入れ直したというのと、
SimpleDateFormat("H");
String Shour = format(date);
と、取得のフォーマットを変更して表記したら、何度
実行しても16時と取得できた模様です。
そのふるいSDKのバージョンは?
656 :
604 :2005/04/21(木) 16:34:09
1.4.1X くらいだったと思います
1.4系でそんなバグあったっけ? つーかCalendar実装当初からそんな挙動は無かったかと
XMLEncoderを使ってクラスを保存するとき、そのクラスに画像データを持たせて、 それを含めて保存する簡単な方法がありましたら教えてください。 お願いします。
660 :
桜木 :2005/04/21(木) 19:49:59
>>650 >それってディレクトリの作り方習った後でしょ?
違うんです(泣)ディレクトリの作り方すら習っていないので
(恐らくディレクトリは作れて当たり前みたいな感じだと思います)
鼻から理解できてない状態なんですorz
>>647 聞きたいのは
「Javaでディレクトリを作る方法」なのか
「OS(Unix?)でディレクトリを作る方法」なのかどっちなの?
後者ならスレ違いなんだけど。
662 :
デフォルトの名無しさん :2005/04/21(木) 20:30:48
Runtime#execで起動したコマンドのプロセスを killしたいんですけど。。。。 ちなみに、コマンドはWAS上のアプリケーションから起動してます。
Process#destroy()
>>650 Windowsなら「ファイル」「新規作成」「ファルダー」で
JAVAのデイレクトリを作成します。
Unix等の場合にはまた聞いてください。
>630 あんたは俺ですかw 同じ事考えて1.4のAPIドキュメントのioとnio周りをつらつら眺めてみたがそれらしいのはなかったっす。 スレッド回して適度にsleepしながらディレクトリを見に行くか、 JNIでAPIラップして叩くか、だと思うとです……
666 :
デフォルトの名無しさん :2005/04/21(木) 21:30:58
>>663 solarisの場合は、Process#destroy()できないって書いてあったんで・・・。
てゆか、よく考えたらスレ違いだ!!(-□-)
すんません、UNIXスレにいってきます・・・
667 :
630 :2005/04/21(木) 22:11:41
>>665 そっか〜、やっぱりそれしかないか〜。
俺はSleepしながらディレクトリー見に行くことにします(´Д⊂グスン
ttp://rstar.hp.infoseek.co.jp/java/sec1/janken.html ここに、次のようなプログラムがありました。
public class Janken {
public static void main(String[] args) {
int me = Integer.parseInt(args[0]);
//0は[グー],1は[チョキ],2は[パー]
int enemy = (int)(Math.random() * 3);
int judge = Math.abs(enemy - me) % 3;
if (judge == 1)
System.out.println("勝ち!");
if (judge == 2)
System.out.println("負け!");
if (judge == 0)
System.out.println("あいこ!");
}
}
ず〜と、考えているんですが意味がわかりません。
enemyとmeの差を3で割った余りで、勝ち負けの判定はできないと思うんです。
わかるかた説明おねがいします。
>>668 どうせ9パターンしかないんだから全部洗い出して考えてみたらいいじゃん。
剰余算をしているのは、変な数を入れられたときの為(ここでは3以上の値)。 差を求めているのは、 三角形を作ってみると分かりやすいよ。
…できなさそうな気がする。 相手がグー(0)、こっちがパー(2)でフラグが2になり、負けになってしまうのでは。
どちらにせよ、まちがってないか?これ 1-2 と 2-1 が同じ結果になっちゃダメでしょ
間違ってないよ。 何故ならば、誰が勝ったか負けたかは表記されてないから。
な、なるほど。 つまり更にこの後、正しく動作するように(メッセージ含めて)直せ、という問題なのか。
見事な詐欺コードだ
676 :
658 :2005/04/22(金) 01:17:04
>>659 バイト配列でやってみたんですが、そうすると生成されるファイルが、以下のようになります。
<void property="ddd">
<array class="byte" length="3072">
<void index="0">
<byte>-1</byte>
</void>
<void index="1">
<byte>-1</byte>
</void>
<void index="2">
<byte>-1</byte>
...以下ずっと続く
これだと、あまりに無駄が多いと思うんですが、ほかに方法があるのでしょうか?
ある
目的がシリアライズならXMLEncoderやめたほうがええ アレは便利だが、データの互換性を最重要課題にして 速度やサイズは二の次というのが目的だからね
j2sdk-1_4_2_08-windows-i586-p.exe をダウンロードしてインストールしたんだけど、binフォルダにjavacが無くてコンパイルできなくて困ってます。 ダウンロードするファイルが間違ってますか? これからjavaをやろうとしてる初心者なので何か勘違いしてるのかもしれません。
680 :
679 :2005/04/22(金) 04:29:32
j2sdk-1_4_2_08-windows-i586-p-iftw.exeの方をDLしたら上手くいきました。
ファイルはあってる ダウンロード・インストールをやり直してもダメ? あとは、ネットワークインストール版でやってみるか、1.5を入れるか…
swingに関して質問なんですが、 JFrameを継承したクラスが持つボタン等を押されたときに、 そのJFrameを閉じたいのですが、閉じるメソッドが見つかりません。 JFrameの右上にある閉じるボタン(Xボタン)をクリックする以外に 閉じる方法ってありますか?
683 :
デフォルトの名無しさん :2005/04/22(金) 09:35:23
>>683 parseIntが例外を投げたときに、メソッドが0を返すのが問題。
>>684 「例外を投げたとき」ってのは「例外が起こったとき」って意味でいいんですよね?
ありがとうございます、もう一度色々いじってみます。
>>682 API を見ただけだけれども、dispose() か イベントを処理させたりじゃないかな?
事後報告。 > return 10000; 例外発生時に、五桁の数を返すように修正したらあっさり直りました。 ありがとうございました。
688 :
682 :2005/04/22(金) 10:35:30
その方法だと、何故かボタンを2回クリックしないと終了しません・・・ 理由はまったく謎ですがw 以下にソースを少し載せます jButtonOK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { OptionDialog.this.dispose();//OptionDialogはこのクラス名です。 } });
689 :
686 :2005/04/22(金) 10:44:45
GUI 作ったことが無いから、このやり方が普通なのかはわからないけど public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("<適当なコマンド>")){ this.processWindowEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); } }
補足 JFrame に ActionListener を implements してあります (this はJFrame 自身)
JVM 同時実行可能なスレッド数の最大値は どこで設定されていますでしょうかにょんころりん? OSの何かの設定値に依存とかでしょうかにょんころりん?
692 :
682 :2005/04/22(金) 10:59:43
>>689 その方法でもボタンを2回クリックしないとウィンドウが閉じないです(´Д⊂グスン
693 :
桜木 :2005/04/22(金) 11:01:49
>>664 ありがとうございます。早速やってみます。
コマンドプロンプトに書き込んでいく前にすることは
ディレクトリを作る→path変数を更新する(どうやるんかは
分からないですが)でいいですか?
なぜ setVisible(false) がでてこない?
695 :
686 :2005/04/22(金) 12:17:47
>>692 試しにイベント処理で System.exit(0) を実行するようにして、それでも2回クリックの必要があるなら
クリックの処理がおかしいんじゃないかい?
デバッガやログ埋めで処理を追ってみたほうがいい気がする
現象に見当がつかなくてスマン
>>694 あぁ、たしかに…
ずっとアプリの終了方法だと思い込んでた
ソースに Dialog って書いてあらぁ orz
697 :
デフォルトの名無しさん :2005/04/22(金) 12:27:32
和暦変換って皆さんどうやってます? 前のプロジェクトでは知り合いが自作してたAPI使ってたんですが・・・。 フリーでも使えるようなAPIはあるんでしょうか。
和暦を使わないように提案しちゃうので・・・ お役所や保険関係はダメなんだろうけどな
>>693 >コマンドプロンプトに書き込んでいく前にすることは
この意味がわからないのですが。
「フォルダー」と「デイレクトリ」は同じ意味です。
pathはマイコンピュータを右クリックして「プロパテイ」をクリックしますと、
「システムのプロパテイ」ダイアログが表示されますので、「詳細設定」タブを
クリックします。下方に「環境変数」ボタンがあります。
それをクリックして変数の「path」を編集します。
本屋さんで頭がクラクラするくらい立ち読みをしていると必要な情報が
書かれている本を見つけることができます。
頑張ってください。
700 :
682 :2005/04/22(金) 13:09:35
>>694 setVisible(false)でも2回クリックしないと、ウィンドウが閉じれないです
>>695 System.exit(0)は一回のクリックで終了しました。
これはJFrameクラスを継承したクラスから呼び出されます。
アプリケーションのオプション設定画面です。
下にソースを端折って載せます、
よろしくお願いします。
public class OptionDialog extends JDialog {
private javax.swing.JPanel jContentPane = null;
private JButton jButtonOK = null;
// @param owner このクラスを呼び出すJFrame
// @param modal
public OptionDialog(Frame owner , boolean modal) throws HeadlessException{
super(owner,modal);
initialize();
}
//起動処理
private void initialize() {
this.setResizable(false);
this.setTitle("Option");
this.setSize(300,200);
this.setContentPane(getJContentPane());
this.setVisible(true);
}
701 :
682 :2005/04/22(金) 13:10:01
//パネルの取得 private javax.swing.JPanel getJContentPane() { if(jContentPane == null) { jContentPane = new javax.swing.JPanel(); jContentPane.setLayout(null); jContentPane.add(getJButtonOK(), null); } return jContentPane; } //ボタンの取得及びイベント private JButton getJButtonOK() { if (jButtonOK == null) { jButtonOK = new JButton(); jButtonOK.setBounds(27, 121, 92, 33); jButtonOK.setText("OK"); jButtonOK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { //問題の場所 } }); } return jButtonOK; } }
//問題の場所 ってあるけど、無名クラスからダイアログのメソッド呼べてるの? 単に俺が無知なだけなのだが、どういう実装しているのか教えてくれないか
703 :
682 :2005/04/22(金) 13:33:41
>>702 これで呼べるよ
クラス名.this.メソッド名
OptionDialog.this.メソッド名
例
OptionDialog.this.dispose();
>>703 ありがとう
で、上のをそのまま動かしてしてみたけれど、普通に動作してしまった
そうなると、呼び出し元のほうが原因だろうか…
閉じた瞬間にまた表示しなおしてるとか?
705 :
682 :2005/04/22(金) 14:02:30
>>704 そうみたいです( >Д<;)
OptionDialog opton = new OptionDialog(MainFrame.this,true);
opton.show();//これが再表示してたみたいです
解決しました、みなさんありがとう!!
わろた あとshowとかcloseよりsetVisible推奨ね J2SE5ではshowとかはおこられるから
あとは親のWindowクラスがなんなのかわからないときは SwingUtilities使うといい 貼り付けられている先がなにかわからないってのはよくあることだからね
708 :
615 :2005/04/22(金) 14:34:32
>>632 仰るとおりです。
トランザクションで全てを括るのでした。
ご指摘ありがとうございます。
709 :
615 :2005/04/22(金) 14:40:50
ところで、トランザクションの開始・終了ログは、 log4jのDEBUGレベルでも見られないものなのでしょうか???
710 :
682 :2005/04/22(金) 14:40:51
>>706 俺も笑いがでました。
J2SE5の事を意識してやってみようと思います。
>>707 確かに良いメソッド結構ありますね、使ってみます。
情報ありがとうございます。
711 :
デフォルトの名無しさん :2005/04/22(金) 19:48:48
>>698 使わないですむならそれが理想ですが
何せ今度の相手銀行・・・。無理ですね。
とりあえず前のプロジェクトのを流用せざる得ないですね。たぶん。
IBMのICU4JにJapaneseCalendarが入ってる。
補足。 ICU4Jのカレンダー関係はJava2SE本体のCalendarの母体ともいえる ものゆえ、クラス継承関係がJava本体のものと別になっている (本体に存在しない時点でのプロダクトなのだから当然だが) だから、 java.util.Calendar cal = new com.ibm.icu.util.JapaneseCalendar() みたいなことはできなくなる。必要な箇所では、ICUの該当クラスで 代用すること。
コマンドラインから引数を入力するとして、 入力できる(というか受け取ることが出来る)のを数字だけ なんて限定した場合、 "1"を受け取ったら"A"とか "2"を受け取ったら"B"とか "12"だったら"AB"とかって 出力できるようなメソッドってありますでしょうか?
もっともばたくさい実装でも、たった10個の if 文とループで実現可能なのじゃないか?
「ばたくさい」とは「(マイナスの意味で)洋風」という意味
717 :
デフォルトの名無しさん :2005/04/23(土) 00:34:57
>>712 おお、ありがたい。早速チェックしてみます。
>715 どの辺が「洋風」なんですか?
719 :
デフォルトの名無しさん :2005/04/23(土) 07:20:00
たとえば200という数字を文字の「200」として表したい場合、どうすればいいのでしょうか
720 :
12 :2005/04/23(土) 07:26:34
>>719 String str = "200";
int i = 200;
str = String.valueOf(i);
721 :
720 :2005/04/23(土) 07:29:21
Ooops.無意味に変な名前を打ってしまった、すまそ。
722 :
719 :2005/04/23(土) 08:22:42
ありがとうございます
java から外部dllを呼び出すことって出来ますか? windows 上で動いている Visual Basic と Visual C++ で書かれたソフトを java で書き直そうという話が出ているんですが、 1.現在利用しているミドルウェアを引き続き利用することになった場合。 2.java で書き換えたが遅いのでその部分だけC++で書き直すことになった場合。 のいづれかの事態が発生した場合は、外部dllを呼ぶことになります。 この先、linux 上で動かせとか言われるかもしれないので、出来るだけ java で 書きたいなあと思ってるんですが、外部dllを利用できないとなると C# か、 VB.net あたりで書けと言われそうなんです。
linux上で、windowsのdllをつかうのか?
その時は linux 用のライブラリもつくるんでそ? JNI で調べると吉ですぜ
>>723 JNI で DLL を呼び出せます。ANSI C/C++ と条件コンパイル活用して作れば
そのまま Linux に持っていって .so ファイル作って、同じく JNI 経由で呼び出せます。
/⌒ヽ / ´_ゝ`)すいません、ちょっとテストしますよ・・・ | / | /| | // | | U .U ®ist('hoge');
728 :
デフォルトの名無しさん :2005/04/23(土) 16:26:13
/⌒ヽ / ´_ゝ`)すいません、もう一回テストしますよ・・・ | / | /| | // | | U .U &re
/⌒ヽ / ´_ゝ`)いや実はですね、perlでチャット書いてたんですよ | / &を[& amp;]に痴漢するか迷ってるんですよ。 | /| | 痴漢しちゃうとうちのAA房友だちがそういう記号使えなくなっちゃうんですよ。 // | | しかしプログラムで& regって表示したい時に®ってなっちゃうんですよ U .U 最近裏が白紙のチラシが無くなっているのでちょっと書かせてもらいましたよ。
V ´^?u^?`)y―┛~
チャットでプログラムの説明をするときに不便って事か? &を表示したいときは& amp; って打つようにすればいいだろ。 もしくは、発言の先頭に特定のパターンが入ってる場合のみ&を置換しないようにする、とか。
&
意味わかんね。 & → & の置換対象は静的なテキスト、非置換対象は書き込み内容のような 動的なテキスト、とかいう風に作れんのか。
ソース全部こぴぺでのっける時に&をいちいち痴漢すんのがめんどいだろ?
つうか完全な板違いだボケ
そうだぞヴぉけ ─ 彡彡彡 ─ ,,-‐''""""'ノ彡彡彡彡 ─ / 彡彡彡\ ─ / 彡彡 ヽ ─ / :::::: i ─ ./ ::::::::::: ┛┗ i ─ / <"\ ::::::::::::::::::: ┓┏ / ─ / ヽ○ :::::::::::::::::: / ─ / :::::::::/ ::::::::::::: / ─ / ::::::::::::::::/ :::::<"\:::::::: >8 ─ / _::::::::::/ ::::.... ヽ○:::::: / ─ / ..| |\:::::::::::::::::::::::::: / ─ `)""::`) :::\ ̄|\:::::::::::::: / ─ ;;;⌒`),,⌒) :::.. \ ̄|\::::::::: / ウワァァン!! ─ ;;⌒`)⌒` ::::::: \ ̄|::::::::::: / .ヽ(;´Д`)ノ ゴメンナサーイ!! ``) ;;⌒`)⌒`)‐ ::::  ̄::::::::::: / ( ) ←729 ;⌒`;;),,⌒`)⌒`;;)⌒`);⌒`)⌒`) ε=/ ヽ ;;⌒`)⌒`) ;;;⌒`)⌒`)⌒`) 」」 」」 」」 」」 __ | __ | __ | __ | | | | | _| _| _| ___| ___| ___| ___|
737 :
デフォルトの名無しさん :2005/04/23(土) 18:05:47
738 :
723 :2005/04/23(土) 20:12:26
>>724 将来的に linux にするかもという話がでているので、とりあえず java 化だけしておこうかと。
>>725-726 JNI ですか、ちょっと具具って見ただけですが問題なく使えそうな感じですね。
ありがとうございました。
>>737 .net を薦める理由はなんですか?
既存の Visual Basic 6.0 プロジェクトの書き換えなんで、VB.net にするのが一番らくで、
C# がその次に楽だろうことは想像に難くないんですが、それ以外になんか理由があるなら
教えてください。
Jakarta log4j-1.2.9 で日時出力を GMT にする方法はありますか?
TTCCLayout は? SimpleDateFormat で実現できるフォーマットなら書き出せそう
741 :
739 :2005/04/24(日) 00:49:10
>>740 これで出来ました。ありがとうございました。
<appender name="myAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.TTCCLayout">
<param name="TimeZone" value="GMT" />
<param name="DateFormat" value="ISO8601" />
</layout>
</appender>
742 :
デフォルトの名無しさん :2005/04/24(日) 01:52:39
あの、ちょっと前にjreの話が盛り上がってたみたいなんですけど、 JAVAの環境も同時にインストールしてしまうというようなインストーラー付きの ソフトウェアもいくつかあったりするじゃないですか。それってどうやって作ってるんでしょう? それか標準的な手法としてはどんなものがありますでしょうか? ちょっと気になりました。教えてください。
OSそれぞれ違うからなんとも。Windowsだったら、Windows Installerとか NSISとかでぐぐると、他のソフトもひっかかるよ。
>>738 .NETだとp/invokeって言ってC#で直接DLLの関数を呼び出せるけど
JavaだとJNIを使ってDLLの関数を呼び出すためのDLLを作る必要がある
どっちにしても構造体が絡むと激しく話がややこしくなるのでめんどくせーって思ったらswigでググれ
そしてswingをググってしまう
p/invokeでDLL呼び出ししたほうが楽だぞ。やたら複雑な呼び出しさえなければ DLL呼び出し用のラッパをC#なりで用意するだけでほぼ自由にアクセスできる。 Javaで開発なんて変態開発やめておけ死ぬぞ。
swigを使ってもポインタ渡しや関数ポインタが絡むと異常にややこしくなる罠
748 :
デフォルトの名無しさん :2005/04/24(日) 03:38:01
ソフトウェアってなるべくシンプルにしろってよく言われるじゃない?
アルゴリズムなんかは発想の問題なんかもあって実際は結構シンプルにするのは
困難だったりするわけよ。
しかし今回の問題については、シンプルな方法ってのは明らかなわけ。
それを敢えてややこしくしようってのは開発者としてどうよ?
少なくとも
>>723 の1,2の問題が解決できる目処が立ってから考え直せ。
あと、
> 既存の Visual Basic 6.0 プロジェクトの書き換えなんで、VB.net にするのが一番らく
残念ながら今のままVB6+VCでやっときゃ良かった、と思えるようなオチになる
可能性が少なくない程度には楽ではない。
たしかに 見ていると、Javaでのプロジェクト経験がほとんど無さそうだしね チームの教育から始めないといけない& 生かせる資産・経験なんて ほとんど活かせない状態で、完遂できる工数を与えられてるとすると、 相当に小さいか潤沢な予算があるか 逆にそんな状態で Java が案として挙がるようなプロジェクトというと… 業務アプリをサーブレット使ったWebアプリに、とか?
750 :
デフォルトの名無しさん :2005/04/24(日) 09:23:39
アスキーコードをchar型に変換するにはどうしたらいいのでしょうか
751 :
桜木 :2005/04/24(日) 10:25:31
>>661 「Javaでディレクトリを作る方法」です。
お願いします!!
753 :
723 :2005/04/24(日) 10:53:51
>>744 swig ですか。さっそくググって見ました。
JNIとの違いがわかりません・・・ora
>>746 変態ですか(@_@)
やぱーり、java で VC の DLL ってよぶアプリって・・・・
あまり聞かないですしね。
基本的には java で書きたいんですよ。
他社製ミドルウェアはたぶん使わなくて済むと思うんですけど、
java じゃやっぱ遅いって話になったときに、部分的に C++ で
書かないといけないかもしれない。その場合はやっぱ外部DLL
にするしかないのかなぁ・・というのが問題なんです。
>>748 748 さんは VB6.0 → VB.net への書き換えの経験が豊富そうですね。
私もシンプルにするために VB+VC なんてコードは捨てて、
java オンリー(もしくは .net)にしたいんです。
>>少なくとも
>>723 の1,2の問題が解決できる目処が立ってから考え直せ。
私もそうしたほうがいいと思いますが、会社の方針というものにはなかなか
逆らえないわけでございまして、問題の発生する可能性をにらみながら、
java にするか .net にするか決めないといけないんですよ。
.net 移行への苦労話も伺いたいんですが、それはスレ違いと怒られそうなので
やめときます。
>>749 プロジェクトは既存のwinアプリ(VB+VC)をwinアプリ(java+SWTか.net)への書き換えです。
それなのになんで java かというと、将来的に linux で動かそうという話が
でているので、java にしといたほうがその時らくだろうな思いまして。
> java じゃやっぱ遅いって話になったときに、部分的に C++ で >書かないといけないかもしれない。 よほど下手な作り方をしなければ速度が問題になることはないと思う
javaを勉強をしててだんだん疑問になってきた・・・ 本当にjavaの勉強に時間を使って意味があるのかと・・・ これならCの勉強をやり直した方がいいような・・・ モチベーションが低くなってきました・・・ javaの魅力って、どのOSでも動く以外にありますか?
>>755 Javaの開発案件は今後も続くだろうから、やっておいて損はない。
と、うわっつらだけ答えてみる。
普通CかC++、JavaかC#、PerlかRubyかPythonの3系統は全部できるべきだろ。 というかできないとプログラマとしてのレベルに達していない。
>>758 の独断はどうでもいいが
ただ道具として、使えそうなものは何でも使えるべきだと思う。
実現することが命題であってそれをどのような道具を使用して実現するか
本来自由でいいはずだ。だとするとどんな言語も使用できたほうがいい。
全部Algol系なんだからどれか一つしかできない方がおかしい。 JavaをやるかCをやるかなんて選択肢はありえない。 JavaをやるかLispをやるか、とかJavaをやるかPrologをやるかならわかるがな。
ディレクトリ作成 import java.io.File; String dirName = "java/sage"; File dir = new File(dirName); boolean dirExsited = dir.mkdirs(); あとは自分で調べてください。
763 :
デフォルトの名無しさん :2005/04/24(日) 17:09:56
メソッドやクラスにつける修飾子のpublicとstaticの違いがいまいちわかりません。 この2つはどのように違うのですか? staticはメソッドにつけると、インスタンス化しなくても呼び出せるんですよね? publicはなんなのでしょうか?
>>763 どのクラスからも呼び出せるようになるアクセス修飾子。
765 :
デフォルトの名無しさん :2005/04/24(日) 17:35:59
すいません、質問があります。 今回、この様なコードを書いたのですが・・・・ public static void main(String[] args) { new MyFrame(); } MyFrameは、アプリケーションのフレームでして、このコンストラクタ内で setVisible(true) もしています。 そして、各種イベントを発生させるコンポーネントも含んでます。 このフレームを操作して、アプリケーションを進めていくのですが、 main メソッド内で、スタート用に上記のコードを書いたのですが、 これだと、アプリケーション処理中に、ある時突然、MyFrame自体が ガーベジコレクタによって、削除されてしまうという事が 発生するのでしょうか?
766 :
デフォルトの名無しさん :2005/04/24(日) 18:20:43
767 :
デフォルトの名無しさん :2005/04/24(日) 18:28:47
>>764 ありがとうございます。
ということは、staticをつけると、同じクラスの中からならインスタンス化しなくても
参照することができ、
public static とすると、どのクラスからもインスタンス化せずに参照できるという解釈でいいのでしょうか?
インスタンス化されていないものを参照することは出来ない。
769 :
767 :2005/04/24(日) 19:19:44
すいません参照ではなく呼び出しでした
>>765 ガベコレはそのような自体が発生しないように作ってあるから心配するな
>>770 過信は禁物だぞ。
例えば、Singletonパターンで意図しない解放が起きる例とかが有名。
strutsの勉強がをしているのですが困ったのでご教授ください
まずtomcatを
http://localhost:8080で猫の画像を出ることを確認し 次にstrutsのstruts-blank.warをTOMCATの
webapps直下にlogonExample.warとリネームして置いてTOMCAT
を再起動させたのち
http://localhost:8080/logonExample にアクセスすると Hello World が出ると本に書いてあったのですが
説明 The server encountered an internal error () that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
原因
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
とでて、うまくいきません。
>>772 javacコンパイラを見つけることができません。
com.sun.tools.javac.Mainがクラスパス上にありません。
たぶんJAVA_HOMEがJDKをポイントしていないのでしょう。
>>772 環境変数JAVA_HOMEが正しく設定されていないか、
JDK(Java2SDK)ではなく、JREがインストールされているか。
JDKが5.0でTomcat5.5ならJREでも動くけどね。
困ったちゃんですいません C:\>java -version java version "1.4.2_07" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b Java HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode) とでたので多分PATHはあってるのかとおもっています TOMCATは5.0です。
>775 いいから C:\ > javac と打ってみれ。
777 :
776 :2005/04/25(月) 00:30:17
うっ、何か激しく意味のないことをカキコしてしまった…… すまぬ>775
いや、PATH じゃなく JAVA_HOME の設定ができているかどうかですよ?
>>778 WIN2000にて
変数名 JAVA_HOME
変数値 C:\j2sdk1.4.2_07
です。
ごめんなさい、今日はもう寝ます 明日TOMCATのインストールあたりからやり直してみようと思います 声を掛けてくださった方々有り難うございました。
多分JREはインスコされていてパスも通ってるが %JAVA_HOME%\binにパスが通っていない
行儀悪いけど、tools.jarをcommon/libに入れちまえ
>>770 JAVA PRESSの41号見てみたらたぶん今の考え変わると思うよ。立ち読みで
チラッと読んでみ。
>>780 徹夜してやらないやつには二度と教えてもらえないと思ったほうがいいぞ
>
>>744 >swig ですか。さっそくググって見ました。
>JNIとの違いがわかりません・・・ora
おいおい頼むよ〜、本当にググってきたのか?
JNI→ネイティブコードをJavaから実行する、あるいはネイティブコードからJavaのクラスを実行するための仕様
swig→C言語/C++のライブラリ等をJava(他多数の言語)から使えるようにするコードを自動生成するツール
SwigってJNI使ってるのかな 結局スタックサイズで困りそうな罠
>>765 つうか、MyFrame のインスタンスはイベントディスパッチャースレッドが握ってるから
GC の対象にはならんよ
と指摘する奴がいないのはここが派遣のすk(ry
Swingで キャンセルボタンを押すとそのウィンドウをだけを破棄する方法を教えてください・・・
GUI 周りは超うるおぼえだが WindowListener public void windowClosing(WindowEvent e){ ((Frame)e.getSource()).dispose(); }
うるってなんだ
>>788 public void actionPerformed(ActionEvent e){
if(e.getSource().equals(jButton_OK)){ //呼び出し元がOKボタン
}else if(e.getSource().equals(jButton_Cancel)){ //呼び出し元がキャンセルボタン
((Frame)e.getSource()).dispose();
}
}
すいません、実行して、ボタンを押してもクローズできませんでした。
僕の他の部分のコーディングが原因かもしれませんが。
794 :
デフォルトの名無しさん :2005/04/25(月) 19:08:17
アプレットビューアではちゃんと動くのにWEBブラウザでとつでん読み込めなくなったんだけど・・・こんなことって普通ないですよね? あと画像がフルパスでは表示できるのに相対パスでは表示できない(取得できない?)んですけど関係ありますかね? eclipse使ってます。
>>791 そりゃそうだ
((Frame)e.getSource()).dispose(); の e.getSource() は
上の if の条件で判定している通り、Button クラスのオブジェクトなんだから
>>795 教えて君で申し訳ないんですが、どういった処理を記述すればいいか教えてもらえますか?
つーか、Swingスレとでマルチしてるな
昨日の夜は質問したまま先に寝てしまい誠にすいませんでした。 会社で眠くなるのはまずいと思ったのですが考え方甘かったです ごめんなさい。 問題のほうは何とか会社のPCと見比べながら 何が違うかつぶしていって何とか解決しました。原因はCLASSPASSだったようです。CLASSPATHにこれぶち込んだら解決しました。スレ汚しすいませぬ %CATALINA_HOME%\common\lib\servlet.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\classes; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\struts.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\commons-beanutils.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\commons-collections.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\commons-digester.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\commons-fileupload.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\commons-logging.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\commons-validator.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\jakarta-oro.jar; %CATALINA_HOME%\webapps\struts-blank\WEB-INF\lib\struts.jar;
実際798だったりするわけで。。。
javaのシステムプロパティについて教えてください 1、java.version:JAVAのバージョン(1.4.2_07) 2、java.vm.specification.version:JAVA VM仕様のバージョン(1.0) 3、java.vm.version:JAVA VM実装バージョン(1.4.2_07-b05) 4、java.specification:JREの仕様バージョン(1.4) ()内は僕の結果です 一般にjavaのバージョンと言ったら1番だと思うのですが 他にもjavaシステム内にも様々なバージョンがあることを知りました 中二つの理解が曖昧なのですが、2番のVMの仕様を元に 3番のVMが実際にコーディングされているという考えであっていますか? あと、僕の場合1〜4のベンダは全てサンでしたが他のベンダも有るんでしょうか?
>SwigってJNI使ってるのかな そもそもJNIじゃないと互換性無くて使い物にならない悪寒・・・
MSのVMもあったはずだぞ HotSPOT VMはたしかHPだよな?
805 :
802 :2005/04/25(月) 23:43:14
>>804 返事有難うございます
僕(というかデフォルト)は全部サンでした。でもやっぱ他のベンダもあるんですね
じゃあ、プロの方はサンのVMは使いにくいからHPのVMとサンのJREの組み合わせで使う
という人も居るんですかね?
どこでVMの使いやすさを判断するのかは素人の僕にはさっぱり解りませんけどね
807 :
802 :2005/04/25(月) 23:54:48
>>806 じゃあサンのVMとHPのJREの組み合わせっすか?
808 :
デフォルトの名無しさん :2005/04/26(火) 00:17:17
自分で作ったJavaアプリをJRE同梱で配布する場合 jarファイルと jre1.5.0_02フォルダをコピーしたものと start jre1.5.0_02\bin\javaw -jar xxx.jar とか書いたbatファイル を一まとめにして圧縮して配布すれば、 配布先では展開した後batファイルを実行することで Javaアプリを起動できるんですよね? 漫画喫茶で試してみたら Error: loading xxxxxx jvm.dll って感じのエラーが出てJavaアプリを起動できなかったんですが どうすればJavaアプリを配布先で起動できるようになりますか?
>802 余計混乱させたらすまんがBEAのjrockitってのもある。 これはBEAがWebLogicに同梱してるJRE(VM含む)。WebLogicを特に設定せず使うと、 このランタイムを使うことになる。単体でダウンロードもできるけどね。 良し悪しについてはよーわからん、スマソ。
Sunのが結局一番使われていてバグも放置されにくいってのはある HPのもSunをベースだった気が 1.3のころはIBMのなかなか早かったのだがSunは1.4からがんばり始めたからなぁ
jrockit JBOSSに組み込めるよ軽量でいいよ。
>>810 >HPのもSunをベースだった気が
てことはいくらSUNのが修正されてもHPが動かんとHPのそれは直らないわけだ。
VMは結構Sun以外の実装あるけどJ2SEのライブラリは 大体Sunの使ってるよね.IBMは国際化まわりでSunに コード出したこともあってかなり自分とこで手を入れ ているけどGUIはほとんどそのまま. J2MEだと自分とこで全部実装している企業が多いね.
814 :
デフォルトの名無しさん :2005/04/26(火) 10:14:38
Javaってsprintfはないのです?
816 :
age :2005/04/26(火) 10:49:23
普通に標準APIにあるだろ String data = String.format("%d + %d = %d"1, 2, 1+2 );
補足:1.5 以上が必要
5.0な もう半年以上たってるし、便利で安全なコードが書けるので 移行したほうがよさげ 少なくとも1.4に飛びついたときに比べて安定度は段違いにいい
>>820 1.5といった方が開発者っぽい。5.0という奴は利用者。
2ch でうるおぼえに突っ込みですか 新社会人の季節ですかそうですか
>>822 >>821 は一行目につっこむ事で、それ以降もダメっぽいと言いたいのだろう。
っつか、前スレかどっかでやってなかったっけ?
BugParade の件数出されて終わった奴。
824 :
デフォルトの名無しさん :2005/04/26(火) 18:26:25
InetAddress.getByName(host)で取得するIPアドレスが DDNSで変更されても変更前のものになってしまいます。 処理しているサーバ上でPingをうってみると、変更後の アドレスになっているのですが。 Tomcat上で処理する場合どこかにキャッシュされたり するのでしょうか?
826 :
824 :2005/04/26(火) 20:45:24
すいません、もう一つ質問です。 JAVA_HOME/jre/lib/security のjava.securityとかのファイルはリードオンリー属性に なってますが、直接変えてしまってもいいのでしょうか? それともどこか別のところで設定するものでしょうか? 動的に変更するには java.security.Security.setProperty("networkaddress.cache.ttl","0"); 等のように書くようですが。ファイルの変更方法については 見つかりませんでした。
827 :
デフォルトの名無しさん :2005/04/26(火) 23:02:45
学校の宿題で、困ってます。教えてください。 複数のクラス(JPanel)からなるGUIを作っています。 そのなかで、ボタンがあるButtonPanelと結果をJTextFieldに表示する ResultPanelは別のクラスになっています。ボタンを押したときのActionListener をButtonPanelに内部クラスとして書いているのですが、そのボタンを押したときの アクションの行き先は別のクラスであるResultPanel内のJTextFieldです。 このときはどのようにreferenceをセットしたらよいでしょうか。 actionPerformed(ActionEvent e){ if(e.getSource==buttonA) responsePanel.textField.setText("button clicked"); } 別のクラスにあるため、上のように出来ませんよね・・・どうしたらいいですか? よろしくお願いします。
>>827 オブジェクトの比較は==じゃなくてequals()メソッド使うべき。
>responsePanel.textField.setText("button clicked");
と同じようにすればいいじゃん。
if( e.getSource.equals( buttonPanel.buttonA ) ) {
>>828 べきとか言ってる時点でなぜそうしないといけないのか分かってない予感。
830 :
デフォルトの名無しさん :2005/04/26(火) 23:26:29
おせーて
831 :
デフォルトの名無しさん :2005/04/26(火) 23:45:13
javaのプログラムの実行中にわざと何秒か空き時間が作りたいんですけど これは for(int i = 0; i < 5000; i++); みたいにわざと無駄な処理をさせる方法しかありませんか? 何らかのクラスで処理できたらいいのですが・・・
833 :
828 :2005/04/26(火) 23:54:27
気になって組んでみたけど、いちいちButtonPanelとかResultPanelとか登場させる必要があるのか疑わしくなってきた。 Frame使っていいのならFrameで一括管理した方がいいと思った(今回のButtonFrame)。 // Main.java import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonPanel extends JPanel { JButton buttonA = new JButton("ボタン"); public ButtonPanel() { add(buttonA); } } class ResultPanel extends JPanel { JTextArea textArea = new JTextArea(10, 20); public ResultPanel() { add(textArea); } } class ButtonFrame extends JFrame implements ActionListener { ButtonPanel bPanel; ResultPanel rPanel; public ButtonFrame() { setLayout(new BorderLayout()); bPanel = new ButtonPanel(); rPanel = new ResultPanel(); bPanel.buttonA.addActionListener(this); getContentPane().add(BorderLayout.NORTH, bPanel); getContentPane().add(BorderLayout.CENTER, rPanel); } public void actionPerformed(ActionEvent ae) { if( ae.getSource().equals( bPanel.buttonA ) ) { rPanel.textArea.setText( "button clicked" );
834 :
827 :2005/04/26(火) 23:54:51
>>828 responsePanelは直接参照できないみたいです。それに、textFieldはprivate
なので、responsePanel.textField.setText("button clicked"); のようには
出来ないとみたいです。誰か教えてください・・・
>>828 e.getSource() で返ってくるのはそのボタンのインスタンスそのものなので==でよい。
836 :
828 :2005/04/26(火) 23:56:54
// つづき
}
}
}
public class Main {
public static void main(String[] args) {
ButtonFrame obj = new ButtonFrame();
obj.setSize(300, 300);
obj.setVisible(true);
}
}
>>833 にも書いたけどButtonPanelとかResultPanelというクラスの必要性は個人的には感じられません。
Frame内でJPanelを2コnewして、そいつらに対してボタンなりテキストフィールドなりをaddすればいいと思いました。
AWT、Swingは詳しくないので、もっといい案があれば是非。
>>829 FAQでしょ。もう。
837 :
827 :2005/04/26(火) 23:57:19
>>828 どうもありがとうございます。JFrameなりJPanelなり、同じクラス内に
ボタンとテキストフィールドがあれば、問題なく出来るんです。
ただ、課題の要件にそれぞれ別のクラスで書くように指示されているので・・・
どうしたもんでしょうか・・・
>>836 >FAQでしょ。もう。
なのに理解してない。と。
841 :
デフォルトの名無しさん :2005/04/27(水) 00:12:24
おせーてと書いた者なのですが。 だれか答えをおせーて。
842 :
827 :2005/04/27(水) 00:17:01
Source codeがあったほうがいいと思ったので、以下にコピーします。 ボタンを押すと、テキストフィールドに何回押したか表示されるという 宿題なんですが。(クラスは指定されているのですべてひとつのクラス で作ることは不可です) どなたか、よろしくお願いします。 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class MySurvey extends JFrame { private CenterPanel centerPanel = new CenterPanel(); private QuestionPanel questionPanel = new QuestionPanel(); //private String header = "?? // what' s this for??? public MySurvey(String header) { setTitle(header); Container c = getContentPane(); c.setLayout(new BorderLayout()); c.add(questionPanel, BorderLayout.NORTH); c.add(centerPanel, BorderLayout.CENTER); } };
843 :
827 :2005/04/27(水) 00:17:28
import java.awt.*; import javax.swing.*; public class CenterPanel extends JPanel { private ButtonPanel buttonPanel = new ButtonPanel(); private ResponsePanel responsePanel = new ResponsePanel(); public CenterPanel() { setLayout(new BorderLayout()); add(buttonPanel,BorderLayout.CENTER); add(responsePanel,BorderLayout.EAST); } }
844 :
827 :2005/04/27(水) 00:17:51
import java.awt.*; import javax.swing.*; public class QuestionPanel extends JPanel { private JLabel question1 = new JLabel("Please click on your response to There should be ASSIGNMENTS in SCM2311"); public QuestionPanel() { add(question1); } }
845 :
827 :2005/04/27(水) 00:19:39
import java.awt.*; import javax.swing.*; public class ResponsePanel extends JPanel { private JTextField textField[] = new JTextField[5]; //create array of integers (named counter), and initialize with 0 private int counter[] = {0,0,0,0,0}; public ResponsePanel() { setLayout(new GridLayout(5,1));
846 :
827 :2005/04/27(水) 00:20:38
for(int i=0;i<textField.length;i++) { textField[i] = new JTextField(4); textField[i].setSize(100,100); add(textField[i]); } }//end constructor public void incrementCounterValue(int index) { counter[index]++; } public int getCounterValue(int index) { return counter[index]; } public void reflectResponse(int index) { textField[index].setText(Integer.toString(counter[index])); } }
847 :
827 :2005/04/27(水) 00:24:28
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class ButtonPanel extends JPanel implements ActionListener { private JButton[] button = new JButton[5]; public ButtonPanel() { setLayout(new GridLayout(5,1)); button[0] = new JButton("Strongly DISAGREE"); button[1] = new JButton("DISAGREE"); button[2] = new JButton("Neither AGREE or DISAGREE"); button[3] = new JButton("AGREE"); button[4] = new JButton("Strongly AGREE"); add(button[0]);add(button[1]);add(button[2]);add(button[3]);add(button[4]); button[0].addActionListener(this); button[1].addActionListener(this); button[2].addActionListener(this); button[3].addActionListener(this); button[4].addActionListener(this); }
848 :
827 :2005/04/27(水) 00:24:58
public void actionPerformed(ActionEvent e) { if(e.getSource()== button[0]) { System.out.println("button[0] is pressed"); //responsePanel.incrementCounterValue(0); //responsePanel.reflectResponse(0); //counter is private... } if(e.getSource()== button[1]) { System.out.println("button[1] is pressed"); //responsePanel.incrementCounterValue(1); //responsePanel.reflectResponse(1); //counter is private... } if(e.getSource()== button[2]) { System.out.println("button[2] is pressed"); //responsePanel.incrementCounterValue(2); //responsePanel.reflectResponse(2); //counter is private... }
849 :
827 :2005/04/27(水) 00:25:49
if(e.getSource()== button[3]) { System.out.println("button[3] is pressed"); //responsePanel.incrementCounterValue(3); //responsePanel.reflectResponse(3); //counter is private... } if(e.getSource()== button[4]) { System.out.println("button[4] is pressed"); //responsePanel.incrementCounterValue(4); //responsePanel.reflectResponse(4); //counter is private... } } }
850 :
827 :2005/04/27(水) 00:26:40
以上、6つのクラスからなるGUIです。 どなたか、よろしくおねがいします。
荒らし?
852 :
827 :2005/04/27(水) 00:33:37
いえ、荒しじゃないです。コードがあったほうが、質問の意味が 解ってもらいやすいと思って・・・量がおおくてすみません・・・
import java.awt.*; import javax.swing.*; public class ResponsePanel extends JPanel { private JTextField textField[] = new JTextField[5]; //create array of integers (named counter), and initialize with 0 private int counter[] = {0,0,0,0,0}; public ResponsePanel() { setLayout(new GridLayout(5,1));
オブジェクト比較の際は、 Object#equals(Object)メソッド呼び出し時のオーバーヘッドを避けるため、 ==演算子を使用した方がよい。 上記の認識は間違っていますか? 回答よろしくお願い致します。
>>855 オブジェクトの何を比較したいのか。
同じインスタンスかどうかを調べたいのか?
同じ値を持つかどうかを調べたいのか?
equalsと==は違うものだよ。 obj1.equals(obj2) でも obj1 != obj2 である事もある。 オーバーヘッドはどうだろうな。 デバッガで比較したわけじゃないのでわからんが、恐らく==が軽い。
恐らくもヘッタクレもなく==が軽いよ。 ただequal()とは用途が違うだろうが
859 :
デフォルトの名無しさん :2005/04/27(水) 01:36:37
いろいろとレスありがとうございます。 ルートクラスであるObjectのObject#equals(Object)と、 ==演算子は同じ意味合いですよね。 そのことについての比較の認識です。
追記です。 例えば、StringBuffer#equals()と==演算子では比較の対象が違いますよね。 恥ずかしながら、 オーバーライドされて挙動が変わることを忘れておりました。
>>859 だから用途が違うってみんないっておろうに
しかし、
>>827 のイベントのコードは正しくて
質問としている意図が伝わっていなくて
>>828 がへんなの答えたのは神
>>827 の質問は他のオブジェクトに対してどうメソッドを呼んだらいいか
ってだけだと思うがそんなの答えは「好きにしろ」としかいえんよな
デザパタ知ってるならオブザーバーパターン使えとしか
>>859 ==を使うのは、nullとの比較や、たとえば、下のような参照の同一性を
比較するコードでつかう。
それ以外はequalsを使う。あんたが書いているコードはまちがいなく
equalを使うべき。
class MyObject {
static final MyObject MAX = new MyObject();
public MyObject getObject(String msg){
...........
if (someCondition){
return MAX;
}
}
public boolean isMax(MyObject obj){
if (MAX == obj){
// ^^^^^^^^^^^ このように参照自体が同一かを比較する場合だけ使う
return true;
}
return false;
}
参照とその他の比較をするのは違うんだが まさか同じと思ってるヤヴァイ脳みその持ち主じゃないよな?
Java始めたばっかりの頃はこの辺の理解が滅茶苦茶だった奴も多いだろ。 一番最初に引っかかる所だろうし、一番躓きやすい場所だと思うぞ。 少なくとも、C言語におけるポインタと同程度にはややっこしい。 String str1 = new String("hoge"); String str2 = new String("hoge"); となってた場合、 str1.equals(str2) はtrueになる。だが、 (str1 == str2) はfalseになる。 二番目の比較式の右辺は確かにhogeだ。 だが、str1が示してる"hoge"は一行目で作った奴で、str2のは二行目で作った「別の」hogeだからな。 Javaではこれをインスタンス(実体)が違うって言う。str1とstr2では値は同じだがインスタンスが違う。 ちなみに、intやchar、boolみたいなごく一部の単純な型(プリミティブ型)ではこんな現象は起こらない。 #擬似プリミティブ型関連の突っ込みは質問者を混乱させる恐れがあるためお控え願います
866 :
デフォルトの名無しさん :2005/04/27(水) 06:14:59
すみません、eclipseのantの出力コンソールがms932に文字化けしています。 eclipseのデフォをutf-8にしたのに。
同じ家でも住所が違えばそれは別物だ。 山田さんは富山に、もう一人の山田さんは岐阜に、 同じ山田さんだけど似て非なるものだ。 ポインタはそういうものなんだ。
「*同じ*家」なら「それは別物だ」はおかしいよな ポインタを本当に理解してるのか 理解してるつもりなのか知らんけど 少なくとも国語力に問題がありそうだ わかりにくい比喩は混乱を招く
観点によるかと。
>>827 のコードは参照の同一性のほうだから問題なし
当たり前だがequalsだとおかしい動きをする
871 :
デフォルトの名無しさん :2005/04/27(水) 20:42:38
javaアプレットでなにか作ろうと思い、JAppletを継承して描画を行おうと したのですが、いくつかサンプルを見て気になったことがあるのです。 repaint();で再描画をするのですが、その際にはJPanelのメソッドである paintComponent()を呼び出しているのですよね? JPanelもしくはJPanelを継承して作成したオブジェクトをpanelとすると panel.repaint();でpanelの再描画が行われると思うのです。 サンプルのなかにはそのように、オブジェクトに対して再描画を要求する もの以外に、単純にrepaint();とだけしているものがありました。 この場合はオブジェクトを指定していないのですが、 すべてのパネルを再描画する、という意味なのでしょうか?
JAppletのrepaintだろ?
ここって、どれくらいの初心者から教えてもらえるんですか?(..;)
874 :
デフォルトの名無しさん :2005/04/27(水) 21:30:21
>>872 なるほど、JAppletのrepaintメソッドが呼び出されているということなのですね。
でも、そうなるとpaintメソッドが呼び出されることになるのではないでしょうか?
JAppletではrepaint→update→paintの順で実行されていると思っているのですが、
repaint→paintComponentとの違いがいまいちわかりません。
repaint後の動作はどうなっているのでしょうか?
>873 とりあえず、 ・「PATHが通ってる」という言葉の意味が分かる(分からない場合は一旦PC初心者板へGo) かつ ・>1のWikiを見ても疑問が解けない かつ ・宿題で出された課題でない(課題なら宿題スレへGo) なら聞いてみたら?
876 :
874 :2005/04/27(水) 21:45:40
つーかJFrameじゃねぇか
まぁ、このままでええよ ゲーム目的なら違うけどな
879 :
874 :2005/04/27(水) 22:05:19
>>877 いえ、例として適当なソースを持ってきただけなのですが、
この場合でもインスタンスのメソッドpaintComponentを呼び出すのに
repaint()とするだけで呼び出しているのかどうかがいまいち分からないのです。
hoge.repaint();のように対象とかを指定しなくてよいのでしょうか?
だから対象がJFrameになってるんだろ? GUI以前の問題だ とりあえずインナークラスとかRunnableとかListenerをトップレベルで分割して書いてミソ
>>873 まずは半年ほどROMに徹して把握してみてはどうか
2005/10/27 以降にまたどうぞ
サーバーについてこれから学んでいこうとしているのですが、 サーバーの知識として、ASPを学ぶより、JSPを学んだほうが 良いように思えるのですが、詳しい方どうでしょうか? また、その場合ASPの知識無しでJSPだけマスターすれば 不自由ないのでしょうか?
サーバについて学ぶというか、サーバーサイドプログラミングについて学ぶということだよね? プログラミングはできるけどサーバーサイドは初めてってことかな。それともプログラミング 自体もまだこれから? 正直言ってASPかJSPかなんていうのは些細なことで、最初に学ぶのはどっちでもいい。 片方学んだらもう一方も楽にできるような学び方をすることが重要。どっちにしても5年か そこらで役に立たなくなる技術なんだから広い視野で学ぶこと。これだね。
Java系のほうがフリーで環境構築しやすい。 学習はやっぱり動かしながらじゃなきゃだめだからな
885 :
874 :2005/04/27(水) 23:34:52
>>880 少しためしてみたのですが、アニメーションせずに(repaintをしない)
でみるとJPanelの生成時?なのかアプレットの開始時なのかよくわかりませんが
とりあえず1回はpaintComponentが呼ばれて描画がされました。
アプレット(もしくはフレーム)の上にパネルを配置して、
そのパネルが仮にpanelだとしたら、panel.repaint()としても
単純にrepaint()としても動作は同じでした。
見た目は同じですが、内部の流れというか処理の順序がどうなっているのか
調べているのですがなかなか分かりません。
アプレット(もしくはフレーム)に対してrepaintするのと、
パネルに対してrepaintするのではなにが異なっているのでしょうか?
単純にrepaintだと、配置したパネルなどすべてを描画しなおしているということでしょうか?
その場合、別にrepaint→paintComponentというように呼び出されているわけではなく、
repaint→update→paint→パネルの表示→(同時にpaintComponentも呼ばれる)
という流れなのでしょうか?
何度も申し訳ないのです。。
前に、半角・全角の変換プログラムを作成したい、と質問したものです。 import java.util.regex.*; public class Convert05 { public static void main(String[] args) { Pattern pattern; Matcher matcher; for (int i = 0; i < args.length; i++) { pattern=Pattern.compile("A"); matcher=pattern.matcher(args[i]); System.out.println(matcher.replaceAll("A")); pattern=Pattern.compile("B"); matcher=pattern.matcher(args[i]); System.out.println(matcher.replaceAll("B")); } } } と、この例でいうと、 "A"が含まれているかどうかの判定をして、含まれているなら"A"に置換して、 "B"が含まれているかどうかの判定をして、含まれているなら"B"に置換して、 という感じで進めていこうと思ったんですが、判定する要素を"B"、"C"…と 増やしていったとき、 上の例だと、System.out.printlnが"A"にも"B"にもあるので、 ABCとコマンドライン引数を与えたとき、 ABC ABC となってしまうのです。 これを、 ABC と表示されるようにしたいのですが、どうしたらよろしいのでしょうか? 何卒よろしくお願いいたします。
>>855 やっぱり分かってなかったよ。。。FUCKなんじゃなかったのか?
replaceAllの結果の文字列に対してまたreplaceAllしたらどうですか。 しかしまあずいぶん無駄の多い重い処理だこと。
変換終了後をsysoutすればいいだけだろ ロジックがひどいとかそういう以前のレベルだぞ お前一度プログラミングやめて人生について考えた方がいいぞ
置換部分を関数化してA-ZとA-Zを配列に入れてforでまわしたらどうだ。
0x40を足せ。そういう風にASCIIコードは設計されている。
みなさまレスありがとうございます。 やっぱり無駄が多いですよね。 ちなみに、 半角英数字の配列、全角英数字の配列、 String hann = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" String zenn = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" を用意したとして、 ・含まれているかどうかの判定 ・含まれていれば置換 て、やっていけばいいんですか? なんか凄い無駄の多いことをしてる気がするのはわかっているのですが、 無駄が少ないような記述って例えばどうやったらよろしいのですか?
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\torao>copy con a.java public class a{ public static void main(String[] args){ for(int i=0; i<args.length; i++){ StringBuffer buffer = new StringBuffer(args[i].length()); for(int j=0; j<args[i].length(); j++){ char ch = args[i].charAt(j); if(ch >= 'a' && ch <= 'z'){ ch = (char)(ch - 'a' + 'a'); } else if(ch >= 'A' && ch <= 'Z'){ ch = (char)(ch - 'A' + 'A'); } else if(ch >= '0' && ch <= '9'){ ch = (char)(ch - '0' + '0'); } buffer.append(ch); } System.out.println(buffer.toString()); } return; } } ^Z 1 個のファイルをコピーしました。 C:\Documents and Settings\torao>javac a.java C:\Documents and Settings\torao>java a abc987XYZ abc987XYZ
894 :
886 :2005/04/28(木) 00:42:30
>>893 "A"が入力されたら"A"を引いて"A"を足すんですね。
論理積使うなんて思いもよりませんでした。
ありがとうございました。
>>893 C言語では移植性の観点からダサいやり方とされているから
Javaでも引きずっている人間が多いor文字コードという言葉は知っていても
それを演算しようという発想にまで行き着けない人間が多い。
死滅というか この書き方しらないと国家試験とおらない希ガス
>>885 paintとかupdateはAWTの仕組み
paintなんちゃらはSwingの仕組みでより細かいことが可能
paintやupdateは直接使わないこと
もちろん子のコンポーネントにもpaintなんちゃらはどんどん呼ばれていく
いや、昨日からまだ続いてるから。 現場は大変なんだって。
>>898 つまりJFrameやJAppletにrepaintすると、paintが呼び出されるのではなく
paintComponentが呼ばれるということでしょうか?
それでその上に配置したパネルとかのpaintComponentも次々と呼ばるという
ことでよいのでしょうか?
そういう認識でいい 子がどんどんよばれるためにSwingはpaintを直接使用してはいけないわけだ
>>892 含まれているかどうかの判定はいらんだろ。
コアJavaとプログラミングレッスンどっちがいいですか?
>>901 なるほど、やはり理屈から入ろうとするとなかなか分かりづらいので
もっといろいろなサンプルを作ってみようと思います。
ありがとうございました。