【初心者】Java質問・相談スレッド108【大歓迎】
1 :
デフォルトの名無しさん :
2007/11/07(水) 22:39:09 プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド107【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1192666106/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
次スレは
>>980 あたりで。
UMLのひし形と矢印がついている線はなんですか?
集約と継承?
awpとswingどちらがおすすめですか?
awtか?
おぅぇっぷ と読みます。
Abstract Window (プ
9 :
デフォルトの名無しさん :2007/11/08(木) 14:40:32
Javaのお勧め本を教えてください><; なんのジャンルでもいいです><; 色々試すのがすきなんです><
public static void main(String args[])throws Exception{ String str; BufferedReader br=new BufferedReader(new FileReader("./input.txt")); BufferedWriter bw=new BufferedWriter(new FileWriter("./output.txt")); while((str= br.readLine())!=null){ int a=0; while(str.length()>a){ bw.write(str.charAt(a++)+"\n"); } } bw.close(); br.close(); }
11 :
10 :2007/11/08(木) 15:45:28
↑でinput.txtは青空文庫の小説が入っているテキストファイルで、 それを一文字ずつバラバラにして、一行に一文字だけ書く形式にしてoutput.txtに出力しています。 ここからoutput.txtに出力されたものをソートして同じものを一箇所に固めて、 そこから何回その文字が使われたかお数えて大きい順に表示するプログラムを作りたいのですが、特にソート部分どうするべきでしょうか?
ArrayList<String> list = new ArrayList<String>(); BufferedReader r = new BufferedReader(new FileReader("output.txt")); String s; while ((s = r.readLine()) != null) { list.add(s); } Collections.sort(list);
13 :
デフォルトの名無しさん :2007/11/08(木) 16:43:40
buce eckel javaプログラミングマスターコース上下巻 この辺りがいいんじゃない ケチった分だけ後で跳ね返ってくる
frameを使い、HTMLのように、リンクの上にマウスが来た場合にマウスのカーソルを 変更しようとしているのですが、この場合、マウスモーションリスナーのe.getを使い、 if-else文である領域に来たら、変えなくてはいけないのでしょうか? また、frameに文章を書く場合、g.drawstring以外に書く方法はないでしょうか? この場合、マウスカーソルが文章上にある時のカーソルにならないので、他の方法があれば その方法を用いたいと考えています。 ご回答、よろしくお願いします。
15 :
デフォルトの名無しさん :2007/11/08(木) 17:16:16
領域に当たるオブジェクトにマウスリスナーを仕掛けとけば良いでしょ
drawString() べた書きで文字書いてるなら、マウスの位置から該当領域を割り出してカーソル変える処理が必要。
frame に直接書かずに Label を置いて、Label にカーソルを設定すればいいんじゃない?
18 :
デフォルトの名無しさん :2007/11/08(木) 18:46:55
俺は、なんかJava入門とかそんな本やって会社に就職したんだけど、 これといって作れるプログラムなんてなかった。そこの会社の人に課題で 社員管理プログラムをつくれっていわれたんだけど、そんときに 一緒に与えてもらった本が「Java工作プログラミング(ピアソンエデュケーション)」 今はもう売っていないだろうけど、ああいう本が初心者にはいいとおもう。
WRITING SOLID CODE Java じゃないし CODE COMPLETE に統合されちまったが。
質問です それぞれのクラスのstatic初期化子が、どのような順番で呼び出されるかは不定なのでしょうか? static初期化子で、他のクラスのstaticな変数などを参照するのは危険な行為でしょうか? C++では危険なのでやってはいけなかったと記憶しています
>>20 スタティックイニシャライザはクラスがロードされるタイミングで動きます。
クラスがロードされるタイミングは不確定ですが、少なくともクラス A からクラス B の
値を参照する直前には B はロードされます。
A と B のスタティックイニシャライザ内で互いの static 値を参照しあっていて、どちらが
先に動くかで動きが変わることは考えられます。つまりそんな設計すんなと。
他クラスのstatic変数の参照は全く問題ない。 Javaは動的にロードするから。
>>21 同じクラス内の中のstaticは、ソースで書いた順ということがわかりました。ありがとうございます
>>22-23 流石に「参照しあう」のは無理ですし、馬鹿らしいですね
AからBを参照する場合は、Bが先に動的ロードされるわけですか。なるほど
C++の「非ローカルなstatic変数の初期化」とは違い、かなり安全性が高いですね
ロード順序で挙動が変わるサンプル class A{ public static final boolean flag; static{ System.out.println("B is " + B.flag); flag = true; } public static void main(String[] args){} } class B{ public static final boolean flag; static{ System.out.println("A is " + A.flag); flag = true; } public static void main(String[] args){} } 実行結果 C:\Documents and Settings\ore>java A A is false B is true C:\Documents and Settings\ore>java B B is false A is true
スタティックイニシャライザの話はシリアライズが絡むとちょっとややこしい
>>24 違う違う。
A がロード済みで、A の処理を実行している途中で B への参照が現れた場合、B が
まだロードされていなければそこで B をロードする。まぁクラスローダーの実装にも
よりけりだが、少なくとも参照直前までに B がロードされていることは保障されている。
>>27 復唱の仕方が悪かったようです。理解してます。ありがとうございます
static
{
a = 5;
b = B.z; // ここで、Bがまだ未初期化ならBがロードされる
}
ってわけですよね。
他スレでちょっと話題になったんで質問。 int a, b; ... a+=b; というコードがJITでネイティブコードに変換された場合、 レジスタ同士の加算が機械語の1命令で実行されるケースって現実に存在しますか?
30 :
デフォルトの名無しさん :2007/11/08(木) 20:28:47
データベース接続を返したりするユーティリティクラスのメソッドがあるんですが、 全部staticで作りました。ぐぐったらスレッドセーフとか出てきたけど、スレッドなんて関係あるんですか?
>>30 スレッドで同時に接続命令が複数呼ばれた時も平気なように作った?
>>30 static 宣言された変数使ってなければ関係はない。
ユーティリティクラスであれば自動的にスレッドセーフ
34 :
30 :2007/11/08(木) 20:37:17
>>31 どうもありがとう。。そんなややこしいことしなきゃいけなかったんですね。
なんだかよくわからず、普通に接続してそのオブジェクトを返すしか
かいてないです。。明日、先輩によく相談してみます。
Javaでは、switchはジャンプテーブルとして展開されますか? while(すっごいたくさん) { switch() { } }//while. こんな感じのプログラムがありまして、switchをとにかく高速化したいのです
36 :
30 :2007/11/08(木) 20:39:40
>>32 >>33 どうもありがとうございます。
static宣言の変数は作っていません。というより、グローバルスコープの
変数はないです。どれも各々メソッド内で完結する変数ばかりなので、安心です。
お二方にそうおっしゃられて安心しました。上司には、「別に難しい事考えずに
接続オブジェクトを返すプログラムを作ってくれればいい」といわれたので
ごく単純に作ったんです。安心しました。ありがとうございました。
>>36 理屈もわからないのに安心しててどうするよ
技術者として、ありようがダメだな
38 :
デフォルトの名無しさん :2007/11/08(木) 20:45:56
>9 試すだけならコアジャバ奨める。メソッドの意味とか理解したい場合は糞本
>>35 Java の switch はジャンプテーブル作るよ。
意味無く switch 命令に整数しか指定できないないようにはしない。
>>35 たしか0〜5はジャンプテーブル展開だった希ガス
仮想マシン仕様を見てみ
>>39-40 ありがとうございます
ただGoogle先生に「Java switch ジャンプテーブル」でぐぐってもなかなかいいところが見つかりません
switchはこんな感じになるのでしょうか?
switch(a)
{
case 5: print(5); break:;
case 6: print(6); break:;
case 7: print(7); break:;
}
↑こういうJavaのswitchは↓こうなる?
if (5 <= a && a <= 7)
{
Address pointer[] = { 5へのアドレス, 6へのアドレス, 7へのアドレス};
VMJump(pointer[a - 5]);
}
概念的にですが、こんな感じでしょうか?
・抜け番号があったらどうなるのか
・0からの連番のほうがパフォーマンスがよくなるのか
とかが気になるところです
(興味があるんでしつこく突っ込んでます。すいません)
Javaは動的再コンパイルするから、 サーバ用途なら展開のされ方も変わってきそう
む、コンパイルの段階でテーブル化ないのですか 携帯Javaなのであまり動的再コンパイルとか期待できません
>>12 ありがとうございます、おかげさまで、何とかあと少しで
自分の求める処理までいけそうです。
本当に助かりました!
>>15 ありがとうございます。
Panelを用いてマウスリスナーを設けることにしました。
>>16 >>17 ありがとうございます。
マウス位置の該当領域を持ってくるのと、Labelを置くのとでは、どちらの方が表示などに負担が少ないでしょうか?
>>47 ありがとうございます
すばらしい情報です
イベントってEventObject、EventListenerを継承しないとダメなんでしょうか?
北斗神拳を継承するにはどうしたらいいですか?
お前はもう…………実装している…
52 :
デフォルトの名無しさん :2007/11/08(木) 23:21:52
質問です。下のアプレットを実行するとテキストフィールドの2つ目が どっかに行っちゃって1つしか表示されません。どうしたら2つとも表示できるのでしょうか。 お願いします。 import java.applet.*; import java.awt.*; /*<applet code="applet0.class" width="400" height="300"> </applet>*/ public class applet0 extends Applet{ public void init(){ Label label = new Label("ラベル"); add(label); Button button = new Button("ボタン"); add(button); Choice choice = new Choice(); choice.addItem("チョイス1"); choice.addItem("チョイス2"); add(choice); TextField textField1,textField2; textField1 = new TextField("テキスト1"); textField2 = new TextField("テキスト2"); add(textField1,textField2); this.setLayout( new GridLayout(10,1)); }}
>>52 >add(textField1,textField2);
Appletはpack()しなくていいの?
ないし
56 :
デフォルトの名無しさん :2007/11/09(金) 00:36:17
52です。まだ分からないのでお願いします。 すいません。
add(textField1); add(textField2);
58 :
デフォルトの名無しさん :2007/11/09(金) 00:41:16
59 :
デフォルトの名無しさん :2007/11/09(金) 00:43:30
やっと分かりました。 本当にありがとうございました。
20 : barr 3 : foob 1 : hoge 4 : piyo こういうファイルをソートする時に文字列としてソートしないで、 先頭の数値基準でソートするのって、何か良いやり方ってありますか?orz つまり結果が、 1 : hoge 20 : barr 3 : foob 4 : piyo じゃなくて、 1 : hoge 3 : foob 4 : piyo 20 : barr ってなるようにです。
Comparatorで並びを定義すればOK
たぶんこんな感じでいいんじゃない Collections.sort(list, new Comparator<String>() { public int compare(String a, String b) { int i = Integer.parseInt(a.substring(0, a.indexOf(' '))); int j = Integer.parseInt(b.substring(0, b.indexOf(' '))); return i < j ? -1 : i > j ? 1 : 0; } });
>>61 ご助言ありがとうございます。
ちょっと今日はこの問題に苦戦しすぎて死にそうなので、
明日起きたらComparatorを調べてやってみます。
寝る前に明日の取っ掛かりが出来て良かったです、本当にありがとう><
>>62 これは…!ありがとうございます!><
こんな時間に申し訳ないです、明日の参考にさせて頂きます。
これが出来れば、処理が全部完成するので本当に感謝です!
b^e mod n を計算するメソッドがかけません。誰かお解かりでしたらお助けください。 modpower(b, e, n)
double modpower(double b, double e, double n) { return Math.pow(b, e) % n; } なんでこんなのが書けないんだ
以下のソースでfinish()が実行される時はsetProblem(x, y)を 実行したくないのですが、どういう書き方をすればいいのでしょうか? if (key == answer) { correctAnswer(); x++; if (x == arrayX.length) { x = 0; y++; if (y == arrayY.length) { finish(); } } setProblem(x, y); } else { wrongAnswer(); }
スペースを10個といった表現はどうやればよいでしょうか? VBの場合 Space(10) で良いのですがJavaの場合どのようになりますでしょうか?
>>67 finish の後に return ではだめなん?
じゃ無ければ、 カルノー図に書き出して、
条件の組み合わせを確認して、再構成するとか。
>>71 気に入らんか・・・
シンプルでいいと思うんだが
じゃあ↓のようなメソッドでも作って space(10) とやってくれ
String space(int n) {
char[] c = new char[n];
Arrays.fill(c, ' ');
return new String(c);
}
Space(10)の方がださいことに気付こう
>>68 まず InfinityCharacterReaderFactory インターフェイスを作ってだな(ry
おまいらそろそろ 5.0 の機能くらい覚えろよ… String.format("%10s", " ")
JAVAでmp3の音楽を読み込ませて、サビ、イントロ、Aメロ、Bメロみたいに、音楽の構成を出力することってできますか? できそうなら、だいたいどういうことしたらできるか教えてください。 ちなみにJAVAで音楽の解析ってどんなことができますか?
> JAVAでmp3の音楽を読み込ませて、サビ、イントロ、Aメロ、Bメロみたいに、音楽の構成を出力することってできますか? できません。
78 :
デフォルトの名無しさん :2007/11/09(金) 14:14:24
キャッシュ(笑)
キャッシュ機能追加するならメソッド化すれば良いだけじゃん。 想像力足りないよ君。
81 :
838 :2007/11/09(金) 14:38:58
スペースって\sじゃねえん?
それは正規表現
83 :
デフォルトの名無しさん :2007/11/09(金) 14:45:13
>>79 ,80
jvmが勝手にキャッシュするんだよ。flyweightも知らんのか。
>>83 Java のは文字列プール。キャッシュとは言わない。
85 :
デフォルトの名無しさん :2007/11/09(金) 14:50:43
flyweight と言いたかっただけとちゃうか。 つか勝手にじゃなくてそれ仮想マシンの仕様な。
>>83 どこでその生成コストを回収するんだよw
大体、それを使うために、スペースキー10回を毎回入力するのかね
88 :
デフォルトの名無しさん :2007/11/09(金) 14:56:32
>>87 おまえはいいよ。まったく分かってなさそう。
まあまあ、落ち着け そもそも指定個数のスペースの文字列が必要になるって時点で 全体が糞設計確定なんだからさ
>大体、それを使うために、スペースキー10回を毎回入力するのかね ダブルクォーテーション2個+スペースキー10回連打するのと "Space(10)" の9文字を入力するのって そんなに手間違わないと思うけどな
91 :
デフォルトの名無しさん :2007/11/09(金) 14:58:30
すみません。JSP・サーブレットを勉強し始めてるものです。 本を一冊やっているんですが、 JSPで<%@page%>タグの中でencoding=Windows-31Jと指定しています。 で、フォームなんかの要素を受け取る際、setCharacterEncoding("Windows-31J")で デコードしなくてはいけないと書いてあります。 相手のOSがWindowsならわかるんですが、Linuxだったりした場合も 送信されてくるフォームはWindows-31Jで送られてくるんですか? 自分のWebアプリケーションのサイトがWindows-31Jで指定して作ってある場合は 相手のコンピュータもOS問わずWindows-31Jでフォームのデータを送信してくるという ことなんですか?
>>91 相手の OS が Win だろうが MacOS だろうが Linux だろうが、そのページのエンコーディングで
送信してきます。Shift_JIS なら Shift_JIS で、EUC-JP なら EUC-JP で。
ただし Windows-31J は IANA が規定していない Java 独自のエンコーディングラベルなので、
どのブラウザもそれが Shift_JIS の事だとは知らないため誤認識する可能性があります。しかし
JSP の page ディレクティブに Shift_JIS と書くと 〜 などが文字化けするという矛盾があります。
従って、<%@ page %> ディレクティブでは Windows-31J を指定し、HTML の <meta> タグで Shift_JIS
を示してやるのが正しい方法です。ここまできちんと書いてない解説書や識者は糞なので捨ててください。
<%@ page language="java" contentType="text/html; charset=Windows-31J" %>
…
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
HttpRequestのgetCharacterEncodingがnullじゃなければ、 それでデコードすればいんじゃね?
94 :
91 :2007/11/09(金) 15:12:04
>>92 さんどうもありがとうございます。とっても詳しく解説していただき
疑念が全部解けました。おっしゃるとおり、JSPタグとHTMLタグのmetaタグの両方で
指定しようとおもいます。本当にありがとうございました。
>>93 さんありがとうございます。getCharacterEncodingって言うメソッドもあるんですね。
Javaは便利ですね。それもやってみたいとおもいます。
お二方どうもありがとうございました。とても参考になりました。
95 :
デフォルトの名無しさん :2007/11/09(金) 16:24:47
すみません。初心者でスレ違いかもしれませんがPHPとJAVAを連携させることは可能でしょうか? オープンソースのopenPNEの中でJAVAで記述した人工知能を動かして見たいと考えています。 こうしたことは技術上可能なのでしょうか。ご教授お願いいたします。
>>95 JNI、ソケットで通信、コマンド起動
好きなの選べ。
97 :
デフォルトの名無しさん :2007/11/09(金) 16:30:02
人工知能ライブラリも簡単なものならあるね ファジーも入っててお得だ 組み合わせれば結構有用なものが作れた ぜひおためしあれ
98 :
デフォルトの名無しさん :2007/11/09(金) 16:38:48
>>92 Windows-31JはIANA登録名だぞ。
>>91 なので、ぜんぶWindows-31JにしてしまってOK。
100 :
デフォルトの名無しさん :2007/11/09(金) 16:50:45
>>92 IANAの登録はCharsetクラスのドキュメントからたどれるよ。
>>99 ありゃ、本当だ orz
MS932 や Cp943C と同じかと思ってた。
画像を動かすときに再描画せず(痕が残るように)にする方法はありませんか?
>>102 update() をオーバーライドする。
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
…
}
104 :
デフォルトの名無しさん :2007/11/09(金) 16:59:09
どこまであとを残すかって話にもなるけど VectorにShapeを保存していく方法もある Zオーダーには注意した方が良いかな
Imageにペタペタ描画していけば
106 :
デフォルトの名無しさん :2007/11/09(金) 19:28:50
痕跡の再利用の必要がなければImageのほうが簡単
ファイナライザではなくデストラクタを使いたいのですが(作りたいのですが) obj = null; などの代入をひっかけて何かするということはできますでしょうか? C++でいう代入演算子のオーバーライドで、参照カウントあたり使ってやりたいなと
そんな無駄な労力使わないで、リソースの開放とかなら finally 節で確実にヤレ obj = new SomeClass(); try{ … } finally { obj.release(); }
無 理 ファイルのcloseやGraphicsのdisposeみたいに特別な解放処理をしたいの? AddRef/ReleaseRefメソッドを実装して…とかできないこともないだろうけど 使うときは普通にそれらのメソッドを呼び出すしかない
>>109 ご推察の通りです
C++狂信者なものでついデストラクタに頼りたくなってしまいました
>>108 のような、郷に入っては郷に従った方法でやることにします
D言語ならJavaやC++両方の流儀を混在させられますがね。 (普及もせん内から2系の開発に移るなど相変わらず混沌としてるけどw)
java.ioなら1.5からCloseableインタフェースが追加されたから、 匿名クラスと組み合わせて、Ruby風の処理が出来るね。 1.7のClosureで入ってくるかも知れないけど。
たしかstaticメソッドとクロージャを組み合わせて、 呼び出す側ではwith(FileReader in : makeReader()) { (処理) }みたいな形式で書けるようにするとか。
throwsがあるせいでC#みたいに全部disposeで統一できないんだな そのへんはどうするんだろう IO限定?
115 :
102 :2007/11/10(土) 00:11:15
自分がこれだ!というものに出くわしてないので
>>103 さんと
>>105 さんのを比べて使い勝手が良い方を採用してみます。
皆さんありがとうございました
116 :
デフォルトの名無しさん :2007/11/10(土) 00:31:55
Javaでメールクライアント作ろうと思うんですが、、 オープンソースを参考にしようとしているのですが、探しても見つかりません。 オープンソースで何か良いソフトはないでしょうか?
thunderbirdじゃダメなのか
118 :
デフォルトの名無しさん :2007/11/10(土) 00:45:46
空かどうかチェック そのままだろw
120 :
デフォルトの名無しさん :2007/11/10(土) 01:01:01
121 :
118 :2007/11/10(土) 01:05:04
public class Queue { private ArrayList queue = new ArrayList(); public void enqueue(String value) { queue.add(value); } public String dequeue() { String ret; if (queue.isEmpty()) { ret = null; } else { ret = (String)queue.get(0); queue.remove(0); } return ret; } public boolean isEmpty() { return queue.isEmpty(); } }
Queue インターフェースには isEmpty() が付いているからサブクラスは実装しなければならない。 なぜ Queue に isEmpty() が必要か? それはそのインターフェースを設計した奴に聞け。
なんで事足りてるとか思うんだよ 空かどうかで条件分岐したい時だってあるだろ dequeueで返ってきた値がnullかどうかチェックするよりよっぽど可視性があるし
124 :
118 :2007/11/10(土) 01:07:43
public void enqueue(String value) { queue.add(value); } ArrayListにぶっこむ public String dequeue() { String ret; if (queue.isEmpty()) { ret = null; } else { ret = (String)queue.get(0); queue.remove(0); } return ret; } retつー変数返す retにはqueueが空ならnullぶっこんで、queueに何かはいってたら その何かをぶっこむ。その何かはぶっこんだらArraylistから消しとく
125 :
118 :2007/11/10(土) 01:12:22
>>122 すいません
http://www.pc-view.net/article/55/1.html のリスト1
がいいかも
>>123 public boolean isEmpty() {
↑そもそもこれクラス?
return queue.isEmpty();
queueを空にして返す?
}
根本的に何を書いてるかが理解できない
ググって見てisEmpty()調べてもこの使い方はわからない
リスト2:QueueClient.java
を見ると空かどうかという条件分岐が必要とは思えない
なぜついてるんだああああああうあああああ
>>120 本当にenqueueとdequeueだけで事足りるかな?
この二つだけだと、取り出す操作をしない限り空かどうか分からない。
空でないときだけ先に何かをしてから取り出す、といったことはできなくなる。
isXXX()ってのは、boolean型の返り値を戻すメソッドに使われて if( isXXX() ){}のように使われる。 英語の疑問文で読んだときに正しい場合true。 この場合isEmpty()だからそのオブジェクトがあらわすコレクションが空のときtrue。 >public boolean isEmpty() { >↑そもそもこれクラス? メソッドです > return queue.isEmpty(); >queueを空にして返す? 内部的に使ってるArrayListが空であるかどうかを返す >リスト2:QueueClient.java >を見ると空かどうかという条件分岐が必要とは思えない クラスってのは一般的に使われそうなケースを考えて振る舞いを記述するものであり、 そのときに必要なものだけ適当に書けばいいってもんじゃない。 後で誰かがそのクラスを使いたくなったときに必要なはずのメソッドがないためにまともに書けない、なんてことがあっちゃ困る。
だからその Queue のインターフェース設計した奴の趣向以外の何物でもないっつってんだろーが。 記事書いた奴に聞けよ。
JMFを使ってウェブカメラから映像を入力、フレームに出力ってサンプルソースを見つけたんですが
映像を出力じゃなく、静止画を出力する場合どうしたらいいでしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25298&forum=12&2 ググリまくって一番有望な情報に辿り着けたと思いきや何を言ってるか90%くらい分かりません。
ちなみに卒業研究で使おうと思っているのですがプログラム専攻ではないので四月からJAVAを始めて未だにフレーム、リスナー系、スレッドくらいしか理解していません・・・
検索結果がほぼ分からない段階で無謀なのは分かっているのですがどうしても作りたいんです。
どなたかサンプルソースを書いてもらえないでしょうか??
「プログラムを実行したらカメラに写っている静止画をフレームに表示」のみでいいので・・・
それを自分なりに検索して理解して使いこなせるようになりたいと思います。
どなたかよろしくお願い致しますm(_ ___)m
動画からサムネール作ろうとやったことがあるが、幾らまでなら出せる?
>>129 卒業研究はキャプチャした静止画を得るプログラムを作ることなのか、得られた静止画を使うことなのか?
プログラム専攻ではないということなので、静止画を使うことだと思うのだが、
慣れないプログラミングなんかで本来の研究が時間切れになるよりも、
自腹を切るなり研究費を使うなりして出来合いのものを探して使った方がいいんじゃないか?
そういうプログラムは商用プログラムとかならありそうだが。
一生懸命探せばフリーのものとかがあるかもしれないし。
>幾らまでなら出せる? な に コ イ ツ
133 :
デフォルトの名無しさん :2007/11/10(土) 08:12:22
テラパッドでソース書いています 自分はタブ使ってづらして書くんですが 改行すると、次の行の先頭に戻ってしまいます どうやれば前行の先頭位置になりますか?
134 :
118 :2007/11/10(土) 08:24:09
>>126 ありがとうございます
たしかに今回の使用方法以外を考えると必要かも
>>127 詳しくありがとうございます
なんかわかってきました
>そのときに必要なものだけ適当に書けばいいってもんじゃない。
>後で誰かがそのクラスを使いたくなったときに必要なはずのメソッドがないために
>まともに書けない、なんてことがあっちゃ困る。
感動した。こんなこと本に書いてない。けど、これでjavaの理解が深まった気がした。
>>128 やっと私めの理解があなたに追いつきました。
たしかにその通りです。
>>133 ソフトの使い方は板違い
terapadにオートインデントの機能があるならヘルプとかを参照にして有効にする
ないのならオートインデントのあるエディタや統合開発環境に移行
テキストファイルの内容をキーマクロで整理するソフトを作りたいのですが、どなたかアドバイスお願いします。 @テキストファイルを一行ずつ読み込みLinkedListに格納。 AフレームにLinkedList内容とチェックボックスを表示。 Bキーマクロでチェックボックスon off操作。(Onで維持、Offで削除) C別キーマクロでLinkedList内の行移動指定。 C上記を反映させてテキスト出力。 BとCで詰まっていて、どうコードを書いて良いのかも分かりません……。
138 :
デフォルトの名無しさん :2007/11/10(土) 12:01:40
一行ずつチェックボックスを表示して、何かキーを押すことでon,off(そのまま/削除)の切り替えや行移動やテキスト出力をさせるということ?
>>138 はい、その通りです。
チェックボックスだけなら何とか分かるんですが……。
それにフォーカスの移動や行移動を加えるともう何が何だか……。
それなら、手軽に済ませたいならJTable使うのはどうかな? 0列目にチェックボックス表示して、2列目にその行の内容。 確かボーダーを表示しない設定がJTableにあったから、それ使って行の高さも変更したら違和感はなくなるかと。 あとはActionMap取得してそれに各Actionを設定すればok。
ぐは、1列目にその行の内容、の間違いです。
142 :
デフォルトの名無しさん :2007/11/10(土) 13:40:08
ひまだから、エディタとブラウザつくってるんだけど、ブラウザは だいぶ実用的になってきた。とりあえず、エロサイトみててもカモフラージュできる 機能をつけた。 おもしろいよ。GUIプログラミング。もうちょっとGUI関係充実してくれないかな。。Java。 SwingHackっていう本よんでるんだけど、結構役立つよ。JavaのGUIも 今が力のいれどころだとおもうんだけどな〜。これですばらしいSwing拡張機能でもできたら GUI関係もだいぶJavaが増えるような気がするんだけど。。Javaの技術者も5年前にくらべれば 格段に増えたろうし。。クライアントJavaの復権とかありそうだけどな。。 いや、質問じゃないんで聞き流してもらって結構です。ハイ。
143 :
デフォルトの名無しさん :2007/11/10(土) 13:41:55
Javaプログラマの悩みとして、GUI設計のシステムがWinAPI一色っていう ところもあるんじゃないかな。GUIまで手を広げられればだいぶ仕事の選択の幅も増えるよね。
144 :
デフォルトの名無しさん :2007/11/10(土) 13:45:35
yahooオク専用のブラウザとか面白いよね。兄ちゃんが IEにyahooオク専用の機能つけてくれとかいってきたから 「それは無理だ」っていったけど、自作ブラウザなら それも可能。兄ちゃんに聞いてみてYahooオク専用のブラウザを 作ってあげようかな。 すれ違い失礼。awt/swingすれもちゃんとあるんだね。そっちに移動します。
>>140 ありがとうございます。
テーブルを試して一度組んでみます。
146 :
デフォルトの名無しさん :2007/11/10(土) 15:11:12
int a=10, b=3, c=4; a,b,cに対してC言語で書くと printf( "%d%d%d", a, b, c ); という風に並べて表示するようにしたいのですが System.out.println( a + b + c ); とかくと17と表示されます。 暫定的に System.out.println( a +""+ b +""+ c ); としてるのですが もっとスマートなやり方ってありませんか?
System.out.printf
System.out.printf( "%d%d%d", a, b, c );
System.out.println( "" + a + b + c );
System.out.println(new StringBuilder(a).append(b).append(c));
ちょっとマジ?! マジに System.out.printf ってあるんだ?! うぉー今知ったよ!!!!
152 :
137 :2007/11/10(土) 16:04:37
JTableで複数行を表示させるやり方をお願いしたいです。。 表示させるテキストファイルに<br>が仕込んであるので、そこで改行するようにできないでしょうか。
"<html>AAA<br>BBB<br>CCC"
>>153 それをしたら枠の中で改行してしまいました。
改行に合わせて枠が広がるようにしたいんですけど、どこを弄ったらできるのか……。
>>152 JScrollPaneにJTextArea貼ったようなTableCellRenderer作るってのはダメ??
throwsはなくてもあっても見た目以外は同じというのは本当ですか?
RuntimeException/Error 系の throws 節記述については、コードや javadoc を見る人間に 明示する以外の目的はない。これを見た目以外同じと表現するのはまぁかまわないだろう。 それ以外の例外は、throws 宣言していないと throw 出来ない、サブクラスでオーバーライド する時に throw 出来る例外を勝手に追加できない、などの制約が出てくるので、見た目以外 同じというのは間違い。
処女と非処女はあそこの締まり具合以外は一緒というのは本当ですか?
157の3行目のthrow 出来る例外を勝手に追加できないとは、基底クラスがなんでも 追加できるってことですか?
>>161 スーパークラスで throws 宣言されている例外のサブクラス以外は、オーバーライド先で
throw できない (RuntimeException/Error除く)。
public class A{
public void hoge() throws IOException{…}
}
public class B extends A{
public void hoge() throws SocketException{…} // ←OK
}
public class C extends A{
public void hoge() throws SQLException{…} // ←コンパイルエラー
}
awtでlabel内の文字を改行するにはどうしたら良いですか?
>>163 べつにおかしなこと書いて無い気がするが
>>164 AWT の Label クラスはそんなことでけまへん。
編集不可/スクロール不可の設定した TextArea 使うとか、GridLayout で Label を縦に並べるとか、
カスタムで作るとかしてください。
個人の解説ページなんて大抵は俺様メモなんだかからどうでもええがな。
>>167 >モーニング娘。の中で1番目にかわいいのは後藤真紀だと思います
言語の解説サイト作ってる人ってそういうのが多い気がする
いや、亀井絵里だろ
java.util インタフェース Iterator は手動でIteratorインターフェイスをタイピングしたものと同じものですか?
Japanese OK.
>>172 >手動でIteratorインターフェイスをタイピングしたもの
って何?
interface OreOreIterator {
boolean hasNext();
Object next();
void remove();
}
みたいなやつのこと?
同じ・違うの定義が良くわからんが、 とりあえずいえる事は、まったく互換性はないよ
public static int[][][] copyArray(int[][][] copy){ int returnArray[][][] = new int[copy.length][][]; for(int k=0; k<copy.length; k++){ returnArray[k] = new int[copy[k].length][]; for(int j=0; j<copy[k].length; j++){ returnArray[k][j] = new int[copy[j].length]; for(int i=0; i<copy[k][j].length; i++){ returnArray[k][j][i] = copy[k][j][i]; } } } return returnArray; } 三次元配列をコピーするメソッドを作ったのですが、うまく動きません。 どこが悪いのか教えてください。
178 :
デフォルトの名無しさん :2007/11/10(土) 21:52:18
陰線処理にを1方向からだけでなく 2方向から行うにはどうすればいいですか?
179 :
177 :2007/11/10(土) 21:57:05
申し訳ありません、投稿してからも考えていたら解決しました。 呼び出し方の方が悪かったようです。 ありがとうございました。
前スレでキーイベントの溜まりすぎについて質問してから EventQueueについて調べていたのですが、 API仕様を読んでもいまいち理解できず、実用例も見つからず、 普段から動いている別スレッドであるという事しか分かりませんでした。 EventQueueの使い方、もしくは実用例を教えてください。
>>137 自分の場合、DefaultTableCellRendererの機能を使って、JEditorPaneに貼り付けたhtmlを表示させた。
JEditorPaneをgetPreferredSize()して、それをsetRowHeight()する。
>> Dimension d = JEditorPane.getPreferredSize();
>> JTable.setRowHeight(row, d.height);
凄腕のjava使いになるにはどうしたらいいですか?
JScrollPaneに乗せたJTextAreaに大量の文字列をAppendすると 勝手に一番下までスクロールした状態になってしまうのですが そうさせないような良い案があったら教えてください
>>182 人に聞く前に自分で解決できる男になることだ
186 :
185 :2007/11/11(日) 09:20:37
JAVA初心者です。 intとかpublicなどの用語の読み方が分らないのですが、 検索出来るサイト、あるいは専用の辞書などはあるのでしょうか。 よろしくお願い致します。
187 :
186 :2007/11/11(日) 09:21:22
すみません、いきなり誤爆してしまいました。
誤爆したと見せかけて親切な人のマジレスを期待する。 さすがゆとり技w
>>181 ありがとうございます。
早速試してみます。
ディファインで検索してみて
>>183 appendした後で元に戻せばいいんじゃない
Point p = scrollPane.getViewport().getViewPosition();
大量のappend
scrollPane.getViewport().setViewPosition(p);
publicすら読めないってどれだけゆとり馬鹿なんだよ。 中学の英語からやり直せ。
>>191 ,192
こんなものがあったのですね・・
早速試してみます、ありがとうございました
>>186 intはintegerで調べる
あとは英和辞書で調べるがよろし
197 :
デフォルトの名無しさん :2007/11/11(日) 16:42:36
あいえぬてー
198 :
デフォルトの名無しさん :2007/11/11(日) 16:45:43
Schema スシィーマ
199 :
デフォルトの名無しさん :2007/11/11(日) 16:47:07
volatile ヴォラティレ
200 :
デフォルトの名無しさん :2007/11/11(日) 16:47:58
Integer.parseInt インテガードットパルスイント
ドイツ語っぽくなってないかw
char チャー
integer:インテジャー int:イント character:キャラクター char:チャー public:パブリック
411 名前:ねぇ、名乗って[sage] 投稿日:2007/11/11(日) 17:34:13 ID:YbBOdUMW0
モームスって負の連鎖に陥ってるじゃん。
曲がよくない→売れない→良い人材が集まらない→さらに人気聚落
まさにハロカスパイラル
逆にAKBは好循環に入りつつあるよね。
曲もいいし、これから知名度もあがれば良い人材が集まるだろう。
あとはもう倍々ゲームですよ。
412 名前:ねぇ、名乗って[sage] 投稿日:2007/11/11(日) 17:35:18 ID:YbBOdUMW0
つんくPはもう才能が枯渇して昔のように良い曲は作れない。
小室哲哉と同じ道を歩んでいる。
そもそも1アーティスト(アイドル)と1作曲家という1vs1体制っていうのはもう古いんだよな。
これは一人の作曲家に頼りきりだからそいつが落ち目になるとアーティストまで一緒に落ち目になる。
多くの作曲家を周りにはべらせて良い曲だけ採用するという浜崎方式が最も賢い。
AKBもこれを踏襲している。
413 名前:ねぇ、名乗って[sage] 投稿日:2007/11/11(日) 17:35:57 ID:YbBOdUMW0
ここだけの話、AKBはまだ全然フルパワーを出してない。
本当に売りたいならゴールデンの歌番組にガンガン出るはずだろ。
CMだってほとんど見かけないしな。
414 名前:ねぇ、名乗って[sage] 投稿日:2007/11/11(日) 17:36:30 ID:YbBOdUMW0
>>413 その通り。
秋元先生がまだ時期尚早と見て意図的に力を抑えてるんだよな。
AKBは10年計画のアイドルだし焦る必要はなにもない。焦っているのはモーヲタだけ。
415 名前:ねぇ、名乗って[sage] 投稿日:2007/11/11(日) 17:37:08 ID:YbBOdUMW0
モー娘。はもう将来性が無いからな。
今や過去の栄光にしがみついて延命を図ってるだけのグループ。
AKBはまだこれからってかんじだ。
徐々に上り調子なのが素人の目にも明らかである。
Javaに限ったことじゃないけど、enumっていろんな読み方する人いるよなー
エナム
enumはイーナムだな。
エノムだと思ってたんだが間違ってるの?
enum (C予約語) [いにゅーむ] [いーなむ] [いなむ] [えなむ] [えにゅむ] "ENUMeration" の略。 char と同じで変な風に略すからとても読みにくい。 だってさ〜 やっぱたくさんあるね。 けどエノムって・・・どうしたらoになるんだろw
GNU
javaの参考書を買おうと思っているんですが ArrayListだとかスレッドの事やよく使うクラスライブラリの説明なんかが 載ってるのってありますかね?
212 :
デフォルトの名無しさん :2007/11/11(日) 18:50:07
StrutsをつかったWEBサイトの開発しています。(DBにはoracleを利用しています) 質問ですなんが、 リクエストをまたがってのトランザクション制御はjavaで可能でしょうか? Aさんが編集画面を開いているとき、Bさんはその編集画面を開けないような制御を 自前のテーブルフィールドの利用ではなく、oracleの行ロックを利用して行いたいです。 C/Sアプリなどでは、クライアントでコネクションを維持できるので、普通にできるのですが、 WEBシステムではその辺りは不可能なのでしょうか? なにか、既存のライブラリがあったりしませんか? 既存ライブラリがない場合の善後策として考えたのが、 「コネクションプールを利用して、コネクションオブジェクトをセッションに保持するとC/Sアプリのように利用できないか?」です。 しかし、利用者が行ロックを取得した状態で、放置した場合、そのコネクションはどうなるのかが分かりません。 セッションは指定時間で無効状態になりますが、内部のオブジェクトはどのような挙動を示すのでしょうか? javaは初めてなので、試してみようにも関連項目の設定などがよく分からない状況です。 どうかよろしくお願いします。
213 :
デフォルトの名無しさん :2007/11/11(日) 18:52:33
gaussの消去法を使って逆行列を求めるプログラム 行列の∞ノルムを計算するプログラムを教えてください
214 :
デフォルトの名無しさん :2007/11/11(日) 19:37:43
アップロードしたデータのファイルサイズを操作(圧縮?)する事は可能ですか?
215 :
67 :2007/11/11(日) 20:00:43
>>69 returnでうまく行きました。
レスありがとうございました。
Abstractクラスってどういうときに使うのですか?
>>212 セッションに保持できるのはシリアライズ可能なオブジェクトのみです。
java.sql.Connectionはjava.io.Serializableを実装していないので、無理。
JDBCドライバによっては、Connectionの実装クラスがSerializableを実装する可能性も
なくはないですが…期待しない方がいいでしょう。
残念ながら、自力で実装して下さい。
実装するなら、編集画面を開いたまま放置されるケースも忘れずに。
219 :
デフォルトの名無しさん :2007/11/11(日) 21:31:43
>>217 ありがとうございます。
ちなみに、ドライバはojdbc14.jar を利用します。
可不可はそれのリファレンス見ればOKですか?
一般的にWEBで前述のような制御はどうやってるんでしょうか?
排他フラグを設けて自前でしかない?
>>219 自前でするしかない。
そして、どう上手く実装できたにせよ、次は
編集画面を開いたままウィンドウを閉じたり、ブラウザの履歴戻ったりされる問題に直面するが、
大抵はいかのような「解決策」で逃げる。
・「ウィンドウを閉じるな、戻るな」とユーザに注意する。
それを強制するために、JavaScriptでエロサイトまがいの嫌な動作をするページを作る。
・「ウィンドウを閉じたり戻ったりした場合はサポート外」と仕様書に書いて逃げる。
・タイムアウト時間を設ける。比較的マシ。
221 :
デフォルトの名無しさん :2007/11/11(日) 22:07:58
>>220 ありがとうございました。
それにしても、需要のありそうな基本機能なのに
まだライブラリ整備されていないとは・・・
やっぱり技術的に難しいのかな・・・
J2MEをインストールしたいのですが、個人情報を入力しないといけないのですか?
うん。需要は無いので永久に整備されないな。
質問よろしいですか? 専門学校の選択科目でJAVAの授業があって、そこでJAVAの勉強をしているのですが。 スーパークラスのメソッドを「this.」で呼び出すのと「super.」で呼び出すのとでは動作に違いはあるのでしょうか。 実際にやってみればいいのでしょうが、学校にも自宅にも環境を揃えて実行に耐えられるPCが無いので出来ずじまいなんです。 (学校のは開いている実習室が無いので座学のみですが) どうかよろしくお願いします。
>>225 サブクラスが将来そのメソッドをオーバーライドしたときに動きが変わる。
同じ名前のメソッドが自分のクラスにあったら、this ではスーパークラスのメソッドを呼べないだろう class A { void foo(){ System.out.println("A.foo"); } } class B extends A { void foo() { System.out.println("B.foo"); } void bar() { super.foo(); } // A.fooを呼ぶ void baz() { this.foo(); } // B.fooを呼ぶ }
Image〜で取得した画像は背景扱いになるのでしょうか?
Image〜っていうのは具体的にどのクラスorメソッドのことだ 背景扱いってどういう意味?
すみません、下記のアドレスで公開されているJavaを実現したいのですが、
オーダーメイドで作るとなるとどれ位の価格になるのでしょうか?
Converting TrueType Font into EPS
ttp://vision.kuee.kyoto-u.ac.jp/~nob/doc/truetype/truetype.html 大体の相場が判る方がいらっしゃったら教えて頂けませんか。会社でも個人で
も、実現して頂けるなら、お金を払って良いと思っています。と言っても何十
万とかは出せませんが。
当方はJAVAを始めプログラミングには全く縁が無く、JDK6をインストールして
上記のサイトのソースをコピーしてコンパイルしようとした所でエラーが出て、
そこから全く訳が分からなくなりました。
正直に言ってプログラムを専業としているわけでも趣味とするわけでもないの
で、これ一つのために基礎からプログラミングを覚える時間と労力を費やすこ
とはできそうにないのです。
(技術系の掲示板に書き込むようなことではないかもしれませんので、スレ違
いであったら御指摘ください)
5万でよければやりますよ(笑)
まぁ、まずホームページのオーナーに聞くのが早いんじゃないか? 後はうまく宿題にしたてて宿題スレに投げてみるとかw
>226 どういった感じで変わるのでしょうか。 >227 なるほど、納得です。ありがとうございました。
>>233 その二つのレスが共存してるのが意味分からん
superって書けるのはコンストラクタ内だけで、なおかつ一番最初のみだよな?
236 :
デフォルトの名無しさん :2007/11/12(月) 15:16:57
staticメソッドを使う場合は大きく分けてこの3通り。 1.Mathクラスみたいな、オブジェクトを利用しない『ユーティリティクラス』のメソッド(Cなどの関数と同じ役割) 2.そのクラスのオブジェクトの生成に関する操作(Singletonなどのほか、Integer型などのvalueOfとかもこういう系統) 3.main(最初はオブジェクトは存在しないから当たり前) オブジェクトを作らなくても使える代わりに、適切にオブジェクトを作ったほうが簡潔になることが多いから分かんなかったらインスタンスメソッド。 他にもいくつか使い道はあるけど、きちんと使い分けるにはデザインパターンを勉強すればいいと思う。
>>236 237さんが既に説明してるけど、別の観点で。
インスタンスのメンバ変数にアクセスするようなメソッドはインスタン
スメソッドに、メンバ変数をアクセスしないものはクラスメソッドに。
最初はこういう使い分けだけ覚えてればOKだと思う。
ときどき迷うんだけど、インスタンス変数を使用しないが自分のクラスの 他のstaticメソッドからは呼ばれることのないprivateメソッドはどっちにする?
240 :
デフォルトの名無しさん :2007/11/12(月) 16:14:11
>>237-238 ありがとうございます。
>>237 さんの使い分けの説明ですが、なぜそう使い分ければOKなんですか?
あと関係ないですけど、変数宣言の型でなぜStringは大文字で、intは小文字で始まってるんでしょう?
何か意味があるんですか?
言語仕様と慣例 Stringはクラスだけどintはクラスじゃないから
ボタンを押すことでPanelとLabelを表示させるようにしているのですが、上手くいきません。 白紙のフレームにボタンを設置し、それを押してボタンを消去してからPanelとLabelを表示させようとしているのですが、 真っ白のままになってしまいます。 さらに、フレームの端…ウィンドウの大きさを変える部分をクリックすると、なぜかPanelとLabelが表示されます。 解決するにはどうすればよいでしょうか?
FileChannelを使って、 1.Fileにバイナリデータを書き込み 2.同じFileをいったんcloseした後、再度開いて書き込んだデータを読み込み 3.同じFileを最後に削除 ということを試しているのですが、削除ができません。 2の読み込みの部分を、データのappendみたいなことをしてから、 channelをcloseしてファイルを削除することはできます。 何か足りないのでしょうか?書いてみたコードは下記の通りです。 public void example(){ byte[] bytes1 = {0x41, 0x42, 0x43}; File file1 = new File("C:/temp/test.txt"); RandomAccessFile raf1 = new RandomAccessFile(file1, "rw"); FileChannel ch1 = raf1.getChannel(); ByteBuffer buffer1 = ByteBuffer.wrap(bytes1); ch1.write(buffer1); ch1.close(); raf1.close(); File file2 = new File("C:/temp/test.txt"); RandomAccessFile raf2 = new RandomAccessFile(file2, "rw"); FileChannel ch2 = raf2.getChannel(); MappedByteBuffer buf = ch2.map(FileChannel.MapMode.READ_ONLY, 0, ch2.size()); byte[] data = new byte[(int)buf.capacity()]; buf.get(data); buf = null; ch2.close(); raf2.close(); file2.delete(); // data[0]〜data[2]に値は入っているが、deleteできない }
>234 226さんの答えが良くわからなく、他にも問題があるのかと思ったからです。 メソッド名に気をつければ問題ない、「super.」を使ってスーパークラスのメソッドを呼び出すようにする。 と言うことでよろしいでしょうか。
基本的にstaticにできるところはそうするべきだろ。
>>243 MappedByteBufferがガベージコレクトされるまでアンマップできないから閉じられない、んだったと思う
>>244 相当、頭悪いな
superがthisがじゃなくて、どのクラスに定義したメソッドを実行したいかなんだよ。
thisはそのクラスが定義したメソッドまたはそのスーパークラスのメソッド
superだとスーパークラスのメソッドが実行されるだけ
ただし、2つ以上オーバーライドされてしまうと、親の親を呼び出す仕組みはない
248 :
248 :2007/11/12(月) 20:06:15
本に載ってるプログラムを入力したのですが、 コンパイルした時にエラーになります。 どうしてでしょうか。 public class sample17 { public static void main(String[] args) { int i=args.length; if(i==0) System.out.println("引数は0個です。"); else if(i%2==0) System.out.println("因数の数は偶数です。"); else System.out.println("引数の数は奇数です。"); } } C:\Source>javac sample17.java sample17.java:9: \65373 は不正な文字です。 } ^ sample17.java:10: \65373 は不正な文字です。 } ^ sample17.java:11: ';' がありません。 ^ エラー 3 個
249 :
デフォルトの名無しさん :2007/11/12(月) 20:09:39
ifの後っ{←つけないとだめじゃない?
250 :
243 :2007/11/12(月) 20:09:43
251 :
248 :2007/11/12(月) 20:12:29
}が全角になってる。}と}は違う文字。
253 :
デフォルトの名無しさん :2007/11/12(月) 20:16:33
>>248 コピペしていじんないでやってみたけど、普通に結果でたよ
254 :
248 :2007/11/12(月) 20:31:08
255 :
248 :2007/11/12(月) 20:33:56
プライベートJREでぐぐっても碌に引っかからないんだけど 最近はJavaが必ず入ってることを前提として大丈夫なのかな?
257 :
248 :2007/11/12(月) 20:41:37
JDK 5.0 Update 13をインストールしました。 本にそれをダウンロードしろと書いてあったので…。 他のプログラムは普通に動くのですが、原因がわかりません。 超初心者なので、初歩的な部分を見落としてるかも知れません…。
259 :
248 :2007/11/12(月) 20:45:47
260 :
248 :2007/11/12(月) 20:47:28
荒らしがいるのでトリップを付けました。
全角}でコンパイルすると同じエラー(\65373 は不正な文字です)が出るよ。 考えられるのは、 1.確認ミス。 2.テキストエディタの変更が保存されていない。 3.確認しているファイルとコンパイルしているファイルが異なる。 こんなもんかな。
fillRectで描画した長方形を移動させた後に fillOvalで描いた円を二手に移動させるにはどうすれば良いですか? ________○→→→→→→○ □→→→→→→□  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄○→→→→→→○ (左の□は右の□の位置になったら消える) (左の○は右の□が消えてから描画されて右の○まで動く) こんな感じです
何がやりたいのか今一わからないんだけど それは透明の縦棒に□と○2つがくっついて表示非表示させるだけ って考えていいなら作りやすいんじゃないかい
KeyEvent.VK_UP KeyEvent.VK_DOWN KeyEvent.VK_LEFT KeyEvent.VK_RIGHT 上記の定数の数値って分かりますか?
ん?数値や文字列の定数はJavaDocに一覧化されるはずだから、載ってないか?
>>265 java初心者の俺が答えてみる
System.out.println("KeyEvent.VK_UP:" + KeyEvent.VK_UP);
System.out.println("KeyEvent.VK_DOWN:" + KeyEvent.VK_DOWN) ;
System.out.println("KeyEvent.VK_LEFT:" + KeyEvent.VK_LEFT) ;
System.out.println("KeyEvent.VK_RIGHT:" + KeyEvent.VK_RIGHT) ;
結果
KeyEvent.VK_UP:38
KeyEvent.VK_DOWN:40
KeyEvent.VK_LEFT:37
KeyEvent.VK_RIGHT:39
>>265 数値で比較すんなよな、その定数で比較しとけよ
>>262 何度もアドバスありがとうございました。
もう一度最初から入力し直した所、うまく行きました。
原因がはっきりしないのですが、ひょっとしたら全角のスペースを
使っていたのかもしれません。
>>269 だから透明な横の無限線は低速で上に動いてるんじゃねの?
表示しない点をFPSで管理して、□や○はそれを基準に描画すればいいじゃん。
それぞれ2次元の速度ベクトルを持たせたほうが楽だと思うよ
>>266-268 調べてみたら思いっきり載ってましたorz
低レベルな質問に答えて頂きありがとうございました
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、
http://clickclickclick.com/ ただひたすらクリックし、国別の総クリック数を世界中で競い合う!
究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ!
ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中!
VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている!
意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!!
独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!!
日本の技術力の高さを世界に見せつけてやろうぜ!
プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中!
ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ!
本スレッド
【簡単多重】一番クリックした国が優勝【8砲門】
http://wwwww.2ch.net/test/read.cgi/news4vip/1194741194/l50 ※落ちているときはここから1発検索
http://www.clickjapan.jp/find2ch.php 日本チームの有志によるまとめサイトポータル
http://www.clickjapan.jp/ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
>>231 さん、
>>232 さん、御返事ありがとうございます。
>>230 です。
>>232 さん
> まぁ、まずホームページのオーナーに聞くのが早いんじゃないか?
言われるまで気づきませんでした。よく探してみたらメールアドレスも掲載さ
れていましたので、ダメモトでメールを出してみます。
>>231 さん
五万円が大体の相場なのでしょうか? JAVAプログラムを覚えるための労力と
時間を金銭に換算するなら、別に釣り合わない金額ではないです。個人的には。
ただ、上に書かせて頂きましたように、まずは制作者様に連絡を取ってみよう
と思いますので、依頼は制作者様の返事を待ってからで宜しいでしょうか?
(二股をかけるようで申し訳ない)
メール欄に書かれているアドレスは当分使えるのですよね? 依頼する事にな
った時は、どうかお願い致します。
FPSっていうのがイマイチわからないので 速度ベクトルっていうので検索してみます
それ、両方セットで使う概念だよw
定期的に位置ベクトルに対して速度ベクトルを加算するの
その間隔を一定に保つことがたぶん
>>271 の言うFPS
速度ベクトル→速さ+方向
279 :
デフォルトの名無しさん :2007/11/12(月) 23:09:42
JAVAとSQLを勉強しようと思い、JDBC経由でローカルのMYSQLをSELECTする プログラムを作りました。(コピペです) DELETEするプログラムを自前で追加したのですが、 DELETE対象のRowが存在しない場合の判断をどう行っていいかわかりません。 存在しない場合、"対象データがありません"とメッセージを出力したいのです。 SELECTの場合はexecuteQueryを実行して、ResultSetのnextメソッド?がfalseだったら、という判断で で実現できたのですが、DELETEの場合、executeUpdateの戻り値にResultSetを設定できないようなので。 よろしくお願いします。
select以外のsqlにResultSetなんて要らないと思うんだが。 executeUpdateは変更のあったレコード件数のはずだから 0が帰ってくれば消しに行ったけどなかったよって意味になる
stmt = con.prepareStatement("DELETE FROM MYTABLE WHERE ID=?"); stmt.setInt(1, id); int count = stmt.executeUpdate(); if(count == 0){ System.out.println("削除対象が存在しません"); }
>>281 ,282
ありがとうございます。
API仕様のWEBドキュメントを見つけて
executeUpdateの戻り値はINTで行数カウントが
返ってくる事がわかりました。
executeUpdateはおまじない程度にしか思っていなかったのですが
java.sqlパッケージのPreparedStatementインタフェースのexecuteUpdateメソッドだって
理解を深めたらおのずと調べ方もわかりました。
ありがとうございました。
SQLを触るたびにヒアドキュメントが欲しくなる。 iBatisとJDBC4に規格的な親和性がないのは悲しすぎる。
DB 周りのフレームワークと称して独自言語並の設定ファイル記述させるのはやめてください。
アプレットでできることって、Ajaxでもできるんですかね? 工数的にはどのくらい差がありますか?それと技術者ってすぐにあつまりますかね?
どちらも技術者は少ない。後者はギークが集まるかもな。保守性無視で。
288 :
デフォルトの名無しさん :2007/11/13(火) 01:30:39
日本語音声認識システムJulianをJavaから利用したくていろいろと調べています.
最初はJulius for SAPIにアクセスできるDLLを自分で作って・・とか考えていたんですが
どうも自分には難しくて挫折していました.
ttp://julius.sourceforge.jp/index.php?q=juliankit.html で,いろいろと考えた結果↑以下のJulian記述文法音声認識実行キットをJavaから動かして,
その結果をJavaで処理できるのではないかと思い至りました.
が,ProcessBuilderでコマンドラインのプログラムを呼び出せるのは分かったんですが
継続的に処理を待ち続けて,プログラムの出力があるたびにJavaのほうで処理を受ける方法が
分からなくて悩んでおります.
Julian記述文法音声認識実行キットは
C:\>bin\julian.exe -C testmic.jconf
のような形で実行すると,最初数行システム起動処理が標準出力として出力され
その後,マイクでの音声入力を待ち,定義ファイルの内容にしたがって
音声入力があるたびに認識処理を行い,
<s> リンゴ を 3 個 ください </s>
といったような認識結果の出力を行います.
このときに,「リンゴ」と「3個」という認識結果をJavaで取得し,
apple()メソッドに3という引数を渡して呼び出し,その後また音声認識処理を待ち続ける
といったようなことをやりたいのですが
ProcessBuilderを利用してプログラムを実行した後,音声入力が行われるたびごとの
認識結果をJavaのプログラムで取得し続ける方法はありませんでしょうか?
ヒントなりとでも頂ければ幸いです.
よろしくお願いします.
ProcessBuilder#start の戻り値の Process から getInputStream で標準出力を取れるんじゃない?
>>288 標準入力 System.in からそのプログラムが吐く文字列読み込むプログラム作って
C:\>bin\julian.exe -C testmic.jconf | java YourProgram
でも良いんじゃねーの。そのコマンドが一回ごとに終了してしまうならダメだけど。
Formatter で日付を処理する時ってタイムゾーンの指定はできんのかね? どうやっても JST (JVM のデフォルトタイムゾーン) でしか返って来ないんだが。 DateFormat 使って変換した文字列を %s で埋め込むしかないのかな。
Locale指定すればいいだろ
それだと JST の時刻が英語圏の表記でフォーマットされるだけですが。
だったらタイムゾーン指定しろ まずはSimpleDateFormatterのドキュメント嫁
if(Toolkit.getDefaultToolkit().getSystemEventQueue().peekEvent() != null) { while(Toolkit.getDefaultToolkit().getSystemEventQueue().peekEvent() != null) { if(Toolkit.getDefaultToolkit().getSystemEventQueue().peekEvent().getID() == InvocationEvent.INVOCATION_DEFAULT) break; try{ Toolkit.getDefaultToolkit().getSystemEventQueue().getNextEvent(); }catch(InterruptedException ef){System.out.println(ef);} } } 結局上記の様にすることでKeyEventの溜まりすぎを防ぐことができました。 前スレでアドバイス下さった方、ありがとうございました。
>>294 SimpleDateFormatter なんてクラスは標準 API にありませんね。java.text.* パッケージの
クラスのどれかと勘違いしてませんか? java.util.Formatter の事ですけど。
勘違いは
>>296 だろたんなるFormatterに何を期待しているんだか。
>>291 TimeZone 指定した Calendar 使うんじゃダメなんか?
>>296 ああ、勘違いしていたよ。
java.util.Formatterでは不可能。
ていうか使い方がおかしいのでAPIの所為にスンナ、ボケ
>>298 ( ゚Д゚) おお、Calendar を渡せることをすっかり忘れていました。どうもありがとうございます。
>>297 ,299
にほんにきてなんねんになりますか?
>>280 executeUpdateのintの戻り値が削除された行数
第1段落3行目
> byte、BigDecimal、および Calendar などの共通 Java タイプがサポートされます。
その後の概要の一番初めに Calendar を使った解説が…(−人
>>301 >>281-283
何か勘違い指摘されたのすっげー根に持ってる人が居座ってるみたいなんすけど。
>>300 たぶんあなたがJavaをやっている年数よりは長いんじゃないw
在日は氏ね
JTextFieldのようなものを作っています getKeyChar()で半角英数は取得できました しかし全角の日本語を一度に2文字以上打ち込むと 打ち込んだ文字列の最後の文字しか取得できません 文字列全てを取得する方法はないでしょうか
309 :
243 :2007/11/13(火) 14:01:36
>>250 でもありますが、
delete前にSystem.gc()入れたら、
削除できるようになった。。。
channelをcloseしてからリネームして、
deleteOnExit()しろなんて方法もあるみたいなんですが、
VMを長期間稼働させる環境だとそれも使えないからなぁ。。。
deleteしたいファイルには、MappedByteBuffer使っちゃダメってことなんでしょうかね。
310 :
デフォルトの名無しさん :2007/11/13(火) 17:01:30
比較的大きなコード (ソースコードでおよそ1.2MB程度) を書いています. これまで動的変数(メソッド内でint i; などのように宣言した組み込み型の 変数)を多用していたのですが,これらの多くをクラスのメンバ変数に変更 したところ,処理が非常に遅くなってしまいました. 処理速度が落ちる解釈として, (1)動的変数はレジスタに割り当てられるのに対し,メンバ変数はヒープ領域に取られるから. (2)メンバ変数へのアクセスは「クラスへの参照→メンバへの参照」のように参照段階が増えるから. を考えておりますが,実際にはどちらのほうが効いているのでしょうか? あるいは重要な別の原因が考えられるようでしたら,お教えください. 最適化のための参考にさせていただきたいと考えております.
書き直しの際に発生したバグ。 変数をあちこちで使い回した為、ループがおかしくなっているとか。
>>312 いえ,処理内容・結果とも変更前と変わらないことは確認済みです.
全く同じ処理を行ったときにパフォーマンスが低下する現象です.
>>311 昔の話ですが…(最近の最適化では数値が違うかも)
ローカル変数からインスタンス変数やクラス変数に変えれば、遅くなる。差は2倍強。
ローカル変数でも最初の3個?はレジスタに割り振られるが、差は10%。
というのをどこかで見た気がします。
まあ、動作が変わらないってなら、巨大なベンチマークをしたということで…。
315 :
デフォルトの名無しさん :2007/11/13(火) 18:21:21
>>311 一般には体感するほど遅くなることはないはず。
Profilerで調べてみることをお勧めします。
>>313 どうやって変らない事が確認できるんだかしりたいですね
そもそも組み込み型(プライベート変数の事かい?)からメンバ変数に変更した経緯が意味解らん。
その上で
(1) 関係ない。
ヒープ領域を使うか否かは変数がプリミティブ型かオブジェクト型かの話
レジスタというのは意味不明だが、スタックのことを言っているとしても、それがパフォーマンスに体感的に低下する事はない
(2)メンバ変数へのアクセスは〜の影響もない
参照段階がどうこうってのは何を根拠に話しているんだ?
俺が知っているJavaの本では読んだ事もないし、聴いた事もない。
>>311 あと、比較的大きなコード(1.2MB)というのは1つのクラスが・・・なのか?
もし、そうだとすれば、根本的に何もかもおかしいと思うが・・・
知らないこと、検証してないこと、自分の常識では理解できないことを、…以下略。 (ああ、私は質問主じゃないですよ)
319 :
デフォルトの名無しさん :2007/11/13(火) 18:59:20
jarじゃね ありえないだろ
>>311 結果出るまで数日かかるようなよっぽどの数値解析アルゴリズムを、20 世紀の
化石 PC でも使って走らせてなければ、レジスタ使う使わない程度でそんな体感
分かるほど変わるわけないだろう。ヒープ使いまくりで GC とエクステンション
走りまくりとか、単なるバグとかの方がよっぽど濃厚。
レジスタやらインスタンス変数アクセスだと主張したいなら、せめてそう断定するに至った
プロファイラの結果くらい出せ。生半可が思い込みで始めるパフォーマンス論が一番危ない。
321 :
デフォルトの名無しさん :2007/11/13(火) 19:01:26
ああ でも線形解析程度でえれえ時間差ある
322 :
デフォルトの名無しさん :2007/11/13(火) 19:02:07
Vecmath使うといいのかな
動的変数 = ローカル変数 組み込み型 = プリミティブ型 メンバ変数 = インスタンス変数 で良いのかな。
"メンバ変数"や"組み込み型"はJavaでも普通に使うだろ
通じるけど使わない。 C++ 上がりが多い職場ならどうか知らんけど
通じるのはメンバ変数くらいだな 組み込み型ってなにを何処に組み込むんだ? 動的変数ってのも矛盾してるだろ、動的だから変数じゃねーのか?w
多分エンバグじゃね? スレッド拘束で保ってたスレッドセーフが破られたに500ペリカ きっとループの終わり頃に、別スレッドがiを0に設定していると予想w
>>313 一応言っておくけど、処理結果が変わらない事とバグが混入してい無い事とはイコールじゃ無いよ。
後はマシン自体が遅くなってるとか。変更前の処理を今動かしてみて遅かったらそれ。
#ところで、最適化はまだ早いんじゃ無い?
331 :
311 :2007/11/13(火) 19:18:42
多数のご指摘ありがとうございます.
いま手が離せない状況ですので,とりあえず
曖昧な表現だけ訂正させていただきます.
>>317 もちろん複数のクラスの合計のサイズです.
変数の種類の表現については
>>323 さんのご推察の通りです.
混乱させる表現で申し訳ありません.
結論としては>311がバグを仕込んだという事で終了
>>311 全体で1.2MBって大きなプログラムなの?
Javaを8年やってるけど、 組み込み変数って聴いたことないし、わからない。
1.2MB=12582912文字 嘘くせえええええええ
どうせコピペばかりの糞コードでライン数が膨らんでるんだろw
>動的変数(メソッド内でint i; などのように宣言した組み込み型の変数) と書いてあることから、 >メンバ変数 は、ラッパークラスであるとエスパー
マモリリークしてディスクスワップ & ページフォルト発生してんじゃないかと。
あとインスタンス変数を参照するより new でヒープ割り当てる方がよほど遅い。
ローカル変数 (スタック変数) からインスタンス変数へ切り替えたって事は
ループの奥底でこんな事になってんじゃないかと。
for(…){
while(…){
for(…){
for(…){
MyClass a = new MyClass(); // 元は int x, y, z, …
MyClass b = new MyClass();
MyClass c = new MyClass();
…
>>333 状況や分野によりけりだけど 2〜3 人が 1〜 2 ヶ月程度かけて書く量かな。
嫌 OO のコピペ厨なら 1 週間って所だが。
組み込み型 : 言語自体に組み込まれた型(キーワードで使える) プリミティブ型 : 組み込みの値型 Javaでは同じだけど、C#ではstringやobjectキーワードがあって StringやObjectはプリミティブ型でない組み込み型だったりする
プリミティブ型って名前を考えると値型に限定するのはおかしいんじゃないか?
341 :
311 :2007/11/13(火) 19:40:48
>>338 ご指摘の「nestしたloopの底でのnew実行」という状況が
起きている可能性は充分考えられます.
実際の最適化の作業はもう少し先にやるつもりですが,
そのときの参考にさせていただきます.
どうもありがとうございます.
>>338 一日ひとりで、202950文字〜676500文字打ち込むということになるな。
>311の釣り宣言はまだですか? まじで釣りって言ってくださいwww
とすると、Javaにおける組込型って 基本データ型ぐらいかな? クラスはすべて言語仕様ではなく標準APIライブラリという位置づけだからね。 java.lang.Objectは微妙?
微妙というか、参照型という組み込み型
ないものを論じても仕方ないだろ java.langパッケージでfinalなクラスは組み込まれているといえない事もないし、そもそも定義できない
プロファイル取れって言われても無視するのに
>>338 には5分で反応するのな
いま手が離せないって言ってたのはどこ行ったんだか
なんでそんなミエミエの嘘つくのかねぇ
>>316 >そもそも組み込み型(プライベート変数の事かい?)からメンバ変数に変更した経緯が意味解らん。
オブジェクト指向とか聞いた事も無いんだろうさ
ソースをぐちゃぐちゃにした挙句どこが悪くなったのかわからなくなったってのが経緯
>>343 釣りじゃ無くて真性なんだろw
自分のケツもふけない奴が最適化とかw
ソース改変によるパフォーマンス劣化の説明理由が欲しかったのでは。
>311は顧客への言い訳の為、徹夜作業をしております。 申し訳ありませんが、許してあげてください。
>>348 パフォーマンス劣化について調べるにはまず、どこでどれくらいパフォーマンスが落ちているか、を調べるよね。
で、問題の場所を変更前ソースと比べたり、問題が発生する最小限のコードを書いたりして原因を探る。
原因は分ったけど、何故そうなるのか分らないって段階になって
>>348 の質問になると思う。
でも
>>311 は何をしたか、のみ書いていて、何が原因か、は触れていない。
>>341 の書き込みを見るに、多分原因を突き止めていない。
何がどうなっているのか分らないままじゃ、掲示板に書き込んでも上手く説明する事すらできないと思うんだけど、
>>311 は今その状態。
何をしたかすら理解してない気もするけどな
そんな難しくないから、単にプロファイル取ればいいだけなのにな
Javaは手動インラインよりおとなしく小さな関数にした方が速かったりするよな HotSpotってやつか?
意味解らず発言すると恥かくよ、遅いけど
はぁ?
HotSpotと小さな関数は何も関係しないだろ
HotSpotコンパイルでループぶん回す程度のボトルネックなら時期に解消されるから 糞コード書いてもプログラムには影響ないと思う。
バッファの確保部だけをメソッド化するだけで速くなったりする
353 じゃないけどインライン展開は HotSpot が最適化する手段の一つなんだから関係なくはないでしょ。
そうか? 少なくともHotSpotのアルゴリズムを考慮してまでコーディングするなんて聞いたことねーな。
はぁ?
ダイナミックリコンパイルの存在もあるし、 小手先の最適化は意味ないから普通に作れってことだな
ム板ってカリカリしてる奴多いよな
10倍早く動くコードを書くことを考えるよりも、10倍早く読めるコードを書けと
プロファイルをとるってのは具体的にどうやるんですか?
NetBeans入れてプロファイラをインスコして設定して開始。
NetBeans が必要なんですね (´・ω・`)
ごめ。俺が知ってるやりかたってだけ。 Eclipseにもあるよ。
IDE からじゃなくても単体のプロファイラもあるでよ。
372 :
デフォルトの名無しさん :2007/11/13(火) 22:59:02
JFileChooserを使ってファイルを保存するときに、 選択されたファイルタイプに応じて拡張子を付けて保存ということをしたいんですが、 どのファイルタイプが選択されていたか調べる方法はありますか?
374 :
デフォルトの名無しさん :2007/11/13(火) 23:11:18
あるURL以下に存在する全てのファイル名を取得するには どうすればいいですか?
>>372 URLConnection.guessContentTypeFromStream() でいくつかのファイルタイプは分かる。
ローカルなら File.listFiles で
>>374 HTML のリンクをたどれ。それ以外は無理。
>>374 あるURL以下を全てリストしてくれるページを作る。
JTableに関してご教授願います。 現在、MyTableModel にてヘッダ行を定義しています。 JTable table = new JTable(); table.setModel(new MyTableModel()); とすれば、指定したヘッダは表示されます。 ここまでは良いのですが、単一選択のみを許可しようと次のコードを追加しました。 table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); すると、ヘッダ行が「A、B、C」と指定しなかった場合のデフォルトになってしまいました。 この現象はどうして起こるのでしょうか? 回避方法等があればお願いします。
話し戻すがjdkにプロファイラ付いてるだろ。 まだ、実験ツールだっけ?
>>380 直接、JTable の setSelectionMode(int) ではどうでしょう?
結果データをHTMLに変換しないと使いにくいみたいな紹介記事があったな。 コレステロールの溜まってる血管が見付かりやすいのが一番だ。
>>382 試していますが、それでも一緒でした。
どうにも理解していないのがTableModelとColumnModelの関係です・・・orz
JDBCで予約語かどうか判別するAPIってありませんか?
386 :
デフォルトの名無しさん :2007/11/14(水) 00:53:43
NetBeansはコストパフォーマンス高いよね 長年愛用してるけど 最近はUMLも使えるし 最新の機能は自分でカスタマイズするしかないようだけど IDEの性能としてもだいぶ追いついてきてる
NetBeansいいね。 特に6.0はβ版だけど完成度高い ただ、Eclipseよりもマシンスペック要求するんだよな
>>385 自己レス
見つからないので作っちゃいました
SQL 使うアプリ作ったョー (・∀・)
↓
でも入力値に予約語が入ってるとクエリーの SQL が壊れちゃう (・ω・` )
↓
入力値から予約語見つけてエスケープすれば良いか ヽ(´ー`)ノ
なんて事を
>>385 がやらかしていないかお母さんは心配です。
BCELで解析するソフトウェアを作ってるんだけど メソッド名にたまに予約語使ったのがあったんで 見つけたら別名に書き直すようにしようと思った訳です
XML の Schema 定義から javadoc みたいな HTML を吐き出すツールがあったと思うんだけど 誰か知らない?
日本語でおk
393 :
sage :2007/11/14(水) 12:02:21
jmfってmacosxじゃ使えないんだよね?
394 :
デフォルトの名無しさん :2007/11/14(水) 12:03:09
漠然とした質問で申し訳ないのですが 値渡しというものはどういう場面で使うものなのでしょうか?
どのような場面で使うも何も、メソッドに引数を渡す時には常に使っているんだが・・・
396 :
デフォルトの名無しさん :2007/11/14(水) 12:14:49
>>395 え?そうだったんですか?
ということは知らないうちにつかっていたんですね・・・
言葉と説明だけではいまいち理解ができなかったので
どういう場面でつかってるかわかれば多少理解できるかなと思ったのですが
まだわからないのでもう少しいろんなサイトまわってきます
Javaには、値渡し以外の渡し方はないので、どういう場面でも決して使われない 調べても無駄かと 調べるなら「参照渡し」「名前渡し」でぐぐるといいかもしれん
>>396 どんな説明を受けたんだ?
調べるならばJavaのメモリモデルに関して調べるといい。
スタックとヒープの違いとそれぞれの使われ方、インスタンス変数とローカル変数がそれぞれどんな風にメモリにマッピングされるか、その辺りを調べてみるといい
深い話までは理解する必要はないけど、大雑把には理解しておくべき話
399 :
デフォルトの名無しさん :2007/11/14(水) 12:52:34
>>397-398 参考になります。どうもありがとうございます。
早速教えていただいた単語を元に調べてみたいと思います。
参照渡し/値渡しネタは思い出したように調べてみるがいつもモヤっとしたまま終わってしまう。 C++ の参照渡しなんてポインタ渡しのシンタックスシュガーでしかないし。てかどの言語の 参照渡しも結局はアドレスでやり取りしてんのを言語レベルで隠蔽してるだけじゃんと思うんだが。
>>400 専門用語の定義にケチつけるなんて暇人だな、ぐらいにしか思えんが。
・オブジェクト型、プリミティブ型にかかわらず仮引数を書き換えても呼び出し側の実引数の値は変わらない。 ・プリミティブ型はその値を、オブジェクト型はその参照の値(アドレスのようなもの)を、渡しているだけだから。 ・ただしオブジェクト型の場合、中身を書き換えれば可変になる。(リストを渡して中身を追加みたいなことはできる。) これだけ分かればそんなに深い話は分かんなくても理解できるだろ。
>>400 結局のところそういうことだろーが、考え方が逆なんじゃね?
CやC++のポインタが異端で、コピーではなくメモリアドレスで関数に渡す方法を総じて参照渡しって言うんだろ。
そう考えると、ポインタはそれより一つ低レベルなところでの処理だな。
メモリアドレスより低レベルってなんだよ 電子回路を考えるのか?
>>402 間違ってはいないと思うが、メモリモデルを理解できていないと理解しにくいと思われ
なんで呼び出し側の実引数が変らないの?
変った方が便利じゃん。
って話になる。
JAVAでログ実相作ってるんだけどさ、ロガーのなかで DBにアクセスしてメッセージとりにいかなきゃあかんのよ。 で、そのときに当然例外飛んでくるんだけどさ、 これはどやってログに出力するの? いま作ってるロガーでえらー出力させたら 無限にエラーになるよね? プロはこういうときどうやってんの?
独自のLoggerを作っているの?
>>406 log4j使え
研究とかで自前で作っているのであればソース嫁
実際問題、ログ出力時の例外処理は握りつぶすしかないだろうな
ログにかけようが書けまいが、アプリは実行できなきゃいけないだろ、通常は。
>>403 結局行き着くところは、参照の値渡しを言語上どう書けるかでしかないんだよな。
Java でも C でも参照の参照 (ポインタのポインタ) 渡せば原理も出来ることも同じなんだし。
じゃあ何が違うのというと言語上どう書けるかという事にしか行き着かない。
問題は呼び出し先の結果がパラメータにどう反映されるか理解することでしょ。
どう暗黙的に動くか/書けるかじゃなくて。
といつもここら辺でもやもやして忘れることにしている。
>>406 Exception eを取得できるんだったら、
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String msg = sw.toString();
なんてやって、msgをログに吐いてやるとか。
>>406 「DB 障害でメッセージが取得できませんでした: 参照できなかったメッセージコード %1$s」
みたいな固定メッセージ + SQLException のスタックトレース吐くくらいしか出来ることはないだろ。
昔、某メーカー製の独自糞フレームワークが一度 DB 系の障害起こすと無限ループ的に
ログ吐きまくり + パーティションフルになると今度は OutOfMemory でまくりという、まさにそれと同じこと
やってたよ。
412 :
406 :2007/11/14(水) 14:10:12
>>407-411 即レスありがとうです。
やぱし基本握りつぶしですね。
>>407-408 フォーマットのとこではつかうけど、DBアクセスまではしてくれないので・・・>log4j
413 :
406 :2007/11/14(水) 14:15:01
>>407-411 即レスありがとうです。
やはり基本握りつぶしですね。
>>407-408 内部では使うんですが、DBアクセスまではしてくれないので・・>>log4j
って、生log4jを直接呼べばおkってことですかね。
いろいろ解決っぽいです。ありがとうございました。
414 :
406 :2007/11/14(水) 14:16:16
ぐは、2重してる。ごめんなさい;;
>>412 log4jはJDBC経由でログ吐けるだろ
>>415 それ DB にログを格納できるってだけじゃん。
任意のメッセージ取ってくるなんて機能ねーだろ。
毎回アクセスして、DBからメッセージを取るのかよ 起動時に全部取得してキャッシュすりゃ解決じゃねーか
GlassFishとTomcatの違いについて教えていただけないでしょうか。 いろいろwebを漁ってみた結果、 Tomcatはservlet containerを含むapplication server、 GlassFishはservlet container以外にもいろいろ付属したapplication server という認識なんですがどうでしょうか。 あとJBossは内部にTomcatを含んでいるようですが、GlassFishもTomcatを含んでいるのでしょうか。それとも独自のservlet containerとapplication serverを持っているのでしょうか。 よろしくお願いします。
違いも何も別のものだろ 作っているところが違うという事でいいか? 後は対応しているJavaEEの仕様が違う。 Tomcatは厳密に言えばAppサーバーといえないしな
厳密に言うアプリケーションサーバの定義を教えてください
J2EE(最近はJavaEEか?)の仕様を満たすサーバー
>>421 >違いも何も別のものだろ
>作っているところが違うという事でいいか?
作ってるところが違っても、同じ仕様を満たすなら、別物というほどでもないと思います。
>後は対応しているJavaEEの仕様が違う。
そのへんを詳しく。あるいは参考になるページを教えていただけますか。
>Tomcatは厳密に言えばAppサーバーといえないしな
どういった点でそう判断されましたか?
今のところ、アプリケーションサーバの厳密な定義はないと思いますし、Webを見る限りではTomcatはアプリケーションサーバーに分類されてると思います。
>>421 その定義だとJava以外の言語用のアプリケーションサーバーは存在できなくなります。
あえていうなら、J2EEアプリケーションサーバーでしょうか。
で、
>>418 の続きなんですか、GlassFishにはTomcatは含まれておらず、servlet containerもapplication serverも独自実装という理解でいいでしょうか。
GlassFishをダウンロードしてみたのですが、いまいち分かりませんでした。
GlassfishはSun主導のオープンソースプロジェクトで作られている。 TomcatはApache Software Foundationで作られている。 GlassfishはJavaEE仕様完全準拠のフルスタック。 Tomcatは基本的にWebコンテナ+JNDIサービスのみ。 GlassfishにTomcatそのものがそのまま含まれているわけではない。 ただし、両者には共通するコードは多く含まれている。 両者ともオープンソースソフトウェアなので、コードの再利用が認められているからだ。 俺はTomcatは「アプリケーションサーバ」でいいと思うよ。
スレ違いかもしれませんが質問を。 JavaでPNGをロードするコードを探しています PNGファイルをJavaで解析しているコードという意味で、Appletで読み込みをしたいという意味ではありません というのも、iアプリでPNGを扱いたいのですが、元から入ってる画像ロードクラスではPNGが対応していないのです なのでPNGのファイル構造を解析して1ドットずつ画像を取得しなければなりません libpngのソースを移植するというのを最終手段としては考えていますが、もしJavaで書かれたコードがあれば教えていただけると幸いです
SunのJREならSPIで対応されてるから、その手の開発動機は起きない気が。 そのSPIがPure Javaで出来てるなら、Open JDKで覗けるのかな?
428 :
デフォルトの名無しさん :2007/11/14(水) 20:34:00
デフォで入ってるでしょ
429 :
418 :2007/11/14(水) 20:37:12
>>424 どうもありがとうございます。
>GlassfishはJavaEE仕様完全準拠のフルスタック。
>Tomcatは基本的にWebコンテナ+JNDIサービスのみ。
こういう回答をまってました。
最近はservlet containerと言わずにweb containerというんですか?
>GlassfishにTomcatそのものがそのまま含まれているわけではない。
>ただし、両者には共通するコードは多く含まれている。
どのあたりが共通しているか、わかるようでしたら教えてください。
servlet container と web server のあたりはどうでしょうか?
# ダウンロードして中身をみても、よくわかんないんですよね。
# JBossはTomcat6を持ってきてると書いてあるから分かりやすいんですが。
システム構成の層分けの知識が追いついてないのに背伸びしすぎじゃないか?
要約すれば、もっと勉強してから質問しろ、ということかね 無駄に偉そうだしwww
>>429 そもそもJavaEEが何かってのを考えてごらん
Servlet/JSPはJavaEEを構成する一要素に過ぎない
とりわけGlassfishが実装しているJavaEE 5はServlet 2.5, JSP2.1の仕様に対応している
そのほか、EJB,JPA,JMS,JTA,JSTL,JSF,JAXP,JAX-RPC,JAX-WS,StAX,JavaMail,JAF等々の仕様をまとめてひとつのプラットフォームとして規定したのがJavaEE。
つまり、
>>424 が言っているとおり、
Servlet/JSPの仕様を満たしているのがTomcat
JavaEEの仕様を満たしているのがGlassfish
Tomcat6はServlet 2.5, JSP 2.1の仕様を満たしている
JavaEE5でもServletは2.5、JSPは2.1に対応している
じゃあServlet/JSPの仕様が共通なんだ、というのがわかるよね。
こういうスレで明確な線引きはしないほうがいいんだが、 初心者歓迎つっても質問の初心者は歓迎しませんよって感じだな。 何が分からないか分からない人のヒアリングの場ではない。
>質問の初心者 うまいこといったなw 確かに質問が下手だと、いろいろな解釈ができてしまうから腹がたつ
>>433 >>429 はそういうことを聞きたいんじゃないと思う。
どこが同じ仕様なのか聞きたいんじゃなくて
どの部分のコードが同じなのか聞きたいんだろ?
>>429 実装部分のAPIリファレンスをダウンロードしてみて、
org.apacheから始まるパッケージの部分はTomcatと同じコードが
含まれていると考えていい。jasperとかcatalinaとかあるから。
Servletコンテナとも、Webコンテナとも言うね。
どちらも指しているものはほぼ同じ。
Webコンテナといった場合の方が、Servlet処理系だけでなく
JSPコンテナやHTTPサーバを含んでいるという意味合いが強い。
438 :
418 :2007/11/14(水) 22:10:22
>>433 >つまり、
>>424 が言っているとおり、
>Servlet/JSPの仕様を満たしているのがTomcat
>JavaEEの仕様を満たしているのがGlassfish
これはわかりやすい説明。なるほど、合点が行きました。
ありがとうございました。
あと、「GlassFishはTomcatのコンテナとwebサーバーは使ってない」であってますか。
Tomcat, JBoss, GlassFishの性能を評価しなくちゃいけなくて、でもJBossはTomcat6を内部に持っているからTomcatと同じと見なせてテストを省略できるとして、
もしGlassFishがTomcatを使ってたらこれも省略できるかなーと思ってたんですが、そういうわけにもいかないですね。
結局、TomcatとGlassFishでどのコードが共通なのか分からずじまいです。
439 :
418 :2007/11/14(水) 22:11:47
>>437 >実装部分のAPIリファレンスをダウンロードしてみて、
>org.apacheから始まるパッケージの部分はTomcatと同じコードが
>含まれていると考えていい。jasperとかcatalinaとかあるから。
ははあ、そういう方法がありましたか。
これはいいヒントになります。ありがとうございました。
>>438 >でもJBossはTomcat6を内部に持っているからTomcatと同じと見なせてテストを省略できるとして、
あるあ・・・・・・ねーよwwww
こんな奴が評価するなんて・・・・ねーよwwww しかも、ソースは2chかよwww
なんか性能評価と機能評価がごっちゃになってるな。 Tomcat一択でいいだろ、素人ならBestよりBetterだ。 より完璧な環境より、ワークアラウンド情報が豊富な環境の方が運用しやすい。
443 :
デフォルトの名無しさん :2007/11/14(水) 22:47:02
すみません、 いろいろとググッたのですが 分からなかったので質問させて頂きます JAVAからruntime.execでUnixコマンドを 実行した際に、 java.security〜 exception execute と叱られます。 ポリシー設定ファイルは、readとwriteの指定のみですが 出来ればポリシー設定ファイルは変更せずに Unixコマンドを実行したいのですが 何か方法はございますでしょうか? 宜しくお願い致します。
Appletでないなら、普通にできたと思うが。 Appletでやりたいのならあきらめろ。
JNIで通すとかlocalhostサーバにコマンド実行を頼むとか?
>>443 まあ、やれない方が自然だわな
shとかかませば出来るかしれんけど
Appletからじゃ出来るのは問題
448 :
デフォルトの名無しさん :2007/11/14(水) 23:08:53
皆さんありがとう!
セキュアにしたいってのと、特定のユーティリティを利用したいってのは、 運用を考えたときの当然の悩みだと思うけど、何でポリシーへの追記まで制限すんの? 無理なやり方はセキュリティホールの温床になると思うんだけど。
450 :
443です :2007/11/14(水) 23:21:32
皆様すみません、 このソースはサーブレットですが、 何か妙案ございますでしょうか? ちなみに、processbuilderでも叱られました…
451 :
443です :2007/11/14(水) 23:23:52
追伸ですが 777権限のシェルでも同じ内容で 叱られてしまいました… 度々すみませんです。
0111(OS) & 0110(Java) の答えは 6 だと思うのだが違うのか?
453 :
443です :2007/11/14(水) 23:37:23
確かに、セキュアに反した事だと思いますので、 運用面を含め調べてみます。 ありがとうございました。
同一ドメインで動くものならポリシーいじればいいやん。
455 :
デフォルトの名無しさん :2007/11/15(木) 00:20:35
phpからjavaのプログラムを実行して、その返り値を phpに受け取らせたいです。 どのように書けばいいか、教えて頂けませんでしょうか?
>>455 それはphpの質問じゃないのか?
外部プログラムを実行してその結果を受け取るのは
そのプログラムがjavaプログラムであるかないかによらない
http://118.16.21.156/cc.java sockを使ったプログラムを勉強中なのですが
上述のソースをEclipseで実行すると下記のようなエラーがでます
解決法を教えていただけませんか?
Exception in thread "Thread-0" java.lang.NullPointerException
at cc.ChatClient_GUI$Sender.checkAsyncExec(ChatClient_GUI.java:77)
at cc.ChatClient_GUI$Sender.run(ChatClient_GUI.java:63)
at java.lang.Thread.run(Unknown Source)
ちなみに鯖側のソースですが正常に動作します(telnetにて確認済み)
http://118.16.21.156/cs.java
458 :
デフォルトの名無しさん :2007/11/15(木) 01:38:25
web制作板で誘導されてプログラム板へ来たのですが、 illustrator10でjavascriptを利用する際の質問はどのスレに行けばいいのでしょうか…? それともここのスレでも大丈夫ですか…?
>>457 Senderのdisplayに何も代入してないじゃん
>>459 レスありがとうございます
Senderのコンストラクタに
this.app=app;
this.display=display;
と追加し133行目をnew Thread(new Sender(in,this,display)).start();
と書き換えてみましたがうまくいかないようです
ブレイクポイントをSender近辺に設定してデバッグ中ですがよくわからないです・・・
>>458 多分どこも持って行くところがないと思う。
>>458 ツールと言語の名前だけ聞けばWeb制作板で間違いないと思う。
というよりJavaとJavaScriptは全くの別物
とりあえず、『Illustrator JavaScript』でググレばいいと思う
色々情報載ってるよ
Illustratorという名前に惑わされず
普通にJavaScript勉強すればそのうちわかるんじゃとは思うが
とりあえず先にいったとおり
ここは『Java』スレであって『JavaScript』スレでないのでスレ違いです
463 :
デフォルトの名無しさん :2007/11/15(木) 03:56:38
javaからリモートサーバのphpの変数の値を受け取りたいんですが如何すれば良いでしょうか javaから同じくjavascriptの場合についても教えてください お願いします
>>230 ,
>>275 で質問させて頂いた者です。
オーナーの方の返事を待つ間、少しでも自分でやってみようと思います。
製作を他の方に依頼するのは頑張った後でも遅くはないと考え直しました。
それでコンパイルしようとすると、次の、
GlyphVector glyph = Font.createGlyphVector(
部分で以下のようなエラー情報が返って来ます。
>static でない メソッド createGlyphVector
>(java.awt.font.FontRenderContext,java.lang.String)
>を static コンテキストから参照することはできません。
>= Font.createGlyphVector(
> ^
Javaの道さんのところのFAQによると、(
http://www.javaroad.jp/faq/faq_error1.htm#q7 )
「明示的にオブジェクトを指定してメソッド、変数を参照すれば、エラーにはなりません」
とのことですが、この「明示的にオブジェクトを指定」をどのようにすれば良いのか判りません。
リンク先のサンプルをそのままコピーして当該部分に貼り付けたのですが駄目でした。
やり方を御存知の方がいらっしゃったら、どうか御教示ください。お願い致します。
環境は WindowsXP_SP2 及び JDK_1.6.0_03 です。
465 :
デフォルトの名無しさん :2007/11/15(木) 04:16:31
>>464 Fontのインスタンスを作ってから呼べってこと。
Font font = new Font(...);
GlyphVector gv = font.createGlyphVector(...);
>>463 URL クラスを使ってその PHP の URL からテキストでも XML でも何でもダウンロードしる。
>>464 Font font = new Font("Dialog", Font.PLAIN, 12); // ←グリフを取得したいフォント
GlyphVector glyph = font.getGlyphVector(...);
468 :
デフォルトの名無しさん :2007/11/15(木) 04:24:43
phpの内部の変数の値を参照したいんだけど javascriptも同じで URLでコンテンツダウンロードするだけで値を参照できるかな
469 :
デフォルトの名無しさん :2007/11/15(木) 04:28:00
まあできなかったから聞いてるんだけどね
>>468 何がしたいか分からん。PHP が作った HTML の中に入ってる文字を取り出したいならコンテンツ
ダウンロードして文字列解析しろ。HTML 内の JavaScript がはじき出す情報が欲しいなら難しい。
標準では無理。Mozilla の PINO か何か使え。
>>464 大雑把に言うとメソッドを実行するには二つの方法があります。
1. オブジェクトからメソッドを実行する方法
2. クラスからメソッドを実行する方法
用語はともかく、二つの方法があるということを抑えればOKです。
それでなぜそのエラーが出るかというと
1の方法で実行しないといけないメソッドを2の方法で実行しているからです。
付け焼刃でどうにか実現でき・・・るかもしれませんが、
急がば回れで入門サイトを見て一から勉強したほうが早いかもしれないかもしれないかも
472 :
デフォルトの名無しさん :2007/11/15(木) 04:45:33
>>470 さんきゅ
それが聞きたかった
やりたい事は参照それ以上は言う必要ないべ
PINOねPHPは無理そうだね
こんな短時間にたくさんの返答を頂けて感激しています。ありがとうございます。 m(_ _)m
>>230 さんに指摘された通り、一部小文字を間違えて大文字で表記していました。スミマセン。
それで教えて頂いた方法を試しているのですが、この間違いのせいかイマイチ上手く行きません。
また、ごく一部をのみを掲載さしたのがマズかったかと思い、当該部分を前後を含めて書き込みたいと思います。
>>230 のリンク先のサンプルから変更したのは、参照したいフォントをインストールされているものにしたのと、
クラス名を加えたくらいです。このままコンパイルすると、今度は「シンボルが見付けられない」と出ます。
教えて貰った方法でも色々と試してみますが、広い範囲を見て別のやり方が有れば宜しくお願いします。
import java.awt.Font;
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.geom.PathIterator;
import java.awt.geom.Rectangle2D;
import java.io.FileInputStream;
public class eps{
public static void main(String args[]){
FileInputStream fin = new FileInputStream( "MSgothic.ttf" ); //参照したいフォント
Font font = Font.createFont( Font.TRUETYPE_FONT, fin );
fin.close();
GlyphVector glyph
= font.CreateGlyphVector(
new FontRenderContext(new AffineTransform(), false, false),
"some text" //抽出したい文字列
);
}
}
Font font = new Font("MS ゴシック", Font.PLAIN, 12); で良いんじゃないかと。
スミマセン。またポカやからかしました。 上の「 = font.CreateGlyphVector( 」は大文字ではなく小文字で、「 = font.createGlyphVector( 」でした。 それで、そのままコンパイルしようと「キャッチかスロー宣言をしなければならない」とでるので、 Javaの道さんのサンプルを参照して、次のようにしました。 そうするとやっばり「シンボルが見付けられない」と出てきました。 import java.awt.Font; import java.awt.Shape; import java.awt.font.FontRenderContext; import java.awt.font.GlyphVector; import java.awt.geom.AffineTransform; import java.awt.geom.PathIterator; import java.awt.geom.Rectangle2D; import java.io.FileInputStream; public class eps{ public static void main(String args[]){ try { FileInputStream fin = new FileInputStream( "MSgothic.ttf" ); //参照したいフォント Font font = Font.createFont( Font.TRUETYPE_FONT, fin ); fin.close(); } catch (java.io.IOException e) { e.printStackTrace(); } GlyphVector glyph = font.createGlyphVector( new FontRenderContext(new AffineTransform(), false, false), "some text" //抽出したい文字列 ); } }
大文字と小文字を別文字として扱うのに慣れてなくてワヤワヤになっています。 御迷惑ばかりかけて本当にスミマセン。
import java.awt.*; import java.awt.font.*; import java.awt.geom.*; import java.io.*; public class eps{ public static void main(String args[]){ try { FileInputStream fin = new FileInputStream( "MSgothic.ttf" ); //参照したいフォント Font font = Font.createFont( Font.TRUETYPE_FONT, fin ); fin.close(); GlyphVector glyph = font.createGlyphVector( new FontRenderContext(new AffineTransform(), false, false), "some text" //抽出したい文字列 ); } catch (Exception e) { e.printStackTrace(); } } }
>>477 さん、どうもありがとうございました。この部分は上手くコンパイルできました。
元の部分をいじらなくても try とcatch で括るだけで何とかなるのですね。勉強になりました。
他にもワヤワヤになってしまった私の書き込みにレスを下さった皆様方に心から感謝します。
それで、今迄質問していたのはリンク先のソースの前半部分だけで、後半部分を付け足すとまた、
シンボルを見つけられません。
シンボル: 変数 glyph
場所 : eps の クラス
Shape outline = glyph.getOutline();
^
と出て来てコンパイルできません。前半部分と同じように
try {
●●●●●●
} catch (Exception e) {
e.printStackTrace();
}
で括れば良いのかと思って色々な部分に同文を挿入しているのですが、逆にエラー箇所が増えたりします。
教えて貰ってばかりで申し訳ないのですが、同じようなやり方でどこかを括れば良いのでしょうか?
今一度お知恵をお貸し下さい。お願い致します。(以下に二度に分けてサンプルを引用します)
//↓サンプルの前半部分 import java.awt.*; import java.awt.font.*; import java.awt.geom.*; import java.io.*; public class eps{ public static void main(String args[]){ try { FileInputStream fin = new FileInputStream( "MSgothic.ttf" ); //参照したいフォント Font font = Font.createFont( Font.TRUETYPE_FONT, fin ); fin.close(); GlyphVector glyph = font.createGlyphVector( new FontRenderContext(new AffineTransform(), false, false), "some text" //抽出したい文字列 ); } catch (Exception e) { e.printStackTrace(); } //↑サンプルの前半部分
//↓サンプルの後半部分 Shape outline = glyph.getOutline(); PathIterator iter = outline.getPathIterator(null); int type; float coords[] = new float[6]; //Postscript の newpath を発行 while (!iter.isDone()) { type = iter.currentSegment(coords); switch (type) { case PathIterator.SEG_CLOSE : //Postscript の closepath を発行 case PathIterator.SEG_CUBICTO : //Postscript の curveto を発行 case PathIterator.SEG_LINETO : //Postscript の lineto を発行 case PathIterator.SEG_MOVETO : //Postscript の moveto を発行 case PathIterator.SEG_QUADTO : //2 次 B スプラインを Postscript の curveto に変換して発行 } iter.next(); } switch (iter.getWindingRule()) { case PathIterator.WIND_EVEN_ODD : //Postscript の eofill を発行 break; case PathIterator.WIND_NON_ZERO : //Postscript fill を発行 break; default : //エラー break; } } } //↑サンプルの後半部分
全部tryでくくっちゃえばいいよ。
いい加減つまらんコンパイルエラーくらい自力で何とかしろ。 おまえのプログラムをデバッグするスレでも立ててそっちでやれ。
>>481 さん、上手く行きました! ありがとうございます。
本当に皆さんのお蔭です。ド素人の質問にこんなにも丁寧に答えて頂いて感激しました。
心から感謝いたします。本当に本当にありがとうございました。重ねて御礼申し上げます。
>>482 さん、申し訳ありません。以後このような事がないように気を付けます。
StreamTokenizerクラスのwordCharsで「'」(半角クオート)を指定したい時はどうすればよいでしょうか? StreamTokenizerクラスのオブジェクトstがあるとして st.wordChars(''','''); とやってもまぁエラーになります。 ダブルクオートで囲ってもだめでした。
"\'"
たとえば public static String A(){...}と、static public String A(){...} では 意味がちがってくるのでしょうか?よろしくお願いします
アクセス修飾子、static、finalなどの修飾子に並びは関係ないぞなもし。 おいらはpublic static finalの出現順になるように統一してるよ。 ちなみにNetBeansのコード補完もこのスタイル。 psfi<半角スペース>と打つと、private static final intに変換される。
cloneの意味が全然理解できないのですけれど newでインスタンスを作るのとcloneでインスタンスをつくるのとの 比較を交えて頭のチョット弱めの人でもわかる詳しい解説をよろしくおねがいできなかったでしょうか?
new = 白紙 clone() = コピー
似たようなオブジェクトをいくつも作る時とか(Prototype)、 可変なデータを持つオブジェクトの中身が意図せず変わることを防ぐためにコピーするとか。(防衛的コピー) あとcloneの代わりにstaticファクトリメソッドやコピーコンストラクタを使うこともある。
>>492 newは中身空っぽの新しいオブジェクトを作る
cloneは元のオブジェクトと同じ中身のコピーを作る
newは自分が指定したクラスのオブジェクトを作る
cloneは元のオブジェクトと同じクラスのオブジェクトを作る
newは何もないときでも新しいオブジェクトを作れる
cloneはコピー元となるオブジェクトが必要
newはコンストラクタを呼び出す
cloneはコンストラクタを呼び出さない
newは予約語
cloneはメソッド名
Stringでいうsubstrのように、 int配列の途中から最後までの部分配列を作る方法を教えてください。
Arrays.copyOfRange
int[] b = Arrays.copyOfRange(a, from, to);
ありがとうございます。試してみます。
Lpanel = new JPanel() ; Rpanel = new JPanel() ; JSplitPane spane = new JSplitPane() ; spane.setLeftComponent(Lpanel) ; spane.setRightComponent(Rpanel) ; // Lpanelにボタン類を配置してRpanelで描画するとか
>>500 panel.add(animationCanvas);
Rpanel extends JPanel{
誤爆したorz class PaintPanel extends JPanel { public void paint(Graphics g) { //描画したい処理 }} // PaintPanel Rpanel = new PaintPnel() ;
506 :
デフォルトの名無しさん :2007/11/16(金) 21:16:28
>>505 あーなるほど、試してみます。
有難うございました。
>>505 なんどもすみません、描画したい処理ってのは
init(){
からを描けばいいんですか?
度々申し訳ありません。
>>230 で質問し、助けて頂いた者です。 m(_ _)m
>>230 のリンク先で公開されている
TrueTypeフォントのアウトラインを取得してEPS形式に変換するJAVAは、
掲示板の皆さんのお蔭でコンパイルできました。それで、その時、
「あれ? コンパイルはできたけどEPSファイルが出力されないぞ?」
と思い、EPSファイルでの保存は別なんだと遅ればせながら気付きました。
それでJAVAへの道さんでファイルの入出力を勉強しまして、
FileOutputStream fos = new FileOutputStream("test.eps");
BufferedWriter bw = new BufferedWriter(osw);
String msg = "%!PS-Adobe-2.0 EPSF-1.2\n%%BoundingBox: 0 0 20 20\ngsave\n\ngrestore\nshowpage";
のようにすればEPSファイルを出力できることが判りました。
そこで質問なのですが、出力したEPSファイルの中に、
変換されたアウトライン情報(
>>479-480 で得た情報)を書き込むためにはどうすれば良いのでしょうか?
JAVAへの道さんの言う「オブジェクトのシリアライズ」もしくは「パイプ入出力」のことかと思って、
色々と入出力のやり方を試しているのですが、いまいち上手く行きません。
質問ばかりで申し訳ないのですが、どうか御教示願います。
import java.io.*; public class InOut { public static void main(String args[]){ System.out.println("作成したいファイルを入力してください"); try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(str))); pw.println("これから"); System.out.println("入力よろ"); pw.println(br.readLine()); }catch(IOException e){ System.out.println(e); } } } 最近javaをはじめたのですがファイル出力するプログラムを作ったのですが、ファイルは作成されるけど 文字が出力されません。おかしい点を指摘して欲しいです! よろしくおねがいします
>>510 うあああーーーー!
そういう事でしたか。ありがとう^^
>>508 まずEPSファイルの仕様を調べて、んでその仕様通りに書き込めばいいだろう
自動的にEPS形式で出力してくれるような超便利メソッドは無い
>>512 どうもです。あの少し誤解が有るようですが、
>>479-480 のクラスでTruTypeフォントのアウトラインを取得し、
それをEPS(PostScript)形式に変換しています。
その変換結果の外部ファイルへの出力(書き込み)の仕方がよく判らないのです。
最初は「拡張子の.classを.epsに書き換えればよいのかな?」と思っていたのですが全然違うようですし。
JAVAを勉強し初めて一週間もたたないので用語が適切かどうか判らないのですが、
「オブジェクトの実行結果を再利用したい」ということになるのでしょうか。
もしくは「メソッドの結果を出力したい」になるのかも。
ど素人なのでトンチンカンなことを言っていたらスミマセン。
>それをEPS(PostScript)形式に変換しています。 どこで変換してるの? 479-480 のサンプルコードでは、その部分がコメントで省略されてるように見えるが。
情報を小出しにするアホはほっとけ。
>>514 そ、そうなんですか !?
確かにサイト上で公開されていたオリジナルのコードにはコメントが付いていませんが、
コメントを付けないと「';' がありません」というエラー表示が出て来てコンパイルできないので、
てっきり作者様のコメントの付け忘れかと・・・・。
ひょっとして私の素人考えでとんでもないミスをしているのでしょうか。
>>515 すみません。前に
>>482 さんに叱られたので短くするように努めたつもりなのですが・・・
お気に触ったなら申し訳ありません。
>>516 君がコメントアウトした部分は実コードじゃなくて 「この処理は自分で考えろ」 という意味。
Postscript のフォーマット知らないでそのファイルを作るコード書けるわけないじゃん。
>>517 そうだったのですか・・・。全く思いつきもしませんでした・・・・。
素人考えで作者様に無礼をしたのを始め、スレ汚しをしてまったことを皆様にお詫びします。
もっと勉強してから出直して来ます。御指導ありがとうございました。
JDK 5.0 Update 14 Windows Offline Installation, Multi-language が、インストールできません。XPなのですが data1.cabは壊れています。 ネットワークエラー、読み取りエラーの可能性があります。 みたいな事がでて中止になってしまいます。 何回もアンインストール、ダウンロードしてもダメなのですが どうしたらよいのでしょうか?
あきらめる。 壊れていないものをダウンロードできるまでがんばる。 別のダウンロードアプリを試してみる。 お札を貼る。
ん〜、諦めたくないです・・・ こういうことって結構あるんですか? javaの開発ツールを何とかして使いたいのですが;
当然アンチウィルス切って落としたんだろうな? 基本から見直した方が良い。 実測96kbpsで途中で何度も回線ぶった切れてDLしたファイルでも問題なくインストール出来てるぞ。
一度ブラウザのキャッシュを全部クリアして再ダウンロードすれ。 ダウンロードしたらファイルサイズくらい確かめろ。
C:\Documents and Settings\ユーザ名\Local Settings\Temp 以下のファイルを消してみるとか。 以前同じ現象になった時これで直った。
HTMLのフォームでファイルをPOSTする代わりをJavaにさせたいのですが、どのような方法を用いるのがよいでしょうか? できれば標準ライブラリのみで行いたいです。 サーバー側にはPHPでアップロードしたファイルを移動するスクリプトのみ置いています。
アプレットでやろうと思ってるなら、クライアントのセキュリティポリシー変えない限りは無理です。 アプリケーションでやろうと思っているなら URLConnection クラス使って multipart/form-data 形式で 送ってください。
>>525 >できれば標準ライブラリのみで行いたいです。
commons の HttpClient を使えば簡単なのに。
>>526 アプリケーションでやろうと思っています。
単純に以下のようにやってみましたが結果は変わりませんでした。
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "multipart/form");
DataOutputStream out = new DataOutputStream(con.getOutputStream());
// ファイル書き込み
out.close();
この他にもContent-Disposition,name,filenameなども書き込んでみましたがだめでした。
もしよろしければ引き続きご教示ください。
>>527 そうなのですが、今回は自分で実装してみたかったんです。わがまま言って申し訳ありません。
>>528 multipart/form-data の場合にどういふうにデータが送られるかわかってる?
RFCを読めとまでは言わないが、ちゃんと調べろよ。
Content-Lengthに送るデータ長をセットしないと…
531 :
530 :2007/11/17(土) 14:45:10
あ、ごめん
532 :
521 :2007/11/17(土) 15:36:33
マカフィー消してましたし ファイルサイズも合っていましたが、ダメでした・・・ C:\Documents and Settings\ユーザ名\Local Settings\Temp 以下のファイル消してもインストールできませんでした; 頑張りまつ。
java.io.Readerで読み込む場合、サロゲートペアというものはどうやって判断すればいいのでしょうか? Shift_JISと同じ感覚で、D800〜DFFFが検出されたら、無条件に次のcharとセットとしてよいのですか?
最初のcharがD800〜DBFFで、次のcharがDC00〜DFFFだったかと思うが、 そんなに気にするようなもんかね
判定したいなら Character クラスにそれ用のメソッドがある。
>>534 なるほど、後続文字にも領域指定があるんですね。
サロゲート・ペアのペアってなんだろうと思っていたんですが意味がわかりました。
全ての文字を上位サロゲートで比較し、真なら後続を下位サロゲートと比較、
そこで否を返したらIOExceptionでも投げた方がよさそうですね。
>そんなに気にするようなもんかね
Vistaで第四水準漢字が登場してるから準備はしとくべきかと。
537 :
デフォルトの名無しさん :2007/11/17(土) 16:51:49
System.out.println()はSystem側からみるとoutメソッドですが、 println側からみるとoutクラスとAPIで見る限りのっていたのですが。 どうなっているのですか? 詳しい方お願いします。
out はメソッドでもクラスでもありません。 out は System クラスのフィールドであり、そして out は println() メソッドを持っています。
>>537 out は System クラスのフィールドで、println は PrintStream クラスのメソッドだ。
class System {
public static PrintStream out;
}
class PrintStream {
public void println(String s) { ...... }
}
みたいな感じ。
例えば
PrintStream x = System.out;
x.println("Hello");
のようなこともできる。
540 :
デフォルトの名無しさん :2007/11/17(土) 17:07:04
538さん有難う御座います。 そうしますと、A.B.CとなるとAクラス中にあるBクラスの中にあるCメソッドという考え方は 間違っているのですか?
>>540 Aクラス内のBクラスのCメソッドかもしれないし、
AクラスのBフィールドのCメソッドかもしれないし、
AパッケージのBクラスのCメソッドかもしれないし、
変数AのBフィールドのCメソッドかもしれないし
場合による
java以前の別のところの基礎ができてない八が最近多いな。
interfaceAをClassBとimplimentsしているとき、 interfaceAの型に入れたClassBのインスタンスはinterfaceの中の メソッドしかつかえませんか?
>>543 基本はそう
ClassBにキャストすればClassBのメソッドを呼べないこともない
Some.class.isAssembleFrom(Other.class) とした時に 「メソッド isAssembleFrom(Class) は raw 型クラスに属しています。 総称型 Class<T> への参照はパラメータ化される必要があります。」 と警告が 出るのですが、これはどう直せば良いのでしょうか?
546 :
デフォルトの名無しさん :2007/11/17(土) 17:54:49
あるファイルと同じオーナーやパーミッション(属性)を持つファイルを作るには どうしたらいいんでしょうか? ファイルを編集して保存するとき、一旦テンポラリに保存してからリネームするようにして 安全性を向上させたいんですけど、そうするとファイルの属性が変わっちゃうのに気づいて 困っています。 OS依存になりそうなんで、 Java だけでは無理だったりしますか?
>>545 1. Java1.4 でコンパイルする (できるなら)
2. @SuppressWarnings("unchecked") (型信頼性の低下等)
3. 宣言等で総称型に対応させる。
>>545 isAssignableFromだよね?
その書き方でその警告は出ないはずだがな
Class someClass = Some.class;
Class otherClass = Other.class;
someClass.isAssignableFrom(otherClass);
などとやってるのなら
Class<?> someClass = Some.class;
Class<?> otherClass = Other.class;
someClass.isAssignableFrom(otherClass);
とすればいいんじゃない
549 :
デフォルトの名無しさん :2007/11/17(土) 18:01:11
ScheduledThreadPoolExecutorをある時間が来たら終了させるには shutDounNow()を使うしかないんでしょうか? shutDown()だけでは終了しなかったので質問させてもらってます
>>546 今のところJavaだけでは無理
ファイルのオーナーとかそういうものは扱えない
こういうのはどうだろう
(1) 現在のファイル内容をテンポラリにコピー
(2) ファイルに書き込み
(3) テンポラリ削除
2で失敗した場合
(3') テンポラリから元の内容をコピーし戻して復元
>>549 shutdownは別に現在実行中のタスクをキャンセルしたりしないから
単に新規タスクの受付を停止して、現在実行中のタスクが終わるまで待ってからスレッドを片付けるだけ
shutdownNowは実行中のタスクもキャンセルさせる
>>547 >>548 メソッド名間違えてました orz
それと Class 直接じゃなくて宣言された変数使ってました orz
<?> で良いんですか。Class クラス扱おうとするとこの警告ばかりでて困ってました。ありがとうございます。
>>532 こういうPC関連の問題は、原因の切り分けが重要。
まずはインストールファイルがおかしいのか、PCがおかしいのかを特定しろ。
ダウンロードしたファイルを別のPCにインストールして、同じエラーが出たらファイルに原因、成功すればPCに原因がある。
もしPCが原因なら、ユーザーを切り替えて/新設してインストールしてみるとか、
JREのバージョンを最新にしてみるとかetc・・・。
javaのインストーラはjdkのバージョン調べて更新してるだけだからそれでだめならファイルそのものも、そのファイルを落とした環境のせいって事になるな。
>>532 にはOSクリーンインストールした方が早い気ガス。
>>553 何とかインストールできました!
根気強くフォルダを変えながら
落とす→削除を繰り返したらできました。
原因はよくわかりません;
レスくれた方々ありがとうございました。
>>554 クリーンインストールってインストールCD必要ですよね?
お金に余裕があるときに検討してみます。
>>550 ありがとうございます。やっぱり Java では無理な感じですね。
元々安全性を向上させようってのがアプリや PC のクラッシュを視野に入れて
いるので、その方法だと 2 でそういう事態が発生した場合にやっぱりファイルが
壊れた状態になってしまいますんで、望んだ結果にはなりません。あと、 2 で
アプリが捕捉できる失敗した場合、 3' も失敗することが多いんじゃないかと思います。
558 :
デフォルトの名無しさん :2007/11/17(土) 18:55:06
>>551 shutDownNow()しないと
上記のExecutorを生成したThreadが何時までも残って
待機ループがかかったままになっちゃうんだよね
やっぱりこれしかないのかな
559 :
デフォルトの名無しさん :2007/11/17(土) 18:56:10
ファイルの共有を目的にしてるのかな? それならストリームを共有するなり読み込んだ変数を共有する方が早い
>>557 3' が失敗したら、元のバックアップがここに残ってるから手で復元してねっていうエラーメッセージを出すとか
Javaだけで出来るのはそれくらいじゃないかなぁ。
あとはNIO2を待つか、JNIを使うか…
>>556 メーカー製でインストールCDないならHDDの別パーティションにデータ入ってるだろ。
それをCDに焼け。
お前さんはここよりwindows板行った方が良い。
JDK 程度でクリーンインストールなんて勧めんなよ。
JDKが問題なんじゃなくて
>>556 の環境に問題があるのに読んでて分からんのか?
だからその程度で素人にクリーンインストール勧めんなよ。おまえリセット世代か? てか環境に問題ってのも所詮お前の伝聞推測だろ。
Velocityにはwhile文がありませんが、任意の回数だけループしたい場合はどうすればいいでしょうか。 <select name="month"> #for($i=1; $i <=12; $i++) <option value="${i}">${i}</option> #end </select> ということがしたいです。
Windowsは、多少壊れてるくらいがちょうど良い
$velocityCountっていうループカウンタがあるから、 new byte[15]みたいなやんちゃをすればできそうだ。 Velocityは有限要素に対する繰り返し処理しかサポートしない方針だから breakとかもたぶんないんだろうな。
>>567 ありがとうございます。
velocityのテンプレートで new とかできましたっけ?
Veocity は知らんけど、この手のは XSL みたいに再帰呼び出しとかで 任意回数ループ実現すんじゃないのか?
なんだ、範囲演算子がつかえるんじゃないか。 [1..12]でいけるみたいだぞ。
web.xml において、 <servlet> <servlet-name>service1</servlet-name> <servlet-class>service1Servlet</servlet-class> </servlet> <servlet> <servlet-name>service2</servlet-name> <servlet-class>service2Servlet</servlet-class> </servlet> <servlet> <servlet-name>service3</servlet-name> <servlet-class>service3Servlet</servlet-class> </servlet> と書くのがめんどくさいので、なんかもっと簡単に書ける方法はありませんか。 たとえば正規表現使って <servlet> <servlet-name>service(.*)</servlet-name> <servlet-class>service${1}Servlet</servlet-class> </servlet> とか。
573 :
デフォルトの名無しさん :2007/11/17(土) 22:25:14
javaからOLEを利用するためのライブラリを教えてください
574 :
デフォルトの名無しさん :2007/11/17(土) 22:30:50
分かったからいいです
575 :
デフォルトの名無しさん :2007/11/17(土) 22:32:36
>>572 ループで文字列生成していくのが一般的です
576 :
デフォルトの名無しさん :2007/11/17(土) 22:39:34
577 :
572 :2007/11/18(日) 00:04:19
>>575 つまりweb.xmlにはそういう便利機能がないということでしょうか。
>>576 invokerは使うなと言われています。セキュリティ的によろしくないとか。
今どきはFront Controller Patternを使うから、たくさんのservletを 書き並べる必要もないし、web.xmlにそんな機能はいらないでしょ。
でも、フレームワークの設定ファイルに同じ事を書くんだったら、web.xmlでもいい気がしてきている。
RMI のリモートオブジェクトって毎回 Naming.lookup() で取得した方が良いのか 最初に取得して使いまわした方が良いのかどっちが良いんでしょうか? 使いまわしてると RMI レジストリや RMI サーバ再起動したり構成変わったときに 変更が反映されますか?
>>580 どっちでも同じ
サーバが再起動してそれがクライアントに反映されるって意味が解らん。
インターフェイス周りは動的に変更できないし、鯖の処理が変っただけならば当然変るだろ?
だけど、シリアライズとかの問題もあるから普通は鯖を変えたらクライアントも再起動するんじゃないか?
>>581 あーすみません、リモートオブジェクトのサーバが切り替わったり (同じインターフェースで
別サーバから rebind() されたり)、レジストリだけ死んでた時にクライアントからはどういう
動きになるんだろうと疑問に思った次第です。よくよく考えると聞きたかったのは結局↓です。
リモートオブジェクトの接続先ってクライアント側のインスタンスが固定的に持っているのか、
それともメソッド呼び出すたびにレジストリに接続先を問い合わせるのか、(前者のような気が
するけど) どっちなんでしょうか?
>>585 前者。
変った事がクライアントで解るのであれば、再度レジストするというのはあると思う。
鯖が死んだ場合、クライアントではリモートオブジェクトの実行時に例外が発生する(試してみてくれ)。
したがって、例外をcatchしたならば代替鯖(あれば・・・だけど)へ再度投げなおすというのはクリティカルなシステムならば充分にある話。
どっちかといえば、フレームワークのような部分だけどRMIを用いた有名なフレームワークって聞いたことないな。
大学に入ってから物忘れがひどいのですが これはガーベジコレクションが働いているのでしょうか
WaitForMultipleObjects() に相当するものってありますか? 複数のオブジェクトのどれかに notify() が来るまで待ちたいんですけど。
>>589 java.util.cocurrent.CountDownLatch
>>590 API リファレンス見てみましたけどそれって全部の通知が来るまで待ちませんか?
>>591 // 並行処理するメソッド
void doThreadMethod() {
// 処理
latch.countDown();
}
// 監視スレッド
void doMultiThreadWorks() {
//すべてのスレッドのインスタンス変数で共有させる
CountDownLatch latch = new CountDownLatch(1);
// 各スレッドの起動
WorkerThread thread1 = new WorkerThread(latch);
WorkerThread thread2 = new WorkerThread(latch);
caunt.await(); // どれかが終了するまでブロック
}
ロガーを使ってない人と使ってる人はどちらがおおいとおおもいですか?
caunt.await() ってなんだw latch.await() ですorz 追記 各並行処理をさせているメソッドだけど、1つ目が終了しても処理は続行されるんで注意するべし 定期的に getCount() を呼んで他のスレッドが処理を終わらせたかをチェックするべし。
ロガーってのはJDK付属のデフォルトLoggerのことか? それともLog4j等のAPIも含めての話か? 含めての話ならば使ってないシステムはウンコだろ 簡単なサンプルとかユーティリティでもない限り、ログを吐かずにどうやって開発するのか不明
>>592 アッー
count 1 で作ったものを共有すればいいんですかー、ありがとうございます。
ロガーを含めてです。 システムは自作のアプリケーションです。 ぜひアドバイスお願いします。
>>597 2〜3のクラスで構成される程度のプログラムならイラネ
アプリケーションというくらいならばログくらい埋めて置くべき
てか、System.out.printlnと書くところをLoggerを使えばいいだけ
書く手間はほとんど変らない。
Loggerなら後で出力したくないならば設定できる。
後から消すとか面倒だろ?
Sysout変りに使う程度ならばJDKのLoggerで充分
>>598 いままでほとんど炉がー使ってなかったけど、そんなに手軽なのか。
今度からprintlnの代わりに使うことを検討してみるわ。
LoggerのFINEとFINERとFINESTの使い分け方がわからね〜 誰か教えてくれ
というか英語の意味まんまじゃね?
603 :
デフォルトの名無しさん :2007/11/19(月) 02:24:12
質問です。 XML処理で、生成したDocumentBuilderインスタンスを、処理負荷の低減のために public class Hoge { private static DocumentBuilder db = dbf.newDocumentBuilder(); ... public static Document getDocument(InputStream in) { return db.parse(in); } } みたいに全てのHogeインスタンス間で再利用したいのですが、Javadocには 「DocumentBuilderがスレッドセーフである保証はない」と書かれています。 ならば、スレッドごとにDocumentBuilderを生成して、個々のHogeインスタンスに に外から差し込んでやれば良いということになりますが、Hogeクラスの利用者に、 内部でDOMを使っていることを意識させるようなコードにしたくありません。 Hogeインスタンス自身が、自分をアクセスするスレッドを識別して、 そのスレッドごとに一つだけDocumentBuilderインスタンスを生成するような テクニックはないでしょうか。 #synchronizedを使う以外の方法で。
ThreadLocal
605 :
602 :2007/11/19(月) 02:45:15
>>604 ありがとうございます。それで解決できそうです。
質問です ウェブカメラを使ったプログラムを作成したいのですが (録画、メールで画像転送など) Javaでは難しいでしょうか? やはりCの方が無難でしょうか?
そんな難しくないだろ。 モーション JPEG で流れてくるカメラならただ保存するだけじゃん。
609 :
デフォルトの名無しさん :2007/11/19(月) 12:12:24
超簡単です ストリーミングなんかもやりやすいです
610 :
デフォルトの名無しさん :2007/11/19(月) 14:07:14
JavaMediaFrameworkとか使えばいいんじゃまいか?JMFで具ぐれ
javaでフローチャート書くライブラリってないかな? 他の言語なら見つかるんだけど。
612 :
デフォルトの名無しさん :2007/11/19(月) 15:27:14
てかjava使うときにフロー書くか?
Java 設計でフロー書きたいんじゃなくて Java から使えるライブラリ探してんだろ。 難儀だが Eclipse のモデリングフレームワークでも調べてみたらどうだ。
アクティビティ図ならたくさんありそう
615 :
デフォルトの名無しさん :2007/11/19(月) 15:34:48
JasperReportsで2つほど質問です。 JasperReportsを使ってExcelを作成してるプログラムがあるんだけど、 1.セル幅を超えると値が切れてしまう。 2.セルの表示形式を「文字列」に設定したい。 ググってみてもヒットしない状態。。 方法知っている人いたら御教授おねがいします。
616 :
デフォルトの名無しさん :2007/11/19(月) 15:42:51
615追記 1で、「列幅を広げる」は最終手段。 2は値が数列「00052」みたいな場合、「52」ってなってしまうので。。。 先頭に「'」をつけるのは最終手段。。。 Javaもしくはjrxmlで設定可能な方法がわからん。。
java でeclipse を使ってコンパイルして実行しようとしています。Enumeration という記述にエラーが出ているのですが 何がわるいのでしょうか・・・。 javaの6.0を使っています。もうEnumeration はサポートされていないのでしょうか?
何らかの流れ図は書くけど、フローチャートは書かんな。 学校ならまだしも。
619 :
デフォルトの名無しさん :2007/11/19(月) 17:10:56
>>617 変数名にenumを使ってるんじゃないの?
620 :
デフォルトの名無しさん :2007/11/19(月) 17:22:39
UML使った方がよくね
OOPやテストファーストを習得すると、フローチャートを書くことはほとんどなくなるからな。
622 :
デフォルトの名無しさん :2007/11/19(月) 17:55:42
ただフローチャートのロジックもたまにほしくなるときもある 残しておいて欲しくはあるね
UMLのなかにフローチャートはなかったっけ?あんだけあるんだから一つぐらい似たようなのがあるんじゃないか?
624 :
デフォルトの名無しさん :2007/11/19(月) 18:11:36
ある事はある
アクティビティ図あたりで代用
あんなもん意思疎通のための落書きみたいなもんなんだから フローチャートを適当に UML っぽく書いときゃ良いんだよ。
627 :
デフォルトの名無しさん :2007/11/19(月) 18:22:37
フローチャートは自分の頭の整理に使える
628 :
611 :2007/11/19(月) 18:23:51
今、シナリオライタ用エディタ作ってて箱書きの画面作るのにいわゆる"フローチャート "を描画しなきゃいけないんだよ。 それでjavaから使えるライブラリがないか調べてたんだけど java以外の言語ならいくつも見つかったんだけどjavaだけ見つからなくて聞いてみた。 eclipse周りか・・・あれeclipseに依存してなかったっけ? とりあえず調べてみる。ありがとう。
629 :
デフォルトの名無しさん :2007/11/19(月) 18:24:21
630 :
デフォルトの名無しさん :2007/11/19(月) 18:28:11
OOOSDK使うよろしあるよ
>>629 まず logs の下の catalina.out を見ろ。失敗してるなら大抵そこに何か出てる。
そこが大丈夫そうならコマンドプロンプトから netstat -a と打ってローカルの 8080 で LISTEN してる
奴がいるか確認しろ。パーソナルファイアウォールとか入れてるなら一度気ってみれ。
632 :
デフォルトの名無しさん :2007/11/19(月) 18:40:37
>>631 ありがとうございます。
8080はLISTENされてませんでした。
ウィルスバスターは自分の権限で切れないようになっていますので
管理者の方が戻ってきたら聞いてみようと思います。
637 :
628 :2007/11/20(火) 00:26:43
thx! JGraph使ってみる。
JGpaphって初めて知ったけどなかなか良さそうだね でもフローチャートくらいならJGraph使わなくても簡単に作れそうだな
>>636 何したいのかよくわからんかった。Applet として作りたいのか、swing
使いたいのか。いろいろなところから切り貼りしてるの?
とりあえず、applet としては animation だけで動いているよ。
あと、animation なら swing.Timer が楽だと思う。
640 :
636 :2007/11/20(火) 12:36:01
>>639 最終的に、数値を入力さして、結果を計算するときと、数値が全部入力されてないとき
にアニメーションを数回動かしたいんです。(口が開いているのと閉じている絵です)
http://up.mugitya.com/img/Lv.1_up40590.jpg.html 色分けしてみました。
最終的にはJFrame(全体)に三つのJPanelを配置して身体に関するプログラムを作成したいんです。
その一部として、とりあえずJFrameにアニメーションをaddしたJPanelを配置してみたいんです。
説明が下手ですみません・・・
641 :
デフォルトの名無しさん :2007/11/20(火) 12:56:09
シェイプを拡張して作った方がはやそう
そういや俺今スプライトクラス作ってる。
643 :
デフォルトの名無しさん :2007/11/20(火) 19:10:07
スプライトクラスって何?
class Splite { Rectangle rectangle; Image image; void draw(){…} } たぶんこういうの
645 :
デフォルトの名無しさん :2007/11/20(火) 19:25:26
なるほど
すまん人の書いたプログラム見ててわからないんだけど >for(String s:wordList) これかっこの中どういう意味?初歩的すぎてか調べにくくて
わかりました
649 :
デフォルトの名無しさん :2007/11/20(火) 23:01:37
http://sakuratan.ddo.jp/uploader/source/date59661.zip 上記のHogeSrv内でクラスDBAccessのインスタンスを作って、
そのメソッドsetAccountDataで
DBAccessクラスのprivate変数idとpasswordに
データベースから検索した値を格納するプログラムなのですが、
setAccountData内で呼び出しているsetId,setPasword
の直後ではちゃんとidとpassに値が格納されているのに、
setAccountData後にHogeSrv内でidとpassを呼び出すとnull
になってしまいます。
本当に色々試したのですが、どうしても分からないのでどこが悪いか、
どなたか教えてください。
ココに書き込んでる人でeclipse使いってどのくらいいます? どうもとっつきにくいねこれ・・・
え〜?なんで? 最強に使いやすいじゃん
んじゃ、どのIDEが使いやすいっての? 自分はNetBeansに乗り換え中だけど。
おれもnbのが好きだけど、エンタープライズ用途だとeclipseのが有利じゃないかな プラグインが充実してるってのが一番の理由。 nbはエディタ的には例外catchを今のtryブロックに埋め込むって動作がサポートされればなぁ。
>>649 cd.setId(cd.getResults(1, 1));
cd.setPassword(cd.getResults(1, 2));
↓
this.setId(cd.getResults(1, 1));
this.setPassword(cd.getResults(1, 2));
じゃないの?
>>650 ノシ
基本的にはEclipse使ってるけど,
たまにNetBeansも使う
656 :
649 :2007/11/20(火) 23:33:06
>>654 なるほど!ありがとうございます出来ました!!
何だかんだで今日のPM6時からやっていて
今までどうしても分からなかったので激しく助かりました!!
もう半泣きでしたが、これでやっと眠れます。
めんどくさい内容なのでスルーされるかと思いましたが、
ちゃんとしたレスをくれて本当にありがとうございました!
大体何が Net なんだよ。 網豆って何だよ。
>>653 6.0はサポート済
JavaEE関連だと確かにEclipseは色々充実。
でも、GUI周りとかはNetBeansは最強だし、TomcatやGlassFish使う分にはnbも充分機能する
何はともあれ6.0サイコー。
自分の中じゃ
NetBeans6.0 = Eclipse3.3 > Eclipse3.2 >>> NetBeans5.5 >>>>>>>> JBuilder
最後は間違いないなw
Javaだけで見るとnbもeclipseも大して変わらないけど、C++とかruby使い出すと全部一緒に出来るeclipseが断然有利。 Javaしか使わないならどっち使うかは個人の趣味かな。
661 :
デフォルトの名無しさん :2007/11/21(水) 00:46:39
質問なのですが package ccc; //import ccc.cns_other; public class cns_main{ public static void main(String args[]){ cns_other cns = new cns_other(); } } このようにして、importのコメントアウトをはずして、newを使わずにcns_otherの コンストラクタを呼び出す方法はあるのでしょうか?
さっぱり意味がわからない importと、newを使わずにコンストラクタを呼び出すことの間にどういう関係があると思ったの? なんでnewを使いたくないの?
663 :
デフォルトの名無しさん :2007/11/21(水) 00:54:49
静的クラスにする。
664 :
デフォルトの名無しさん :2007/11/21(水) 00:56:57
665 :
デフォルトの名無しさん :2007/11/21(水) 01:01:53
JMFに関して質問してもよろしいでしょうか? JMFで一つのカメラからキャプチャする事は可能なのですが 複数のカメラからキャプチャしようとすると失敗してしまいます。 現在は Player player1 = Manager.createRealizedPlayer(new MediaLocator("vfw://0")); Player player2 = Manager.createRealizedPlayer(new MediaLocator("vfw://0")); このようにプレイヤーを生成して表示させています。 ediaLocatorの設定がおかしいのだとは思いますがなにかいい方法はありますでしょうか?
なにがやりたいのかさっぱりわからん
668 :
デフォルトの名無しさん :2007/11/21(水) 01:03:19
やっぱりNetBeansが一番性に合ってるな むかしはVisualCafeとか使ったけどカスタマイズが今一むずかった eclipsはもう少しデフォルト機能をふやしてもいいような気がするし 3.n(いくつだったか忘れた)位から使ってる
669 :
デフォルトの名無しさん :2007/11/21(水) 01:06:28
>>666 やりたいことは、複数のカメラからキャプチャして録画を行いたいと思っています。
new MediaLocator("vfw://0")を二つ作ってしまうと
java.io.IOException: Could not connect to capture device
java.io.IOException: Could not connect to capture device
となってしまいます
>>661 どうしてnewを使いたくないのか述べよ
671 :
デフォルトの名無しさん :2007/11/21(水) 01:13:11
new を使いたくない意図が今一分からん
エスパーが通るよ public class cns_other { public cns_other() { // なんかの処理 } } を次のように書き換える public class cns_other { public static void doSomething() { // なんかの処理 } } で、mainは cns_other.doSomething(); でnewをせずに、コンストラクタwが呼べる。 正解だったら俺スゲーwwww
リフクレションでコンストラクタ呼べば一応できるな
いまだにリフレクションを理解していない俺に三行で説明してくれ。
クラスはメタ情報を持っている メタ情報にはそのクラスがどんなメソッドを持っているかなどが含まれる それらのメタ情報を使い、静的なコードではなく動的な形でメソッド等を使用できる 例えば、nameというフィールドを見つけたならば、getNameというメソッドを探して取得するなど
676 :
デフォルトの名無しさん :2007/11/21(水) 01:32:09
クラスローダーってどういうときに使うもの? 何が起こるの?
通常の開発では意識する必要はない。 使うのは特殊なフレームワークを実装する時など。 最近だとクラスのデータを呼び出される前にいじる時に使われる事が多い。 特定のメソッドの内容を書き換えてモックとして使用したり、デバック時にロギングを仕込んだり・・・ 後は実行環境(ローカル)にないクラスだが、それをどっかから取得して使うとか。 何が起こるかって? クラスがロードされるんだよ
意識せずとも使ってるよ
679 :
デフォルトの名無しさん :2007/11/21(水) 01:39:26
どうしてSwingって糞重くて使えないの?
クラスローダにはクラスをアンロードしたりリロードする機能が必要と感じるのだがどうか
>>680 アンロードは必要なほどクラスが多いのか?
リロードはHotDeployとか幾つか試みがあるよ
だけど、Hogeをリロードすると既に生成されていたHogeのインスタンスをどうするか?って問題が出るから限定された状況でしか使用できない
Javaは静的な言語だから美しい(性的な意味で)
>>679 V2C使ってるけど糞重くて使えないとは思わない
>>681 クラスメソッドのテストしたいときに、クラスをロード直後の状態に戻したいことがあって
テストケースの中でJavassistを使ってクラスを生成することで代替している
そうするとクラスローダにテストで使ったクラスのごみが沢山できてしまう
686 :
デフォルトの名無しさん :2007/11/21(水) 12:09:42
687 :
686 :2007/11/21(水) 12:46:14
宿題スレの方がやってくれていましたorz ご迷惑をおかけしました。
String.valueOf(int) Integer.toString(int) どっち派が多いんだぜ?
>>688 参考までに。
public static String valueOf(int i)
> この表現は 1 つの引数を持つ Integer.toString メソッドによって返されるものとまったく同じです。
>>688 Stringにしたいときはたいていprintxx系を使うときだから、ほとんど使わない。
強いて言えば下かな。
int a=1,b=2,c=3; hoge(""+a+b+c); こういう場合って計算順序が hoge(((""+a)+b)+c); っていうように前方からみたいに決まっていますか? 文字列"123"としたいのですが、 計算順序が決まっていなくて環境によって"6"みたいになると困るので教えてください。
>>691 +は左から結合していくと決まっているので安心して使ってくれ
>>692 レスありがとうございます。
地道に全部括弧で括るのも読みづらくて仕方ないので安心しました。
後から見た人間が優先順位で迷うような書き方はやめたほうが良い。
無限ループの中で、ServerSocketのaccept()メソッドを使ってクライアントからの接続を待機しているのですが、 いきなりイベントなどでServerSocketのclose()メソッドを呼び出すとエラーになります。 どうすればちゃんと動くようになるのでしょうか?
チラ裏: 最新のJDKでも、WindowsのNFS依存の問題で、 java.io.File#canRead()と、canWrite()は まともな値を返さないのね。。。 とりあえず、FISとFOSを使って回避したけど、 なんか気持ち悪いな。。。
どういう「ちゃんと動く」を期待しているのか書かないと、そりゃそーだとしか答えようがないのだが。
>>697 このエラーについて、ちょっと調べてみました・・・
プログラムをそのまま動かすことはできるのですが、SocketException が発生するので気持ち悪いです。
これを発生しないようにすることはできるのでしょうか?
コマンドライン引数であたえられた文字列を 縦書きに出力するって言う問題でて詰まりです。 一応プログラム中で指定すれば縦表示は出来るのですが 与えられた〜が無理です。ヘルプお願いします。
>>698 外からサーバソケットをクローズする前にフラグを立てれ。
IOException が発生した時にそのフラグが立っていれば 「正常終了」
private ServerSocket serverSocket = ...;
private boolean gracefulClose = false;
public void close(){
gracefulClose = true;
serverSocket.close();
}
public void run(){
try{
while(true){
Socket socket = serverSocket.accept();
…
}
} catch(IOException ex){
if(! gracefulClose){
throw ex;
}
}
return;
}
>>699 そりゃ単純に文字列の入力の問題なんじゃないの?
"標準入力 java"でググってみな。
>>700 なるほど・・・
catchの中でthrowを使うのは初めてです。
ありがとうございました。
学校で外部データから読み込んでプログラミングする宿題がでたんですが 学校では読み込めたものが家では読み込めなくなっていました。 Data A = new Data("test.txt",0); ↑こういう文字列で学校では普通に読み込んでました バージョンチェックしたところ学校では1.6.0、家のパソコンは1.6.0_03でした。 わかる方いましたら宜しくお願いします。
ちなみに本例外発生は仕様です。 ServerSocket.close > このソケットを閉じます。 現在 accept() でブロックされているすべてのスレッドが SocketException をスローします。
706 :
699 :2007/11/21(水) 16:24:48
解決しました。どうもです
>>704 コンソールには、どんなエラーなり例外なりが出てるか。
>>704 カレントディレクトリに本当にそのファイルがあるのか?
System.out.println(new File("test.txt").exists());
で確認すれ。
>>707 test1.java:9: シンボルを見つけられません。
シンボル: クラス Data
場所 : test1 の クラス
Data A = new Data("test.txt",0);
こんな感じです。
Data.java というファイルが必要とか言うことは無いの?
コンパイルエラーかよ orz その Data クラスとやらは学校から持ってきてんのか?
>>711-
>>712 Data.javaというファイルがないと無理って事ですね。
すいません、持ってきてないです。
明日学校で調べてみたいと思います。
しょうもない質問ですいません。
有難う御座いました。
714 :
デフォルトの名無しさん :2007/11/21(水) 17:35:57
初心者がスーパーハカーになれる、おすすめのサイト教えて。 将来的にはWebで使っていきたい。
氏ねw
Google
718 :
デフォルトの名無しさん :2007/11/21(水) 17:42:44
初心者が大歓迎されなかった件について
初心者ですらないからな
もうこのやり取り秋田 初心者大歓迎なんつっても中味はム板
721 :
デフォルトの名無しさん :2007/11/21(水) 19:14:35
ゲーム作りたい!っと思っているんですけど、 CとC++、どっちの言語がいいですかね。 (みんなC++はCを覚えてからって言うんですけど・・・)
JavaDBの中でユーザを設定できるDBってありませんか。 本番は商用DBを考えてますが、CD一枚でデモできればと考えています。
Stringの文字数を得るのはどうするのが定石ですか? lengthはコードポイント単位ですよね。
String.codePointCount()
コードポイント操作はCharSequenceでサポートしてくれたらよかったのに。 自分でもカウントできるけどcharAtを経由するのはコストが勿体無いお化け。
725です。
> lengthはコードポイント単位
はコードユニット単位でした、すみません。
>>726 ありがとうございます。
文字列全体の長さが欲しいときは
str.codePointCount(0, str.length())
とするんですかね。
jp.co.foo.common jp.co.foo.product01 jp.co.foo.product02 com.bar.* 上記のようなpackage構成で、product01とproduct02からcommon内の classを使用したいがために、common内のclassをpublicにしてしまうと com.barなpackageからも見えてしまうよね。 このような、管理上の理由で社内においてはpackageを分けたいけど、 社外には使わせたくない場合、何か定番なやり方ってあるものなのかしら。
>>731 社外にJar(バイナリ)を提供しなければいいじゃん
ちなみに、勝手に使っても変更の可能性もありますし、保証しませんので自己責任でってのがEclipseのプラグインでの対応
一応、SE7の新機能の1つとしてパッケージのアクセス制御的なものは予定されているらしいが。
>>732 すいません。説明足らずでした。
jp.co.foo.product01や02は、部品として売り物にしたいと
たくらんでいるのです。
(product01や02内のいくつかのclassをpublicにし、com.bar内から
好きに使用してもらいたいな、と)
生のclassを直接さわらせる以上、1つのpagkageにまとめるしかないんですね。
開発tool側で何とかできるか試行錯誤してみます。
ありがとうございました。
Scanner scanner = new Scanner(System.in); String a; double b,c; double max = 0; while(scanner.hasNext()){ a = scanner.next(); b = scanner.nextDouble(); c = scanner.nextDouble(); if(max < c / b){ maxman = a; max = c/b; } } sysout(maxman); というコードなのですが、 John 100 100 Bill 100 200 みたいなコンソールの入力を受けて、前者/後者の数字の数が一番大きかった人を出力したいのですが、エラーっぽいのが出てうまくいきません。どうしたらいいんでしょうか?
> エラーっぽいの その内容をまずよく見ることだな
それか自分がエスパーになることだな。
>>733 要は実装をクローズにしたいならばMS系で実装しろ、ということだ
commonパッケージにどんな技術が詰め込まれているかはしらないが、
そのパッケージを利用しようとする奴らは、そんな製品買わずとも自分で作れるかオープンソースから拾ってこれるだろうな
javaだしね。何気にOSS多い。
エラーっていうか、明確なエラーじゃなくて、なんか処理がとまる(?)んですよね。 デバッグで一行ずつ進めていっても途中で止まる・・・
>>737 > 要は実装をクローズにしたいならばMS系で実装しろ、ということだ
そういうことですよね。
たいしたものではないんですけど、保証できないものは
見せないにこしたことはないかな、と。
だから何?としか言いようがないぞ。 それじゃ状況が伝わらない。
>>740 パッケージプライベートにして new の代わりにリフレクション使って構築しろ。
インターフェースだけ公開しておけば良い。
>>740 使う側の自己責任が原則
勝手に使うならば使っていいけどサポート対象外でいいんじゃね?
そんな独自フレームワーク使わされた事あるけど、問題あってもソースは開示しねーわ、バグだらけだわ、使いずらいわ、糞高いわ、最悪だった思い出
ですよね・・・ 要するにwhileから抜け出せなくて出力できないってことです・・・ よくわかんない質問ですいません
>>743 リフレクション使って使用された時はどうするの?
言語仕様的に完全に隠蔽する事はできないんだよ
結局のところpublicだろうがなんだろうが、売るならばサポート対象はどこまでかを明確にするだけの話
>>747 御高説どうも。
責任範囲の明確化を設計に反映するだけの話だが伝わらなかったのか?
>>745 aがexitだったらbreakするとかどうにでもなるだろ……
>>748 インターフェイスが責任の範囲なんて聞いたことがないが?
そもそもコードがでたらめすぎる。
>>748 この場合、「責任範囲の明確化を設計に反映」するには通常の手段ではアクセスできないような作りにする必要があると思う。
言語仕様で規定されているやり方で取得できるのなら「責任範囲の明確化を設計に反映」できていないんじゃないかな。
>>747 に伝わらなかったのもしょうがないと思うよ。
>>750 君はドキュメントにどの機能を使っていいか/悪いかの責任範囲記述したら
あとは全部 public のコンクリートクラスで提供するのかい? そんな馬鹿なことはしないだろう。
やって良いこと/悪いことはインターフェースに適切に反映されなければならない。
どうしても反映しきれない時にはべからず集で逃げるのだが、なるべくそれは避けるべき。
>>753 ドキュメントは 「リフレクション使った場合は保証せず」 というしごく常識的な一言で済む。
誰もインターフェースだけで責任範囲を明示するとは言っていない。
ImageiconオブジェクトをPostgresに登録、出力するにはどうすればいいですか? また、画像をそのものと、画像から作ったImageiconではデータベースからの取り出しはどちらが速いですか。
>>753 Reflection 使ってアクセス制限破るのは通常の手段とは言わないと思う。
>>755 ImageIcon をそのまま保存
→ ObjectOutputStream 使ってシリアライズして得たバイナリを保存
画像そのものを保存
→ 元のファイルをのバイナリを読み込んで保存
→ プログラムで描画した結果なら ImageIO.write() でいったん PNG か何かでファイル化
データの汎用性考えたら一般的な画像ファイルの形式が良い。ImageIcon そのままじゃ
圧縮かかってるかも分からんし (やったことない)。あと数 kB 程度なら BYTEA 型で良いが
数十 kB 超えるようなら OID 型 (BLOB) 使ったほうがいい。
みなさん、ありがとうございました。 あげていただいたkeywordで調べてみると、興味深い世界が広がっていました。 754さんの > ドキュメントは 「リフレクション使った場合は保証せず」 というしごく常識的な一言で済む。 も、非常に魅力的です。 明日もうちょっと調べてみようと思います。 ではおやすみなさい。
Map<String, Integer> と書いたときの、<String, Integer>の部分は何と呼ばれてますか。 型名 = クラス名 + ???
pair hash, element key, value generics
質問の仕方が悪かったようです。 Map<K,V>の「<K,V>」の部分、あるいはList<E>の「<E>」の部分のことを一般に何と呼んでいますか。 「keyとvalue」とか「要素」とかではなく、文法上あるいは言語仕様での呼び方です。
パラメータ化された型とか。
ジェネリック型とか総称型とか
>>761 だから念のため generics も書いておいたんだよ
ある一定の円の中に点をランダムに配置するにはどうすれば良いのでしょうか?
x = Math.random(); y = Math.sqrt(r*r - x*x);
あぁ円周上だ orz
x = Math.random(); y = Math.random(Math.sqrt(r*r - x*x)); これでいいのかな
連投スマソ x = r * Math.random(); y = Math.random(Math.sqrt(r*r - x*x)); こうですね
>>769 ありがとうございました。
早速プログラム作ってきます。
なんかダメポだな。どういうギャグだ。 もっと素直にやった方がいいよ。 theta = 2*Math.PI*Math.random(); x = r*Math.cos(theta); y = r*Math.sin(theta); とか。
もっと素直にやった方が良いよ do{ x = r * Math.random(); y = r * Math.random(); }while(x * x + y * y > r * r); とか
1/4円ですよね?
間違えた do{ x = r - 2 *r * Math.random(); y = r - 2 * r * Math.random(); }while(x * x + y * y > r * r);
theta = 2.0 * Math.PI * Math.random(); a = r * Math.random(); x = a * Math.cos(theta); y = a * Math.sin(theta);
777 :
773 :2007/11/22(木) 13:42:23
>>776 サンクス。俺も書こうと思ったが、円周と読み違えていた。
>>776 円の中心に近づくほど点の密度が高くなるぞ。
>>779 どういう意味で一様かという問題だよね。(元々指定は無いが)
極座標で一様で、xy 座標では一様ではないな。
xy 座標で一様にするなら
>>775 的に (775 は円外だわな)
x = -r + 2*r*Math.random();
y = -r + 2*r*Math.random();
if( x*x+y*y<r*r )
do something;
という感じかな。
theta = 2.0 * Math.PI * Math.random(); a = r * Math.sqrt(Math.random()); x = a * Math.cos(theta); y = a * Math.sin(theta); で、一様にならない?
>>782 一様分布にするために、Math.sqrtしてみたんだけど間違っていますか?
θの変化に対する面積変化の比を 半径に対する位置で逆比にしたんですね
jsp内で(hoge.jsp) <jsp:useBean id="Flag" class="java.lang.Boolean" scope="session" /> … <% try{ if(Flag!=true){ %> って書くと「useBeanのクラス属性 java.lang.Boolean の値が無効です」というエラーが出るのですが、原因は何なのでしょうか? サーブレットでは HttpSession session=req.getSession(); session.setAttribute("Flag",true); ServletContext sc=getServletContext(); RequestDispatcher rd=sc.getRequestDispatcher("/hoge.jsp"); rd.forward(req, res); というような記述があり、サーブレットを介してこのページに来ると処理が変わるようにしたいのです。
Boolean にデフォルトコンストラクタが定義されてないからだと思う。 class の代わりに type にしたら良いんじゃないか。 あるいは <jsp:useBean>, スクリプトレットの代わりに JSTL 使って ↓のように書いたほうが良いんじゃないか。 <c:if test="${Flag}"> … </c:if>
>>786 ありがとうございます、言われたあたりをググってみたのですが
Booleanは引数有りのコンストラクタだけが定義されてるからダメなのですね。
Boolean Flag=(Boolean)session.getAttribute("Flag");
if(!Flag){
…
これで何とか出来ることは出来たのですが、
typeの使い方がイマイチ分からず、単純にclassをtypeにすると
javax.servlet.ServletException: java.lang.InstantiationException: bean isLogin not found within scope
というエラーになってしまいます。
typeを使う場合ってどう書いたら良いのでしょうか?orz
>>783 それで密度が一様になるのかい?
a = r√X
θ = 2πY
として、X:0から1, Y:0から1で積分したときに円の面積の公式と一致するかい?
789 :
デフォルトの名無しさん :2007/11/22(木) 19:28:24
四角で点を描画してから円で切り取れば?
791 :
デフォルトの名無しさん :2007/11/22(木) 20:28:04
Javaによるアルゴリズム事典はめちゃくちゃ役に立ちました。
Apache License 2.0とLGPLを混在させる場合は、 最低限LGPLをバイナリだけ留めればくっつけても大丈夫ですか?
javaの場合LGPLをどう解釈するかがそもそも問題だな。 Apache License 2.0とGPLの組み合わせはアウトだが。 LGPLはどうなんだろうね。
Windowsに限定しちゃうかも知れないけど、 %USERPROFILE%\Local Settings\Application Data ↑のディレクトリの中に変なGUID名のディレクトリが作られてて 中を見るとJ2SDK5.0のインストーラみたいなのが入ってる。 うちの環境にはJDK6も入ってるけど、5系だけゴミ?があるので気になります。 これって削除しちゃっていいのかな?
>>794 5.0アンインストールしたの?
Windowsのクリーンアップウィザードは使ったの?
削除してトラぶるくらいならば残しておいていいと思うが・・・
復元できる自信あるなら削除汁
>>795 String.format() のドキュメント嫁
5.0で導入された拡張フォーマットという奴だ。
, M00(L00), M00(L01), M00(L02) の部分が文字列として%sに置き換わる
>>794 削除するとアンインストールが出来なくなる
いらないんだったらアンインストールしてから(すでにしてるなら)
削除すれば問題ない
問題あるのはアンインストールしたのに
それらのファイルがなくならないJavaの仕様
検索掛けて分かりましたが、%sとか%nとかって「変換指定」と呼ばれててC言語とかではメジャーなものみたいですね。
ファイルの名前の変更(拡張子の追加)をしたい。 JFileChooser filechooser = new JFileChooser(); filechooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() { public boolean accept(File file) { if(file.isDirectory()) return true; return file.getName().toLowerCase().endsWith(".jpg"); } public String getDescription() { return "JPEGファイル(*.jpg)"; } }); int selected = filechooser.showSaveDialog(filechooser); if (selected == JFileChooser.APPROVE_OPTION){ File file = filechooser.getSelectedFile(); String fileName = file.getName(); int i = 0; for(; i< fileName.length(); i++) { if(".".equals(fileName.charAt(i))) break; } if(i == fileName.length()) { File newFile = new File(fileName + ".jpg"); file.renameTo(newFile); } } こんなコードを書いてみました。しかし、file.renameTo(newFile);の部分が常にfalseを返してファイルの名前を変更してくれません。 どうしたらよいでしょうか? Win XP javac 1.6.0
どっかでそのファイル開きっぱなしにしてるんじゃないのか?
javaからcabochaを使うにはどうすればいいのでしょうか?
805 :
デフォルトの名無しさん :2007/11/23(金) 04:02:07
質問です。 メソッドの引数部分の評価される順序は左から右と決まっていますか? 例えば、 public class MethodArgOrder { public static void main(String[] args) { int i=0; method(++i, ++i, i++, ++i, ++i); } static void method(int num1, int num2, int num3, int num4, int num5) { System.out.format("%d, %d, %d, %d, %d%n", num1, num2, num3, num4, num5); } } というようなプログラムを実行した場合、環境によらずに必ず 1, 2, 2, 4, 5 と出力されるんでしょうか?
806 :
802 :2007/11/23(金) 04:07:22
>>803 いいえ。ファイルは新規作成しています。
すいません。1行目の書き方が悪かったようなので1行目だけを下の文に脳内変換してください。
新しいファイル、例えばそのフォルダ内にはない「hoge」ファイルを作ろうとしたとき、そのファイルの拡張子が何も指定されていない場合は".jpg"にしたいと考えています。
>>805 仮にそういう出力になったとしても、その書き方は自分を苦しめるだけ。
というか、そんなに気になるなら言語仕様読めよ。と。
>>805 ちょっと前にも演算子の結合性に関して環境によらずうんぬんっていう質問があったな
評価順序が自分で分からないような書き方はするな
ワンライナー主義はどうしても詰めて書かざるをえない時以外は弊害でしかない
>>807 の言うように言語仕様を手軽にwebで読めるんだから質問する前に読め
>>805 は例として出してるんだろうから、良く無い書き方云々は関係ないじゃん
言語仕様嫁ってそりゃそうだろうけど、なんだかなあ
>>805 まあ、javaはある環境での評価順序が他の環境で異なる順序になったのでは、
マルチプラットホームの名が廃るので、その手のことに関しては、
ひとつの環境での結果は他の環境でも同じになるように仕様で明確になっている。
どちらにせよjavaを勉強している身ならば言語仕様嫁は基本だと思う。
例として出したとしても質問しているからにはそういう書き方をする気満々な気がするけどな それとも参考書とかがそういう書き方なのか?
>>806 存在しないfileをnewFileにリネームはできないと思うよ。
file.renameTo(newFile);じゃなくて単にfile = newFile;にして、
>>802 のコード以降の部分でfileを生成すればいい。
File#renameToはファイルの名前を変更するメソッドであって、
Fileクラスのインスタンスがもつ抽象パス名を変更するメソッドではないと思う。
>>806 file => "C:\hogehoge\foo" だとしたとき、
newFile => "foo.jpg"となるのでは?(だからrename失敗)
newFile = new File(file, filename + ".jpg"); でうまくいくかも
814 :
812 :2007/11/23(金) 06:06:37
ディレクトリのことを忘れてたorz
既にfileが存在していているのなら、
>>813 でうまくいくと思う。
renameToに失敗したのはnewFileとfileが違うドライブのパスだからだと思う。
それとも、newFileが既に存在しているからか。
もしrenameToの時点でまだfileに対応するファイルが存在していないのなら、
>>813 のようにnewFileを生成したあとで、fileにnewFileを代入して、
拡張子が付いていたfileともども、fileとしてファイルを作ればいいと思う。
foo.jpgっていうフォルダが出来てるんじゃね?
>>796 ,
>>799 レス,txhです。アンインスコ済みだったので消しちゃいました。
ふぅ、やっとデフラグができるw
>>805 >メソッドの引数部分の評価される順序は左から右と決まっていますか?
決まっている。
15.7.4 Argument Lists are Evaluated Left-to-Right
In a method or constructor invocation or class instance creation
expression, argument expressions may appear within the parentheses,
separated by commas. Each argument expression appears to be fully
evaluated before any part of any argument expression to its right.
>>812 ,
>>813 ,
>>814 ,
>>815 ありがとうございます。できました。
>>813 ,
>>814 の言われるとおりファイルパスが間違っていました。
以下のように書き換えたところできました。
File newFile = new File(file.getPath().substring(0, file.getPath().length() - 1 - i), fileName + ".jpg");
最後に質問にお答えいただいたみなさま本当にありがとうございました。
>>818 出来たなら無駄足になるが、
>>813 はうまくいかなくて、
new File(file.getParentFile(), filename + ".jpg"); にする必要がある。
ま、getParentFile は親ディレクトリが無いときなどに null になるので、
直で引数に埋め込むのはどうかと思うけど。
Javaでコード書いてるといつのまにかnullチェックばかりになってるのな なんとかならんのかな
こらこら、Cで書こうが同じだろ。 Design By Contractはプログラム設計の基本ルールだよ。
とにかくメソッドの引数のnullチェックをきっちりやってたら 他のnullチェックは減る気がする
NullPointerExceptionをcatchして継続処理書くのと nullチェック処理しながらプログラム書くのと どっちがいいの?
ぬるぽはキャッチしちゃダメ すごく遅くなるよ
RuntimeExceptionは補足したらだめ。 運用する上で起こりえる例外がException それが起こりえなければRuntimeExceptionだ。 (でもisParsableみたいなのが無くてNumberFormatException食らうのは困りもの)
おまいらそんなに null 値で挙動変えるようなプログラム書いてるのか? ファイルや DB、ホストみたいなシステム間 I/F はしゃーないけど Java どうしの呼び合いならなるべく null 不許可 + assert の方向で設計しないか。
単純に説明する場合、public, protectedはぬるぽ、privateはassertって伝えてる。 別にassertは引数チェックだけに使うわけじゃないけど、事は足りるかなと。
外に見せるものは別にしても、クラス内部でフィールドのnullチェックとかは普通にやるだろ
NullObjectパターンの真価は、C出身の人には伝わりにくいよね。 getFooList()みたいなメソッドで対象が無いときにnullを返す人が多い。 0要素のオブジェクトを返せば for (String s : bar.getFooList()) とか書けるのに。
null入れたくないフィールドはセッターの方でガードするしな
NumberFormatExceptionは拾いたくなけど拾うしかないという意味でしょうか?
たぶんそう
Javaの数値チェックはライブラリ使わなきゃそうなるね。 C#でいうとこのTryParseがあるべきなんだけど。 文字列整数化ってコスト高いと思うんだけど、サポートせんのかね?
つうか手動チェック不可能なのにランタイム例外飛ばされるのはどうなんだ まあよく使うからあえてそうやってるんだろうけど
文字列で別の型のリテラル表現を書いてて、それをパースするんだから 用途から考えてパース処理はシステム間I/Fのはずなんだけどね。
標準のは あらかじめ失敗したら0入れてくれっていうオプションで Parseできないですよね絶対例外出ますよね 金融系の用途が多いからそういう設計になってるのかな
ParseResult result = tryParse(str); if (result.succeed()) value = result.getValue(); 無理矢理C#みたいにやるならこんな感じ? 出力引数欲しいね
ParseResult<E>で受けてラップオブジェクトを返す仕様かな。 その仕様でもNumberFormatExceptionを囲うより効率が良さそうに思える。
// 配列dのleftからrightまでの間のデータ列をクイックソートする static void quick_sort(int[] d, int left, int right) { if (left>=right) { return; } int p = d[(left+right)/2]; int l = left, r = right, tmp; while(l<=r) { while(d[l] < p) { l++; } while(d[r] > p) { r--; } if (l<=r) { tmp = d[l]; d[l] = d[r]; d[r] = tmp; l++; r--; } } quick_sort(d, left, r); // ピボットより左側をクイックソート quick_sort(d, l, right); // ピボットより右側をクイックソート } このクイックソートが途中で止まります・・・何がおかしいでしょうか?
超自己解決スマン
841 :
デフォルトの名無しさん :2007/11/23(金) 18:39:39
初心者で申し訳ないのですがコンパイルが上手くいきません。『'javac' は、 内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファ イルとして認識されていません。』と表示されるので環境変数PATHが間違えて いるのかと思い確かめても間違えていないように思えます。参考にしている 本はJavaのe本という本でJDKのサンプルプログラムは機動します。拙い文章 ですがどなたか教えて下さい。
しね
実際にプロセスがパスを通すのは自身が起動された後じゃねかな? バッチファイルの中でPATHを設定してないかい?
>>841 サンプルプログラムが java コマンドで起動するなら、
それは(通常、パスは通ってる)システムにコピーされた java.exe で動いてるハズ。
間違えてないように思える、というのは思えるだけで気のせい。
落ち着いて一つ一つ確認していきましょう。
それでもダメなら、確認手順をここに晒して点検かね
845 :
デフォルトの名無しさん :2007/11/23(金) 19:33:11
>>843 ,844
ご指摘ありがとうございます。後で試してみます。
今やれカス
847 :
デフォルトの名無しさん :2007/11/23(金) 20:00:17
1.パスがやっぱり間違ってる。 2.javaインストールフォルダ\binにjavacが入ってない 俺は2だったけどな。一度マイコンピュータからクリックしていって javaインストールフォルダのbinフォルダにjavacというファイルがあるかどうか調べたほうがいい。
849 :
デフォルトの名無しさん :2007/11/23(金) 22:09:55
文字のエンコードについて質問です。 InternetExplorerではEUC-JPでちゃんと表示できるWEBページを、 Javaでbyte配列からEUC-JPでStringにすると、@が文字化けしてしまいます。 これは何故なんでしょうか?また、どうすれば@を表示できるでしょうか?
丸付き文字はIBM拡張だっけ? そのeuc-jpなストリームをUTFにエンコードすればいい。 NIOで出来ると思う。
851 :
デフォルトの名無しさん :2007/11/23(金) 22:26:12
>>849 化けるのは @ が機種依存文字だから。
Java の EUC-JP は JIS X 0208 と JIS X 0212 をサポートしてるけど、
InternetExplorer の @ は JIS X 0208 にも JIS X 0212 にも含まれない、いわゆるIBM拡張文字。
x-eucJP-Open だったら @ も使えるはず。
>>850 ,852
13区はNEC拡張じゃなかったか? どーでもいい話だけど。
EUC-JPの変換テーブルが対応してないんじゃない? EUC-JP, EUC_JP_Solaris, EUC_JP_LINUXが試せるから、 それらのどこかで変換できれば儲けもの。 CP51932がCP932と互換してるから、そっちが指定できれば確実だけど。
問題は俺らは解決する知識を持ってるが質問自体が曖昧で具体的にどうしたいのか分からないから解決策を提示できないってことだな。
>>849 はまず具体的に何をしてどうなったかをレスした方が良いよ。
ありがとうございます。
>>850 @は普通のEUC-JPじゃないんですね。
>>852 "x-eucJP-Open"で表示できました。
>>854 CP51932 って、Javaで使えたっけか?
そういえばCP932ってMS932とは別物じゃなかったけ?
>>858 CP932だとIBMのコードページ932になるんじゃなかったか?
>>856 文字集合と文字コードの扱いはVMの実装依存だから必ずしもそれで解決してるわけじゃないよ。
確実にやるには自前でやるしかない。
>>859 じゃあWIndows-31Jで指定すれば安全か。
>>859 一貫性とかないみたいね。
x-IBM942 のエイリアスに cp942 があって、
windows-1250 のエイリアスには cp1250 がある、みたいに。
互換性を保障するならUTF-8にしとけば間違いがない。 UTF-8とUTF-16(BOMあり, BE, LE)は、言語レベルのサポート義務があるから BOM周りの実装が疎かでも問題にならないUTF-8が最強。 DB用で最強な文字セットは別にあるかもだけど。
867 :
デフォルトの名無しさん :2007/11/23(金) 23:55:28
>UTF-8が最強 禿堂
BOM付きのUTF-8をたまにで良いので思い出してあげてください。
むしろBOMあるからUTF-8
ないと思ってる奴の方が多いんだよ。
BOMは無視するコードだから、UTF-8からすれば無いのも同然。 自動判別時の情報としては有用だけど、普通は指定するから情報は足りてる。
待て待て、BOMはUTF-8であることを示すだけじゃなく バイトオーダという情報を含んでるんだぞ
>BOMは無視するコード プッ
しかし UTF-8 の BOM はバイトオーダの情報は持っていない。
875 :
デフォルトの名無しさん :2007/11/24(土) 00:37:32
BOMで識別できるんだよ。文字セット指定しなくても。 FE FF (16BE) FF FE (16LE) EF BB BF (UTF8) そしてそれらの文字は出力上、無視するという動作をする
みんな分かっとるがな
あきらかに分かってない奴がちらほらしとるがな
879 :
デフォルトの名無しさん :2007/11/24(土) 00:49:32
HTMLの記述は <html> <head> <title>てすと</title> </head> <body> <applet code="test.class" width="500" height="500"> </applet> </body> </html> これだけです
俺のESPによると、コンパイルしてないかclassファイルの位置がおかしいかのどちらか。 ちゃんとjavacでコンパイルした?
はい、コンパイルはちゃんとやってあります。 書き忘れていたのですが、コマンドプロンプトから実行すると java.lang.NoClassDefFoundErrorが出ます。
>>875 のソースをコンパイルして、
>>879 をコピペしたHTMLをブラウザ、アプレットビューアーで見たけどちゃんと見れたよ。
>>881 プロンプトから実行というのは java.exe でしょうか?
public static void main(String) が無いクラスは起動しないですよ
ためしにもっと簡単なAppletをメモ帳で書いて、コンパイルし、
appletviewer で実行して、一連の流れを検証してみるのがお勧めです。
「アプレットが初期化されていません」は実行クラスの名前解決以前の問題ですので…
行儀よくpackageを指定してて、test.classではアクセス不能とか?
これはだめかもわからんね
質問です 継承元のクラスで定義されたメソッドの内容を そのサブクラスのいくつかで、それぞれちょっと改変したい場合は何かいい方法ないでしょうか? 追加する場合にはsuperで済むのですが、追加ではなく改変ですし その継承元のクラスで定義したメソッドでは、そのクラスの変数を使っているので オーバーロードとかじゃうまくないかなぁ、と思いまして。 それでも元クラスではメソッドをabstractなどして、その変数はprotectedして 各サブクラスで定義する方法が一番ましなんでしょうか?
>>886 改変される部分を別のメソッドにしとく。テンプレートメソッドってやつ。
protected にしたい変数への操作も、意味のある protected メソッドに
切り出しておいて、変数自体は private なままにしとくのがおすすめ。
派生クラスでオーバーライドするための専用のprotectedメソッドを定義しとくといいよ 必要なフィールドの値はその引数で渡すか、protectedなアクセサを定義
改変なんか考えるな 共通な部分だけ継承元のクラスに入れて abstractにしておく 違う部分は継承してから それぞれの方で定義しろ
>>887 テンプレートメソッドですか、恥ずかしながら初めて知りました
ぐぐりつつもがんばってみます
ありがとうございました
なんだかよくわからんがテンプレートメソッドでどうよ
みんな全く同じことを言ってるなw
なるほど、みなさん同じことを言ってるんですかw 調べつつやってみます 皆さんありがとうございますm(__)m
import java.applet.Applet; import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class Sample1 extends Applet { String str = "矢印キーを押してください"; public void init() { addKeyListener(new KeyAdapter() { public void KeyPressed(KeyEvent e) { int k = e.getKeyCode(); switch(k){ case KeyEvent.VK_UP: str = "上を押しました"; break; case KeyEvent.VK_DOWN: str = "下を押しました"; break; case KeyEvent.VK_LEFT: str = "左を押しました"; break; case KeyEvent.VK_RIGHT: str = "右を押しました"; break; default: str = "ちゃんと矢印キーを入力してください"; break; } repaint(); } }); } public void paint(Graphics g) { g.drawString(str,200,200); } }
895 :
875 :2007/11/24(土) 01:37:26
解決しました!皆さんありがとうございました。
>>884 Eclipseで書いていて
packageを書いていたためにできなかったみたいです。
お、よかったよかった。 俺のESP能力もまだまだ現役だな。
JTextArea で行間を設定する方法ありましたら教えていただきたいです
俺のESPはまだまだだな。
>>894 KeyPressed→keyPressedじゃ無い?
>>894 ありがとうございました。
Kを小文字に変えたら矢印キーが反応するようになりました。
しかし、Kが大文字でもコンパイルが通ったのはなんでだろう?
自分でメソッド定義したから。
以下
>>899 にループ
で みんなは @Override ちゃんと書いてる?
903 :
デフォルトの名無しさん :2007/11/24(土) 05:39:17
>>902 @Override から書きはじめると、Eclipseがいい感じに補完してくれる。
当然使ってる。
@Overideの話題が出たので便乗。 スーパークラスのメソッドをオーバーライドする時に使用する、これは基本。 で、 インターフェイスで定義されたメソッドや抽象クラスで定義された抽象メソッドをサブクラスで実装する場合、@Overrideを付ける派?付けない派? 俺は付ける派。 @Overrideのドキュメントを読む限りはつけないほうがいいと感じるかもしれないけど、仕様としてつけてもエラーとならないし、メソッドのオーバーライドとスーパークラスに実装があるかは別の概念だと思うから 結論は出さないって前提でどう思うよ?
抽象メソッドには付けない派、ただ、サブクラスで必ずオーバーライドが必要な普通のメソッドには付けてる。
インタフェイスで定義されたメソッドに@Overrideがつけられるようになったのは、 1.6からだよね。1.5だと使えない。 どうせなら、@Implementを作ってほしかった。
質問です マウスのボタンを押しっぱなしにしてる間は定期的に処理を繰り返すというようなswing用の ボタン型コンポーネント(例えばスクロールバーの上下ボタン)を作りたいのですが、単純に mousePressed → 別スレッド起動 mouseReleased, mouseExited → スレッド停止フラグを立てる という実装で問題ないでしょうか? 気になっているのは (1)他にスレッドを停止させるべきイベントはないか (2)スレッドが停止フラグ以外に確認するべき条件はないか (3)もっとシンプルな方法を見落としてないか の3点です
>>908 結局のところOverrideとImplementsの違いって注釈的な表現は難しいんだよね。
確か、本質的な意味としては@OverrideOrImplements なんだけど今更変えられないしなぁって開発陣のBlogに書いてあった
あとこんなパターンがありえる
interface Foo {
void foo();
}
interface Bar extends Foo {
@Override
void foo();
}
Genericsについての質問です。 import java.util.*; public class Ex1 { public static void main(String[] args) { Map<String,Object> map = new HashMap<String,Object>(); map.put("key1", "FOO"); map.put("key2", new Integer(123)); map.put("key3", new ArrayList<String>()); String val1 = (String)map.get("key1"); int val2 = (Integer)map.get("key2"); List<String> val3 = (List<String>)map.get("key3"); // warning: unchecked cast } } これをコンパイルするとこんなwarningが出ます。 Ex1.java:10: warning: [unchecked] unchecked cast found : java.lang.Object required: java.util.List<java.lang.String> List<String> val3 = (List<String>)map.get("key3"); ^ 1 warning なぜでしょうか。StringやIntegerだとキャストできて、List<>だとできないのが謎です。
>>902 自分では書いてないが、保存するときにeclipseが勝手に付けてくれる
>>909 スレッドの代わりに javax.swing.Timer を使う手もある
>>911 コンパイルしたら型パラメータ情報は無くなるから、
あるオブジェクトが List か Set かは判定できても、
List<String> か List<Integer> かを判定することは出来ない。
もしその map の "key3" に Set<String> が格納されていたら、
キャスト時に失敗して ClassCastException が発生するが、
List<Integer> が格納されてたとしても、それは判らないので、
(警告は出るものの) キャストは通ってしまう。
List の内容を変更しないのなら
List<?> val3 = (List<?>)map.get("key3");
とすればいいが、内容を変更する必要がある場合は、
@SuppressWarnings("unchecked") を付けて警告を黙らせるか、
新しい List に内容をコピーしてからいじくるしかない。
List<?> val3 = (List<?>)map.get("key3"); List<String> val4 = (List<String>)val3; これはOK?
>>904 > @Override から書きはじめると、Eclipseがいい感じに補完してくれる。
NetBeansも6.0rc1からいい感じに補完してくれるようになった.
>>909 スレッドを一つだけ常時起動しておき、
フラグを立ててそのスレッド内のループで関数を実行するかどうかを切り替えるようにするという手もある
>>911 原因と対策は>914を参照
一般的に異なる型のKeyとValueをMapに保持させるのはいただけない。
結局の所、どのキーにはどんな型が入っていてと意識せざるを得ないからね。
Mapを使うのではなく、
class HogeValues {
private String key1;
private int key2;
private List<String> key3;
// ゲッター・セッター省略
}
というようなクラスを定義するべき。
キーが可変?
可変で、かつ不特定の型を格納するって時点でなんかがおかしいと思う
>>909 Java6でOKならばSwingTimerは使わない方がいい。
変りにSwingWorker という並行処理専用のクラスを使用すると、スレッドをほとんど意識せずに裏方処理をさせられる。
class UpDownWorker extends SwingWorker {
@Override
public Object doInBackground() {
// ここに並行に処理をおこなう内容を記述
// ループさせながら順次アニメーションさせるなど
// このメソッドはEDTで実行されるので直接コンポーネントを操作してOK }
@Override
protected void done() {
// 処理が終わったときに呼ばれるメソッド
// ボタンをアクティブに戻すとか
}
}
使う側
UpDownWorker worker = new UpDownWorker();
worker.execute(); // ←処理が終了までブロックされずに、すぐ制御が戻る
ちなみにworkerからは実行結果を取得したり、例外が発生したらそれを検知したり、キャンセルをかけられたりと色々な機能があるよ。
>>915 むり
List<?> val3 が List<String> と List<Integer> のどちらなのかは判定できない
>>919 > // このメソッドはEDTで実行されるので直接コンポーネントを操作してOK }
ダウト
C#とちがって総称型情報捨てるというかObjectにしちゃうもんなjavaは。
List<Object> にしときゃ良かったんでね?
C#も触ってるとJavaのジェネリックは混乱するよなあ
混乱するか? そもそも別の機能だしな
Genricsって邪魔な機能だよね?いらないよね?
Genericsはあったほうが便利 ついていけないなら使わなければいいだけ
929 :
909 :2007/11/24(土) 14:29:25
>913,917,919,921 ありがとうございます. 気になっていたのは,なんらかの手違いで起動させたスレッドに終了命令を送れなくなって 裏スレッドを量産してしまう可能性がないかということでした. とりあえずはTimerを使う方向で考えてみます.
>>919 裏方処理なのに、EDTで実行される、とか書いてて違和感なかった?
JScrollPaneにJTextAreaを乗せています。 これをコマンドプロンプトみたいに表示文字数が表示可能領域を超えた場合、自動で下にスクロールしてくれる機能を付けたいのですがどうすればよいのでしょうか?
スクロールアウトとスクロールバーで流すのとは全く別の処理なわけだが、 文脈から考えてスクロールアウト実装したいって意味だよな・・・。 JScrollPaneが勝手にやってる気がするが具体的には何したいの?