【トリビアの泉】Java初心者質問スレ【32へぇ〜】
1 :
デフォルトの名無しさん :
03/09/17 13:49 Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。 その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを立ち上げなおしてください。
設定したパスが正しければ、javacが使えるようになります。
それでも同じエラーが出る場合は、設定した値が間違っています。
よく見直してください。
Q. javac Hello.java でコンパイルはできるのですが、
java Hello を実行しようとすると
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』
と表示されて実行できません。
A. カレントディレクトリ(.)がクラスパス(classpath)に含まれていません。
コマンドプロンプトで、
set CLASSPATH=%CLASSPATH%;.
と設定する。最後の「;」と「.」を見落とさないように!
または、
http://www.gimlay.org/~javafaq/S004.html#S004-02 を読んでカレントディレクトリ「.」を環境変数CLASSPATHに追加してください。
クラスパスとはなにか(JavaFAQ 基礎知識)
http://www.gimlay.org/~javafaq/S004.html
Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。 その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを立ち上げなおしてください。
設定したパスが正しければ、javacが使えるようになります。
それでも同じエラーが出る場合は、設定した値が間違っています。
よく見直してください。
Q. javac Hello.java でコンパイルはできるのですが、
java Hello を実行しようとすると
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』
と表示されて実行できません。
A. カレントディレクトリ(.)がクラスパス(classpath)に含まれていません。
コマンドプロンプトで、
set CLASSPATH=%CLASSPATH%;.
と設定する。最後の「;」と「.」を見落とさないように!
または、
http://www.gimlay.org/~javafaq/S004.html#S004-02 を読んでカレントディレクトリ「.」を環境変数CLASSPATHに追加してください。
クラスパスとはなにか(JavaFAQ 基礎知識)
http://www.gimlay.org/~javafaq/S004.html
Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。 その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを立ち上げなおしてください
15 :
デフォルトの名無しさん :03/09/17 14:21
SURETATEOTU.
16 :
デフォルトの名無しさん :03/09/17 14:21
>>13 と被ってもうた。version番号が古くなっていたから数字かえておいた。
>>6 から続きを張ってみたが、やっと終わった。
>>12 は重複しているからイラン。
前スレでスレ立てるタイミングに荒らしがコピペした分まで張らんでいい。
>>17 さすがだな
しかしJBuilderのバージョンアップの激しさを物語る13,14だ
バージョン2個も飛んでる・・・
>>1 おつ〜
それよりJ2SDKって1.4.2_01が最新だよね・・・
>>19 おれはスレをたてるまでもない質問スレにしたがって
続きをかいてくれといわれたんで
>>6 から
>>11 までと
>>14 を立てた。
>>11 までで一旦とまってしまったのは連続投稿が5回までと制限されているからだ。
しかしテンプレが長すぎるきがするのだが。連続投稿規制の影響もあるので
なんとか5スレにまとめることはできないか?
再投稿を待つまでに荒らしに隙を与えてしまう。
だれかがJava用のテンプレサイト、過去ログ集を作っておいて、 そのリンクだけを張るようにすればこんなに長いテンプレの必要性も なくなりそうだ。
>>1-2 とかみたいに前スレの 1 が連打した結果で被ったのまでコピーするし…
>>1 > Q. javac コマンドを実行したときに、
> 『コマンドまたはファイル名が違います』や
> 『'javac' は、内部コマンドまたは外部コマンド、
> 操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
> と表示されてコンパイルできません。
> A. javac.exeへのPATHが通っていません。
このあたりの質問もJavaFAQ
http://www.gimlay.org/~javafaq/ をみれば済んでしまいそうなので省略できないか?
それでもテンプレに細かいQ&Aを書く理由があるとか?
初心者がそれをしつこく質問する頻度が高いと?
>>23 そのヘンの経緯は過去スレみてくれ。
Eclipse が流行ってからいくらか減ったけど、かなり多かったよ。
ここまで、『へぇ〜』が一つも出ていないのですが・・・
>>22 テンプレのテンプレを誰かが作ったサイトに保存しておいて
前スレではなくそれを参照してテンプレを貼り付けられればいいけど。
誰もやりたがらないか・・・。
27 :
デフォルトの名無しさん :03/09/17 14:43
テンプレ長過ぎなのは同感。
つーか、
>>1 のような質問はなくならないので
書かなくてもいいともおもう
前スレ、関連リンクも 個人的には見返す気はないので不用
実際に、既出事項であったとしてもあるいは不変の事柄であったとしても
生の情報の方が良い。
>>28 自分に必要ないからといって削るわけにもいかんだろ。
それに、自分で調べるより他人に聞く方が早いと思ってる奴はウザがられるぞ。
>>29 いや、前スレなどのリンク貼ろうが貼らまいが
聞く奴はそこで聞く、意味ないよ前スレリンクなんて
実際ココ来る人初心者だしね
それに、中上級者が見返すほどの内容でもない
いらねーだろ?関連リンクなんて
必要と思っている人はそのぐらい自分で探せるよ
>>30 > それに、中上級者が見返すほどの内容でもない
全部が全部そうならいいんだけどね、
30 もスレがあるとそうでもないんだな。
32 :
デフォルトの名無しさん :03/09/17 15:24
前スレリンクの利用法キボン。
>>32 他人の勉強みさせられた時とか、過去スレをつらつら読むと「初心者」が
どの辺で引っかかりそうかとか理解できるんですが。
mainメソッドからそのmainメソッドがあるクラス名を取得する方法がわかりません
>>987 closeはちゃんとしています。
普通は上書きできるものなんでしょうか?
>>35 1.4 以降であれば、
(new Throwable()).getStackTraceElement()[0].getClassName();
とかすれば取れる。
>>36 英語の API document見たけど
File#renameTo() が異なるファイルシステムで renameTo できるかはプラットフォーム依存とは書いてあるけど
既存のファイルを上書きできるかどうかには言及してないね。
移動先を delete() してから、renameTo() するのが確実だと思われ。
>>38 そうなんですか。
ご丁寧に調べていただいてありがとうございました^^
>>37 > 1.4 以降であれば、
> (new Throwable()).getStackTraceElement()[0].getClassName();
> とかすれば取れる。
(new Throwable()).getStackTrace()[0].getClassName();
でしたね
できました
ありがとうございました
現在JTableについて困っています。
ネタ心者歓迎!今更ながらにJava相談室 その4
http://pc.2ch.net/test/read.cgi/tech/1010545421/571 と同じことをしたいのですが、出来なくて困っています。
一年前のカキコですし、もう解決されているかと思い過去スレ全部検索してみたのですが、
解決策が見つからなかったので質問させてもらいます。
M$Excelで任意のセル範囲を選択・コピーして、SwingのJTableに貼り付ける
これをするには、どうしたらいいのでしょうか。
よろしくご指導願います。
自分では、、
コピーペースト機能をもってるMyEditorを用意し
ソースの、JTextAreaをJTableに代えてみました。
ですが、コピーペースト機能は、JTextクラス?じゃないと使えないみたいで
エラーが出てしまっています。
>>41 java.awt.datatransferを調べてみるべし。
43 :
デフォルトの名無しさん :03/09/17 19:11
すいません 前スレでもちょこっと書き込んだのですが、 Javaアプリケーションで画像を表示させることってできますか? また、できる場合具体的にどのようにしたらできますか? どうもへなちょこな質問でスマソ。 でも何か書いてるうちにAppletとかextendしてきて よくわからなくなりますた。(;´д`)アハァ
45 :
デフォルトの名無しさん :03/09/17 19:30
appletでランキングに対応させるには、cgiくらいしか手がないもんでしょうか?
46 :
デフォルトの名無しさん :03/09/17 20:16
47 :
デフォルトの名無しさん :03/09/17 20:32
48 :
デフォルトの名無しさん :03/09/17 20:49
49 :
デフォルトの名無しさん :03/09/17 20:51
extendするのって、1クラスにつき1つ? JFrameとDialogとかってだめなの?
48さんごめんなさい。 エラーは「式の開始が不正です」というものです。 場所は public static void main(String[] args){ のところです。 すみませんでした。
51 :
デフォルトの名無しさん :03/09/17 21:00
>>50 コンパイルしてみたら、class名で引っ掛かった。
1849っていうクラス名はダメなんじゃないの?
52 :
デフォルトの名無しさん :03/09/17 21:05
自作プログラムからサーチエンジンを利用する方法ってありますか? googleだと同一アカウントで1日100回までしか利用できないんで、 それ以外のエンジンでおねがいしまつ。
51さん 試してみたらそうでした・・・。 もともとM1というclass名でやっていたのですが、あげるときに変えたほうがいいと思って変えてしまいました。 ごめんなさい
>>49 無理。
Java は多重継承のトラブルを嫌って単一継承しかできないようにしてる。
55 :
デフォルトの名無しさん :03/09/17 21:15
>>53 90行目の終わりに}がないってエラーが出ます。
55さん 私のところでコンパイルすると90行目で「式の開始が不正です」と言われるのですが なんで違うエラーがでてしまうんでしょう・・・ 142行目に}がないとは言われました。
57 :
デフォルトの名無しさん :03/09/17 21:29
>>56 keisanメソッドの定義が終わってないのに、
mainメソッドの定義が始まってるのがおかしんじゃないの?
普通に保存したら、
public static void main(String[] args){
は92行目にあります。あなたに合わせるので、
あなたの所で何行目か教えてください。
56さん メソッドの定義が終わっていないのは宣言したものがコンパイルしたときエラーがでてしまったため終わらさずにつづけてしまいました。 私が保存すると90行目になります。改行のみでの行数です。
59 :
デフォルトの名無しさん :03/09/17 21:42
>>58 89行目に}を入れて、keisanメソッドの定義を終えた。
91行目にstatic関連のエラー出るね。
さっきから気になってるんだけど、このmainメソッドは
どこから呼び出されるわけ?
59さん keisanメソッド以下の計算式はアルゴリズムの本から写したものなので呼び出しはないかもしれません。 アルゴリズムの本はJAVAのもので class Cannibals{ static final int M=3; static final int C=3; static final int B=2; static int np=0; static int solution=0; static int[] mb=new int[(B+1)*(B+2)/2]; static int[] cb=new int[(B+1)*(B+2)/2]; static int[] mh=new int[2*(M+1)*(C+1)]; static int[] ch=new int[2*(M+1)*(C+1)]; static boolean[][][] flag=new boolean[M+1][C+1][2]; と書いてあってその後、foundメソッド→doitメソッド→mainメソッドになっています。
61 :
デフォルトの名無しさん :03/09/17 21:53
>>60 今、作ってるのはアプレットでしょ?
その本で解説してるのはJavaアプリだと思う。
そのまま写すだけじゃアプレットにはならないよ。
ああ、やっぱりかぁ どこかで見たとソースだと思ったら、 『Javaによるアルゴリズム辞典』? いきなり真似するのは、ちと無茶かと。 もう少し軽めのものからにするべきでは・・・
61さん 計算の部分は同じかと思って写してしまいました。 アプレットにするのは難しいんですね・・・
62さん その本です。軽めのものですか・・・ でもこの問題を解きたいのです。よろしくお願いします。
> 47 ヒント。 1) 元のソースの変数のスコープと改造ソースのスコープの違いは? 2) アプリケーションの場合に最初に呼ばれるのは main じゃあ、アプレットで最初(または、その後)に呼ばれるのは?
あ ただ移しただけじゃ駄目だ 2)取り消し。 スマソ
66さん 元のソースはすべてに利用可能だけど改造ソースはkeisanメソッドのみに利用可能です。 であっているでしょうか?
> 47 合っている。 そうすると doitやfoundの中で使われている変数はどうするか? doitが再帰的に呼ばれていることに注意。 単純に全部keisanメソッドの中に移すことはできない。
>>60 Javaによるアルゴリズム事典のソースコードは、
コーディングした香具師があまりオブジェクト指向に詳しくないC厨なので
あんまし美しいソースコードじゃないぞ。
Javaによるアルゴリズム事典のコーダーは 継承の使い方も下手だった。 自作したクラスを継承しているのがあったが、 何か継承を上手に利用する方法を勘違いしているような気がしてならない。 あのソースでは、従来のCのように委譲をやっているのとあんまりかわらんかったな。
書き込んだ後ネットに繋げなくなった為、遅レスすいません。
>>42 これから調べてみます。
どうも、APIですか?あれ使いづらくてわからないので、時間かかり、
また、質問しに来るかもしれませんが、また、よろしくお願いします
>>44 ここにある、ExcelAdapter、Frame1両方class作ることは出来るのですが
ExcelAdapterは使い方わからずで、
Frame1は、この表の意味がわかりません。
英語もう少し読んで、意味を考えてみます。
助言、ありがとうございました。
まだ解決できていませんので、
>>41 M$Excelで任意のセル範囲を選択・コピーして、SwingのJTableに貼り付ける
詳しい方、いらっしゃいましたら、引き続き助言いただけるとうれしいです。
それでは、徹夜で勉強してきます。
>>70-71 コードを極力短くするために、わざとやってる可能性とかは考えないの?
74 :
デフォルトの名無しさん :03/09/18 00:34
>>69 さん
mainをkeisanとつなげて閉じて、
void doit(int i,int np,int M,int C,int B,int solution)
void found(int n,int np,int M,int C,int B,int solution)
としてみたところ配列を同じようにしようとするとエラーが起きてしまいました。
配列は渡せないのでしょうか?
>>71 ところで、継承とは何のために存在していて、どう使うのが上手な使い方だと思いますか?
そして継承を使うことの利点と欠点とはどういうものなのでしょうか?
77 :
デフォルトの名無しさん :03/09/18 00:42
>>75 複数のメソッドで共有したい変数は、
メソッド定義の外側で宣言すればよくて、
わざわざ引数としてやりとりする必要はない。
>>73 継承のところみてみるといいよ。ワラタヨ。
フィールドがカプセル化されていないのが多いのもワラタヨ。
staticメソッドの巣窟になっているのもワラタヨ。
本を読んで、ミスの10や20見つけられないようなら、まだまだ自分はその程度だってことだ。
>>76 何のために存在するか?
…既存のクラスを変更しないで拡張するため
同一の性質のクラスを兄弟としてまとめるため
どう使うのが上手な使い方だと思うか?
…正確にis-a関係が成り立つときのみ使用
継承を使うことの利点
…機能拡張が容易である
多態性を利用できる
欠点
…継承されたクラスはクラス階層に縛られる
かなり不備があると思うが
>> 47 受け取る方を配列にしてないとか? それはともかく、そういう要らない苦労をする前に、 まずは元のソースをなるべく活かしてアプレットに する方法を考えてみたら? mainの中身*だけ*keisanに移して、変数は*宣言だけ* しておいて初期化をkeisanでするようにして、後は出力先を 標準出力からcanvasにでも書き出すようにすれば終わりだし。 あと、エラーの内容を出すのは必須。
うわぁ 更新してなかった・・・ > 47 初期化を宣言と同時にしたら駄目っしょ
87 :
デフォルトの名無しさん :03/09/18 01:39
47ガンガレ。漏れは寝る。オヤスミ♪
66さん エラーは今ありません。動くのですが、結果が表示されないのです。 受け取るほうを配列にするというのはどうすれば・・・
>>80 具体的に何処がまずいんで?
ひょっとして、どっかの本で
「フィールドがカプセル化されているべき」
「staticメソッドはイカン」
とか読んだので適当に言ってみただけかな?
>>89 なにもかもがそうでないといかんとかおもてないけど
複素数クラスのソースが笑えた。
今までアプレットが表示されていたんですが、 何回もコンパイルと実行を繰り返しているうちに実行できなくなりました。 コンソールを開いてみると、 java.lang.OutOfMemoryError というエラーが書いてありました。 これを解決するためには、javaソースの中に何かメソッドを作らなければならないでしょうか? お願いします、おしえてください。
>>90 複素数クラスって Complex.java だろ?
本に載ってるのは知らんが、ダウンロードした奴を
ざっとみても そんなに変な所は無いような…
>>72 であんなことかいてますが、
解決できました、ほんとうにありがとうございます。
>>94 解決したのならどのようにして解決したのか、
それを詳しく書いておくと他の人も参考になってよろしいかと。
その解決法を詳しく記述しておくことの利点は、
貴方自身、
>>41 にて
「一年前のカキコですし、もう解決されているかと思い過去スレ全部検索してみたのですが、
解決策が見つからなかったので質問させてもらいます。」
と発言していることから、ご承知とは思うが。
またその解決法を書かず「解決できました」とだけ書いてあるのでは、
>>94 は
>>41 を騙っているだけとも限らない。
>>95 了解しました。
>>44 さんがリンク張ってくれたページにて、
ExcelAdapter.java というものをコピペしコンパイルしたあと、
Frame1.javaにある一番最後の行を参考に
「ExcelAdapter myAd = new ExcelAdapter(jTable1);」
という一文を入れることで、JTableでのコピーペースト可能になりました。
エクセルとの互換性もしっかりありました。
自分は、メニューバーでやろうとおもっていたのですが、
ctrl+c、+vでも問題なかったので、解決とさせてもらいました。
自分の次やりたいことは、セルを使った計算なので、今度はそっちを勉強したいと思います。
セル一個一個識別し、行毎に計算をして一番右の列に答えを出していく
これの繰り返しをさせるプログラムを考えて行きます。
95さん、こんなものでよろしいでしょうか?
97 :
デフォルトの名無しさん :03/09/18 09:25
質問させてください。 初心者本で勉強中,”Javaは動作のプラットホームを選ばない。 (WinでコンパイルしたクラスをMacでも再コンパイルの必要なしに使用可能)” と書いてあったのですが,どうして実現可能なのでしょうか? コンパイラの出来がいいからですかね?? ぐぐってみたのですが,見つけられませんでした。 よろしくお願いします。
>>92 カプセル化していないことは多めに見るとして
せっかく同じクラス内に演算かいているなら
staticやめてインスタンスめそっどにして
メソッドの引数を節約できるのにって思ったね。
static Complex add(Complex a, Complex b)
とするより
Complex add(Complex b)
のほうが効率もよくすっきりすると思うんだよね。
Mathクラスのように値型しか扱えないわけでもないなら
あれくらいならインスタンスにしても
いいんじゃないかと思ったね。
レスありがとうございます。 なるほど,JavaVMがプラットフォームの違いをなくすんですね。 書名はやさしいJavaです。 直前にVMのことは書いてあったんですが,詳しい仕組みまでは解説していないようでした。 ありがとうございました。
101 :
デフォルトの名無しさん :03/09/18 10:13
さすがに、いまどき virtual を仮想と訳したりはしないよな? 最近のJava本でもJVMをJava仮想マシンと訳すのはないよな?
>>102 あるかどうかはしらないが
Java仮想マシンと訳すのは、何か都合が悪いのか?
104 :
デフォルトの名無しさん :03/09/18 10:31
>>102 Java妄想マシンとでもいうのか?
こんなこと書くと、アンチJava厨に使われちゃうかな
107 :
デフォルトの名無しさん :03/09/18 10:48
事実上の機械と呼ぼう。
>>98 ぱっと見た感じ
Complex add(Complex b)
だと a.add(b) とやったときに a += b になりそうに見えるんだよな
Complex は不変クラスであるべきだろうし
>>91 >これを解決するためには、javaソースの中に何かメソッドを作らなければならないでしょうか?
javaコマンドのオプションに -Xms -Xmx とかあるけどね。
でもVMがブラウザの物だったらどうすりゃいいんだろう?
でもそんなにでかいプログラムとは思えないから
OutOfMemoryErrorでるのはなんか変だね
>106 辞書が追いついてない、というか古い。 グランドコンサイス英和辞典のような新しい辞書には、 「仮想の」あるいは「(コンピュータ)仮想記憶の」という意味が記されている。
>>98 すまん
BigIntegerやBigDecimalは不変クラスだが
あなたのいうような仕様だったよ
>>98 > カプセル化していないことは多めに見るとして
「アルゴリズム辞典」に載ってるソースにカプセル化は必須か?
あと、「大目に見る」だろ?
> Complex add(Complex b)
> のほうが効率もよくすっきりすると思うんだよね。
java.math のクラス群と対応とる以外に意味はないかと。
「効率もよくすっきりする」ってのは個人的意見でしょ?
ちなみに
http://www.matsusaka-u.ac.jp/~okumura/java-algo/ で見れるソースだと これらの点は直ってるね。
> Mathクラスのように値型しか扱えないわけでもないなら
> あれくらいならインスタンスにしても
> いいんじゃないかと思ったね。
意味不明。ここで言う「インスタンス」って何すか?
113 :
デフォルトの名無しさん :03/09/18 11:13
不変クラスってfinalクラスの事かと思ってググってみたら違った。
http://www-6.ibm.com/jp/developerworks/java/030418/j_j-jtp02183.html 不変クラスの作成は簡単です。以下の条件をすべて満たしていれば、
そのクラスは不変クラスになります。
*すべてのフィールドがfinalである
*クラスがfinalとして宣言されている
*作成時に this 参照がコンストラクター外部に渡されない
*配列、コレクションなどの可変オブジェクトや、Date などの
可変クラスへの参照を含むフィールドが以下の条件を満たす
*privateである
*返されないか、呼び出し側に公開されない
*参照の対象となるオブジェクトへの唯一の参照である
*参照するオブジェクトの状態を、そのオブジェクトが作成された後で変更しない
難しいね。
>>113 > 不変クラスってfinalクラスの事かと思ってググってみたら違った。
…
>>112 > java.math のクラス群と対応とる以外に意味はないかと。
> 「効率もよくすっきりする」ってのは個人的意見でしょ?
APIと同じ仕様というだけでも十分に利点だと思うがどうか?
> > Mathクラスのように値型しか扱えないわけでもないなら
> > あれくらいならインスタンスにしても
> > いいんじゃないかと思ったね。
> 意味不明。ここで言う「インスタンス」って何すか?
文脈から判断するに,インスタンスメソッドのことだね
>>115 > APIと同じ仕様というだけでも十分に利点だと思うがどうか?
っても java.* 配下のクラスと似ている仕様にしなかっただけで
笑うってのも了見が狭いような気もするけどね。
それに
>>98 が当初言ってたのって
>> せっかく同じクラス内に演算かいているなら
>> staticやめてインスタンスめそっどにして
>> メソッドの引数を節約できるのにって思ったね。
だし。
> 文脈から判断するに,インスタンスメソッドのことだね
なるほど。
空行が入ってるから別の話なのかと思ったけど、そうじゃなかったんね。
117 :
デフォルトの名無しさん :03/09/18 13:28
できました。 みなさんありがとうございました。
pageContext.forwardでhtmlファイルを指定するとエラーになるんですが、 何を言われているのさっぱりです。 どうすればいいのか教えてください。 org.apache.jasper.JasperException: getOutputStream()はこのレスポンスに対してすでに呼び出されています
120 :
デフォルトの名無しさん :03/09/18 14:19
120へぇ〜
121 :
デフォルトの名無しさん :03/09/18 14:24
お願いです。 N*Nの盤面にチェスのクイーンをN騎ならべて、どの2つの駒も互いに張り合わない 配置を全て求めるプログラムをjavaアプレットで作って下さい…。 ほんっとにお願いします。今、命が危ないんです。
>>121 javaアプレット関係ないじゃん
Nクイーン問題なんてアルゴリズムの問題だろ?
124 :
デフォルトの名無しさん :03/09/18 14:42
>>119 pageContext.forward()でHTMLなどの静的コンテンツにフォワードできないようだ。
Tomcatだけなのか、J2EEで決まっているのかは知らないが。
response.sendRedirect()で代用したら?
>>121 学生さん?手を抜いちゃダメだ。それくらい自分で解け。
もっとも、N-Queen問題くらいメジャーな問題だと、
ちょっとググれば一発で答えが見つかるんだが…ゲフゲフ
>>124 ありがとうございます。
でも何でなんですかね?
ところで、124さんに言われてふと疑問に思ったんですけど
pageContext.forward()とresponse.sendRedirect()の違いって何なのですか?
ドキュメントみても違いがわからなっかんです。
宿題やってやるスレってのがなかったっけ?
127 :
デフォルトの名無しさん :03/09/18 14:57
121さん そうなんです。アルゴリズムをだいたいは理解したんですが、 C++のソースプログラムを見つけたので、ちょっと見てみたら 何をやってるのか分からなくなってしまったんです。 124さん 1ヶ月ほどググッたんですが、ダメでした…。 学校の宿題なのですが、僕の頭では2ヶ月考えてもダメでした。 おさわがせしてごめんなさい。もう単位落ち覚悟します。
129 :
デフォルトの名無しさん :03/09/18 16:19
Dialogを開くときの引数のownerって何ですか? Topで書いてるときはthisで直結なんですが トップで宣言したDialogを別のDialogから開いたりとかするときは どうすればいいんでしょうか?
130 :
デフォルトの名無しさん :03/09/18 18:28
torque を試しているんですが、実行させるとNullPointerExceptionが throwされてしまうんですけど、原因として考えられるものはないでしょう?
>>103 Javaヴァーチャルマシンと訳せばいい。
以前VR関係の研究をしている教授が指摘したことだ。
Virtual Realityの業界ではこれが常識になってる。
>>113 「Javaの鉄則」ではもっとシンプルに説明していたぞ。
setterメソッド相当を破棄、クラスをfinal, フィールドをprivate
こんな程度だったかな。
StringクラスやBigInteger, BigDecimalクラスのソースコードなどを
参考にすればいい。
>>112 多めに見ることを前提にして、
コピーコンストラクタがあることがC++経験者らしいソースかと思ったよ。
本当にどうでもいいが,Cloneableインターフェースを実装し
clone()メソッドをオーバーライドすればいいんじゃないかねと思った。
さらにComparableインターフェースを実装してcompareTo()メソッドを実装とかね。
あとはNumberインターフェースを実装すると便利かな〜?
あとはhashcode()かな?
しかしここまでやるとアルゴリズムとはかなりかけ離れてしまうことは確かだね。
133 :
デフォルトの名無しさん :03/09/18 18:56
枠もタイトルバーも何もないウィンドウを作りたいんですが、 どうやったらできるんでしょうか? 画像を1枚枠なしで表示したいんですが。
134 :
デフォルトの名無しさん :03/09/18 19:28
JavaBeansを作っているのですが staticなメソッドを使っており引数を仮にAとして getで取り出すメンバ定数もAの場合 A=this.Aで値を書き込もうとするとエラーがでてしまうのですが 同一の名前で行う何かいい方法はないでしょうか? なければ違う名前にすればいけるのですが・・
>>133 java.awt.Windowかjavax.swing.JWindowを使う。
>>134 staticメソッドでthisは使えない。違う名前にするしかないかな。
>>132 突っ込み所多すぎ…
> 本当にどうでもいいが,Cloneableインターフェースを実装し
> clone()メソッドをオーバーライドすればいいんじゃないかねと思った。
不変クラスに Cloneableインターフェースを実装することにあまり意味はない気が…
> さらにComparableインターフェースを実装してcompareTo()メソッドを実装とかね。
> あとはNumberインターフェースを実装すると便利かな〜?
複素数で何を比較するんですか?絶対値?偏角?
あと,Numberインターフェースなんてありません
> あとはhashcode()かな?
hashCode() な
あと,toString() と equals() くらいかな
>>119 forward呼び出す前にHTMLタグとか出力していませんか?
サーブレットでもそうですが、レスポンスに対してなんらかの出力処理を行った
後にforwardはできません。
>>136 > 不変クラスに Cloneableインターフェースを実装することにあまり意味はない気が…
あれの場合はComplexのフィールドに可変クラスが使われていないから確かに
意味ないね。けど、フィールドに可変クラスまたは配列などが使用されていた場合は
必要だよ。
> 複素数で何を比較するんですか?絶対値?偏角?
絶対値でええって。と思うがどうよ。
> あと,Numberインターフェースなんてありません
中傷クラスとインタフェスまちげえた。
> あと,toString() と equals() くらいかな
equals()とtoString()はもうすでに入ってるよ。
>>138 > あれの場合はComplexのフィールドに可変クラスが使われていないから確かに
> 意味ないね。けど、フィールドに可変クラスまたは配列などが使用されていた場合は
> 必要だよ。
そうだけどね
でもこういうプリミティブな型はどうしても不変クラスってイメージが…
> 絶対値でええって。と思うがどうよ。
実際,複素数に<(不等号)の関係はないからなぁ…
> equals()とtoString()はもうすでに入ってるよ。
ごめん,元ソース見てなかった
140 :
デフォルトの名無しさん :03/09/18 21:08
java.io.FileのrenameToメソッドで、 ファイルを別フォルダに移動することはできるんだけど、 ファイルをコピーするメソッドってないのかな。
>>139 > > 絶対値でええって。と思うがどうよ。
> 実際,複素数に<(不等号)の関係はないからなぁ…
しかしあの絶対値による比較は信号処理では重宝するよ。
わざわざ実装すべきか? という問題もあるけれど。
142 :
デフォルトの名無しさん :03/09/18 21:55
1ソースファイル内にアクセス指定子なしのクラスを複数書いた場合、 そのソースファイルの外のクラスからアクセスできるのは ソースファイル名と同名のクラスのみですよね? でも、eclipse上だと赤波線のエラーは出るけど実行するとアクセスできるんですよ。 eclipseのプロジェクトってデフォルトの設定だと何か問題あるんですか?
>>142 パッケージ外のクラスからアクセスできなくなるだけ。
同一パッケージのクラスからはアクセスできる。
>>142 package-privateは同一パッケージ内からならアクセスできると思うが…
145 :
デフォルトの名無しさん :03/09/18 22:53
>>143 >>144 package-privateのクラスにパッケージ外からアクセスできるかとか
試してる時だったんで、多分パッケージ外からのアクセスだと思います。
エラーは出てるのにアクセスできたんですよ。
ちょっと今ソースないんで思い出しながらソース書いてるんですが。。。
>>145 同一ディレクトリが同一パッケージなんだが
その辺の認識は合ってるよな?
147 :
デフォルトの名無しさん :03/09/18 23:09
>>146 >同一ディレクトリが同一パッケージなんだが
読んだまま受け取っていいなら
そのように理解しているが。
148 :
デフォルトの名無しさん :03/09/18 23:51
Thread.sleep(int)のメソッドを使う場合は必ずTry、catchを使わないといけないのでしょうか? sleepのみの単体で使用できませんか?
149 :
デフォルトの名無しさん :03/09/18 23:56
>>148 そのままうえに丸投げしちゃえば?
アホカと思うけど。
Thread.sleep(long) じゃなかったかなあ。 まあそれはおいといて、その sleep があるメソッドに throws InterruptedException つければ try-catch はなくてもいいよ。 結局どこか別のとこで try-catch か throws InterruptedException が要るけど。
151 :
デフォルトの名無しさん :03/09/18 23:58
>>145 参照を使用する側が、そのpackage-privateなクラスの
継承元となるpublicなクラスまたはインターフェイス型で
参照を保持していれば、継承元のクラスが持っているメソ
ッド経由でならアクセス自由です。
152 :
デフォルトの名無しさん :03/09/19 00:00
>>148 例外ハンドリングがソース上の「鬱陶しいゴミ」だと思っている奴は
三流以下。考え改めろ。
なんの話してんの? おりもまぜてちょ!
>>148 private static void sleep(long milis){
try {
Thread.sleep(milis);
} catch(InterruptedException ie){}
}
ってメソッドつくりゃいいだけ。Utilityクラスのpublicメソッドにしてもいい。
まぁこれがどれだけ危ないかは、自分で判断しな。
>>151 継承元のクラスがpublicなら継承先のクラスはpackage-privateにできないだろ
156 :
デフォルトの名無しさん :03/09/19 00:07
>>152 やばい!おれ「鬱陶しいゴミ」だとおもってる。
try{
・・・
・・・
}catch(Exception e){}
いつもこうなるぽ・・・
>>134 定数ならAもスタティック宣言しておけば
thisつかわなくともクラス名使って
こんな感じで行ける。
HogeClass{
static final int A = 111;
static getA( int A ){
A = HogeClass.A;
}
}
>>156 出来るんだっけ?
メンバだけか?厳しくする方向にはアクセス制限できないのは
多態性が崩れるとかの理由で
160 :
デフォルトの名無しさん :03/09/19 00:13
>>158 話題からそれますが、ローカル変数に代入してどうすんの。
メソッドのオーバーライドと勘違いしてたかな?
162 :
デフォルトの名無しさん :03/09/19 00:16
>>159 そです。
ワタシ、実装クラスをユーザから隠蔽するために良く使いますです。
1.公開メソッドだけpublicなインターフェイスに定義
2.インターフェイスを継承した、not-publicなクラスを作り、実装をそこに行う
だれも相手にしてくれないので寝ます。。。
>>142 Eclipse使ったことないけど
コンパイルエラーが出てるなら
コンパイルできなくて実行できないのでは?
古いクラスファイルを読み込んでる可能性は?
"a".toUpperCase().equals("A") == true "a".toUpperCase().equals("A") == false とするにはどうすれば良いのでしょうか?
>>162 ゴメン
インターフェースとクラスは話を分けて欲しい,ややこしくなるから
例えば,「クラスは多重継承できない」が
「インターフェースは多重継承できる」みたいな例があるからな
interface SubInterface extends SuperInterface1, SuperInterface2 {
...
}
publicクラスを継承してnon-publicなクラスは作れるんだよな?
>>166 > publicクラスを継承してnon-publicなクラスは作れるんだよな?
もち。
168 :
デフォルトの名無しさん :03/09/19 00:49
>>165 SunにいってコアAPIの仕様変更してもらえ(ワラ
Object を継承したら public な クラスしか作れないとなると 困るだろうなぁ。
>>165 char 型にしてから
Characterクラスのpublic static boolean isLetter(char ch)メソッド
を呼び出してみれば?
JOptionPaneクラスを使って、 テキストフィールドを二つもつダイアログはつくることができるのでしょうか? ユーザーからIDとPASSを二つをいっぺんに入力してもらえるようにしたいのですが。
173 :
デフォルトの名無しさん :03/09/19 12:29
今日の日にちに1日加算は下記 Calendar dt = Calendar.getInstance(); dt.add( Calendar.DATE,1 ); 今日ではなく指定日に日を加算するにはどうするのでしょうか?
>>173 Calendar#setで日付を指定してから加算する。
間違えた(´・ω・`)ショボーン
>>170 そうか、やはりその手のやり方しかないんだろうね。
ありがとう。
最近JavaHouseのサイトに繋がらないんですが、 あれってどうなってるんだかどなたか知りませんか?
>>177 え?また?
こないだ繋がったけど・・・?つながるやん!ボケ
179 :
デフォルトの名無しさん :03/09/19 15:52
>>174 レスありがとう。
具体的な例があると助かります。
>>177 > Subject: [JavaHouse-Brewers:52535] Re: ネットワーク工事に伴うサービス休止
> Date: Thu, 11 Sep 2003 21:00:54 JST
> From: "TAKAGI, Hiromitsu" <
[email protected] >
> To:
[email protected] (JavaHouse Brewers ML)
>
> > ネットワーク工事に伴い、java-house.jp のサービスのすべてを、
> > 本日深夜から、最大で1週間、休止します。
>
> 復旧が遅れ、ご迷惑をおかけしてすみません。
> 先ほどより復旧できたと思います。
>
> しかし、予想外の制約が生じたため、新たなメールのWebへのアーカイブがで
> きない(手作業を伴わないとできない)状態がまだ続いています。これについ
> ては、復旧には少し時間がかかりそうです。
>
>
> 高木 浩光@Java Houseお世話人
>>179 あの説明でわかんないの?
そのままだろ?
創造力無いのですか?
>>177 ,180
すみません、わかりました。
トップページは見られるんですが、検索やアーカイブは全然ダメなようですね。
調べたいことがあったんですが、諦めて別を当たります。
>>182 ココで聞きゃあいいじゃん
俺たちは信用できないのか?
>>183 ここで聞く前にgoogleさんに聞いて欲しいなと思うぞ。
>>179 APIリファレンス見ましたか? それでもわからないことがあれば説明しますが。
正規表現で質問です。1.4.2betaを使っています。 System.out.println("<あAB>".matches("<([^123]*)>")); System.out.println("<AB>".matches("<([^123]*)>")); System.out.println("<あAB>".matches("<([^1-3]*)>")); 1番目だけfalseになります。 これは仕様としてわりきるしかないんでしょうか?
System.out.println("あ".matches("[^123]")); ==> false System.out.println("あ".matches("[^1-3]")); ==> true なんでこうなるの? 教えてえらい人。
188 :
デフォルトの名無しさん :03/09/19 20:15
Date型から年、月、日を取りたいんですがどうやるのでしょうか?
>>188 int year = date.getYear() + 1900;
int month = date.getMonth(); // 0 〜 11
int day = date.getDate(); // 1 〜 31
>>190 古典的な unix の教科書のようだな。
スロットのアプリ作りたいんですが、 初めてゲームを作るもので、 止めたときの役判定がよくわかりません。 どなたかこの質問の意味がわかればおしえてくださいまし。
>>192 ぐるぐる回るやつのデータ構造はどうなっとるのかね?
194 :
142,145 :03/09/19 21:54
昨日の夜お答えいただいた方、ソース見つかりました。 以下の3つのファイルを作って実行してみてください。 ★test\Test999.java ★test\pa\Test100.java ★test\pa\Test200.java eclipseだとエラーは出るのですが実行できます。 DOSプロンプトでだとエラーが出てコンパイルできません。 また、new Test200().print();のコメントを外すと エラーは消えどちらやっても実行できます。 どういうことが考えられますでしょうか。
195 :
142,145 :03/09/19 21:54
★test\Test999.java import pa.*; class Test999 { public static void main(String[] args) { System.out.println("Test999!!"); Test100.main(null); } } ★test\pa\Test100.java package pa; public class Test100 { public static void main(String[] args) { System.out.println("Test100!!"); //new Test200().print(); new Test400().print(); } } ★test\pa\Test200.java package pa; class Test200 { public void print() { System.out.println("Test200!!"); new Test400().print(); } } class Test400 { public void print() { System.out.println("Test400!!"); } }
java houseってアクセス不能?
197 :
142,145 :03/09/19 21:58
書き忘れました。 CLASSPATHは . (ポチのみ) 作業ディレクトリは test ディレクトリです。
198 :
デフォルトの名無しさん :03/09/19 22:55
非矩形のウィンドウか、透過型のウィンドウを作りたいのですが、何か良い方法はないでしょうか。 Robotを使って背景をキャプチャし、それを貼り付けるという方法は良く見られますが、 これだと背景が再描画された時に対応できないので、これ以外で教えてください。
>>198 ものすごいスピードで表示・非表示を繰り返せば半透明にみえるかも
>>199 ドラゴンボールの、悟空 対 クリリンで同じような技が使われてたなぁ。
消える奴だったけど。
>>192 マジメな話全ての止まり方に対して一つ一つ自分で定義していくわけだが。
202 :
デフォルトの名無しさん :03/09/19 23:18
>>194 エラーだけではわからんよ。
漏れの環境では問題なし。(Mac)
java Test999
Test999!!
Test100!!
Test400!!
>>201 んな訳ねーだろ。全ての役は定義しておく必要はあるけど。
204 :
142,145 :03/09/19 23:48
>>202 Macではエラー出なかったですか。
俺のWindowsではこんな感じです。
test>javac Test999.java
.\pa\Test100.java:6: シンボルを解決できません。
シンボル: クラス Test400
場所 : pa.Test100 の クラス
new Test400().print();
^
エラー 1 個
205 :
デフォルトの名無しさん :03/09/20 00:02
>>204 初めにTest200.javaをコンパイルして、
Test400.classを作っておかないとダメだよ。
>>184 googleさんに聞いてみたら2chのム板のJava質問スレに聞け!
と盥回しにされました(藁 なんちゃてや
誰か教えてください。 教えてくれたら、Javaで動く伺かを作ります。
既にあるような。
210 :
142,145 :03/09/20 00:50
>>205 Javaって芋蔓式にコンパイルするのが当たり前だと思ってた。。。
1ファイルに1クラス(ソースファイル名と同名のクラス)しか書かない
ようにした方いいのかな。
>>210 使えね〜
package privateができないやん。
214 :
142,145 :03/09/20 01:00
package privateはできるんじゃない?
>>211 意味がわからん。説明が冗長すぎて何をいってんだか。
>>210 sun の javac では
直接的に必要としてるクラスファイルはコンパイルしてくれるが
間接的に必要としてるクラスファイルはコンパイルしてくれない。
public static final な定数を書き換えても
それを使ってるクラスファイルはコンパイルしてくれない。
eclipse ではそのへんの依存関係を把握して必要なもの全部コンパイルしてくれる。
217 :
デフォルトの名無しさん :03/09/20 02:37
>>216 今の場合だと、
Test999.javaをコンパイル→Test100が必要になる→
pa\Test100.javaをコンパイル→Test400が必要になる→
Test400.classもTest400.javaも見つからんぞゴルァ!
となって、途中で止まる方が自然じゃないの?
と言ってみるテスト。
218 :
デフォルトの名無しさん :03/09/20 09:14
なんていうか忘れたんですけど、 ウィンドウを開いたときに、その新しいウィンドウを閉じないと、親ウィンドウをアクティブにできないウィンドウってありますよね? 保存するときのウィンドウみたいなやつです。 あれをJFrameで設定するにはどうすればいいんですか?
>>198 Graphics2Dクラス使えないの?
221 :
デフォルトの名無しさん :03/09/20 10:09
>>219 ありがとうございます。Dialogでできました。
モーダルってやつでした。ちなみに、Frame,JFrameでは
モーダルにできないんですかね?
> 186 うちの1.4.2_01環境では再現しない。 betaなのが問題?
>>221 できない。
擬似的にやってやれないことは無いが、してはいけない。
なぜなら、ユーザを混乱させぬよう、
ほとんど全ての OS, アプリケーション (Java 以外も) に、
Frame, Dialog をキチンと区別して使うような暗黙の了解がある。
だからこそ Java の API でもきちんと Frame, Dialog を分けてる。妙なことはするな。
javaからcgiにデータを送ることに関して詳しくのってるとこってないですか?
>224 何を言ってるのかわからない。 Cからcgiにデータを送ったり、VBからcgiにデータを送ったり、 Javaからcgiにデータを送ったりできるのか? cgiにデータを送るってどういう意味?
> 142, 145 C:\test>javac Test.java pa\*.java で無問題。再現せず。
>>227 相変わらず意味不明。
何がアプレットなのか不明だし、
>>224 のどこを "アプレット" で置き換えても意味不明。
>>225 「アプレットがHTTPリクエストを発行できるか」という質問か?
230 :
デフォルトの名無しさん :03/09/20 11:24
内部クラスになっているプログラムのクラス図を書かなくてはいけないんですが、各クラスの関係は一番外側のクラスに対して集約とかコンポジションにしとけば、とりあえず間違いないですよね?
>>229 "cgi にデータを送る" とか言ってる時点で、
CGI の仕組みも分かってない悪寒がするよ
いや、アプレットからGETメソッドなりでデータを送ってcgiでチャッチして サーバに保存できるもんなのかなと思いまして。 アプレットだとファイル出力はできないみたいだから。 どうなんですか?
>>232 アプレットからそのアプレットをダウンロードしたサーバに
リクエストを送ることはできる。
サーバ上のファイルを取得するのと同じだから、
送りたいデータをパラメータとして送り先CGIのURLにくっつけてから
オープンすれば、結果的に「CGIにデータを送った」ことになる。
わかりにくい日本語でスマン。
CGIとやり取りはできるだろ 前スレでもやってたじゃん
>>232 そこまで分かってるなら、何故やってみないのだ。
なんかすいません。 なぜやってみなかったのか自分でもバカです。 逝ってきます・・・
もっとうまい方法があるのかなと思ったんだよね。
237のやさしさに惚れそうだ
239 :
デフォルトの名無しさん :03/09/20 12:57
HttpURLConnectionでOutputStreamを作って、ObjectOutputStream でラップ→Serialzableなオブジェクトを送信 HttpServletでServletInputStreamを取り出し→ObjectInputStream でラップ→オブジェクトとして受信 逆方向も可能。 C/S両方Javaプロセスなら、オブジェクトの送受信が簡単にできます。
>>239 そんなこと得意げに書いたって、
ここには既に理解している奴と理解できない奴しかいないって・・・
そんなこと得意げに書いたって、 ここには既に理解している奴と理解できない奴しかいないって・・・ 単に今知らなくて、理解できる奴がいると期待したのがマチガイでしたか (ウエーン
>>225 は、もうこれからの時代、プログラマとしてはどこからも必要とされないね。
243 :
デフォルトの名無しさん :03/09/20 17:17
Calendar dt = Calendar.getInstance(); int wday1 = dt.get( dt.DAY_OF_WEEK ); out.println("曜日--->" + wday1 + "<BR>"); dt.set(2003,9,20); int wday = dt.get( dt.DAY_OF_WEEK ); out.println("曜日--->" + wday1 + "<BR>"); 結果 曜日--->7 曜日--->2 なぜ、年月日を設定したら曜日の戻り値がかわるのでしょうか?
244 :
デフォルトの名無しさん :03/09/20 17:18
どなたか教えてくださ愛 メソッドへの参照渡しでDate型(java.util.Date)は渡せないのでしょうか? メソッド側でreturnの直前で、引数に渡したDateを編集しているのですが メソッドを抜けると値が変わっていません・・・ String等の配列でテストしてみると、うまくいくのですが、Dateの時がうまくいきません。 JDKは1.3.1_08です。
245 :
デフォルトの名無しさん :03/09/20 17:18
ファイルから読み込んだ文字列を配列に入れたいんですけど その文字列がいくつあるか不確定な場合、どうやって配列を確保すれば良いんですか? 例えば String[] data = new Stinrg[1000]; とした場合、文字列が1000以上あった場合入りきらなくなってしまいます。
>>243 どうぞ
System.out.println(Calendar.SEPTEMBER);
>>244 VB か何かから移って来て混乱しているな?
「Date を編集」なんていう物言いもちと怪しい。
どっかで勘違いしてるんだろうからまずソースを貼りなさい。
>>245 Collection のお仲間から、お好きなのを選んで使用しましょう。
ArrayList か Vector がいいでしょう。
配列は使う必要なくなると思うけど、どうしても使いたかったら new String[list.size()]; する。
248 :
デフォルトの名無しさん :03/09/20 17:40
JTableのDefaultDataModelの rowを全部消してrowを加えるという操作を スレッドから行うと 途中で再描画のイベントがきてしまい ArrayIndexOutOfBoundsExceptionが発生しています。 ボタンを押されたら上の操作を行うとすると 大丈夫なのですが。 また、ボタンを押すメソッドdoClickをスレッドから呼んでも 同様の例外が起きてしまいます。 再描画をされないようにする方法は無いでしょうか? 外に方法があれば教えていただけると嬉しいです。 よろしくお願いします。
>>249 即レスありがとうございます。
何をロックすればよいのでしょうか?
tableでしょうか?
わたしはデータモデルではないかと思います。
それではやってみます。参考になります。
>>247 ありがとうございます。
なんかもう訳わからないです。
呼び元:
java.util.Date l_date = new java.util.Date();
boolean bret= cnvPreDt(l_date);
public boolean cnvPreDt(Date ltDate){
Calendar cal;
(略)
cal = Calendar.getInstance();
cal.setTime(ltDate);
cal.add(Calendar.DATE, i + 1);
ltDate = cal.getTime();
return true;
}
みたいな感じなですが。
うーん。これで今日の半日潰しました。
>>248 「スレッドから」というのが具体的に何をさすのかいまいち分かんないんだけど、
(Java の "動作" は全部 Thread によるものだから)
DataModel の概念を使う以上、
消したいという要求が DataModel に対してなされて、
消されたよという通知が DataModel から GUI その他に対して行われ、
これらの処理は "スレッドセーフ" になるべきなんだけど、
そういう風にプログラミングしてる?
単純な話、Model をいぢくる Thread が 10 も 20 もあって、
構成要素変更の要求がのべつまくなしにきたら、
どっかの時点で描画(だけでなく要素変更そのもの)に破綻をきたすのは分かるよね?
俺の書いたことが一般論として理解できないと、
Java でどうしたらいいのか(回答は
>>249 なんだけど)も多分理解できないよ
>>251 まず「参照渡し」という言葉をすっぱり忘れて欲しい。
で。単刀直入に書くと、こういうことだ。
public boolean cnvPreDt(Date 一行目にしか使えない変数){
Date ltDate = 一行目にしか使えない変数;
Calendar cal;
(略)
cal = Calendar.getInstance();
cal.setTime(ltDate);
cal.add(Calendar.DATE, i + 1);
ltDate = cal.getTime();
return true;
}
つまりローカル変数の参照先を変更したに過ぎない。
この場合は Calendar#getTime() によって新たに生成された Date インスタンスに、
ltDate の参照が向けられた。そんだけ。
>>252 レスありがとうございます。
「スレッドから」という表現は伝わらなくてだめですね。
データモデルを一定時間おきに更新するスレッドを1個だけ生成するということです。
>>250 のようにしましたが、だめでした。
ということは、描画側でsynchronizedで書いていないということですね。
すぐには解決策は浮かびませんが考えてみます。
>>252 さんの発言は理解できていると思います。
ありがとうございます。
>>248 Swingコンポーネントをマルチスレッドでいじるつもりなら
SwingUtilities.invokeLaterやSwingUtilities.invokeAndWait
を使おう。
追記
>>251 オブジェクト指向言語で特に覚えておかなければならないのは、
変数の参照先をかえたいのか、インスタンスの内部情報を変えたいのか、
はっきりと自己の要望を分析すること。
変数 l_date 君は、自分の今見ているものが何であるかを告げる機能しか持たない。
今赤いものを見ている l_date 君に、ある時点以降、誰に聞かれても「青いものを見ています」と告げさせるには、
新たな青いものを用意して、l_date 君の首を回して向けてやるか、l_date 君が見ている赤いものを青く塗ってやるかの二通りしかない。
君のやったことは、ltDate 君に l_date 君が見ている赤いものを見せた上で、
ltDate 君の首を青いものに向けなおしてやったにすぎない。l_date 君は赤いものを見たまんま。
l_date 君にも青いものを見せたかったら、
ltDate.setTime(cal.getTime().getTime()); などとして、ltDate君(l_date君も) が観ているものを青く塗ってやるか、
設計をかえてメソッドの型を Date にして、
l_date = cnvPreDt(l_date) などして、return 青いもの; してやるしかない。
一般的には前者の方がいいだろうけど、
Date や Calendar は性格上、扱いがプリミティブ型に近いから、後者の方を俺は好む。
257 :
デフォルトの名無しさん :03/09/20 18:12
>>246 指定した日の曜日を知りたいのですが
月曜の戻り値は4のみになります。
>>257 意地でも回りくどい教え方をしてあげます。
なぜなら、できるだけ自分で答えを導き出す苦労をしてほしいからです。
dt.set(2003,Calendar.SEPTEMBER,20);
上記を実行してください。
>>255 ドキュメントを読んで
SwingUtilities.invokeAndWait
でdoClickを呼ぶと
うまくいきました。
ありがとうございました。
swingについて知識が増え、もっと詳しく勉強しようと
思います。
厳しく指導してくださった他のみなさま
深く感謝します。
261 :
デフォルトの名無しさん :03/09/20 18:29
どうしてJavaは、 String abc = "abc" abc = abc.substring(0, 4); みたいなコードがエラーになるんですか? いちいち長さを確かめなきゃならないのはウザいです。
>>261 APIの仕様に文句があるならSunにいえよ(ワラ
>>253 ありがとうございます。
はっきりとではありませんが、なんとなくわかってきました。
オブジェクト指向をもう一度勉強しなおします。
>>261 も前はC言語なら
"ABC"[-4] = 0;
とかいうコードを平気で書くのか?
>>261 だけ見ると確かにエラーにしなくてもいいような気もするけど
>>267 を見るとなるほどと思う。
ここら辺のバランスについて考察しているようなサイトは無いものだろうか。
Javaはどうも 「C++から危険なポインタ操作を除いた安全な言語を作りたい」 ってとっから設計されたらしいから 文字列関係のそっけなさもC++譲りなんだろう。
270 :
142,145 :03/09/20 23:27
>>216 >>217 ありがとうございます。仕組みが理解できました。
必要なクラスがなかった場合、同名のソースが合った場合は芋蔓式にコンパイルしてくれる。
ソースファイルにあるクラスは全部コンパイルされる。
ということですね。
だからnew Test200().print();のコメントを外すとエラーが消えたんですね。
271 :
デフォルトの名無しさん :03/09/20 23:36
入社前研修でJavaを勉強してます。 開発の現場ではJavaは何に使われてますか? 環境によらないで動くって言うのがJavaの利点であると よく聞きますが、実際にそういう理由で使われてるのでしょうか? Javaじゃなければならない理由は他に何がありますか?
OOPLの中では習得しやすい方だと考えられていること。
273 :
デフォルトの名無しさん :03/09/20 23:59
>>272 ありがとうございます。
オブジェクト指向が現場ではどういう恩恵をもたらしてるか
まだわかりませんが、Javaがオブジェクト指向である事を意識して
勉強しようと思います。
274 :
デフォルトの名無しさん :03/09/21 02:03
今javaのウィンドウアプリの作成で チェックボックスを選択させてOKボタンを押したらその選択した内容を 適用させたいと思って試行錯誤しているのですが ボタンはActionEvent、チェックボックスはItemEventでやっていて ItemEventで選択した内容をActionEventに持っていくにはどうすればよいのでしょうか? 例としてはチェックボックスに色を割り当て、 選択してOKを押したら背景の色が変わるという感じです かなり分かりづらいとは思うのですが何かヒントを頂けないでしょうか?
>>274 処理内容は全てchangeColorメソッドに書き込んでおく
ActionEventからchangeColorメソッドをよぶ
ItemuEventからchangeColorメソッドをよぶ
やりたいことはわかるが >ボタンはActionEvent、チェックボックスはItemEventでやっていて >ItemEventで選択した内容をActionEventに持っていくにはどうすればよいのでしょうか? の意味がわからない。 もし listener 使う話を言ってるならそのアプリ自身のフィールドに持たせて受け渡せば済む。
>>267 Cなら、
char abc[] = "abc", def[10];
strncpy(def, abc, 4);
みたいに書くし、C++なら
std::string abc = "abc";
abc = abc.substr(0, 4);
って書くよ。
どっちもエラーは起こらない。
Javaで類似の操作をすると例外が出る。
実に面倒だ。
>>277 俺の経験上はそのあとに何文字とってきたかチェック
することがおおいね。その後の処理に影響することが多いので。
結局、前にチェックするか後にチェックするか、どちらかは
必須だと思ってる。だからJavaで例外が出るときはチェックを
すり抜けた場合での例外なので、その処理を書くことに抵抗はないな。
母親にケツの拭き方を教えられて、それをありがたいと思うか、ウザイと思うかは人による。
280 :
デフォルトの名無しさん :03/09/21 10:45
つまらない質問ですみません。
コンパイルできないんです!
../classes/Servlet.java
../classes/mypackage/Bean.java
の状態でServlet.javaのコンパイル時にmypackageが存在しないと言われちゃいます。
Bean.javaでpackage宣言はしてるんで、classpathの問題かと
>>1 のリンク先をみて
いろいろとやったんですがどうしてもだめです。
ほんと助けてください
ちなみにマックOSXです。
頼みます(T T)
携帯Javaの移植について勉強してるんですが、 移植するときってAPI一覧を照らし合わせて同じようなのに書き換えるんですか?
282 :
デフォルトの名無しさん :03/09/21 10:53
>>280 カレントディレクトリを「…/classes/」にしてから、
javacしる。
>>282 さんのおっしゃてるカレントディレクトリって
% pwdで../classesになるってことですよね?
それでしたらいます。
284 :
デフォルトの名無しさん :03/09/21 11:09
>>283 ソース内の、エラーが出る個所をコピペしてちょ。
>>281 そうしなきゃならないならそうだし。そうでなくてすむならそうでない。まずじぶんでみてみな。
>>283 がいとうするとこ、ここにはりなさい。
>>284 さんこれです
Controller10.java:8: パッケージ egupackage は存在しません。
import egupackage.Model01;
^
Controller10.java:20: シンボルを解決できません。
シンボル: クラス Model01
場所 : Controller10 の クラス
Model01 model01 = null;
^
Controller10.java:22: シンボルを解決できません。
シンボル: クラス Model01
場所 : Controller10 の クラス
model01 = (Model01)java.beans.Beans.instantiate(
^
エラー 3 個
間違ってエラー張っちゃいました。ごめんなさい。 全部張ります。 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import java.io.PrintWriter; import egupackage.Model01; public class Controller10 extends HttpServlet { public void doPost( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { req.setCharacterEncoding("Shift_JIS"); res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); Model01 model01 = null; try { model01 = (Model01)java.beans.Beans.instantiate( this.getClass().getClassLoader(), "egupackage.Model01"); model01.setValue01(req.getParameter("value01")); model01.setValue02(req.getParameter("value02")); model01.kakezan(); } catch(Exception e) { e.printStackTrace(); }
つづき out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); out.println("計算結果:"); out.println(model01.getKekka()); out.println("</body>"); out.println("</html>"); } }
>>286 ディレクトリ・ファイル・カレントディレクトリ構成もういっかいキチンと全部書いて
>>280 の例示と違う
性格には /Library/Java/tomcat/webapps/tomcat/samples/WEB-INF/classes/Controller10.java /Library/Java/tomcat/webapps/tomcat/samples/WEB-INF/classes/egupackage/Model01.java です。 すみませんでした。
抜けてました。 今いるところは、 /Library/Java/tomcat/webapps/tomcat/samples/WEB-INF/classes/ です。 あせっちゃってヘマばっかでごめんなさい。
292 :
デフォルトの名無しさん :03/09/21 11:48
>>291 Model01.javaの先頭に
package egupackage;
って書いてある?
294 :
デフォルトの名無しさん :03/09/21 11:55
クラスパスの問題のような気がしてきた。 javac egupackage/Model01.java はOKなんだよね?
295 :
デフォルトの名無しさん :03/09/21 11:57
297 :
デフォルトの名無しさん :03/09/21 12:03
クラスパスの問題だと思う。 javac -classpath . Controller10.java でいいのかなぁ。
298 :
デフォルトの名無しさん :03/09/21 12:18
>>295 Java scriptの話はスレ違い。
>>297 できました!
ほんとありがとうございます!ほんとうれしいです!
297さん、もしよろしければ教えてほしいのですが、javac -classpath Controller10.javaって
どこを指定してるんでしょうか?質問ばかりで怒られそうですが、setenv CLASSPATHで
いろんなところを指定していたんですがだめだったもんですから。
でも、結果的にできてよかったです。
みなさんほんとありがとうございました。
10時ごろから悪戦苦闘してたのでほんとうれしいです。
ってこれ以上書いているとうざいですね。
ほんとありがとうございました。
300 :
デフォルトの名無しさん :03/09/21 12:40
301 :
デフォルトの名無しさん :03/09/21 12:40
>>258 setする情報が足りないということでしょうか?
中々うまくいきません。。。
エラーがでなかったので、うれしくて確認もしないで書き込んだんですけど、
classファイルが作られてませんでした。
エラーも出なければController10.classも作られないです。
もうなにがなんだか訳が分からなくなっちゃいました。
泣きたくなっちゃいます、
>>297 さんごめんなさいでした。
303 :
デフォルトの名無しさん :03/09/21 12:47
>>302 どっかにあると思う。Sherlockで探してみて。
305 :
デフォルトの名無しさん :03/09/21 13:01
>>304 javac -classpath . Controller10.java
ちゃんとこう打った?「.」も忘れずに。
-dオプションの話ではないのか
>>305 はい打ちました。そうしたら今度は違うエラーがでました。
servlet系のパッケージがimportできないっていうんです。
setenv CLASSPATH /Library/Java/tomcat/common/lib/servlet-api.jar/とはしてあるんです。
普通にjavac Controller10.javaとするとegupackageが読めなくて、
305さんのとおりにやると、servlet関連が全部読めないってでるようになりました。
なので、
javac -classpath ./:/Library/Java/tomcat/common/lib/servlet-api.jar Controller10.java
とやってみたらできたんです。
できたんですが、なんか意味がわかりません。
なんだか、setenvと矛盾してます。しかも実行すると404。tomcatリロードしても404。
MACだからなのか?とか思っちゃいます。
>>305 さんほんといろいろとありがとうございます。
つかれちゃったので、ご飯食べてきます。
308 :
デフォルトの名無しさん :03/09/21 13:32
309 :
デフォルトの名無しさん :03/09/21 13:43
>>308 そんなスレあったんですね、読んでみます。
>>309 ここおもしろそうですね。
ご飯食べて、落ち着いてもう一度全部見直しました。
classpath設定も全部削除して、もう一度設定し直しで問題なくなりました。
404の問題も単純にhtmlファイルのaction指定先が間違ってました。
なんかこんなことで、みなさんに迷惑かけちゃってほんとごめんなさい。
それにレスも結構つかっちゃったしでなんか申し訳ないです。
助言してくださったみなさんほんとありがとうございました、それとごめんなさいでした。
すみません。何故か全く分からないので教えてください。 今まで普通にコンパイルできていたのに、突然下記の様になり コンパイルできなくなりました。 過去にコンパイルできたソースそのままでもコンパイルできません。 Stringにアクセスできません。 クラスファイル .\String.javaは不正です。 ファイルにクラスStringが含まれていません。 削除するか、クラスパスの正しいサブディレクトリににあるかを確認してください。 と出てしまいます。何故でしょうか。
312 :
デフォルトの名無しさん :03/09/21 15:11
>311 エラーメッセージだけでは、わからない。 具体的に何をしたのか書かないと。
>>311 特に何をしたとかはないのです。
Hello Java みたいなのも
>>311 になってコンパイルできなくなってしまいました。
314 :
デフォルトの名無しさん :03/09/21 15:40
Hello Java が出力されるようになった! 次は何をすればよいでしょうか?
スレ汚しホントにすみません。 1ヶ月、Javaの勉強してきたのですが 突然、何でもない簡単なソースもコンパイルできなくなって困ってます。 俺のソースが駄目駄目でコンパイルできないなら良いのですが 明らかに通るはずのソースも突然駄目になっちゃいました。ウーン・・・
保存するフォルダを変えてみたら、コンパイルできました! すみませんでした。 でも、どうして前のフォルダではできなかったんだろ?
317 :
デフォルトの名無しさん :03/09/21 16:29
iniファイルみたいなのってjavaにある?
318 :
デフォルトの名無しさん :03/09/21 16:35
JTabbedPane Tabbed = new JTabbedPane(); /*中略*/ for (int i=1 ; i<=5 ; i++) { Tabbed.addTab(Integer.toString(i-1),paneladd()); } /*中略*/ JComponent paneladd(){ JPanel Paneled = new JPanel(); JTextArea Texted = new JTextArea("文"); Paneled.add(Texted); return Paneled; } 雰囲気としてはこんな感じで、 それぞれのタブの中に同じようなコンポーネントを置いているのですが、 この状態から3番目のタブの中にあるTexted(JTextAreaコンポーネント)に Texted.setText("文その2");のようなことをしたいのですよ。 どうやったらできますかね?
319 :
デフォルトの名無しさん :03/09/21 17:57
>>318 JTextArea[] Texted=new JTextArea[5];
JTabbedPane Tabbed = new JTabbedPane();
/*中略*/
for (int i=1 ; i<=5 ; i++) {
Tabbed.addTab(Integer.toString(i-1),paneladd(i));
}
/*中略*/
JComponent paneladd(int i){
JPanel Paneled = new JPanel();
Texted[i-1]= new JTextArea("文");
Paneled.add(Texted[i-1]);
return Paneled;
}
で、Texted[0]〜Texted[4]にsetTextできるんじゃない?
違ってたらスマソ。
∧田上∧ (@≧д≦)< イタダキマス ( つ旦O と_)_) ∧田上∧ (@≧◎≦)< ズズ… ( ゙ノ ヾ と_)_) ∧_, ._∧ ( ゚ 管゚) ………… ( つ旦O と_)_) ∧田上∧ (@≧д≦)< ガシャ ( つ O. __ と_)_) (__()、;.o:。 ゚*・:.。 _ _ ξ (´ `ヽ、 __ ⊂,_と( )⊃ (__()、;.o:。 V V ゚*・:.。
322 :
デフォルトの名無しさん :03/09/21 19:45
swingの勉強をしはじめてるのですが、 どこかお勧めのサイトまた書籍などがありましたら 教えてください。 sunのAPIドキュメントも並行して利用しますので、 それ以外のところで。
やはり事前に考えられるだけの配列を宣言しないと無理ですか....
ありがとうございました。
>>317 java.util.Propertiesでできます。
>>323 他に方法はあるかも知れないよ。
初心者の漏れにはワカンナイ.
>>322 "誰にも分からない"
でもこんななぁ、awt で苦労してれば大して難しくも無い
いくつになるか分からない配列ってできます? 1かもしれないし、1000かもしれない時って どうするの?
>>317 > iniファイルみたいなのってjavaにある?
java.util.Properties使うよりも、今はXMLで書く時代ってきがする。
そうでなくても Java Preferences APIというのがJ2SE1.4から使えるようになったらしい。
>>275-276 こんな簡単なことに気づかないとは…まだまだ勉強不足でした
言葉足らずの質問に答えて頂きありがとうございました
>>328-329 藁多。こういう話の流れ方で昔大笑いしたことがあった。
java.util.Vectorのこと
>>332 ありがとう
勘違いしてた。。
すごい恥ずかしい・・。
ガーン。・゚・(ノД`)・゚・。
337 :
デフォルトの名無しさん :03/09/21 23:28
>>327 今から可変配列を覚えるのなら
java.util.ArrayList
のほうがいいと思う。
細かいことだが。。。
Java七不思議の一つだな。なんで今になってもVectorやHashtableを薦める奴が多いのだろうか?
ArrayListよりもLinkedListのほうがええて
混乱
>>339 どっちにしろスレッドならきちんとして同期処理を書かないと
だめかと。
Vectorに完全なスレッドセーフを期待するのはまずくない?
>>340 へー。
今まで使ったことありませんでした。
勉強になります。
少しAPIを見てみましたが、ほんとに単純な配列を作るためだけには
機能が豪華すぎる気がしましたが。
>>327 すいません。
可変配列にも色々あるよ。
って感じで自分なりに調べてもらえるとありがたいです。
>>339 Collections.synchronziedList(List) を知っているかね?
>>337 >>338 java.util.ArrayList の説明に
> このクラスは、同期化されないことを除いて Vector とほぼ同等です。
と書いてあるのだが…
>>339 Vector, Hashtable は過去との互換性のためだけに存在している。
今は Collection フレームワークで導入されたものが推奨される。
同期化したいときは
>>343 みたいに Collections のメソッド使え。
>>344 そう。
だから本当に細かい事だけど、
同期化する処理の分だけパフォーマンスがいいので。
同期化したいときは
>>343 さんの言うとおり。
Vector → List list = Collections.synchronizedList(new ArrayList(...)); Hashtable → Map m = Collections.synchronizedMap(new HashMap(...)); これが最善なのか?
>>346 同期化する必要があるときはそれが最善かと。
必要がなければ
List list = new ArrayList();
Map map = new HashMap();
が最善だと思ってますが。
当たり前だけど 挿入・削除が何度も行われる場合は LinkedList の方がいいよ。
>>350 スタックのような操作(最後尾だけに挿入削除)だった場合に限り、
ArrayListのほうがはるかに性能よいよ。
あと、MapやList自身を同期化するってあまりイミナイと思うよ。 コレクションにアクセスを行うメソッド同士が、トランザクション単位で 同期取ってるようにすべき。
>>344 それがVectorを使う理由にはならない。
>>343 >>348 にしても、Vectorと同等なだけで、スレッドセーフではない。
全く
>>352 のとおりなんだけど、複数スレッドで共有されるlistに対して、
for (int i = 0; i < list.size(); i++) {
Object o = list.get(i);
doSomething(o);
}
というコードはlistがArrayListだろうがVector(=Collections.synchronizedList(list))だろうが
スレッドセーフではない。(ちなみにIterator使っても同じことね。.)
スレッドセーフにしたければ、全体をsyncronazied(list) {..} で囲むか、
Collections.unmodifiableList(list)でlistがどこからも変更されないことを保証する必要がある。
つまり、VectorやHashtableでいう「同期化」というのは、
スレッド間で共有されない場合は全く無駄な処理であり、
スレッド間で共有される場合は全く用を足さない。
これを理解していない人が多いのが
未だにVectorやHashtableが多く使われる原因なんだろうな。
ここ読んだ人は周りにVectorやHashtable使わないように伝えてくれ(笑)
>>354 Vector、HashtableからArrayList、HashMapに推奨が変更になった際に
あわせてsynchronizedを全廃したのって、まさしくそれが理由なんだろね。
即ち、大抵の用途にとって「無駄だから」。
>>354 >つまり、VectorやHashtableでいう「同期化」というのは、
>スレッド間で共有されない場合は全く無駄な処理であり、
>スレッド間で共有される場合は全く用を足さない。
訂正、「用をなさない」だ(笑)
357 :
デフォルトの名無しさん :03/09/22 04:21
二つ質問があります。 1つめ このリストを定数として各クラスから参照したいのですが、安全でしょうか? public static final List l = new AllayList() {{ add(〜 … }}; 2つめ 定数にjavadocを付与すると下のように非常に見づらくなってしまいます。 セミコロンの後に//コメントの用に付加できれば見やすくなりそうなのですが なんとかならないものでしょうか? public final class Const() { /** * アプリケーションで使用する色コード */ public static interface color { /** 赤 */ int red=1; /** 青 */ int blue=2; … } }
>>357 の補遺です
1つめのListは2つめ同様public final classが保持するものとします。
>>357 >>354 読んだらわかりそうなもんだけど、安全ではない。
定数として使うなら、
public class A {
public static final List 定数リスト;
static {
ArrayList list = new ArrayList();
list.add("定数A");
list.add("定数B");
定数リスト = Collections.unmodifiableList(list);
}
}
リストの要素が不変オブジェクトじゃないと完全に安全ではないけどね。StringとかならOK.
定数リストは・・・早く1.5のGenerics使いたいな
>>355 > synchronizedを全廃した
詳細キボン
>>359 漏れならこうするかな。
public class A {
public static final List 定数リスト;
static {
Hoge[] hoges = {定数A, 定数B};
定数リスト = Collections.unmodifiableList(Arrays.asList(hoges));
}
}
ちょっとだけすっきり。
今274氏と同じような背景を設定するアプリを作っているのですが
私の場合はメインウィンドウが別にあり、メイン側の背景を設定するための別ウィンドウ
を作成しています。
ttp://javawakame.at.infoseek.co.jp/BGset.java.txt お見苦しいソースで恐縮なんですが、注釈にあるように
チェックボックスの表示場所をセンターに持っていく方法と
背景色を選択したとき、そのウィンドウではなく別ウィンドウ(メインの方)の
背景を変える方法が思いつきません…
戻り値をColorにしてColorを返してみたりもしたのですが。。。
どなたかヒントを頂けないでしょうか_| ̄|○
>チェックボックスの表示場所をセンターに持っていく API だけで実現するなら、fill しない GridBagLayout でできたんじゃなかろうかのう。 GridBagLayout はややこしいし、使いこなしたところで大して役に立たないから、 初心者にはお勧めしたくないけど・・・ >別ウィンドウ(メインの方)の 背景を変える方法が思いつきません… その別ウィンドウ(Frame しか対象でないならフレームと呼んでおきなさい)の参照を引っ張ってきて setBackgound すればいいんじゃないの private Frame target_; bgc.setTarget(Frame f) { target_ = f; } OK 押したら target_.setBackground(cb.getBackground());
何か変なこと書いた bgc.setTarget(対象となるフレーム); public void setTarget(Frame f) { target_ = f; } こうね。
>>359 > 定数リストは・・・早く1.5のGenerics使いたいな
Genericsって何?
G.E.N.E.S.I.S.なら知ってるが
>>367 > ただ、
>>359 が言いたかったのはTypesafe Enumのほうかも知れぬ。
Typesafe Enum は Joshua の本で読んだな
O_CREAT | O_WRONLY | O_TRUNC
みたいな定数がうまくいかない例は解消されてるの?
>>26-34 昔の話を蒸し返して申し訳ないが
このスレのまとめサイトって需要あるのか?
>>367 Vector<String> みたいな型が使えるということか
ごめんよ,別のところの記事で読んだよ
そこの英文の記事は "generic type declarations and methods" の件で既に意味不明だったよ
ただ,JVMの下位互換性があるんだね
>>368 それって個々のフラグの寄せ集めであって列挙された要素じゃないような…
>>371 enum { SPADE = 1, CLUB = 2, HEART = 4, DIAMOND = 8 };
const int BLACK = SPADE | CLUB;
card = getCard( CLUB );
card = getCard( CLUB ); ↓ card = getCard( BLACK );
>>372 その場合、SPADE であり、なおかつ CLUB でもあるということはありえないけど、
>>368 みたいな場合は O_CREAT とかを他のフラグを組み合わせて使う。
全てのフラグが常に使えるわけないし、 boolean を幾つも引数にしたくないので
引数型を int にしてるだけで、基本的には enum であらわして良いものでない。
>>374 本質はそこではない
int enum を使えば簡単な「列挙定数の和集合」が
Joshua の本の時点での typesafe enum では難しかった
これが解消されているか,だ
その例として,open システムコールのオプション定数や
黒いスートのカードを取得する例を挙げた
>>375 > その例として,open システムコールのオプション定数や
こっちは、本質的に別々の、読み込み専用、書き出し専用、読み書き両用と
ファイルが無い時にファイルを作成するかのフラグ、
などの個々の列挙を利便性のために一まとめにしてるだけ。
>>375 > 黒いスートのカードを取得する例を挙げた
こっちは 一つの列挙内での集合を問題にしてるのか。
ちなみに、これを open の例に適用すると
open("hoge", O_RDONLY | O_WRONLY);
とかになるけど。
>>375 getCard(CLUB) が既にできるとして、
getCard(Math.random() < 0.5 ? CLUB : SPADE) で代用できそうだね。
>>378 山札の中身が分からないのになぜ CLUB と SPADE が同じ確率になる?
>>379 だったら getCard(List<Suit>) で良いだろ。
>>380 それをいうなら List じゃなくて Set だろ
汎用の Set じゃ使いにくいっていうのが Joshua の本で挙げられた
数少ない typesafe enum の欠点なんだよ
>>381 > 汎用の Set じゃ使いにくいっていうのが Joshua の本で挙げられた
どこが?
typesafe enum とは関係ないがSet が使いにくいと思うこと。 Set が保持する要素のうち、どれでもいいから一個取り出したときに set.iterator().next() とかやらないといけないこと。
>>382 p112の最終段落(The type safe enum pattern has few disadvantages 〜)から
p113の前半部までだ
typesafe enum は int enum に比べて,集合を表すときに明快さと速さで劣る
これはどうしようもないが,
専用の Set を実装して,その typesafe enum 型しか受け付けないようにして,
内部的にビット配列で実現すれば,ある程度差を埋めることは可能だ
まあ Generics とやらの Set<typesafe enum> を使えば型の不一致は何とかなるだろう
これが Joshua の本の時点からの進歩の1つかもしれないな
>>384 > p113の前半部までだ
悪いが、 Joshua の本ってのを持ってないので。
> typesafe enum は int enum に比べて,集合を表すときに明快さと速さで劣る
int enum は型チェックが無い点と拡張性が著しく制限されている点で劣る、と。
ところで型制限の厳しい enum を持ってて、かつ集合が簡単に表せる言語ってあるんか?
>>359 .362
ありがとうございます。安全なソースになるよう気をつけます。
>>360 残念…。ツールはまずそのツールが正しく働くか検証しなければならないのが
難点なんですよね。JavaDocを使わないわけにもいかないので多少の見栄えを我慢するしかないようです。
Javaにもだいぶ慣れたので、今日の午後は 図書館でC言語の厚めの入門書を読んでみた。 文字列の扱いにキョーガク....ヤッテラレンヨ.... java.lang.String マンセー
型制約を、面倒くさい厄介事だと思う奴→三流 型制約が、バグの発生を防ぐ便利な道具だと理解している奴→まとも
394 :
デフォルトの名無しさん :03/09/23 02:23
これって間違えていますか? DocumentListenerの実装部分でエラーがでるのですが、なぜかわかりません。 import省略 class Dr28_2Frame extends JFrame{ public JTextField tf1, tf2; public Dr28_2Frame(){ setSize(300, 100); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); }}); Container c=getContentPane(); c.add(tf1=new JTextField("", 20), "North"); c.add(tf2=new JTextField("", 20), "South"); tf1.getDocument().addDocumentListener(new DocumentListener(){ public void insertUpdate(DocumentEvent e){ tf2.setText(tf1.getText());} public void removeUpdate(DocumentEvent e){ tf2.setText(tf1.getText());} public void changeUpdate(DocumentEvent e){}}); } } public class Dr28_2{ public static void main(String[] args){ JFrame w=new Dr28_2Frame(); w.show();} }
395 :
デフォルトの名無しさん :03/09/23 03:33
>>394 ×:changeUpdate
○:changedUpdate
>>351 >
>>350 > スタックのような操作(最後尾だけに挿入削除)だった場合に限り、
> ArrayListのほうがはるかに性能よいよ。
Stackクラスは高性能と聞いたんだがどうだ?
StackはVectorを継承してるからな〜
398 :
デフォルトの名無しさん :03/09/23 04:45
>395 下らない質問にお答え下さいましてありがとうございました。 今度からはもっと注意して質問いたします。
399 :
デフォルトの名無しさん :03/09/23 07:03
C/C++で BYTE b=200; int n=(int)b; とするとn=200だが、 同じことをJavaのbyteですると n = - 5 6 に な る いや、理由は分かったけどさ・・・この相違に気付くまでえらい苦労したな・・・。
Stringがポインタというのに未だに馴染めん。 ウカーリするとstr=="0"とかやってたりしてバグフィクスに手間取る。
>>400 1.「C の char * だって、 == では比較不可能だ」
ということを、感覚としてつかんでいない。
2. 条件文に文字列リテラルが現れるのは美しくない。
できるだけ final String 宣言した定数を使うことをお勧めする。
Stringの比較演算については前スレの終盤でかなり議論になったな。
>>401 char *は俺はポインタだーと全力で叫んでるからまだいいんだが。
いっそのこと基本データ型を一切使わないほうがいいかねぇ。
統一性がとれそうだし。実行効率が著しく悪くなりそうだが。
>条件文に文字列リテラルが現れるのは美しくない
それは確かに。DBのフラグなんか扱ってるとついやっちゃうけど。
41で質問させてもらったものです、また、質問させてもらいます。 現在JTableで、 A+B=Cという簡単なプログラムを作ろうと思っているのですが JTableのgetValueAt(int row, int column) を使うと Object型で返ってきてしまい、計算式に持っていけません。 自分でObjectのAPI見ても、そこからintやdoubleに持っていく方法がわからず 簡単な式を計算させることも出来ません。 JTableに入力した数字をintやdouble型で抜き出すにはどうしたら良いか または、Object型をint、double型にする方法を どなたかわかる方、教えてもらえないでしょうか。 視野の狭い質問ですが、ご指導よろしくお願いします。
>>404 ・・・・・・例えば、Collection とか使ったことないのか?
JTable なんか触る前に Java の "やり口" を勉強した方がよさそうだな。
どう組んでるのか知らんが、とにかくこうやってみろ
Object obj = getValueAt(r, c);
System.out.println(obj.getClass());
これで例えば Integer とかなんとか表示されたら、
int i = ((Integer)obj).intValue();
これで int にもっていける。Double やなんかだったら頑張ってやり方探せ。
406 :
デフォルトの名無しさん :03/09/23 16:53
CreateNewFile()使ってファイルを作るとき、 ディレクトリを指定する方法はありますか?
>>364-365 やってみたところコンパイルは通りましたが
色を変えようとするとDOS窓の方でエラーっぽいのが出て
思い通りには行きませんでした_| ̄|○
今試行錯誤中ですが、一歩前進出来た気がします
大変参考になりました ありがとうございます
408 :
デフォルトの名無しさん :03/09/23 18:28
はじめまして。 ダブルクリックはgetClickCountを使えば検出することができるようですが、 キーを二度(というか、複数度)すばやく叩くのを検出する方法はありませんか? 一度目に叩かれてから何秒後に二度目が叩かれたかを計算するとできそうですが、 なんだか泥臭いのでもっとスマートにgetClickCountのような方法を使いたいんです。 よろしくお願いいたします。
>>408 そんな入力方法が、ちまたの OS においてサポートされていない以上、
Java にもそんな API はないと思われ。
keyPressed と keyCode と System.currentTimeMillis でも使っときなさい
410 :
デフォルトの名無しさん :03/09/23 19:21
取得した文字列の前後にスペースがある場合 それを削除して文字列を返すプログラムを考えてるんですが、 やはり文字列を文字に一個一個分解してそれがスペースかどうか 確かめて削除するしか方法ないっすかね?
>>409 やっぱりうまい方法はないんですね。
keyPressedとkeyCodeとSystem.currentTimeMillisでも使っときます。
413 :
デフォルトの名無しさん :03/09/23 20:48
抽象クラスを勉強してるんですが、 どうも処理の流れのイメージがつかめなくて こまってます。 今は 抽象クラスを継承したクラスをインスタンス化したら 抽象クラスと継承したクラスをひとまとめにしたようなクラスが インスタンス化されてんのかなー みたいな認識でいます。 このような考え方で大丈夫でしょうか。
>>413 >抽象クラスと継承したクラスをひとまとめにしたようなクラス
というより継承したクラスが抽象クラスの特徴をもっている
というほうがオブジェクト指向の正しい考え方です
仮想マシンなどの実装レベルの話しでは
抽象クラスと継承クラスをひとまとめにしたクラスをインスタンス化していますが
Javaプログラムを作成している段階では
抽象クラスの特徴をもっているという考えの方がいいです
415 :
デフォルトの名無しさん :03/09/23 21:13
ネットワークプログラムを書いていて、デッドロックの問題が起きました。 どのようにすれば、デッドロックが避けられるか、ご意見お願いします。 2個のマシンa,bが同じプログラムでデータを送受信します。 デッドロックは次のようにして起きます。 aがデータをロックし、bにデータ送信を依頼 bも同様。 データ送信するときにもロックするため、タイミングによっては デッドロックが起きてしまいます。 どうしたら、回避できるでしょうか? よろしくお願いします。
>>414 なるほどー!そういうことだったんですね。
すごくよくわかりました!
どうもありがとうございます!
実装レベルと製造段階での捉え方まで教えていただき
ありがとうございました。
>>416 レスありがとうございます
2フェーズコミットを知らないので調べてみます。
ちらっと検索した感じでは この例でいえば
送信、受信側が処理できると事前に確認してから
ロックして処理を行うということですね。
ありがとうございます。
419 :
デフォルトの名無しさん :03/09/23 21:32
質問というかアドバイスが欲しいのですが、お願いします。 絵の上に青で半透明をかけたいのですがよい方法はないでしょうか? 今の僕の考えでは1ドットおきに青い点をおくしか想像が付かないのですが、それではプログラムが重くなってしまうので。 いい方法があったら教えてください。
>>415 データ送信の要求前にデータのロックが必要なのは何故?
で,どうしても必要なら根本的な解決法はなさそうだから
タイムアウトするしかないんじゃない?
資源割り当てにおいてデッドロックが発生する条件
1.排他制御を要求
2.ある資源を持った状態で他の資源を持つ
3.資源の横取り不可
4.循環が存在
1.は問題の根本.排他制御が必要なければそれで終わる
2.は最初に聞いた質問と関連する
3.はタイムアウトして資源を解放すれば解決する
4.は双方向通信ならしかたない
>>419 目的の色(青)のRGB値と画像のドットのRGBで平均取ればいいだろ。
アルファチャネルでぐぐれ
>>420 丁寧なレスありがとうごさいます。
>データ送信の要求前にデータのロックが必要なのは何故?
私の書き方が正確ではなかったかもしれません。
synchronized中でデータを受信をしているのです。
この実装は手抜きすぎました。
これは送受信できることを確認するように実装すれば(2フェーズコミット?)、
解決すると考えます。
全くご指摘の通りで、送信要求の前にロックしなくてもよいです。
これでデッドロックは避けられそうです。
文字の比較について質問です。 一文字ずつ文字を比較していきたいのですが どの方法が処理が軽いのでしょうか。 1.一文字ずつをsubStringで抜き出してequalsで比較する。 2.あらかじめ比較する文字列をStringの配列にしてequalsで比較する。 3.Characterの配列にしてequalsで比較する。 もっといい処理方法があれば教えてください。
>>424 String s="abcde";
char c[] = s.toCharArray()
宿題ですか?がんばってください
427 :
デフォルトの名無しさん :03/09/23 22:49
>>424 toCharArrayでchar配列に変換するか
charAtで1文字ずつ比較
>>426 >>428 ありがとうございます。
プリミティブのchar型は扱った経験が
ないのですが、比較にはどのような
方法で行えばよいのですか?
比較メソッドなどあるのでしょうか。
教えてください。 メインメソッドから引数も型も何も指定しないで 違うメソッドを呼び出すにはどうしたらできるのでしょうか? また、returnでメインメソッドを返すときString型の値も返す場合 return hoge; でいいのでしょうか?
for(int i=0; i<c.length; i++){ if(c[i]=='a'){//シングルクオート System.out.println("equals - " +i); } }
>>430 言ってる意味がよく理解できないけど
多分呼び出すメソッドをstaticにすればいいのでは?
>>431 なるほど、比較演算子でよかったのですか。
シングルクオートということも知らなかったです。
ありがとうございました。
>>430 何でもかんでも main メソッド内に書いてないか?
どっちかというと main メソッド内にはコンストラクタだけ書いて
コンストラクタ内で何でもかんでもする方がまだまし。
>>434 いえ、mainメソッドには一番最初に呼び出すメソッド名と
処理が正常終了したと表示する命令しか書いてません。
public static hoge
{
…処理・・・
return;
}
public static void main(String[] args)
{
hoge;
System.out.println("処理が正常に終了しました。");
}
こんな感じになってます。(結構略しましたが)
多分メソッドの呼び出しが間違ってるのかと。
javaでキーボードの状態を知る方法はあるのでしょうか? Win32APIで言うと、GetKeyStateのような。
>>436 状態はワカランかも。イベントがオブジェクトとして拾えるだけっぽ。
そうですか。 やっぱり、ゲームとかには向いてないですね
>>435 >>437 も書いてるけど hoge() だ。
ただ今後さらに上を目指すなら、よっぽど簡単な処理でない限り
main から static メソッドを呼び出すようにするのはやめた方がいい。
たぶん hoge メソッドに static がついてる意味わかってないでしょ?
ええと、できなくて困ってたプログラムは無事完成できました。
自分もまだまだ未熟なんで
>>442 の意味を詳しく知りたいです。
>>440 それはWin32APIを念頭に置いているからそう思うだけで、
イベントドリブンなプログラミングを理解できれば同じことができる…
と思ってちょっといじってみたが、アクションゲームで頻繁に使う
キーの同時押しの判定を一発でできるようなAPIが見つからない。
自前で実装しないといけないのか?
Win32APIは使ったことないが、その辺楽に実装できるのかなぁ
445 :
デフォルトの名無しさん :03/09/24 03:23
>>444 キーの押下状態「変更」の度に「押下状態が変更されたキーの識別用のデータ
を持った」イベントが上がるわけなので、ソレ拾ってStateオブジェクトにでも
保存しとけばええんでねえの。
JScrollPane、JEditorPane、JTextField の大きさを固定することはできないのでしょうか。 public void setMaximumSize(Dimension maximumSize) public void setPreferredSize(Dimension preferredSize) public void setSize(int width, int height) どれも継承メソッドとして利用できそうなのですが、 機能しない(ウィンドウの大きさの変化に伴い大きさが変わってしまう)のです。 これらを格納するパネルやコンテナのレイアウトの仕方などに関係してくるのでしょうか?
447 :
デフォルトの名無しさん :03/09/24 03:35
>これらを格納するパネルやコンテナのレイアウトの仕方などに関係してくるのでしょうか? そうです。親のレイアウトマネージャと、そのレイアウトのどこに貼るかによって 挙動が変わります。
>>447 そうなんですが…。
IEの上部のボタン列のようにボタンを並べたいのですが、
不可視コンポーネントを使いたいので、
Box bb = new Box(BoxLayout.X_AXIS);
を利用しています。
bb.add(button1) ;
bb.add(nutton2) ;
bb.add(button3) ;
bb.add(nutton4) ;
bb.add(jScrollPane) ; //
bb.add(Box.createHorizontalGlue());
※jScrollPane は JScrollPane
といった具合に配置した場合、JScrollPaneの大きさが変化してしまいます。
bbを格納するコンテナは
Container con = getContentPane() ; // Containerクラス
con.setLayout(new BorderLayout()) ;
con.add(bb, BorderLayout.NORTH);
con.add(mainPanel, BorderLayout.CENTER); //大きなテキストフィールド
con.add(subPanel, BorderLayout.SOUTH); // ボタンのみの配列こちらは問題なし
と設定しています。
この場合、どこが問題なのでしょうか。
449 :
デフォルトの名無しさん :03/09/24 04:00
>>448 Boxじゃなくて、GridLayout貼ったJPanelにするとか。
BoxのなかにJPanel2枚はって、一方をサイズ固定にしてそこに
JScrollPane貼るとか…
コンポーネントはツリー構造のネストがいくらでもできるので、
ちゃんと考えれば必ず方法はある。
あんたの作りたい画面を知らないので、後は自分で考えれ。
>>449 ありがとうございました。試行錯誤してみます。
>>404 ,405で質問し書き込みもらってるのですが
わからないのでまた聞きます。
JTableで、
A+B=Cをセル3つ使って出来ますでしょうか。
>>405 さんが示してくれた
System.out.println(obj.getClass());
これをやると、class java.lang.Stringclassとでます。
ここから、数値に持っていくこと出来るのでしょうか。
ただ、↓のものをセルで出来ないかと探しているのですが
http://www.kari.to/upload/source/1946.txt java、セル計算 でいくら探してもサンプルがみつからず。。
もしや、JTableなんてマイナーなのか?と思ってしまったり、
どなたか助け舟もらえませんか。
>>440 もしかして、メインループを用意して、ループをぶん廻して
関数を呼び出そうとか考えてるんじゃないのか?
だとすると思考パターンが10年くらい遅れてねぇか?
違うなら、良いけど。
453 :
デフォルトの名無しさん :03/09/24 06:55
すいません、解決しました。 解決したとき 射精くらい気持ちよかったです。
(´・ω・`)…
>>451 Object obj = ...;//object(String type)
//Object to String
String s = (String)obj;
//String to double
double d = Doiuble.parseDouble(s);
int i = Integer.parseInt(i);
457 :
デフォルトの名無しさん :03/09/24 09:07
へぇ〜
。・゚・(ノД`)・゚・。
Arrays.sortでソートする場合 ArrayListとLinkedListはどちらが速いですか?
ArrayList
>>456 ありがとうございます><
やっと、出来ました。
JTableで作る範囲おわりましたので、次はサーバーサイドにチャレンジしてきます。
お世話になりました。
>>453 それは使ったことがないけど
大抵のAPIは適当に解凍して(半角だけのパス推奨)
そこにクラスパスを通せばいけるはず
と泣いていたから中途半端にレスしとく
Javaのトリビア 以下のクラスはj2se 1.3.1以降でコンパイルできる。しかもj2se 1.4.2では 実行もできる(それ以前では実行はできない) ----file 寿司.java------- package 江戸前; public class 寿司 { private String ネタ; public 寿司(String ネタ){ this.ネタ = ネタ; System.out.println("ヘイ!" + ネタ + "一丁お待ちぃ!"); } public void 寿司食いねえ(){ System.out.println("江戸っ子だってねぇ、" + ネタ + "食いねえ。"); } public static void main(String[] 引数達){ 寿司 一人前 = new 寿司(引数達[0]); 一人前.寿司食いねえ(); } } ----- 実行結果 > javac -d . 寿司.java > java -classpath . 江戸前.寿司 トロ ヘイ!トロ一丁お待ちぃ! 江戸っ子だってねぇ、トロ食いねえ。
最近までC勉強してて、これからjavaをやろうと思うんですが javaではexeファイルは作成できないんでしょうか? サンプルとか落としてみたんですが*.javaと*.classしか入ってなかった物で…
465 :
デフォルトの名無しさん :03/09/24 21:39
ウィンドウのサイズ変更を禁止したいのですが 買った本に何も説明が有りませんでした(´・ω・`) どのような命令を使うか教えて頂けないでしょうか
466 :
デフォルトの名無しさん :03/09/24 21:43
Javaチャットというものもあるので、cgiとJavaを使って、 ホストPCを立てずに将棋とか囲碁の対局ソフト作ってみようと思ったんですが、 こういうことは可能なんでしょうか?
TomcatでJNI使をうと思って、やってみたんですけど java.lang.NoClassDefFoundError ってエラーがでて、表示できません。 JNI.dlll→JNI.Lclass(wrapper class みたいなもの)→Test.class(Servlet) なんすけど、TOMCAT側の設定のようなものは必要なんでしょうか? servlet以外からなら普通にうごきます。
469 :
デフォルトの名無しさん :03/09/24 22:46
JavaでCSVファイルの読み込みを行うプログラムを作っていますが、 CSVファイル内のあるセルで改行(Alt + Enter)を使っていると、 readLine()メソッドを使うときに、一行すべてを読まずに改行のところで 終了してしまいます。 APIでそのようになっているのでしかたないのですが。 csvファイルの中身をNotePadで開いて見てみると、改行しているところで 改行コード(0x0a)が入っています。この改行コードがきても無視するように しないといけないと思うのですが、なにかいい方法はないでしょうか?
470 :
デフォルトの名無しさん :03/09/24 23:17
>>469 readLine()で読まないのが正しいと思われ。
471 :
デフォルトの名無しさん :03/09/24 23:19
>>468 UnsatisfiedLinkErrorなら、dll見つかりませんエラー。
NoClassDefFoundErrorなら、ラッパークラスのほうが見えてませんよ。
String同士の比較はどうやったらできるんでしょうか? <=とかじゃコンパイルエラーでます。
compareTo
compareTo("abc", "abc")
475 :
デフォルトの名無しさん :03/09/25 00:01
一回Statement#executQueryでResultSet返してもらって ResultSet#closeでとじる このときStatementがNullになっちゃうんですけどどうして? DBはSQLSERVERです
>>469 それCSVファイルのフォーマットとしては正しいの?
478 :
デフォルトの名無しさん :03/09/25 00:22
>>470 ということは、一文字ずつ読み込んでいくしかないのでしょうか?
>>476 ファイルを保存するときに、ファイルの種類で「CSV(カンマ区切り)」を
選んで保存しているだけです。
>>476 CSVってちゃんとした仕様がある訳じゃないから、正しいか
どうかは、それを処理するプログラムが解釈できるかどうか
って話になると思うが。
>>479 CSVって,だけじゃなくて改行も区切りになるだろ
>>480 理解できないなら無理にレスしなくていいよ
「CSVってちゃんとした仕様がある訳じゃないから...」
482 :
デフォルトの名無しさん :03/09/25 00:35
EXCELが吐き出すCSVフォーマットは、特殊なルールがある。 1.\nが、行末デリミタでないことがある。 2.","が、カラムデリミタでないことがある。 つうか、こんないい加減なフォーマットをインターフェイスにする の、危険なだけで意味がないからいい加減やめろよ、このカス業務 SEドモが。
483 :
デフォルトの名無しさん :03/09/25 00:38
>>463 ウソコケ。もっと前からコンパイルも実行もできる。
484 :
デフォルトの名無しさん :03/09/25 00:41
画像の上から黒い幕のようなものを掛けたいのですが、どうすればよろしいでしょうか? 例えるならば、サウンドノベルにある文字を見やすくするための黒い幕のような感じです。
485 :
デフォルトの名無しさん :03/09/25 00:41
>>486 ・・・
もういい大人なんだから少し指摘されたぐらいでムキなって荒らすなよ・・・
>>487 > もういい大人なんだから少し指摘されたぐらいでムキなって荒らすなよ・・・
で、事実は? おれもCSVはちゃんとした仕様がないって聞いてたけど。
仕様に近いものはあるが Excel がそれに沿っていないのが問題だ
>>482 Excel自身はそれを認識するんだよな
保存して読み込んだら表示が違いました,とかだったら間抜けだな
>>489 それで正解。明確に決まっているものは無い。
例えば、
>>469 が求めてる「Excelが吐き出すCSV」の仕様では値に改行が入ることもある。
ちなみに「Perlメモ CSV」でぐぐれば解析方法も見つかる。
(実際にExcelに読み込ませようとすると、値の中の改行はLFで行区切はCRLFとか更に細かい決まりもあるが)
>>490 その仕様どこにあるの?(煽ってるんじゃなくて純粋に知りたい)
493 :
デフォルトの名無しさん :03/09/25 02:16
あのぉ ごめんなさい。 ついでですので、僕に CRLFとLFの違いをご教授願えないでしょうか。
494 :
デフォルトの名無しさん :03/09/25 02:30
流れをぶった切って申し訳ないです。質問です。 あるファイルをバイナリで開いてそれをtxt形式にしようと思っています。 BASICでそのファイルを open "ファイル" for bininp as #1 for i=1 to 60000 fread #1, BN BN = BN and &HFFF A(i) = BN next i で、配列Aに入っている値をtxtファイルでほしいのですが、それをjavaで 同様に以下のようにバイナリで開いてtxtに直すと本来ファイルには60000 個のデータ(数)が入っているはずなのにきっかりその倍の120000個のデ ータがでてきてしまっている状態です。 FileInputStream fileinputstream = new FileInputStream("入力ファイル"); byte bytearray[] = new byte[1000000]; if (fileinputstream.read(bytearray) != 1000000) { out.println("Could not get 1000000 bytes"); } PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("出力ファイル"))); for(int i=0;i<1000000;i++) pw.println(bytearray[i]); ファイルのフォーマットはわからないのですがBASICの方ではうまく取り出せてるので 同じ方法でjavaでもとりだしたいと思っています。どなたか教えてください。
>>492 仕様というかデフォルトというかそういうものがまったくなかったらこの世の中に
CSV ファイル解析ライブラリの類が存在するわけがない。
>>497 >>490 と同じ人?
だからExcelが従うべき標準(のようなもの?)ってのがどんなものか、どこにあるのか知りたいんだけど・・・
Excelがそれに従ってないから批判されるような仕様、っていうのか?
それを挙げないままExcelはカス、って言われてもなんの説得力も無いしCSVがカスとしか言えない。
カンマ「,」区切りの値の列でレコード区切りが改行、ってのは誰でもわかるんだから
それ以上(値にカンマが入ったら?値に改行が入ったら?...etc)がどこかで明確に決まってるのかと。
各アプリケーションやらライブラリ毎の俺仕様なら無数にあるだろうが。
>>495 これだめよ
>PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("出力ファイル")));
>for(int i=0;i<1000000;i++)
>pw.println(bytearray[i]);
492=498です。 繰り返すけど煽ってるんじゃなくてそういうの(CSVの標準仕様)があるのなら切実に知りたい
>>500 dempa://490/脳内/csv.html
ああ、400253の内容は405482に書いてあるのか。
テキストファイルからデータを読んでスペースの部分でデータを分けて配列に保存したいんですけど ParlのScriptみたいな都合のいいコマンドってあるんですか?
コマンドはないなぁ Java にコマンドなんてものは一つも無い Perl にコマンドなんてあるのも聞いたこと無いし java.util.regex パッケージとか StringTokenizer クラスとか便利なものはあるけど 違うかもしれないなぁ なんせ話がよく分からないから
>>504 split じゃないのかと
StringTokenizer を利用しる
ちなみにOpenOfficeのCalcはExcelとは違うんだよなぁ
>>467 アプリケーションとして作れば可能。
ホスト立てないならcgiはいらないはず。
510 :
デフォルトの名無しさん :03/09/25 17:48
Javaアプリが高速に動く、専用チップってありますか?
511 :
デフォルトの名無しさん :03/09/25 17:57
うっせばーか
>>510 ケータイやPDAによく使われる
ARM系組み込みCPUにはバイトコードを直接実行できるやつがあるな。
探せばほかにもいろいろあるが
メジャーで売れてるJavaチップってこれくらいじゃないか?
import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class e extends Applet { private int oldx,oldy; public void init() { addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { oldx=e.getX(); oldy=e.getY(); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { Graphics g=getGraphics(); g.drawLine(oldx,oldy,e.getX (),e.getY ()); oldx=e.getX(); oldy=e.getY(); showStatus("x="+oldx+",y="+oldy); g.dispose(); } }); } } 質問です。上記のそのまんま絵を書くアプレットなんすけど、コンパイルすると、e.classのほかに、e$1.classとe$2.classっていう意味のわからないクラスファイルができちゃいます。 これはどうしてできちゃうんでしょうか?それと名前をe1.classとかにするようにできないのでしょうか?
>>513 無名クラスのクラスファイルで、無名クラスを定義する以上必ずできる。
どうしようもない。
el.classにしたら、e1クラスのクラスファイルと区別できないでしょ。
515 :
デフォルトの名無しさん :03/09/25 23:12
java.util.zip.ZipOutputStreamを使って圧縮ファイルに 日本語のファイル名をエントリするとどうしても化けてしまいます・・・・ 無理なんでしょうか?
516 :
デフォルトの名無しさん :03/09/25 23:18
517 :
デフォルトの名無しさん :03/09/25 23:42
518 :
デフォルトの名無しさん :03/09/26 00:04
>>515 > 日本語のファイル名をエントリするとどうしても化けてしまいます・・・・
単にファイル名が UTF-8 で出力されてるだけ。
java.util.zip を使う限りパラメータとかで変更する手段は無い。
>>518 ありがとうございました。
ほかの圧縮手段を探して見ます
520 :
デフォルトの名無しさん :03/09/26 00:33
Delphiは バッファオーバーフロー
みつからない (-_-) もう寝る 明日 朝ミーティングでまた文句言われるなぁ
523 :
デフォルトの名無しさん :03/09/26 01:30
>>522 化けてるんじゃないってば。ファイル名がUTF-8になってるだけ。
問題があるのは君の使ってる解凍ツールのほう。
そもそもUTFなんか使うのが悪いわけだが。
>>524 UTF-8使うこと自体は悪かねぇ。
ファイル名に日本語使うこと自体がナメきってるとしか言い様がねえ。
>>523 再度ありがとうございます。
それは理解したつもりです。
ファイル名がUTF-8以外で出力されない圧縮方法を探してる
わけだけど、僕 何か勘違いしてますか?(^_^;
ファイル名がどの文字コードで解凍されるかは
100%解凍ツール依存ではないですよね?
基本的にはOS依存。 日本語Windows9xならSJIS
>>526 > ファイル名がどの文字コードで解凍されるかは
> 100%解凍ツール依存ではないですよね
完全に解凍ツール依存。
そもそも米国製の pkzip および zip形式は日本語に関する仕様なぞない。
慣習によって Win では Shift_JIS(っつか、Windows-31J)が使われてるだけ。
その辺は国産の lzh のがマシ。
>>528 > そもそも米国製の pkzip および zip形式は日本語に関する仕様なぞない。
MacのDropZip & Stuffit Expanderのzip対応も、
前バージョンまでWinのZipと日本語ファイル名の互換性がなくて参った。
>>499 すみませんそうですね、ありがとうございます^^
もう少しいろいろやって考えてみることにします。ありがとうございました。
xml/xsltに関してためになるサイトを教えてください。
532 :
デフォルトの名無しさん :03/09/26 15:15
すいません、わからないのでどなたか教えてください。 CanvasをJScrollPaneに入れて一定の大きさで表示させたいんですが、 何故かCanvasの四角が設定した領域からはみ出してしまってうまくいきません。 どうしたらいいでしょう?
533 :
デフォルトの名無しさん :03/09/26 15:17
534 :
デフォルトの名無しさん :03/09/26 15:20
a
>>536 そうなんだけど、ディレクトリ内になんもないでしょ?
MIDIのプログラムを書いてコンソールアプリケーションで鳴らすと、mainメソッドからリターンしてくれず、プログラムが終了しません。 何が問題なのか調べるため、下のプログラム(Sequencerを取得するだけのもの)を書いたら、コメントアウトしている行を加えると(closeをしているにもかかわらず)プログラムが終了しなくなることが分かりました(このままなら正常に終了します)。 どなたか対処法を教えてください。 sunのチュートリアルはSystem.exit(0)を使ってますが、どうしてexitを使わないと終了できないのでしょうか public static void main(String args[]){ File file; Sequence sequence; Sequencer sequencer; try{ file = new File(args[0]);//長いのでargs.length!=1の処理とかは割愛 System.out.println("File " + file.toString() + "is available."); sequence = MidiSystem.getSequence(file); System.out.println("corresponding midi-sequence creation succeeded."); /*以下の文を加えるととたんに終わらなくなる sequencer = MidiSystem.getSequencer(); System.out.println("sequencer creation succeeded."); sequencer.close(); System.out.println("sequencer closing succeeded."); */ } catch(InvalidMidiDataException imde){ imde.printStackTrace(); } catch(IOException ioe){ ioe.printStackTrace(); }/* catch(MidiUnavailableException mue){ mue.printStackTrace(); }*/ System.out.println("now end of the main method."); }
539 :
デフォルトの名無しさん :03/09/27 00:37
アプレットでファイル出力する方法ないですか(´・ω・`)
>>532 Swingとawtを一緒に使っちゃダメです。
541 :
デフォルトの名無しさん :03/09/27 00:46
>>538 イベント監視用のユーザスレッドが、アナタの見えないところで
作成されるから。
542 :
デフォルトの名無しさん :03/09/27 00:47
>>539 Signed Jarにして、セキュリティ制限解除をユーザに
認証してもらいなはれ。
>>542 なるほど、やってみます(`・ω・´)シャキーン
544 :
デフォルトの名無しさん :03/09/27 03:46
インターフェイスってどういうときに使うのでしょうか? 参考書とかも書き方は乗ってるのですが なぜ必要なのかとはあんま書いていませんが・・・
552 :
デフォルトの名無しさん :03/09/27 07:37
>>544 使わないように開発すれば使わないですむ。
ただ、インターフェースを利用することで、アプリケーションにプラグインポイントを作成することができる。
またあとでデザインパターンが適用しやすくなる。
上記のようにアプリケーションに拡張性と柔軟性を持たせられるようなるけども、
そうした必要性がない場合は無理に不必要な複雑性を背負い込む必要性はあんましない。
>>544 クラス階層によらない多態が行いたいとき
例えば,BigDecimalクラスとStringクラス
どう考えてもObjectクラスを継承している以外の祖先・子孫のクラス関係はないが
同一のインターフェースComparableを実装している
>>544 多重継承もどきのために使うこともある
例えばスレッドを使いたいとき、
class Hoge extends Thread
とすれば済むのに
別のクラスを継承しなければならないとき、
class Hoge extends Foo implements Runnable
とするとか
557 :
デフォルトの名無しさん :03/09/27 16:18
私は1ファイル1クラスでやっているのですが 参考書などでは 一つのクラスファイルに何個もクラスを書いているのが多いみたいですが どういう違いがあるのでしょうか? わかりにくくなると思うのですが・・・
>>557 ファイル一個の方が作るの簡単だから。「参考書だから」そういう作りになっているだけ。
気にせず1ファイル1クラスでヨシ
>>557 参考書でそうすることの本義は、
初心者が打ち込んで編集・コンパイルするのに 1つのファイルだけ相手にすれば済むから、
管理しやすかろうな、と執筆者が思ってるのだと思う。
もはや「一応こうすることもできる」と思った方がよかろう。
実際上は、
Test.java に定義した Test.class から「しか」使わないクラスを、
Test.java の中に書けば、管理がしやすいという意味があるぞ。
それはきちんと private な インナーclass を定義するべきだけど。
皆さんはチェック例外を使ってますか?
>>560 使うとか使わないとかいう問題じゃない。
チェック例外とランタイム例外の違いは理解してますか?
使わないとコンパイルできませんが
catch(IOException e){} は例外を使ってるとは思えない。 コンパイルエラーを回避しているだけで。そういうことじゃない?
コンパイル時にtry-catchの記述を強制する例外と思ってます。普段はjava使って
ないんですが間違ってますか?
少々問題のある機能(
>>563 で述べてる様にコンパイルエラーを回避するために
空の例外処理文を書きかねなく、まずい)らしいので、あった方がいい機能かどう
か聞いてみたんです。
>>564 > 少々問題のある機能(
>>563 で述べてる様にコンパイルエラーを回避するために
> 空の例外処理文を書きかねなく、まずい)らしいので、あった方がいい機能かどう
> か聞いてみたんです。
それは空の catch 文を書く人間が悪いのであって、
throws やら IOException が悪いのではない。
それは火事の原因になるから酸素いらないとか火を使わないとか、そーゆーレベルの話。
>>564 そんなこといったら while も “まずい機能” だぞ。
while (true) {}
こんなものを書きかねないなんて、いやーとってもまずいね。
つい最近質問したものだけどちょち質問。 無名クラスとは何なのか簡単に教えて欲しいでする。 Yahooで調べてもわけわからん文章並べたサイトしか出ないのでよろしくでする
>>564 そりゃ、ないと困ります。
そもそも意味もなくチェック例外を握りつぶすのは言語道断なので、
それを問題のある機能と捉えるのはおかしいかと。
以前、どこぞのオープンソースライブラリで、内部例外が起こると
とりあえず握りつぶしてfalseを返すようなインターフェイスだらけの
やつ使わざるを得なかったことがあり、非常に困りました。
あとビギナーにありがちなのがランタイム例外とチェック例外を区別せずに
ExceptionやThrowable型でtry〜catchしたりthrowしたりすること。
こういう癖は非常にまずいので早いうちに直した方がいいですね。
キャッチ例外をどう処理したらいいかわからない時はとりあえずネストする
などしてthrowするのが基本。例外を最終的に処理(例えばログに書くとか)
するのは可能な限り最上流で行うよう心がけるべき。
SwingでCanvasを使いたいときはどうすればいいのさ?
>>569 Canvasのソース見ればわかるけど
ほとんどなんの機能もついてないよ
JComponent使えば良し
571 :
デフォルトの名無しさん :03/09/27 23:07
AからBを参照するとはどういうことですか?
>>567 無名クラスは定義名を持たないローカルクラスのこと。
例えば
Thread t = new Thread() {
public void run() {
try {
sleep(10000);
System.out.println("チャオ");
} catch (Exception e) {
}
}
};
t.start();
この例でtはThreadを継承したクラスのインスタンスになるが、その
クラスはクラス名を持たないので無名クラス。
どういうときに使うと便利かは自分で考えてみてくれ。
>>572 なんで t はThreadクラスそのもののインスタンスでなく
それを継承したクラスになれるのですか?
>>573 コンストラクタを ; で閉じる前に {} 書いて、中に自前のメソッド実装を書いているから。
こういうとき、自動的に、Thread そのものではない新たな無名クラスになる。
Thread t = new Anonymous();
class Anonymous extends Thread {
public void run() {
//云々
}
}
この "Anonymous" という名称を省略するときの形と考えるとよい。
>>571 もうちょっと具体的に書いてくれないと困るな。
多分 A が変数で B がインスタンスなんだろうが・・・
両方インスタンスでも条件次第で話は通るし。
変数 : ビデオカメラ。インスタンス : 被写体。
参照する = フレームに収め続けること。録画でも撮影でもなく。
>>576 じゃぁなんか挙げてくれよ。
感覚で分かっているものを感覚で分からせるような、
巧い例えは俺には思いつかん。
578 :
デフォルトの名無しさん :03/09/28 00:21
MVCのMの部分にPACを適応することが王道ですか?
これから勉強する場合SWTとSwingのどっちがいいですか?
580 :
デフォルトの名無しさん :03/09/28 00:32
eclipseでjbuilderみたいに コンポーネントをぺたぺた貼り付けて guiの開発をしたいんですけど、 みなさんは参考にしてるサイトとかありますか? いろいろ探してみたけど、なかなかみつかりません。
581 :
デフォルトの名無しさん :03/09/28 00:34
583 :
デフォルトの名無しさん :03/09/28 00:39
大学の授業でjavaを中心に学ぶものがあります。 これからのことを考えて、javaは知っておくべきでしょうか? 授業を受講するほどのものでしょうか?
584 :
デフォルトの名無しさん :03/09/28 00:43
>>568 私の勤務先の会社には、例外をcatchして-1を返すという、甚だ時代錯誤なフ
レームワークがあります。何でもかんでも今自分で分かる範囲でしか作業し
ない馬鹿が設計者やってると、こんなものが出来上がります。
エラーが起きたときに、本当は何が起こっているのか、FWの開発者自身で
さえ直ぐには分かりません。逝ってよし!
585 :
デフォルトの名無しさん :03/09/28 00:44
>>583 ソフトウェア開発を仕事にする、または趣味にするつもりなら。
じゃなければプログラム言語なんて知らなくても生きていけるよ。
いやどっちにしろ大学で習う程度のJavaなんかいらないよ
587 :
デフォルトの名無しさん :03/09/28 00:50
>>577 変な例えする必要ないと思われ。ニアリイコール現実でも充分わかりやすいかと。
インスタンス:「物」。例えば、家。
参照:「物」の場所の記録。家に対して、住所の文字列。
住所さえわかっていれば、いつでも家を見に行けますよね。2人の別の人が、それ
ぞれ同じ家の住所を知っていることもあります。2人のうちの片方の人が、ナニカの
理由で家を増築した場合、もう片方の人が持ってる住所から辿った先の家も、当然
その増築された家になってますわな。
588 :
デフォルトの名無しさん :03/09/28 00:50
すごい簡単な質問ですが、 ある文字列の半角ブランクを削除したいとき、 要するにTrimしたいのですが、Javaだとどう書くのが普通なんでしょうか。 Perl だったら、$str =~ s/\\s//g でさくっとやってしまうのですが。
589 :
デフォルトの名無しさん :03/09/28 00:53
>>588 String#trim() →両端のハンカクブランクを削除した文字列を作成して返す。
String#replaceAll(" ","") →ハンカクブランクを「全削除」した文字列を作成して返す。
お好きなほうで。
590 :
デフォルトの名無しさん :03/09/28 01:04
>>589 わぁ、そのままですねえ。ありがと。
調べがたりなくてすまそ。
>>581 できるだけお金はかけずにやっていきたいっす・・。
JavaでUIデザイナなんて使うもんじゃない。
>>591 とりあえず、IBMからWSADかWSSDの体験版落として
つかってればぁ。
>>584 言いたいことは分かるが
> 今自分で分かる範囲でしか作業しない
これは仕方ないと思うぞ
自分で分かる範囲以上の作業ができるのは人間じゃない
>>591 eclipse以外も使っていいなら、
netbeansのGUIビルダで作ったクラスを
eclipseにインポートするという面倒な方法もあるぞ。
597 :
デフォルトの名無しさん :03/09/28 02:00
>>595 大切なのは、「その仕事をこなせる人がやる」ようにする
ことだと思います。「出来ないなら出来ないという」勇気
が各社員にあって、ソレを認める度量が会社にあれば、
世のデスマーチの半分は消えてなくなると思うんですがねえ。
>>597 それってリーダやマネージャの仕事だと思うんだけどねえ。
599 :
デフォルトの名無しさん :03/09/28 05:48
WindowsXPでXMLのプログラミングをやろうと思ったのですが、 どうやら文字コードの関係で 文字変換エラー がおきてしまいます。 どういうツール使ったらいいですかね。
>599 文字コード? それが分かってるなら、文字コード宣言および エディタのデフォルト保存時の設定を確認すればよいのでは?
どこでどのようなエラーが出るのか言わないとわからん
602 :
デフォルトの名無しさん :03/09/28 16:27
このすれ見てトレビアと思ったこと Java Preferences API こんなんあるなんて知らんかった。 レジストリに書いちゃうのがちょっとあれだけど。 XMLの書き出しも簡単にできるみたいだし。
603 :
デフォルトの名無しさん :03/09/28 16:33
Throwable Runable これのカタカナ表記おしえてくれ
スローワブル・ランナブル いや、スロワブルか?
605 :
デフォルトの名無しさん :03/09/28 17:27
ポリモフィズムつかうとどうしてもインターフェースやスーパークラスに ダミーメソッドができちゃうんですけど、これって邪道?
>>605 いわゆるそれはTemplateMethodと呼ばれるデザインパターンです。
608 :
デフォルトの名無しさん :03/09/28 19:09
static{ //処理1 } ↑のようなときに、『処理1』の中で例外が発生する可能性のある場合 キャッチせずにスローしたいのですがどうすればいいんですか? static throw Exception{ } と、書いてもコンパイルエラーになります
>>608 失敗したら起動しないで死んでほしいってことか?
RuntimeExceptionなら投げれると思うけど、
設計を見直したほうがよさげ。
>設計を見直したほうがよさげ。 言われると思った
611 :
デフォルトの名無しさん :03/09/28 19:21
ファイルとかDBとかソケットは閉じる処理しないで、インスタンス破棄させた場合 勝手に閉じてくれるのでしょうか?
>>611 FileInputStream/FileOutputStreamはfinalize()で閉じてくれる。
DBとソケットは実装依存だと思われ。
コレ一冊で分かりやすくって JAVAのことがほとんどある程度分かるぜっ!(中級車程度まで) っていう素敵な本はないですか?
>>612 嘘吐くな。
メモリに余裕がある限り永遠にクローズされない可能性もある。
勘違いしているやつが多いが
ガベコレは「ヒープメモリのみ」を管理するものであって
ソケットやファイルハンドルやDBコネクション
グラフィックコンテキスト(とそれに付随したGDIリソースなど)
その他もろもろの都合など一切『関知しない』
>>615 あまりにも既出だけどJava言語プログラミングレッスンでいいんじゃね?
>>615 一冊だけがなんとかしようと思わないほうがいい。
どうしても一冊だけでやりたいなら
ネットでな。
>>616 finalize() で閉じるのは嘘じゃない。
ただし、finalize() は呼ばれないかもしれない。
>>619 それはJava「の」プログラムを書きたい人向け。
Java「で」プログラム書きたい人には あんま意味無いかも。
質問です。 eclipse + Tomcat ( + Struts )でアプリを作る勉強をしているんですが、 eclipse (に限らず巷のIDE)はコンパイルを勝手にやってくれるわけですけど、 あえて ant を学習&使用するメリットは何かあるんでしょうか。 雑誌やwebサイトを見ると「antはこんなに便利!」とか書かれてる割に、 「そんなのIDEが勝手にやってくれるんでは?」とも思ってしまいます。
624 :
デフォルトの名無しさん :03/09/28 23:44
DBの検索結果をvectorクラスで拾ってから jspで受け取り、表示させる方法がわからないので教えてください
625 :
デフォルトの名無しさん :03/09/28 23:47
>>623 自分以外の関係者はEclipseもってない場合もあるわけで。
>>623 あと、ビルドには複数の手順が必要な時、その複数の手順を
記述したスクリプト一個作っておいて、作業を自動化するって
のは、ミスをなくすための常識的なやり方だと思うけど。
>>624 十万できっちり教えてやる
これはめちゃくちゃ安いぞ ほれ 払え
>>624 拾うクラスってゆうのが表示させるJSPと違うファイルなら
javabeansで調べてごらんさい
JSP上でやるなら普通にやればよいよ
630 :
デフォルトの名無しさん :03/09/29 00:31
>>623 たとえば
javac
webdoclet(ソースのコメントからweb.xml作成)
ejbdoclet(ソースのコメントからejb周りいろいろ作成)
jar化
war化
ear化
deploy
を、ワンクリックでやってくれるのって素敵じゃないか。
631 :
デフォルトの名無しさん :03/09/29 00:39
>>623 どんなときでも必ずEclipseが使えるなら
覚えなくてもいいんじゃない?
antでビルドの単位とその依存関係を明確化するという役割もあるでよ。
633 :
デフォルトの名無しさん :03/09/29 00:50
戻り値のreturnって メソッドで計算された値を元の場所に戻すと言う意味でしょうか? 逆にreturnがなければ戻さないのでしょうか?
>>623 例えば630の内容をAntスクリプトにしてEclipseに
登録すると、ワンクリックする必要もなく、Eclipseの動作と
一体化できるわけだよ。AntとEclipseは排他的に使うものではない。
Eclipseのプラグイン開発環境なんかいい例だね。Antを上手に
使っている。
えと、質問させていただきます frameを継承したクラスで画像表示させているのですが、 ”CPUをあまり多く使わず”に それをハードウェア的に拡大することはJAVAで制御できますでしょうか? 例えば、200*200を400*400の画像に拡大表示するといった感じです。 CPUを使って、pixels[w*h]をpixels[2*w*2*h]にコピーすると 実行時に処理が間に合わないのです ゲームなどでAlt+Enterを押したような結果、またはモニタの解像度を下げるような結果を を”JAVAで”得たいのですが、どなたか助言お願いします 長文恐れ入ります。
636 :
デフォルトの名無しさん :03/09/29 01:24
>>636 すいません。。。えと、どういうことでしょうか?
>>637 英語は得意ではないのでよくわかりませんが、それっぽい感じことが書いてあるので
時間かけて読んでみます。どうもです。
何をしたいかというと、画像が小さいので拡大表示したいというのが目的です。
通常ならば、画像を大きくしてそれを表示するばいいだけのことですが、
自分のしたいことは、まず背景を描き、そこに別の画像を色識別して条件にあったものだけを
描くといった処理をしたいわけです。
画像が大きいと、それだけ処理が多くなり、画像表示が間に合わないのです。
間に合わないのは、ミリ秒単位で画像を生成し、再描画するからです
>>635 Graphicsの
> drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
> 指定した矩形の内部に収まるようにスケーリングされた、特定のイメージの利用可能な部分を描きます。
で描画すればハードウェアで拡大処理されるよ。
>639 どもです。やってみます >>矩形 がちょっと気になりますが
641 :
デフォルトの七資産 :03/09/29 02:07
すいません。この書き方であっているでしょうか? order =new BigDecimal(Integer.parseInt(request.getParameter("order").trim())); やりたい事は、ブラウザからフォームの入力値をBigDecimal型のorderと言う変数に入れたいのです。 nullで宣言しているせいか、java.lang.NullPointerExceptionが返されます。。
>>639 drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
を使ったら
ハードウェアがCPUのようで、処理が激重になってしまいました。。
さきほど紹介していただいたサイトに書かれているメソッドが、
日本語サイトで解説してあったので、読んで試してみます
>>642 具体的にどういう処理やってるかわかんないけど
とりあえず気をつけるべきポイントを書いておくと
- ImageObserverの役割がわかっていないうちはnullを渡しておくのが無難
- 1コマごとにcreateImage呼ぶようなコードはまずい
- BufferedImageはシステムメモリ上に確保されるのでハードウェアの機能は効かない
ていうところかな。
あと、性能稼ぎたいならまずはきちんとプロファイルをとること。これが基本だと思う。
644 :
デフォルトの名無しさん :03/09/29 06:40
>>641 どこでNullPointerExceptionがでてるのか、その質問じゃワカランが。
文法的には問題ないよ。request.getParameter()の戻り値がnull
なんじゃ?チェックした?
645 :
デフォルトの名無しさん :03/09/29 06:42
>>643 >- BufferedImageはシステムメモリ上に確保されるのでハードウェアの機能は効かない
まあ、主な原因はこれなんだろうね・・・
そのときは、JDK1.4のVolatileImageをつかうか、JDK1.4が
つかえないなら諦めるかだろうね。
レスありがとうございます
>>643 - 1コマごとにcreateImage呼ぶようなコードはまずい
1コマごとに、配列から画像を生成する際にcreateImageを使うんで
困りましたね・・・
>>645 VolatileImageとBufferStrategyについて今調べてました。
これでもっと高速になることを期待します。
>>637 おかげさまでJAVAで解像度を変えることができ、画像をフルスクリーンで表示でき、
感謝しています
>>633 >戻り値のreturnって
>メソッドで計算された値を元の場所に戻すと言う意味でしょうか?
だいたいあっている。
>逆にreturnがなければ戻さないのでしょうか?
値を戻すかどうかは関数宣言しだいで
return文を書く場所では選択の余地はない。
関数の宣言で戻り値の型がvoid(なし)となっていれば戻せないし
それ以外の型が指定されていれば
その型の値を戻すように書かなければならない。
さもないとコンパイルエラーになる。
648 :
デフォルトの名無しさん :03/09/29 12:11
ぶっちゃけて、Javaを修行するのはどうやったらいい? ソース写しまくって動かしてみる? 良書を読み漁る? ワケ分からんが調べまくって自分で書いてみる? 何が初心者には良いですか? 自分は今1をやっています。
>>648 > ワケ分からんが調べまくって自分で書いてみる?
>>642 > 1コマごとに、配列から画像を生成する際にcreateImageを使うんで
MemoryImageSource使ってるんだよね?
MemoryImageSource#newPixels()使いませう
それからSwing使えば自動的に
VolatileImageを使ったダブルバッファリングをやってくれるから楽だよ
JTable のある行を、別の JTable にコピーする実装に挑戦しています。 もともと Win のエクスプローラからファイルを DnD する実装は成功していて、 それは旧来の DropTarget で実現していました。 また、Swing の setDragEnabled や TransferHandler#exportAsDrag の実装で、 自己の JTable 内での並び替えも成功しました。 同じ機構で JTable A から B に送れるかと思ったのですが、 B に持っていくと "不可" のアイコンになってしまいます。 この辺の問題で参考になるようなサイトはありますでしょうか。
652 :
デフォルトの名無しさん :03/09/29 12:48
java-house.jpの消息、どなたかご存じありませんかー?
>>180 の情報からもう10日だよ…。
>>654 つながるよ。
おたくの DNS がおかしいか、
むこうの DNS の投げた情報の期限設定か何かがおかしいか、
どっちかじゃない。多分。
でも工事後の投稿はないみたいだね
656 :
デフォルトの名無しさん :03/09/29 17:53
質問させて下さい。 まだJAVAを勉強し始めて間もないんですが、 BigIntegerなるものを使って『xのn乗』を計算するプログラムを書くことになりました。 以下のアルゴリズムが与えられています。 入力:底・x、指数・n、法・m 出力:xのn乗 (mod m) 1. p←x、y←1 2. n>0の間繰り返し (a)nが偶数のとき: 2a-1. n←n/2 2a-2. p←pの2乗 (mod m) (b)nが奇数のとき: 2b-1. n←n−1 2b-2. y←p×y (mod m) 3. 繰り返し終了 4. 戻り値としてyを返す 『modPow』とゆうメソッドを使うのではないかというのはわかるんですが、 どんな具合にプログラムを書いたらよいのかわからず悩んでいます。 どなたかわかる方がいらっしゃいましたら教えていただけませんでしょうか・・・。 よろしくお願いします。
>>656 途中までさえ書けないような奴は
むしろ「宿題は俺俺詐欺」のスレできけ
mysqlのtableを作成するメソッドがあったら教えてください。 お願いします。
>>656 y = x.modPow(n, m);
って modPow 使ったらそのアルゴリズム関係なくなると思うのだが…
modPow を自力で実装せよってことじゃないの?
レスどうもです。。
>>650 swingについて少々調べました。JFrameを使えばいいんですよね?
初めコンパイルできなくて焦りましたが、importしてなかっただけでした。。
継承をFrameからJFrameに変えただけでコンパイルが通りましたが、
心なしか速度が変わったか気がしました。
ところで
>>643 さんが言っていたプロファイルについて検索したのですが、
残念ながらよくわかりませんでした
”プロファイルをとる”とは結局何をすればよいのでしょうか?
ベンチマークと関係があるのでしょうか。
661 :
デフォルトの名無しさん :03/09/29 19:09
>>659 modPowを使うと言われたので、
modPowを実装するということと同じ意味だと思います。
あつかましいお願いなんですが、どのように書いたらよいのか教えてもらうわけにはいかないでしょうか・・・
お願いします。
>>661 アルゴリズムを理解すれば書ける
n = n_(n-1) * 2^(n-1) + n_(n-2) * 2^(n-2) + ... + n_2 * 2^2 + n_1 * 2 + n_0 (指数を2の累乗の和に分解する)
x ^ (n1+n2) = x^n1 * x^n2 (指数法則)
x^(2n) = { x^n } ^ 2 (指数法則)
x * y mod n = (x mod n) * (y mod n) mod n (modの法則)
高校生なら4つ目の法則を知らないかも
>>661 例えば, 3^18 mod 5 を求める方法を考える
3^18 mod 5
= 3 ^ (2^4 + 2) mod 5 (指数を2の累乗の和に分解)
= 3 ^ (2^4) * 3 ^ 2 mod 5 (指数法則)
= ( 3 ^ (2^4) mod 5 ) * ( 3 ^ 2 mod 5 ) mod 5 (modの法則,計算途中でmodを取ってもよい)
3 ^ (2^4) mod 5
= { 3 ^ (2^3) } ^ 2 mod 5 (指数法則)
= { 3 ^ (2^3) } * { 3 ^ (2^3) } mod 5
= { 3 ^ (2^3) mod 5 } * { 3 ^ (2^3) mod 5 } mod 5 (mod の法則)
3 ^ (2^3) mod 5
= ...
以下,同様にして次数を下げられる
>>642 > ”プロファイルをとる”とは結局何をすればよいのでしょうか?
要するにどの処理に時間を食っているかを調べることでつ。
とりあえず"java -Xprof Hoge"やってみればべろーんと出てくるよ。
GUIで見易く表示してくれるツールとかもあるし
"eclipse profiler"でgoogle引くとか。
ちなみにSwing使うなら自前でダブルバッファリングする必要は無いよ。為念
665 :
デフォルトの名無しさん :03/09/29 22:46
>>658 executeUpdate("create table どーたらこーたら")
>>648 > 何が初心者には良いですか?
独習Javaにあるサンプルプログラムを実際に書いてコンパイルして
動かしてみる。そこにのっている問題もといてみる。
でいいんでない?
667 :
デフォルトの名無しさん :03/09/29 23:09
逆コンパイルを防ぐ曖昧化ソフトで 良いものを教えてください。 変数をリネームするだけでないソフトを 探しています。 商用Javaソフトはどのようにしているのでしょうか?
>>667 DashOがたぶん最強
フリーだとRetroGuardあたりか
プロセス間通信って一般的にどうやるもんなんでつか? Socket?RMIはちょっと違うんかな。
>>670 SocketでTCP使うのが汎用的だと思われ
672 :
デフォルトの名無しさん :03/09/30 00:17
CVSでバージョン管理できるようになると ソースコードにJavaDocで@versionタグや@sinceタグを書かなくても 自分しか読まない文にはどうにかなってしまうものですか? それから、CVSにあわせて@versionや@sinceの数字を 変更することは可能でしょうか? Eclipseを使っています。
>>672 なんか前にも全く同じ質問の組み合わせ見たなあ。
674 :
デフォルトの名無しさん :03/09/30 00:47
拡張子warファイルを作るにはどうしたら良いのでしょうか? ある程度ソースができたらtomcatに置いてrestartしたいのですが。
675 :
デフォルトの名無しさん :03/09/30 00:55
日本語ヘンだ(w スマソ.
>>668 レスありがとうございます。こんなスレあったんですね。読んでみます
>>669 具体的に教えていただき嬉しいです。原理など調べてみます。
パッケージ org.apache.xml.serialize は存在しません。 import org.apache.xml.serialize.*; ↑このエラーの原因と解消方法を教えてください。 お願いします
682 :
デフォルトの名無しさん :03/09/30 07:43
printf(*^o^*);
>>673 以前はJavaDocで.をつけることで見出しをつくるということだけを教わり頂きました。
>>671 どうもです。
やっぱりSocketですよね。
どうしてもSocket使っちゃダメっていう場合は他になにかありますか?
個別のポートを使うって言うのがNGってことで。
>681 一応、 Xerces-J-bin.2.5.0.zip をインストールしたんだけど、環境設定で上手くいかないの パスの通し方を教えて
>>685 プラットフォームは何か
どうやってコンパイルしているのか
最低これだけの情報は必要。
え〜っと WinXP使用で コンパイルは普通にjavacで・・・
JAR全部解凍してカレントディレクトリに突っ込む。 これが漢。
>>687 javac -classpath インストール先\xercesImpl.jar;%CLASSPATH% ソースファイル
>>692 ありがとう!
でも直リンクした事に今気づいた、、、。
スマソ〜
>>691 Javaゲームサイトということになっているらしいので
2ch用のこのJava質問スレについてあれこれ関連付けるなら
ゲームについてのトップページ(または2chJava質問スレテンプレート)は
別のディレクトリに置くなりしたほうがいいと思う。
こういうときは、、他の人がテンプレート集をサイトにして
作っている人がいるかどうかを確認するために念のために上げとこう。
確認できるかどうかはわからないけども今までにそういう話を
持ち出しても作ったという人が今までいないかったみたいなので
私がみたところではあなたのサイトをテンプレートにしてもいいのでは
無いかと思います。
>>694 確かにそうですね。
一応本題はjavaゲームサイトですしね。
わざわざageていただきありがとうございます!
今日はもう遅いんで明日あたり、デイレクトリ別にする作業と掲示板の登録作業をしたいと思います。
意見どうもありがとうございます〜!
>>684 Runtime.exec か Pipe
あまりお勧めはしない
697 :
デフォルトの名無しさん :03/10/01 00:57
>>695 ところでさ、いまのうちにいったほうがいいかもしれないのでいっとくけど
wiki使わないか?
出張から帰ったら俺も作ろう
699 :
デフォルトの名無しさん :03/10/01 01:24
JComboBoxに表示される文字列とは別に 値の持たせたいのですが、どうしたらよいのですか? 表示上の文字列 対応する値 4月 4 5月 5 6月 6 みたいな感じでindexとは別に持ちたいのです。 よろしくお願いします。
700 :
デフォルトの名無しさん :03/10/01 01:35
よく、(クラス名).(メソッド名) のところを (クラス名)#(メソッド名) って書く人いるのはなぜ? 第一、それでコンパイルできるん?
>>700 コンパイルは出来ない
クラスメソッドだと明示するための慣習
702 :
デフォルトの名無しさん :03/10/01 01:54
勉強がてら、javaで 入力されたデータをSQLServerに登録・参照 する画面をつくってみました。 JDBCでDBにアクセスするようにしたのですが、 この場合、不特定多数のマシンで動かす場合は、 すべてのマシンにjdbcドライバをインストールしないといけないのでしょうか? それともjarのなかにドライバを詰め込むことはできますか?
>>700 JavaDocでメソッドのリンクを見れば理由がわかると思います。
>>699 設定する値の型はなんでもよい。
んでフツーに使えばObject#toString()の文字列が表示される
ようになってる。
なので値(例えばint値)と表示文字列を持ち、toString()で
表示文字列を返すようなクラスを定義してやってその
インスタンスをJComboBoxに項目として追加してやればOK。
ついでにObject#equals()やObject#hashCode()等も
オーバーライドしてやると尚良いと思われる。
>>702 JDBCドライバをインストールという意味がわからない。
JDBCドライバはJavaクラスライブラリとして提供されるのだから、
あなたのアプリケーションのリリースイメージはそのJDBCドライバの
jarなりzipなりのファイルを含んだものであるべきでは?
706 :
デフォルトの名無しさん :03/10/01 07:11
>>701 逆。
インスタンスメソッドの標記 FooClass#barMethod()
クラスメソッドの標記 FooClass.barMethod()
>>706 そうだったのか。ただ単にピリオドじゃみづらいだけだからかと思ってた
708 :
デフォルトの名無しさん :03/10/01 09:34
問題] Write a package of Java classes to express the abstract syntax of regular expressions. という正規表現の抽象構文を表すJavaパッケージを書けみたいな問題があるのですが、 色々調べて見ましたが全くわかりませんでした。 どういった風に書いたらいいのでしょうか? アドバイスよろしくお願いします。
>>708 言語規定にBNF(?)があるからそれを正規表現に変換すれば良いんでないの?
710 :
デフォルトの名無しさん :03/10/01 11:02
GregorianCalendarの日付を1日戻したいのですが どういう方法がありますか? 2003月10月1日→2003年9月30日 2004年1月1日→2003年12月31日 よろしくお願いします。
>>710 Calendarのjavadocをよく読む。
>>708 これは標準ライブラリの話ですか? ならjava.util.regexかな?
713 :
デフォルトの名無しさん :03/10/01 13:05
>711 よく読んでもわからなかったです。 教えてください。
>>713 お前の人生を一日戻す
PCの時計を一日戻す
時間の基準点を360×24もどす
>>713 cal.add(Calendar.DATE, -1)
716 :
デフォルトの名無しさん :03/10/01 15:55
んなメッセージでてつながんねえよ? internal error - server connection terminated Description: internal error - server connection terminated
718 :
デフォルトの名無しさん :03/10/01 16:19
複数のJavaソースコードをpLaTeXソースコードに 簡単に貼り付けるツールを探しています。
709さん、712さん。ありがとうございました。 多分標準の話だと思うので、お二人の意見を参考にやってみます。
ちょっと更新アンド質問。 初心者さん用に基礎講座を作りたいのですが、なにぶんこの管理人も基礎の基礎が使えるだけなので、皆さんの知恵を借りて作りたいのですがどうでしょうか? 今、Wikiというhtmlエディタで誰でも更新ができるページをリンクしようという案があったのですが、自分Wikiを使うのは初めてで何もわかりません。 説明読んでもわかりません。 そこで、 ・誰かがWikiを使ってページを作りjava研究室とリンクさせる ・掲示板に基礎を書き込み、管理人が編集し、うpする この二つの方法が有力だと思っています。 初心者掲示板はただいま開発掲示板と化しているのでそちらに案を書き込んでいただけたら光栄です。 ご協力よろしくお願いします〜。 追記:Cや、C++の似たようなページも作り(管理人以外の誰か)、リンクさせるっていう考えがあるんですが、Javaだけでいいでしょうか? 誰かCのほうの掲示板にも行ってるって人で作ってみようって人いませんか?
xrea 辺りに Pukiwiki おけばいいんじゃないかな。
Pukiwiki は PHP 使える場所なら簡単に置けます 設定もパスワードを変更するくらいかな
723 :
デフォルトの名無しさん :03/10/01 17:38
すれ違いだったら申し訳ないんだが・・ Tomcatのserver.xmlでコンテキストの設定をreloadable=trueに しているのだが再読み込みされないのはなんでなのでしょうか?
設置方法がわからない、、、。 でも便利そうなのでクジケズもう一度挑戦してきます! 多分と3日後ぐらいになりそうだ、、、。
>>720 他の言語も一緒にしてもいいけど
CはC, JavaはJavaで(ディレクトリによる)カテゴリ分けくらいは
したほうがいいと思う。
+
>>725 確かにそうですが、自分はCやC++が使えないので、現代を支える言語の2chスレッド保管HP等を他の人(HP作りに長けてる人、またはCやC++が使える人)に作ってもらいそれをリンクしませんかって意味で言ったのですよ。
なんで自分がやらないのかというと、自分はHPタグは一通り使えるけど、3つの言語スレッドを管理するのはちょっと厳しいので他の方にやってもらおうと思いまして、、、。
というわけで誰でもいいので気力のある方募集中です。
Java研究室_________________
ttp://kutipatti.fc2web.com/index.html
>>728 さんへ
それは、質問前の心得みたいな感じで、まずはYAHOOで検索しろとか、そんな感じなのを作ればいいのでしょうか?
もし、そうならOKですが、内容は自分でまずページを作るので、それから追加項目等のアドバイスをしてください。(728さんに限らず他のかたがたもご協力お願いします)
違う内容でしたら、どのような風に作ればいいのか要望をお聞かせください。
Java研究室_________________
ttp://kutipatti.fc2web.com/index.html
swingやらswtやらが登場して どんどんクラスが多くなってきてるみたいで勘弁してほしい。 過去に作ったプログラムを書き換えると速くなったりするのは虚しい javaで書かれた市販のソフトウェアはあるのだろうか???
swingやらswtやらが登場して どんどんクラスが多くなってきてるみたいで勘弁してほしい。 過去に作ったプログラムを書き換えると速くなったりするのは虚しい javaで書かれた市販のソフトウェアはあるのだろうか???
こらまたすごいドシロウトが
733 :
デフォルトの名無しさん :03/10/01 22:09
BufferedImage img=new BufferedImage(1,1,BufferedImage.TYPE_INT_RGB); Graphics grh=new Graphics(); でエラーが表示されてしまうのですがどうしてなんでしょうか? importはしているしwindowsでは正常に動いたんですが Linuxに入れたら動かないんです。
おい、お前。そう、お前だよ。 「このスレおもろいから見てみ」「2ちゃんの歴史に残る名スレだぜ」とか言われてホイホイと このhtml化されたスレを見にきた、お前のことだ。 どうだ?このスレおもしれーだろ。 でもな、お前はこのスレを読むだけで、参加することはできねーんだよ。 可愛そうにな、プププ。 俺は今、ライブでこのスレに参加してる。 すっげー貴重な経験したよ。この先いつまでも自慢できる。 まあ、お前みたいな出遅れ君は、html化されたこのスレを指くわえて眺めてろってこった。
ちょち行き詰まったので皆さんにご報告
現在の問題点
・Java基礎講座を皆で作り上げたいので、そのための作成案
・教えて君を無くそう計画作成案
現在上記の2つの案が出ています。
まず、前者については、Wikiというhtmlを使えばいいと結論が出ました。
そのためにあと3日後ぐらいになると思いますが、皆さんのご協力が必要ですので手を貸していただけたら光栄です。
後者については、Java研開発掲示板にどのような対策を練ればいいのかを書き込んでいただけたら光栄です。
皆さんのご協力お待ちしてます〜。
Java研究室_________________
ttp://kutipatti.fc2web.com/index.html
>>730 オブジェクト指向を理解していればそんなふうには思わなくなると思う。
>>733 Graphicsは抽象クラスだよ。
> Graphics grh=new Graphics();
じゃ、そもそもコンパイル通らないはず。
Graphics grh = img.getGraphics();
かと。
それで、どういうエラーが出てるん?
ミス発見、、、。 htmlを使えばいいと→htmlエディタを使えばいいと 訂正します。
>>739 ついでだけど736は「光栄」の使いどころがちょっと違ってる気がする。
昔はム板Wikiがあったんだけど、なくなったんだよな。
>>741 マジデ!?
国語の勉強してきまつ、、、。
>>744 おいおい、よそのWikiに乱入するのはまずいだろ。
>>745 登録とかするの!Σ(´□`;)
使い方わからん、、、。
>>747 そうだったのかあ、、、。
何か難しい、、、。
誰かWiki使ってページ作ってそれをリンクさせたほうがはやそうだ、、、。
誰か助けてください、、、。
>>749 なんか突然上書きで削除されそうで怖いから事前にヘルプとか見ておくれ
monalipse!? なんじゃそりゃあ(;´д`) ちょちググってきまつ、、、。
Javaそのもののwikiならどこかにありそうなのだが
monalipse!? なんじゃそりゃあ(;´д`) ちょちググってきまつ、、、。
調べれば調べる程わからなくなってきました、、、。 monalipsにリンク貼る方法と、メリットを簡単に教えてください、、、。 なんか俺が教えて房みたいだ、、、。
>>756 自分で登録しますた。
______________________________
下記内容で WikiRoom への申し込みを受け付けました。
http://www.wikiroom.com/java/ からご利用ください。
一週間経ってもページが更新されない場合は、登録間違いであった
と判断し、自動的にIDを削除します。ご注意ください。
プライベートでご利用になりたい場合は、
[email protected] まで ID とパスワードをご連絡ください。
基本認証のプロテクトをかけます。
また、特定の人だけが編集できるようにしたい場合は、
許可する人(複数可)の ID と パスワードをペアにして、
[email protected] までメールしてください。
こんな内容が来たんでそっから更新したんすけど、、、
>>758 javaディレクトリ直下なら追記で更新しても問題ないってか?
いいんじゃねえの?
けど、2chJava質問スレ用に特化したような名前のほうが紛らわしく無いんじゃないかなー と思った
なんかあぶなっかしいなあ。wikiroomのほうはありがたく使わせてもらうとして
Eclipseのほうは失礼のないようにしといたら。
>>760 Eclipse Wikiの管理人=Wikiroomの管理人みたいだし。
なんとかわかってきた。 自分が犯罪チックな事やってたらズバッと注意してくださいな。 よろしくお願いします。 では、そろそろ就寝します
連続カキコスマソ。
>>762 確かにそうですなあ。
まあ、これで頑張りましょや〜
それではホントにおやすみなさいまし。
なんか「744の母ですが...」コピペしたくなるな。>>EclipseWiki
768 :
デフォルトの名無しさん :03/10/02 00:37
エクセルで作ったCSV形式のデータベースをJAVAで 読み込むにはどういうプログラムを書けばいいか教えてください。
>>768 java.io.FileReader、java,io.BufferedReader、java.util.StringTokenizerあたりを調べてみてください。
>>768 ちょっと前にExcelが作るCSVファイルの仕様へのリンクが
あったからそれも見ておくようにね。
Jakarta POIを使えば、曖昧模糊なCSVファイルともおさらばですよ。
>>772 俺、POIはめちゃくちゃメモリ食うから、大きいシート作るときは
CSVにしている。
>738 遅くなってすいません。 えっと書き間違いでした。 Graphics grh = img.getGraphics(); とやっています。 でエラーの内容は以下のとおりで具体的な原因がわからないのです;; 500 Internal ServerError message Internal Server Error description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request. exception org.apache.jasper.JasperException at org.apache.jasper.servlet.JspServletWrapper (以下省略)
>>774 これってJSPのエラーですよね?
JSPでGUIのコードを実行して、いったい何をしようとしてるんですか?
>>776 動的に JPG ファイルを吐き出して、
HTML から参照させようとしてんじゃないの。別におかしなことではない。
>>all 昨日は色々と手伝っていただきありがとうございます。 Wikiでの作成は>>allに任せますのでよろしくでする。
>>777 なるほど、「BufferedImage Linux」で検索するといろいろ出てきますね。
>>774 えっと、しようとしてることは
>>777 さんのいうとおりです。
何かわかりますでしょうか?・・・
>>781 俺も昨日始めたばっかりだからあんまりアドバイスできないんだけど、
500 ちうことはおそらく Exception が出てしまったと思うので、
ほんとに
>>777 みたいなことをしたいなら、
・保存しようと思ったが該当するファイルパスが無かった
・J2SE 実行環境が古くて必要な API (ImageIOとか) が無かった
とかで、とにかく getGraphics() とは別のところじゃないの?
Tomcat のログに何か出てないかな?
Linux でどこに出るかは俺は知らないので、調べて、出てなきゃ出すように設定して。
細かいことは WebProg板とか専用のスレで聞いておくれ。
そのときは J2SE, Tomcat のバージョンもちゃんと書くように。
733への答えは775で既出なわけだが。 ちなみに俺も同じ問題にぶち当たったが、その時はJ2SE1.3.1の使用が決まっていたので、 Xvfbを使ってしのいだ。
784 :
デフォルトの名無しさん :03/10/02 22:55
JSPからJavabeans呼ぶときのclass=の所でインターフェイスや抽象クラスって可能ですか?
マータ直リンしちゃったよ、、、。 スマソ。
788 :
デフォルトの名無しさん :03/10/02 23:10
>>784 Class#newInstance()出来ないクラスは無理ちゃうけ。
789 :
デフォルトの名無しさん :03/10/02 23:44
784じゃないけど、気になったから調べてみました 「class="クラス名"」 class で指定したクラスのインスタンスを生成する 「type="タイプ名"」 type で指定したクラスのインスタンスを生成する 「class="クラス名" type="タイプ名"」 type で指定した型としてクラスをロード 「beanName="ビーン名" type="タイプ名"」 type で指定した型として JavaBean をロード 「class="クラス名"」、「class="クラス名" type="タイプ名"」 の使い方はわかるけどあとの二つの 「type="タイプ名"」 「beanName="ビーン名" type="タイプ名"」 使い道がわからん。どういうときに使うの?
790 :
デフォルトの名無しさん :03/10/03 02:25
>>770 助言ありがとうございます
独習JAVAやネット調べてみましたが具体的にどうかけばいいのか分かりません。
なんとなく、使うんだな〜ぐらいしか理解できません。
例えばCSVファイル名がtest.csvだった場合、呼び出すときはどのようなプログラム
になるのでしょ?
CSVファイルを読み込む際、ファイルそのものはどこにおいとけばいいのでしょうか
&CSVファイル全部じゃなく、,,で区切られた一部分だけを呼び出すにはどう書けば
いいのでしょうか
ちなみに今ジェービルダーを使ってプログラムを組んでる最中です
沢山質問して申し訳ないのですが、もしよければ教えてください
791 :
790,768 :03/10/03 02:31
ちなみに現在の所一応、CSVファイルはファイルを使いたいプログラムと同じ フォルダにおいています。
792 :
デフォルトの名無しさん :03/10/03 02:45
>>785 のスキルはいかほどよ?
実は
>>785 も教えて君レベル?
だったらがんがれ。そうじゃなかったらばかにしたようでスマソン
794 :
デフォルトの名無しさん :03/10/03 09:09
eclipseを使ってます。 外部jarをインポートしてコードを組んで jarファイルをエクスポートしたんですが このときにインポートしたjarも 一緒にエクスポートしたjarに組み込みたいのですが、 可能でしょうか? あと、簡易的なアプリを作成して、 jarを開くとアプリが起動するようにしたのですが、 知り合いから「jarを開いてアプリが動くのはおかしい」といわれました。 バッチファイルとかで起動させるべきだというのですが、 そういうものなのでしょうか?
>可能でしょうか? 可能だとしても、するな。他人の jar なら配布要件があるだろうし、 自分の jar なら、そういうよーわーらんことをしないで、 きちんと「こっからここまで」の一つの jar をツールで作れ。 どーーーーしてもしたければここじゃなくて eclipse スレで聞け。 >知り合いから「jarを開いてアプリが動くのはおかしい」といわれました。 >バッチファイルとかで起動させるべきだというのですが、 >そういうものなのでしょうか? Windows の exproler, Mac の Finder, GNOME の・・・なんていうんだ? GUI の実装によりけりになるから、それ任せではいけない。 キャラクタベースのアプリケーションならコマンドラインから起ち上げるんだから。 bat はあった方がいい。 bat だけでなくて、マニュアルに必要な jar などはっきり書いておくと、別OS にも親切。 でもマニフェストもそのまま入れておくのがこのましい。 マニフェストファイルが作ってあって、Win で、jar が javaw あたりに関連付けてあれば、 bat 要らずで適切に起動してくれるから便利。
あるインターフェースを実装したクラスは必ずSingletonに、 とやりたいのですが、やろうとするとコンパイラに怒られてしまいます。 方法はないのでしょうか?
ファイルの作成日時 更新日時を取得する方法はないですか? File〜クラスとかにはそんなのありません(確認した範囲では)
798 :
デフォルトの名無しさん :03/10/03 11:44
Apache のBasic 認証から入力された情報をJSPで取りたい のですが、ヒントだけでも教えてもらえないでしょうか?
>>797 ファイルの作成日時は Unix とかでは保存されないんで、
取りたければ JNI 使うとか、Runtime#exec() で
ファイルの作成日時を表示するコンソールアプリを実行して
標準出力から取るとかしかないと思われ。
更新日時は File#lastModified() で取れると思うが。
>>795 > >可能でしょうか?
> 可能だとしても、するな。他人の jar なら配布要件があるだろうし、
> 自分の jar なら、そういうよーわーらんことをしないで、
> きちんと「こっからここまで」の一つの jar をツールで作れ。
> どーーーーしてもしたければここじゃなくて eclipse スレで聞け。
そういうことはEclipseでやるよりもantでやったほうが楽そうなのだが
>>796 もっと具体的に。
どんなエラーメッセージがでたのかわからないことには
こちらは質問に答えにくい。
>>799 どうもありがとうございました。
get〜()とかばっかり見てて気づきませんでした。
>>793 俺のスキルも、実際教えて君LVだ。
だけど、俺の場合は
入門ソフトウェアシリーズ:Java言語
っていう本をちゃんと読んでるから、スレで聞いた回数は3回も無いぐらいだぞいさ。
って自慢にならんか。
信用ならんと思うならオイラが独断でJavaアプレットの講座でも作ってみるがどうかな?
内容は基礎の基礎ばっかだと思うが、、、。
Java研究室_________________
ttp://kutipatti.fc2web.com/index.
質問とかじゃないんだけれど、ちょい愚痴らせて。 何回やってもJ2SE v1.4.2のインストールが8%で止まる。。。 お、俺何か悪いことしたっけなぁ? あともう少し粘ってみるか……てか、最初からこれかよ!
>>793 スキルで人を判断するなよ・・・
だからプログラマは人づきあいが悪いと言われ
この板はえらそうなやつがおおいとか言われるんだよ
プログラマをスキルで判断しなかったら何で判断するんだか。 スキル以外のものは二の次。
807 :
デフォルトの名無しさん :03/10/04 00:22
最近、 ジャバハウスとHelloWorldのページ入れないことが多い。。。 どうしちゃったんだろう。。。
809 :
デフォルトの名無しさん :03/10/04 01:15
上でCSV関連の質問がでてますが、 一つのセルの中で、ダブルクォーテーションやカンマが入り混じってる場合で うまく取り出せる方法ってあるのだろうか? 例えば、セルの中にabc"de,fgっていう文字列があると、 CSVには"abc""de,fg"という感じになると思うのですが、 うまい具合にabc"de,fgという文字列で取り出せないでしょうか?
810 :
デフォルトの名無しさん :03/10/04 01:25
>>809 真面目にパーサを書きましょう。
regexpかJakartaOROで書くのがお手軽。
JavaCCで書くのもありかモナー。
811 :
デフォルトの名無しさん :03/10/04 01:31
FOMAで出るFF・DQはjavaで書かれているのかな?
812 :
デフォルトの名無しさん :03/10/04 01:42
813 :
デフォルトの名無しさん :03/10/04 01:51
>>812 随分の昔のネタだな。
すでにそのことでSunが裁判を起こしM$から金もらって解決していることだろ
815 :
デフォルトの名無しさん :03/10/04 02:00
『modPow』を自力で実装するプログラムを書いています。 指数が正の数と0についてはうまく機能したのですが、 負の数についてうまく機能しません。 この考え方そのものが間違ってるのでしょうか? どなたかアドバイスいただけないでしょうか・・・お願いします。 import java.math.BigInteger; import java.io.*; public class LoopJijyo4{ public static void main(String[] args){ BigInteger p = new BigInteger(args[0]); int n = Integer.parseInt(args[1]); BigInteger m = new BigInteger(args[2]); BigInteger y = BigInteger.ONE; if(n > 0){ for(int i = n; i > 0; ){ if(i % 2 == 0){ i = i / 2; p = p.multiply(p); p = p.mod(m); }else{ i = i - 1; y = p.multiply(y); y = y.mod(m); } } System.out.println(""); System.out.println("結果:" + y);
816 :
デフォルトの名無しさん :03/10/04 02:00
}else if(n == 0){ BigInteger j = BigInteger.ONE; System.out.println(""); System.out.println("結果:" + j.mod(m)); }else{ for(int k = n; k != -1; ){ if(k % 2 == 0){ k = k / 2; p = p.multiply(p); p = p.mod(m); }else{ k = k - 1; y = p.multiply(y); y = y.mod(m); } } System.out.println(""); System.out.println("結果:" + y.modInverse(m)); } } }
>>815 2^(-1) mod 4
なんて存在しないYO!
818 :
デフォルトの名無しさん :03/10/04 02:21
TorqueでMysqlのLAST_INSERT_ID()関数みたいなのが使いたいんですけど、 どーしたらいいでしょう。。 まじわかりません!
>>816 × k= k-1;
○ k= k+1;
820 :
デフォルトの名無しさん :03/10/04 02:24
>>819 × k= k+1;
○ k++;
メモリの使い方(ry
822 :
デフォルトの名無しさん :03/10/04 04:20
>>821 略さないでちゃんと言って下さいよ。
変わるもんなんですか?
>>794 たん。
おれ、ふだんeclipse使ってないから、勘違いしているかもしれないけど、
MyApplication.jar (自分の作成したいjarファイル。)
├ExUtility.jar (自分以外の外部の誰かが作成したjarファイル。)
├MyApplication.class (ExUtility.jarを利用する自分のプログラム。)
└マニフェストファイル。(クラスパスを設定したりとか起動クラスを指定したりとか。)
もし、上のような三つのファイルから構成されるMyApplication.jarを作りたいということなら、
下のリンク先にも、そういう話題があるけれど、そこでの結論としては、
取り込んだjarファイルにクラスパスを通すことは、
できないのではなかろうかということみたい。
Jar ファイル内にクラスライブラリを置く方法についてのQ
http://java-house.jp/ml/archive/j-h-b/045862.html#body // あいかわらずjava house、つながったり、つながらなかったりだけど。
取り込むExUtility.jarファイルに対してクラスパスを設定することができなければ、
MyApplicationクラスから、ExUtility.jarのなかにあるクラスを利用できないわけで、
利用できないjarファイルなら取り込んでも仕方がない。
だからここは、いったん外部のjarファイルをばらしてから、あらためて一つのjarファイルにまとめるなど、
別の手段をとったほうがよさそう。
// もしかしたらjarファイルの中のjarファイルに対して、
// クラスパスを設定する方法があるのかもしれないけど。
// 私もちょうど先月、jxtaを一つのjarファイルにまとめようとして挫折。
// なにか方法はないのかな。あれば、誰か補足きぼんぬ。
別の手段としては、以下のように、 取り込む外部のjarファイルをいったんclassファイルにばらしてから、 ひとつのjarファイルにまとめてしまうか、 MyApplication.jar ├ExUtility1.class ├ExUtility2.class ├MyApplication.class └マニフェストファイル。 でなければ配布するファイルは増えるけど、 MyApplication.jarとExutility.jarの二つのファイルに、わけてしまうか。 ExUtility.jar MyApplication.jar ├MyApplication.class └マニフェストファイル。 // もしMyApplication.jarを実行可能なJarファイルにしたいのなら、 // マニフェストファイルで、ExUtility.jarファイルへのクラスパスを設定。
1.jar ファイル内のリソースは jar://〜 の形式で URL として扱える。 2.manifest ファイルの Class-Path エントリでクラスパスを設定できる。 試してみたわけではないが manifest ファイルの Class-Path エントリに jar://ExUtility.jar と書けばうまくいったりしないだろうか?
いろいろ試してみたがめんどくさいことしなくても 外部の ExUtility.jar を自分の jar に固めて参照するためには 単に manifest ファイルの Class-Path エントリに ExUtility.jar と書くだけでよいようだ。
828 :
デフォルトの名無しさん :03/10/04 13:03
命名規則のことなんですけど、変数の先頭が_(アンダーバー)って 一般的になににつけるものなんでしょう?
もしかして
>>824 の2番目の例のように、ExUtility.jarファイルが、
クラスパスで参照できるどこかのディレクトリに残ってない?
もし残っていればExUtility.jarファイルを削除してしまうと、実効できなくなるとおもうから。
ちょっとまっててね、必要なソースファイル一式と、antのビルドファイル作ってアップする。
http://javawebstart.minidns.net/MyApplication.zip antがインストールされていれば、
makeExLib で、仮想的な外部のライブラリをExUtility.jarファイル作成し、
compile で、MyApplication.javaをコンパイルして、
dist で、外部のライブラリと、MyApplication.classを一つの実行可能なJarファイルに固めて、
そして run で、その実行可能Jarファイルを実行。
おそらく、makeExLibでbuild/ディレクトリに作成されたExUtility.jarファイルを、
dist/lib/ディレクトリなどに配置しておかないと、
java.lang.NoClassDefFoundError: ExUtility1
のエラーが表示されるとおもう。
832 :
デフォルトの名無しさん :03/10/04 16:40
833 :
デフォルトの名無しさん :03/10/04 16:50
すみません。教えてください。 jsdk2.1が動きません。jdkのバージョンと合わないからだと思うのですが(j2sdk1.4.2)…
>>830 うむ。失敗。
やはり自分でクラスローダを書いて Jar からクラスを読み出すしかないのだろうか。
835 :
デフォルトの名無しさん :03/10/04 17:59
Javaチャットの応用で将棋とか囲碁とかオセロとかつくることは可能ですか?
836 :
デフォルトの名無しさん :03/10/04 18:15
instanceof って演算子だろうになぜ !instanceof とできないのだろう。
839 :
デフォルトの名無しさん :03/10/04 20:02
あるメソッドの戻り値をインターフェースで定義しても 戻り値はちゃんと取得できないってことありますか?
例外を投げる場合は戻り値は帰ってこないわな
841 :
デフォルトの名無しさん :03/10/04 21:20
プログラムというものを勉強しはじめて間もありません。 初歩的な質問で申し訳ありませんが、以下についてどうかご教授ください。 「オーバーロード」とは 「スーパークラス内のメソッドを、サブクラスで再定義する」ことをいう。 との認識ですが、ここまでは正しいでしょうか? これが正しい時、上記の利点って何なんでしょうか? サブクラス内で再定義してしまうと、スーパークラス内で定義したメソッドは、無意味ではないのですか? (例えば、パッケージクラスを継承したが、スーパークラス内の当該メソッドを使用しない場合。など) 再定義などしないで、自分が自由に命名した新規メソッドを作成すればよいように思えて仕方ないのですが。。。 うまく文章にできているか ものすごく不安ですが。。。
yahooのなんかはホストのサーバー立てなくても チャットのように気軽にできるといいんですが・・・
>>841 > 「オーバーロード」とは
> 「スーパークラス内のメソッドを、サブクラスで再定義する」ことをいう。
> との認識ですが、ここまでは正しいでしょうか?
いいえ。
844 :
デフォルトの名無しさん :03/10/04 22:03
InputStream in = new FileInputStream("a.txt"); Map map = new HashMap(); map.put("param1",in); Object param1 = (Object) map.get("param1"); Object[] params = { param1 }; //↓だと実行時にNo such method exceptionになる Class[] types = { param1.getClass()}; Constructor constructor = classOfFormProvicer.getConstructor(types); //実行時にNo such method exceptionになる Class[] types = { param1.getClass()}; Constructor constructor = classOfFormProvicer.getConstructor(types); SomeClass someClass = (SomeClass) constructor.newInstance(params); SomeClassのコンストラクタの引数はInputStreamです。 インスタンスからgetClassしてInputStream(クラス)を 得ることはできますか?
オーバーライドと間違えました。 読み替えてご回答いただけませんか?
>>844 param1 の実際の型は FileInputStream であって InputStream ではない。
なのでそのままでは正しいコンストラクタを取得することができない。
>>845 多態とか動的束縛(動的結合)で調べてみ?
そのためにスーパークラスとサブクラスは並行開発することが多いよ
ありがとうございます。 複数のスレに同じ質問を投げたがために、先ほど注意を受けました。 今後気をつけます。すみません。 多態、動的束縛、今から見てみます。
オーバーライドがなかったら、アプレット作れんやん。
850 :
デフォルトの名無しさん :03/10/05 00:11
オーバーライドなかったら、サーブレットもEJBも作れない。
851 :
デフォルトの名無しさん :03/10/05 00:15
オーバーライドがなかったらフレームワークなんてあり得ない
java で書かれたDBMSを探しています なにか良いものは無いでしょうか?
hsqldb
わざわざ自分のPCをホストにすることなく 無料サーバーでもjavaチャットのような感じで設置できる将棋や囲碁のゲームがほしいんですが、 こういうものは作ることは可能なんでしょうか?
>>854 ものすごくリアルタイム性に欠けるか、
さもなくば、ものすごくサーバに負荷をかけてしまうプログラムになるだろうな。
無料サーバ=Perlか、せいぜいPHPのCGIを置くことしか許されていないサーバ。
という意味ならね。
無料サーバで、Javaのプログラムを置かせてくれて、動かしてくれて、
しかもそのプログラムがServerSocketを使っても良い(ポート番号を貸してくれる)
ってのがあるなら、可能だけど。
クライアント/サーバ型のシステムのうち、サーバ側を何で動かすか、っていう問題でしょ。
856 :
デフォルトの名無しさん :03/10/05 17:54
accessでつくったファイルに jdbc:odbcでなはく jdbcのみでアクセスすることは可能でしょうか
>>855 最初の対戦相手探しだけ、サーバに任せて
あとはP2Pでやれば問題ない
つまり相手探しの部分だけサーバに任せればいいので
Perlしか使えないほとんどのサーバでもOKとなる
しかも大げさにP2Pなんて書いたが
実際はサーバント作ればいいだけの話だ
858 :
デフォルトの名無しさん :03/10/05 18:57
appletを使ってタイピングソフトを作ることにしました。
>>854 だれのそのゲームをやってもらうんだ?
そういうゲーム作りたいなら。
自前でLinuxサーバでお構築したほう楽なんじゃないのか?
初めてJavaのソースをダウンロードしてみた。 いやぁ、すごい!SUNに惚れなおしますた。
c:\myjava>javac myjava.java エラー: myjava.javaを読み込めません。 エラー1個 となるのですがどうしたらいいですか?
>>862 cドライブのmyjavaフォルダの中にmyjava.javaファイルを入れてください
>>863 入ってると思うんですけど、間違ってますか?
C:\MyJava>dir
C:\MyJava のディレクトリ
2003/10/05 22:15 <DIR> .
2003/10/05 22:15 <DIR> ..
2003/10/04 23:50 151 myjava.java.txt
1 個のファイル 151 バイト
2 個のディレクトリ 59,232,198,656 バイトの空き領域
C:\MyJava>javac myjava.java
エラー: myjava.javaを読み込めません。
エラー1個
> 2003/10/04 23:50 151 myjava.java.txt (;´Д`)ハァハァ
C:\MyJava>ren myjava.java.txt myjava.java しる! Javaやる時は拡張子を表示させた方がいいよ。
>>862 は"I_LOVE_YOU.txt.vbs"に引っかかりそうな予感
>>867 d(゚Д゚)☆スペシャルサンクス☆( ゚Д゚)b
>>868 俺にはノートン先生が居るんだぞー
>>860 >Linuxサーバでお構築したほう楽なんじゃないのか? なぜ、Linuxじゃないといけないのか疑問
>>867 ren myjava.java.txt myjava.java
って毎回入れないと駄目ですか?
フォルダオプションで「登録されている拡張子は表示しない」のチェックはずしたんですけど。
だから、拡張子変えればいいだけだって プログラミングの前にファイル操作の基本も勉強すれよ どうせ次の質問は 拡張子を変えたらメモ帳で開けなくなりましたって 言うんだろ?
便乗質問です。 拡張子とは何か、ということについての広く合意されている厳密な定義は存在しますでしょうか。 例えば、 MyProgeam.java というファイル名を持つファイルの拡張子は java である、 というのはわかるのですが、MyProgram.java.txt.exe.txt というようなファイル名を持つ ファイルの拡張子は、 java.txt.exe.txt ではなく、txt である、という認識でいいでしょうか。 すなわち、ファイル名を構成する文字列の各文字を後ろから順に見て行ったときに、 最初に出現する 「.」(ピリオド)よりも後ろの部分が拡張子である。ということで間違いないでしょうか。 また、ファイル名を構成するいくつかの文字のなかに、「.」 (ピリオド) が含まれない場合は、 拡張子が無い、という認識でよいでしょうか。それとも拡張子は存在し、"" 長さ0の文字列である、 と言うべきでしょうか。
>>861 Eclipseでソースコード覗くとIBMにも惚れ直すことができるよ
>>873 > 例えば、 MyProgeam.java というファイル名を持つファイルの拡張子は java である、
> というのはわかるのですが、MyProgram.java.txt.exe.txt というようなファイル名を持つ
> ファイルの拡張子は、 java.txt.exe.txt ではなく、txt である、という認識でいいでしょうか。
tar.gzな拡張子はそんなにあるもんではないのでそんなもんでえ。
しかしそんな紛らわしいファイル名、普通はつけない。
:>
> すなわち、ファイル名を構成する文字列の各文字を後ろから順に見て行ったときに、
> 最初に出現する 「.」(ピリオド)よりも後ろの部分が拡張子である。ということで間違いないでしょうか。
OSによっては拡張子の概念を持たないものがあるですが。
使っているエディタやOSなどによってはその認識は変わります。
>
> また、ファイル名を構成するいくつかの文字のなかに、「.」 (ピリオド) が含まれない場合は、
> 拡張子が無い、という認識でよいでしょうか。それとも拡張子は存在し、"" 長さ0の文字列である、
> と言うべきでしょうか。
Windowsでは拡張子無しで考えとく。MacやUnix系ではもとから拡張子という概念がなく、
わかりやすさのために、ファイルの分類のしやすさのためにあり、.**という命名規則にこだわらなくてもいい。
それくらいどこか本やサイトで調べればのってる。
>>873 拡張子の解釈はあってます。
ピリオドがない場合は拡張子がない状態。
>>876 ピリオドから始まるファイル名は?
ファイル名なしで拡張子のみ?
>>877 隠しファイル
シェルの機能でカーネルには関係ないけどな
>>878 Windowsしか使ってない奴にそんなこといって理解できるのか?
>>879 とはいえWindowsのドットから始まるファイルは
UN*X系OSの文化だと思うが
>>880 >理解できるのか?
ここに答えろよ ばか
過去に作ったものを EJB 向けにしてみようと、勉強をしてみてるんですが、 EJB の (特に Bean の) 利点がさっぱりわかりません。 何かいいサンプルはありませんか? 特に findBy〜 なメソッドを実装している例が見てみたいです。
883 :
デフォルトの名無しさん :03/10/06 21:11
Windowsすら使えてないのにプログラミングかよ
あのJava初心者なんでよくわからないんですけど… NullPointerException って結構使われる事多いんですか?
>>885 j2sdkのソースを例に取ると
$ unzip -p src.zip |grep NullPointerException |wc
1159 7052 71055
こんなかんじ。あと俺自身のコードでいうと、結構使うね。
>>885 使いまくり。マ板の人間なら一日一回は使わないと気が済まない。
ぬるぽ
CRC16の計算方法を教えてください。 SDKには32にしかなくて困っています。 ソースを見てみたのですが、さっぱり・・・・
893 :
デフォルトの名無しさん :03/10/06 22:52
ユニークな連番を得るためのクラスありますか?
894 :
デフォルトの名無しさん :03/10/06 22:58
ユニークな連番を得るクラスありますか?
895 :
デフォルトの名無しさん :03/10/06 23:01
2重書き込みすまそ
896 :
デフォルトの名無しさん :03/10/06 23:29
897 :
デフォルトの名無しさん :03/10/07 00:16
>>892 生成多項式が違うだけだろ
1+x^5+x^12+x^16 CCITT
1+x^2+x^15+x^16 ANSI
あと生成多項式のLSB,初期値が0000とFFFFのどちらか,最後にビット反転するか
が細かく違うかもしれん
ちなみに,フリーソフトなどで一般的にCRC16と呼ばれているのは
LSBはx^15の項,初期値FFFF,最後にビット反転はしない
>>892 Java の LHAライブラリにたいていついてると思う。
>>894 データ型とオーバーフロー発生時の処理は、要求仕様に応じて修正すれ。
public class UniqueNumber{
private static int val = 0;
public static synchronized int nextInt(){
val++;
if(val == Ingeter.MAX_VALUE)
val=Integer.MIN_VALUE;
return val;
}
}
>>890 オイオイ。
NullPointerExceptionを自分で生成してthrowするプログラムなんか、
普通書かないだろ。バグのせいでVMがぬるぽを作ることは多々あるが。
>>902 > NullPointerExceptionを自分で生成してthrowするプログラムなんか、
> 普通書かないだろ。
JDK 付属のソース見てみろ。
null かどーか if文でチェックして、
null だったら throw new NullPointerException(); とか
throw new IllegalArgumentException(); してるソースは結構多い。
自分にとっての「普通」が、他人にとっても「普通」だと思わんように。
>>902 呼ばれたメソッド内で引数のnull値チェックとかやらない人?
Effective Javaでも、慣例としてこういうときはIllegalArgumentException
じゃなくてNullPointerException投げろってあるよ。
905 :
デフォルトの名無しさん :03/10/07 09:11
List クラスでclone()が使えないのはなぜですか?
>>906 Listがjava.util.Listを指しているのなら、そもそもListクラスは存在しません。
Listインタフェースならあります。Listインタフェースの宣言にはclone()は
ありませんが、Listの実装クラスであるArrayListやLinkedListは、
java.kang.Objectで定義されたclone()をオーバライドしており、clone()を実行すると
自身のシャローコピー(配列が指す中身まで複製しないコピー)を返します。
Listがjava.awt.Listを指しているのなら…どうなるんでしょう?試したことないなぁ
普通にインスタンス作ったのと同じ振る舞いになりそうな気もするんですが。
>>906 List はクラスではなくインタフェースです。
List を参照しているときの clone() メソッドは Object の clone() メソッドを前提とします。
これは protected であるため、コンパイル時既に不正であることが予期されてしまいます。
List インタフェースを実装しているクラスが、
clone() を (public に) サポートしていないといけません。
どうしても clone() したければ、
new ArrayList(list); とでもすれば似たような結果が得られるでしょう。
かぶったけど補足 >clone() を (public に) サポートしていないといけません。 clone() を (public に) サポートしつつ、 そのクラスを型とする変数で参照しなければなりません。
>>892 肝心なこと忘れてた
フリーソフトのCRC16の生成多項式はCCITTな
>>900 ちなみにLHAのCRC16はANSIの生成多項式で
LSBはx^15の項,初期値0000,最後にビット反転はしない
リトルエンディアンで書き込む
(´-`).。oO(
>>911 はCRC16で何をやりたかったんだろう・・・?)
914 :
デフォルトの名無しさん :03/10/07 23:16
長方形の画像を90度回転させたいんだけど、 AffineTransformのrotateを使ってもうまくいかなくて困ってます。 BufferedImage使っているので、画像の大きさは簡単に合わせられるんですけど、 90度回転するように設定したAffineTransformでdrawImageすると、 画像の領域からはみ出してしまいます。 なお、大きさが変わらない180度は問題なく回転出来ています。 何かヒントか何か無いでしょうか?
おまえらチョット待て。 Bar bar = foo.getBar(); if(bar == null)throw new NullPointerException(); bar.hoge(); こんな馬鹿なコード書くのが一般的ルールなのか?
>>915 void BarMethod(Bar bar) {
if (bar = null) throw new NullPointerException();
bar.hoge();
}
誤 if (bar = null) throw new NullPointerException(); 正 if (bar == null) throw new NullPointerException();
918 :
デフォルトの名無しさん :03/10/08 00:10
データベースの好きなとこからデータを取得するにはどうすればいいか教えてください。 例えば データベースに aaa,bbb, ccc,dddとあったとして、 Text[0]=aaa Text[1]=bbb Text[2]=ccc Text[3]=ddd ととって行きたいのですがどうすればいいのでしょ
データベースって? ISAM? DAM? PAM? VSAM? ODB? RDB? 階層型DB? ネットワークDB? UNIX DBM? それとも別の何か??
920 :
デフォルトの名無しさん :03/10/08 00:37
データベースっていうかCSV形式のファイルです。
>>920 それをデータベースと呼ぶか・・・
とりあえず小学校でも修了してからこいや
>>922 データベース…データ形式が応用プログラムに依存しないように
応用プログラムに合わせて自動でデータ変換を行うもの
と習った
>>923 「逆もまた真なり」は必ずしも真ではないのだ
ってかCSVもDBも自動でデータ変換なんて行わないし・・・
やっぱり小学校を修了してこいや
925 :
デフォルトの名無しさん :03/10/08 23:47
すいません教えてください。 int型をString型に変換したいんですがどうしたらいいですか。
>>925 int i=5;
String str1,str2;
str1=String.valueOf(i);
str2=Integer.toString(i);
いつも思うんだけど、みんなString.valueOfってNumberFormatException 書いてる?前書きまくってたら先輩から 「このDBデータは数字しか入ってないから大丈夫だよ」 「(え...でもCHAR型なんすけど)そうっすか〜。」 とかいうやり取りがあったり。
928 :
デフォルトの名無しさん :03/10/09 00:33
>>927 > いつも思うんだけど、みんなString.valueOfってNumberFormatException
String#valueOf() って NumberFormatException 投げないだろ…
String#valueOf(char[],int,int) とか String#valueOf(char[]) は
NullPointerException とか IndexOutOfBoundsException 投げるみたいだが。
930 :
デフォルトの名無しさん :03/10/09 00:54
>>875 >MacやUnix系ではもとから拡張子という概念がなく、
Macにも今や拡張子はあります。そしてApple自身が定義を作成しています。
931 :
デフォルトの名無しさん :03/10/09 01:09
>>672 >@version $Id$
それは何も設定せずともJavadocで作ったHTMLファイル群をCVSにコミットしただけで
HTML内にバージョンが自動的につくようになっているのですか?
それともCVS以外に何かインストールすべきものや設定すべきもがあるのでしょうか?
ネットで調べたのですが$Revision$を入れればいいと書いてあるだけでした。
RuntimeExceptionをcatchあるいはthrowする時はそうする
理由と影響範囲をよーく考えましょう。
基本的にRuntimeExceptionはシステム(プログラム)の
バグによってのみしか起こりえない、という位の認識を
しておくべき。なのでチェック例外といっしょくたにcatchしたり、
無闇にthrowしてはいけません。
上のほうでNullPointerExceptionをnewするとかあったけど、
その検査した値がnullである事が予測されるのならば違う対処
(チェック例外を投げるとか)をするべきだし、予測されないなら
いちいち検査などしないか、アサーションを使った方がまし。
Javaの標準ライブラリレベルでの使われ方など参考にしちゃ
いけません(標準ライブラリが間違っているということじゃないよ)。
まあNumberFormatExceptionはNumericである保証がない
文字列の数値変換を試みる目的でcatchすることが多いけどね。
>>927 はInteger.parseInt(String)とかの事だと思うが、
そのDBから読んできた文字列がNumericでないことが
システムのバグと解釈されてよいのならば、あえてcatchしない
というやり方も考えられるでしょう。
>>927 Integer#parseInt なんかと勘違いしてないかい
>上のほうでNullPointerExceptionをnewするとかあったけど、 >その検査した値がnullである事が予測されるのならば違う対処 >(チェック例外を投げるとか)をするべきだし、予測されないなら >いちいち検査などしないか、アサーションを使った方がまし。 private メソッドに対しては正しいがpublic メソッドに対しては正しくない。 特に、引数が null であってはまずいときに null が与えられた場合は NullPointerException (場合によっては IllegalArgumentException など) を 投げるのが正しい。
>>933 > 基本的にRuntimeExceptionはシステム(プログラム)の
> バグによってのみしか起こりえない、という位の認識を
> しておくべき。なのでチェック例外といっしょくたにcatchしたり、
> 無闇にthrowしてはいけません。
Error と混同してないか?
> Javaの標準ライブラリレベルでの使われ方など参考にしちゃ
> いけません(標準ライブラリが間違っているということじゃないよ)。
「俺の考えでは〜」って話であれば別に良いけど…
「一般的に〜すべき/すべきでない」って話なら
根拠を示して、標準ライブラリが間違ってると言わないとダメだと思われ。
>>935 んー、この話は何が正しくて何が正しくないかというような
ことじゃないな。
ライブラリレベルでは確かに慣例的にそういう「べき」が
あるかもしれないけど、NullPointerExceptionは原則として
null参照への操作によって起こるものとしてのみとらえたほうが
いいのでは。ランタイム例外を投げるにしても、ちゃんと代わりの
ものを定義して使う方がわかりやすいと思う。
ぬるぽ起こしてバグなんだか引数チェックなんだか、スタックトレース
凝視しないとわからんなんてのは最悪じゃないかね。
JSPの事で質問があります。 JSPページの最初の部分で<% %>タグにプログラムを書き込んでいるんですが、 毎回アクセスするたびにこの処理は行ってほしいのですが、ブラウザであっちこっち行ってから戻ってきた場合、 ブラウザのキャッシュ機能でこの処理を抜かして、HTMLだけが送信されるようになってしまうと言うことは、ありませんか? 何も指定しなくても、必ず毎回処理をしてから、HTMLをサーバが送信してくれるものなんですか?
>>927 assert代わりに例外を使う気持ちはわからんでもない。
でもプリプロセッサのないJavaだとリリース版でもチェックコードが
残っちゃうから気にする奴は気にするだろうな。
JDK1.4なら素直にassert使っとけ。
あと数値フォーマットのチェックに限って言えば
実際に数値に変換する場所で例外が起きるだろ。
例外の起きる場所が多少ずれるだけなら
ほっといていいと思うよ。
>>936 >
>>933 > Error と混同してないか?
してません…。
catch (Exception... とか平気で書く人?
> 「一般的に〜すべき/すべきでない」って話なら
> 根拠を示して、標準ライブラリが間違ってると言わないとダメだと思われ。
確かに「俺の考えでは」だね。スマソ。
標準ライブラリとそうでないものの信頼度の違い、としかいえないな。
>>941 > ランタイム例外を投げるにしても、ちゃんと代わりの
> ものを定義して使う方がわかりやすいと思う。
NullReferenceException extends Exception を導入しろとでも?
素直に NullPointerException 使った方がマシ。
> ぬるぽ起こしてバグなんだか引数チェックなんだか、スタックトレース
> 凝視しないとわからんなんてのは最悪じゃないかね。
null に対して操作を行った際に投げられる NullPointerException よりも、
引数チェックして NullPointerException 投げた方が原因の特定はしやすい。
(特にコンストラクタとかでは)
>>942 キャッシュ使ってるのにサーバーから送信されたらバグだろ。
>>944 > > Error と混同してないか?
> してません…。
> catch (Exception... とか平気で書く人?
どっからそーゆー話が出てくるんだ?
Error は APIリファレンスで
> Error は Throwable のサブクラスで、通常のアプリケーションであれば
> キャッチすべきではない重大な問題を示します。そうしたエラーの大部分は
> 異常な状態です。
と書かれているが、RuntimeException に関しては
> RuntimeException は、Java 仮想マシンの通常の処理で
> スローすることができる各種の例外のスーパークラスです。
>
> メソッドの実行中にスローされるがキャッチされない
> RuntimeException のサブクラスについては、
> メソッドの throws 節でそれらを宣言する必要はありません。
としか書かれていない。
微妙に楽しいなこういう話も。
>>945 > NullReferenceException extends Exception を導入しろとでも?
> 素直に NullPointerException 使った方がマシ。
これはRuntimeExceptionのサブクラスなら何でもいいけど
NullPointerExceptionでないもの、というつもりで書いた。
> > ぬるぽ起こしてバグなんだか引数チェックなんだか、スタックトレース
> > 凝視しないとわからんなんてのは最悪じゃないかね。
> null に対して操作を行った際に投げられる NullPointerException よりも、
> 引数チェックして NullPointerException 投げた方が原因の特定はしやすい。
> (特にコンストラクタとかでは)
それは使用側でもソースが見れることを前提にしている部分が
あるよね。まーメッセージで認識はできるだろうからこれに
ついては一応納得。
ただNullPointerExceptionの性質を考えるとやはり別例外を
定義して使うべきと俺は思う。
ランタイム例外1個定義するくらいなんでもないじゃん。
>>948 > ただNullPointerExceptionの性質を考えるとやはり別例外を
> 定義して使うべきと俺は思う。
NullPointerException はどーゆー性質だと考えてるんだ?
っつーか、APIリファレンスの NullPointerException のところに
> null オブジェクトの不正な使用を示す場合は、
> このクラスのインスタンスをアプリケーション側で
> スローするようにしてください。
って書いてあるし…
>>947 そんなわかりきったこと持ち出されても困るんだが。
RuntimeExceptionは特別な理由がない限りcatchすべきでは
ないよ。
catchする例としては
前に出てきてるNumberFormatExceptionの例とか、
例えプログラムのバグが発生しても処理を継続しなければ
ならないサービススレッドの上流ブロックとか、ループ内の
ブロックだとか。
それ以外は未補足例外ハンドラとかに任せてしまうのが
普通、と俺は思ってる。
>>948 > これはRuntimeExceptionのサブクラスなら何でもいいけど
> NullPointerExceptionでないもの、というつもりで書いた。
おいおい、言ってる事が変わってるぞ。
> > 基本的にRuntimeExceptionはシステム(プログラム)の
> > バグによってのみしか起こりえない、という位の認識を
> > しておくべき。なのでチェック例外といっしょくたにcatchしたり、
> > 無闇にthrowしてはいけません。
それとも
>>933 とは別人か?
>>949 >> ただNullPointerExceptionの性質を考えるとやはり別例外を
>> 定義して使うべきと俺は思う。
>NullPointerException はどーゆー性質だと考えてるんだ?
だからnull参照に対する操作を行うとおきるもの、って…。
Javaの言語仕様として起こるのとnewで起こすのは違うでしょ。
>>951 その前には
| ランタイム例外を投げるにしても、ちゃんと代わりの
| ものを定義して使う方がわかりやすいと思う。
って書いただけだよ。いらんツッコミやめておくれ。
>>950 > RuntimeExceptionは特別な理由がない限りcatchすべきでは
> ないよ。
とは APIリファレンスには書いてないね、って話。
で、Error は特別な理由が無い限り catch すべきでない、と書かれてるので
RuntimeException と Error を混同してるのかと考えただけ。
>>952 > だからnull参照に対する操作を行うとおきるもの、って…。
NullPointerException の発生原因が null 参照に対する操作だけである、
という前提だと標準API 使うだけでも不都合起きないか?
>>953 > > > > ランタイム例外を投げるにしても、ちゃんと代わりの
> > > > ものを定義して使う方がわかりやすいと思う。
> > > NullReferenceException extends Exception を導入しろとでも?
> > > 素直に NullPointerException 使った方がマシ。
> > これはRuntimeExceptionのサブクラスなら何でもいいけど
> > NullPointerExceptionでないもの、というつもりで書いた。
> おいおい、言ってる事が変わってるぞ。
>
> > > 基本的にRuntimeExceptionはシステム(プログラム)の
> > > バグによってのみしか起こりえない、という位の認識を
> > > しておくべき。なのでチェック例外といっしょくたにcatchしたり、
> > > 無闇にthrowしてはいけません。
って事は、やっぱり
> > > NullReferenceException extends Exception を導入しろとでも?
を導入しろって事か?
それにしては、これへのレスが
> > これはRuntimeExceptionのサブクラスなら何でもいいけど
> > NullPointerExceptionでないもの、というつもりで書いた。
では意味が通じないような…
>>956 ごめん、全然わからん。
ランタイム例外を投げるならぬるぽじゃないものにしたほうが
いいんじゃないかって書いただけなんだが。
class MyRuntimeException extends RuntimeException
'Exception' は 'RuntimeException' のサブクラスだが、
'Exception' のサブクラスを定義してもそれはランタイム
例外じゃないんだが。
>>957 自己フォロー・・・
> 'Exception' は 'RuntimeException' のサブクラスだが、
逆だw
○ 'RuntimeException' は 'Exception' のサブクラスだが、
null にアクセスしたときに NullPointerException が発生するのは 0 で割り算したときに ArithmeticException が発生するのと同様に JVM が (言ってみれば) 気を利かせて発生させてくれているに過ぎない。 プログラム上エラーにすべきことがわかっているならば null にアクセスする前に プログラマが明示的に NullPointerException を発生させるべきである。
>>957 > > > 基本的にRuntimeExceptionはシステム(プログラム)の
> > > バグによってのみしか起こりえない、という位の認識を
> > > しておくべき。なのでチェック例外といっしょくたにcatchしたり、
> > > 無闇にthrowしてはいけません。
を前提にすると、throw new NullPointerException() の代わりに
> > > NullReferenceException extends Exception を導入しろとでも?
は導入すべきと考えるのか、考えないのか?
(もちろん俺は導入しないほうが良いと考える)
> ランタイム例外を投げるならぬるぽじゃないものにしたほうが
> いいんじゃないかって書いただけなんだが。
根拠が無いので却下。っつーか
if(obj==null) throw new NullPointerException();
がダメってんなら標準API 使えないし。
というわけで、
> > > 素直に NullPointerException 使った方がマシ。
という結論にいたるわけ。
>>959 > 0 で割り算したときに ArithmeticException が発生するのと同様に
float とか double だと 0除算で ArithmeticException 投げないので注意。
生の java.lang.NullPointerException を投げると、 そのメッセージを他の誰かが見たときに、 ・その例外が発生することをプログラマが知らなかった == バグ なのか、 ・あえてその例外を発生させてくれている == 親切 なのか が、わかりにくくなる。(ソース見りゃわかるけど) なので私は、メソッドが引数として null を受け付けないことを表明するために そのアプリなり、ライブラリなりの名前を付けた例外を throw するようにしてます。 アプリ/ライブラリ名が foo の場合の例: public void func(Object hoge) { if (hoge == null) throw new fooNullPointerException(); /* これ以降は確実に hoge は null ではない */ /* hoge を使った何かの処理・・・ */ } 毎回、例外オブジェクトを new するかどうかはまた別な話として。
>>960 > > > > NullReferenceException extends Exception を導入しろとでも?
> は導入すべきと考えるのか、考えないのか?
ランタイム例外を投げるとしても、って前提で始めた話に対するレスとして
その例を引き合いに出すのは明らかにおかしいが。
その質問に対してのみ答えるならば(nullチェックを前提に考えるとわかりにくいが)
引数がnullで渡ることが正常パターンとして予測されるならチェック例外を
投げるように定義しておくのもありでしょ。例えばお粗末だがこんなのとかさ。
public int toInt(String value) throws ConvertException {
if (value == null) throw new ConvertException("value is null.");
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
throw new ConvertException("value is not numeric.", e);
}
}
nullかもしれないしNumericでないかもしれない文字列を
渡すことを許し、チェック例外で変換失敗時の処理を強制する、と。
> 根拠が無いので却下。っつーか
> if(obj==null) throw new NullPointerException();
> がダメってんなら標準API 使えないし。
んで俺の意見は標準APIと、どこぞの誰が書いたかわからんもの
(自分が書いたものも含む)とでは信頼度が違うってこと。
そもそも、あえてぬるぽにしなければならない理由も全くないわけだ。
例外は原因が明確であったほうがいい。
NullPointerExceptionだと原因が明確じゃない。
標準APIでNullPointerExceptionが出たら、普通は自分のコードを
疑うが、標準API以外だとどちらを疑えばいいか判断しにくい。
Exceptionのメッセージでわかるだろと言われればそれまでだ…。
もう寝ます。
質問です・・・。 あるデータの下位12bitだけを取り出すためにマスクをしたいのですが、 やり方がよくわかりません。 b=(b&0xFFF); このような形でやってみてますができないので、どなたか知ってる方教 えてもらえませんでしょうか?
>>962 例外は毎回newしないと駄目ですよ…。
>>966 エラーは出ないのですが、実際ほしい値と違うものが出てるようなのです。
データが2byteづつならんでいるファイルから1byteづつ取り出して、その
後にくっつけてそれの下位12bitだけを取り出したいのですが、
a[0]=bytearray[i+1]; a[1]=bytearray[i];
a[0]=(a[0])&(a[1]);
b=a[0] & 0xFFF;
これでbを出力という感じでやっています。
>>968 今、エンディアンというものを調べて自分なりに解釈して
以下のように変えてみたのですが、すべて0になって出力さ
れてしまいました。
b=(byte)(((a[0]<<8)&((a[1])&0xFF)) & 0xFFF);
訂正してもらえれば幸いです。同時にもう少し試します。
>>969 ここではエンディアンは関係なかったかも
byte a[0] = bytearray[i+1], a[1] = bytearray[i];
short b = (short)a[0] << 8 & a[1] & 0xFFF;
で出ないかな?
多分a[0]をシフトしてなかったことと,シフトする前にshortにキャストしてなかったのが原因
足しあわせるのはorだよ。 ((short)a[0] << 8 | a[1]) & 0xFFF;
>>963 > ランタイム例外を投げるとしても、って前提で始めた話に対するレスとして
> その例を引き合いに出すのは明らかにおかしいが。
「ランタイム例外を投げるとしても〜」なら、
「チェック例外を投げろって事か?」という意味の反応は当然。
> 引数がnullで渡ることが正常パターンとして予測されるなら
普通は正常パターンには例外使うなって事になると思うが。
> そもそも、あえてぬるぽにしなければならない理由も全くないわけだ。
APIリファレンスに不正な null の使用に対しては NullPointerException 投げろと書いてある。
>>968 >>970 >>971 ありがとうございました。何とかデータを取り出せた模様です。
しかし、数値があわないのでもう少し考えて見ます。
エンディアンについてももう少し調べてみます。
>>974 エンディアンの問題ならインデックスの0と1をひっくり返すだけで直るよ
>>974 ((bytearray[i+1] & 0xF) << 8 ) | (bytearray[i] & 0xFF);
>>970 > シフトする前にshortにキャストしてなかったのが原因
関係ない。
byte の値でもシフト演算に際して単項数値昇格で int に格上げされる。
>>977 じゃあ逆にはみ出た部分を無視して欲しい場合にキャストが必要になるのな
>>976-978 ありがとうございます。本当にたすかります。
>>976 >>((bytearray[i+1] & 0xF) << 8 ) | (bytearray[i] & 0xFF);
でいきました!これでようやく作業が始められます。
どうもありがとうございました。がんばります。
>>960 > ・その例外が発生することをプログラマが知らなかった == バグ なのか、
> ・あえてその例外を発生させてくれている == 親切 なのか
fooNullPointerException使うにしろ使わないにしろ、
前者の場合はソース見なきゃ原因(不正な null の入力があったのか、
初期化を忘れたのか)がわからんし、それほどライブラリ作成者を疑うなら、
後者の場合でも間違って例外投げてる可能性も考えなきゃいかんし。
> アプリ/ライブラリ名が foo の場合の例:
>
> public void func(Object hoge) {
> if (hoge == null) throw new fooNullPointerException();
ってのはなんだかなぁ…
それに、fooNullPointerException は RuntimeException か Error のサブクラスでしかありえないが、
常識的に Error ではないと考えると RuntimeException のサブクラスだよな。
> > 基本的にRuntimeExceptionはシステム(プログラム)の
> > バグによってのみしか起こりえない、という位の認識を
> > しておくべき。なのでチェック例外といっしょくたにcatchしたり、
> > 無闇にthrowしてはいけません。
に反してないのかね? ひょっとして、「RuntimeException」 はダメだが、
「RuntimeExceptionのサブクラス」は無闇に throw しても良いのか?
> 毎回、例外オブジェクトを new するかどうかはまた別な話として。
小細工してまで例外オブジェクトの生成コストを削減ですか…
そんなに例外投げまくるよーなプログラム書いてるのかな?
>>962 >生の java.lang.NullPointerException を投げると、
>そのメッセージを他の誰かが見たときに、
>
> ・その例外が発生することをプログラマが知らなかった == バグ なのか、
> ・あえてその例外を発生させてくれている == 親切 なのか
>
>が、わかりにくくなる。(ソース見りゃわかるけど)
バカだなあ。
NullPointerExceptionにはメッセージ (String) を引数にとるコンストラクタもある。
それを使えばいいだけのこと。
あえてfooNullPointerExceptionなんぞを作る必要はない。
>>973 揚げ足取りばかりしてきますね…。
>>980 > > アプリ/ライブラリ名が foo の場合の例:
> >
> > public void func(Object hoge) {
> > if (hoge == null) throw new fooNullPointerException();
> ってのはなんだかなぁ…
>
> それに、fooNullPointerException は RuntimeException か Error のサブクラスでしかありえないが、
> 常識的に Error ではないと考えると RuntimeException のサブクラスだよな。
> > > 基本的にRuntimeExceptionはシステム(プログラム)の
> > > バグによってのみしか起こりえない、という位の認識を
> > > しておくべき。なのでチェック例外といっしょくたにcatchしたり、
> > > 無闇にthrowしてはいけません。
> に反してないのかね? ひょっとして、「RuntimeException」 はダメだが、
> 「RuntimeExceptionのサブクラス」は無闇に throw しても良いのか?
>>960 は俺じゃないけど
関数の仕様として引数nullが許されないのに、null渡すプログラム
書いたらそれはバグだろ。
ランタイム例外は誰もcatchしてる保証がないわけだしcatchして
しまったらバグをトラップしてしまっている可能性を憂慮しなければ
ならないから「無闇に」catch/throwするなって書いたの。
こういう議論は誰かが納得することはまずないから
>>938-940 教えて頂いたページで、無事ダウンロードできそうです。
遅くなりましたが、レス有難うございます。
JBoss3.2.1+Tomcat4.1.24 で、EJB の実験しています。 クライアントアプリケーションは、Eclipse からのデバッグ、コマンドラインからの実行どちらとも巧くいっているのですが、 Servlet (JSP) から呼ぶと、getHome() したあとのリモートメソッド呼び出しで Invalid Invocation になってしまい、困っています。 デバッガでトレースしてみると、Class の(つまり Object の) equals が false になっているようで、 Method インスタンスの同定に障害がおきているようです。 (どういう文脈で行われているかよく分からないのでうまく説明できません・・・) Class オブジェクトが、パッケージ・クラス名は同じですが、コンテナ上で違うインスタンスとして存在しているようです。 デプロイしたパッケージと、JSP が拾ってくるパッケージは別のところに置いてあるのですが、関係あるでしょうか? (それぞれ server\all\deploy と WEB-INF/lib ) もしそうなら Webコンテナのあるサーバと EJB コンテナのあるサーバが別個のとき、 巧くいかないようにも思うのですが・・・
986 :
デフォルトの名無しさん :03/10/09 12:53
外部からの多人数作業をするときに、変更されたくない変数をprivateで外部クラス にすることがあるという前提で作業をしています。 Human.htmlからの各入力データ(名前・年齢・体重)をサーブレット(Human3)から 外部クラスHumanに代入し、セッションにArrayListとしてどんどん追加していきます。 そして現在セッション内にある各データをHtml上で出力したいのですが うまくいかずに悶絶しています。
外部クラスHumData.java public class HumData { //各入力データ用変数 private String name; private int age; private double weight; //name変数の代入値と戻り値 public void setName(String name){ this.name=name; } public String getName(int index) { return name; } //age変数の代入値と戻り値 public void setAge(int age) { this.age=age; } public int getAge(int index) { return age; } //weight(名前)変数の代入値と戻り値 public void setWeight(double weight) { this.weight=weight; } public double getWeight(int index) { return weight; } }
Htmlからの入力データをセッションへArrayList追加 Human3.java import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Human3 extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) //セッションの開始or新規作成 HttpSession session = request.getSession(); //属性の取得(属性 data ) ArrayList al=(ArrayList)session.getAttribute("data"); if(al == null) { al=new ArrayList(); }
//Htmlより年齢入力テキストnaem="ag"をint型にキャスト(変換) String str=request.getParameter("ag"); int a=Integer.parseInt(str); //Htmlより体重入力テキストnaem="wei"をdoble型にキャスト(変換) String str2=request.getParameter("wei"); double b=Double.parseDouble(str2); //HumanDataのインスタンス化と各入力データの代入 HumData hd=new HumData(); hd.setName(request.getParameter("nam")); hd.setAge(a); hd.setWeight(b); //ArrayListの各入力データ)をまとめて追加 al.add(hd); //セッションへ追加 session.setAttribute("data", al);
//ブラウザ表示 response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); out.println("<html><head>"); out.println("<title>皆々様のデータ</title>"); out.println("</head><body>"); out.println("<table border='1'>"); out.println("<tr style='background:#00ccff'>"); out.println("<th>No</th><th>名前</th><th>年齢</th><th>体重</th>"); out.println("</tr>"); //セッション内容の表示 for(int i=0; i<al.size(); i++) { out.println("<tr>"); out.println("<td>" + i + "</td>"); out.println("<td>" + hd.getName(i) + "</td>"); out.println("<td>" + hd.getAge(i) + "</td>"); out.println("<td>" + hd.getWeight(i) + "</td>"); out.println("</tr>"); } out.println("</table>"); out.println("<tr>"); out.println("<td><a href='/soesoe3/Human.html'>入力画面へ戻る</a></td>"); out.println("</tr>"); out.println("</body></html>"); } }
このままだと見てのとおり最後に入ったデータがそのままきてしまいます。 (来るようになってます) 現状ではArrayListの中身をどのようにして順に引き出したらいいか わかりません。 よろしくお願いいたします。
>>983 > こういう議論は誰かが納得することはまずないから
自分が馬鹿だったことを納得し始めています。
fooNullPointerException を自作するくらいなら、
あらかじめ用意されている、生の NullPointerException を使って
そのコンストラクタに必要なだけメッセージを渡すべきだ、と。
>>980 >> 毎回、例外オブジェクトを new するかどうかはまた別な話として。
>小細工してまで例外オブジェクトの生成コストを削減ですか…
>そんなに例外投げまくるよーなプログラム書いてるのかな?
はい。書いてました。
小細工はしてなかったけれど、激しく例外投げまくるプログラムを
書いていました。それで、例外オブジェクトって再利用すべきなの
かもしれない、とか思ってました。
それが何故正しくないのか、もっと勉強します。
994 :
デフォルトの名無しさん :03/10/09 16:04
では、とりあえず1000行くまえに、たててきます。
今回のトリビアも興味深いものでした。 これからもよろしくお願いします。 埋め。
a
(д゚≡゚д)
キタ━━━━(゚∀゚)━━━━!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。