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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語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質問・相談スレッド112【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1202467704/

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

次スレは>>980あたりで。
2デフォルトの名無しさん:2008/03/01(土) 18:17:32
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 7
http://pc11.2ch.net/test/read.cgi/tech/1204155623/
■ SWT は --
Java 高速GUI SWT 3
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part16
ttp://pc11.2ch.net/test/read.cgi/tech/1198816379/l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 7
ttp://pc11.2ch.net/test/read.cgi/tech/1180010672/l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 64 ★★
ttp://pc11.2ch.net/test/read.cgi/tech/1196543694/l50
3デフォルトの名無しさん:2008/03/01(土) 18:18:25
**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/index.html
■ J2SE 5.0 (1.5.0)
ttp://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
ttp://java.sun.com/javase/ja/6/

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/
4デフォルトの名無しさん:2008/03/01(土) 18:30:45
おっおっおっ
5デフォルトの名無しさん:2008/03/01(土) 20:10:49
JavaでInternetからファイルダウンロードを行うプログラムを書こうとしています。

http://634.ayumu-baby.com/javawork/downloader.html
に書かれているような実装を行ったところ、
ダウンロード速度がかなり遅く、改善したいのですが
どのような方法があるでしょうか?
6デフォルトの名無しさん:2008/03/01(土) 20:42:25
並行処理
75:2008/03/01(土) 21:02:39
>>6
コネクションを張りまくる方法でしょうか?

そこまで頑張る必要は無くて、ブラウザのダウンロード速度と同程度であれば良いのですが、
現状だと、20MBのファイルをダウンロードするのに、
ブラウザ(キャッシュクリアした状態で):数秒〜十数秒程度
Javaプログラム:数十分
と大きな差が出てしまっています。
8デフォルトの名無しさん:2008/03/01(土) 21:32:41
>>5
read()で1バイトずつ読み込んでたら遅くなるのは当然
read(byte[])で一度にたくさん読み書きするといいよ
9デフォルトの名無しさん:2008/03/01(土) 21:33:32
1byteづつ読んで、1byteづつ書き込んでるからとかじゃねーの
バッファサイズ指定して読み込んで、書き込みも最後に一気にやるように修正汁
(read() じゃなくて read(byte[] b) のほうを使う)
109:2008/03/01(土) 21:34:15
スーパー被った
115:2008/03/01(土) 22:10:53
>>8>>9
色々書き忘れすみません、>>5のコードそのままではなくて
while ((i = in.read(buffer)) != -1) {
out.write(buffer,0,i);
}
のような形でバッファを利用するように変更していまして、その結果が>>7です。

バッファのサイズはとりあえず1024*32でテストしていますが、
1回の読み込みは1414〜5656バイトくらいのようですので
バッファサイズが小さすぎるということも無さそうです。


例えばブラウザで
http://download.netbeans.org/netbeans/6.0/final/bundles/netbeans-6.0.1-ml-javase-windows.exe
をダウンロードすると200〜300KB/secは出ていますが、
Javaのプログラムからだと十数KB/sec程度と、1桁変わってきてしまっています。
12デフォルトの名無しさん:2008/03/01(土) 22:26:52
初歩的な質問すみません

System.Math.Powを使用したらコンパイルできません
シンボルを見つけられません。
シンボル: 変数 Math
場所 : java.lang.System の クラス

MouseListenerを使用したらコンパイルできません
abstract でなく、java.awt.event.MouseListener 内の
abstract メソッド mouseExited(java.awt.event.MouseEvent)
をオーバーライドしません。

ネットで調べたらどちらも同じ階層内に存在するということだったので
普段使用しているフォルダ以外のフォルダに保存してみたけど無意味でした。

どうすればいいのでしょうか
139:2008/03/01(土) 22:44:58
>>11
俺の環境で試したら、ブラウザもプログラムも差無かったけど。
コード晒してみたら?
14デフォルトの名無しさん:2008/03/01(土) 22:54:36
>>12
どういう状況なのかよくわからん。わかりやすく書いてくれ。
Math.pow() を使いたいなら、System. は不要
(System.Math は、 java.lang.System クラスの Math というフィールド
という意味になってしまう)
15デフォルトの名無しさん:2008/03/01(土) 23:02:02
すいません そのまま載せてみます。

import java.lang.*;
class Sample
{
public static void main (String args[])
{
double x;
x = Math.pow(2,16);
System.out.println(x/2);
}
}
をコンパイル

Sample.java:7: シンボルを見つけられません。
シンボル: 変数 Math
場所 : java.lang.System の クラス
x = System.Math.Pow(2,16);
^
エラー 1 個
16デフォルトの名無しさん:2008/03/01(土) 23:03:55
すいません Math 解決されました。
>>14さんの言うとおりです。System不要でした。

さらに別の箇所に上書きをしていましたorz
17デフォルトの名無しさん:2008/03/01(土) 23:08:57
もう一箇所不明な点 質問させてください
Planet1.java:6: Planet1 は abstract でなく、java.awt.event.MouseListener 内の ab
stract メソッド mouseExited(java.awt.event.MouseEvent) をオーバーライドしません

public class Planet1 extends Applet implements Runnable,MouseListener
^
注:Planet1.java は推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくださ
い。
エラー 1 個

サンプルプログラムをそのまま打ち込んだだけなのになぜかコンパイルできません。
18デフォルトの名無しさん:2008/03/01(土) 23:12:05
mouseExitedを実装してやれ。空実装でいいから。
19デフォルトの名無しさん:2008/03/01(土) 23:12:53
あと、java.lang.*はimportいらない
20デフォルトの名無しさん:2008/03/01(土) 23:15:04
>>17
どこのサンプルか知らんが、エラーメッセージどおり mouseExited をオーバーライドする必要がある
クラスの中に
public void mouseExited(MouseEvent e) { }
って書いとけばおk
ところで、何書いてるのか理解せずにサンプルを見たまま打ち込むだけってのは、あまり勉強にならないよ
21デフォルトの名無しさん:2008/03/01(土) 23:26:49
どうもすみません。
サンプルを打ちながら書式を学習していたところなのです。
public void mouseExisted(MouseEvent e){} でも問題ないですか?すでに書き込んでありますが不可でした。
22デフォルトの名無しさん:2008/03/01(土) 23:30:46
解決しました 入力ミスでしたorz
Existed -> Exited で解決
23デフォルトの名無しさん:2008/03/02(日) 00:57:42
一番効率の悪いソートってなんですか?
24デフォルトの名無しさん:2008/03/02(日) 00:58:55
ソートする気がないソート
25デフォルトの名無しさん:2008/03/02(日) 01:00:27
ランダムに並び替えて上手い順番に並ぶのを待つソート
26デフォルトの名無しさん:2008/03/02(日) 01:01:30
ボゴソートだっけ?
27デフォルトの名無しさん:2008/03/02(日) 01:08:02
28デフォルトの名無しさん:2008/03/02(日) 01:12:37
望む順番に並ばないように並び替えるソート
29デフォルトの名無しさん:2008/03/02(日) 01:13:57
>>28
それはえーじゃんw
一瞬で終わるぞwww
30デフォルトの名無しさん:2008/03/02(日) 01:16:40
途中で何故かyield()が入り他のスレッドにソートを任せようとするソート
31デフォルトの名無しさん:2008/03/02(日) 01:21:08
>>23
ソースコードはこれ
ttp://d.hatena.ne.jp/shawshank99/20080228
32デフォルトの名無しさん:2008/03/02(日) 01:21:14
>>29
ソートは望む順番にするのが目的なんだから目的を達成できない限り永遠に終らないぞ
33デフォルトの名無しさん:2008/03/02(日) 01:31:34
ソートアルゴリズムを名乗るなら、
最低でもソートされる可能性がないとインチキだと思う。
34デフォルトの名無しさん:2008/03/02(日) 01:35:27
「アルゴリズム」だからな。
その手順で確実に問題が解決される保障がないと。
35デフォルトの名無しさん:2008/03/02(日) 01:39:12
効率の悪いアルゴリズム、って普段はあまり考えないなw
ランダムに探索する手法が一般的に一番効率悪くなるんだろーか
36デフォルトの名無しさん:2008/03/02(日) 01:43:00
真面目にやると実時間内に終わらない場合、
ある程度の不確実性を許容する事で
ランダムなアルゴリズムが効力を発揮することはある。
遺伝的アルゴリズムとか。
37デフォルトの名無しさん:2008/03/02(日) 01:44:36
それはアルゴリズムじゃなくてヒューリスティックなロジック。
38デフォルトの名無しさん:2008/03/02(日) 01:46:30
ソートであってソートアルゴリズムを名乗っていなければok
39デフォルトの名無しさん:2008/03/02(日) 01:48:22
遺伝的アルゴリズムは別にランダムじゃないしな
ルーレット選択とか突然変異とかは局所最適解に陥るのを防いでるだけだろー
40デフォルトの名無しさん:2008/03/02(日) 04:13:21
全スレ>>998様 すみませんもう少しお付き合いを。
>インスタンスメソッドの synchronized 修飾子は synchronized(this){ } でメソッド内全てを囲ったのと等しい。
>クラスメソッドの synchronized 修飾子は synchronized(Queue.class){ } と等しい。

そうなるとサンプルhttp://www.techscore.com/tech/J2SE/Thread/5-2.html
Consumerのqueue.get()呼び出しが先に実行されたらget()内部でwait()してしまい、
Producerのqueue.put()呼び出しはsynchronized(this)のブロックにより、メソッド内に進入できなくてnotifyAll()を実行できずにデッドロックしてしまうように思えるのですが?
まだ理解が足りないですか?
41デフォルトの名無しさん:2008/03/02(日) 04:34:35
サイトのソースコードしか目に入ってませんでした。その下にしっかり解説がありました。orz
>wait()メソッドは獲得しているロックを解放するため、他のスレッドがsynchronizedメソッドであるput()やget()を実行できるようになります。
42デフォルトの名無しさん:2008/03/02(日) 08:56:20
>>35
アルゴリズムに問題が解けるなんて定義は無いと思うけど?
もともと、計算不可能論から出発しているのだし。
43デフォルトの名無しさん:2008/03/02(日) 08:59:46
>42
そんなことはねーぞw
「問題を解決するための手順」なんだから、効率はともかく、解決しないのはアルゴリズムと呼ばない。
44デフォルトの名無しさん:2008/03/02(日) 09:07:57
>40
根本的な部分で理解がおかしい

>Consumerのqueue.get()呼び出しが先に実行されたらget()内部でwait()してしまい
wait() によって、その実行しているスレッドの実行が止まるだけ。
つまり、別のスレッドはget() にも put() も実行できる状態になる。
get() が実行されたら、状況は変わらないから、そのスレッドもwait() で停止
put() が実行されたら、notifyAll() で他の停止しているスレッドに実行を通知。
すると、先に止まっていたスレッドのどれか1つが動き始める

思うにマルチスレッドの話なのに、頭の中シングルスレッドだろ?
45デフォルトの名無しさん:2008/03/02(日) 09:27:10
>>43
関心のある者全員が飽きるまで解決してないことにするアルゴリズムが一番効率の悪いアルゴリズム
46デフォルトの名無しさん:2008/03/02(日) 09:32:58
スレ違いもいい加減にしてアルゴリズムスレでやれ
47デフォルトの名無しさん:2008/03/02(日) 09:57:16
J2EEについて質問させてください。
Front Controllerとなるサーブレットを自分で作っていたのですが、Filterという技術があることを知りました。
FilterはFront Controllerに完全にとって代われるものなんでしょうか?
それともあくまでFront Controllerは自分で作りFilterはそれを修飾するだけのものですか?
普通はどのように使われているのでしょうか
48デフォルトの名無しさん:2008/03/02(日) 10:15:15

Javaラインタイムパラメータ(例えば、-Xmsや-Xmx)の設定は、
レジストリとかファイルとかに保存されてるのでしょうか?(WindowsXP、JRE1.05)

OS側で、コンパネが制限されてしまっていて、Javaアイコンが触れないのです。(;´Д`)
49デフォルトの名無しさん:2008/03/02(日) 10:55:29
>>47
あんたの作ったFrontControllerってのが何をしているのかは知らんけど、認証の前処理だとかエンコードとかその類だったら全部Filterでやるのが普通

>>48
Jarをダブルクリックした時に立ち上がるようなパラメータはレジストリとかだと思う
どうしてもパラメータを渡したければ、コマンドプロンプトからjavaコマンドで起動したら?
50デフォルトの名無しさん:2008/03/02(日) 10:56:57
>>39
結局ランダムじゃないか。
5147:2008/03/02(日) 11:13:19
>>49
返答ありがとうございます。
自分がやっているのは、各サーブレットで重複するようなロジックをFront Cotrollerに書いてます。
認証やエンコードなどだけではなくシステム固有のロジックをFilterにずらずらと書いてもいいのか疑問に思いました。
52デフォルトの名無しさん:2008/03/02(日) 11:19:26
>>49
まりがとう。(JRE1.05ではなく、JRE1.5.0_06ですた)

JVM Optionとかっていうレジストリかと思ったら、JRE1.5.0_06では、無くなってて。
コマンドプロンプトかぁ...
53デフォルトの名無しさん:2008/03/02(日) 11:27:19
3から100までの素数を表示するプログラムを作成したのですが
コマンドプロンプトで実行すると縦にガーっと表示されます。
これを横列スペース区切りで表示するにはどうすれば良いでしょうか?
ex) 3 5 7 11 …
また、表示したものをクリアしてその上に表示することはできますか?
アプレットを使用しないと無理でしょうか?
54デフォルトの名無しさん:2008/03/02(日) 11:32:24
System.out.println じゃなくて System.out.print を使え

>また、表示したものをクリアしてその上に表示することはできますか?
無理
55デフォルトの名無しさん:2008/03/02(日) 11:39:04
¥r で行頭に戻ることは出来たんだが、
¥f をprintしたら1画面送りしてくれるかと思ったらしてくれなかった。
56前スレの975です:2008/03/02(日) 12:44:47
>>前スレ987
返事遅れてすいません。
送り手側は全てのデータを書き込んだ後
(Whileを抜けた後)にChannelを閉じる処理をしています。
57デフォルトの名無しさん:2008/03/02(日) 13:25:17
>>55
javaの標準APIはコンソール画面制御には不向きというか機能があまりない。
java向けのcursesライブラリを使ってみるとかしてみては?
58デフォルトの名無しさん:2008/03/02(日) 15:33:49
>>50
ランダムって何?再現性が有るか無いか?
59デフォルトの名無しさん:2008/03/02(日) 15:36:49
>>58
乱数に依存している部分がある。
60デフォルトの名無しさん:2008/03/02(日) 20:25:40
こんばんわ。
今、考えてるソフトは、

まず、JFrameにJPanelをpackします。
そのJPanel上には点が書いてあります。
その点をdrag and dropのように
マウスをpressした状態で移動させると、
マウスにそって点が移動する。
(そしてその点の持つJPanelへの相対座標x,yは変化する)

という仕様のものを考えています。

Javaについていろいろ仕様を見ましたが、
swingやawtはライブラリが巨大すぎてどうすればいいか検討もつきません。
この仕様を満足するようにするには、
どのようなクラスやメソッドを使って設計すればいいのでしょうか?
61デフォルトの名無しさん:2008/03/02(日) 20:35:23
iアプリでgif画像を保存したいのですがどうすればできるでしょうか?

今までやったこと:
com.nttdocomo.ui.ImageEncoderではJPEGでしか保存できない。
javax.imageio.ImageIO.write()を使えばできるらしいがiアプリでは呼べない。

どなたか詳しい方よろしくおねがいします。
62デフォルトの名無しさん:2008/03/02(日) 21:02:03
>>60
点を何で描くつもりかしらんけど、
そのコンポーネントにaddMouseListenerとaddMouseMotionListenerでリスナをセットする
マウスを押したりドラッグするとそのリスナのメソッドが呼ばれるから、
マウスの位置を見ながら点の位置を動かす
63デフォルトの名無しさん:2008/03/02(日) 21:03:01
>>61
gifの仕様書を見ながら自分でエンコーダを書く・・・とか?
64デフォルトの名無しさん:2008/03/02(日) 21:19:06
>>62
例えば
MyPointというクラスを作って
public static final int SIZE = 10;
private int x, y;

drawPoint(Graphics g)
g.fillOval(x, y, SIZE, SIZE)

という感じで描きたいと思っています。
JPanelにはこのMyPointをコンポジッションしたいと思っています。

どこにリスナを登録すればいいですか?
65デフォルトの名無しさん:2008/03/02(日) 21:25:43
>>64
JPanelに
66デフォルトの名無しさん:2008/03/02(日) 21:27:14
>>64
public class MyPanel extends JPanel implements MouseListener, MouseMotionListener{...}
67デフォルトの名無しさん:2008/03/02(日) 21:39:34
リスナでマウスポインタの位置を知る事が出来ますが、
そのマウスポインタが円の中にない場合は
何もアクションを起こしたくありません。
また、円を拾ったあと、「マウスポインタに沿って」同時に動かしたい
つまり連続的に描写したいです。
これはどうすればいいですか?
68デフォルトの名無しさん:2008/03/02(日) 21:48:58
if文で円の中にあるときだけ処理すれば?
押したままマウスポインタを動かすとmouseDraggedが連続的に呼ばれるから、
新しいマウスポインタの位置にあわせて点だか円だかを描きなおせばいい
69デフォルトの名無しさん:2008/03/02(日) 21:50:53
出来そうな気がしてきました。
明日コーディングしてみて、分からなかったらまた質問します。
ありがとうございました。
70デフォルトの名無しさん:2008/03/02(日) 21:58:02
>>63
お答えありがとうございます。
でもエンコーダ自作以外の方法ないですかね・・・?
(ありがちですがそれをすると軽く予定時間オーバーしちゃいますので・・・

どこかにプリミティブなエンコードライブラリとか落ちてないですかね・・・
(javaじゃ無くても良いので)
71デフォルトの名無しさん:2008/03/02(日) 22:08:23
入門書って何冊くらい読めばいいの?
72デフォルトの名無しさん:2008/03/02(日) 22:10:36
>>71
気が済むまで。
73デフォルトの名無しさん:2008/03/02(日) 22:12:17
>>71
自分が入門レベルを卒業できるまで
74正志:2008/03/03(月) 00:01:33
ヒントがほしいんですが、
data 1 data 2 data3 data 4 ... data 112
という行があって、
lastIndexOf("data")で
最後のdata位置を入手した後、
最後のIntをとりたいんだけど、(112)
どうしたらいいですか?
75デフォルトの名無しさん:2008/03/03(月) 00:02:58
>>74
ヒントか
substring と Integer.parseInt
76正志:2008/03/03(月) 00:03:49
わーい
77正志:2008/03/03(月) 00:08:53
ふざけんな
78デフォルトの名無しさん:2008/03/03(月) 00:11:29
"data"でsplitしたらどうだろう。
79正志:2008/03/03(月) 00:13:07
String posx=ss.substring(ss.lastIndexOF("?")+1);
で出来た

ttp://www.youtube.com/watch?v=-T1UkPligYo
8060:2008/03/03(月) 00:18:51
さきほど点を移動させる質問をしたものです。
たくさん点を置くことを考えた場合、
MyPoint自体にリスナを持たせた方がいいと思うのですが、
MyPointをJPanelから継承させて、
リスナを持たせて、位置は
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/awt/Component.html#getLocation()
Component#getLocation()
で取得するという方法では、
マウスで点をドラッグして動かすというのは無理でしょうか?
81デフォルトの名無しさん:2008/03/03(月) 00:27:59
MouseEvent の .getPoint() で、MyPoint 上のマウスの位置を取得
mouseDragged() の中で、呼び出されるごとに前回との差分を計算して移動させるようにしては?
8260:2008/03/03(月) 00:35:41
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/awt/event/MouseEvent.html#getPoint()

MyPointオブジェクトがドラッグされます。
その瞬間にMouseEvent eが発行されます。
これはどこから発生させればいいですか?

一応、
MyPanel < JPanel has MyPoint
という設計を考えています。MyPointはx,yという座標を持っています。

もしMyPointをリスナ登録させた場合、e.getPoint()は・・

あぁ
http://www.javadrive.jp/applet/event/index3.html
ですか。

これって、
e.getPoint().xというのは、e.getX()と等価ではないですか?
そのコンポーネント上で、「マウスがクリックされた」座標を取得出来るだけですよね?
もし、MyPointでイベントを取得して、かつ、そのイベントのMyPanelでの相対位置を知ることが出来ればいいと思うのですが。
83デフォルトの名無しさん:2008/03/03(月) 01:02:33
何が言いたいのかよくわからんが、

private Point prePoint;
public void mouseDragged(MouseEvent me){
Point nowPoint = me.getPoint();
this.setX(this.getX() + (nowPoint.x - pre.x));
this.setY(this.getY() + (nowPoint.y - pre.y));
pre = me.getPoint();
}

こんな雰囲気でいけると思うんだが
8460:2008/03/03(月) 01:09:47
>>83

MyPoint extends JPanel implemens MouseMotionListener, MouseListener

という設定でですか?
private Point prePoint
というのはなんですか?
どこにも使われてないのですが。

おそらく、
MyPointのサイズ内で
マウスポインタの相対位置の変化を
点の移動距離としようという発想でしょうが、
問題提起として、
もし、マウスを思いっきり早く動かした場合、
つまりコンピュータがMouseEventを発行するより先に
MyPointの領域からはみ出た場合はどうするのでしょう?
85正志:2008/03/03(月) 01:10:47
さきほど取ったdataのpositionですが、
文字列を整数に出来ない、
int sss3=Integer.valueOf(posx);
なんで
86デフォルトの名無しさん:2008/03/03(月) 01:11:23
>>82
イベントがどのコンポーネントで発生したか e.getComponent() で知ることができる
それでなんとかなるだろ
87デフォルトの名無しさん:2008/03/03(月) 01:14:45
>>84
>MyPointの領域からはみ出た場合はどうするのでしょう?

ドラッグ中は、ボタンを押した場所のコンポーネントにマウスイベントが送られ続ける
ボタン離すまでずっと
はみ出ても問題なし
ただし座標はマイナスとかになるから、そのへんさえ考慮してあればおk
88デフォルトの名無しさん:2008/03/03(月) 01:15:19
>>60
prePoint は pre のミスだ。空気嫁。

>MyPointの領域からはみ出た場合はどうするのでしょう?
mouseExited() つかえ
89デフォルトの名無しさん:2008/03/03(月) 01:29:18
>>85
Integer.parseInt するまえに、posXを表示させて確認しろ
"data" とか空白とか混じってるんだろ、どうせ
90デフォルトの名無しさん:2008/03/03(月) 01:31:53
91デフォルトの名無しさん:2008/03/03(月) 01:47:49
>>85
>>88じゃないけど補足。
空白入ってたらtrimしてやればよし
9260:2008/03/03(月) 09:25:11
>>90
これは簡単な実装ですね。
おれがやりたいのは、PointもJPanelから継承させて
リスナをつける。
Pointの方でイベントを制御したいというものです。
外からやればそれは簡単でしょうが、
mousePointのところでものすごい手間がかかります。
例えば点が1万コあったら、いちいちこんな計算をするのは無駄すぎます。

それとこれは直接には関係ありませんが、
おれの主義で、コレクションは使わない事にしてます。
プリミティブ型と参照型の変換があんまりうまく行かないので非常に手間です。

もしArrayList<int>とかけるようになった暁には使おうかと思います。
93デフォルトの名無しさん:2008/03/03(月) 09:37:37
>>92
>例えば点が1万コあったら、いちいちこんな計算をするのは無駄すぎます

自分で計算するのは無駄で、Swingに同じ計算をやらせるのは無駄でないと?
9460:2008/03/03(月) 09:39:06
いや、自分で計算しないでしょ。
いちいちそのポインタがどのPointに含まれてるのか特定
するのが工学的に考えてすごく無駄。
自分で計算する部分なんかあるわけがないと思いますが。
プログラミングなんだから。
95デフォルトの名無しさん:2008/03/03(月) 10:44:55
JAVAでヒャードキュメントを書く方法を教えてください。
String s = <<END_OF_DATA;
あいうえお
かきくけこ
END_OF_DATA
9660:2008/03/03(月) 10:45:59
自分でっていうのは、自前で計算して点を特定してっていう意味か。
swingも内部でオブジェクトの特定に計算してるわけね。
でも、MyPointの挙動をMyPanelが請け負うのはどうなの?
もし他のコンポーネントに対してもdraggedイベントを発動させたい時に
場合わけが必要になる。
それって例えばdraggedイベントが10種類あるとした場合に、
めちゃくちゃな事になるから
MyPointにイベントを処理してもらう方がいいと思った。

それに、点の位置をpublicで外から変更出来るっていうのも不自然。
97デフォルトの名無しさん:2008/03/03(月) 11:10:08
>>95
ない
98デフォルトの名無しさん:2008/03/03(月) 11:41:10
>>96
そのへんはどっちでもいいと思う
たぶん好みの問題だし

1万個の点の判定を高速化したいって趣旨だったら、R-TreeやQuad treeを作るといいんじゃないかな
http://en.wikipedia.org/wiki/R-tree
http://en.wikipedia.org/wiki/Quadtree
99デフォルトの名無しさん:2008/03/03(月) 11:41:54
>>93
無知と非常識に基づく信念の持ち主の相手なんかしなくていいよ。無駄だから。
10060:2008/03/03(月) 13:34:16
>>98
例えば、
paintComponent(Graphics g)
を使う時に、委譲を使ったりしますよね。
それと同様に、
MyPointクラスでも
MyPoint#public void moveByMouseMove(MouseEvent e)
とかいうのを作って、
MyPanel#public void mouseDragged(MouseEvent e)
(MyPoint)p.moveByMouseMove(e);

とするのはどうでしょうか?
最悪、MyPanel上でコンポーネントを計算で拾うにしても
実装の部分はMyPointクラスで書いた方がいいと思うのですが。
101デフォルトの名無しさん:2008/03/03(月) 13:37:26
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/222.java
マウスの処理をMyPoint側でやるコード書いてみた。
点を1万個にすると生成に時間が掛かるけどその後は特に問題なく動いた。
102デフォルトの名無しさん:2008/03/03(月) 13:42:03
>>97
作ってください。作ってくれたら
10360:2008/03/03(月) 13:46:16
>>101
実行してみました。
素晴らしいです。まさにおれが考えていた仕様そのものです。
setOpaqueというのは知りませんでした。
おれはsetVisibleで出来るかと思ってましたが、
どう違うのですか?
104デフォルトの名無しさん:2008/03/03(月) 13:50:45
>>100
ドローツールを作るときとかは、そんな感じで作るよ。
各図形にイベントを送って、それによってマウス制御のStateを変えていく。
そうすると、図形の選択・移動や変形なんかが簡単にできる。

ただ、クラスは分けたほうがいいと思う。モデルが太りすぎるから。
10560:2008/03/03(月) 13:50:51
JFrame#setLocationRelativeTo
http://terai.xrea.jp/Swing/CenterFrame.html
も知りませんでした。勉強になります。

差し支えがなければ、
生成に時間がかかるのは当然として、
その後、円滑に動く理由を説明してもらえませんか?
106デフォルトの名無しさん:2008/03/03(月) 13:51:39
>>103
JPanelはデフォルトで不透明 (opaque=true) だから、点は四角くないので透明な部分もあるので、設定を変えてるだけでしょ
setVisibleとは全然別
10760:2008/03/03(月) 13:59:26
>>106
setVisibleっていうのは
addするかしないかくらいの差があるという事ですか?
つまり
setVisible(false)というのは完全に無効なコンポーネントになると?
Visiblityというのは見える、見えない=不透明か透明か
という事だと思っていました。

なるほど、デフォルトでは灰色のようですね
今setOpaqueをコメントアウトしたら四角いバックグラウンドが出てきました。

だからMyPointでsetBackgraound(Color.BLACK)
しても大丈夫ですが、これはきっと遅いでしょうね。

108デフォルトの名無しさん:2008/03/03(月) 14:12:23
>>107
そう
setVisible(false) は、まったく何も表示されなくなるし、マウス入力もキーボード入力も受けなくなる
存在してないのとほとんど同じ
10960:2008/03/03(月) 14:13:14
>>108
Oh I see, Thanks
110a:2008/03/03(月) 15:18:59
http://www.harukitchen.com/rpg_programming/index2.htm
ここのサイトにある
プログラムはオープンソースにしておきます。以下のファイルを全てDLして、
メインとなるMapEdit.javaをjavac ファイル名でコンパイルしたのですが、

http://nandemo-up1.hp.infoseek.co.jp/cgi-bin/nandemo/up0667.jpg
http://nandemo-up1.hp.infoseek.co.jp/cgi-bin/nandemo/up0668.jpg

このようなエラーが…。
オブジェクトが見つかりません で検索してみたのですが、
クラスがないということだけしか…でもクラスの定義はされてるし…サッパリです…。
どうすればいいのでしょう?何か足りないファイルでもあるのでしょうか…?
111デフォルトの名無しさん:2008/03/03(月) 16:10:14
>>110
>でもクラスの定義はされてるし…

定義されてるか?
OffScreenというクラスはどこにあるんだ?
AccelとかBattleManageは?
112a:2008/03/03(月) 16:21:45
MapCanvas.javaに OffScreen m_pix_off_screen;
Chara.javaに Accel m_accel;
とあるんですが、これは違いますかね…?^^;
113デフォルトの名無しさん:2008/03/03(月) 16:23:37
>>112
Javaの基礎から勉強し直した方がいいよ
114a:2008/03/03(月) 16:28:16
JAVAの基礎すら知らないので、
とりあえず起動させる手順教えて下さい。
11560:2008/03/03(月) 17:29:22
java3Dを使いたいですなぁー
116デフォルトの名無しさん:2008/03/03(月) 17:47:22
>>114
ここはプログラムを作る人のための板なんで、
自分で作らず拾って動かすだけの人はお呼びでない
>>115
じゃあ使ってみれば
ひとりごとはブログにでもどうぞ
117デフォルトの名無しさん:2008/03/03(月) 20:31:23
こんな質問恥ずかしいんだが初心者歓迎って書いてるから大丈夫だよね

JComboBoxに対してsetSelectedItemメソッドを実行するとJComboBoxに登録した
アクションリスナーが反応しちゃってどうも意図した動作が得られない
JComboBoxの項目が選ばれたときのみリスナーが反応するには
どこでどう判断させればいいのかな?
恐らくイベントを受け取るactionPerformedメソッドで
それがユーザーアクションによって起こったものかどうか判断できるのだろうか…
いくらヤフっても出てこない。どなたかご教授お願いします
118デフォルトの名無しさん:2008/03/03(月) 20:44:56
>>117
一番安直なのは、setSelectedItemする間だけリスナを外す
もしくはフラグを立ててイベントを無視する
ユーザ操作によるものかどうかは判定できないんじゃないかなぁ
119デフォルトの名無しさん:2008/03/03(月) 20:52:42
>>118
リスナを外す方法は、ちょっと不粋かなぁ?と思ったんだけど
それしか方法がないなら仕方ないね。即レスありがとう
120デフォルトの名無しさん:2008/03/03(月) 22:24:44
shift_jis、jis等の文字コードを指定して
全角文字列を一文字ずつ漢字コード取得していくのは
どのようにすればいいでしょうか?
121デフォルトの名無しさん:2008/03/03(月) 22:29:01
>>120
byte[] b = "あ".getBytes("Shift_JIS");
122デフォルトの名無しさん:2008/03/03(月) 22:30:00
サーブレットの数が沢山あり、
a.b.servlet1.java
a.b.servlet2.java
...
a.b.servlet100.java

web.xmlに1個ずつ<servlet>a.b.servlet1</servlet>と定義するのは大変なので、InvokerServletを利用したいのですが、
アクセスするURLにパッケージ名を含めないという要求もあります。invokerでパッケージを指定する方法ないですか?

/context/xxx/servlet1 -> a.b.servlet1.java
/context/xxx/servlet2 -> a.b.servlet2.java
...
/context/xxx/servlet100 -> a.b.servlet100.java

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/xxx/*</url-pattern>
<class-pattern>a.b.*</class-pattern>
</servlet-mapping>

みたいなことが出来たら嬉しいのですが。
InvokerServletのサンプルにも上記のような物がなく、代わりになるような物も見つからず。。。
123デフォルトの名無しさん:2008/03/03(月) 22:37:01
質問です。

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

public class GUI extends JFrame {
public static void main(String[] args){new GUI();}
public GUI(){
Container c = getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
c.add(new MyForm("オラオラオラ", "オラ"));
c.add(new MyForm("無駄無駄無駄", "無駄"));
JButton b = new JButton("そして時は動き出す");
b.setAlignmentX(JButton.RIGHT_ALIGNMENT);
c.add(b);
pack();
setVisible(true);
}

class MyForm extends JPanel{
public MyForm(String label, String value){
setLayout(new FlowLayout(FlowLayout.RIGHT));
add(new JLabel(label));
JTextField tf = new JTextField(10);
tf.setText(value);
add(tf);
}
}
}

最後のボタンを右詰にしたいんですけど、右詰にならないのは何故でしょう。
124デフォルトの名無しさん:2008/03/03(月) 22:38:02
>>122
invokerもどきを自分で作るのがそんなに大変とは思えないけど・・・
リクエストURLからクラス名を切り出して
Class.forName(〜).newInstance()でサーブレットをインスタンス化して
service呼ぶだけじゃないのかなぁ基本的には
125デフォルトの名無しさん:2008/03/03(月) 22:40:54
>>123
MyForm も setAlignmentX(1) にしないといけないのでは
126123:2008/03/03(月) 22:49:40
>>125
なるほど。
いけました。そういうもんなんですね。
127a:2008/03/03(月) 22:53:07
>>116
お呼びでないじゃなくて質問者が来るんだよ。バカか。
かってに決めてんなよお前の意味わからんルールを。質問相談スレッドだろが。
128デフォルトの名無しさん:2008/03/03(月) 22:58:19
>とりあえず起動させる手順教えて下さい。
いやこれ質問じゃないし
129デフォルトの名無しさん:2008/03/03(月) 23:04:16
>>127
http://pc11.2ch.net/tech/
ここ見てみろ、ちゃんと書いてあるだろう
「この板はプログラムを作る人のための板です」って
130デフォルトの名無しさん:2008/03/03(月) 23:04:21
まあ3月だもんな
しゃーない
131正志:2008/03/04(火) 03:02:19
>>91 Thanks,
>>88 Shut-up man, fuck off you bitch, ウゼエ どうせ〜だろ はやめなさい
132デフォルトの名無しさん:2008/03/04(火) 03:32:21
ところでsplitで x または aで区切るのはどうしたら?
133デフォルトの名無しさん:2008/03/04(火) 03:59:29
"123a456x789a0".split("x|a")
134デフォルトの名無しさん:2008/03/04(火) 14:36:03
Nim of game の書き方教えてくれるとこありますか?
135デフォルトの名無しさん:2008/03/04(火) 14:36:34
Game of Nimでした。
136デフォルトの名無しさん:2008/03/04(火) 16:07:34
MouseEventはabstractでーバーライドできないって出てくるのですが、
何か間違っているのでしょうか?いちおう解説本の通りに打ったつもりなんですが・・

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/*
<applet code="MouseEvents" width=300 height=300></applet>
*/

public class MouseEvents extends Applet implements MouseListener{

public void init(){
addMouseListener(this);
}

public void mouseClicked(MouseEvent me){
setBackground(Color.blue);
repaint();
}

}

137デフォルトの名無しさん:2008/03/04(火) 16:08:09
すみません、質問させてください。

Look&Feelのフォント設定で、
System.setProperty("swing.plaf.metal.controlFont", "Dialog-Plain-12");
を指定しておくとフォントがDialog-Plainの12ポイントになりますよね。
WindowsのLook&Feelを適用したときにもこのように一括で指定するキーはありますか?

これらのキー名がAPIドキュメントにさっぱり見つからず困っております・・・
138デフォルトの名無しさん:2008/03/04(火) 16:10:42
>>136
MouseListenerのメソッドはmouseClickedだけじゃなくて全部実装する必要がある
中身からっぽでもいいので
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
139デフォルトの名無しさん:2008/03/04(火) 16:21:47
>>138
ありがとうございました
140デフォルトの名無しさん:2008/03/04(火) 17:36:21
カオスってるな
141デフォルトの名無しさん:2008/03/04(火) 17:36:39
WindowsXP+tomcat5.0.28にて
hello.jsp --------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=Windows-31J"%>
<%@ page errorPage="DefaultException.jsp" %>
error.jsp -------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=Windows-31J"%>
<%@ page isErrorPage="true" %>
----------------------------------------------------------------------
hello.jspの中で例外が発生するとerror.jspが呼ばれますが、error.jspの内容が文字化けしてブラウザに表示されます。
でも、error.jspを直接ブラウザから呼ぶと文字化けが起きません。
JSPの例外処理機構で呼ばれた時だけ文字化けしているように見えます。解決方法ありますか?
142デフォルトの名無しさん:2008/03/04(火) 17:38:22
>>141
転載ミス。errorPage=error.jspと読み替えてください。
143デフォルトの名無しさん:2008/03/04(火) 20:15:09
>>141
文字化けの原因は別のところにありました。
web.xmlで下記の設定を入れていると、こちらが優先されるらしく文字化けが発生します。
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
error-pageの設定をコメントアウトすると文字化けしなくなります。tomcatのバグ?
144デフォルトの名無しさん:2008/03/04(火) 21:50:31
public static void main(args[])
について、教えてください。

このメソッドについて、
一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、
といったルールは存在しますか?

public class Test1 というクラスと
class Test2 というクラスとの両方に、
public static void main(args[])を記述してみて、
Test1のmain()から、Test2のmain()を読んでみたのですが、特に問題なく動きました。
145デフォルトの名無しさん:2008/03/04(火) 21:56:35
> 一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、
> といったルールは存在しますか?
ない。
146デフォルトの名無しさん:2008/03/04(火) 22:48:27
4桁の16進数を
数値型に変換ってどうすればいいですか?
0xの16進数で出力したいのですが
147デフォルトの名無しさん:2008/03/04(火) 22:57:00
>>146
よくわからんので、どういう入力に対してどういう出力が欲しいのか、例をあげてくれ
148デフォルトの名無しさん:2008/03/04(火) 22:59:59
>>146
エスパーレスすると
int i = 0xABCD;
System.out.println("0x" + Integer.toString(i, 16));
149デフォルトの名無しさん:2008/03/04(火) 23:03:56
>>147
失礼しました
>>148の方の例で言うと
StringでABCDとわかっていて
intで0xABCDと変換したいのですが
150デフォルトの名無しさん:2008/03/04(火) 23:05:58
>>149
String s = "ABCD";
int i = Integer.parseInt(s, 16);
151デフォルトの名無しさん:2008/03/04(火) 23:07:07
>>150
ありがとうございます
引数に指定するだけなんですね
152デフォルトの名無しさん:2008/03/04(火) 23:47:26
お世話になります。

swingいじりしているのですが、根本がわかっていません。
JFrameのインスタンスを作ると、そいつは、自動的に別のスレッドで動いているのでしょうか?
関数main()は、最終行まで処理されて、その後ろはないのですが、
JFrameでつくったウィンドウやその上のコンポーネントは動作を続けています。

スレッドでなければ何なのか理解できません。
エスパーしていただけませんか。
153デフォルトの名無しさん:2008/03/05(水) 00:04:25
分かりません。教えてください。初心者です。エスパーしてください。
154デフォルトの名無しさん:2008/03/05(水) 00:15:34
>>152
クラスは作成したとき一回だけ初期化用のメソッドを通る。
155デフォルトの名無しさん:2008/03/05(水) 01:12:20
OSのシステムフォントを得る方法はありますか?
156デフォルトの名無しさん:2008/03/05(水) 01:28:07
Javaの質問とちょっとずれる気もしますが・・・

DBとのコネクションを確立する為に
Connection con = null;
con = DriverManager.getConnection(URL,USER,PASS)

などと書きますよね。
この時、conはインスタンスと呼んで良いのですか?
Connectionはインターフェースなのでインスタンスを生成することはできないはず。
インスタンスでないとしたら何なのでしょうか?
ご教授下さい。
157デフォルトの名無しさん:2008/03/05(水) 01:30:59
>>152
ThreadGroup#listでどんなスレッドが動作しているか見てみるといい。
思った以上にいろいろなスレッドが動いているのが分かる。
158デフォルトの名無しさん:2008/03/05(水) 01:32:57
>>156
conはConnectionインタフェースを実装するクラスのインスタンスへの参照
159デフォルトの名無しさん:2008/03/05(水) 01:35:38
一応、正確を期すなら「conで参照しているインスタンス」みたいな言い方になる。
変数それ自体はインスタンスではない。
160デフォルトの名無しさん:2008/03/05(水) 03:18:58
>>152
そう、SwingはEDTという別スレッドで動いている
そして、ここ以外では動かしてはダメ、というのがルール
161デフォルトの名無しさん:2008/03/05(水) 04:15:31
>>152
名前をわざわざ変えなければ、mainメソッドはmainという名前のスレッドで動作している。
Swing関係の機能を使うとさらに別のいくつかのスレッドが生成される。
その中には>>160の言うEDTというGUI関係のイベント処理を一手に担うスレッドもある。
この新たに生成されたスレッド群によってウインドウやその上のコンポーネントが動作する。
mainメソッドが最後まで処理されるとmainという名前のスレッドは終了して無くなるが、
他のスレッドが終了するまでプログラム全体としては終了しない。
162デフォルトの名無しさん:2008/03/05(水) 11:23:40
EDT自体はAWTにもあってSystem Queueっていう名前でマルチスレッドになってる。
Swingのイベント周りはシングルスレッドで動いててSwingコンポーネント生成を含めてSwingコードはEDTで動かさないといけない。
昔、Swing関連のスレッドにはバグがあるからSwingコンポーネントの生成もEDTで行うようにと作法が密かに変わってSwingのチュートリアルだけが変更されてまともなアナウンスはされてない。
163デフォルトの名無しさん:2008/03/05(水) 12:10:15
>>152 の書き方だと
>JFrameのインスタンスを作ると、そいつは自動的に別のスレッドで動いているのでしょうか?
と訊いているのだから、コンストラクタの呼び出しのことで、それ自身はmainのスレッドで動いているでいいんじゃない?
全てのコンストラクタの呼び出しが終わらなければmain()には戻らないと…
コンポーネントのイベント処理はまた別の話で。
もちろんSUNの推奨は >>162 の云うようにコンポーネントの作成もEDTで行うなのだろうが…
164デフォルトの名無しさん:2008/03/05(水) 12:34:10
ボタンを作って、そのボタンを押すとthreadがnullになるように作っています。
run()メソッドの中に書かれている処理にかかる時間が短い場合(1ms以下)だと正常に止まってくれます。
しかし、処理にかかる時間が長い場合(100msくらい)だと何回もボタンを押さないと止まってくれません。
どうしたらいいですか?

run()メソッドの中
while(thread != null) {
処理
thread.sleep(100);
}
165デフォルトの名無しさん:2008/03/05(水) 12:40:35
>>164
時間のかかる処理の途中で if(thread==null) break; とかしてみる。
166デフォルトの名無しさん:2008/03/05(水) 12:49:12
コンストラクタってコンストラクタ自身がスレッド作ってその上で動いてなかったっけ?
167デフォルトの名無しさん:2008/03/05(水) 13:35:10
えっ
168デフォルトの名無しさん:2008/03/05(水) 13:50:35
>>166
試しちまったじゃねぇかよ。
public class ConstractaThreadName{
ConstractaThreadName(){
DisplayThreadsName();
}
public static void main(String[] argv){
ConstractaThreadName ctn = new ConstractaThreadName();
System.out.println();
DisplayThreadsName();
}
private static void DisplayThreadsName(){
int i, n;
System.out.println("Display Threads Name");
Thread[] tarry = new Thread[Thread.activeCount()];
n = Thread.enumerate(tarry);
for(i = 0; i < n; i++)
System.out.println(tarry[i].getName());
}
}
169デフォルトの名無しさん:2008/03/05(水) 13:57:48
>>168
カレントスレッドがどれかも表示しないと意味なくない?
170デフォルトの名無しさん:2008/03/05(水) 14:01:32
>166
スレッドの生成コストってフルGC並の糞思い処理だぜw
171デフォルトの名無しさん:2008/03/05(水) 14:03:00
eclipse Europe 3
と日本語化をつかってるのですが
バージョンアップするには何をダウンロードしてどうしたらいいですか?
172デフォルトの名無しさん:2008/03/05(水) 15:48:54
>>171
Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1200918324/l50

こっちで聞け
173デフォルトの名無しさん:2008/03/05(水) 16:54:03
いやjavaのスレッドじゃなくてVM内部で別のスレッド走らせてるんじゃなかったけ?
言語違ったかなぁ・・・。
174デフォルトの名無しさん:2008/03/05(水) 17:01:43
>>173
そんなわけのわからんことはしないよ
そんな奇妙なことをする言語があるなら興味深い
コンストラクタじゃなくてファイナライザか?
175デフォルトの名無しさん:2008/03/05(水) 19:50:02
質問です。

GI プログラム中から
他のGUI プログラムを呼び出したときに
必ず呼び出したプログラムのウィンドウ(Frame)にフォーカスをあわせる方法
ってありますか?

呼び出すプログラム側でエンターキーで他のプログラムを呼び出すのですが、
エンターキーを連打したときなどに、どっちのプログラムもキーの受付をしてくれなくなります。

マウスでクリックしてやれば、アクティブになってキー操作を受け付けてくれるのですが。
176デフォルトの名無しさん:2008/03/05(水) 19:51:14
>GI プログラム中から
GUI プログラム中から
のミスです

あと、
> 必ず呼び出したプログラム
呼び出された新しいプログラム という意味です。
177デフォルトの名無しさん:2008/03/05(水) 21:18:28
詳しい方へ質問です。

『作成したプログラムを保存するフォルダを作る。コマンドプロンプトを起動したらそのフォルダがディレクトリになるように設定する(Cドライブのルートに「My Java」フォルダを作成し、ここをディレクトリにする)』
という作業をしたいのですが、「コマンドプロンプトのプロパティ」→「ショートカット」で「作業フォルダ」に“C:¥My Java”と入力すると、
「“C:¥My Java”フォルダは無効です。フォルダがあるか、またはパスが正しいか確認して下さい。」と出てしまいます。
他にフォルダを作った覚えもないのに、何度やっても同じ結果になってしまうのですが、どうしてなんでしょう?

あ〜もう!自分で書いてて意味分からない‥
178デフォルトの名無しさん:2008/03/05(水) 21:32:09
>>175
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Window.html#toFront()

>>177
"C:\My Java"
と入れてみ。
C:\は全角で入力する必要があるし、
フォルダ名にスペースを含む場合は前後を"で囲む必要がある。
179デフォルトの名無しさん:2008/03/05(水) 21:32:44
C:\は全角じゃない半角だった
180デフォルトの名無しさん:2008/03/05(水) 21:44:13
>>177
質問の内容がJavaではない気がする・・・。
Javaのプログラム上からファイル出力をする為のディレクトリを生成して
Javaからコマンドプロンプトを起動してカレントディレクトリを設定するって事ですか?
181デフォルトの名無しさん:2008/03/05(水) 21:52:13
int a, b;
System.ou.t.println(a + b);
このaとbを外部からの入力で処理したいのですが、
PHPなんかのWebプログラミングでは、フォームから値を渡しますが、
Javaの場合どうやったらいいんでしょう?
GUI画面を作ればいいのかな?とは思うのですが、やったことがなくてイメージわかないし、
Servlet+JSPなんかの場合、PHPと同じようなことができるんでしょうが、
まだ環境構築どころかJavaでのWebプログラミングのやり方もわからないので、
とりあえずコマンドプロンプトから入力してくださいみたいな感じで、
aとbを順に打ち込んで計算するようなものを作ってみたいと思っています。
どのへんのクラスを使えばいいのでしょうか?
182デフォルトの名無しさん:2008/03/05(水) 21:56:07
>>181
いきなり2ちゃんかよ。
まずは本なり入門サイトに行けよ
183175:2008/03/05(水) 22:21:26
>>178
最前面には来るんですけど、キー入力が受付ないんですよね。
クリックしてアクティブにしてやると受け付けるんですが
184デフォルトの名無しさん:2008/03/05(水) 22:24:54
>>181
System.in から1行読めばいいんじゃないかね。
185デフォルトの名無しさん:2008/03/05(水) 22:26:53
// >>181
public static void main(String[] args) throws IOException {
// 標準入力ストリームから行単位で読み込めるようにBufferedReaderクラスのインスタンスを生成
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print(a: );
// 標準入力から1行読み込みint型に変換
int a = Integer.parseInt(br.readLine());
System.out.print(b: );
int b = Integer.parseInt(br.readLine());
System.out.println(a + b);
}
186185:2008/03/05(水) 22:34:02
訂正
System.out.print(a: ); // ×
System.out.print("a: "); // ○
System.out.print(b: ); // ×
System.out.print("b: "); // ○
あと
import java.io.*;
も忘れないように。
187デフォルトの名無しさん:2008/03/05(水) 22:38:28
>>155
たぶん見た目ネイティブにしたいんだろうが、
JavaでOSのシステム標準フォント設定を得る方法など聞いたことがない。
188デフォルトの名無しさん:2008/03/05(水) 22:58:51
システムカラーなら取れるんだけどね
189デフォルトの名無しさん:2008/03/05(水) 23:37:52
>>181
「Java Scanner」でググって見なよ
190デフォルトの名無しさん:2008/03/06(木) 06:58:02
c言語に比べてjabaを初心者が先に学ぶメリットって何かありますか?
良かったら説明して下さい!
191デフォルトの名無しさん:2008/03/06(木) 08:16:53
まずは英語を勉強する方が良いと思うぞw
192デフォルトの名無しさん:2008/03/06(木) 08:33:55
JAVAのテキストが一通り終わったのですが、
次は何をすればいいでしょうか?
193デフォルトの名無しさん:2008/03/06(木) 08:44:29
ソフト会社にバイトに行って、いかに自分がダメダメかを思い知るw
194デフォルトの名無しさん:2008/03/06(木) 09:45:48
Javaを「メモリ管理不要、C++」として見てしまいますが、
すべてのパッケージを勉強する必要がありますか?
195デフォルトの名無しさん:2008/03/06(木) 10:05:04
> すべてのパッケージを勉強する必要がありますか?
必要なら。
196デフォルトの名無しさん:2008/03/06(木) 10:18:27
com.sun.*とSwingの非公開クラスはいらんだろう。
197デフォルトの名無しさん:2008/03/06(木) 10:28:31
>194
不要。
java.lang.*
java.util.*
は大雑把にでもいいから確認して、後は必要に応じて調べれば十分
198デフォルトの名無しさん:2008/03/06(木) 10:32:50
>>196
非公開クラス?
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/

ここで見てて涙目になりました;;
覚える事が多すぎます・・・
199デフォルトの名無しさん:2008/03/06(木) 11:30:56
>>198
それは1つ前のバージョンのだな
最新はこっちだ
http://java.sun.com/javase/ja/6/docs/ja/api/

必要になったときに必要なものを調べて来られれば、全部覚える必要はない
200デフォルトの名無しさん:2008/03/06(木) 11:31:56
>>198
java.ioはI/O系、java.sqlならJDBCまわりってレベルで十分。
あとは、必要に応じて調べるだけ。
201デフォルトの名無しさん:2008/03/06(木) 12:52:12
Scannerでの質問なのですが

import java.util.Scanner;
public class TestPorb
{
public static void main(String[] args)
{

Scanner input = new Scanner (System.in);
String gen = input.next();
int pt2 = input.nextInt();
int pt1 = input.nextInt();
//input.nextLine();
String name = input.nextLine();
int numOfGame = input.nextInt();
String pos = input.next();
}
}

name をとるときに inputMissmatchというエラーが出ます
コメントを解除するとちゃんと動くのですが、
理由が分かる人がいれば教えてください。
202デフォルトの名無しさん:2008/03/06(木) 13:01:47
>>201
nextLine は InputMismatchException を投げません。
入力次第なので、後は何とも。
203201:2008/03/06(木) 13:11:36
>>202

入力は、

aaa
12
23
asd asd

で試したところ、

InputMismatchException:
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at TestPorb.main(TestPorb.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)

を投げてきて、次の入力に進めません
長くてすみません。
204デフォルトの名無しさん:2008/03/06(木) 13:41:01
>>203
で、それは何処で止まってるのでしょうか、と。
// 一行ごとに直前の変数を出力して、
// 入力と解析後の対応部分を確かめつつ。
205デフォルトの名無しさん:2008/03/06(木) 13:46:14
nextIntが23の後の改行も食ってるとか?
206201:2008/03/06(木) 13:55:08
>>204

入力は一行づつで、
最後の asd asd を入力した時点でのエラーです。
その前に入力したデータは全て正常に入っています。
どうも入力した "asd asd" を nextLine() で Stringに入れることができていないようなんです。

String name = input.nextLine(); の実行前に一度 input.nextLine(); を実行することでエラーを回避できるので、
Bufferに何か残っているのかな、と予想しているのですが実際のところよく分かりません。
207201:2008/03/06(木) 13:57:50
>>205

だとすれば、
無駄にinput.nextLine()を走らせて回避するしか方法はないのでしょうか・・
208デフォルトの名無しさん:2008/03/06(木) 14:57:03
>>205
まあ、nextLine が、"23" の直後から改行までを、改行抜きで食ってるだけ。
よって、"23<改行>" なら、戻り値の列長はゼロ。

>>207
そうそう。無駄に nextLine を走らせてください。そういう仕様です。
細かく調整したいなら sikip というものもあります。
209201:2008/03/06(木) 22:17:42
>>208

そうですか、分かりました
skipの方も試してみます

ありがとうございました
210デフォルトの名無しさん:2008/03/06(木) 22:21:33
今、自分のPCに
Java SE 6 Update 3 がインストールされており、
ブラウザでアプレットなどが起動できるのですが、

Update 4 や Update 5 をインストールすると
Update 3 で起動できていたアプレットが起動しなくなり、
ブラウザを閉じようとすると、固まってしまう状態になります。

ランタイムをアンインストールして Update 3 に戻すと正常に動作するようになるのですが、
Update 4 以上のバージョンで何か問題があるのでしょうか?

コントロールパネルのJavaの設定で、
インターネット一時ファイルなどを削除してみても、
アプレットは動作しませんでした
211デフォルトの名無しさん:2008/03/06(木) 22:40:16
リグレッションバグ踏んだとか
212デフォルトの名無しさん:2008/03/07(金) 00:14:08
アプレットが元々バグってて、古いバージョンではたまたま動作してただけとか
213デフォルトの名無しさん:2008/03/07(金) 08:29:09
お世話になります。

SwingでGUIのプログラム作ってみているのですが、
イベント動作(?)を設定できずに悩んでいます。
お力添えください。

(awtの?)ActionListener,ActionEvent,ActionPerformed()で、
イベント動作を記述したいです。

JPanel A
├JPane B
|├JButton 1 (implements ActionListener)
|└JButton 2 (implements ActionListener)
└JTabbedPane
 ├JTextArea 1
 └JTextArea 2
例えば、JFrame以下に、上記の構造のコンテナの階層があって、
各コンテナは、直上のコンテナでインスタンス化される。
以上としたときに、
ボタンのActionPerformed()にて、
テキストエリアの内容を保存したり、とにかくテキストエリアにアクセスしたいのですが、
その手段がわかりません。
( 続く)
214213:2008/03/07(金) 08:29:32
(続き)

すべての変数をJPanel A 直上でインスタンス化して、
上記の構造をつくり、
JButtonは、内部クラスにすれば、動作の設定はできるのですが、
コンテナの数が多くなってきたときに、内容を読むのが辛い気がします。

また広域な変数を作ることでも可能なのでしょうが、あまり使いたくないです。

どのようにすればよいでしょうか。

最終的には、JMenuBar以下のメニューからのアクセスをしたい、
且つ、JMenuBar以下の構造は、クラスとして、
外部クラスか内部クラスとして宣言したいです。
また、JTabbedPaneは、メニューなどから、増加させたり、削除させたりしたいのですが、
「各コンテナは、直上のコンテナでインスタンス化される。」
のルールにのっとった記述ができなく、簡単化のため、上記の例を出しました。

よろしく御願いします。
215デフォルトの名無しさん:2008/03/07(金) 10:36:36
>>213
ボタンとテキストエリアで行うことを仕様とし、その実装をクラスにする。
そのインスタンスをパネルAで生成し、パネルBとタブの生成時に渡す。
216デフォルトの名無しさん:2008/03/07(金) 12:10:01
数値a, b(long、doubleも含む)のどちらが大きいか比較し、
a<bなら負、a>bなら正、a==bなら0を返すような標準APIってありますか?

自分で作れというのが最もなのですが、割と頻繁に使う状況に遭遇するので、
標準でそのようなAPIは無いのか疑問になって質問しました。
Mathにはなかったようなのですが。
217デフォルトの名無しさん:2008/03/07(金) 12:18:40
>>216
new BigDecimal(a).compareTo(new BigDecimal(b)) とか?
無限大やらNaNやらの場合は知らん。
218デフォルトの名無しさん:2008/03/07(金) 12:27:43
>216
数値といっても型が違えば単純には比較でないだろ、常考
比較する為の一般に通用する仕様がないわけだから安直に標準APIじゃ提供しようがない
219デフォルトの名無しさん:2008/03/07(金) 12:33:59
それくらい自分で作れ。
220デフォルトの名無しさん:2008/03/07(金) 13:07:15
>>217
ありがとうございます。
取りあえずこれでいけそうですね。

>>218
説明不足でした。型はプリミティブ型でよいです。
System.out.print()のように引数タイプに全てのプリミティブ型を
用意しているクラスメソッドがあったので、数値比較についてもあるのかなと思ってました。
221デフォルトの名無しさん:2008/03/07(金) 13:21:14
同じ型どうしなら a-b でいいのだけど、それじゃダメってことだよね。
222デフォルトの名無しさん:2008/03/07(金) 13:39:09
>>216
×最も
○尤も

(a==b)? 0: (a<b)? -1: 1;
223デフォルトの名無しさん:2008/03/07(金) 13:39:31
>220
だからdouble と int をどうやって比較するのかと(ry
224デフォルトの名無しさん:2008/03/07(金) 13:40:42
パネルにコンポーネントをadd()してからそのコンポーネントをadd()の反対にすることはできますか?
225デフォルトの名無しさん:2008/03/07(金) 13:45:31
ん?remove(Component)のこと?
226デフォルトの名無しさん:2008/03/07(金) 13:59:21
>>223
値範囲で 217 に負けるけど、Double.compare(double, double) でも良いと思うのですが
変換で何か重要な問題があったっけ……
227216:2008/03/07(金) 14:03:57
本当に説明不足でした。
ぐだぐだですみません。
返す型は int。
型はプリミティブ型。
>>221
(int)(long型 - long型)すると、差がInteger.MAX_VALUEより大きい場合に
問題が起きそうなのでその方法はとりませんでした。

>>222さんのように三項演算子で書く方法が一番スマートそうですね。
どうもでした。
228216:2008/03/07(金) 14:08:05
>>226
読む前に投稿していました。
まさにこんな感じのを求めてました。
ありがとうございます。
229デフォルトの名無しさん:2008/03/07(金) 14:10:20
>>226
int i = 0;
double d = 0.0;
230226:2008/03/07(金) 14:13:42
>>229
日本語での解説をお願いします。
231デフォルトの名無しさん:2008/03/07(金) 14:14:32
(゜д゜) はぁ?
232デフォルトの名無しさん:2008/03/07(金) 14:22:24
javadocよく嫁
233デフォルトの名無しさん:2008/03/07(金) 14:23:29
言い忘れた
byte型の昇格じゃなきゃ特に演算時に気を付けることはない。
234デフォルトの名無しさん:2008/03/07(金) 14:27:46
嘘八百を並べた悪徳スレ
235デフォルトの名無しさん:2008/03/07(金) 14:43:59
>>216
>>226でもいいけど、long が 64ビットなのに対して double の仮数部は 53ビットしかない。
だから例えば
System.out.println(Double.compare(0x20000000000000L, 0x20000000000001L)); //=> 0
System.out.println(0x20000000000000L == (double)0x20000000000001L); //=> true

逆に言うと、あらかじめ精度が必要ない事が判っていれば
Double#compare(double, double) で構わない。
236226:2008/03/07(金) 14:55:25
>>235
なるほど。これはお勧め出来なかったですね、申し訳ない。

Long.MAX_VALUE と (double) Long.MAX_VALUE
==> 9223372036854775807
==> 9.223372036854776E18

// int と double についての方も、こういうことなのでしょうか?
237デフォルトの名無しさん:2008/03/07(金) 14:58:14
>>236
int と float だと、float の方が精度低いので問題起きる可能性がある。
238デフォルトの名無しさん:2008/03/07(金) 16:36:10
(・д・)
239デフォルトの名無しさん:2008/03/07(金) 16:54:44
MVCモデルについて質問です。
現在、MVCを使ってマインスイーパを作ろうというプロジェクトを行っています。
Mでは、m*nのテーブルを裏返したり、フラグを変更させる動作を持たせる事にします。
ここで問題なのですが、
この配列をVに描写してもらう時に、渡すのは数字の入った2次元配列です。
これを例えば1なら1と表示させるというようにすればいいように思えますが、
Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。
つまり、Mで、1という数字を100という風に書こうが31という謎の値で書こうが関係ない設計にしなければならないと思います。
この場合、私の考える中で唯一これを満たす方法は、
Mに描画のメソッドを実装して、Vで委譲させる方法ですが、
MVCの原則として、Mは描画や出入力を行ってはいけない事になっています。
そもそも、View側でもm*nで待っていてくれている保証はないわけですが、
MとVの独立性を保つためにはどのように設計すればよいのでしょか?
240デフォルトの名無しさん:2008/03/07(金) 17:07:46
>>239
>Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。 

いやいやいや。
ビューはモデルの仕様を知っている。
でなければ、何を描くのかすらわからんではないか。
ツリーモデルをマインスイーパービューに渡してどうしろというんだ。
ツリービューはツリーモデルを描く。
マインスイーパービューはマインスイーパーモデルを描く。
interface MinesweeperModel {
 int getWidth();
 int getHeight();
 boolean isFlagSet(int x, int y);
 boolean isOpen(int x, int y);
 boolean hasMine(int x, int y);
 void addChangeListener(ChangeListener l);
 void removeChangeListener(ChangeListener l);
}
こんなのでいいかと。
これをどう実装するか(二次元配列?)は、モデルの実装の詳細であって、ビューはそれを知る必要はない。
これをどう表示するか(JTable?)は、ビューの実装の詳細であって、モデルはそれを知る必要はない。
ただし両者とも、そのインタフェイス (MinesweeperModel) の仕様は知っている。
241デフォルトの名無しさん:2008/03/07(金) 17:13:31
MVCってjava関係ないじゃん。
ゲーム作ってるならこっちの方が適切。

ttp://pc11.2ch.net/test/read.cgi/gamedev/1155209226/l50
ゲームにおけるデータ構造・クラス設計・パターン
242デフォルトの名無しさん:2008/03/07(金) 17:15:00
クリックされたら配列に入力され、その後配列と対応する場所に四角を書きたいんですが
うまくいきませんorz
どこがだめなんでしょうか?
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/*
<applet code="proto" width=200 height=200></applet>
*/
public class proto extends Applet implements MouseListener{
Point p;
boolean bl[][] = new boolean[20][20];
public void mouseClicked(MouseEvent me) {
p = me.getPoint();
bl[p.x/10][p.y/10] = true;
repaint();
}
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void paint(Graphics g){
for(int x=0;x<20;x++){
for(int y=0;y<20;y++){
if(bl[x][y] == true){
g.fillRect(x*10,y*10,10,10);
}}}}}
243デフォルトの名無しさん:2008/03/07(金) 17:18:48
>>242
addMouseListener
244239:2008/03/07(金) 17:22:15
>>240
プログラムが出来たら、うpするので
その時に評価してもらおうと思います。
いろいろ考えると難しくて。実装じゃなくて、設計が。
設計やさんは優秀じゃなきゃ出来ませんね。
設計が腐ってるとすべてが終わる。
設計がしっかりしてれば
実装なんか中卒だろうが高卒だろうが
理系だろうが文系だろうが
関係なしに出来るのではないかと思えてきましたが、
実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?
245242:2008/03/07(金) 17:26:33
うわ・・恥
>>423どうもありがとうございました
246デフォルトの名無しさん:2008/03/07(金) 17:32:36
実装をなめんなよ
247デフォルトの名無しさん:2008/03/07(金) 17:38:34
>実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?

そういう話題はマ板向き
248デフォルトの名無しさん:2008/03/07(金) 17:51:19
設計する人が優秀とは限らないが、優秀でない人が設計すると火事になる
249239:2008/03/07(金) 18:02:27
今、ぼくは
「クラスが独立であるとは、クラスが単独でテスト可能である事と同値である」
という持論に基づいてプログラムしています。
これが正しいかどうかは置いといて、
テストが不可能、例えば乱数に寄ってしまっている設計はいけない設計ですか?
例えばマインスイーパなら、爆弾を仕掛けると思いますが、
爆弾を仕掛けるのを乱数に頼って、イニシャライザに組み込んでしまうと、
動作ごとにどこに爆弾が仕掛けられたか分からず、
「ここを押せばこういう状態に遷移する」
といったテストが行えません。
今作ってるプログラムはまさにこうなのですが、
これは失敗した設計ですか?
250デフォルトの名無しさん:2008/03/07(金) 18:06:26
>>240の書いているようなモデルインターフェースを作っていれば、そんなものいくらでも実装で変更できると思うんだけど。
251デフォルトの名無しさん:2008/03/07(金) 18:13:59
>>249
乱数を元にしないNonRandomMinesweeperModelを使ってテストすればいいだけだ
252デフォルトの名無しさん:2008/03/07(金) 18:17:45
乱数に限定した話なら乱数シードを外から渡すようにすれば良いだけの話。
再現性が保てない設計は失敗と言っていい。
253239:2008/03/07(金) 18:20:36
>>252
再現性が保てない設計は失敗なんですか。
確かにぼくもこれではテストが出来ないではないかと
すごく不安になってました。
乱数シードを外から渡してみます。

もしぼくが設計者だったら大火事でしたね。
254239:2008/03/07(金) 18:22:40
コーディングの段階からjavadocに基準した
コメントを書いておくべきですか?
みなさんはどうなされていますか?
255デフォルトの名無しさん:2008/03/07(金) 18:22:41
>>249
イニシャライザが何か初期化してても、とりあえずそれを無視して、
テスト用の盤面に書き換えてからテストすればいいんじゃないか
256デフォルトの名無しさん:2008/03/07(金) 18:35:59
>>254
場合による。

ライブラリとかみたいにドキュメントはきっちりしてた方がいい場合もあるし
アプリケーションで要求変更がばしばしくる案件なんかではドキュメント書いても
次の日には書き換えなきゃいけなくなったりで割に合わない場合もある。
257239:2008/03/07(金) 18:36:36
>>255
それが可能な設計ではないという事です。
でも、これは具体的な話ですが、
initBoard(int i, int j, int[][] bombBoard)
とかいう風にします。
今は
initBoard(int i, int j, int bombNum)
としています。これは爆弾の数から内部で爆弾が配置されたボードを弾いて、それを使って
Boardをinitializeしようという設計だからです。
でもこれは爆弾ボードの生成で乱数を使ってしまうので、再現性がありません。
しかし、上記のメソッド定義だと、ユーザが好き勝手なテーブルを引数にしてしまいます。
これはユーザに使い勝手がいいとは言えない気がします。
例えばもし縦横の配列数が違った場合は、Exceptionを出して処理を終了させればいいのでしょうか?
258デフォルトの名無しさん:2008/03/07(金) 18:43:02
>>257
>initBoard(int i, int j, int[][] bombBoard) 
>とかいう風にします。 
>今は 
>initBoard(int i, int j, int bombNum) 
>としています。

それ両方あればいいじゃん
ユーザは使い勝手の良い方を選んで使えばいい
259デフォルトの名無しさん:2008/03/07(金) 18:44:47
initBoard(int width, int height, int bombNum, long seed) で良いじゃん。
260239:2008/03/07(金) 18:45:50
>>258
なるほど、オーバーロードがありましたか。
その発想は気づきませんでした。
確かにJavaAPIにある多くのライブラリには複数イニシャライザが設定されてるものがありますね。
でも書き直しですね。このままだとDRYに反する。
261239:2008/03/07(金) 18:54:11
>>259
seedを引数にするという発想は正常ですか?
自由な配列を入れさせてもし大きさが違っていたら
Exceptionを発行して弾くというのは
少し感覚的におかしい気がします。
「型が違う」「クラスが違う」という弾き方は正常かと思いますが、
配列の大きさが違う、という事で弾かれるのは、
外から見てる人が、引数に対してすでに設定したBoardの大きさを意識して
入れなくてはいけない事になります。
これは使い勝手がいいとは言えないし、
おそらく正しい設計に基づいているであろう
GUIのライブラリがそういうものがあったかどうか考えても
なかったように思えます。
(もしあったら教えてください)
262239:2008/03/07(金) 18:55:17
あ、でもそれじゃseedがどういう時にどんな配列が出来るか
は予想がつかないのでテストケースが書けないですね・・・
263デフォルトの名無しさん:2008/03/07(金) 18:58:04
>260
DRYだろオーバーロードは基本的に。
void a(int i) と void a(int i, int j)
があったとすれば、前者の実装は
a(i, 0)
のように記述するだろ?
264デフォルトの名無しさん:2008/03/07(金) 19:01:00
>>261
乱数のシードを渡すくらいなら Random オブジェクトを渡した方がいいと思う
そうすれば SecureRandom を使うこともできるし (セキュアな盤面が必要な状況なんかないだろうけど)、
テスト目的に Random を継承してランダムでない値を返すようにしたオブジェクトを渡すこともできるし
265デフォルトの名無しさん:2008/03/07(金) 19:10:59
>>235
言語仕様的には strictfp が付いてなければ IEEE754 に従っている保証はない
ちなみに、IEEEの倍精度は精度は53桁だけど仮数部は52ビットだった気が
266デフォルトの名無しさん:2008/03/07(金) 19:14:07
優秀でない人が実装すると設計が無駄になる
267デフォルトの名無しさん:2008/03/07(金) 19:19:17
>>264
Random を継承してランダムでない値を返すくらいなら、
単に、数値を返すメソッドを持ったインタフェースを渡した方がいいと思う
268デフォルトの名無しさん:2008/03/07(金) 19:22:29
>>254
コメントはテストケースにしっかり書いた方が良いよ
269デフォルトの名無しさん:2008/03/07(金) 19:27:09
>>262
どういうシードを渡した時にどういう配列が出来るかは、どういう乱数が発生するかと等価だから
乱数生成ルーチンのテストにしかならん。除外可能。でなければ乱数生成を自前でやる必要が
出て本末転倒な事になる。異なるシードを与えたときに異なる配列になることが確認できれば十分
(もちろんその整合性も)。

というかホワイトボックステストがしたいのかブラックボックステストがしたいのかはっきりせれ。
270デフォルトの名無しさん:2008/03/07(金) 19:29:13
つうか、そこまでするんだったら、
interface InitBoard {
int width();
int height();
boolean bomb(int x, int y)
}
などというインタフェースを渡せばいいやん
271デフォルトの名無しさん:2008/03/07(金) 19:41:35
>>265
>>235の例だけでいえば定数式だから strictfp ついてなくても
0 だったり true だったりは言語仕様で保証されてる。
272239:2008/03/07(金) 19:41:41
>>270
インターフェイスを使うメリットが分かりません。
インターフェイスは、そこに書いてあるメソッドに実装を強要するだけであり
なぜこの場面で使わないといけないのかが分かりません。
273デフォルトの名無しさん:2008/03/07(金) 19:42:49
「エンジニアリング設計の基準を実際に満足することのできる唯一のソフトウェアドキュメントはソースコードだけだ」
と Jack Reeves 様が言っております。
ソフトウェアで巷で言われている「設計」などというものは
他の工学では単に設計の骨組みに過ぎないのです、たぷん
274デフォルトの名無しさん:2008/03/07(金) 19:44:13
上にもいろいろ書いてあるだろ?
インターフェイス使えば同じ機能でも別の実装が可能になるんだって。
もう少し自分でいろいろ試行錯誤するべきだと思うよ。
275デフォルトの名無しさん:2008/03/07(金) 19:46:44
マインスイーパーのマス程度にポリモーフィズムはいらんだろw
必要になったとすればもうそれは別のゲームになってるから設計からやり直したほうがいい。
276デフォルトの名無しさん:2008/03/07(金) 19:57:15
javaじゃなくて設計の話になってるな。
277デフォルトの名無しさん:2008/03/07(金) 20:04:12
>>272
インターフェースを使わないメリットが分かりません。
そこに書いてあるメソッドを呼び出せれば Board の実装が可能なのに
なぜこの場面で使うといけないかが分かりません。
278デフォルトの名無しさん:2008/03/07(金) 20:14:08
JavaのClass.getDeclaredClasses()の使い方について質問させてください。
あるクラスで宣言されているクラス名を獲得しようとしているのですが、思うように動いてくれない状況です。
以下のようなテストコードを作ったのですが、

public class Hello {
public String message=new String("Hello");

public static void main(String[] args){

Hello hello=new Hello();
Class helloClass=hello.getClass();
Class[] classes=helloClass.getDeclaredClasses();

System.out.println("Num of Classes "+classes.length);
for(Class cls:classes){
System.out.println(cls.getName());
}
}
}

自分の想定では

Num of Classes 1
java.lang.String

という表示が出ることを期待していたのですが、実際の出力は

Num of Classes 0

となってしまい、クラス名の配列を獲得できません。
ドキュメントを読んだりネットを検索しても理由が分からず、お知恵を拝借したい次第です。
ちなみに、JDKは1.6.0_04を利用しています。
279デフォルトの名無しさん:2008/03/07(金) 20:22:54
>>278
getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
メンバーとして宣言されたクラスおよびインターフェイスを得る。

よーするに、
public class Hello {
 public static class Foo{}
 public static void main(String[] args){
  System.out.println(Hello.class.getDeclaredClasses().length); //->1
  System.out.println(Hello.class.getDeclaredClasses()[0]); //->class Hello$Foo
 }
}
280278:2008/03/07(金) 20:31:08
>>279
>getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
>メンバーとして宣言されたクラスおよびインターフェイスを得る。

さっそくのご回答ありがとうございます。
理解しました。なるほど、そういうことだったのか…

私がやりたかったのは前者だったのですが、
あるクラスのメンバとして宣言されている(has a関係の)クラス名を取得する方法という方法は
あるのでしょうか?
281デフォルトの名無しさん:2008/03/07(金) 21:22:44
突然ですがすみません。
最近VistaのBasicにJava6update5をインストールしてから、
Yahooオークションの詳細な残り時間が表示されなくなるばかりか
ブラウザが固まってしまいます。
私だけでしょうか。
http://help.yahoo.co.jp/help/jp/auct/bid/bid-24.html
このヘルプ通り設定してもダメでした。
282デフォルトの名無しさん:2008/03/07(金) 21:29:20
あなただけです
283デフォルトの名無しさん:2008/03/07(金) 21:37:06
内部クラスについて教えてください。
public class Class2 {
  public static void main(String args[]){
    new Class2().sub2();
  }
  int a = 100;
  public void sub2() {
    new Class3().printPrintln();
    new Class4().printPrintln(this);
  }
  class Class3 {
    void printPrintln() {
    int a = 1000;
    System.out.println(a);
    //System.out.println(this.a);
    }
  }
}
class Class4 {
  public void printPrintln(Class2 variableClass2) {
    System.out.println(variableClass2.a);
  }
}
のコメントアウトされている行で、Class2のaを取り扱いたいのですが、
不可能でしょうか?thisのような何かは存在しませんか?
284デフォルトの名無しさん:2008/03/07(金) 21:39:08
存在します
285デフォルトの名無しさん:2008/03/07(金) 21:54:29
>>280
> あるクラスのメンバとして宣言されている(has a関係の)クラス名を取
> 得する方法という方法はあるのでしょうか?

java.lang.ClassのAPIリファレンスを眺めて、それでもわかりませんか?

286デフォルトの名無しさん:2008/03/07(金) 21:58:48
>>281
うちでも出た。IE7 + Java6u5。Javaコンソールに
java.lang.ClassFormatError: Incompatible magic value 1011373133 in class file default
って出て、リロードすると固まる。
Operaだとちゃんと表示されるんだよね。IE用Java Plug-inの問題かも。
つうか、ヤフオクのアプレットのclassファイル、古くない?version 45.3 ってjava1.1かよ…
287278:2008/03/07(金) 22:00:51
>>285
すいません。分からないです。

当初はgetDeclaredClasses()じゃなくてgetClasses()使ってたんですが、
それでうまく行かなかったのでgetDeclaredClasses()を使って、やはりダメで…という状況です。
288デフォルトの名無しさん:2008/03/07(金) 22:04:12
>>286
そうですか。
さきほどアンインストールしたら直りました。
失礼しました。
289デフォルトの名無しさん:2008/03/07(金) 22:11:39
Javaプログラムのデプロイとアップデートについて質問させてください。
ローカルの*.classファイルが新しいものかどうかをチェックするには
どのような方法があるでしょうか?

ファイルのタイムスタンプでよいかと思ったのですが、ユーザがタイムスタンプを
書き換えるようなアーカイバを利用していた場合に対処できません。

.classファイルに外から見てわかるような内部バージョン番号をつけることはできるのでしょうか?
290デフォルトの名無しさん:2008/03/07(金) 22:17:40
JAR にしてマニフェストに書く。
291デフォルトの名無しさん:2008/03/07(金) 22:21:39
>>287
getFields?
292278:2008/03/07(金) 22:37:12
>>291
そうか、その手があったか!

import java.lang.reflect.Field;

public class Hello {
public String message=new String("Hello");

public static void main(String[] args){

Hello hello=new Hello();
Class helloClass=hello.getClass();
Field[] fields=helloClass.getFields();

System.out.println("Num of Classes "+fields.length);
for(Field fld:fields){
System.out.println(fld.getType().getName());
}
}
}


で、実行

Num of Classes 1
java.lang.String

必要な結果が得られました。ありがとうございました。
293デフォルトの名無しさん:2008/03/07(金) 22:53:16
>>290
おお、Jarでまとめるのもひとつの手ですね。タイムスタンプ署名もつけられるようですし。
ただその場合、アップデート時にはJarごと更新する必要がありますよね?
あまり大きなJarだと問題が出そうです。

更新されているclassファイルのみ更新する方法がないものでしょうか・・・
294デフォルトの名無しさん:2008/03/07(金) 23:36:29
問題が出るような大きなJarって何Gくらいなの?
295デフォルトの名無しさん:2008/03/08(土) 00:18:32
3メガぐらいで十分大きいんじゃん
296デフォルトの名無しさん:2008/03/08(土) 01:40:41
>>295
GBクラスではないです。大きくても100MBいかないぐらいまででしょうか。
でもクライアント数が多いとまるごとアップデートは現実的ではないと思いまして。
297デフォルトの名無しさん:2008/03/08(土) 01:44:05
クラスファイル等のリソースを設計、実装、運用などに合わせて分類し、それを元にjarを分ける
298デフォルトの名無しさん:2008/03/08(土) 02:52:26
Javaこそ、このあたりの自動更新機構/ツールが備わっていてもよさそうなものだが
299デフォルトの名無しさん:2008/03/08(土) 03:05:43
つ Java Web Start
300デフォルトの名無しさん:2008/03/08(土) 08:12:22
Propertiesを継承して俺俺Propertiesを作っています
getProperty(key)をオーバライドして取得した値がnullの時
exceptionを投げたいのですがPropertiesにthrowsが無いからダメと怒られます

こんな時どうすればいいですか?
301デフォルトの名無しさん:2008/03/08(土) 08:14:14
RuntimeException を投げる
302デフォルトの名無しさん:2008/03/08(土) 08:18:37
RuntimeException又はそれを継承したExceptionを投げる
303デフォルトの名無しさん:2008/03/08(土) 08:31:43
nullチェックした方で任意の例外投げる
304デフォルトの名無しさん:2008/03/08(土) 08:35:56
>>301-303
ありがとうございます。
なるほど、UserExceptionを継承したのを投げてたのですが
RuntimeExceptionを継承したのを投げたらいけました。


305デフォルトの名無しさん:2008/03/08(土) 11:00:19
>304
それはあまりよくない設計
PropertiesをラップしたMyPropertiesを作る方がいい
継承はほどほどにな
306デフォルトの名無しさん:2008/03/08(土) 11:11:26
>>305
それは考えたのですが
カバーするメソッドが多くなるので
どうかなと思ってやめました
307デフォルトの名無しさん:2008/03/08(土) 11:13:35
>306
そんなに多いか?
利用側に関してはgetProperty くらいでしょう使うのは。

初期化とかは内部で閉じるから、余計なパラメータ等を設定されるのも防止できるぜ。
不要なものまで公開しない方がいい。
308デフォルトの名無しさん:2008/03/08(土) 11:33:46
>>306
ふむ…確かに多いが、eclipse なら、delegate対象を選択して、
メニュー:Source > Generate Delegate Methods...
で、必要なメソッドを選んで一発終了ですがな。
309デフォルトの名無しさん:2008/03/08(土) 12:28:26
重い以前に回線が切れるのは何でですかね?
ダウンロードした瞬間切れるんですが・・・。
310デフォルトの名無しさん:2008/03/08(土) 14:22:39
>>308
それっぽいのがあるなーと思ってはいたのですが
使い方解らず・・・
そっちに変更します

ありがとうございました
311デフォルトの名無しさん:2008/03/08(土) 15:44:39
今までC#をやってきて、似てると噂を聞いたことのある
Javaに手をつけてみようかと思い、とりあえず
Java SE 6とEclipseをインストールしてみました。

あと何か入れておいたほうが良いものとかあります?
312デフォルトの名無しさん:2008/03/08(土) 15:50:42
>311
C#でGUIとかやっていたならば、NetBeans6を使ってSwingをいじった方が感覚的に近いかも知れん
後はWebアプリを作りたいのか、GUIアプリを作りたいのか、ちょっとしたCUIアプリなのかで入れるものは変わる
CUIならEclipseで十分。
313311:2008/03/08(土) 15:56:31
Webアプリを作ってみたいですね。

Webアプリを作るには何がいるんかな
314デフォルトの名無しさん:2008/03/08(土) 16:04:37
「Webアプリ」つっても >>311>>312 で抱いているイメージが違いそうだな
315デフォルトの名無しさん:2008/03/08(土) 17:25:50
java で作ったプログラムを配布したいんですけど、
.jar の状態で配布するのが普通なんですかね?

画像を大量にあつかうプログラムなので
-Xmx500m -Xms500m とか指定させて動かすのが普通なんですけど、
こういう場合ってバッチファイル起動させるようにする形でいいんでしょうか

アドバイスお願いします。
316デフォルトの名無しさん:2008/03/08(土) 17:41:32
バッチとかシェルスクリプトとかネイティブな実行形式でラップするとか
まあ、実行時引数渡すだけならバッチかスクリプト
317デフォルトの名無しさん:2008/03/08(土) 18:02:41
マニフェストに記述できないの?
いや、よくしらんけど
318315:2008/03/08(土) 19:02:55
>>317
マニフェストファイルに実行時引数やメモリオプションなどを記述できるんですか?
よく知らないもので、、
319デフォルトの名無しさん:2008/03/08(土) 19:29:59
320デフォルトの名無しさん:2008/03/08(土) 22:04:37
すみません質問です。

log4jを使ったjarを作っているのですが、
どうにもクラスパスを認識してくれないようです。
java -classpath /usr/share/java/log4j.jar -jar hoge.jar
でorg/apache/log4j/Loggerがないと怒られます。
開発PCはWindows(Eclipse)、実行(プレ本番)PCはFedora8です。
Windows側では正常に動作します。
321デフォルトの名無しさん:2008/03/08(土) 22:06:09
スレッドを止める方法(破棄する)ってどうしたらいいですか?
「ボタンAを押すと画像を動かし始め(スレッドを開始)、ボタンBを押した時に画像を止め(スレッドを止める)、
またAを押すと画像は動き始める」っていうものなんですが・・・
Interrupt()を使ってもとまらないしsleep()を使うとボタンが押せなくなるんです…
322デフォルトの名無しさん:2008/03/08(土) 22:16:04
>>281
私もUpdate4にした頃からアプレットが固まるようになったけど、
別スレで、
コントロールパネル > Java の
Javaコントロールパネル から
基本 > ネットワーク設定 の ネットワークプロキシ設定を
直接接続 に変更しろ

ってあったのをみて
試したら動作するようになったよ
323デフォルトの名無しさん:2008/03/08(土) 22:16:31
>>320
-jarオプションを付けると、オプション-classpathや環境変数CLASSPATHは無視され、
MANIFESTファイルのClass-Path属性に記述されたもののみが有効になる。
ちゃんとMANIFESTファイル書け。
324デフォルトの名無しさん:2008/03/08(土) 22:40:57
>>321
sleep を使うとボタンを押せなくなるようなスレッドを止めたいのなら、
アプリケーションを終了させると止まるヨ
325デフォルトの名無しさん:2008/03/08(土) 23:01:24
>>323 MANIFESTって外部のJarも書けるのは初めて知りました。
おかげで無事動作しました。サンクスです。これで家に帰れます orz
326283:2008/03/08(土) 23:43:32
お世話になります。
283なのです。

>284
ありがとうございます。
あるということで、、今日一日探してみたのですが、見つけられませんでした。
私の持っている本には見つからず、Webページでは、記述のある場所を見つけられませんでした。

Webページで参考になる場所を教えてもらえませんか。
327デフォルトの名無しさん:2008/03/09(日) 00:03:06
328デフォルトの名無しさん:2008/03/09(日) 00:04:55
>>326
仕様にズバリ載ってるだろうが・・・
329デフォルトの名無しさん:2008/03/09(日) 00:06:07
あ、thisの話じゃなかった。
330283=326:2008/03/09(日) 15:36:43
>327
ありがとうございます
確認できました。
教科書とか、入門レベルの本には載ってないのですね…。

>328
仕様書読んだことありませんでした。
参考書に沿って勉強していて気になっていた感じでした。

>329
=327ですよね?
いえ、thisの話が知りたかったのです。
Class2のaを見たいのではなくて、
最終的には、Class2 のインスタンスそのものを見たかったので、Class2.thisですね。
これが最も知りたかったことです。
ありがとうございます。
331デフォルトの名無しさん:2008/03/09(日) 17:52:45
java.lang.*;
はimportしなくても初めからされているのはなぜですか?
importするときはどんなときですか?
String s="うんこ"
みたいなふうなようなことを自作するにはどうやりますか?
おねがいします。
332デフォルトの名無しさん:2008/03/09(日) 17:56:21
>はimportしなくても初めからされているのはなぜですか? 
その方がべんりだから
>importするときはどんなときですか? 
java.lang以外のとき
>みたいなふうなようなことを自作するにはどうやりますか?
できません
333デフォルトの名無しさん:2008/03/09(日) 17:59:50
>>332
ありがとうございました。
最終結論としてjava.langをimportするときはありえないという理解で
よろしいでしょうか?
334デフォルトの名無しさん:2008/03/09(日) 18:43:12
書いてもいいけど無駄ではある。
どのクラスを使っているか明示するために*なしで1個1個のjava.lang以下の
クラスをインポート宣言する流儀はありえる。
335デフォルトの名無しさん:2008/03/09(日) 18:45:31
インスタンス化するときの、
フィールドを定数で初期化する方法として、

クラスの記述のときに、フィールド宣言と同時に初期化の値を記述してしまう方法と、

コンストラクタで実行させる、
方法をとれるみたいですが、
1の方法はとらない方がいい、といった考え方はありますか?
(1の後に2が実行されるようで、1を2で上書きできることは確認してみました。)

どのコンストラクタでも同じことをしたいならば、便利だと思ったのですが、
初期化はコンストラクタでやるべきかなとも、思いました。
こういった考え方をいろいろ教えているサイトってありませんか?
336デフォルトの名無しさん:2008/03/09(日) 18:57:18
テストについて質問です。

例えば
Class A{
A(){
methodA();
}
public methodA(){};
}
のようなクラスをテストするとします。
methodAをテストする前にインスタンスが作られますが、
そこではテストしていないmethodAが発動します。
この問題はどうすれば解決しますか?
337デフォルトの名無しさん:2008/03/09(日) 19:11:58
java sound apiがダウンロードするばしょが見つかりません
日本語マニュアルつきでおねがいします。
338デフォルトの名無しさん:2008/03/09(日) 19:44:26
>>336
Javaでおk
339デフォルトの名無しさん:2008/03/09(日) 19:48:32
>335
ケースバイケース
可読性を考えるとフィールドの宣言と同時に初期化する方がいいかもしれない
また、初期化忘れも気づきやすい

コンストラクタはあくまでインスタンスの初期化の最後のプロセスと考えるといいかもしれない。
他にも(非staticな)イニシャライザで初期化する方法もある
private int num;
{
  num = 10;
}
のような感じ
これはほとんど使わないけど
340デフォルトの名無しさん:2008/03/09(日) 19:49:21
>336
methodAがpublicである事がバグの一種
341デフォルトの名無しさん:2008/03/09(日) 20:05:25
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/sound/programmer_guide/contents.html
を圧縮形式でダウンロードできるホームページをおしえてください
342デフォルトの名無しさん:2008/03/09(日) 20:12:15
>>331
おまえには
import *;
が似合ってる
343デフォルトの名無しさん:2008/03/09(日) 20:29:18
>>340
privateでもいいですけど。
では解決策があるんですか?
344デフォルトの名無しさん:2008/03/09(日) 21:06:23
java soundってコアに入ってから関連ドキュメントもJDKに含まれなかったか?
345デフォルトの名無しさん:2008/03/09(日) 21:20:41
>>342
Javaのパッケージを理解してから出直してこい
346デフォルトの名無しさん:2008/03/09(日) 22:00:07
http://72.5.124.55/javase/ja/6/docs/ja/
のホームページと同じ、avasdkがダウンロードできるところに
あるダウンロードできるドキュメントのページが、vistaのIEで開くと空白になって
何もみえないんですけど。
解決方法おしえてください。
347デフォルトの名無しさん:2008/03/09(日) 22:06:58
>>341
ttp://java.sun.com/j2se/1.5.0/ja/download.html
[J2SE 5.0 ドキュメント] -> [ダウンロード] (一式全部有るけど)

>>343
何のためにテストを行うのか。

インスタンスを生成した後、一度も呼ばれていないメソッドを呼ぶテスト?
何が起きても起こり得ない状況をテストするの?
それらはテストをする価値があるの?
348342:2008/03/09(日) 22:27:13
>345
いいですけどって何様?

コンストラクタで呼ばれるメソッドは原則としてコンストラクタの一部
言い換えれば初期化処理の一部であって、インスタンスの生成が完了する前に実行される特殊なメソッド
これをprivate以外にするとオーバーライド時など予期せぬ問題を生じる可能性がある

で、テストする内容はインスタンスの生成で何か問題あるのか?
そのメソッドが単体でテストしなければならないほどのロジックを含むというならば、別クラスに抽出するべきだろう
349デフォルトの名無しさん:2008/03/09(日) 22:39:06
import *;
import *;
import *;

・・・プ
350デフォルトの名無しさん:2008/03/09(日) 23:49:26
>>348
オーバーライドされて困るからprivateにするってどんだけー
それなら普通finalメソッドにするもんじゃないのか?
import *;といい少しjavaの復習をしたほうがいいかと。
351デフォルトの名無しさん:2008/03/09(日) 23:54:33
swingのJTabbedPaneについて教えてください。

JTabbedPaneのインスタンスに、addTabすると、
タブが追加されます。タブのインデックス(題名がついているところ)に、
MouseListenerを設置して、クリックを検出したいのですが、
できません。
どなたか、私に助言くださいませんか。
352デフォルトの名無しさん:2008/03/10(月) 00:26:04
>>351
タブ選択は ChangeListener で検出します。
マウスの位置はどうなんだろう…
353デフォルトの名無しさん:2008/03/10(月) 01:25:51
>>350
いや、コンストラクタから呼ばれるメソッドはprivateにするのは常識だと思うぞ
finalでもいいがコンストラクタに関してもう少し勉強した方がいいのはお前かと
354デフォルトの名無しさん:2008/03/10(月) 01:52:08
>>351
JTabbedPaneにMouseListenerをaddして、
そのリスナのmouseClickedメソッドでJTabbedPane#indexAtLocation(int,int)に、
MouseEventのx,y座標を渡せば、
タブ部分をクリックした時は選択したタブに合わせて0以上の値が、
タブ部分以外の場合は-1が返ることで区別ができると思う。
355デフォルトの名無しさん:2008/03/10(月) 01:56:37
350の言うことなんざどうでもいいよ
バカはバカを呼ぶっていうしな
それよりimport *;についてkwsk
356デフォルトの名無しさん:2008/03/10(月) 09:23:12
オートボクシングを自分でつくることはできますか?
357デフォルトの名無しさん:2008/03/10(月) 09:26:53
eclipseで自動で色々なメソッドのjunitテストを作って
勝手に作られたテストメソッドを削除したり増やしたりしても
もんだいありませんか?
358デフォルトの名無しさん:2008/03/10(月) 10:02:04
勝手に作って勝手に削除しても何の問題もないだろ
359デフォルトの名無しさん:2008/03/10(月) 10:07:18
>>356
無理。コンパイラの自動補完機能です。
360デフォルトの名無しさん:2008/03/10(月) 10:16:59
>>356
つられて見るが、何をボクシングしたいんだ?
361デフォルトの名無しさん:2008/03/10(月) 11:20:01
javaで2進数を表すにはどうしたらいいですか?
362デフォルトの名無しさん:2008/03/10(月) 11:22:24
表すの意味をはっきり
363デフォルトの名無しさん:2008/03/10(月) 11:23:16
無理っす。
int binNum = Integer.parseInt("10110001",2);
これで我慢だー
364デフォルトの名無しさん:2008/03/10(月) 11:28:05
binNum
ビンナム

ジョンイルみたいなノリでワロス
365デフォルトの名無しさん:2008/03/10(月) 15:00:51
>>361
2進数表記の整数リテラルを所望ってことならJavaには無い
8、10、16進数表記しかない
366デフォルトの名無しさん:2008/03/10(月) 16:52:14
Javaの格言という本を買ってきました。
読んだ事ある人いますか?
367デフォルトの名無しさん:2008/03/10(月) 17:10:03
それを尋ねることの意味が分からん。
せっかく買ってきたのなら読んで自分で評価、判断すればいい。
368デフォルトの名無しさん:2008/03/10(月) 17:42:04
Javaで音声認識やってる人居る?

Java SAPIってのが一応用意されてるみたいんなんだけど、
これって日本語対応してますか?
369デフォルトの名無しさん:2008/03/10(月) 18:50:57
質問です。
他言語(例えばC++)等で作成したプログラムを、Javaのソース内で呼び出して利用する事は可能ですか?
370デフォルトの名無しさん:2008/03/10(月) 18:56:05
>>369
JNIでぐぐるといいよ
371デフォルトの名無しさん:2008/03/10(月) 19:14:36
>>369
可能だけど呼び出しのオーバヘッドがあるから速度的な恩恵は少ないよ
今はネイティブのCと比べても遜色がないくらいJavaVMのパフォーマンスはいい
372デフォルトの名無しさん:2008/03/10(月) 19:26:02
なんで唐突に速度的な理由が前提になってんだ。
373デフォルトの名無しさん:2008/03/10(月) 19:46:01
実はRuntime#execやProcessBuilder#startで済む問題だったというオチ
374デフォルトの名無しさん:2008/03/10(月) 21:18:59
import *;
についての解説マダー(AA略
375デフォルトの名無しさん:2008/03/10(月) 23:17:25
>>374
import *;
public class Sample{
public static void main(String[] args) {
}
}
これコンパイルしてみれば分かるだろ
376デフォルトの名無しさん:2008/03/10(月) 23:20:28
>>374
お前バカだな
阿部さんのケツをインポートするんだよ
そうするとお前もイイ男になるぞ
377デフォルトの名無しさん:2008/03/11(火) 00:41:17
HDDの容量を取得したいのですがどうすればよいのでしょうか?

JAVAのAPIを探してみたのですが,わからなかったです.
378デフォルトの名無しさん:2008/03/11(火) 00:46:44
379デフォルトの名無しさん:2008/03/11(火) 07:40:54
>375
先生!コンパイルに失敗します><
結局342は何が言いたかったのか分かりません><
380デフォルトの名無しさん:2008/03/11(火) 09:20:41
381デフォルトの名無しさん:2008/03/11(火) 09:43:03
ケツにインサートならまだわかるがケツをインポートはわからん
382デフォルトの名無しさん:2008/03/11(火) 11:42:50
import *;
で全部インポートできると思っていたんだろ、多分
可哀想な人なんだよ、多分
383デフォルトの名無しさん:2008/03/11(火) 12:46:51
>>379
C言語とかを勉強するとコンパイル時にエラーが出てくれるありがたみがよく分かるから一度勉強してみるのもいいかも。
384デフォルトの名無しさん:2008/03/11(火) 13:32:27
>>383も可哀想な人でおk?

>>342
>>345
>>348
>>349
>>355
>>374
>>375
>>379
>>382
385デフォルトの名無しさん:2008/03/11(火) 17:33:10
からかわれてるとも知らずかわいい子。ウフッ。
386デフォルトの名無しさん:2008/03/11(火) 17:59:24
jmockのコードでみたんですが
context.checking(new Expectations() {{
 ごにょごにょ
}});
↑の2重波括弧ってどういう意味ですか?
387デフォルトの名無しさん:2008/03/11(火) 18:03:38
>>386
インスタンスイニシャライザ
388386:2008/03/11(火) 18:20:03
>>387
ありがとうございます。ぐぐってみます。
389デフォルトの名無しさん:2008/03/11(火) 19:01:16
コンストラクタ書けないからね
でも書き方は悪いわ
context.checking(new Expectations() {
  {
 // 初期化処理
  }
});
とでも書けば解りやすいのに
390デフォルトの名無しさん:2008/03/11(火) 19:18:25
結構良く見かける書き方だけどなー
391デフォルトの名無しさん:2008/03/11(火) 20:59:23
staticイニシャライザはよく見るけどインスタンスイニシャライザって内部クラスでしか見ないんだけど。
392デフォルトの名無しさん:2008/03/11(火) 21:30:57
Vector.insertElementAt
は、Vectorの要素数が多いほど遅くなるのでしょうか?

実験してみたところ
要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...

Vectorの初期化のときに、 new Vector(1000000,1000000) などやっても少しぐらいしか改善しません。

insertElementAtで挿入する番号は先頭から終端までほぼ平均的に選ばれるようなプログラムです。

この
insert にかかる時間を増加させない方法はないでしょうか?

393デフォルトの名無しさん:2008/03/11(火) 21:42:52
Vector(とArrayList)は中に配列持ってるだけだから、
途中に挿入すると後ろの要素を全部1つずつずらす必要がある。
これはコンストラクタで大きなキャパを指定しても同じこと。

LinkedListなら要素を数珠繋ぎで持っているため、途中に挿入する場合も
数珠繋ぎの付け替えだけで出来る。しかし、挿入のたびに挿入位置を毎回
先頭からたどる必要がある。一応試してみたらどうだろうか。

Vectorは古いっちゃ古いし。

番号が疎なら整数をキーにしたMapを使うほうがいいかもしれない。
394デフォルトの名無しさん:2008/03/11(火) 21:44:32
>>392
> 要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...
insert する要素以降を全部一個ずらしてくから
要素数が増えるほど時間がかかるのは当然。

LinkedList#listIterator(int) 使って要素追加してくとか、
ArrayList#addAll(int, Collection) で一気に追加するとか、
いっその事 Map<Integer, E> してみるとか。
395デフォルトの名無しさん:2008/03/11(火) 21:55:52
そもそも1,000,000レコードをオンメモリで扱うのもどうかと思うが・・・
396デフォルトの名無しさん:2008/03/11(火) 23:41:15
>>395
1レコード1KBでも1GBじゃん。32bitのメモリ空間埋めるのに、
1万円でおつりが出る時代なんだから、気にしないと言うのも
それはそれでアリかとw
397デフォルトの名無しさん:2008/03/11(火) 23:57:28
容量の問題じゃなく速度の話だとw
398デフォルトの名無しさん:2008/03/12(水) 00:50:48
それもそうだが、大量データの処理は専用のソフトウェアに任せろという意味だろ
Oracleのオンメモリストレージ使って100万件オンメモリとかならばOKな時代だがJavaのヒープでそれをやるってのはアホ
399デフォルトの名無しさん:2008/03/12(水) 01:02:31
ヒープ領域使い果たしてJVMがクラッシュしたら速度とか言ってる場合じゃないしなw
5万ぐらいなら余裕だが100万レコードともなるとまず逝きますw
400デフォルトの名無しさん:2008/03/12(水) 08:36:07
>>384
C言語は、javaに比べれば投げっぱなし感が強いんじゃない?
401デフォルトの名無しさん:2008/03/12(水) 12:23:09
>>400
Rubyとかを勉強すると〜なら分かるんだけどな。
なんでC言語を持ち出すのかが全く分からない。
402デフォルトの名無しさん:2008/03/12(水) 12:28:36
それ以前に投げっぱなしという表現が意味不明
403デフォルトの名無しさん:2008/03/12(水) 12:40:23
Rubyは麻薬だな。
でも遅すぎて死ぬ。
404デフォルトの名無しさん:2008/03/12(水) 15:36:21
ここってJava3Dの話もしていい?
405デフォルトの名無しさん:2008/03/12(水) 17:18:46
スレタイが初質だから初質っぽいことならいいんだろうけどJava3D使ってる人居るの?
俺はJOGL派なんだけど。
406404:2008/03/12(水) 18:16:38
今ちょうど両方つまみぐいしてる所で、Java3Dメインにしようかと検討中。
JOGLの頂点配列並な性能はあるし上位なAPIあるから楽かなと。

質問は質問文まとめてる内に自己解決した、ごめん。
407デフォルトの名無しさん:2008/03/13(木) 01:35:19
  |::   \おい、ゴルァ 出て来い!!        ドッカン  ゴガギーン
 :||::      ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ _m ドッカン      ☆
 :||::   ___     ======) ))_____  /        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 :||  |      |      | ̄.ミ∧_∧ | | ────┐||::    ∧_∧ < おらっ!>>1出てこい!!
 :||  |ぁゎゎ. |      |_..(   ) | | .___ │||::   (´Д` )  \___________
 :||  |Д`);  |      |_「 ⌒ ̄  ,|.. |_...   ..||||::  / 「    \
 :||  |⊂ノ;   |      |_|    ,/  ̄ .  ̄ ̄ ̄ │||::  | |    /\ \
 :||:   ̄ ̄ ̄         ̄|    .| :||│     ;,   │||; へ//|  |  | . |
 :||::   :;  ; ,,         :|    :.| ||│       (\/,.へ \|  |  (r )
 :||::   :;  冫、. .      |   .i  .|:||◎ニニニニ\/  \    |   ̄
 :||.:,,'';      ` ..  . ::  . |  ∧. |:||│::::/    │||::.:.   .Y ./
 :||:;;;:         :      |  | | |.||│ 冫、 ;;;,,│||:;;;.   | .|
 :||:;;;:             / /  / /::||│ `  .,;;;,,.│||:;;;.   | .|
 :||;::: #   ..:        ./ / ./ ./ ||│|三三三|. │||;;:..::   | .|
 :||;:::     #. ..:  :::::: (_) .(_).ミ||│        │||;;;k、,,,|,(_)
   ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;::三三三
408デフォルトの名無しさん:2008/03/13(木) 10:12:53
Derbyを組み込みモードで使ってるんだけど、
動作中にJavaの外からDBのテーブルの状態を調べる方法ってないの?
409デフォルトの名無しさん:2008/03/13(木) 13:11:37
VC++でDirectXつかって高度なお絵かきができますが、
Javaでも出来ますか?

たとえばコサックスみたいなやたら人がでてくる戦国シミュレーションゲーム作れます?
410デフォルトの名無しさん:2008/03/13(木) 13:30:38
>409
やろうと思えば出来るんじゃね?

DirectXのパフォーマンスと比べれば程遠いモノが出来るが。
411デフォルトの名無しさん:2008/03/13(木) 13:41:38
JMonkeyEngineってのがある
412デフォルトの名無しさん:2008/03/13(木) 14:42:43
クラスの停止について質問です。

今ゲームを作っていて、オープニング画面とゲーム画面の2つをつくりました。
まずオープニングをJFrameに表示、その後キーボード入力でオープニング画面を消してから
ゲーム画面を表示するという構想で進めてます。

そこでオープニング画面のクラスを停止させたいのですが、やり方がわかりませんでした。
そもそも一度実行したクラスを停止させること自体無理なのでしょうか?
413デフォルトの名無しさん:2008/03/13(木) 14:44:28
クラスを停止?何言ってるんだ
414デフォルトの名無しさん:2008/03/13(木) 14:47:12
クラスの停止とか、色々と勘違いしていると思うが・・・

後で再描画するならばsetVisible(false)で非表示にする
二度と表示しないならばdispose() で破棄する
415デフォルトの名無しさん:2008/03/13(木) 14:51:44
JPanelを2つ作って、片方を表示させた後、同じ場所にもう一方のJPanelをすり替えて表示させたいです。
今表示しているJPanelを消す=JPanelを継承しているクラスを停止させるという表現しかできませんでした。
416デフォルトの名無しさん:2008/03/13(木) 14:53:14
JFrame の GUI に今あるアプレットが使えると思ってはめ込んでみたんだけど
どうもドロップダウンしたメニューがアプレットの後ろに描画されてしまう様子。
アプレットは JRootPane を使っているはずだがこれが原因?
417デフォルトの名無しさん:2008/03/13(木) 14:53:42
>>414
ありがとうございます。
さっそくやってみます。
418デフォルトの名無しさん:2008/03/13(木) 14:57:46
それをJPanelの交換により行うってのはどうなんだろう。
JPanelを継承した、例えばExJPanelに画面の状態を表すオブジェクトを保持させてればいいんじゃね?

public final class ExJPanel extends JPanel {
  private Mode mode = new StartMode();
  public void paint(Graphics g) {
    mode.paint(g);
    mode = mode.nextMode();
  }
}

public interface Mode {
  void paint(Graphics g);
  Mode nextMode();
}

みたいな
419デフォルトの名無しさん:2008/03/13(木) 15:16:03
>>412
CardLayout使えば?
420デフォルトの名無しさん:2008/03/13(木) 15:24:18
>>418
JPanelの継承やってみます。ありがとうございます。

>>419
cardLayoutも調べているうちに見つけたのですが、脳みそが足らないばかりに
うまくいきませんでした。教えて下さったのにすいません。
421デフォルトの名無しさん:2008/03/13(木) 15:29:18
まあ、Swingは最初は覚えること多いから仕方ない.
ゲームのオープニング画面みたいな起動画面であれば、すぐに表示するべきだから、別JPanelでいいと思う。
画面を出している間に、ゲーム用のコンポーネントを裏側で作るってのは正しいしね。
俺は乗せ換えでいいと思うよ。

1.JFrameにメインのコンポーネントを乗せる。
2.メインコンポーネントに、タイトル画面コンポーネントを設定して描画
3. スタートボタンなどが押されたらメインフレームからタイトルコンポーネントを抜いて差し替える
422デフォルトの名無しさん:2008/03/13(木) 15:48:44
SplashScreen とは違うことをやりたいの?
423デフォルトの名無しさん:2008/03/13(木) 15:49:48
ゲームのオープニング画面はスプラッシュスクリーンとは別物だろ
424デフォルトの名無しさん:2008/03/13(木) 15:57:55
JPanel p = (JPanel)getContentPane();
JPanel p1, p2;
p.add(p1);
……
p.setVisible(false);
p.remove(p1);
p.add(p2);
p.setVisible(true);
俺なんか、全部交換。
425デフォルトの名無しさん:2008/03/13(木) 16:11:55
>>412ですが無事完成しました。
みなさんアドバイス本当にありがとうございました。
426416:2008/03/13(木) 16:16:16
JApplet の内容を JPanel に分離してそっちを JFrame と共有するようにしたら
メニューが裏に廻らなくなった。マジかよ。
427デフォルトの名無しさん:2008/03/13(木) 16:37:00
>>426
JApplet自身は重量コンポーネントだからじゃない?
428デフォルトの名無しさん:2008/03/13(木) 17:06:37
>422
Splashにボタンとかつけられたっけ?
自前でWindowを使って作るならばできるだろうけど
429デフォルトの名無しさん:2008/03/13(木) 22:45:03
あるクラスに含まれるクラスを再帰的に抽出する方法ってあるでしょうか?
擬似コードを書くと、

Target hoge=new Target();
Class[] classes;
classes=hoge.getClass().***.getAllClasses();

みたいな感じのことができるといいなあと思っているのですが。
430デフォルトの名無しさん:2008/03/13(木) 23:09:23
含まれるの意味が解らん
依存クラス数なら適当なMetrics測定ツール使えばいい
431429:2008/03/13(木) 23:42:26
>>430
別の言い方をすると、あるクラスがimportしているクラスを
再帰的に取得したいといことです。
(あるクラスがimportしているクラス、そのクラスの
 import対象のクラスがそれぞれimportしているクラス…というように、
 依存関係のクラスオブジェクトをすべて取得する)

いっそclassファイルをバイト列のイメージにして文字列から解析した方が早いでしょうか?
432デフォルトの名無しさん:2008/03/13(木) 23:43:42
importはincludeじゃないぞ……
433デフォルトの名無しさん:2008/03/13(木) 23:54:37
>>431
importと依存は関係ないぞ。
java.lang.Classにはそういう情報を得る手段はないから、バイトコード
を解析するしかないんじゃないかねー。
434デフォルトの名無しさん:2008/03/13(木) 23:54:50
MyClassLoaderで何とかならないかね
435デフォルトの名無しさん:2008/03/14(金) 00:52:46
ダイナミックプロキシを使ってインスタンス化したオブジェクトのクラス名になる $1 とか $2 とか、
この番号に何か名前って付いてますか?
436デフォルトの名無しさん:2008/03/14(金) 01:08:15
>431
で、解析して何がしたいんだ?
437デフォルトの名無しさん:2008/03/14(金) 08:33:31
アノテーションの引数にオブジェクトを指定できないのは何でですか?
@Foo(new Bar()) とかしたいんですけど。
438デフォルトの名無しさん:2008/03/14(金) 09:05:14
そういう仕様だから
439デフォルトの名無しさん:2008/03/14(金) 14:10:18
fileクラスのrenameToで成功してもgetNameで名前が変わってないんですがどうしてでしょうか
440デフォルトの名無しさん:2008/03/14(金) 14:15:02
>>439
細かいけど、Fileな

javadocよく読めば分かると思うけど、Fileはimmutableだから
441デフォルトの名無しさん:2008/03/14(金) 14:15:16
>>439
java.io.File はファイルそのものを表現してるんじゃなくてファイル名を表現してるから、
renameTo でファイルそのものの名前が変わっても影響を受けない。
442デフォルトの名無しさん:2008/03/14(金) 14:26:29
>>440
>>441

ありがとうございます。もっと調べてみます。
443デフォルトの名無しさん:2008/03/14(金) 21:29:04
>>410
>>411

そうか。マルチプラットフォームではああいうゲームは無理か。
ところで、JavaのアプリとCのアプリで共有メモリーってさすがに無理だよね。

データをプロセス間で共有する場合、どういうことするんですか?
444デフォルトの名無しさん:2008/03/14(金) 21:35:10
つDB
445デフォルトの名無しさん:2008/03/14(金) 21:59:31
つパイプ
446デフォルトの名無しさん:2008/03/14(金) 22:01:16
つソケット
447デフォルトの名無しさん:2008/03/14(金) 22:06:56
>>443
ファイルを介してファイルマッピングという形でなら、たぶんできるんじゃない?
使い物になるかどうかは微妙かもしれないけど
448デフォルトの名無しさん:2008/03/14(金) 22:18:48
449デフォルトの名無しさん:2008/03/15(土) 09:11:19
プロトコルハンドラって何に使うものなんですか?
よろしくお願いします。
450デフォルトの名無しさん:2008/03/15(土) 09:39:52
451デフォルトの名無しさん:2008/03/15(土) 09:51:11
JFileChooserで、
・ディレクトリ選択
・でも、普通のファイルも見れる
ようにしたいんですけどどうすればいいですかね?

ディレクトリ選択するようにすると、普通のファイルは見えなくなるし、
普通のファイル見えるようにするとディレクトリ選択できなくなるんですけど
452デフォルトの名無しさん:2008/03/15(土) 09:59:35
ディレクトリ選択でファイルを見せる意味が分からん
453デフォルトの名無しさん:2008/03/15(土) 10:03:46
ファイルが見えるとなんのディレクトリかよくわかるじゃん
454デフォルトの名無しさん:2008/03/15(土) 10:07:05
試して無いけど、approveSelectionメソッドをオーバーライドすればいけるんじゃね?
setFileSelectionModeでFILES_AND_DIRECTORIESを指定してさ。
455デフォルトの名無しさん:2008/03/15(土) 10:13:37
此処で良いのか疑問ですが質問です。

OS:WindowsXP IE6/Firefox/2.0.0.12
Sun Java Standerd Edition 6
バージョン6 アップデート5 (ビルド1.6.0_06-b13)

先日アップデートした処、Javaの起動で「Javaコンソール」を表示しないと実行されません。
コンソールを非表示でJavaの実行は無理なのでしょうか?
どうか教えて下さい。
456デフォルトの名無しさん:2008/03/15(土) 10:15:05
うん、できた。

public class JDirectoryChooser extends JFileChooser {
 @Override public void approveSelection() {
  if (getSelectedFile().isFile()) return;
  super.approveSelection();
 }
 public static void main(String[] args) {
  JFileChooser c = new JDirectoryChooser();
  c.showOpenDialog(null);
 }
}
457デフォルトの名無しさん:2008/03/15(土) 10:57:35
u5ってu4のセキュリティフィックスだよね。
そろそろ入れようと思ってたけどなんか色々問題あるみたいだね。
458451:2008/03/15(土) 11:39:37
>>456
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
を一行追加してみても、だめでした。

さらに
public boolean accept(File f){return true;}
を追加してみてもだめでした。
459デフォルトの名無しさん:2008/03/15(土) 11:44:41
ちゃんと>>456の書き込み読んでる?
460デフォルトの名無しさん:2008/03/15(土) 13:37:06
内部クラスの中に内部クラスを作ったりって普通にしますか?
経験も積んでないのですが少し気持ちが悪い気がして質問しました。
461デフォルトの名無しさん:2008/03/15(土) 13:59:26
全くしない訳ではないが普通しない
462デフォルトの名無しさん:2008/03/15(土) 14:00:19
forの中にforを書いたりって普通にしますか?
のようなものかと
2段くらいはすることもあるけど、頻繁には使わない
3段以上は滅多にやらない
人にもよるかも
463デフォルトの名無しさん:2008/03/15(土) 14:05:29
必要があれば使うみたいな
x,y,z,tなんて4次元だしw
464デフォルトの名無しさん:2008/03/15(土) 14:17:38
そうでしたか。やはり熟練者の方の意見は勉強になります。
ありがとうございました。
465デフォルトの名無しさん:2008/03/15(土) 15:32:42
import java.io.*;
class hoge{
public static void main(String args[]){
if(args.length <= 0){
System.out.println("specify the file name correctly");
System.exit(1);
}
try{
int i;
for(i = 0; i < args.length; i++){
BufferedReader br = new BufferedReader(new FileReader(args[i]));
String str;
while((str = br.readLine()) != null){
System.out.println(str);
}
}
br.close();
}
catch(IOException e){
System.out.println("input/output error");
}
}
}

コマンドライン引数からファイルを受け取って表示するプログラムですが、
br.close()の行で "シンボルを解決できない" というエラーが出ます。なぜエラーが出るのかわかりません。
br.close()を削除すれば実行できるのですが・・・。
466デフォルトの名無しさん:2008/03/15(土) 15:38:49
>>465
br.close(); の前の閉じ括弧 '}' が一個多い。
それで br がスコープから外れて「シンボルを解決できない」といわれてる。
467デフォルトの名無しさん:2008/03/15(土) 15:39:21
スコープを勉強しろ
468デフォルトの名無しさん:2008/03/15(土) 15:51:21
{}の組み合わせは力ずくでは良くないがな
469デフォルトの名無しさん:2008/03/15(土) 15:54:06
メモ帳でもつかって無い限りこんな間違いしないと思うんだけどな
470465:2008/03/15(土) 16:20:48
>465の質問者ですが
br.close()の 前の閉じ括弧を’ } ' を取り除いても エラーが出ます。
その閉じ括弧はfor文の閉じ括弧になっています。

閉じ括弧を除いた場合のエラーは
hoge.java:13: 'try' への 'catch' または 'finally' がありません。
hoge.java:27: 'catch' への 'try' がありません。
hoge.java:32: '}' がありません。
です。
471デフォルトの名無しさん:2008/03/15(土) 16:22:21
日本語も読めねーのかよw
472デフォルトの名無しさん:2008/03/15(土) 16:47:25
>>470
br.close(); の前の閉じ括弧を一つ取り除いた後、
br.close(); の後に一つ閉じ括弧つけろ。
473デフォルトの名無しさん:2008/03/15(土) 17:43:23
環境 Windows xp, jdk 1.5
ポリシファイルで全部のファイルの読み込みを可能にしました。

swingアプレットを作ったのですが、
プロンプトからだと画像やボタンが表示できました。
しかしブラウザから起動するとボタン等は表示できますが
画像が表示できません。(読み込めていない様子)
どうしたらできるのでしょうか?
一応、ソースの怪しい所を貼り付けておきます。
import......
/*
<applet code="TimerTest2.class" width=500 height=250>
</applet>
*/
___javaソースの一部___
public class Test2 extends JApplet implements ActionListener{
  フィールドなので省略
public void init(){
icon0 = new ImageIcon("07.gif");

___起動させるhtmlファイル___
<html>
<head></head>
<body>
<p>
<APPLET code="Test2.class"width=500 height=250></APPLET>
</body>
</html>
_______________
htmlファイルは短いので全て載せました。
474デフォルトの名無しさん:2008/03/15(土) 17:48:22
>>473
HTMLに画像を読み込むコードが無いから。
475デフォルトの名無しさん:2008/03/15(土) 17:54:21
>>473
Javaコンソールからエラーの内容確認
476デフォルトの名無しさん:2008/03/15(土) 17:59:06
自宅サーバ板のTomcatでwww鯖ってスレに質問したんですが、
なんか過疎ってるのでこちらに再掲します。

Debian etchでTomcat5.5使おうとしてるんですけど、

SEVERE: 設定記述子 test.xml を配備中のエラーです
org.apache.commons.logging.LogConfigurationException:
java.security.AccessControlException: access denied
(java.io.FilePermission /usr/share/tomcat5.5-webapps/test/WEB-INF/classes/logging.properties read)
(Caused by java.security.AccessControlException: access denied (java.io.FilePermission /usr/share/tomcat5.5-webapps/test/WEB-INF/classes/logging.properties read))

こんなエラーが出ます。
サンプルアプリは動いていて、自分で作ったやつがエラーになります。
パーミッションはサンプルと同じでrootのみに与えています。

そもそも、logging.propertiesというファイルはサンプルアプリになかったのですが、
classesに777でlogging.propertiesを作っても同じエラーが出ます。

どなたか解決策を教えてもらえないでしょうか?
477デフォルトの名無しさん:2008/03/15(土) 18:12:29
>>473
たぶんこうだ
new ImageIcon(getClass().getResource("07.gif"))
478デフォルトの名無しさん:2008/03/15(土) 18:34:02
>>476
その上位ディレクトリに x パーミッション付いてるのかよ。

# su tomcatuser -c "cd /usr/share/tomcat5.5-webapps/test/WEB-INF/classes"
479デフォルトの名無しさん:2008/03/15(土) 18:44:13
>>473
そもそも画像はどこ?
480デフォルトの名無しさん:2008/03/15(土) 18:53:59
>>476
/var/cache/tomcat5.5/Catalina/localhost# lla /usr/share/tomcat5.5-webapps/test/WEB-INF/
合計 24
drwxr-xr-x 5 root root 4096 2008-03-15 17:43 .
drwxr-xr-x 3 root root 4096 2008-03-15 17:19 ..
drwxr-xr-x 2 root root 4096 2008-03-15 17:38 classes
drwxr-xr-x 2 root root 4096 2008-03-15 17:20 lib
drwxr-xr-x 3 root root 4096 2008-03-15 17:28 src
-rw-r--r-- 1 root root 637 2008-03-15 17:43 web.xml

となっています。
481465:2008/03/15(土) 19:21:25
465です。
解決しました。
ありがとう。
482デフォルトの名無しさん:2008/03/15(土) 20:22:16
>>476
policyファイルで弾かれてるんじゃない?Debian etchなら、
/etc/tomcat5.5/policy.d/の下に*.policyってファイルがあるから、
それ読んでほげほげしてみるといいかも。
483デフォルトの名無しさん:2008/03/15(土) 20:43:54
476です。
>>477 さんのやり方で解決できました。
みなさん
親切にありがとうございました。
484デフォルトの名無しさん:2008/03/15(土) 21:14:50
>>482
ありがとうございます。
04webappsの
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar"
の中に
permission java.io.FilePermission "<webアプリのpath>", "read";
を追加したところ、上記のエラーは消えました。
485デフォルトの名無しさん:2008/03/15(土) 21:16:29
04webappsじゃなくて04webapps.policyでした
486デフォルトの名無しさん:2008/03/16(日) 00:58:16
swingに関して質問させてください
JFrameのサイズを指定する際にまわりの枠を気にしないで済む様にInsetsを利用しています。
しかし、JMenuBarを追加すると、その分の幅はInsetsで考慮されていないようです。
JMenuBarの上下方向の幅を取得するにはどうすればよいのでしょうか?

あと、BufferStrategyを使いたいのですが、JPanelでは使えないんでしょうか?
よく、JavaのGUIの勉強をすると、JFrameの上にJPanelを張って、その上にさらに何かを張ってと階層状にするべきと見かけますが、BufferStrategyを使う場合はJFrame上にべた書きすべきでしょうか?
487デフォルトの名無しさん:2008/03/16(日) 02:12:38
>>486
中身のサイズに合わせてJFrameのサイズを決めたいならpackすればJFrameの方がそれに合わせてくれる。
packではだめなレイアウトマネージャを使っていたり、どうしても自分でフレームサイズを決めたいというのなら、
JFrame#getJMenuBar()でJMenuBarコンポーネントを得てgetSize().heightでメニューバーの高さを取得できる。
ただし、フレームが表示されてないと大きさは取れないので、ダミー的に表示してサイズ計算後setSizeで変更してやる。
JFrame f = ...
f.setVisible(true);
Dimension d = f.getJMenuBar().getSize();
Insets i = f.getInsets();
f.setSize(contentWidth + i.left + i.right, contentHeight + d.height + i.top + i.bottom);
みたいな感じで。

BufferStrategyを使いたいならjava.awt.Canvasをコンテントペインに乗っけてやれば大抵うまくいく。
swingコンポーネントにAWTコンポーネントを乗せるのは抵抗があるかもしれないけれど。
488デフォルトの名無しさん:2008/03/16(日) 02:32:41
幅の情報は要らないからgetSize().heightでなくgetHeight()で十分だった
489デフォルトの名無しさん:2008/03/16(日) 03:26:29
リアルタイムのゲームを作っているのですが、
数秒ごとにカクカク止まってしまいます。
ガベージコレクションのせいかと思ったのですが、
空きメモリのこぎりグラフとは無関係にカクカクします。
速いマシンだと全く気にならないレベルなのですが、
セレロン600だと耐えられないカクカクです。

どうしたらいいか分かる人いますか?
490デフォルトの名無しさん:2008/03/16(日) 04:21:26
プロファイルを取ってみればいいと思うよ
491デフォルトの名無しさん:2008/03/16(日) 05:10:10
Java のログ機能と Log4j とどっちがいいの?
492デフォルトの名無しさん:2008/03/16(日) 05:22:46
493デフォルトの名無しさん:2008/03/16(日) 06:30:51
JRE 単体って入れたことないんだけど 6 で Java DB もバンドルされてる?
494デフォルトの名無しさん:2008/03/16(日) 08:10:33
練習サイトを見て勉強しているのですが
何故メインメソッドをできるだけ小さくして
簡単な作業でも個別にメソッドを作るのかがわかりません

ex)ttp://www.u-farm.jp/en/a001_04.html
495デフォルトの名無しさん:2008/03/16(日) 08:36:08
俺はこの前他人が作ったプログラムをいじる必要があったんだけど
そのプログラムのmainメソッドは1000行以上あって、読むのが大変だった。
そういう悲劇をなくすため。
496デフォルトの名無しさん:2008/03/16(日) 08:40:22
意味のある単位でプログラムを小さな部品に分解していくと、分かりやすいものになる。
こういう意識を普段からもっておいたほうがいいし、
入門用の短いプログラムでも意識するべき。
497デフォルトの名無しさん:2008/03/16(日) 08:52:41
どのくらいのレベルでメソッド化していけばよいのでしょうか
メインメソッドにはメソッド処理以外書かないぜくらいの勢いでしょうか・・・
498デフォルトの名無しさん:2008/03/16(日) 08:55:27
その時代の画面のスクロールで 2 ページが目安。
499デフォルトの名無しさん:2008/03/16(日) 09:31:35
メソッド名が無理なく考えられるような処理(上のリンクの場合だとdrawTriangle)
とかは、常に分けてもいいんじゃないかな。
上手い名前付けができない場合は、コードの長さと相談して分けたり分けなかったり
500デフォルトの名無しさん:2008/03/16(日) 18:18:26
複数のjarファイルからクラスを探してきて欲しい時に
・lib/extにjarファイルを置く
・-classpath引数で一つ一つ指定する
以外の方法はありますか?
javacならば-extdirsでjarの入ったフォルダを指定すれば
そのフォルダの中のすべてのjarを探してくれるのですが
javaにはextdirsのようなオプションがありません
501500:2008/03/16(日) 18:22:42
すいません、自己解決しました
java -Djava.ext.dirsでいけました
502デフォルトの名無しさん:2008/03/16(日) 20:31:24
Javaダウンロードできないんだけど(笑)
503デフォルトの名無しさん:2008/03/16(日) 21:46:48
Javaでオーバーロードを行なった場合の「あいまい」と言われる、言われない条件というのを詳しく知りたいのですが
何か良い資料はないでしょうか?
例えば
class Hoge{}
class Hoge2 extends Hoge{}
class Hoge3 extends Hoge2{}
と定義して
test(new Hoge3(), new Hoge3());
と呼び出したとき、

void test(Hoge2 a, Hoge3 b){}
void test(Hoge a, Hoge3 b){}
問題なし

void test(Hoge2 a, Hoge3 b){}
void test(Hoge2 a, Hoge2 b){}
問題無し

void test(Hoge a, Hoge3 b){}
void test(Hoge2 a, Hoge2 b){}
あいまいエラー

となる基準がいまいちピンときません。
504デフォルトの名無しさん:2008/03/16(日) 21:54:52
続きです。

なんとなく (Hoge3, Hoge3)により近いものを探している雰囲気はあります。
ではと思い、
class Hoge4 extends Hoge3{}
test(new Hoge4(), new Hoge4());

void test(Hoge a, Hoge4 b){}
void test(Hoge3 a, Hoge3 b){}
これなら、Hoge4,Hoge4まで上は3ステップ。下は2ステップ。下が選ばれるはず。
と思いきやあいまいエラーでした。
505デフォルトの名無しさん:2008/03/16(日) 21:58:36
>>503
> void test(Hoge2 a, Hoge3 b){}
> void test(Hoge a, Hoge3 b){}
Hoge2 a は Hoge a に代入可能。 Hoge3 a は Hoge3 b に代入可能。
以上により、前者の引数は全て後者の引数に代入可能。
なので、前者は後者より特殊なメソッド(specific method)と言われる。
この特殊なメソッドが一つに決まる場合は、
それが最も特殊なメソッド(most specific method)と言われて、それが呼び出される。

> void test(Hoge a, Hoge3 b){}
> void test(Hoge2 a, Hoge2 b){}
みたいに一つに決まらない場合は曖昧となってコンパイルエラーになる。

詳しくはこの辺呼んでくれ。
15.12.2.5 Choosing the Most Specific Method
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12.2.5
15.12.2.2 最も特殊なメソッドの選択
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#18428
506デフォルトの名無しさん:2008/03/16(日) 21:59:16
>503
条件も何も曖昧だから曖昧なんだよ
A’がAを継承しているならば、A’はAともA’とも解釈できるって理解していればそんなオーバーライドは普通書かない
507デフォルトの名無しさん:2008/03/16(日) 22:12:16
ジェネリックスと否ジェネリックスでObject型かぶらせちゃうのはたまにやるな。
実行時型情報ないからなぁjavaのジェネリックスは。
508デフォルトの名無しさん:2008/03/16(日) 22:26:34
>>505
とても分かりやすい説明と、良い文献をありがとうございます。
熟読させてもらいます

インターフェースも絡めて色んなパターンを試していたのですが、
「あるメソッドの全ての引数が、他の同名メソッドの引数に代入可能な場合、あるメソッドはより特殊と判断する」
という1文ですっきり解決して魔法のようでした。
509デフォルトの名無しさん:2008/03/16(日) 23:16:37
508です。
一応情報です。

>>505の日本語版のほう、和訳が間違ってますね。
英語の方読んだほうがいいです
510デフォルトの名無しさん:2008/03/16(日) 23:28:59
>>509
和訳のは第2版で英語のは第3版だからその違いじゃなくて?
511デフォルトの名無しさん:2008/03/16(日) 23:43:59
いや、完全に文章がおかしかったです

「もしすべての最大限に特殊なメソッドが同じシグネチャをもたないならば」
と和訳されていますが、英文では
「If all the maximally specific methods have override-equivalent signatures, then」
とあるので「〜〜をもつならば」が正しいかと思われます
512デフォルトの名無しさん:2008/03/16(日) 23:59:03
>>511
うわ、ほんとだ。
513デフォルトの名無しさん:2008/03/17(月) 08:28:19
specific を特殊と訳した奴のセンスを疑う。
514デフォルトの名無しさん:2008/03/17(月) 08:39:14
>15.12.2.5 Choosing the Most Specific Method
「もっとも明確なメソッドの選択」だな。
515デフォルトの名無しさん:2008/03/17(月) 08:51:28
> 「もっとも明確なメソッドの選択」だな。
そのセンスもどーかと思うが
516デフォルトの名無しさん:2008/03/17(月) 10:53:19
批判だけではなく対案を
517デフォルトの名無しさん:2008/03/17(月) 11:02:19
メソッドの選択でいいんじゃ?
518デフォルトの名無しさん:2008/03/17(月) 11:03:40
>>516
俺は「特殊なメソッド」でいいと思うが。
長ったらしくてもいいなら語を補って「実引数型に特化したメソッド」とか。
519デフォルトの名無しさん:2008/03/17(月) 11:11:06
実引数型だけだと実行時の型と勘違いされる可能性もあるから
より正確には「実引数のコンパイル時の型に特化したメソッド」とか?
520デフォルトの名無しさん:2008/03/17(月) 11:33:16
議論の最中にすみません。
Preferencesについての質問です。
Preferences#userNodeForPackage(Class<?> c) で取得したノードは、その名の通りパッケージのノードですが実際プロパティを保存したい場合どのようにすべきなのでしょうか?

私のイメージとしては、そのノードにあるクラスのプロパティを直接putInt(String,int)とするのは後々パッケージ内での重複の危険や、そもそも意味的な意味の違いで使いたくはありません。
よって、上で取得したノードにさらに
prefs(←パッケージのノード).node("クラス名").node("インスタンス名").putInt(String,int);
のようにするのがプロパティ的で良い気がしますがこちらは何かと面倒です。

特に何も気にせずパッケージノードにputするものなのでしょうか?
521デフォルトの名無しさん:2008/03/17(月) 11:53:06
そもそも、どのように使いたいかじゃねーの?
522デフォルトの名無しさん:2008/03/17(月) 13:46:52
インスタンスごとに設定項目作りまくりという糞設計なのか
データベース使え
523デフォルトの名無しさん:2008/03/17(月) 14:46:18
すみません。
ここに来てる時点で分かってくださるとは思いましたが、私は初心者で設計なんてまだまだこれからの段階なんです。

しかしインスタンスごとに設定項目変えている訳ではありません。
例えばjavax.swingパッケージを見てみると、その中に存在するクラスだけでもx,yというプロパティはかなりの数あるでしょう。
ですから必然的にその下のノードが必要になるのではないか、と疑問に思ったのです。

単純に一般的にどうされているのかと気になったので聞いてみたのですがここに来るのすら早かったようですね。
すみませんでした。
524デフォルトの名無しさん:2008/03/17(月) 15:04:02
>523
そんなAPIを使う前にクラスとインスタンスの関係を勉強したほうがいい
525デフォルトの名無しさん:2008/03/17(月) 16:37:46
preferenceに、インスタンスごとの値を記録したい場合というと、
例えばマルチタブエディタで個別のタブごとの設定値
(ファイル名とかカーソル位置とか)を記録したいとか?
まあ、そういう用途ならそれでいいんじゃね?
526デフォルトの名無しさん:2008/03/17(月) 17:27:48
MDIのセクションの復元とか
527デフォルトの名無しさん:2008/03/17(月) 17:40:59
どちらにせよ初心者には縁の無い話かと
528デフォルトの名無しさん:2008/03/17(月) 17:57:47
javaだとMDIはSwingにあるしセクション保存なんて情報を外に追い出せばとりあえず出来るから初心者でもやるんじゃない?
SwingAppFrameworkは始めからセクションのストア・リストアに対応してるし。
529デフォルトの名無しさん:2008/03/17(月) 18:29:31
それは既に初心者ではない件
530デフォルトの名無しさん:2008/03/17(月) 18:32:45
その程度は初心者の域
531デフォルトの名無しさん:2008/03/17(月) 18:51:03
フレームの位置と大きさが画面から外れてないかどうかってどう確認すれば良い?
GraphicEnvironment とか言うのを使うの?
532デフォルトの名無しさん:2008/03/17(月) 19:40:23
JavaってCのインラインアセンブラみたいなのはないですよね?
533デフォルトの名無しさん:2008/03/17(月) 19:46:16
naiyo
534デフォルトの名無しさん:2008/03/17(月) 19:48:49
aruyo
535デフォルトの名無しさん:2008/03/17(月) 20:59:00
アセンブラを扱うライブラリがあったはず
536デフォルトの名無しさん:2008/03/17(月) 21:52:45
質問です。
以下の要件を満たすためにはどのような手段がありますでしょうか。

■環境
Java1.5
Tomcat5.5 + Apache2.3
FedoraCore7

1.ローカルでは、あるjavaプロセスがほほ常時立ち上がっています。
「ほぼ」と書いているのは、たまにプロセスが停止することがあるため。
最大停止時間は10秒。そのjavaプロセスの死活監視及び起動をshellで行っています。

2.1とは別に、tomcat+ApacheでServletを使ったWebアプリケーションがあります。

上記の環境のもとで、Webアプリケーションへのリクエスト送信をトリガーに
Webアプリケーション側から1のjavaプロセスのクラスを呼び出して1のクラス内の情報を取得したいです。

上記の実現方法について、教えていただけませんでしょうか。

私なりに調べてみたのですが、RMIというのはこの場合使えるのでしょうか?
RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
逆の場合も使えるのか確証が持てません。

また、RMIの他にも、Tomcat,Apache側の設定でどうにかなる方法などあるでしょうか?
上記以外の手段についてもあればお願いします。

以上、ご教授いただきたく思います。




537デフォルトの名無しさん:2008/03/17(月) 22:18:52
apache httpd 2.3って、trunkからビルドしてんのかよ。人柱乙。

監視対象のjavaプログラムに手を入れられるなら、
そっち側で必要な情報をファイルかDBに記録すればいいんじゃね?
538デフォルトの名無しさん:2008/03/17(月) 22:50:15
>>536
> RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
> 逆の場合も使えるのか確証が持てません。

昔似たような処理をやったことがあるけどサーバーのトリガーをクライアントからスレッドで監視してやれば
できたような…ただトリガーの発生が不定期だったりするので同期取らせたりいろいろうざいことしなけりゃ
ならんかった
539デフォルトの名無しさん:2008/03/18(火) 03:30:57
1 側で RMI がサービスしてりゃいいじゃん。
レジスロリは Tomcat で。
540デフォルトの名無しさん:2008/03/18(火) 09:18:39
core なんてウンコみたいなもんだろ。
詳細に分析すりゃ症状は分かるかも知れないが、大半はクソの役にもたたねぇ。
541デフォルトの名無しさん:2008/03/18(火) 09:46:21
ウンコさえ分析できないきみはクソの役にも立たねえ
542デフォルトの名無しさん:2008/03/18(火) 09:58:21
core だけで分析できると豪語する神が現れた。
543デフォルトの名無しさん:2008/03/18(火) 15:24:21
手動で serialVersionUID 管理する場合って 1, 2, 3, ... で良いよな。
544デフォルトの名無しさん:2008/03/18(火) 15:27:09
うん
545デフォルトの名無しさん:2008/03/18(火) 17:29:25
Javaのお勉強をしているものです
プログラム用エディタ使ってコマンドプロンプトでシコシコやってました

ところが同一ソフト上でエディットとコンパイルと実行ファイル化までできる
『統合開発環境』なるソフトが無料で出回っているそうじゃないですか
さっそくEclipseとNetBeans?をダウンロードしました
はい、何やってんだか分りません 重くて動きません etc…
ということで 軽くて初心者向けの統合開発環境ありますか?
546デフォルトの名無しさん:2008/03/18(火) 17:31:38
つ プログラム用エディタとコマンドプロンプト
547デフォルトの名無しさん:2008/03/18(火) 17:33:36
Visual J++ 1.0
548デフォルトの名無しさん:2008/03/18(火) 17:34:10
eclipseとかnetbeansとかが動かないほど重いPCは捨てて買い換えなさいな
よほどリソースが足りないPCだ、それは
549デフォルトの名無しさん:2008/03/18(火) 17:42:48
visualC#みたいな感じでJAVAで使えるものを探しておりまする
550デフォルトの名無しさん:2008/03/18(火) 17:49:30
Visual J 調べてみるでござる
551デフォルトの名無しさん:2008/03/18(火) 17:53:06
Visual J#2002なるものが見つかったのでダウソしてつかってみまする
552デフォルトの名無しさん:2008/03/18(火) 19:40:57
Eclipseでも2系なら軽いと思うが。
553デフォルトの名無しさん:2008/03/18(火) 20:58:41
C#のBinaryWriterで書き出したデータを
Javaで読み込みデータを取得したいのですが
DataInputStream等を使っても正常に取得できません
何か良い方法ありませんでしょうか?
取得したいのはintの値やutf-8の文字列等です
554デフォルトの名無しさん:2008/03/18(火) 21:22:57
ByteBuffer でゴリゴリやれ。バイトオーダー設定せれ。
555デフォルトの名無しさん:2008/03/18(火) 21:35:47
Swing で矩形以外の Window 出す方法は、裏の画面キャプチャして擬似透明にするしかないかね。
556553:2008/03/18(火) 21:39:40
>>554
あーやっぱゴリゴリですか・・・
頑張ってみます・・・
557デフォルトの名無しさん:2008/03/18(火) 22:42:28
VisualJはすべて有料ですか…

558デフォルトの名無しさん:2008/03/18(火) 23:32:40
Visual J# 2005 Express版は日本語版なくて英語版だけだけど無料だったような。
もっとも J# は厳密には別の言語だからスレ違いっぽ。
559デフォルトの名無しさん:2008/03/19(水) 01:13:01
半月前ほどからJavaの勉強をはじめました。
会社で次にデータベースの勉強をしろと言われたのでJavaを勉強しつつ
データベースの勉強をするのにオススメの書籍を教えていただけませんか?
Javaは何冊か入門書をもっているのですが、データベースはさっぱりです。別々に分けたほうがよければ、データベース専用の書籍でもかまいませんのでお願いします。
560デフォルトの名無しさん:2008/03/19(水) 01:52:02
Servletの本ならだいたいどの本でもDBとの接続の話は出てる。
Servletじゃなくても大体同じノリで使える。
561デフォルトの名無しさん:2008/03/19(水) 01:53:20
とりあえず、適当な本でいいからSQL自体に慣れろ。
慣れたら、
http://www.geocities.jp/mickindex/database/idx_database.html
ここ読んでぶちのめされろ。

あとは、上のサイトで紹介されてる本を片っ端から読んで理解しろ。
そうすれば立派なDBエンジニアになれるよ。
562デフォルトの名無しさん:2008/03/19(水) 09:15:56
JPlaneをeclipseでextendsしたら
シリアルが何とかとか出て意味が解りません。
おしえてください。
563デフォルトの名無しさん:2008/03/19(水) 09:22:15
1. 黄色い波下線が出ているところにキャレットを置いて [CTRL]+[1] を押す
2. add generated serial version ID
3. (゚Д゚)ウマー
564デフォルトの名無しさん:2008/03/19(水) 15:39:13
■環境
JDK5.0

質問です。
大学の課題で,3月中にJavaでチャット(とにかく動けば良いからCUIで作成しても良い)を作ってこいと言われました。
Javaは全く学んでいないので、現在は「10日でおぼえるJava入門教室」という本をやっています。(8割方終わってます)

そろそろチャットプログラムを作ってみようと思っているのですが、
この本はネットワークプログラムについて全く載っていないので、何から手をつければ良いかわかりません。

そこで質問なのですが、チャットプログラム作成を前提に次の本を買うとしたらどの本がオススメでしょうか?
また、本以外にチャット作成を一から学べるHPがありましたら教えてください。よろしくお願いします。
565デフォルトの名無しさん:2008/03/19(水) 15:51:41
一生本読んでろ
566デフォルトの名無しさん:2008/03/19(水) 15:59:44
チャット作ってもチャットする相手いないし・・・・・
567デフォルトの名無しさん:2008/03/19(水) 16:02:36
自分の作ったプログラムなら自分とチャットするだけでも十分楽しいと思うから大丈夫
568デフォルトの名無しさん:2008/03/19(水) 16:13:17
今まさにチャットを作ってる。チャットというより非同期イベント配信プロトコルを
考えてるといった方が正しいかもしれないが。

>>565
Socket, ServerSocket クラスの API リファレンスを読め。
569デフォルトの名無しさん:2008/03/19(水) 16:14:19
>>564
チャットが前提ではないけど、ネットワークの基礎なら
ttp://www5c.biglobe.ne.jp/~ecb/java/16_01.html
570デフォルトの名無しさん:2008/03/19(水) 16:21:02
undecoreted な JFrame や JDialog じゃなくて JWindow が必要なときってどういうケース?
571デフォルトの名無しさん:2008/03/19(水) 16:29:58
>>564
あと10日しかないと無理だけど、もっと余裕のある場合を想定すると、とりあえずセッションを勉強したらどうか?
HTTPで404とか503とか表示されるアレだ。Proxomitronを導入してLog Windowを表示してみればいい。
チャット自体はinとout直結でhttp使わなくても通信出来るけど(Javaならsocket,serverSocket?)。

HTTPはRFC2068、RFC2616あたりが詳しい(JavaならhttpURLConnection、URLConnection?)。
572デフォルトの名無しさん:2008/03/19(水) 16:37:49
チャットと言っているのに通信方向性もステート管理もまるで違う HTTP を薦めるヤツはバカなのか。
573デフォルトの名無しさん:2008/03/19(水) 16:45:17
>>572
電気通信の方向とは何?
574デフォルトの名無しさん:2008/03/19(水) 17:07:24
>>573
お前はまず、理解していない点をまとめてから書け。
575デフォルトの名無しさん:2008/03/19(水) 17:07:56
バカと書かれて憤慨した>>571 です。大学はチャットをHTTPで作ると減点する恐ろしい場所なのですか。serverも知らないと書いてるからなるべく親切に説明しようとした俺はかなり情けないです。
576デフォルトの名無しさん:2008/03/19(水) 17:10:02
>>574
通信方向性って、通信の設計の指針じゃないですか。一見でわかりませんでした。
577デフォルトの名無しさん:2008/03/19(水) 17:12:19
>564
Java TCP/IP で調べれば結構な数の参考書あるぜ
大抵はサンプルとしてチャットプログラムがあるから、サンプルありで薄い本を探せば1週間でもなんとかOK
578デフォルトの名無しさん:2008/03/19(水) 17:20:52
通信頻度が高いからHTTPは向かないのですね。すみませんでした。
579デフォルトの名無しさん:2008/03/19(水) 17:25:17
IPメッセンジャーを改造して提出する生徒続出の予感。
580デフォルトの名無しさん:2008/03/19(水) 17:28:09
IPメッセンジャーナツカシス 雑談が多すぎるって理由で出向先で使用禁止になったよ。
581デフォルトの名無しさん:2008/03/19(水) 17:32:18
協力会社の愚痴を間違えてその協力会社の人に送ってしまった某外資 SIer が居て
使用禁止になったプロジェクトなら知ってる。
582デフォルトの名無しさん:2008/03/19(水) 17:44:27
通信頻度じゃなくチャットは双方向メッセージが基本だからトランザクション指向の HTTP とは全く違う。
自動リロード (ポーリング) でごまかすタダの掲示板がまともなチャットとでも思ってるのか。
583デフォルトの名無しさん:2008/03/19(水) 17:54:57
つComet
584デフォルトの名無しさん:2008/03/19(水) 17:57:53
とにかく動けば良いってことらしいからまともなチャットでなくてもとにかく動けばいいんでない
585デフォルトの名無しさん:2008/03/19(水) 18:01:48
>>582
Comet はそのポーリングをフレームワーク化しただけだっつーの。
キーワードだけ覚えて披露するなよ。
586デフォルトの名無しさん:2008/03/19(水) 18:11:38
>>585
じゃ、IRCは?
587デフォルトの名無しさん:2008/03/19(水) 18:14:01
プロトコルがそもそも HTTP と違うだろ。
その区別からできてないのかよ。
588デフォルトの名無しさん:2008/03/19(水) 18:14:08
Cometはポーリングじゃない。
ポーリング無しでサーバ→クライアント方向の通信を実現する方法。
クライアントから見ると、一度送ったHTTPリクエストに対するレスポンスが
いつまでたっても終わらず、
たまに思い出したように部分的なレスポンスが返ってくるので、
それをその都度処理する、って形になる。

が、このレベルの課題でCometなんぞ持ち出したら、余計面倒になる罠。
589デフォルトの名無しさん:2008/03/19(水) 18:22:36
だからポーリングにタイムアウト的なキュー待ちの毛生やしただけじゃん。
590デフォルトの名無しさん:2008/03/19(水) 18:27:21
Comet ではないが Ajax 使った Comet 型 Web チャット
http://anjya.koiroha.org/ja/fbr/guidance/sandbox/7
591デフォルトの名無しさん:2008/03/19(水) 19:19:43
宿題スレと間違えてコード書いちゃったから良かったらどうぞ。
ただし、自分も初心者なためツッコミどころがあったら教えてく欲しいです。
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/224.java
592デフォルトの名無しさん:2008/03/19(水) 20:53:03
>>591
とりあえず、UIスレッドとそれ以外のワーカスレッドについてと
その連携・スレッドセーフ性に関して再考した方がよいかと
593デフォルトの名無しさん:2008/03/19(水) 23:12:09
evalみたいなことできませんか?

int i=3;
String s = "現在i時です。";
String msg = System.eval(s);
System.out.println(msg);
594デフォルトの名無しさん:2008/03/19(水) 23:15:46
javax.tools.Compilerというのがあるが、ここで質問するレベルでは難しいだろう。

Javaじゃなくていいなら
javax.script.*
経由で対応言語つかっとけ。

595デフォルトの名無しさん:2008/03/19(水) 23:16:35
String msg = String.format("現在%d時です。", 3);
596デフォルトの名無しさん:2008/03/19(水) 23:27:58
180°の弧を描くアナログメータを作りたいんですけどうまくいきません
下のようなpaintメソッドではいけないのでしょうか?
真ん中に直線が描かれるだけで何もなりません

double i = 0;
int x = 200;
int y = 200;
public void paint(Graphics g){
g.drawLine(x,y,200,300);
Double xx = new Double(200 + Math.sin(1/20 * i) * 200);
x = xx.intValue();
Double yy = new Double(200 - Math.rint(Math.cos(1/20 * i) * 200));
y = yy.intValue();
i += 1;
}
597デフォルトの名無しさん:2008/03/19(水) 23:35:32
>>596
1/20 => 0
以上。
598デフォルトの名無しさん:2008/03/19(水) 23:38:56
描画部分のループはどうなってんの?
というか素直にdrawArcでいいんじゃない?
599デフォルトの名無しさん:2008/03/19(水) 23:40:03
リロードしてなかったぜ
600596:2008/03/19(水) 23:41:24
ども 助かりました
601デフォルトの名無しさん:2008/03/20(木) 20:51:10
ネットワークから受信する XML を SAX で解析する場合って、例えば属性値として
数 GB の文字列を投げられたら OutOfMemory が出るまで分からないよね。
10MB 送って無応答、10MB 送って無応答、、、という接続をいっぱい作られたら
どっかでサーバのメモリが逼迫状態のままになるという攻撃になるんだよね。
602デフォルトの名無しさん:2008/03/20(木) 21:38:07
Appletでウィンドウのサイズをかえるごとにウィンドウのサイズを受け取りたいんですけど
どうしたらいいんですか?
ダブルバッファでcreateImageの引数を変えたいんですが・・・
603デフォルトの名無しさん:2008/03/20(木) 21:44:07
ComponentListener
または描画のたびにアプレットのサイズ確認して変わってたらバッファ作り直し。
604デフォルトの名無しさん:2008/03/20(木) 21:52:07
>>603
ありがとうございます
参考にさせていただきます
605デフォルトの名無しさん:2008/03/20(木) 22:24:55
何度もすいませんw
↓これじゃだめなんでしょうか?なんか最初のサイズの範囲にしか描画されないんですけどorz
public void componentResized(ComponentEvent e){
d = getSize();
buffer = createImage(d.width,d.height);
repaint();
}
606デフォルトの名無しさん:2008/03/20(木) 23:41:23
JTableを印刷するにはどうすればいいでしょうか?
607デフォルトの名無しさん:2008/03/20(木) 23:44:00
スマートな方法は知らんけど Robot 使って該当領域スクリーンキャプチャすればできることはできるんじゃねか。
608デフォルトの名無しさん:2008/03/21(金) 00:12:50
>>605
正直、私では分かりません。が、
リスナーの追加、paint 内での buffer の使用状況確認などなど

はじめてやる時は、面倒でも一つ一つ丁寧に、
想定したことが起きているか確認しながら進むこと
609デフォルトの名無しさん:2008/03/21(金) 00:51:53
>>606
JTable#getPrintable()
PrinterJob#setPrintable()
PrintRequestAttributeSet#add()
PrinterJob#printDialog()
PrinterJob#print()

このへんのメソッド組み合わせて肉付けしていけばできる(はず)
610デフォルトの名無しさん:2008/03/21(金) 01:30:16
POI(HSSF)で大量のデータ(10万件のレコード)をExcelファイル出力しようとした場合に
OutOfMemoryErrorの発生を回避するには
複数のファイルに分割して出力する以外に方法はないんでしょうか?
611デフォルトの名無しさん:2008/03/21(金) 01:30:18
済みません、できませんでした。
メソッドの使い方がさっぱりわからなくて・・・。
class pbtActionListener implements ActionListener
{
public void actionPerformed(ActionEvent i)
{
}
}
この中にテーブルを印刷する機能を入れるにはどうすればいいでしょうか
本来なら時間を掛けて勉強するべきでしょうが
時間がないのもう少し詳しく教えてください。お願いします。

612デフォルトの名無しさん:2008/03/21(金) 01:33:02
>>610
今時の Excel は XML で読めるんだから XML で出せば?
613デフォルトの名無しさん:2008/03/21(金) 04:46:13
>>611
時間がないならcsvでファイルに吐いてExcelで印刷しろ
614デフォルトの名無しさん:2008/03/21(金) 07:01:24
ほれ
tableどっかから拾ってきてパラメータ適当にいじれ

try {
 Printable printable = table.getPrintable(JTable.PrintMode.FIT_WIDTH,
   new MessageFormat("タイトル"),
   new MessageFormat("Page - {0}"));
 PrinterJob job = PrinterJob.getPrinterJob();
 job.setPrintable(printable);
 PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
 attr.add(OrientationRequested.LANDSCAPE);
 attr.add(new MediaPrintableArea(5.1f, 5.1f, 199.8f, 286.8f, MediaPrintableArea.MM));
 boolean printAccepted = job.printDialog(attr);
 if (printAccepted) {
  job.print(attr);
 }
} catch (HeadlessException e1) {
 e1.printStackTrace();
 catch (PrinterException e1) {
 e1.printStackTrace();
}

宿題スレかここは…
615デフォルトの名無しさん:2008/03/21(金) 08:32:53
>>610
Excelで扱える行数の最大は、65536まで。
POI使おうがCOM使おうがどのみち無理。
616デフォルトの名無しさん:2008/03/21(金) 09:12:20
Excel2007
617デフォルトの名無しさん:2008/03/21(金) 09:22:55
>>612
なるほど、XMLは考慮していませんでした
調べてみます

>>613
CSVも、やはり複数ファイルに分割しないとデータを扱いきれないので・・・

>>615
HSSFであれば1ファイルに複数シートを含めたExcel形式で出力できるので、
HSSFで何とかできないかと思いまして

ありがとうございました
618デフォルトの名無しさん:2008/03/21(金) 09:31:26
10万件のレコードが出力されたExcelファイルを誰がどんな目的で使うのかが不思議。
619デフォルトの名無しさん:2008/03/21(金) 10:05:18
業務から伝票データ集計を流してもらって、まとめて経営戦略用の資料とかにするとかかな。
あとアンケートデータの集計なんてのもあるしね。
それらの資料を元に今後の会社の行く末を。。。なわけだw
620デフォルトの名無しさん:2008/03/21(金) 11:47:40
開けないのにどうやって使うのって話では?
開けたとしても人間には解析できないけどなw
621デフォルトの名無しさん:2008/03/21(金) 12:03:36
取り込み形式が Excel のシステムにつなげるとか。
あと Excel にさえしてくればあとは中の人間が VBA で何とでもするからという所も多い。
622デフォルトの名無しさん:2008/03/21(金) 13:25:58
>>614
ありがとうございます。おかげでなんとかなりました。
623デフォルトの名無しさん:2008/03/22(土) 02:54:05
複数シートに分ければ出来るよ
HSSFSheetのドキュメント参照
624デフォルトの名無しさん:2008/03/22(土) 12:18:28
【提携/JAVA】マイクロソフト、Javaを使ったWindowsアプリ開発でEclipse財団と協力へ[03/21]
http://news24.2ch.net/test/read.cgi/bizplus/1206155464/
625デフォルトの名無しさん:2008/03/22(土) 12:36:40
特定のインタフェースを実装しているものを、動的に一覧する手段はあるでしょうか?
もちろん、クラスローダにローディングされているもので構いません。
Eclipse の検索で実装が探せますが、あれはソースを解析しているのでしょうか。
626デフォルトの名無しさん:2008/03/22(土) 13:30:25
インターフェイスについて参照して、
実装について参照してはいけないと本に書いてありました。
なぜですか?
627デフォルトの名無しさん:2008/03/22(土) 13:38:41
>>626
後から実装を取り替えたくなったときに、参照している側まで修正しなければならなくなるから。
628デフォルトの名無しさん:2008/03/22(土) 14:57:37
>>455 のおかげで行きつけのイラストロジックが起動できた。
ありがとう >>455
629デフォルトの名無しさん:2008/03/22(土) 15:21:30
>>626-627
>>625 の答えとしてであれば、その点は了解しています(いるつもりです...)

行いたいことは、例えばあるコンバートを掛ける時に、公開インタフェースに
従って実装したユーザ任意の処理を、なるべく簡易な方法で追加させたいのです。
例になってしまいますが

標準語 ------> 関西弁 ------> 翻訳結果

と言った変換をするアプリケーションにおいて、公開インタフェースとして
  String translate(String sentence)
を公開し、これをユーザが実装すれば(例えば博多弁を追加)

標準語 ------> 関西弁 -------> 関西弁 + 博多弁 ------> 翻訳結果

といったことを可能にしたい、と言った感じです。

この追加した処理のデプロイ方法として、「公開インタフェースを実装したクラ
スを含む jar を ** に置くだけで OK」といった様に行わせたいために、>>625
のような要望となった次第です。FQCN さえ貰えれば済む話ではありますが、で
きれば簡易化させたいといった状況です。
630デフォルトの名無しさん:2008/03/22(土) 15:31:29
私も、1.6.0_05 アップデータをアンインストールして、
WinXP + Firefox3b4 + JRE1.6.0_03 で動いたよ。ありがとう 455。

>>629
// 其の二つはそれらで完結するレスかと。
プラグインなら、ファイル検索+カスタムクラスローダーで
できるかも…やったことないから適当ですが。
631デフォルトの名無しさん:2008/03/22(土) 15:32:28
日本語-->英語+フランス語-->翻訳結果っっっw
632デフォルトの名無しさん:2008/03/22(土) 15:43:47
PrivateKey や PublicKey ってシリアライズして保存しておけばいいの?
getEncoded() で何やらバイナリが取れるみたいだけど、これが何なのか分からん orz
633デフォルトの名無しさん:2008/03/22(土) 18:01:22
>>585>>589
> キーワードだけ覚えて披露する
それは>>582自身だ。
ポーリングを実装する必要を無くす仕組みではなく、
ポーリングをしなくて良い仕組みでしょ。

あるいは、ポーリングの意味ちゃんとわかってないんじゃない?
Comet使った場合定期的に問い合わせなんかしないでしょ?
634デフォルトの名無しさん:2008/03/22(土) 18:05:37
キューにイベント入ってこなければ定期的な問い合わせになるが。
Comet の仕組み分かってないのか。
635デフォルトの名無しさん:2008/03/22(土) 18:08:53
>>536
> RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
> 逆の場合も使えるのか確証が持てません。

WebサービスとRMIサービスは別なので、それぞれサーバの役割を持つプロセスは異なります。
その例だと
Webサーバプロセス = RMIクライアント
Webクライアントプロセス = RMIサーバ
なので、「(RMI)クライアント側からのトリガーで(RMI)サーバーへ返す」
と読み替えれば別にその紹介サイトの説明で問題はないでしょう。

636デフォルトの名無しさん:2008/03/22(土) 18:10:17
定期的な問い合わせではないな、定期的な再接続。
ポーリングはキューの確認終わったらすぐにリターンするが、それを一定の待機時間を維持するようにしただけ。
それをポーリングの揚げ足取りましたよ、と言いたいだけ?
637デフォルトの名無しさん:2008/03/22(土) 18:10:20
>>634
で、その定期的な問い合わせは
Cometフレームワークとやらが実現してるって言ってるの?
638デフォルトの名無しさん:2008/03/22(土) 18:11:06
>>632
保存したいのならお好きなように。getEncoded()のものを保存しておけ
ば、Java以外のプラットフォームでも読めるかもしれない。
639デフォルトの名無しさん:2008/03/22(土) 18:22:35
>>637
おまえ、ブラウザの裏で Comet が独自の通信プロトコルでも使ってイベントやり取りしてると思ってるなら
HTTP のお勉強からやり直したほうがいいぞ。
640デフォルトの名無しさん:2008/03/22(土) 20:10:16
>>629
使ったことないけど、これなんかどう?
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/ServiceLoader.html
641デフォルトの名無しさん:2008/03/22(土) 20:14:39
>>629
jarをZipInputStreamに食わせて.classファイルの一覧を出させて、
URLClassLoaderで見つかったクラスを全部ロードさせてみて、
希望のインタフェイスを実装してるかひとつずつ調べる
という力技もないこともない
642デフォルトの名無しさん:2008/03/22(土) 20:22:40
URL.getContent();
を使ってコンテンツをダウンロードすると

コンテンツが
「あなたがお使いのブラウザは、Cookieをブロックする設定になっています。」
となっちゃう サイトに対して、

プログラム側がCookieを「受け入れ」て、
アクセスできるようにするには具体的にどうするんでしょうか?


HttpURLConnection が自動的にCookie受け入れ処理をやってくれるとかいうのですが....

HttpURLConnection.openConnection();
HttpURLConnection.getInputStream() ;
とかやっても URL.getContent(); の時と変わりません。


643デフォルトの名無しさん:2008/03/22(土) 20:32:08
>>642
java.net.CookieHandlerとかjava.net.CookieManagerあたりを使うんじゃないかなたぶん
644デフォルトの名無しさん:2008/03/22(土) 20:33:25
エスパーするとそのリクエストを出す前にどこかから Cookie の発行を受けていなければならない。
ブラウザで正常に動かしたのと同じ URL の順序で getContent() してみれ。
645デフォルトの名無しさん:2008/03/22(土) 20:44:36
IPアドレスの正規表現ってどうしたらいい
"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$"
これだと、300.192.144.109のようなIPアドレスもマッチしてしまう
646デフォルトの名無しさん:2008/03/22(土) 21:08:08
Cookieの処理を実装する。Cookieを保持するクラスはあるからさ。
647デフォルトの名無しさん:2008/03/22(土) 21:24:00
うぉ。Cookieはリクエストプロパティにベタに書き込んでたわ。
HttpURLConnection.setRequestProperty("Cookie", "なんたら");
648デフォルトの名無しさん:2008/03/22(土) 21:33:18
>>645
1オクテットだけなら
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
かな。

全部出来てから、あとでより正確にするってことで、
目的のプログラムが出来るまではとりあえずは数字でマッチさせて、
マッチ後int変換して範囲比較したほうが楽かも。

用途によっては
java.net.InetAddress.getByName()
に食わせて例外を捕まえるという方法も。
649デフォルトの名無しさん:2008/03/22(土) 21:40:34
"((([12][0-9]{1,2})|([1-9][0-9]{1,2}))\\.){3,3}(([12][0-9]{1,2})|([1-9][0-9]{1,2}))"
通ったよ
650649:2008/03/22(土) 21:42:54
失敗2番目と4番目の{1,2}は要らない。
651649:2008/03/22(土) 21:47:00
一桁が無かった。
652デフォルトの名無しさん:2008/03/22(土) 21:56:12
コードを少しずつ改変して行くに当たって、
それぞれにバージョンを付けて残しておこうと思ったら、
プロジェクトごとコピーして残しておけばいいんですか?
もっといい方法があるんですか?

Eclipseを使っています。コードを書くのは自分一人です。
653649:2008/03/22(土) 21:57:47
"((([12][0-9]{1,2})|([1-9]{0,1}[0-9]))\\.){3,3}(([12][0-9]{1,2})|([1-9]{0,1}[0-9]))"
654デフォルトの名無しさん:2008/03/22(土) 22:03:06
それ 299 が通る。
25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?
655デフォルトの名無しさん:2008/03/22(土) 22:05:24
>>645
正規表現に拘る部分なのか(まぁ何も言うまい

>>652
豪華にいくなら、バージョン管理システム。subversion とか cvs とか
LocalHistory でもそこそこ残ってる(条件は知らない
656デフォルトの名無しさん:2008/03/23(日) 00:38:14
subversionは別に豪華じゃないんじゃない?file://でいけるし。
657デフォルトの名無しさん:2008/03/23(日) 01:10:38
>>655
バージョン管理システムは別に豪華じゃない。
Mercurialとかならサーバのセットアップすら不要。
658デフォルトの名無しさん:2008/03/23(日) 02:01:57
信者くせー
659デフォルトの名無しさん:2008/03/23(日) 05:36:43
AES でサポートされているはずの 192bit, 256bit のキー指定すると例外になるのは何で? サポートされてないの?

Exception in thread "main" java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at Main.main(Main.java:101)
660デフォルトの名無しさん:2008/03/23(日) 12:27:26
>>659
違いそうだけど、輸出制限版とかいう話?
661デフォルトの名無しさん:2008/03/23(日) 12:54:20
普通に Sun からダウンロードした奴だけど規制版じゃないよね。
Blowfish も 128bit より上は同じ例外なんだけど。
662デフォルトの名無しさん:2008/03/23(日) 13:01:43
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/crypto/CryptoSpec.html#AppC

やっぱ輸出制限であってるかも。
制限解除したポリシーファイルだけダウンロードできるけど、
そもそも日本はダウンロードOKな国なのか??
663デフォルトの名無しさん:2008/03/23(日) 13:20:33
>>662
http://ascii24.com/news/i/topi/article/2000/07/19/610269-000.html
2000年で撤廃されてるらしいから、日本ならダウンロードOK。
664デフォルトの名無しさん:2008/03/23(日) 13:37:07
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/crypto/CryptoSpec.html#ExemptApps
> 関係があるのは、作成するアプリケーションが、政府により暗号化制限の課された国に
> 輸出される可能性があり、アプリケーションをその制限に適合させる必要がある場合だけです。

とあるので制限は解除されているものかと思ったら、128bit で制限かかるあたりからしてこれみたいですね orz
解除の試行錯誤でもしてみるか orz
665デフォルトの名無しさん:2008/03/23(日) 13:43:15
SUNから解除用ファイルダウンロードしてファイル1個置き換えるだけだよ。
666デフォルトの名無しさん:2008/03/23(日) 13:45:59
http://java.sun.com/javase/ja/6/download.html の下の方の

その他のダウンロード
Java Cryptography Extension (JCE) 無制限強度の管轄ポリシーファイル 6

てやつ。
667デフォルトの名無しさん:2008/03/23(日) 14:08:47
どうもご丁寧にありがとうございます m(_ _)m

ちなみに対照鍵暗号のアルゴリズム的な強さの現状ってこんな感じで良いんですかね。

AES ≒ Blowfish >> トリプルDES > [解読可能の壁] > DES
668デフォルトの名無しさん:2008/03/23(日) 20:02:41
SwingでWindowsのLook&Feelを用いたとき
Windowsのネイティブな部品のように
「コピー」「貼り付け」などのメニューが自動で表示されるようにはできないでしょうか?

AWTを用いればWindowsの部品として自動で表示されるようですが、
Swingの場合、自分でそれらの処理を実装しなければならないのでしょうか?
669デフォルトの名無しさん:2008/03/23(日) 20:07:03
はい
670デフォルトの名無しさん:2008/03/23(日) 20:43:04
Swingならハンドラ実装するだけ
671デフォルトの名無しさん:2008/03/23(日) 22:07:16
今までGUIの終了時処理はWindowListenerを登録して行っていたのですが終了時処理であれば
RuntimeのaddShutdownHook()
の方が適切なのでしょうか?
一般的なGUIアプリケーションでの終了時処理でこの方法を用いているものを見かけたことがなかったので、何か理由があるのかと思い質問させていただきました。
672デフォルトの名無しさん:2008/03/23(日) 22:42:30
>>667
AES >  Blowfish > トリプルDES
ぐらいかなあ

・トリプルDESはDESの強化版なので実績という観点からは評価が高いが、
さすがにいいかげん古い。あと低速

・一般にブロック長が大きいほうが強度もより高くなるので
AES(ブロック長128ビット)はBlowfish(ブロック長64ビット)より強いはず
実際、最近考案された暗号はどれも128ビット以上のブロック長を採用している
(Blowfishの設計者が新しく考案したTwofishもブロック長128ビット)

673デフォルトの名無しさん:2008/03/23(日) 22:55:05
繰り返しの構文について質問なのですが、
rubyのredoの役割を果たすものってjavaには無いのでしょうか?
674デフォルトの名無しさん:2008/03/23(日) 23:04:12
>>673
ない。Java は break と continue だけ。
675デフォルトの名無しさん:2008/03/23(日) 23:07:24
break => break
next => continue
retry = なし
redo = なし
かな。
676634:2008/03/23(日) 23:08:36
>>674
ありがとうございます。
スクリプトに出来てjavaに出来ないことがあるってのは意外ですね。
677634:2008/03/23(日) 23:09:18
>>675さんもありがとうございます。
678デフォルトの名無しさん:2008/03/23(日) 23:21:22
>>671
javaw and shutdown hooks (referring to #4302814)
ttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4486580
679デフォルトの名無しさん:2008/03/24(月) 00:11:04
>676
そうか?
redo とか retry とかRubyでも偶にしか使わんし、他の言語を見てもある言語は少ないかと。
680デフォルトの名無しさん:2008/03/24(月) 00:22:23
>>676
>スクリプトに出来てjavaに出来ないことがあるってのは意外ですね。
なんか解釈が間違っている気がする
681デフォルトの名無しさん:2008/03/24(月) 00:26:17
Ruby厨ってやつだろ
682デフォルトの名無しさん:2008/03/24(月) 00:45:54
FileInputStreamからFileChannelを取得し、そのFileChannelでmap()を実行すると、ストリームやチャネルをクローズしても元ファイル(FileInputStreamのソース)を削除できません。
原因はMappedByteBufferによって使用中になってしまうからという単純なものなのですが、解決策が
FileInputStream fis = new FileInputStream(input);
FileChannel fc = fis.getChannel();
ByteBuffer buf = fc.map();
....
buf = null;
System.gc();
input.delete();

これくらいしか思いつきませんでした。
何かいい方法はないでしょうか?
683デフォルトの名無しさん:2008/03/24(月) 01:13:37
>>676
retry や redo と同等の処理を記述することはそれほど難しくないから、
「出来ない」というのは語弊がある。
684デフォルトの名無しさん:2008/03/24(月) 02:09:59
やさしいJavaを読み終わり基礎中の基礎?の構文を覚え
今結城浩氏のデザパタの本を読んでいるのですが、実務経験が無いため
それらのパターンをどの様な時に使えばいいか想像がつきません。
Struts等を使ったシステム開発業務に興味があるのですが、
Web系ではどのようなパターンが使われているのでしょうか?
重ねて質問ですが、最初はどのようなパターンから覚えていけば良いでしょうか?
よろしくお願いいたします。
685デフォルトの名無しさん:2008/03/24(月) 02:29:20
畳の上の水練という言葉があってだな
686684:2008/03/24(月) 02:43:57
>>685
分かってはいるつもりでしたが・・・
デザパタの存在自体が面白くて、どうしても勉強したかったのです。
何かツールでも作りながら地道に覚えていきます。
687デフォルトの名無しさん:2008/03/24(月) 03:00:42
Vector vec = new Vector();
System.out.println("----追加----");
String obj1 = new String("Hello World!");
StringBuffer obj2 = new StringBuffer("こんにちは、世界!");
vec.addElement(obj1);

上記をコンパイルすると最後の行でコンパイルエラーが発生します。
jdk5.0を使っているのですが、何を行えば正常にコンパイルできますか?
688デフォルトの名無しさん:2008/03/24(月) 03:13:14
うちでは
注:Hoge.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。
と警告が出るだけでコンパイルされるんだが。

単にコンパイル警告をなくしたいなら javac -source 1.4 オプションを付ける。

もし>>687のコードが教科書どおりならその教科書は古い。
VectorのようなコレクションはJDK1.5以降Generics対応なので、
Vector<String> vec = new Vector<String>();
のように型を明示して使うのが基本。というかVector自体(ry


689デフォルトの名無しさん:2008/03/24(月) 03:26:34
古い。
690デフォルトの名無しさん:2008/03/24(月) 08:01:33
>>682
FileChannel の JavaDoc にも GC されるまでマッピングは有効って書かれているから
おそらくそれくらいしか方法は無い。
なんでこういう仕様なのか、俺も問いただしたい気持ちでいっぱいだ。
691デフォルトの名無しさん:2008/03/24(月) 09:13:02
>>690
やはりそうでしたか。
破棄してくれる手段を一つくらい提供してくれてもよさそうですけどね。
諦めてgcすることにします。
692デフォルトの名無しさん:2008/03/24(月) 09:40:50
解っているとは思うが、System.gc()を実行してもGCされるわけじゃないぞ
693デフォルトの名無しさん:2008/03/24(月) 10:01:06
サーバプログラム書いてるんですけど、
inetdとかスーパーサーバからの起動だとプロセス毎にフォークしちゃうから
嫌で、そのへんをスレッドでやりたいんですけど、
その時ってどうやって起動すればいいんでしょうか?
普通にシェルからjavaをバックグラウンドで起動しちゃうとなんか思わぬ影響がでちゃうとか書籍にかいてありました。
694デフォルトの名無しさん:2008/03/24(月) 10:11:00
「嫌で」「なんかでちゃう」
そんなとこなら諦めれ
695693:2008/03/24(月) 10:23:28
>>694
inetdからサーバを呼び出すと、
1クライアントに対してforkとexecを実行するのでCPU時間が増大してしまいます。
それを防ぐために1クライアントに1スレッドを割り当てたいと考えています。
しかし書籍を調べましても起動時にどうすれば良いのか分かりません。
もしよろしければご教授願えませんでしょうか?
696デフォルトの名無しさん:2008/03/24(月) 10:26:40
サーバでJavaのプロセスを起動し、Socket通信汁
697693:2008/03/24(月) 10:32:54
>>696
そのプログラムは書いたのですが、
単に端末からバックグラウンドでプログラムを起動しただけでは、
開始した端末セッションからプロセスを切り離せません。
ではどうすればプロセスを切り離して起動できるのでしょうか?
698デフォルトの名無しさん:2008/03/24(月) 10:44:13
nohup じゃだめなの?
699693:2008/03/24(月) 11:04:20
>>698
勉強不足でnohupを知りませんでした。
それでやります!ありがとうございました!
700デフォルトの名無しさん:2008/03/24(月) 11:38:55
そもそもクライアント毎にサーバープロセスを起動するのがナンセンスかと
701デフォルトの名無しさん:2008/03/24(月) 11:59:15
でもタスクをキューにためてそれを逐次処理するのは遅いのでは?
702デフォルトの名無しさん:2008/03/24(月) 12:02:46
いやきっとクライアント毎に起動するのはスレッドでしょ。
inetdみたいなデーモンをコンソールから起動すると、端末から切り離せない、
って悩んでただけで。
最終的には、inetd自身のように、/etc/init.d/に起動スクリプト置いてほげほげ、
ってするのが正しい姿なんだろうけど。
703デフォルトの名無しさん:2008/03/24(月) 12:07:14
そうですよね。
でもサーバが落ちた時に自動起動しないのが難点なくらいで、
他に困るようなことが思いつかなかったので、nohupでもいいかなって思いました。
704デフォルトの名無しさん:2008/03/24(月) 12:55:12
>>701
マルチスレッドで処理しろよw
705デフォルトの名無しさん:2008/03/24(月) 17:09:28
ArrayList<Integer>って型に入ってるデータをソートしたいんだけど
どういうやり方が良いんでしょう?
今はArrays.sort()にtoArrayでObject[]にしたものと
Comparatorを実装したクラスのオブジェクトを渡しています

ほかに良い方法があれば教えてください
706デフォルトの名無しさん:2008/03/24(月) 17:12:19
Collections.sort()
707デフォルトの名無しさん:2008/03/24(月) 17:12:29
つCollections.sort
708705:2008/03/24(月) 17:17:03
>>706-707
あ、やっぱりそれ用のがあったのですね
ありがとうございました
709デフォルトの名無しさん:2008/03/24(月) 20:47:39
>>697
$ ./hogehoge > stdout.log 2>stderr.log < /dev/null &
とかやればシェルから切り離せるけど、そういうことを言ってるわけ?
バックグランドプロセスがあるとシェルが閉じれないのは
シェルが用意した stdin, stdout, stderr を持っているからで、
それを別に用意すればOKなんだけど。
710デフォルトの名無しさん:2008/03/24(月) 22:37:59
とても初歩的な質問でお恥ずかしいのですが、
自分の出した答えに自信がないため、質問させていただきます。

int型の変数を2byteの配列に格納(その後取り出し)したいのですが、
ビット演算の理解がつたないため、下記のようなやり方しか思いつきませんでした。

正しいやり方をご存知の方がおりましたら、
教えていただきたく、よろしくお願いいたします。

byte[] data = new data[2];
int num = 128;

//格納
data[0] = (byte)(num >> 7);
data[1] = (byte)((num << 25) >> 25);

//取り出し
num = data[0] << 7;
num += data[1];
711デフォルトの名無しさん:2008/03/24(月) 22:42:30
data[0] = (byte)((num >> 8) & 0xFF);
data[1] = (byte)((num >> 0) & 0xFF);

num = ((data[0] & 0xFF) << 8) | ((data[1] & 0xFF) << 0);
712デフォルトの名無しさん:2008/03/24(月) 22:44:18
>>710
JDKについてくるjava.awt.Colorあたりのソースで、intと
alpha, red, green, blueの各1バイトの換算をしているのが参考になると思う。

intは4バイトだから、厳密に言えばサイズ2のバイト配列には入りきらない。
シフト量は24, 16, 8, 0な。

713デフォルトの名無しさん:2008/03/24(月) 22:49:26
>>711>>712
返信いただき、ありがとうございます。

教えていただいたコードと参考資料を元に、
ビット演算の知識を深めたいと思います。

自分ではどうしてもわからなかったため、
とても助かりました。
本当にありがとうございました。
714デフォルトの名無しさん:2008/03/24(月) 22:51:26
Javaでbyteがsignedってのはつくづく罠と思う。
715デフォルトの名無しさん:2008/03/24(月) 22:53:37
だよなー
おかげでバイナリの扱いがとてもしにくい・・・
716デフォルトの名無しさん:2008/03/24(月) 23:32:34
intが17bit以上の場合が考慮されていないけどいいのか?
717デフォルトの名無しさん:2008/03/25(火) 00:57:08
javaはバイナリの操作向いてないよ
718デフォルトの名無しさん:2008/03/25(火) 01:30:50
またおまえか
719デフォルトの名無しさん:2008/03/25(火) 08:02:38
覚えておいたほうがよい
静的メソッドや変数などのリストの一覧的なものってどこにありますでしょうか
720デフォルトの名無しさん:2008/03/25(火) 08:15:00
MathクラスとかSystemクラスとか他によく使用されるものの一覧を探しています
721デフォルトの名無しさん:2008/03/25(火) 08:17:15
そんなものはない。静的メソッドは必要に応じて都度クラスに付いてるから
静的メソッドだけ一覧的に覚えること自体に意味がない。
722デフォルトの名無しさん:2008/03/25(火) 08:19:51
APIじゃだめなの?
723デフォルトの名無しさん:2008/03/25(火) 09:15:54
>>719
>>3
java.lang, java.util. java.io パッケージ群のそれぞれのクラス、仕組みは
押さえてしかるべき、と主張する人も居るね(逃
724デフォルトの名無しさん:2008/03/25(火) 09:43:16
公開鍵証明書を作るクラスって標準でないの? keytool 使うしかない?
725719:2008/03/25(火) 11:14:34
静的って書いたのがまずかったのでしょうか
Math.なんちゃら〜 とか system.なんちゃら〜 みたいなもので
頻繁に使われるような物のリストを探しているのですが

まとめてあるサイトは見つかったのですがあまり使わないようなものが大量にあったり
どれがよくつかわれるものなのかわからないので
これは覚えておいたほうが良いというものを集めてリストになっているサイトなどありましたら教えてください
726デフォルトの名無しさん:2008/03/25(火) 11:16:31
何が必要かなんて、分野によって違ってくるのが当たり前。
とりあえず、ArraysとかCollectionsをあげておくけど、
自分で見つけるのが一番いいと思うよ。
727デフォルトの名無しさん:2008/03/25(火) 12:16:29
Mathのメソッドもそんなに頻繁に使うとは思えない
728デフォルトの名無しさん:2008/03/25(火) 12:33:40
>>723みたいに、java.lang, java.util. java.io以下のクラスは押さえて、
あとはJavadocでその都度確認、ってのでいいんじゃね。
729デフォルトの名無しさん:2008/03/25(火) 12:35:03
>>724
証明書を発行するAPIというのは標準にはなかったと思う。

730719:2008/03/25(火) 12:57:38
java.lang, java.util. java.io以下のクラスですな
さっそく調べて覚えるよう様にするす
dクス!
731デフォルトの名無しさん:2008/03/25(火) 12:59:22
719が聞いてたのはstaticメソッドのことじゃないの?
732デフォルトの名無しさん:2008/03/25(火) 15:40:34
Sound APIについて質問です。
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
TargetDataLine target = (TargetDataLine)AudioSystem.getLine(info);
これで取得したターゲットラインを録音すると、コンピュータ上の音(スピーカーから通常出る音)が録音されました。
これをマイクからの入力に変えるにはどうすればよいのでしょうか?
Port.Info.MICROPHONEを情報としてPortを取得して・・・とするのでしょうけれでもその先が分かりません。
733デフォルトの名無しさん:2008/03/25(火) 16:20:26
>>732
AudioSystem#getMixerInfo、AudioSystem#getMixer、Mixer#getTargetLineInfoあたりで
全部のターゲットラインをリストアップして、一覧から選ばせるってのはどうだろう・・・
734デフォルトの名無しさん:2008/03/25(火) 17:55:04
javaのコンパイラのパスを要求されたらどこを指定すればいいのでしょうか
j2sdkを普通にインストールしました
735デフォルトの名無しさん:2008/03/25(火) 17:56:49
OSは?
736デフォルトの名無しさん:2008/03/25(火) 17:57:07
C:\Program Files\Java\jdk1.6.0_05\bin
737デフォルトの名無しさん:2008/03/25(火) 17:57:13
窓xp sp3です
738デフォルトの名無しさん:2008/03/25(火) 18:01:46
>>736
そこらへんで見つかりました
ありがとうございます

ずっとjreの方を見てました
739デフォルトの名無しさん:2008/03/25(火) 18:10:39
JDKを入れるのが初めてなら落とすときにインストール手順を読まないのだろうか
740デフォルトの名無しさん:2008/03/25(火) 18:15:00
世の中にはマニュアル類を読まない人間が結構いるらしいよ
741>>733:2008/03/25(火) 18:51:09
>>732
それしかないみたいですね。
そうします。ありがとうございました!!
742デフォルトの名無しさん:2008/03/25(火) 22:03:55
PATHって、違う言語をコンパイルするときには毎回変えないといけないの?
今Cの設定なんだが。
743デフォルトの名無しさん:2008/03/25(火) 22:08:09
どんどん追加していけばいいだけ
744デフォルトの名無しさん:2008/03/25(火) 22:14:55
基本的に同じ PC 上で同じ言語 (コンパイラ) の違うバージョンを使い分ける場合だけ気をつければ良い。
745デフォルトの名無しさん:2008/03/25(火) 23:17:31
追加できるのか。ども。
javac の -g:<キーワード> で sources,lines,vars のデバッグオプションが
指定できますが、デバッグ情報が載らない(載せない)と言う点以外の影響
(性能劣化等)はあるのでしょうか。class ファイルが大きくなるだけでしょうか。
747デフォルトの名無しさん:2008/03/26(水) 12:03:56
サブクラスのインスタンスから「スーパクラスのメソッド」呼び出した時、
スーパクラスのメソッド内で、「サブクラスでオーバライドしたメソッド」を使ってた場合に
動的バインドでオーバライドした方のメソッドが呼び出されるのって
単純に気をつけるしかないんでしょか?
748デフォルトの名無しさん:2008/03/26(水) 12:09:07
>>747
当然の話。むしろ呼んでくれないと困る。
それを「気をつける」と認識する方が問題。
749デフォルトの名無しさん:2008/03/26(水) 12:11:17
ありがとう。認識あらためます。
750デフォルトの名無しさん:2008/03/26(水) 12:14:40
>>747
オーバーライド(上書き)とはそういうもの。
公開したいけど、上書きされるのが困るのならば、final を付けてしまいましょう。
公開する必要が無いならば、private にしましょう。
そもそも継承されることを望んでいないなら、class を final にしてしまいましょう。
751デフォルトの名無しさん:2008/03/26(水) 13:04:04
言い方を変えれば、上書きしたメソッドを呼んで欲しいからサブクラスで上書きするわけで、読んで欲しくないならばオーバーライドする必要がない

ただ、「意図せずにスーパークラスのメソッドをオーバーライドしてしまった」とか「意図せずにサブクラスで定義されているメソッドと同名のメソッドをスーパークラスに定義してしまった」というケースはある。
解決策はfinalもあるが、@Override無のオーバーライドはコンパイルエラーとする、という方が柔軟ではある。
752デフォルトの名無しさん:2008/03/26(水) 15:12:47
C# と比較するとわかりやすいかも。
753デフォルトの名無しさん:2008/03/26(水) 15:37:35
C#しらねって奴多いんじゃない?
754デフォルトの名無しさん:2008/03/26(水) 15:46:55
C#いらねって奴多いんじゃない?
755デフォルトの名無しさん:2008/03/26(水) 17:26:04
最近になってJavaが無謀な拡張されまくってるのはC#のせいだからな
756デフォルトの名無しさん:2008/03/26(水) 21:12:25
String str1 = "文字列";

String str = new String("文字列");
って何が違うのでしょうか?
757デフォルトの名無しさん:2008/03/26(水) 21:21:35
後者は無駄の極み
758デフォルトの名無しさん:2008/03/26(水) 21:27:04
上はどこかにある "文字列" という文字列の参照を str1 に代入されるだけ。
下は "文字列" という内容の新しい文字列オブジェクトが毎回作られてから、その参照が str1 に代入される。
759デフォルトの名無しさん:2008/03/26(水) 21:39:02
すみません、str1じゃなくてstrでした。

では、前者と後者で目に見える違いが出ることはあるのですか?
まら、両者を使い分けたりする必要はあるのでしょうか?
760デフォルトの名無しさん:2008/03/26(水) 21:44:10
public class Test {
    public static final void main(String[] args) {
        String s = "Hello, world";
        System.out.println(s == "Hello, world");
        System.out.println(s == new String("Hello, world"));
    }
}
--------
true
false
--------
761デフォルトの名無しさん:2008/03/26(水) 21:47:42
上は str1 == str が true、下は str2 == str が false
従ってインスタンスが同じかどうかの違いがそのまま適用される。
たとえば synchronized(str1) と synchronized(str)
762デフォルトの名無しさん:2008/03/26(水) 22:20:03
誰か文字列の実体はプールで共有されてるって言ってやれよ。
763デフォルトの名無しさん:2008/03/26(水) 22:34:46
理由言わないとね・・・
764デフォルトの名無しさん:2008/03/26(水) 22:36:15
プールと言いたいだけの奴とは違うのだよ。
765デフォルトの名無しさん:2008/03/26(水) 23:16:55
>>762
intern()しないと共有されないぞ。文字列リテラルは暗黙で共有されるが。
766デフォルトの名無しさん:2008/03/26(水) 23:20:24
>>756に対する答えは、
String str = new String("文字列");
は絶対に使うな、でいいじゃないか。
理由はこの際どうでもいい。
767デフォルトの名無しさん:2008/03/26(水) 23:27:48
理由がどうでもいいとか思うやつって技術者としてどうなんだ。
768デフォルトの名無しさん:2008/03/26(水) 23:29:40
理由を押し付けて初心者を混乱させるのって人間としてどうなんだ。
769デフォルトの名無しさん:2008/03/26(水) 23:31:49
動けば良い系の人じゃね。
安易に絶対とか使うのも技術屋じゃねーし。
770デフォルトの名無しさん:2008/03/26(水) 23:31:50
俺も*とりあえずは*使うな、って方針には賛成
必要になってから知ればいいんじゃないかな
771デフォルトの名無しさん:2008/03/27(木) 00:00:19
小学生に教える時に中学高校で扱う内容にまでふれて
説明した方が良い/悪い論争
772sage:2008/03/27(木) 00:10:51
1 if (XXX == XXX) ってのはそのオブジェクトの参照が同じかチェックしている?
2 String str = new String("XXX") は新しくメモリに確保(インスタンスを作成)すること?
3 String str = "XXX" の扱いはVMが管理している?
773デフォルトの名無しさん:2008/03/27(木) 00:19:45
ブッ 理解までにそんな大きなステップが必要なほどのネタなのかよw
すぐには不要でも、キーワードだけでも与えておけば必要になった時の理解度が違う。
将来の期待もなく「理由不問、絶対やるな集」だけで育てられたお前に合わせる必要はねぇべ。
774デフォルトの名無しさん:2008/03/27(木) 00:21:07
>>772
まあ、全てYESと言っても良いかと。
ただ、貴方と私で、其の文を見て、違う状況を想定してる可能性は否めないが。

15.21.3 参照型等価演算子 == 及び !=
ttp://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#236163
3.10.5 文字列リテラル
ttp://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html#101083
775デフォルトの名無しさん:2008/03/27(木) 00:24:58
SJC-P310-035の試験を今度受けるんですが、黒本の仕上げ問題で61問中51問正解
だったんですが、こんなレベルでももう合格できますか?
776デフォルトの名無しさん:2008/03/27(木) 00:47:48
とりあえず忘れろに賛同かな
バイト配列から文字列を生成したいような場合にnewは使うが、new String(String str) を使うケースはほとんどない、と教えてる。
どっちかといえば、equalsで比較しろのが重要な話しだし。

>>775
スレ違い
777デフォルトの名無しさん:2008/03/27(木) 01:03:18
>equalsで比較しろ
これの方が遙かに重要だな
778デフォルトの名無しさん:2008/03/27(木) 03:52:21
Javaのライブラリに変数の詳しい情報をダンプしてくれるような奴ってありませんか?
PHPでいうvar_dump的なものを使いたいんですが
779デフォルトの名無しさん:2008/03/27(木) 08:30:48
>>778
用途がわからんのだが、開発中ならたいていのIDEのデバッガについてる
変数watch系機能で間に合いそうな。
それとも運用中に必要な機能?

780デフォルトの名無しさん:2008/03/27(木) 08:33:27
commons langのToStringBuilderとか大がかり杉?
781デフォルトの名無しさん:2008/03/27(木) 08:43:02
ねぇよ下駄言語と一緒にするなと言えば済む話では。
782デフォルトの名無しさん:2008/03/27(木) 11:45:34
JITコンパイルされた後のアセンブリコードを見るには、どうすれば良いですか?
783デフォルトの名無しさん:2008/03/27(木) 11:46:42
心眼
784デフォルトの名無しさん:2008/03/27(木) 12:17:19
>>779
普通のテキストエディタでやってる人間なもんで…

>>780
ToStringBuilderちょっと見てみます
785デフォルトの名無しさん:2008/03/27(木) 12:41:38
Soundbankに新たなInstrumentをロードしたい場合どのようにすればよいでしょうか?
デフォルトのシンセサイザーをMidiSystemで取得してloadInstrumentでロードしたいのですが、同じInstrumentでもHeadspaceInstrumentじゃないと読み込めないらしいのです。
他にもいろいろ実装しなおさなければいけないのでしょうか?
786デフォルトの名無しさん:2008/03/27(木) 12:56:38
787デフォルトの名無しさん:2008/03/27(木) 13:34:49
うわーSynthesizer実装しないといけないんですね。
分かりました。諦めます。
788デフォルトの名無しさん:2008/03/27(木) 15:15:38
オーバーロードに関して質問なのですが
class unko {
  public void hoge(List<List<A>>) {
  }
  public void hoge(List<A>) {
  }
}

これって何で出来ないんですか?
微妙に型というか違うと思うのですが
789デフォルトの名無しさん:2008/03/27(木) 15:19:23
Javaのジェネリクスは、コンパイル後に消えるから、どちらも同じ型とみなされる。
だからNG
790デフォルトの名無しさん:2008/03/27(木) 15:30:01
>>789
なるほど・・・
791デフォルトの名無しさん:2008/03/27(木) 16:53:01
List< List<A> >ならOK
792デフォルトの名無しさん:2008/03/27(木) 16:57:04
>>791
C++と勘違いしてないか?
793デフォルトの名無しさん:2008/03/27(木) 17:00:59
>>792
うん。
794デフォルトの名無しさん:2008/03/27(木) 17:13:52
なんだ釣りか。
795772:2008/03/27(木) 22:42:03
>>774
文字列連結でもOKなのは、まったく分かっていませんでした。
さらに、実行時に解決?計算される文字列は、異なるもなのですね。
そもそもinternなんてメソッドがあるなんて知りませんでした。

全く分かっていなかったけど、そのサイトかなり勉強になりました。
理解できればの話ですが。
796デフォルトの名無しさん:2008/03/28(金) 01:03:18
フィールド名の先頭を_(アンダーバー)にしているコードを見かけるのですが、
どのような意味でそのようにしているのですか?
797デフォルトの名無しさん:2008/03/28(金) 01:18:31
フィールドとそうでないものとを区別するため
798デフォルトの名無しさん:2008/03/28(金) 01:22:10
アンダースコアが正しい読み方
799デフォルトの名無しさん:2008/03/28(金) 07:58:59
>>798
通じるし、そこは許容範囲だろ。
「Unicode的にはローラインだ」とか、不毛だろ?
800デフォルトの名無しさん:2008/03/28(金) 08:27:03
_1つで始まる識別子って、グローバルな空間では全部予約済みなんだよな。
構造体フィールドならいいけど。
801デフォルトの名無しさん:2008/03/28(金) 08:28:05
む、そりはC/C++だ。
802デフォルトの名無しさん:2008/03/28(金) 08:44:57
Cでコンパイルするとリンカ上の名前が_付になる。のような気がした。
803デフォルトの名無しさん:2008/03/28(金) 09:06:25
800は791か。
804デフォルトの名無しさん:2008/03/28(金) 11:35:10
変数a b c があるとしてこの中で中央値を求めるにはどういう方法がありますか?
変数は何が入るかわからないという場合です。
if文の練習問題なのですが、答えがのってなくて
805デフォルトの名無しさん:2008/03/28(金) 11:41:43
int[] array = new int[]{a, b, c};
Arrays.sort(array);
System.out.println(array[1]);
806デフォルトの名無しさん:2008/03/28(金) 11:43:00
>>805
if文使えw
807デフォルトの名無しさん:2008/03/28(金) 11:47:12
説明が悪かったです、すみません
例えば a=1 b=2 c=3 なら bが出力 a=2 b=1 c=3 なら aが出力
みたいに何の数値を入れても真ん中の数値が出力するということです。
808デフォルトの名無しさん:2008/03/28(金) 11:48:59
いや>>805で合ってるよw
if(a<b){ if(b<c)答=b; else 答=max(a,c); }
else{ if(c<b)答= b; else 答=min(a,c); }
809デフォルトの名無しさん:2008/03/28(金) 11:56:18
全然わからないんですが、maxとminはどうすればいいですか?
810デフォルトの名無しさん:2008/03/28(金) 12:00:54
maxは渡された引数の大きいほうを、
minは小さいほうを返すだけ。
これくらいは自力で書けないと、将来つらいよ?
811デフォルトの名無しさん:2008/03/28(金) 12:08:52
>806
数が増えた時に汎用的に使えるのはソートじゃね?

>809
日常生活にも支障ありそうだなw
812デフォルトの名無しさん:2008/03/28(金) 12:15:12
ありがとうございます、しかし多分maxとminはまだ参考書に出てきてないので使わない方法なんだと思います。
あとは自力で考えます、ありがとうございました。
813デフォルトの名無しさん:2008/03/28(金) 12:21:46
>>811
if文つかってやれよw
814デフォルトの名無しさん:2008/03/28(金) 12:21:53
すみません、勘違いしてたようです。
maxとminは別に何でもいいんですね、引数ってのを使えば楽ってことはわかりました。
815デフォルトの名無しさん:2008/03/28(金) 12:25:04
っ Math.min、Math.max
816デフォルトの名無しさん:2008/03/28(金) 12:30:10
あ、Math.min Math.max調べたらやっぱりminとmaxじゃないとだめみたいでした。
817デフォルトの名無しさん:2008/03/28(金) 12:35:51
min(l,r)は if(l<r)答=l; else 答=r;
max(l,r)は if(l>r)答=l;else 答=r;
818デフォルトの名無しさん:2008/03/28(金) 15:51:54
>>803
ちげーよ馬鹿。
俺は決してsageたりしない。
819デフォルトの名無しさん:2008/03/28(金) 16:04:25
一つ助けてくれ。

JOGLのデモにあるcgGL_vertex_exampleとruntime_ogl_vertex_fragmentがjogl_cg.dllが見つからないって
UnsatisfiedLinkErrorが出るんだけど利用してるjreにjogl_cg.dllは置いてあるんだけど
-Djava.library.path指定しても解決できない、どうすれば良いか分かる人居る?

JOGLのパッケージ以外に何か必要だったりする?
820デフォルトの名無しさん:2008/03/28(金) 16:07:32
system32に放り込め。
821デフォルトの名無しさん:2008/03/28(金) 18:09:32
>>819
cgのランタイムが必要とかかな・・・?
そのjogl_cg.dllのインポートテーブルを見てみると何かわかるかも
822デフォルトの名無しさん:2008/03/28(金) 21:03:25
最近Javaを勉強し始めた者です。
当方JavaScriptを今までやっており、ちょっとサブルーチンを使う程度で
あとはとにかくつらつらと書き連ねていくようなプログラムの書き方に慣れてしまいました。
まだJava関係の書籍は買っておらず、様々な入門サイトを見て勉強しているのですが、
いちいちメソッドを呼び出し合ったりメソッド毎に細かく処理を分けたりする、
オブジェクト指向の具体的な使い方やメリット等がいまいち理解できません。
自分で適当にメソッドやクラスを分けたりしてオブジェクト指向をしてる気にはなってみても、
「こんなんで良いのだろうか?」と言う感じがしてしまい、
色んな処理を同じメソッドに詰め込んでしまいがちです。
なので、文法の解説ではなくオブジェクト指向の解説をメインにした
参考書があれば買おうと思うのですが、どの書籍が良いのでしょうか?
回答よろしくお願いします。
823デフォルトの名無しさん:2008/03/28(金) 21:21:23
>>822
デザパタ
824デフォルトの名無しさん:2008/03/28(金) 22:11:01
>>822
結城浩という名前を覚えておくと、困った時に助かるかも
825デフォルトの名無しさん:2008/03/28(金) 22:27:08
まあ、片っ端から10冊ぐらい読め。将来を考えたらたいした投資じゃない。
826デフォルトの名無しさん:2008/03/28(金) 23:02:24
>>825
必要ない人には必要ないだろ 勝手に将来を妄想するな

>>824にあるけど、結城さんの本は取り組みやすいから、
デザインパターンの入門にしろ、Javaの入門にしろ、1冊目としておすすめ
827デフォルトの名無しさん:2008/03/28(金) 23:04:19
総称クラスのインスタンスを作成することは出来るでしょうか?

public class TempT <T>{
public T makeT(){
return new T();
}
}
ということをやりたかったのですがコンパイルが通らないようです。
総称クラスの名前だけでもわかれば、
ttp://blog.xole.net/article.php?id=197
で何とかなると思うのですが……。
828デフォルトの名無しさん:2008/03/28(金) 23:09:29
>>826
勧められた本だけ読んで結城先生信者ですかwさすがゆとりですな
829デフォルトの名無しさん:2008/03/28(金) 23:16:03
>>827
できないんだったかな
public T makeT(Factory<T> factory) { return factory.create(); }
みたいにするのが正攻法なんじゃないの
使うときはTに指定する型ごとにFactory<T>をいちいち実装しないといけないけど
830デフォルトの名無しさん:2008/03/28(金) 23:17:25
>>827
ジェネリクスはコンパイル処理。
コンパイル後は、普通のキャストと変数の型に展開されて、情報は残りません。

何がやりたいのか…何かが出来そうで試してるだけなのかな

汎用的に便利なクラスなんてものは、まず作れないと思ったほうが良い。
それをするなら、今の仕組みが便利に判りやすくなるクラスを作りましょう。
831デフォルトの名無しさん:2008/03/28(金) 23:22:26
C#だと「引数無しのコンストラクタを持つ」制約が付けられるからあっさり実現できるんだけどね
832デフォルトの名無しさん:2008/03/28(金) 23:39:55
>>822
>いちいちメソッドを呼び出し合ったりメソッド毎に細かく処理を分けたりする、
>オブジェクト指向の具体的な使い方やメリット等がいまいち理解できません。

オブジェクト指向とか、デザパタとかいう話じゃないだろ。
マーチンファウラーのリファクタリングが指針になるかも。
833827:2008/03/29(土) 00:36:28
>>828-830
早速のお返事、有難うございます。
>何かが出来そうで試してるだけなのかな
正直、半分はそんなところです。
getDeclaredFieldsあたりのリフレクションとcommons.beanutils、commons.dbutilsを組み合わせて、ごく簡単なO/Rマッパが作れないかなと思ったんですがね。
……やっぱ素直にHibernateとかS2Daoを使っておいたほうがいいのか。 ・・・でも大げさすぎるんだよなぁw
834デフォルトの名無しさん:2008/03/29(土) 09:58:12
newInstance使ってキャストって手もあるが
835デフォルトの名無しさん:2008/03/29(土) 10:56:37
いまは
T Class<T>#newInstance()
だからキャスト不要。

例外は捕捉する必要あるけど。


836デフォルトの名無しさん:2008/03/29(土) 12:53:04
どっちみちTからは直接取れないけどな
837827:2008/03/29(土) 15:26:04
>>835
みたいですね。T.newInstance()って書き方もNGみたいです。
残念ですが諦めましょう。
838デフォルトの名無しさん:2008/03/29(土) 15:39:36
こんなのどう?
public class TempT<T>{
 private Class<T> clazz;
 public TempT(T t) {
  clazz = (Class<T>) t.getClass();
 }
 public T create() throws Exception{
  return clazz.newInstance();
 }
}
コンストラクタ引数が無駄でヤな感じ。アイディア求む。
839デフォルトの名無しさん:2008/03/29(土) 15:52:46
Class<T>を引数にした方が誤解を招かないんじゃね
それでも格好悪いけど
840デフォルトの名無しさん:2008/03/29(土) 15:58:57
インスタンスの生成に関してジェネリクスでやろうって方針が無理
可能なのはキャストがいらねってくらいだよ
841デフォルトの名無しさん:2008/03/29(土) 16:41:57
初心者ですみません、質問させてください

変数の型にfloatを使いたいのですが、コンパイル時にエラーが出ます。

精度が落ちている可能性
検出値 double
期待値 float
a=3.6
^

と表示されてます。
本を買って勉強始めたばっかりで、本の通りに書いたと思うのですが、
自力解決出来ません。doubleで書くと上手く行ったのですが、原因が知りたくて。
842デフォルトの名無しさん:2008/03/29(土) 16:46:10
3.6f
843デフォルトの名無しさん:2008/03/29(土) 16:48:50
3.6 は倍精度浮動小数点の double。a は単精度浮動小数点の float。
代入するには精度を落とさなければならないが、それをコンパイラが勝手にやるとバグの元になる。
3.6 の方も float であると明示的に記述すれば良い。

a=3.6f;
844デフォルトの名無しさん:2008/03/29(土) 16:55:19
doubleっていう、「基本があってその倍」な名前のほうが
デフォなのがややこしいな。
845デフォルトの名無しさん:2008/03/29(土) 16:57:16
なるほど、ありがとうございます!

846デフォルトの名無しさん:2008/03/29(土) 19:29:15
質問です。

現在、mainクラスのガベージコレクションを、
多重継承されたインスタンスからコントロールしています。

ただ、Heap領域にアクセスする場合について、
そのコレクションフレームワークからマルチスレッド化させると、
ローカルにremoveしようとしても同期的な排他制御が取れません。
やはりラッパークラスのプリミティブ型は、エレメントのイテレータもhasNext()メソッドもどきで
volatile修飾子のシリアライゼーションをさせるのが絶対条件なのでしょうか。

ちなみに、もしコマンドライン引数によってJava.langのStringBufferまでimportしたとしても、
SetインターフェースのisEmptyメソッドにするとなぜかStackOverflowErrorの例外が発生します。
staticなyield()メソッドを汎用させるため、
throwsで例外ハンドラをコンストラクタなアサーションをしているのですが・・・。

C言語が腐るほど考えたのですが、
バイナリでのファイル操作がなかなかまとまらないため質問した次第ですので、
どうかお答えお願いします。
847デフォルトの名無しさん:2008/03/29(土) 19:46:09
「日本語でおk」ってこういうときに使うの?

Javaで多重継承かー。
848デフォルトの名無しさん:2008/03/29(土) 19:47:33
C言語腐っちゃったよ〜 どうしよ〜
849デフォルトの名無しさん:2008/03/29(土) 20:39:39
Javaっぽい言語のVM実装しているのかねぇw
850デフォルトの名無しさん:2008/03/29(土) 20:58:28
バカが何人釣られるか静観してようかと思ったが
コピペに w とか、もう見てらんない。
851デフォルトの名無しさん:2008/03/29(土) 21:01:24
とりあえず>>846が池沼なのは確定だろ?
852デフォルトの名無しさん:2008/03/29(土) 21:02:31
見てらんない = 結局釣られた
853デフォルトの名無しさん:2008/03/29(土) 21:04:39
前スレあたりのコピペも知らんて、おまいら春休み参入者か?
854デフォルトの名無しさん:2008/03/29(土) 21:08:43
何でこうネタやコピペすら嗅ぎ分けられない恥ずかしい奴多いんだろここ。
855デフォルトの名無しさん:2008/03/29(土) 21:17:09
>>846とかマジ池沼じゃんw
何この春厨wwwww
856827:2008/03/29(土) 22:00:37
>>838
アドバイス有難うございます。確かにヤな感じはするのですが、こうするより仕方ないようですね。

>>839
Class<T>を引数にする、というのは気がつきませんでした。御助言感謝です。

>>840
どーもすいません(苦笑)
857デフォルトの名無しさん:2008/03/30(日) 01:06:30
スレに常時へばりついているってのも、どうかと
858デフォルトの名無しさん:2008/03/30(日) 04:29:15
悔しそうですね。
859デフォルトの名無しさん:2008/03/30(日) 11:03:54
Servlet+JSP+Strutsでアプリケーションを作成しています。

これで出力されたHTMLには余計な空行が出力されます。
(Strutsタグなどの位置により)

なるべくHTMLを小さくしたいので余計な空行やスペースは
削除したいのですが、なにかテクニックはないものでしょうか?

思いつくのはフィルターとか???

よろしくお願いいたします。
860デフォルトの名無しさん:2008/03/30(日) 11:26:37
スーパークラスHogeの拡張クラスHogeA,HogeBが定義してあり
HogeAのカプセル化されたフィールドにα、HogeBのカプセル化されたフィールドにβが定義されてる状態で
Hogeにはアブストラクトのゲッターメソッド、セッターメソッドが定義されています

別のクラスDから
Hoge h = (Hoge)HogeA
or
Hoge h = (Hoge)HogeB

のような形で選択的にHogeを定義しゲッターメソッドから任意のα、βが抽出できるようにしたいのですが
現状うまく行きません

よい方法を教えてください
861デフォルトの名無しさん:2008/03/30(日) 11:31:09
>>859
私の場合ははフィルターを作ってそこを通してデーターが得られるようにしてます
862デフォルトの名無しさん:2008/03/30(日) 11:47:37
>>860
スーパークラスでαとβが宣言されてないからHogeのインスタンスとしている場合にアクセスできないのは当然です。
そのフィールドを使いたい場合はHogeA,HogeBでキャストしてやらなきゃ無理っす。
863デフォルトの名無しさん:2008/03/30(日) 11:49:48
>>861
ありがとうございます。
私もfilterでやってみようと思います。

でもその前に、、、、そのフィルターください!orz

864デフォルトの名無しさん:2008/03/30(日) 11:55:06
>>862
選択的キャストの方法としてどういう方法があるでしょうか
865デフォルトの名無しさん:2008/03/30(日) 12:10:32
>>860
Hoge で定義した get/set メソッド宣言と、α、βの型を教えて欲しい。
866デフォルトの名無しさん:2008/03/30(日) 12:18:32
>863
数100バイトの差は気にしないほうがいい。
携帯コンテンツとかならば、JSPを工夫するか、Servlet内で全部HTMLを書いて小さくするほうがいいかと。
867デフォルトの名無しさん:2008/03/30(日) 12:19:57
>860
HogeにgetParam があったとしたら、
HogeA で getParam からαを取得、HogeBではβを取得
ってのが普通かと。
868>>862:2008/03/30(日) 12:29:27
えらい勘違いしてました。
抽象クラスでgetter/setter宣言してたんですね。
その型が抽象クラスのgetter/setterの戻り値の型の子なら大丈夫です。
869デフォルトの名無しさん:2008/03/30(日) 12:59:04
失礼
うまく行きました
他のことが原因してました
870デフォルトの名無しさん:2008/03/30(日) 17:51:19
JSON-LIBを使おうと思い、
C:\Tomcat 6.0\lib
にjson-lib-2.2.1-jdk15.jarを入れたのですが、
java.lang.NoClassDefFoundErrorが出てしまいます。
C:\Tomcat 6.0\lib下ではクラスパス通らないのでしょうか?
それともjdk16環境下なのにこのJARを入れたのが失敗でしょうか。
871デフォルトの名無しさん:2008/03/30(日) 21:04:39
JDK6ならjavascript使えば良いと思うんだが・・・
872デフォルトの名無しさん:2008/03/31(月) 01:30:58
png画像の画像処理をしたいのですが質問です.

java.awt.image.PixelGraberのgrabPixels()で各ピクセルの情報を配列に取得し,
java.awt.ColorのgetRed()/getGreen()/getBlue()で各ピクセルのRGB値まではとれました.

ここから取得した配列のRGB値を取得したRGB値を元にして計算し
変更したいのですがどのようにすれば良いのでしょうか?
873デフォルトの名無しさん:2008/03/31(月) 01:50:46
どう計算したいのかはお前以外には解らんw
874デフォルトの名無しさん:2008/03/31(月) 02:24:02
どう計算するかは分からないけれど、ImageIO.readでpngをBufferedImageとして読み込んだ方がいろいろ変更の自由がきくよ。
875デフォルトの名無しさん:2008/03/31(月) 02:24:57
あ,計算の話ではなくて

計算後にでた新しいRGB値をつかってpngを作り直したいんです.
日本語が変ですいません.
876デフォルトの名無しさん:2008/03/31(月) 08:54:59
普通にやりたいことを言えよw
例えば元画像をグレースケールにしたいとかさ
877デフォルトの名無しさん:2008/03/31(月) 10:17:07
単純に SSLSocketFactory から SSLSocket 作った場合ってどこの CA 証明書が使われてんの?
コントロールパネルの Java 設定にリストされているやつ?
878デフォルトの名無しさん:2008/03/31(月) 11:41:55
>>158
肉で出来ています。
879デフォルトの名無しさん:2008/03/31(月) 12:18:00
JNDIを使用『しないで』DataSourceを生成する方法を教えてください。
組み込みでH2 Databseを使おうと思ったのですが、アプリケーションサーバのJNDIを使って生成する方法しか検索できませんでした。
一応、↓でなんとか生成できたのですが、本当にこの為だけにCommons DBCPやCommons Poolを使わないとならないのでしょうか?
ttp://wiki.livedoor.jp/syo1976/d/Derby
880デフォルトの名無しさん:2008/03/31(月) 12:26:10
JNDI 使わないってスタンドアロンで使うのか? なら接続しっぱなしにしときゃ良いじゃん。
881デフォルトの名無しさん:2008/03/31(月) 12:36:20
>>879
"Using mock naming contexts for testing"
ttp://weblogs.java.net/blog/simongbrown/archive/2003/11/using_mock_nami.html

JNDI依存のロジックをコンテナ外でテストするためのテクニックだけど、
流用できると思う。
882デフォルトの名無しさん:2008/03/31(月) 12:54:34
超初心者です。入力した整数値を読み込んで、小さいほうの数以上で大きいほうの数以下の全整数を小さいほうから順に
表示するプログラムを作りたいんですが、最後の整数が表示出来ません。アドバイスもらえませんか?作ったコードは下です。

System.out.print("整数1:");
int n = stdIn.nextInt();
System.out.print("整数2:");
int x = stdIn.nextInt();

do {
 if(n >= x)
  System.out.print(x++);
 else if(n <= x)
  System.out.print(n++);

  } while (n != x);
 }
}
883デフォルトの名無しさん:2008/03/31(月) 13:01:39
素直にforでいいんじゃね?
for(int i = n; i <= x; i++){
 System.out.println(i);
}
それとも何かの課題?
884デフォルトの名無しさん:2008/03/31(月) 13:07:56
System.out.print("整数1:");
int n = stdIn.nextInt();
System.out.print("整数2:");
int x = stdIn.nextInt();

do {
 if(n >= x)
  System.out.print(x++);
 else if(n <= x)
  System.out.print(n++);
  } while (n != x);
  System.out.print(n); //これを追加
 }
}
にするとか

明解javaの演習問題だね
885デフォルトの名無しさん:2008/03/31(月) 13:09:22
>>883
for使うと簡単そうなんですが、練習問題を最初からやっていってる最中で
今はifとdoとwhile文のところなんで、一つずつ確実に使い方を覚えるためにもこれらの構文を使ってやりたいのです。
886デフォルトの名無しさん:2008/03/31(月) 13:11:47
>>884
おぉ、出来ました!そうです、明解Javaをやってるんです。
この参考書答えがないので、超初心者な自分にはきついです。
887デフォルトの名無しさん:2008/03/31(月) 13:12:39
>>884はifの条件式も変えないと駄目だわ
888デフォルトの名無しさん:2008/03/31(月) 13:15:42
>>887
(n > x)と(n < x)でいいですかね?
889デフォルトの名無しさん:2008/03/31(月) 13:17:31
おk
890デフォルトの名無しさん:2008/03/31(月) 13:19:57
>>889
ありがとうございます、ずっと考えていたのがやっと解決して先に進めます。
891デフォルトの名無しさん:2008/03/31(月) 13:20:13
ループの前にどちらが大きいかを判断して,
大きい方と小さい方それぞれ別の変数に入れといた方が綺麗に書けるよ
892デフォルトの名無しさん:2008/03/31(月) 13:20:16
ゆとりは不等号を習わないんだって
おそるべしゆとり
893デフォルトの名無しさん:2008/03/31(月) 13:25:50
>>891
ちょっと考えてみます。すみません、ほんとに初心者なもんで。
894デフォルトの名無しさん:2008/03/31(月) 13:38:26
初心者初心者って連呼しすぎうぜえ
895デフォルトの名無しさん:2008/03/31(月) 13:48:22
初心者は何をしても許されるべき
896デフォルトの名無しさん:2008/03/31(月) 13:50:46
本人乙
897デフォルトの名無しさん:2008/03/31(月) 13:57:01
ワロタ
898デフォルトの名無しさん:2008/03/31(月) 15:28:46
じゃあ俺も初心者を名乗るから、何をしても許せ
899デフォルトの名無しさん:2008/03/31(月) 15:49:26
おれもれも
900デフォルトの名無しさん:2008/03/31(月) 15:51:31
「初心者だから仕方ないじゃないですか!
日本国では初心者が手厚く保護されているのです。
私は一生初心者であることに決めました。
初心者なんで気を遣って下さい!大目に見て下さい!」

そしてJavaに合格すると「なぁに、初心な言語は山ほどあるさ!」と。
901デフォルトの名無しさん:2008/03/31(月) 15:55:37
次スレから初心者なしにしようぜ
【初心者】Java質問・相談スレッドxxx【立入禁止】
902デフォルトの名無しさん:2008/03/31(月) 15:59:43
ここはひどいインターネッツですね
903デフォルトの名無しさん:2008/03/31(月) 16:00:45
それは人来なくなるだろw
でも自分で初心者を名乗るほどの初心者はくだすれに行った方が良いよな。
904デフォルトの名無しさん:2008/03/31(月) 16:05:03
初心者無視スレ時代も知らん連中が集まってんのか。
905デフォルトの名無しさん:2008/03/31(月) 16:06:18
うん。
906デフォルトの名無しさん:2008/03/31(月) 16:17:20
>>782
デバッグ版のJDKだと -XX:+PrintOptoAssembly オプション付きで起動すれば
出力できるらしいって http://d.hatena.ne.jp/kkawa/20080330 に書いてある。
907879:2008/03/31(月) 17:23:10
>>880
いや、まったくそのとおりなんですが、Commons DbUtilsがDataSourceないと使えんとですよ……。

>>881
ありがとうございます。が、これはこれでMockObjectに依存しているのですね。
同じ依存するならcommonsで統一しましょう。
……>>880の言うとおり、一つコネクション取って繋がりっぱなしでいいんですけどねぇ。
何でこんなコトしてるんだろ? Webで使うことしか考えてないのかな>Commons DbUtils
908デフォルトの名無しさん:2008/03/31(月) 17:46:03
>>907
単一スレッドだけなら接続済みの Connection を 1 コ だけ持つ DataSource クラス作れば良いんでねーの。
必要なメソッド数なんて 10 もないでしょ。あ、close() をゴマかさにゃいかんか。

DbUtils って使ったことないけど、DataSource で受け渡したらトランザクションスコープもクソも
なくなるんだがそんなウンコチンチンな作りなのかな。どっかのプロジェクトで見たクソフレームワークみたいだな。
909デフォルトの名無しさん:2008/03/31(月) 17:48:49
ここで908謹製の最強素敵フレームワークへのリンク
910デフォルトの名無しさん:2008/03/31(月) 18:26:27
>>909
前世紀の終わりに作った奴は発想も方向性も今の Spring Framework とかなり似ている。
まぁまだフレームワークという言葉自体なかったし、周囲も OO 設計への理解度が皆無だったし。
他で作ってた、場当たり的な拡張で肥大化したクラスライブラリのようなものの方が 「多機能」
として受けが良かったのは悲しかった。

同じ頃にアプレット使って今の Ajax と同じことを提案してたよ。使われなかったけど。あれは特許も
提案したんだけどなぁ。あらためて思い出すと相当先行ってたな俺。
911879:2008/03/31(月) 18:32:37
>>908
……申し訳ない。大勘違い。
<font size="+3">Commons DbUtilsでDataSourceは必須ではありません</font>
……googleセンセイで引いてくる例がことごとくDataSourceを使ってたもんだから完全に勘違いしてました。

以後メモ。
Commons DbUtilsでDataSourceを使わずにSQLを発行するのは、単にQueryRunnerのコンストラクタを引数なしで呼べばいいだけ。
その後、queryメソッドの第一引数にConnectionを指定すればOK。
Webで引ける例はQueryRunnerのコンストラクタにDataSourceをほとんど必ず指定しているが、DataSourceがないとQueryRunner=Commons DbUtilsが使えないわけではない。

以上、同じ間違いを繰り返す人が出ないことを祈りつつ恥を晒します(涙)
912デフォルトの名無しさん:2008/03/31(月) 18:34:33
受けが良かったのは開発者じゃなくて上や営業向けにね。
913デフォルトの名無しさん:2008/03/31(月) 20:57:05
ajaxなんてだれでも考えつく昔からある方法だろ。
単に最近になってウケただけ。
914デフォルトの名無しさん:2008/03/31(月) 21:25:52
IE でまさに innerHTML やデータバインディングが実装された 4.0 の頃の話してんだが。
どこの昔からある方法だよ。
915デフォルトの名無しさん:2008/04/01(火) 01:42:12
TestClass var = new TestClass();
TestInterface test = (TestInterface)var;
と言うふうにキャストすると、
TestClassがTestInterfaceをimplementsしていなくてもコンパイルが通りました。
キャストすればどんなインターフェイスにも代入できるのかと思ったんですが、
Stringはキャストすることができませんでした。
特定のInterfaceにキャスト可能な条件というのは何なんでしょうか?
916デフォルトの名無しさん:2008/04/01(火) 01:54:18
コンパイルは通らないと思うが。本当に extends や implements してないのか?
917915:2008/04/01(火) 01:59:09
コンパイルは通ったけど、実行したらClassCastExceptionが出ました。
ダメですね。。。
918デフォルトの名無しさん:2008/04/01(火) 02:23:02
すまん勘違いしていた。

public class TestClass2 extends TestClass implements TestInterface{ ... }

というクラスがあるかもしれないから、キャスト時に元の型にそのインターフェースが implements
されていなくてもコンパイルは通る (型チェックは実行時にしかできない)。

TestClass var = new TestClass2();
TestInterface test = (TestInterface)var;

TestClass が final 宣言されていれば TestClass2 のようなサブクラスの存在は
ありえないのでコンパイル段階でエラーになる。

String のキャストに失敗するのは、Java では多重継承ができないから TestClass の
サブクラスであり String のサブクラスでもあるクラスというのはありえないから。
919デフォルトの名無しさん:2008/04/01(火) 19:23:08
Java で作った PublicKey, PrivateKey を KeyStore で保存したいんだけど、
Certificate が必要なようだけどこれってどうやって作るの?
920デフォルトの名無しさん:2008/04/02(水) 08:16:19

ユーザ認証を求められるwebサイトで、認証後の内容
つまりログイン状態後にアクセス可能になるコンテンツに、
javaプログラムでアクセスするためには、どういう方法をとればよいのでしょうか?


端的に言って、mixi のことなんですが....

javaプログラム側でどのような方法をとれば、mixiのログイン状態を実現できるのか、
知りたいのです。

921デフォルトの名無しさん:2008/04/02(水) 08:43:50
>>920
javaプログラムでログインすればいいです。
922デフォルトの名無しさん:2008/04/02(水) 09:22:17
>>920
HTTP通信のライブラリを使うと楽。
Apache HttpComponentsとかHttpUnitとかお薦め。
923デフォルトの名無しさん:2008/04/02(水) 11:09:49
>>921
そのやり方僕にも教えて

ログイン時のパラメーターをどうやってJAVAからWEBサイト側に渡すのか
方法が分からん
924デフォルトの名無しさん:2008/04/02(水) 11:18:15
URL と URLConnection で GET/POST リクエスト送る方法調べろ。
925デフォルトの名無しさん:2008/04/02(水) 11:26:05
それだけなんだ
926デフォルトの名無しさん:2008/04/02(水) 13:40:31
>>923
まずHTTPから勉強しなよ
927デフォルトの名無しさん:2008/04/02(水) 14:44:22
Struts+JSPで親画面からwindows.openで子画面をポップアップで開き、子画面で選択した内容を親画面に戻しています。
親画面が縦長なので画面が一番上に戻ってしまいます。
一番上に戻らないようにしたいのですが、どうすれば良いでしょうか?
928デフォルトの名無しさん:2008/04/02(水) 14:48:12
JavaScript で入力内容を親画面に設定しれ。リクエスト出すな。
929デフォルトの名無しさん:2008/04/02(水) 15:37:59
入力した数字が素数か調べるにはどうすればいいですか?
930デフォルトの名無しさん:2008/04/02(水) 15:42:51
>>929
その数字の約数を調べればいい
約数が1とその数字自身しかなければ素数
931デフォルトの名無しさん:2008/04/02(水) 17:11:15
>>920
まずは Firefox と LiveHTTPHeaders を入れて、どんなことが起きてい
るのか調べるんだ。その上で、どんなAPIを使えば楽ができるのかを考える。
932デフォルトの名無しさん:2008/04/02(水) 17:13:10
Eclipse の TCP/IP モニタで十分じゃん。
933デフォルトの名無しさん:2008/04/02(水) 19:13:01
プログラミング初心者ですが、質問があります。
eclipseで以下のようなプログラムを書いて、それをjar形式でエクスポート
しました。
しかし、そのjarファイルをクリックして開こうとすると「could not find main class」
と出てききます。どうすればいいのでしょうか?
誰かわかる方助けてくださいお願いします。

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;

import javax.imageio.ImageIO;
import javax.swing.JFrame;


934デフォルトの名無しさん:2008/04/02(水) 19:13:57
public class GameTestMain {

/**
* @param args
*/
JFrame frame1;
BufferStrategy bstrategy;
int count = 0;
BufferedImage backimage1, backimage2;

GameTestMain() {
frame1 = new JFrame("ノベルゲーム");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setBackground(Color.WHITE);
frame1.setResizable(false);
935デフォルトの名無しさん:2008/04/02(水) 19:15:13
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
GameTestMain gtm = new GameTestMain();
}


class MyTimerTask extends TimerTask {
public void run() {
Graphics g = bstrategy.getDrawGraphics();
if (bstrategy.contentsLost() == false) {
Insets insets = frame1.getInsets();
g.translate(insets.left, insets.top);

g.drawImage(backimage1, 0, 0, frame1);

g.setFont(new Font("Selif", Font.PLAIN, 40));
drawStringCenter("秒速1キロメートル", 100, g);


bstrategy.show();
g.dispose();
}
}
}

936デフォルトの名無しさん:2008/04/02(水) 19:16:07
void drawStringCenter(String str, int y,Graphics g) {
int fw = frame1.getWidth() / 2;
FontMetrics fm = g.getFontMetrics();
int strw = fm.stringWidth(str) / 2;
g.drawString(str, fw-strw, y);
}

}
937デフォルトの名無しさん:2008/04/02(水) 19:17:17
マニフェスト Main-Class でググレ
938デフォルトの名無しさん:2008/04/02(水) 19:17:23
エクスポートするときにメインクラス指定した?
939デフォルトの名無しさん:2008/04/02(水) 19:22:08
>>938
GameTestMainってのを選択しました。
940デフォルトの名無しさん:2008/04/02(水) 19:30:00
>>933
jarを展開してMETA-INF/MANIFEST.MFファイルがあるか確認
その中にMain-Class: GameTestMainと書かれているか確認
必要なclassファイル (GameTestMain.classとかMyTimerTask.classとか) が全部入ってるか確認
941デフォルトの名無しさん:2008/04/02(水) 19:53:56
それ以前にクラスパス通ってる?
942デフォルトの名無しさん:2008/04/02(水) 20:42:01
そもそもデフォルトパッケージで JAR 起動できたんだっけか?
943デフォルトの名無しさん:2008/04/02(水) 20:46:12
できるよー
944デフォルトの名無しさん:2008/04/02(水) 22:53:45
>>932
どうやるんだ?
945デフォルトの名無しさん:2008/04/02(水) 22:59:32
[Window]-[Show View]-[Other...]-[Debug]-[TCP/IP Monitor]
右上の ▽ の Properties... で実際の接続先を指定。
ブラウザのプロキシ設定で localhst:<local monitor port>
946デフォルトの名無しさん:2008/04/03(木) 02:27:30
一つお伺いしたいのですが,java複数枚のjpegをmjpeg or wmv を作りたいのですが
どの様にすればよいのでしょうか?
947デフォルトの名無しさん:2008/04/03(木) 02:38:51
java複数枚のjpegってなんだ?をが2つあるし
948デフォルトの名無しさん:2008/04/03(木) 02:57:03
>>946
標準APIではメソッド一発で、みたいな便利なものはなさそうだから、
フレームになるjpegデータを読み込んで欲しい動画形式に従ってファイルに書き出していくしかなさそう。
標準でなければ動画を扱うライブラリとかでありそうだけど。
949デフォルトの名無しさん:2008/04/03(木) 09:06:56
JMFってMotionJPEG対応してなかったっけ?
950デフォルトの名無しさん:2008/04/03(木) 17:31:08
チャット作るのに JMS 使うのって鯵捌くのに斧振り回すみたいなもんかね?
951デフォルトの名無しさん:2008/04/03(木) 22:19:06
文字列にそれまでと違う文字が出てくるindexってとれますか?
1111223111だったら4が取得できるといった感じの
952デフォルトの名無しさん:2008/04/03(木) 22:27:52
>951
配列に展開してfor文でまわせばいいじゃん・・・
953デフォルトの名無しさん:2008/04/03(木) 22:36:47
次すれから初心者出入禁止な
954デフォルトの名無しさん:2008/04/03(木) 22:52:55
超初心者スレもあるのかな?
とりあえず、質問内容を理解できる日本語文が読みたいよ。
955デフォルトの名無しさん:2008/04/03(木) 23:13:14
【初心者以前】Java質問隔離スレ【エスパー募集】とか?
956デフォルトの名無しさん:2008/04/03(木) 23:27:59
くだすれでいんじゃね?
957デフォルトの名無しさん:2008/04/04(金) 00:13:20
Javaから、Windows上のフォルダの書込権限を調べることは可能でしょうか?

Javaは1.4、Windowsは2000もしくはXPが対象です。
958デフォルトの名無しさん:2008/04/04(金) 00:34:49
>>957
File.canWrite()

959デフォルトの名無しさん:2008/04/04(金) 01:06:14
>>958
ありがとうございます。
1週間以上探しても見つからず、もはや不可能なのかと諦めかけていました。
960デフォルトの名無しさん:2008/04/04(金) 01:15:01
>>951
String s = "1111223111";
String regex="(.)\\1*([^\\\\1])";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
if(m.find()) {
int i = m.group(0).length() - 1;
System.out.println(m.group(0));
System.out.println("index is " + i);
}
できたどー
961デフォルトの名無しさん:2008/04/04(金) 04:03:24
どうやったらこれ探すのに1週間以上かかるんだw
962960:2008/04/04(金) 06:25:46
String s = "1111223111";
String regex="(.)\\1+(.)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
if(m.find())
if(!m.group(1).equals(m.group(2))) {
int i = m.group(0).length() - 1;
System.out.println(m.group(0));
System.out.println("index is " + i);
}
間違えてたどー
963デフォルトの名無しさん:2008/04/04(金) 19:04:04
>>962
s="12"だとindex=1が出てくれなくないかい?
素直に、
String s = "1111223111";
int i = s.replaceFirst("(.)\\1*", "").length();
if (i > 0) System.out.println(s.length() - i);
とか。
964デフォルトの名無しさん:2008/04/04(金) 19:11:46
正規表現や String インスタンス作るだけ無駄。
ループでやれ (無駄コードネタじゃないよな?)
965963:2008/04/04(金) 19:18:18
自分のはもちろん全然素直じゃないネタコード。
>>962を見て思いついただけw
966デフォルトの名無しさん:2008/04/04(金) 21:27:41
>>958
それだと「読み取り専用」のチェックしか調べられないだろ

要件は書込権限を調べることだぞ?
967デフォルトの名無しさん:2008/04/04(金) 21:41:46
昔はこのメジャーリーグのサイトの動画を見れてたのに急に見れなくなりました。
http://mlb.mlb.com/mlb/homepage/narrowband.jsp
新しいウィンドウで開くとオブジェクトを指定してくださいって表示されるんだけど
誰か分かりませんか?
968デフォルトの名無しさん:2008/04/04(金) 21:48:19
>>967
エイプリルフールはもう終わったよ?
969デフォルトの名無しさん:2008/04/04(金) 21:53:51
>>967
オブジェクトを指定してください
970sage:2008/04/05(土) 16:43:36
971デフォルトの名無しさん:2008/04/05(土) 16:45:39
今、適当に計算するプログラムを組んでるのですが、たまに結果がおかしくなることがあります。
例えば、10-9.9をすると0.09999999999999964になりますし、
1.1*1.1をすると1.2100000000000002となってしまいます。
これはなぜでしょうか?
972デフォルトの名無しさん:2008/04/05(土) 17:09:11
質問です。

基本情報技術者のjava問題が大体解けるくらいのレベルまで達するには、
毎日4時間、本気で勉強したとして何日程かかるでしょうか。

javaは全くわかりませんが、COBOLは全商情報処理検定プログラミング部門の一級に合格する程度です。
アルゴリズムは理解しているつもりです。

スレの趣旨とは違うと思いますが、答えてもらえないでしょうか。
プログラミング言語は学ぶ上で個人差が激しい事もわかっています。
皆さんの思うところを教えてください。
お願いします。



973デフォルトの名無しさん:2008/04/05(土) 17:10:51
早い人なら2日もあれば大丈夫だけど
974デフォルトの名無しさん:2008/04/05(土) 17:12:54
wwwwwwww
975デフォルトの名無しさん:2008/04/05(土) 17:40:38
GUIに関する質問です。
画像エディタなどにあるような、左と上に表示する「ルーラー」って
AWTかSWINGでありますか?

自作するしかないんでしょうか
976デフォルトの名無しさん:2008/04/05(土) 17:42:45
自作だね
そんなに難しいものじゃないから30分もあれば作れる
977971:2008/04/05(土) 17:43:50
質問に答えてください。
978デフォルトの名無しさん:2008/04/05(土) 17:44:02
>>971
0.1とかは、浮動小数点数に対応する値が無いので近似値になる
(0.1を二進数に変換してみると分かりやすい。無限小数になっちゃう)
ちょっと遅くなるけど、BigDecimal使うとか
979971:2008/04/05(土) 17:44:37
>>978
うはwwwwwwwwwwwwww
バカだwwwwwwwwwwwwwwwwwwwwwwwwwwww
980デフォルトの名無しさん:2008/04/05(土) 17:46:08
971は何がしたいの?
981971:2008/04/05(土) 17:46:32
お前らキチガイwwwwwwww
982デフォルトの名無しさん:2008/04/05(土) 17:49:13
BigDecimal使え
スペルあってたっけか
983デフォルトの名無しさん:2008/04/05(土) 17:49:55
その計算の原因つかんで修正するまでは30秒で出来るな
984デフォルトの名無しさん:2008/04/05(土) 17:52:38
次スレ立ててきま
985971:2008/04/05(土) 17:53:08
立てるなカスwwwwwwww
986デフォルトの名無しさん:2008/04/05(土) 17:53:53
よろしく
987971:2008/04/05(土) 17:54:04
よろしく
988デフォルトの名無しさん:2008/04/05(土) 18:01:05
【初心者】Java質問・相談スレッド114【歓迎】
ttp://pc11.2ch.net/test/read.cgi/tech/1207385614/
989971:2008/04/05(土) 18:01:27
キチガイ乙
990デフォルトの名無しさん:2008/04/05(土) 18:04:59
971いらない
991971:2008/04/05(土) 18:20:50
俺は〜♪天才〜♪
天才すぎ〜て〜♪こーまっちゃう〜〜♪
992デフォルトの名無しさん:2008/04/05(土) 18:31:37
じゃあなんで質問するんだよw
993971:2008/04/05(土) 18:32:27
何の話?
994デフォルトの名無しさん:2008/04/05(土) 18:34:07
995971:2008/04/05(土) 18:34:41
それが何?
996デフォルトの名無しさん:2008/04/05(土) 18:39:49
残念なことに、このスレは真性キチガイに気に入られてしまいました
997971:2008/04/05(土) 18:43:51
キチガイ乙wwwwwww
俺天才杉ワロタwwwwwwwwwww
998デフォルトの名無しさん:2008/04/05(土) 18:52:10
うめ
999デフォルトの名無しさん:2008/04/05(土) 18:55:37
ume
1000971:2008/04/05(土) 18:55:54
1000げと

さすが俺天才wwwwwwwwwwww
キチガイにはどう考えても無理な芸当だなwwwwwwwwww
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。