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

このエントリーをはてなブックマークに追加
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質問・相談スレッド108【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1194442749/

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

次スレは>>980あたりで。
2デフォルトの名無しさん:2007/11/25(日) 12:44:50
Jarを作ろうとしてますが、マニフェストに、javaコマンドへのオプションをどう指定したらいいか分からない
ぐぐって仕様っぽいのを見たけど書いてないし、ひょっとしてないのかな?
-Xmx512Mを指定したいんだけどどう書いたらいいかご存じだったら教えて下さい
3デフォルトの名無しさん:2007/11/25(日) 12:48:49
>>2
無理。
Jarのマニフェストファイルに記述された内容は【Runtime起動後、アプリ軌道前に適用される】んだから、渡せる方がおかしいだろ?
起動用のbatファイルを提供するのが一般的。
どうしてもダメならばJava内でRuntime.exec() あたりを使い、別のVMを起動する(この時に-Xmx512M等を指定する)
4デフォルトの名無しさん:2007/11/25(日) 12:49:21
携帯電話のアプリを作りたいのですが何を用意すればいいですか?
5デフォルトの名無しさん:2007/11/25(日) 13:17:46
作りたいキャリアのSDK持って来る。
6デフォルトの名無しさん:2007/11/25(日) 14:07:39
>>3
Thx

>どうしてもダメならばJava内でRuntime.exec() あたりを使い、別のVMを起動する(この時に-Xmx512M等を指定する)

これでいってみます。

>渡せる方がおかしいだろ?

そうかも知れませんが、(Winでは)ダブルクリックで起動出来ることを謳っているわけですし
内部的に上記のようなことをしてくれる仕様があってももよさげに感じます
7デフォルトの名無しさん:2007/11/25(日) 14:43:55
>>6
ダブルクリックで起動は、Windowsの機能であるから、
その機能で補完するのが筋ではないか?
8デフォルトの名無しさん:2007/11/25(日) 14:47:33
右クリック開くのほうが多用する
9デフォルトの名無しさん:2007/11/25(日) 15:01:16
Java3Dを勉強しはじめたんですが、アニメーションをしてみたいとAlphaについてみてみたら
周期的な動作でなんか違うと思いスレッドを用いたアニメーションしたいなと考えているのですが
そこらへん解説してるサイトとかありませんか?
それらしい単語でググっても見つからなくて困ってます。
10デフォルトの名無しさん:2007/11/25(日) 15:27:17
>>6
winなら、exewrapを使うとか
VMの引数も指定できたはず
11デフォルトの名無しさん:2007/11/25(日) 15:28:37
>>9
Swing アニメーション でググれ
12デフォルトの名無しさん:2007/11/25(日) 15:45:48
windowsしか触ったことが無いんだけど他のOS―例えばLinuxは
ダブルクリックで起動できないの?逐一java Hoge?それともbatファイルみたいなの書くのかな。
13デフォルトの名無しさん:2007/11/25(日) 15:49:30
Linuxは知らんが、macはjarダブルクリックで起動できるね
14デフォルトの名無しさん:2007/11/25(日) 15:55:47
>>12
CUIからどうやってダブルクリックするの?
15デフォルトの名無しさん:2007/11/25(日) 15:58:01
>>14 だれも CUI の話なんてしてないわけだが。
16デフォルトの名無しさん:2007/11/25(日) 16:04:56
「ダブルクリックで起動」ってのはOSのインターフェイスなわけで、そこに起動引数を追加したりするならばOS側に依存する(exeなりbatなり)って話でしょ。
CUIのようにダブルクリックというインターフェイスがない事もあるわけで、>7の言うようにOSの機能で補完するのが筋ってこと
17デフォルトの名無しさん:2007/11/25(日) 16:05:12
>>14,15
かまととぶった嫌味ったらしいレスにわけだが反論・・・・!・!?
この何百回繰り返されたかも分からないやりとり・・!!
お前らこそム板住人の・・鏡・・だ!!
18デフォルトの名無しさん:2007/11/25(日) 16:09:45
マウス使える CUI があるのも知らんようだが。
19デフォルトの名無しさん:2007/11/25(日) 16:13:31
取れてない揚げ足取りほど寒いものは無いな
20デフォルトの名無しさん:2007/11/25(日) 16:14:53
m9(^Д^)プギャー
21デフォルトの名無しさん:2007/11/25(日) 16:21:58
問題はOS側の話かJava側の話かも切り分けられない連中が増えたという事だ
22デフォルトの名無しさん:2007/11/25(日) 16:52:20
×(Winでは)
○ファイルの関連付けが出来るGUIを持つOSでは
23デフォルトの名無しさん:2007/11/25(日) 16:57:39
ジェネリックに関する質問です。
static <T> T as( Object o ) {
    return (T) o;
}
というコードの動きがよく解りません。
Tという総称型にキャストし、<T>が戻り値の型となることは解るんですが、<T>の後ろのTが何を意味しているんでしょうか?
24デフォルトの名無しさん:2007/11/25(日) 17:09:14
>>23 メソッドの戻り値型だろ。
25デフォルトの名無しさん:2007/11/25(日) 17:10:35
<T>の後ろのTはそのメソッドの戻り値の型で<T>はメソッドのみ総称型を使うときのおまじない。
26デフォルトの名無しさん:2007/11/25(日) 17:14:43
テキストファイルのInputStreamを入力として受け取って、
a行b列から、c行d列までの文字列を読み取る処理をしたいんです。

readLine()とread()を使って実装するしかないでしょうか…?
よろしくお願いします。
27デフォルトの名無しさん:2007/11/25(日) 17:16:45
>>25
逆でしたか・・orz
<T>がどんなおまじないなのかが知りたいんですけど、教えていただけませんか?
28デフォルトの名無しさん:2007/11/25(日) 17:21:08
<T> は、Tが総称型であることをあらわしている

単に
static T as( Object o ) { 
    return (T) o; 

って書いたら、T が何のことかわからんだろ
クラス T が見つかりませんってエラーになる
29デフォルトの名無しさん:2007/11/25(日) 17:21:41
>>26
Q. 標準API で一番楽な方法は?
A. BufferedReader.readLine() 使え

Q. 行文字列作るオーバーヘッドが気になります
A. FileChannel でバッファに読み込んで先頭から改行の数数えれ
30デフォルトの名無しさん:2007/11/25(日) 17:39:25
SQLデータベースについての質問なのですがjava.sql.Connectionのインスタンスで
データベースに接続しますよね?そのConnectionのインスタンスでStatement
のインスタンスを作るわけですが、これに使用限度あります?
(例えば一度Statementインスタンス作ってから同じインスタンスで2度execute
メソッド実行するとそのインスタンスは無効になるとか・・・)
31デフォルトの名無しさん:2007/11/25(日) 17:42:33
>>30
closeするまでは有効じゃね?
とはいっても一般的にはトランザクション単位で破棄して作り直すか、その辺はフレームワークに任せてしまうだろ
32デフォルトの名無しさん:2007/11/25(日) 17:44:17
>>30
128 回以上実行すると 1 回例外になっただけでゲームオーバーになるから注意しろ。
33デフォルトの名無しさん:2007/11/25(日) 17:52:22
>>31-32 通常の使用では無問題って事ですね。どうもありがとうです。
34デフォルトの名無しさん:2007/11/25(日) 18:00:13
>>29
ありがとうございます。FileChannnelで実装してみようと思います。
しかしやはり改行を数えるしかないのですね…
35デフォルトの名無しさん:2007/11/25(日) 18:03:27
LineNumberReaderを使えば内部でカウントするだろ?
36デフォルトの名無しさん:2007/11/25(日) 18:08:20
改行数判定しなきゃいけないのは変わらんのでは。
37デフォルトの名無しさん:2007/11/25(日) 18:34:43
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>think a style :: 8.5</title>
<link rel="stylesheet" href="script/css.css" type="text/css">
<script src="script/java2.js" type="text/javascript"></script>
</head>

<body onLoad="MM_preloadImages('image/bbs_ura.gif','image/about_ura.gif','image/top_ura.gif','image/bookmark_ura.gif')">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="417" align="center" valign="top" bgcolor="#EFEFEF"><img src="image/diary_top_aug.gif" alt="AUGUST" width="417" height="80"><br>
<table width="384" border="0" cellpadding="2" cellspacing="0">

このソースってどうなんですかね。古いページのソースなんですが・・・。
ばれると嫌なので所どろ削ってありますけど何かあるでしょうか?
38デフォルトの名無しさん:2007/11/25(日) 18:35:52
>>37 >1 嫁
39デフォルトの名無しさん:2007/11/25(日) 18:35:58
すっげぇスパイコードだな。
40デフォルトの名無しさん:2007/11/25(日) 18:36:54
>>37
Javaと何か関係があるのか?
41デフォルトの名無しさん:2007/11/25(日) 18:46:29
言語はhtmlなのかな?
javaをかじった人が作ったのかどうかがよく分からないんですけど。
42デフォルトの名無しさん:2007/11/25(日) 19:01:37
>>37
どうなんだ?って何を突っ込んでもらいたんだ
43デフォルトの名無しさん:2007/11/25(日) 19:11:55
HTML を見せて書いた人間をプロファイルしてみせろと言うことか?
44デフォルトの名無しさん:2007/11/25(日) 19:23:38
>>37
htmlからどうやってjavaするの?
45デフォルトの名無しさん:2007/11/25(日) 19:39:16
きっとjavascript
46デフォルトの名無しさん:2007/11/25(日) 20:21:29
JavaBeanを標準機能でXMLに落とすことが出来ると聞いたのですが
どうすれが出来るでしょうか。
47デフォルトの名無しさん:2007/11/25(日) 20:23:17
java.beans.XMLEncoder かな
48デフォルトの名無しさん:2007/11/25(日) 20:29:39
enumでエラーになるバグは直った?
49デフォルトの名無しさん:2007/11/25(日) 22:09:37
クラスmain内で、
クラスAをインスタンス化して、 aa = new A();
クラスAのインスタンスを引数にクラスBのメソッドinBを呼び出し、 B.inb(aa);
クラスBのメソッドinb内でクラスAの変数int hoge[i][j];を
A.hoge[i][j]のように使うと.シンボルが解決できないとエラーが出ます。
クラスAの変数int ohen;をA.ohenとするとエラーがでません。
なぜこうなるか教えてください。
50デフォルトの名無しさん:2007/11/25(日) 22:12:24
C言語のgetpass()みたいに、標準入力に入力したパスワードをechoしないで受け取ることってできますか?
apidocで探しても、getpassと同じような機能のメソッドを持つクラスが見当たりません。
51デフォルトの名無しさん:2007/11/25(日) 22:18:46
できます
52デフォルトの名無しさん:2007/11/25(日) 22:24:20
>>49
そのA.hoge[i][j]は
クラス変数ですか?
それともインスタンス変数ですか?

A.hoge[i][j]でOKなら前者
aa.hoge[i][j]でNGなので前者w
A.ohenでも同じかな?
5349:2007/11/25(日) 22:24:51
すみませんA.hoge[i][j]じゃなくてaa.hoge[i][j]。
A.ohenじゃなくてaa.ohenでした。
54デフォルトの名無しさん:2007/11/25(日) 22:35:03
>49
ソース示せ
解決できない理由はスペルミスからアクセス修飾子まで色々ある
Aの変数int hoge[][] の部分だけでもコピペしてくれ。
ついでに言えば、int[][] hoge と書こうな
55デフォルトの名無しさん:2007/11/25(日) 22:50:00
>>50
java.io.Console#readPassword
56デフォルトの名無しさん:2007/11/25(日) 22:55:16
そんなんあったかと思ったら 6.0 か。
主要 AS で 6.0 対応してるのってもうあんのかな。
57デフォルトの名無しさん:2007/11/25(日) 22:59:00
readPasswordは初めて知った
問題は7への移行タイミングだな、5と6はそこまで大きく変らないが7でまた大幅に変るらしい

ASってアプリケーションサーバーの事か?
5849:2007/11/25(日) 23:46:40
>>52,>>54
部分的に抜き出したものです。

class A{
A(){
int[][] hoge = {{ 0,0}, {-12, -15}, { -1, -3} };
int ohen = 1;
}
}

class B{
static int inB(A aa){
int ae = aa.hoge[1][1]; // aa.hogeをA.hogeにしてもエラー
int ao = aa.ohen; // 同様
return ae;
}
}

class Main{
static void main(){
int b;
A aa = new A();
b = B.inB(aa);
System.out.println(b);
}
}

コンパイルできませんでした。シンボルesbd1、ohenが解決できません。
初歩的なことが分かってなくてエラー出してる気がしますが、よろしくお願いします。
59デフォルトの名無しさん:2007/11/25(日) 23:50:27
>>58
最初にローカル変数・インスタンス変数・クラス変数の違いを勉強してください

てか、クラスの基礎の部分すっとばしいてコンパイルできねぇじゃねえよw
60デフォルトの名無しさん:2007/11/25(日) 23:51:02
>>58
Aクラスのコンストラクタで何をかいてるの
入門書にあるクラスの章から勉強しなおしっ
61デフォルトの名無しさん:2007/11/26(月) 00:05:21
ひどいな
6249:2007/11/26(月) 00:13:20
勉強してきます。
ありがとうございました。
63デフォルトの名無しさん:2007/11/26(月) 00:15:50
ソース自体を出力するにはどうしたらいい?
当たり前だが↓みたいなのはダメだった

class test1{
public static void main(String args[]){
System.out.println("class test1{
public static void main(String args[]){
System.out.println("Hello World!");
}
}");
}
}
64デフォルトの名無しさん:2007/11/26(月) 00:20:59
"class test1{"+
"public static void main(String args[]){"+…
みたいに繋げば
65デフォルトの名無しさん:2007/11/26(月) 00:21:38
>>63
ソースファイルをFileReaderで読むくらいじゃね?
66デフォルトの名無しさん:2007/11/26(月) 00:23:13
変数宣言でinterfaceを型に指定したとき、変数に収まる物の実体っていうのは
何になるんでしょうか?インターフェイスのインスタンス?

インターフェイスのインスタンスを引数に持つメソッドがあったりするんだけど
そのインスタンスを渡されてどういう用途にするのかわからない…
これが委譲ってこと?
67デフォルトの名無しさん:2007/11/26(月) 00:31:45
>>66
一言で言えば、変数の型は抽象的な型でおkという事
山田さんってインスタンスは、日本人型でもOKだし、人間型でもOK、でも猫型には入らない

インターフェイスはインスタンスを生成できない
でも、型としては有効。
ただそれだけ。

インターフェイス型を引数に持つってことは、インターフェイスで定義されたことを満たしていればどんな変数でもOKという事だ。
引数がListであれば、ArrayListのインスタンスを渡しても、LinkedListのインスタンスを渡しても動作が保証される。
だが、ArrayList型を引数として指定されていると、LinkedListは渡せない。
68デフォルトの名無しさん:2007/11/26(月) 00:43:14
>>63
test1.class と test1.java を同じディレクトリに置いておいて
Reader in = new InputStreamReader(test1.class.getResourceAsStream(test1.class.getPackage().getName() + "/test1.java"));
69デフォルトの名無しさん:2007/11/26(月) 00:57:16
>>66
型というのは、のぞき窓のようなもの。実体は生成されたときのまま。
型に入れられた実体は、型の部分だけ見えるようになっている。

委譲というのは、継承ではなく、求める機能を持つ実体を、メンバとして保持し、
必要に応じて、それを参照するようにメソッドを実装すること。
二度手間のように思えるかもしれないが、継承では得られない利点があるため、
広く利用されている手法。
70デフォルトの名無しさん:2007/11/26(月) 01:07:55
>>67
>>69
ありがとうございます。ずいぶん視界が開けた感じがしました。

メソッドの引数にinterfaceがある場合、それを受けたインスタンスには
そのinterfaceの実装がある、ということになりますか?
71デフォルトの名無しさん:2007/11/26(月) 01:35:46
>>70
メソッドの引数にあるインターフェイスとクラスの違う点は無い。(通常は無いはず。ごめんよ)
どちらも、その実装か、それ自身もしくは継承された"クラスの実体"を求めている。

メソッド実装側で仕様として決められて、そのとおり実装されている場合は、
引数で指定された型のサブクラスにキャストされ、それらのメンバが利用されることもある。
72デフォルトの名無しさん:2007/11/26(月) 02:03:56
73デフォルトの名無しさん:2007/11/26(月) 02:15:13
>>71
ははぁ、なるほど、わかってきました。
これは一種のキャストっぽいイメージなんですかね。
あるオブジェクトに対してinterfaceを渡す事で、それ自身、もしくはその親に
定義されたメソッドと指定型のクラスを保持する、みたいな。

この辺のお話をもとに自分でinterfaceとclassつくって実験してみます。
ありがとうございました。
74デフォルトの名無しさん:2007/11/26(月) 03:44:53
serialVersionUID ってserialver 使わなくてもクラスの内部フィールドやメソッドなんかの
インターフェースに基づいて自動で付けてくれるし、それが変わったら直列化された
データに互換性がないってのは分かるけど、わざわざプログラマに互換性を選択する
余地を残したのは

・メソッド名やパラメータが変わったりメソッドの追加/削除はあったけど内部フィールドは
 変わっておらず、直列化されたデータに互換性があると保障できるとき。

・内部フィールドは変わってないけどそこに持つデータの定義が変わったから以前に直列化
 されたデータが使えなくなったとき。

を考慮したって事? クラスに修正が入ったのに直列化されたデータに互換性があるなんてどうやって
保障するんだろ。世の serialVersionUID は全て直列化の仕様を理解してる人が付けてるんだろうか。
75デフォルトの名無しさん:2007/11/26(月) 08:31:11
serialVersionUIDが異なると読み込むことさえ出来ないから
フィールドが追加になったり意味や有効な値が変わったりした場合は
readResolveで対応するとかして以前と互換性がありますよと
プログラマがそれを保証できる場合に以前と同じserialVersionUIDを付ける
わざわざ対応する必要もないようなささいな修正(バグfixとか?)や
単なる機能(メソッド)追加の場合もあるし
そのたびにいちいち以前のデータを読み込めなくなってたら永続化になんか使えない
76デフォルトの名無しさん:2007/11/26(月) 09:27:45
Effective Java 読もうぜ
77デフォルトの名無しさん:2007/11/26(月) 09:29:43
クラスAがクラスBのオブジェクトを集約するときは、
クラスAのフィールドにBのコレクションを用意しますよね…?

そのフィールドがnullで初期化され、オブジェクトが割り当てられる
保証が必ずしもないときは、クラスAの利用側(仮にクラスC)は
毎回nullチェックすることになると思うんですが、煩わしいです。
こういう場合にもNullオブジェクトを使ってもいいんでしょうか?

--
class A {
  public java.util.Vector<B> vector = null;
}

class B {
}

class C {
  public static void main(String args[]) {
    A hoge = new A();
    if(hoge.vector != null)
      <なんらかの処理>
  }
}
78デフォルトの名無しさん:2007/11/26(月) 09:49:30
>>77
vectorがnullでないことが自然なのなら、
Aのコンストラクタでvectorをnull以外に初期化しておけばいい。
vectorがnullであっても構わないのなら、
nullチェックの煩わしさを避けるのにnullオブジェクトパターンを使う手もある。
でも、そもそもvectorフィールドがpublicになって外部に見えているのが問題な気がする。
vectorに何かの処理を行うのはAにやらせるべきだと思う。
その何かをやらせるメソッドでnullチェックをやればnullチェックが分散することもないし、
nullの時にvectorlazy initializeするとかの処理もひとつにまとめられる。
読み取り専用でvectorを外部で使いたいのならvectorのコピーを外部に出せばいい。
79デフォルトの名無しさん:2007/11/26(月) 09:51:03
> vectorlazy
vectorをlazy
80デフォルトの名無しさん:2007/11/26(月) 10:07:51
>>78
>vectorに何かの処理を行うのはAにやらせるべきだと思う。
なるほど。それだと利用側がVectorを知ってる必要もなくなるんですね。
addやremoveなどの公開メソッドをAに置いて、それが呼ばれたら
nullチェックしたあとにvector本来のメソッドに委譲するように書いてみます。
レスありがとうございました。
81デフォルトの名無しさん:2007/11/26(月) 10:08:24
>>77
そのアクセス修飾だと、他から null を代入出来てしまうので
仮にNullオブジェクトを使っても nullチェックを無くすことができない。

あくまでも、アクセス制御を完璧にした上で、null値の替わりに用いる。
nullチェックを減らすこと等を目的としている。
82デフォルトの名無しさん:2007/11/26(月) 10:42:34
>>81
>仮にNullオブジェクトを使っても nullチェックを無くすことができない。
実際はpublicではなかったのですが、アクセッサを通してそのまま
Vectorのインスタンスを返したり代入できたりしていたので仰る通りの問題が…。
勉強になります。レスありがとうございました。

コレクションをフィールドに持つクラスは、コレクションに対する外部からの
アクセスを許さずに、コレクションが提供するメソッドを全てラップすべきなのですね。
83デフォルトの名無しさん:2007/11/26(月) 12:25:21
Javaにも(C++みたいな)const修飾子が欲しい……
84デフォルトの名無しさん:2007/11/26(月) 13:24:41
すみません。JSP/サーブレットの本を1冊買ってやっているんですが、本のソースをアレンジしたところで
躓きました。

<% ソース %>のスクリプトレットが2箇所あります。JSPのソースの上のほうと下のほうにあるんですが、
上のスクリプトレット内で宣言・使用した変数を下のスクリプトレット内で使用したいとおもい使用したんですが
エラーになります。

自分でしらべたところ、<%! 各宣言 %>とすればどこのスクリプトレット内でも使用できるそうですが、
これはサーブレットでのグローバル領域での変数宣言と同じで各ユーザーから使われてしまうものとおもわれます。
サーブレットでのdoGet()内と同様に各ユーザー別々に使用できる(スレッドセーフな?)使い方をしたいんです。

どうすればいいでしょうか?ご教授願います。一応次のレスにソースも載せます。
8584:2007/11/26(月) 13:28:20
<%@page contentType="text/html; charset=Windows-31J"%>
<%--
<%
String flag = request.getParameter("flag");
if(flag.equals("true")) {
String numberStr = request.getParameter("number");
String error = null;
int number;

if(numberStr==null || numberStr.length()==0) {
error = "なにか入れてね";
}

if(error == null) {
try {
number = Integer.parseInt(numberStr);
if(number<0 || number>9) {
error = "0〜9までの数字を入れてね";
}
} catch(NumberFormatException e) {
error = "数字を入れてください";
}
}
}
%>
--%>
<HTML>
<BODY>
8684:2007/11/26(月) 13:29:32
<H2>数当てゲーム</H2>

0〜9の数字を入れてください
<FORM ACTION="../servlet/reqattr.GuessServlet">
<INPUT TYPE="TEXT" NAME="number">
<INPUT TYPE="SUBMIT" VALUE="送信">
</FORM>
<%--
<%
if(flag.equals("true")) {
if(error==null) {
out.println("はずれ。数字 = " + String.valueOf(number));
} else {
out.println(error);
}
}
%>
--%>
</BODY>
</HTML>
下のスクリプトレット内でerror変数とnumber変数がエラーを起こしますので
コメントアウトしています。
87デフォルトの名無しさん:2007/11/26(月) 13:58:44
どこに質問していいのか分からなかったので、ここに書きます
スレが違っていたらすいません

このサイトを参考にして ttp://www.thinkit.co.jp/free/article/0606/13/3/
eclipse+ibatis+abator+DB2で実行しようと思ったのですが、以下のエラーが出てうまくいきません

Table configuration with catalog null, schema public, and table SHAIN did not resolve to any tables

どなたかよろしくお願いします
88デフォルトの名無しさん:2007/11/26(月) 13:59:33
>>84
私はJSPはまったくやらないが、本で勉強してるレベルなのに、
いきなり知らない文法を試そうとするのかな。
やりたいことが載ってる別の本を用意したほうが勉強になると思うのだが。
89デフォルトの名無しさん:2007/11/26(月) 14:06:29
>>84
これがコンパイル通らない理由が分からないのかな?
if(num < 0) {
  String msg = "error";
}
System.out.println(msg);
90デフォルトの名無しさん:2007/11/26(月) 14:48:46
普通session変数使うよな
91デフォルトの名無しさん:2007/11/26(月) 15:04:21
初期化されていない可能性があります
92デフォルトの名無しさん:2007/11/26(月) 16:41:05
>>88
でもさー、これがこうだったら、あれがこれでもできるんじゃね?
って勘でいろいろ試さない?俺はいろいろ試していいと思うんだけどなー
93デフォルトの名無しさん:2007/11/26(月) 16:41:51
てかそうしないと上達しないし
自分のライブラリも増えないだろ
94デフォルトの名無しさん:2007/11/26(月) 16:52:56
文法もまともに学ばずにいきなりJSPに手を出し、はまるのはただの馬鹿
95デフォルトの名無しさん:2007/11/26(月) 17:09:32
っつーかどんな種類の変数が存在するか説明せずに
いきなりサンプルから始まる本の方が悪いだろ
9684:2007/11/26(月) 17:15:01
すみません。みなさん。ちょっと家事をやってたらわかりました。

>>89さんのおっしゃるとおり、ifブロックの中で宣言してました。。
ですから、ただ単にifブロック外で使えないという単純なミスでした。

なんというか、お粗末な結末で大変申し訳なくおもっております。

考えて労力を使ってくださった方々、たいへんありがとうございました。
97デフォルトの名無しさん:2007/11/26(月) 21:49:24
private static ResourceBundle Property_File = resourceBundle.getBundle(PROPERTYFILE);
    private static final Properties property = new Properties();
    static {
        initialize();
    }
    public static void initialize(){
        prpper.clear();
        for(Enumration e = Property File.getKeys();e.hasmoreElements();){
            String Property = (String)e.nextElements();
            property.put(PropertyKey,Property_File.getString(PropertyKey));
            System.out.println("変数名="+PropertyKey);
            System.out.println("内容="+Property_File.getString(PropertyKey));
        }
    }
98デフォルトの名無しさん:2007/11/26(月) 21:51:58
>>97です、質問なのですが
Forループを抜けた後にファイルの内容を変数ごとに個別に出力させるにはどうすればよいかいいですか?
//ad.propertiesファイル
ad.pathname1=c:AAA/BBB/CCC;
ad.pathname2 =c:DDD/EEE/FFF;
ad.pathname3=c:GGG/HHH/III;

上記のプロパティファイルの内容を個別に出力させたいです。
99デフォルトの名無しさん:2007/11/26(月) 22:33:02
>>98
forループ抜けた後に…云々というのは、ループ外で定義した変数に
読み込んだ「ファイルの内容」を保持しておけば良いんじゃないの?

あとは日本語が理解できないのでパス
100デフォルトの名無しさん:2007/11/26(月) 22:46:09
>>99さん
for文を抜けた後の処理にfor文内で読み込んだファイルのパスをpathname1、2、3と個別に出力させたいのですが、
わかりますでしょうか?
101デフォルトの名無しさん:2007/11/26(月) 22:54:45
>>100
「ファイルのパス」「個別に出力」等の単語が指し示すモノ・状態が分からない。

java.util.List<String> list = new java.util.ArrayList<String>(); // ループ外で定義した変数
for (...) { list.add( Property_File.getString(PropertyKey) ); } // 読み込んだ「ファイルの内容」を保持
...Arrays.toString(list)...等、希望の出力書式と出力先に。
102デフォルトの名無しさん:2007/11/26(月) 23:12:39
日本語でおk
103デフォルトの名無しさん:2007/11/26(月) 23:16:01
>>101さん
失礼しました、ad.propertiesファイル にあるpathname1、pathname2、pathname3
の内容を出力させたいです。
104デフォルトの名無しさん:2007/11/26(月) 23:18:10
>>103
日本語でおk
105デフォルトの名無しさん:2007/11/26(月) 23:27:35
↓第1回、国際ニコニコ映画祭 大賞作品
http://www.nicovideo.jp/watch/sm1493205

はっきりいって糞暴力動画
これでいいのか?ニコニコ動画!??
106デフォルトの名無しさん:2007/11/26(月) 23:29:25
>>103
三回目なのでそろそろ当たりを引きたいのだが…私、ESPレベル低いから

「ad.propertiesファイル」に記述されている3つのファイルパスを取得、
それらのパスが示すファイルデータを、何らかに表示したい。
ということかしら。

で、File(String) に突っ込んで、StreamかReaderで普通に読み込めば良いんじゃない?
107デフォルトの名無しさん:2007/11/27(火) 00:17:37
>>106さん
解釈有難う御座います、その通りです。pathname1等には、
デスクトップに貼り付けてあるファイルまでのパスが記入してあり、pathname1に入っているファイルパスにアクセスログ等を記述するようにしたいです。
わかりますでしょうか?
108デフォルトの名無しさん:2007/11/27(火) 00:21:18
やっぱり日本語で(ry
109デフォルトの名無しさん:2007/11/27(火) 00:22:27
質問です。jarファイルでハマっています。
バッチからjavaプログラムを起動するときに、MySQLに接続するjarファイルが上手く使えないです。

エクリプス上では上手く接続できます。
(実行>起動構成の実行>クラスパス>ユーザーエントリー>プロジェクト名>外部JARの追加 にて設定)

このエクリプスの起動オプションと同じようなものをバッチに付け加えれば上手くいくかなと思いますが、そこが上手くいかないのです。

現状では、
java -classpath . -jar "C:\Program Files\Java\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar" プロジェクト名.hoge
で起動すると
Failed to load Main-Class manifest attribute from・・・
のエラーが出ます。

また、-jar 以下のオプションを外して実行すると
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver・・・
のエラーが出ます。

ちなみに、echo %classpath%をしてもクラスパスは通っています。

詳しいかた、よろしくお願いいたします。
110デフォルトの名無しさん:2007/11/27(火) 00:22:46
>>97の日本語が俺の頭ではコンパイルエラーだぜ
111デフォルトの名無しさん:2007/11/27(火) 00:23:08
>>108さん
「やっぱり日本語で(ry 」とはどういうことでしょうか?
112109:2007/11/27(火) 00:27:57
ちなみに、
System.getProperty("java.class.path") ;
の一行を加えても変化なしでした。

また、Failed to load Main-Class manifest attribute from・・・
ではjarファイルの中にメインクラスがねーよというエラーと推測しますが

では何故エクリプス上では問題なく動く(DBの中身の出力可)のかが分かりません・・・
113デフォルトの名無しさん:2007/11/27(火) 00:35:14
>>112
それは java コマンドの -jar オプションの書式と jar ファイルの仕様に適合してないから。ではないか

> google "Main-Class manifest attribute"
ttp://www.tohoho-web.com/java/other.htm

// Eclipse は色々補完してくれるから、動作検証をするにはそれなりにEclipse自体への理解が必要。
114109:2007/11/27(火) 00:42:28
>>113
ありがとうございます!
そのページは見たつもりでしたが、見落としがありました。

クラスパスを2個以上設定し、区切るときはセミコロンで区切れば良かったのですね。
java -classpath .;"C:\Program Files\Java\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar" プロジェクト名.hoge

これで実行成功しました!
115デフォルトの名無しさん:2007/11/27(火) 01:05:18
jarファイル壊してるような気がするのは漏れだけ?
116デフォルトの名無しさん:2007/11/27(火) 01:11:52
>>115
どのあたりが気になるところなのだろう。
117デフォルトの名無しさん:2007/11/27(火) 10:06:52
第二東京弁護士会は男性差別です。
http://niben.jp/02topics/2007/070327.html

[抗議内容]
女性専用休憩室 http://niben.jp/02topics/2007/070327.html はいったいそういうつもりなのか?
このような男性差別は憲法14条に違反し、不法行為となる。
第二東京弁護士会が昨今問題となっているかかる男性差別を行うのはどういうつもりなのか?

[返答]
ご意見拝見しました。当会では司法改革の一環として女性における司法アクセス障害の解消のために男女共同参画に取り組んでおります。
そして、男女共同参画を促進するための積極的是正措置を憲法第14条の性差別禁止に反するものではなく、
むしろ憲法第14条に定めた男女平等を積極的に実現するためのものと考えております。
政府も女性差別撤廃条約の批准を行い、国内的には男女共同参画社会基本法を制定し、
基本法では積極的是正措置についても検討すべきことを定めています。
当会の女性専用室は、これまでの会員室は男性会員の利用者がほとんどであり女性会員が使いづらいという問題点を是正し、
会館において仕事の合間に産前産後の場合をはじめとして休憩を取ることができるようにした積極的是正措置にあたるものです。
その広さも会館のごく一部を女性専用としており男性会員の利益を著しく損なうものとはいえない範囲で設置しました。
ご参考までに、東京弁護士会では会館建設時から女性会員室をゆったりと設けております。
何とぞご理解賜りますようお願い申し上げます。
118デフォルトの名無しさん:2007/11/27(火) 13:48:03
↓のコードを実行するとすごく時間がかかってしまうのですが、変なことしちゃってるのでしょうか?
BufferedReader br = new BufferedReader(isr);
String strLine, source = "";
while((strLine = br.readLine()) != null){
source += strLine + "\n";
}
開いているファイルのサイズは170KBで、このコードを実行しきるのに5秒以上掛かります。
速度を改善する方法があれば教えてください。よろしくお願いします。
119デフォルトの名無しさん:2007/11/27(火) 13:52:13
ファイルがネットワーク上にあるとか
120デフォルトの名無しさん:2007/11/27(火) 13:58:04
>>118
String + Stringをするたびに新しいStringインスタンスを生成するため、
Stringの加算はコストが高くつく。
StringBuilderかStringBufferを使ってappendしていき、
最後にStringに変換する。
例えば、
BufferedReader br = new BufferedReader(isr);
String strLine;
StringBuilder sb = new StringBuilder();
while((strLine = br.readLine()) != null){
sb.append(strLine);
sb.append('\n');
}
String source = sb.toString();
あとは、ストリームの正体によるけどストリーム自体が遅いとか。
121デフォルトの名無しさん:2007/11/27(火) 13:59:04
質問です。

Rubyで言う、Enumerable#each_with_index のような機能は、Javaではどうやっ
て実現したらよいでしょうか?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Enumerable#each_with_index

作るのは難しくありませんが、標準的な手法があるなら、それを利用したいの
です。
122デフォルトの名無しさん:2007/11/27(火) 14:01:16
Java が起動する時間も込み、だとか
後、ループ内での String の連結は StringBuilder にしたほうが…
一応メモリーと複製速度が増える要因ではあるが…170kB程度じゃなぁ
123デフォルトの名無しさん:2007/11/27(火) 14:06:46
>>118
わざわざ1行ずつに分解したのを改行付加しながら連結って、すごく無駄のような
改行コードを統一したいとかなのかな
124デフォルトの名無しさん:2007/11/27(火) 14:06:55
>>121
ないので、for(int i=0; i<size; i++)でまわすか、カウンタ変数使うか好きなほうをどうぞ
独自のIteratorでも作成すれば可能だけど、可読性損なうから意味無し
RubyはRuby、JavaはJava。
125デフォルトの名無しさん:2007/11/27(火) 14:07:59
>>121
特に標準的なものはない
126デフォルトの名無しさん:2007/11/27(火) 14:09:24
すみませんが、質問です。

Java5以降の拡張for文では、: の右辺にイテレータを取ることはできません。
java.lang.Iterableインターフェースを実装したクラスのインスタンスのみが
受け取れます。

既存のライブラリにあるAClass(修正できない)に、イテレータを返すメソッ
ドAClass#iterator()があるのですが、このAClassはIterableインターフェー
スを実装していないので、拡張for文で利用することはできません。

どうするのが一番良いでしょうか?Iterable<T>を実装したアダプタクラスを
作るのが良いのかなと思いますが、もっと良い方法があるなら知りたいです。
127デフォルトの名無しさん:2007/11/27(火) 14:14:14
拡張for文を使いたいがためにIterableを実装するというのも本末転倒な気がしないでもない
iterator()が返すIteratorを使って普通のfor文なりwhile文なりを書くのではだめなの?
128デフォルトの名無しさん:2007/11/27(火) 14:16:13
>>119-120>>122
ありがとうございます!
>>120>>122さんの言うようにやってみたら劇的に改善しました!
>>123
恥ずかしながらこれ以外の読み込み方法が分かりません。

皆様のおかげで速度改善が出来ました。ありがとうございました。
129デフォルトの名無しさん:2007/11/27(火) 14:22:21
>>126
アダプタでいいんじゃないかな
class AClassAdapter implements Iterable<?> {
private AClass a;
public AClassAdapter(AClass a){this.a=a;}
public Iterator<?> iterator(){ return a.iterator(); }
}
AClass a = ...;
for (Object o : new AClassAdapter(a)) {
...
}

継承できるなら
class IterableAClass extends AClass implements Iterable<?> {
}

でも俺なら単純に
for (Iterator<?> i = a.iterator(); i.hasNext(); ) {
...
}
と書く
130デフォルトの名無しさん:2007/11/27(火) 14:25:42
>>128
単にテキストファイルをそのまま読み込んで全体を文字列にしたいだけなら、
行単位で読み込むのでなく、
char配列を引数に取るreadメソッドがあるので、
これを使ってもっと大きな単位で読み込んで、
最後にchar配列をStringにすればいい。
極端なことをするなら、char配列をファイルの文字数分用意して一気読みをする。
131デフォルトの名無しさん:2007/11/27(火) 14:28:16
getNameとか、getとかsetは小文字なんですか?
そのような名前の付け方の規則がよくわからないのでおしえてください。
どうしてもわかりません。よろしくおねがいします。
132デフォルトの名無しさん:2007/11/27(火) 14:31:12
>>131
別にgetとかsetだけじゃなくて、メソッド名は全部、先頭は小文字
133デフォルトの名無しさん:2007/11/27(火) 14:33:20
>>131
いちおうJavaの言語仕様で名前付け規約が定められている。
ttp://java.sun.com/docs/books/jls/third_edition/html/names.html#6.8.4
Javaで分からないことがあればまず言語仕様を見よう。
134デフォルトの名無しさん:2007/11/27(火) 14:52:40
文字列を定数にすることってできますか?
例えばINTERRUPT_MODEって定数があったら
"INTERRUPT_MODE"って言う文字列を
INTERRUPT_MODEにする方法みたいなやつです。
135デフォルトの名無しさん:2007/11/27(火) 14:57:06
enum Mode { INTERRUPT_MODE, OTHER_MODE };

String s = "INTERRUPT_MODE";
Mode mode = Mode.valueOf(s);
136121:2007/11/27(火) 15:09:21
>>124->>125
そうですか...。ありがとうございました。
137デフォルトの名無しさん:2007/11/27(火) 15:10:06
>>131
君だけが勝手に大文字で始めると他の人が混乱するから

>>134
Enumでもいいけど、static final String MODE = "MODE";じゃ駄目なのかい?
138デフォルトの名無しさん:2007/11/27(火) 15:12:33
>>126
AClassが対応するまで拡張for文を使わないが正しい
139デフォルトの名無しさん:2007/11/27(火) 15:12:46
>>137
それでOKでした。
有難うございます。
140デフォルトの名無しさん:2007/11/27(火) 15:29:56
【質問テンプレ】
[1] 授業単元:プログラム言語2
[2] 問題文:課題A で作成したプログラムを以下のように修正する.
* gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される.
* gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される.
* gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される
#include <stdio.h>
#include <stdlib.h>
#define a 5
#define TAX(x,y) (x+y)*a/100
#define PRICE(x,y) (x+y)+(x+y)*a/100
int main(void)
{
int x,y;
printf("tax of x+y %d \n", TAX(x,y));
scanf("%d",&x);
printf("lnput an integer y:");
scanf("%d",&x);
printf("tax of x+y: %d \n",);
printf("price of x+y %d \n", PRICE(x,y));
return0;
}
[3] 環境
 [3.1] OS: (Linux/)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2007年11月28日まで]
[5] その他の制限: (Cプリプロセッサぐらいまで)
課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。
貼りつけたプログラムは、課題Aが完成したものです。
141デフォルトの名無しさん:2007/11/27(火) 15:34:02
貼るところ間違えました。
すみませんでした。
142デフォルトの名無しさん:2007/11/27(火) 15:37:57
javacについて(というより環境変数についてになると思いますが)質問です。
 
普段はC:\Program Files以下にjdkをインストールするのですが、
今回外付けのHD上にインストールしてみました。
 
インストール先dirは「E:\10_ProgramFiles」以下で、
パスも「E:\10_ProgramFiles\Java\jdk1.5.0_14\bin」に通しました。
 
で、ここからが問題なのですが、コマンドプロンプトで
「java」コマンドは認識されるのですが「javac」コマンドが認識されません。
 
メッセージはお約束の
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
です。
 
「javac」ではなく、フルパスで
「E:\10_ProgramFiles\Java\jdk1.5.0_14\bin\javac」と打つと認識されます。
 
同じようなことでお悩みになった経験のある方いらっしゃいませんか?
143デフォルトの名無しさん:2007/11/27(火) 15:42:31
JSPの<%@ page contentType="text/html; charset=Shift_JIS" %>
って何のためにエンコーディング設定してるの?フォーム情報をShift_JISで送れって言う命令?
これ指定してもutf-8とかでページが表示されることあるんだけど。だとしたら、ページの
エンコードを指定してるわけじゃないよね。ページのエンコ指定ならhtmlのmetaタグで指定すればいいわけだし。
144デフォルトの名無しさん:2007/11/27(火) 15:47:58
>>142
単純にパスが通ってません。
java.exeは実行できるのは、単にwindowsのシステムフォルダにjava.exeがコピーされているからです。
パスの指定でJAVA_HOMEとかを使ってませんか?
145デフォルトの名無しさん:2007/11/27(火) 15:50:16
>>143
HttpResponseのヘッダ情報じゃね?
実際のエンコとHTMLmetaのエンコ指定とヘッダと混在するのがカオス
146デフォルトの名無しさん:2007/11/27(火) 15:54:00
>>144

142です。
一発で解決しました。
ありがとうございます!

147143:2007/11/27(火) 16:12:27
>>145 どうもありがとうございます。そうなんですね。よく覚えておきます(`・ω・´)
148126:2007/11/27(火) 16:49:38
>>127, >>129, >>138
そうなのですか…。どうも従来のfor文が冗長に見えて仕方が無いのですが、
それをそのまま使うべきなのかもしれません。ありがとうございました。
149デフォルトの名無しさん:2007/11/27(火) 20:48:18
継承関係にある2つのクラスのインスタンスってどの様にメモリーに確保されますか?
150デフォルトの名無しさん:2007/11/27(火) 21:22:54
>>149
質問の意図が分からない
151デフォルトの名無しさん:2007/11/27(火) 21:31:41
>>149
そりゃインスタンスが別なら軽症関係にあろうがなかろうが別々の領域に確保されるよ。
152デフォルトの名無しさん:2007/11/27(火) 21:42:08
ありがとう
サブクラスをnewするとスーパーとサブで2こ出来るよね
153デフォルトの名無しさん:2007/11/27(火) 21:45:24
>>152
できねーよ。同じインスタンスだろーが。
154デフォルトの名無しさん:2007/11/27(火) 21:51:20
だから質問の意図がわかんねーと言ってるんだ
変数ごとにメモリは別の領域に確保される
インスタンスごとにグループ化はされている。
あとはどんな型で見るかによって見える範囲が違う
155デフォルトの名無しさん:2007/11/27(火) 21:54:42
でもコンストラクタは上から実行されてインスタンスは下から出来るってどこかに書いてあったけど
156デフォルトの名無しさん:2007/11/27(火) 22:04:44
インスタンスってのはメモリレベルで見れば変数(領域)を幾つかまとめたもの
その確保の順番がスーパークラスからって話で何か問題ある?
157デフォルトの名無しさん:2007/11/27(火) 22:04:56
そのどこかが何を意図して 「インスタンスは下からできる」 と書いたか分からないが間違い。
new A() とすれば A に必要な領域がスーパークラス分も含めて確保される (VMの実装によるが
その領域は連続している)。
158デフォルトの名無しさん:2007/11/27(火) 22:12:37
領域の確保は宣言した瞬間に全部まとめて。
でも、初期化はスーパクラスから
159デフォルトの名無しさん:2007/11/27(火) 22:14:23
でも、スーパークラスにprivateフィールドとpublicのアクセサ作ってサブクラスに継承するとsuper付けないとアクセス出来なくなるような?
160デフォルトの名無しさん:2007/11/27(火) 22:16:45
publicアクセサを上書きしてないなら super 付けなくてもアクセスできるし、
privateフィールドには super 付けてもアクセスできない。
161デフォルトの名無しさん:2007/11/27(火) 22:21:38
アクセス制御とメモリのモデルは全くもって無関係だよ
superを付けるのは、同じ名前のメソッドやフィールドがあった場合に、コンパイラに対してどのメソッド(フィールド)を使うかを明示する為でしかない。
162デフォルトの名無しさん:2007/11/27(火) 22:29:41
こういう細かいところ書いてある仕様書ってある?
163デフォルトの名無しさん:2007/11/27(火) 22:36:49
なんとなく分かった。
154のがわかりやすかった。全部入ってる下からグループ化されるし。
164デフォルトの名無しさん:2007/11/27(火) 22:44:12
>>162
JavaVM仕様
概念的なものであれば、言語仕様でも充分に書いてある
165デフォルトの名無しさん:2007/11/27(火) 22:45:39
Aというベースクラスを継承したB、Cというクラスがあったとして、
分岐を使わずB、Cで処理を分ける方法ってありませんか?
A、B、Cともに生成は別ライブラリなので弄れないです。
166デフォルトの名無しさん:2007/11/27(火) 22:46:06
>>162
ないと思うけど。実装依存な部分の話だし。
167デフォルトの名無しさん:2007/11/27(火) 22:47:57
>>165
そりゃポリモーフィズムのことをいってんのか?
文脈からすると、A,B,Cのクラスは全部固定に聞こえる。
もしその前提で行くとなると、instanceofで分岐するしかないと思うんだが・・・。
168デフォルトの名無しさん:2007/11/27(火) 22:51:17
>>167
ジェネリックとかでできないかなぁと思ったんですが。
169デフォルトの名無しさん:2007/11/27(火) 22:51:17
>>165
サブクラスで挙動変えるのは A, B, C のクラス設計変えないと無理。
もし A がインターフェースなら動的プロキシ使え。
170デフォルトの名無しさん:2007/11/27(火) 22:54:13
使う側で仕分けするというのはパターンマッチとか関数型言語には良くあるやり口だけど
Javaは継承での仕分けしかサポートしてないからね……
場合によってはVisitorパターンで代用できるが、それを使わずに設計されたライブラリに対しては無力
結局instanceofで手動分岐するしかない。
171デフォルトの名無しさん:2007/11/27(火) 22:56:51
弄れないならどうにもならんな
最初から分ける処理の部分を分離できるように設計されてなきゃ
172デフォルトの名無しさん:2007/11/27(火) 22:56:53
>>168
GenericはErasureだから実行時はないものとされるよ。
だから分岐には使えないと……
Classオブジェクトを同時に渡して手動キャストみたいな荒業は出来るがあんまり意味ないか。

>>169
>動的プロキシ
その発想があったか
173デフォルトの名無しさん:2007/11/27(火) 23:01:29
>>168
ああ、それなら関数のオーバーロード使えばできるよ(たぶん見にくいけど)
一つの関数の名前でA,B,Cそれぞれのクラスについて定義すればいい。
ただし、このメソッドはクラスのインスタンスの型ではなく、変数の型に合わせて呼ばれるから、
クラスAの変数にクラスBのインスタンスを入れたとしても、
void func(A a){〜}
void func(B b){〜}
A b_as_a = new B();
func(b_as_a); //<-呼ばれるのは上
となる。インスタンスの型によって処理を変えたいなら、ポリモーフィズムか前述のinstanceofしかない。
174デフォルトの名無しさん:2007/11/27(火) 23:02:53
やりたい事が思い切りずれているような気がしてならない俺
175デフォルトの名無しさん:2007/11/27(火) 23:12:37
>>173
オーバーロードとオーバーライドの違いで苦戦する未来が見えた
176デフォルトの名無しさん:2007/11/27(火) 23:25:23
逆コンパイルは駄目?
177デフォルトの名無しさん:2007/11/27(火) 23:27:54
良いよ。
178デフォルトの名無しさん:2007/11/28(水) 00:01:27
なんかここの流れ見てると久しぶりに言語作りたくなってきた
名前はJapaにしようか
179デフォルトの名無しさん:2007/11/28(水) 00:03:28
>>178
NihongoDeOK をつくってくれ
180デフォルトの名無しさん:2007/11/28(水) 00:03:36
この流れでどうして言語を作りたくなるのかよくわからんが、名前はNyphon(ニフォン)で頼む。
181デフォルトの名無しさん:2007/11/28(水) 00:14:56
言語作るなら 1 バイトのプリミティブ型を符号付と符号なしに明確に分けてくれ。
いちいち 0xFF でマスクするの面倒だし、なんかそこだけ気持ち悪ぃ。

byte → 8bit 符号なし (0〜255) → バイナリデータに使用
tiny → 8bit 符号付 (-128〜127) → 整数値として使用
182デフォルトの名無しさん:2007/11/28(水) 00:20:03
>>181
データ型の要素はすべて直行してるのに、いちいち固有の名前が与えられてるのが不自然なんだよ。
整数型も浮動小数点型も符号のあり/なしと使用バイト数を自由に決められる型にすればいい。
Integer<false, 4> みたいな感じで。もしくはさらに拡大してVar<Numeric.Integer, false, 4>みたいにして全部の型を定義すれば
全部の問題が片付く。頻繁に使うタイプは標準ライブラリで先に定義し解けばいい。
まあ、今のJava言語の使用では到底不可能だけどな。
183デフォルトの名無しさん:2007/11/28(水) 00:21:59
意外に継承ってインターフェイスより難しくないか?
184デフォルトの名無しさん:2007/11/28(水) 00:26:49
浮動小数点に符号なしなんて作ったらコプロ使えなくなるじゃん。
コプロってもう死語か?
185デフォルトの名無しさん:2007/11/28(水) 00:33:01
>>184
(先に断っておく、マジレスしてすまん)
コプロってコプロセッサのことであってる?GPUみたいなもんだと解釈していいんだろうが、
それならGPUの指定する型に合わせたサイズと型をライブラリで指定すればいい。
実際、DirectXは標準のD3DXMatrix型じゃなくとも、byte[8]の構造体で処理できる。
186デフォルトの名無しさん:2007/11/28(水) 00:40:53
ローテート演算子を頼む。
なんでCにはなかったんだろう。
187デフォルトの名無しさん:2007/11/28(水) 00:42:20
>>185
FPU の事。今はもう CPU にビルトイン状態になっているが、IEEE 754 規格に合わない
浮動小数点形式なんか採用したら FPU 殺してるも同然。
188デフォルトの名無しさん:2007/11/28(水) 00:43:56
言語作るならばExcelで仕様書を書けばアプリに変換されるコンパイラを付けてくれ
189デフォルトの名無しさん:2007/11/28(水) 00:51:44
>>187
そうだったのか。それなら、最低限FPUでサポートされる型を標準としてライブラリで定義したらいいんでない?
それとも、FPUで扱えない型があるだけでプログラム全体のスピードが落ちるんだろうか。
190デフォルトの名無しさん:2007/11/28(水) 00:57:25
ユーティリティクラスを作るとき、publicなstaticメソッドを作成して
外部から呼び出す、見たいな事をやってるコードをよく見るんですけど
あんなことして遅くならないのですか?
191デフォルトの名無しさん:2007/11/28(水) 01:02:12
>>189
Java VM は C で書かれてるから Java プログラムで double や float 使わなければ問題はないが、
シミュレーションや数値解析、グラフィック処理やり始めたら他言語にめちゃくちゃ水を空けられる結果になると思う。
ハードウェア未対応な動きをさせる方を BigDecimal のようにライブラリ提供すべきでは。
192デフォルトの名無しさん:2007/11/28(水) 01:02:56
>>190
そうしない方が速いと思う理由は何ですか?
193デフォルトの名無しさん:2007/11/28(水) 01:05:26
>>190
どのくらい遅くなるんだい?
1ミリ秒以上の差が出るならば次から考慮するよ
194デフォルトの名無しさん:2007/11/28(水) 01:21:13
>>191
まあ、現状で特定のサイズ/型に特化したオペレーションがCPU周辺にあるんだから、そうするのが妥当なんだろうけど。
でもそうなると、結局PCの環境によってdoubleやintのサイズが違うとかいう馬鹿なことが起こっちゃう。(Cだけか?
・・・とはいうものの、有効な対策があるわけでもないし、しょうがないのかなあ。
195デフォルトの名無しさん:2007/11/28(水) 01:25:42
>>190
インスタンス参照してクラス解決してから呼び出すよりは速い。
196デフォルトの名無しさん:2007/11/28(水) 01:28:53
>>121
亀レスだが、Commons Collectionsってのがあって内部イテレータ用のインタフェースが用意されている。
また、JDK1.7ではクロージャが追加されるとの話もある。
197デフォルトの名無しさん:2007/11/28(水) 01:30:10
>>190
static自体が実行速度が速いんじゃなかったかな?
198190:2007/11/28(水) 01:50:33
多数のレスありがとうございます。

privateメソッドよりpublicメソッドのほうが遅いってことは、globalに近い
別のクラスのメソッドなんてさらに遅いのではないかと思ったりしたわけです・・・
199デフォルトの名無しさん:2007/11/28(水) 01:54:57
>>194
C で int のサイズが違うのは 「2 バイト以上 (でその環境でもっとも効率の良い幅)」 という
最低限の保障しか規定していないから仕方がない (double って IEEE 754 準拠だったと
思うけど幅変えられたか?)。あっちは実行効率重視なんだし。
200デフォルトの名無しさん:2007/11/28(水) 01:57:28
>>198
伝聞を元に推測を展開するより、まずはその手で試してみたほうが良いと思う。
プロマネ志望とかなら良いんだけど。
201デフォルトの名無しさん:2007/11/28(水) 02:06:04
>>198
> privateメソッドよりpublicメソッドのほうが遅いってことは
そもそも、この部分の根拠は?
202デフォルトの名無しさん:2007/11/28(水) 02:06:12
private / public で速度の差は考えなくていいと思う
C / C++ / Java での差はかなりあるよ
203デフォルトの名無しさん:2007/11/28(水) 02:08:11
>>198
Ruby みたいに動的に探しに行く言語なら遅くなるかも知れないけど
Java はコンパイルしてしまえば同じ(コンパイル時に見えるか見えないかの違いだけ)
204デフォルトの名無しさん:2007/11/28(水) 02:15:09
>>203
いやまぁ private は継承の影響を一切うけないから静的で
public は動的ってのはあるから、同じじゃない。
「動的」っても Ruby の動的ってのとは程度が違うけど。

でもまぁ、JITがインライン展開するかの判断には private か public かよりも
メソッド自体の長さとか、使用するスタックサイズとかの方が重要っぽいし、
private だから速いってのは final すれば速くなるって都市伝説と同レベルだと思うぞ。
205デフォルトの名無しさん:2007/11/28(水) 02:24:10
入門書の最初の方にはしょっては有るけど書いてある内容だよね
206デフォルトの名無しさん:2007/11/28(水) 02:25:25
>>204
staticついてなけりゃだけどな。
private/publicでinvokespecial/invokevirtualの差がつくのは。
207デフォルトの名無しさん:2007/11/28(水) 03:05:10
JDBC で PreparedStatement 使って前方一致検索するときってワイルドカードのエスケープ
しなきゃならない仕様だっけ? PostgreSQL 8.2 だと下のが全件検索になってしまうんだが。

PreparedStatement stmt = con.prepareStatement("SELECT * FROM FOO WHERE NAME LIKE ? || '%'");
stmt.setString(1, "%");
208デフォルトの名無しさん:2007/11/28(水) 06:31:16
"SELECT * FROM FOO WHERE (NAME LIKE ?) || (NAME LIKE '%')"
209デフォルトの名無しさん:2007/11/28(水) 09:14:03
javax.xml.xpathの使い方教えてください。
210デフォルトの名無しさん:2007/11/28(水) 09:15:33
import javax.xml.xpath.*;
211デフォルトの名無しさん:2007/11/28(水) 11:19:08
其れ使い方って言うか?
212デフォルトの名無しさん:2007/11/28(水) 15:59:37
Jakarta プロジェクトで J2EE コンテナを作ると言う計画がだいぶ前にあったと
思うんですけど、その後どうなったかご存知ですか?
213デフォルトの名無しさん:2007/11/28(水) 16:44:51
>>212
ん?Apache Geronimoのことか?
http://geronimo.apache.org/
214デフォルトの名無しさん:2007/11/28(水) 17:13:40
下記のプログラムの意味を教えてください。
よろしくお願いします。
import java.util.Comparator;

class A {
public static final Comparator<A> COMPARATOR = new Comp();

private static class Comp implements Comparator<A> {
public int comparator(A d1, A d2) {

----------------------
}
}
}
215デフォルトの名無しさん:2007/11/28(水) 17:15:24
javadoc嫁
216デフォルトの名無しさん:2007/11/28(水) 17:21:57
>>214
Aというクラスがある
Aのstaticな内部クラスとして、Compがある
CompはAクラスのComparatorを実装している
Aクラスには静的変数(定数)としてCompが定義されている

という意味だ。
217デフォルトの名無しさん:2007/11/28(水) 17:28:13
>>214
そのCompクラスはAの中でしか使わないからAの中で定義されてる
>public static final Comparator<A> COMPARATOR = new Comp();
は、毎回Compクラスのインスタンスを作らなくてすむようにするためのおまじない
218デフォルトの名無しさん:2007/11/28(水) 17:30:08
Comparatorを『staticネストクラス』として定義しておくと差し替えが利きやすい。
たとえば複素数の比較に『絶対値で比較』『実数部で比較』みたいな複数の比較演算を用意できる。
しかもインスタンスさえあればprivateなフィールドやメソッドにも触れるので実装を隠蔽したままメソッドを書ける。
219217:2007/11/28(水) 17:33:49
見間違えてた
>>217の2行目は忘れて
220デフォルトの名無しさん:2007/11/28(水) 19:09:35
String.hashCode()は、遅延計算(?)してるにも関わらず、
計算時に同期処理をしていませんが、何故問題が起きないのでしょうか。
また、それで問題にならないのにconcurrent.utilの
AtomicIntegerが用意されたのはどんな理由からでしょうか。
221デフォルトの名無しさん:2007/11/28(水) 19:20:05
>>220
String#hashCode()は、何回計算しても毎回同じ結果にしかならないので、同期してなくても問題ない
あるスレッドが計算完了した結果が他のスレッドに伝わってなくても、
再計算することになるので効率は悪いが、計算結果はいつも一緒

AtomicInteger は、そういう単純なケースじゃ済まないときのため
222デフォルトの名無しさん:2007/11/28(水) 19:25:11
あぁ、あと、最終結果が代入されるだけで、計算途中の中間結果は保存されないからだな。
他のスレッドから見えるのは、初期値のゼロか、最終結果かの2択しかない。

別のスレッドが計算した結果がまだ自分のスレッドには見えてなければ、再計算。
別スレッドの方が先に計算完了しても、そのフィールドには結局同じ値しか書き込まれないので、混乱はまったくない。
223デフォルトの名無しさん:2007/11/28(水) 20:42:51
AtomicIntegerが必要なのは値のインクリメントっていうか、
getやset単体ではvolatileつけるだけでスレッドセーフになるのに『getして+1してsetする』という
お決まりの動作は手動でsynchronizedしないとスレッドセーフになってなかったから出てきた。
AtomicIntegerを使えば、システム側がその『getして+1してsetする』みたいな単位で
メモリの処理をやってくれるからsynchronizedしなくても自動的にスレッドセーフになるような、まぁそういうもの。
224デフォルトの名無しさん:2007/11/28(水) 20:46:02
はじめまして。
質問があるので書き込みさせていただきます。


現在アプリケーションを作成していて、AWT/Swing/SWTが混在しています。
元がSWTなんですが、Swingで作っているパネルをSWTと連携させるためにSWT_AWTを利用して
SWTに貼っています。
Swingのpanelは連携するときにAWTのFrameになるため、3つが混在している状態になります。


ここで本題なのですが、Swingのpanel部分にスクロールバーをつけることになりました。
普通ならSwingなのでJScrollPaneを利用したらいいのはわかるのですが、AWTのFrameが挟まれているため上手く出来ません。
対処方法などはあるのでしょうか?
225デフォルトの名無しさん:2007/11/28(水) 20:56:29
AWT/SwingとSWTまぜんなよ
226デフォルトの名無しさん:2007/11/28(水) 21:11:41
>>225
すみません。
Skype apiを利用しているため、SWTありきなんです。
227デフォルトの名無しさん:2007/11/28(水) 21:12:13
AWTのScrollPaneを使うか、Java7を待つ
228デフォルトの名無しさん:2007/11/28(水) 21:15:24
ならばSWTだけで組めばいいじゃん
229デフォルトの名無しさん:2007/11/28(水) 22:05:02
トリプル混ぜは初めて聞いたな。
その発想はなかったわ。

というかSWTはネイティブ依存しすぎてるからAWTより混ぜるな危険なんじゃない?
というかSWT使うならAWT/Swing要らんだろ。
230デフォルトの名無しさん:2007/11/28(水) 22:40:26
混ぜるな危険
いや、マジでちゃんぽんはろくなことないぜ
231デフォルトの名無しさん:2007/11/28(水) 22:55:49
将来それらが大丈夫だとしても、まず保守性を考えた時点で実務じゃやらないなぁ。
似通ったAPIを3種も混ぜるとかちょっとありえない。
awtにFileChooserが登場したら、それだけは使うかもだけど。
232デフォルトの名無しさん:2007/11/28(水) 22:57:05
平気でまぜちゃう神経が怖い
233デフォルトの名無しさん:2007/11/28(水) 23:07:51
Skype API → SWT 必須
プログラマ → SWT 分かんねー、必要最小限にとどめたい

というありがちな構造なのでは。サーバサイドの業務システムでもよくあるし。
Wrapper や Facade で何重にも包んだクラスたちが脳裏に浮かびます。
234デフォルトの名無しさん:2007/11/28(水) 23:11:31
WrapperやFacadeで包むくらいの能力があれば、SWT覚えるだろw
もっとカオスなコードだと思われ
235デフォルトの名無しさん:2007/11/28(水) 23:18:22
担当者のリビジョンが 6 くらいで 3 世代目以降は管理されてないとか。
何で POI の JAR が入ってるかさっぱり分かんないけどとりあえず現状維持みたいな。
236デフォルトの名無しさん:2007/11/28(水) 23:20:49
そういやJSR-198ってどうなったんだろう。IDE共通のプラグイン規格のやつね。
SunもIBMもExpert Groupだったはずだが、可決後もさっぱり音沙汰ないね。
237デフォルトの名無しさん:2007/11/28(水) 23:49:51
>>130
ありがとうございます!↓のような感じで出来ました。
{char source[] = new char[4096];
int len;
while((len = br.read(source)) != -1){
sb.append(source, 0, len);
}}
改行文字をわざわざ付けなくても良くなったのでスッキリしました。ありがとうございました。
238デフォルトの名無しさん:2007/11/29(木) 00:23:13
ApacheのHttpClientを使いmultipartのリクエストを投げたいと考えています。
が、昔あったCommonsの頃にあったクラスがなくなってしまったようで、途方にくれています。
解決策ありましたらばご教授願います。
239デフォルトの名無しさん:2007/11/29(木) 00:34:43
エスパー募集中
240デフォルトの名無しさん:2007/11/29(木) 00:46:36
>>238
ttp://commons.jakarta.jp/httpclient/

以上。後は日本語でおk(ry
241デフォルトの名無しさん:2007/11/29(木) 01:47:09
宿題スレも手伝って〜
242デフォルトの名無しさん:2007/11/29(木) 01:48:26
見てきたが宿題スレはちゃんと機能してるじゃないか。
243デフォルトの名無しさん:2007/11/29(木) 07:25:43
   /⌒ヽ
  / ´_ゝ`)すいません、ちょっとテストしますよ・・・
  |    /
  | /| |
  // | |
 U  .U


public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello, world!");
    }
}
244おしえて君:2007/11/29(木) 07:32:16
すいません。教えて下さい。

例えば
System.out.println
Systemはクラス
outはフィールド(java.io.PrintStreamのインスタンス)
printlnはメソッドですが

このように
A.B.C
の形をしたものというのは、クラス、フィールド、メソッドと思っていいのでしょうか?

また、outはフィールドだけど、java.io.PrintStreamのインスタンスというような使い方
はjavaで何か特別な方法として名前がつけられてるんでしょうか?
(継承、インタフェース、みたいな名前がつけられてる?)

質問がわかりにくいかもしれませんがお願いします

245デフォルトの名無しさん:2007/11/29(木) 09:07:46
> A.B.C
> の形をしたものというのは、クラス、フィールド、メソッドと思っていいのでしょうか?
よくありません。

> また、outはフィールドだけど、java.io.PrintStreamのインスタンスというような使い方
> はjavaで何か特別な方法として名前がつけられてるんでしょうか?
特別な方法ではありません。
246デフォルトの名無しさん:2007/11/29(木) 09:18:10
Systemクラスのoutフィールドにはstaticという識別子が付いています。
staticの付いているフィールドはインスタンス化しないでも使えます。
定数にメソッドが付いているって感じです。以下、サンプル。

import java.io.*;

class MySystem
{
    static int HOGEGE = 12345;
    static PrintStream out;

    static {
        try {
            out = new PrintStream
                (new FileOutputStream("output.txt", true), true);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public class HelloWorld
{
    public static void main(String[] args)
    {
        for (int i = 0; i < 10; i++) {
            MySystem.out.println(i + " " +
                                 MySystem.HOGEGE + " " +
                                 "Hello, world!");
        }
    }
}
247デフォルトの名無しさん:2007/11/29(木) 09:29:27
>>244
Javaの場合は命名ルールに従っていれば簡単に見分けが付く
最後に()がついている単語はメソッド
付いていない場合、大文字から始まればクラス名、小文字から始まれば変数名(ローカル変数orインスタンス変数orクラス変数)。

System.out.println() である場合、
Systemはクラス名。
outはフィールドになるが、クラスに紐付いているのでクラス変数と判断できる
println()はメソッドであるから、outの型(クラス)のメソッドと判断できる
248デフォルトの名無しさん:2007/11/29(木) 09:45:01
〜秒後に計算結果を表示させるにはどんな
コマンドを使ったらいいですか?
249デフォルトの名無しさん:2007/11/29(木) 09:49:06
Timer クラス

単に処理を止めるだけなら Thread.sleep()
250デフォルトの名無しさん:2007/11/29(木) 10:04:59
>>249
ありがとうございます
251デフォルトの名無しさん:2007/11/29(木) 10:08:04
252デフォルトの名無しさん:2007/11/29(木) 10:10:39
staticな変数の名前は全部大文字&アンダースコア単語区切りにするってのが共通認識だと思っていたんだけど、
最近は普通のインスタンスみたいに先頭小文字方式にするようになったの?SystemクラスしかりColorクラスしかり。
253デフォルトの名無しさん:2007/11/29(木) 10:15:07
Javaではあんまりしないんじゃないの?Eclipseでも警告されるしね。
254デフォルトの名無しさん:2007/11/29(木) 10:15:30
>>252
最近つってどちらも JDK 0.9 の時代からそうなんだが。
255デフォルトの名無しさん:2007/11/29(木) 10:18:19
>>252
どこの共通認識だよw
public static finalだったら大文字&アンダースコア単語区切りだろうけど。
256252:2007/11/29(木) 10:33:31
>>255
!!!!1!1!!2121!!
257デフォルトの名無しさん:2007/11/29(木) 10:33:37
>>255
System.out の事だろう

outはいまさらOUTに変更できないから仕方なし
ColorはredとREDの両方が定義されているので後者を使うほうがベターかね
258デフォルトの名無しさん:2007/11/29(木) 10:45:19
>>257
だってそれ定数じゃないしwww
259デフォルトの名無しさん:2007/11/29(木) 10:56:32
ねえ。プログラマやめて5年くらいたつんだけど、またやりはじめたんだけど、

Struts勉強したいんだけど、だいぶ前に買ったStrutsの本で大丈夫かな?Struts1.1ってかいてあるけど。

Struts2系は本がないんで、とりあえずStruts1.2くらいの知識をつけたいんだけどさ。

だめかな?やっぱり。
260デフォルトの名無しさん:2007/11/29(木) 11:01:19
プログラマ?うそつきめ
261デフォルトの名無しさん:2007/11/29(木) 11:04:20
疑問なんだが、strutsを使うような場面って少なくない?
小さいwebサイトをstrutsを使って作るとか言ってるマネージャーがいたら、
俺はそいつを信用しなくなるぜ。
スポーツハンティングに出かけると言って、戦車で出かけるようなもんじゃないか?
262デフォルトの名無しさん:2007/11/29(木) 11:04:33
>>260 ほんとだよ。トヨタ系で働いてたよ。
5年にもならないかな4年位かな。まだ、Strutsとか出始めたばかりで
Web+DBPressもNo.4からNo.12くらいまで買ってたよ。

T●Sでやってたもん。
263デフォルトの名無しさん:2007/11/29(木) 11:06:15
ぼくはでんせつのぷろぐらまだったんだ。

そんなことはいいけど、Struts1.1でもいいか教えてよ。
264デフォルトの名無しさん:2007/11/29(木) 11:13:01
>>261
世の中には髪のとがった上司が多いのですよ。
phpぐらいでいいような気がするけどね。普通なら。
265デフォルトの名無しさん:2007/11/29(木) 11:27:56
javaで連想配列使いたいんですが
Hashtable<String, Integer> table = new Hashtable<String, Integer>();
table.put(byteFrequency1[j-1],1);
 このように変数と変数を引数にとるとエラーでます。。。だめなんですかね??
266デフォルトの名無しさん:2007/11/29(木) 11:32:22
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
hashMap.put("key1", 1);
hashMap.put("key2", new Integer(2));
hashMap.put(obj.toString(), 3);
hashMap.put(obj.toString(), new Integer(4));
267デフォルトの名無しさん:2007/11/29(木) 11:34:35
Strutsって「戦車」と例えるほどたいそうなフレームワークか?
Webアプリケーションのテンプレート(ひな形)が用意されてるだけってだけじゃん。
慣れていれば、小さいアプリにだって使うよ。
Validatorとか画面遷移とか自分たちで作ってバグ仕込んでたらバカみたいだし。

あるものは使う。車輪の再発明はしない。
268デフォルトの名無しさん:2007/11/29(木) 11:36:43
byteFrequency1[j-1]
ここがやばそうな気がする。
何が入っているのかは知らんけど。
269デフォルトの名無しさん:2007/11/29(木) 11:37:29
>>265
どんなエラーだい?
byteFrequency[j-1]というのは String ?
270デフォルトの名無しさん:2007/11/29(木) 11:42:41
>>267
慣れていればでしょ?

昔、覚えさせられたんだけど、新しいところは誰も使えないからなぁ。
sevletとかjspを知っているのなら、1日で使えるようになると思うけど、
1からやるのはあまり宜しくない気がする。
java使えるだけの人なら、1週間ぐらいは拘束されるんじゃない?

まぁ、俺はロジック担当なんであまり詳しいことは知らん。
何回か使ったことがあるという程度の知識なんで、間違ったことを言っていたらスマソ
271デフォルトの名無しさん:2007/11/29(木) 11:45:14
>>265
ループを使ってるのなら、
チェックのために、一度
byteFrequency1[j-1]
を出力させてみたら?

たぶん、nullとかが混じってるんじゃない?
272デフォルトの名無しさん:2007/11/29(木) 11:49:47
というか、HashMapを使うべきだよね。
273デフォルトの名無しさん:2007/11/29(木) 12:59:02
265です。たくさんのレスありがとうございます。
エラー内容は
 test.java:39: シンボルを見つけられません。
シンボル: メソッド put(int,int)
場所 : java.util.Hashtable<java.lang.String,java.lang.Integer> の クラス
table.put(byteFrequency1[j-1],1);
^
エラー 1 個

です。byteFrequency1[j-1] には0〜255の数値がはいっているんですが・・・。
hashmapとhashtableは何が違うんですかね??
274デフォルトの名無しさん:2007/11/29(木) 13:01:19
String str = null;
str = byteFrequency1[j-1];
これがコンパイル通るかどうか解るか?
275デフォルトの名無しさん:2007/11/29(木) 13:02:35
WebLogicなんですがwarをデプロイしたときにJSPもコンパイルされるように
設定する方法はないでしょうか?
初回アクセス時が遅いので困っています。
276デフォルトの名無しさん:2007/11/29(木) 13:10:14
>>274
コンパイル通りません。
277デフォルトの名無しさん:2007/11/29(木) 13:42:56
>>273
int⇒int のマップをしたいのに、なんで Hashtable<String,Integer> なんだい。
278デフォルトの名無しさん:2007/11/29(木) 14:21:13
>>277
Hashtable<Integer,Integer>にしたらコンパイル通りました。
みなさんありがとうございます。
279デフォルトの名無しさん:2007/11/29(木) 14:50:34
ファイルから16バイトずつを読み込み配列にいれていきたいのですが
今 
InputStream bin1= new FileInputStream(new File(FileName1));
ループ
Value[i++]=bin1.read();

で、1バイトずつの読み込みはうまくいっているんですが・・。

InputStream bin1= new FileInputStream(new File(FileName1));
byte[] data = new byte[16];
ループ
Value[i++]=bin1.read(data);

ではだめなのでしょうか??





280デフォルトの名無しさん:2007/11/29(木) 14:59:47
>Value[i++]=bin1.read(data);

そのValueは何よ?
281デフォルトの名無しさん:2007/11/29(木) 15:03:34
>>280
すいません。Valueはint型の配列です。
282デフォルトの名無しさん:2007/11/29(木) 15:06:13
javaでメール送信すると下記のエラーメッセージが出ます。
どうすればよいのでしょうか?

Caused by: javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
javax.mail.SendFailedException: 550 5.7.1 <[email protected]>... Relaying denied. IP name lookup failed [xxxx.xxxx.xxxx.xxxx]

at javax.mail.Transport.send0(Transport.java:219)
283デフォルトの名無しさん:2007/11/29(木) 15:16:58
>>281
16バイトずつ読み込むのに、4バイトしかないint型に格納しようっていう、その時点で疑問に思わない時点で問題
284デフォルトの名無しさん:2007/11/29(木) 15:20:14
コンストラクタと継承について教えてください。以下のようなプログラムを書きました。

A1|public class Oya {
A2|  protected int v1;
A3|  public Oya () {
A4|    v1 = 10;
A5|  }
A6|  public void printValue() {
A7|    System.out.println("v1=" + v1);
A8|  }
A9|}

B1|public class Ko extends Oya {
B2| public Ko () {
B3| }
B4|}

C1|public class Main {
C2|  public static void main(String[] args) {
C3|    Ko ko = new Ko();
C4|    ko.printValue();
C5|  }
C6|}

実行すると v1=10 となるですが、これがよくわかりません。
私は以下のように考えていました。
・Koのスーパークラスの Oya のインスタンス変数v1が、int なので 0 で初期化される
・Oyaの引数なしコンストラクタ内では、v1 に 10 を代入しているが、
 Ko の引数なしコンストラクタが呼ばれていて、Oya の引数なしコンストラクタを
 オーバーライドしているので、v1 は 0 のままのはず
・printValue() では、v1=0 が表示されるはず
サブクラスで引数なしコンストラクタを定義していて、そのなかで super() を書かなくても、スーパークラスの引数なしコンストラクタが呼ばれるのでしょうか?
285デフォルトの名無しさん:2007/11/29(木) 15:26:13
>>284
そういう事。
コンストラクタの1行目にsuper(xx)が明示されていない場合、暗黙的にsuper()が実行される。
ためしに、Oyaクラスのコンストラクタに引数を追加してみよう
Koのコンパイル通らなくなる。
286デフォルトの名無しさん:2007/11/29(木) 15:30:41
ちなみに、コンストラクタはメソッドではないので、オーバーライドじゃない(できない)。
それぞれのクラスに定義されるので、staticメソッドに近い存在。
でも、引数が異なる場合はコンストラクタのオーバーロードと呼ぶ
287284:2007/11/29(木) 15:38:02
どうもありがとうございます。そういうものということで理解しました。
>>285 やってみました。コンパイルできなくなりました。
1行目に super() を書くかどうかで挙動が変わるのか・・・・

>>286
> ちなみに、コンストラクタはメソッドではないので、オーバーライドじゃない(できない)。

なるほど。オーバーライドという考えを捨てないとだめか。
Oya に String name という属性を追加して、 public Oya (String name) { this.name = name; }
という引数アリコンストラクタを定義し、Ko では引数ありコンストラクタを定義しないでおいて、
>>284 の C3行目で
Ko ko = new Ko("tarou");
とやっても、コンパイルエラーがでる(Ko に引数ありコンストラクタがないといわれる)のが
わかりました。

# やるまえは、Oya の引数ありコンストラクタの振る舞いが継承されると思っていた。
288デフォルトの名無しさん:2007/11/29(木) 15:57:45
すみません、スレッドダンプの取得方法について質問です。

普通のjavacであれば、javaのプロセスに対してSIGQUIT(kill -3)を
送ってやれば標準出力にダンプが出るのは解ったのですが、
CentOS5のjavacは GCJ(GNU Compiler for the Java?) とかいう
シロモノらしく、SIGQUITしてもダンプが出力されません。
GCJでスレッドダンプを出力する方法をご存知のエロい方
いらっしゃいましたらぜひご教示ください m(__)m

いま、涙目でGCJのドキュメントを読んでいるのですが…
ポインタだけでもいいのでなにとぞよろしくお願いします。
289デフォルトの名無しさん:2007/11/29(木) 16:02:51
>>279-281,283
そこにも問題があるかもしれないが、仕様を読め。戻り値のところを特に。
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/io/InputStream.html
290デフォルトの名無しさん:2007/11/29(木) 16:03:56
解らんけど、JConsoleあたりで覗くとかじゃ見えないか?
291288:2007/11/29(木) 16:13:01
>>290さん
スレッドダンプが見たいのはコンソールアプリではなくTomcat上の
プロセスなんです。あとバージョン1.4.2ってのもあって
JConsoleは使えなさそうです。
情報不足でした、ごめんなさい。ご返答ありがとうございました。
292デフォルトの名無しさん:2007/11/29(木) 16:24:52
>>282
「SendFailedException invalid address」でぐぐると良いかもしんない
293デフォルトの名無しさん:2007/11/29(木) 16:29:55
294288:2007/11/29(木) 16:57:55
>>293さん
なるほど。gdbで稼働中のjavaプロセスをアタッチして、signal 3すれば
よさそうな気がしてきました!

java専用サーバってことでgdb入ってなかったので、まずはそこから… orz

レスありがとうございましたー
295デフォルトの名無しさん:2007/11/29(木) 17:21:56
>>294
ユーザが gdb 入れてもいいレン鯖なら、gcjじゃなくて本物の java 入れたほうが早くないか?
296デフォルトの名無しさん:2007/11/29(木) 17:22:18
スレッド(のライフタイム・状態)を可視化する無料のツールってない?

 ・既存のコードにあまり改変を加えなくて済む
 ・いつからいつまでどのスレッドがアクティブ・wait状態だったかが一目でわかる

理想はこんな感じ

-----------------------------------------------> time
Thread1 +++++++++++++-----------++++++++++++
Thread2       ++++++++++
Thread3   +---------------+++++++++++++++++
・・・
Threadn                    +++++++++

(+:active, -:wait)
297デフォルトの名無しさん:2007/11/29(木) 17:24:45
本に乗っていたサンプルコードに
引数が四個と2個のコンストラクターしかないのに
引数3こで呼び出していました。
これはどういう意味ですか?
298デフォルトの名無しさん:2007/11/29(木) 17:35:28
>>296
無料じゃ見たことないな

>>297
可変引数じゃね?
てか、ソース書けよ
299デフォルトの名無しさん:2007/11/29(木) 17:43:34
本に乗ってたソース書きます
public TimerCallback (TimerObserver g, Object o){
  setCallback(g,o);
}

public TimerCallback (int iv, int flg, TimerObserver g, Object o){
  setCallback(iv,flg,g,o);
}
↑コンストラクタ

これを使う奴

TimerCallback c1= new TimerCallback(interval, Timercallback.ONESHOT, this );
300デフォルトの名無しさん:2007/11/29(木) 17:46:43
>>299
お前が何か見落としてるか、本が間違ってるか
無いものは呼べない
301デフォルトの名無しさん:2007/11/29(木) 17:53:25
本はあなたのコードを賢くするデザインパターンという本です。
この本はとても途中から解りにくくて難しいので初心者にはお勧めしません。
いまは他の本を買えばよかったと思ってます。
302デフォルトの名無しさん:2007/11/29(木) 18:34:10
>>299
クラスの修正があって、その前後で仕様が変わってるとか…

>>301
ナムナム(−人
ttp://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-1106-1
> 対象読者:中級者
303デフォルトの名無しさん:2007/11/29(木) 19:39:58
出版元に問い合わせたら?
正誤表すらない本だけどなw
304おしえて君:2007/11/29(木) 20:29:31
>>245
ありがとうございます
調べているとたしかにA.B.Cの形で、クラス.クラス.フィールドというのがありました

>>246
ありがとうございます
たしかにstaticのついたクラスはインスタンス化せずに呼べましたね
見落としてました

>>247
ありがとうございます
まずは、命名ルールから見るのが良さそうですね
A.B.Cなんていう形から見るもんじゃありませんでしたね…

305デフォルトの名無しさん:2007/11/29(木) 21:04:58
最近JAVAでテキストファイルの入出力覚えたんですけど
javaプログラムから任意のディレクトリに指定した名前のファイルを生成してそこに書き込み、っていうのはどうやるんですかね?
ただ単に出力しても「ファイルがない」ってエラーになりますよね
306デフォルトの名無しさん:2007/11/29(木) 21:13:24
File#createNewFile()みたいなのがなかったっけ?
任意ディレクトリの存在チェック、作成も忘れずに〜
307デフォルトの名無しさん:2007/11/29(木) 21:29:07
LinkedList foo[] = new LinkedList[3];
これだと

警告:[unchecked] raw 型 java.util.LinkedList のメンバ
としての add(E) への無検査呼び出しです。

とでてしまうので2.0対応に書き換えたいのですが
ListedList<int> foo[] = new ListedList<int>();
ではコンパイルが通りませんしぐぐっても1時配列の例しかのってませんでした。

やりたいことはArrayそれぞれの中にLinkedListを格納する操作です
308デフォルトの名無しさん:2007/11/29(木) 21:29:20
>>305
俺も変わらないレベルの初心者だけど
if(!file.exists()){
  if(!file.getParentFile().exitsts()){
    file.getParentFile().mkdirs();
  }
  file.createNewFile();
}
こんな感じ?
309途中でEnter押しちゃった:2007/11/29(木) 21:30:21
どう書けば良いのでしょうか?
310デフォルトの名無しさん:2007/11/29(木) 21:31:13
ああ、グダグダだ〜
>>307=309 です
311デフォルトの名無しさん:2007/11/29(木) 21:34:59
>>307
@SuppressWarnings("unchecked") を付ける
あと、<int> じゃなくて <Integer> な
312デフォルトの名無しさん:2007/11/29(木) 21:36:45
>>305
ならないよ
ディレクトリさえ存在してれば、ただ単に出力すればファイルが出来る
ディレクトリが存在してなかったら、ディレクトリは作る必要がある
313デフォルトの名無しさん:2007/11/29(木) 21:45:57
ApacheHttpComponentを使い、multipartでPOSTするプログラムを作っております。
http://jakarta.apache.org/httpcomponents/

HttpEntityを生成するところなのですが、リクエストは投げられるもののサーバーで解析に失敗するようです。
なにかヒントはないでしょうか?
        File file = new File(imageUrl.toURI());
        String boundary = "aab03x";
        int length = (int) file.length();
        byte[] bytes = new byte[length];
        FileInputStream input = new FileInputStream(file);
        if( input.read(bytes) != length) {
            throw new IOException("Cant read:" + file);
        }
        String boundaryLine = "--" + boundary + "\r\n";
        String boundaryEnd = "\r\n--" + boundary + "--";
        StringBuilder data = new StringBuilder();
        data.append(boundaryLine);
        data.append("content-disposition: form-data; name=").append(file.getName()).append("\r\n");
        data.append("content-type: image/jpeg\r\n");
        data.append("\r\n");
314デフォルトの名無しさん:2007/11/29(木) 21:49:09
        byte[] charBytes = data.toString().getBytes();
        ByteArrayOutputStream out = new ByteArrayOutputStream(length + charBytes.length + boundaryLine.length());
        out.write(charBytes, 0, charBytes.length);
        out.write(bytes, 0, bytes.length);
        out.write(boundaryEnd.getBytes(), 0, boundaryEnd.length());
       
        ByteArrayEntity entity = new ByteArrayEntity(out.toByteArray());
        entity.setContentType("multipart/form-data; boundary=" + boundary);
        out.close();
        input.close();

アップロード先はアップローダーなので、詳しいエラーは不明です。
レスポンスはINTERNAL SERVER EROOR
315デフォルトの名無しさん:2007/11/29(木) 21:49:19
>>307
2.0対応って?C#2.0を言ってる?Javaは5からなんだけど。
316デフォルトの名無しさん:2007/11/29(木) 22:04:53
>>313
パケットキャプチャしてIEでアップロードしたときと
同じになるように調整したらうまくいくよ。
317デフォルトの名無しさん:2007/11/29(木) 22:15:11
318121:2007/11/29(木) 23:23:39
>>196
> >>121
> 亀レスだが、Commons Collectionsってのがあって内部イテレータ用のインタフェースが用意されている。

こちらも遅レスですが、org.apache.commons.collections.functors 関連のこ
とでしょうか?ぜんぜん知りませんでした。
http://commons.apache.org/collections/api-release/org/apache/commons/collections/functors/package-summary.html
なんだかSTLみたいですね。Javaで擬似クロージャが使えて、関数的プログラ
ミングができるとは、ありがたいことです。

> また、JDK1.7ではクロージャが追加されるとの話もある。

こちらは聞いたことがありました。
「ついにJavaにもクロージャ? - James Gosling氏らJDK7へ導入提案」
http://journal.mycom.co.jp/articles/2006/08/23/java7closuer/
James Gosling: The Black Hole Theory of Design
http://www.rubyist.net/~matz/20060914.html#p01
319デフォルトの名無しさん:2007/11/29(木) 23:32:05
友人とjavaでゲーム製作している者です。

プロジェクトを定期的にjarにしてバックアップをとってるんですけど、
jarファイル同士を比較して、差異のあるクラスを出してくれるようなソフトってありませんか?

ソースまで復元して差異を見れるとより良いんですが。
320デフォルトの名無しさん:2007/11/29(木) 23:36:06
それくらいなら自分で作ってみればよくない?
逆コンパイルならjadを呼び出せば可能だし。
321デフォルトの名無しさん:2007/11/29(木) 23:46:04
へー、クロージャーってのができるんだ。まぁシンタックスシュガーだけで実現できそうだが。
322デフォルトの名無しさん:2007/11/29(木) 23:46:36
>>319
SVNなりバージョン管理ツール導入した方が楽だし早い
323デフォルトの名無しさん:2007/11/29(木) 23:54:01
>>311
できれば新しい書き方に対応させたく思います
>>315
1.4の次だから脳内でかってに2.0にされてました…. orz
324デフォルトの名無しさん:2007/11/29(木) 23:54:30
>>319
Eclipse の比較は Jar や ZIP の中を見てくれる。それにしても CVS で管理してなきゃ
ローカルヒストリーでだけだが。
325デフォルトの名無しさん:2007/11/29(木) 23:57:26
Java RTSによる金融アプリケーションの作成
http://codezine.jp/a/article/aid/1866.aspx?p=3

デモを動かそうと思ったのですが、JMS(java system application server?)の
設定方法が分かりません。
JMSトピックの送り先 というのはどこで設定するのでしょうか?
326デフォルトの名無しさん:2007/11/29(木) 23:58:30
>>323
っつっても、Genericな配列を作ることはできないので、@SuppressWarnings を付けるしかないんだよ。
327デフォルトの名無しさん:2007/11/30(金) 00:03:22
警告抑止するくらいなら <?> で良いんじゃん。
328デフォルトの名無しさん:2007/11/30(金) 00:11:39
PixelGrabberを使ってある座標(1ピクセル分)のRGB値を取得しようと思うんですが、どうすればよいのか分かりません。
座標は分かってるものとして、赤、緑、青の値をそれぞれint型にして取得する、というものです。
よろしくお願いします。
329デフォルトの名無しさん:2007/11/30(金) 00:13:17
そりゃあ <?> で済むのならいいけどな。
add を呼べないだろ。
330デフォルトの名無しさん:2007/11/30(金) 00:15:12
>>328
PixelGrabberのJavadocに書いてあるサンプルを見れば出来ると思うが
331デフォルトの名無しさん:2007/11/30(金) 00:34:40
>>326
そうなんですか。まだ難しいことはできないので
今回は素直に警告抑止しておきます
332デフォルトの名無しさん:2007/11/30(金) 00:53:07
あれ、総称型の配列って作れないんだな。
まぁリストのリストで 2 次元, 3 次元実現すりゃ良いじゃん。
ArrayList ならどうせ配列の Wrapper なんだし。

List<List<Integer>> hoge = new ArrayList<List<Integer>>();
333デフォルトの名無しさん:2007/11/30(金) 01:42:42
Genericsなんだけど、obj instanceof T って出来ないんだな
型チェックが必要な時ってどうしてる?
334デフォルトの名無しさん:2007/11/30(金) 01:44:49
>>333
どーにかして Class<T> c を渡して c.isInstance(obj)
335デフォルトの名無しさん:2007/11/30(金) 02:12:15
class.getName()
336デフォルトの名無しさん:2007/11/30(金) 02:49:51
>>333
try {
T t = (T) obj;
} catch (ClassCastException e) {
e.printStackTrace();
// ハズレの処理
}
337デフォルトの名無しさん:2007/11/30(金) 03:02:46
>>336
嘘を教えないように。(T)obj は無検査キャストだから
あんまし意味の無いコードになる。Tの範囲にもよるけど。
338デフォルトの名無しさん:2007/11/30(金) 03:09:54
宿題スレから誘導されたので。http://pc11.2ch.net/test/read.cgi/tech/1191108260/867
こういった問題を解いているのですが、以下のコードを改造してトーラスに光を当てたいです。
これのトーラス1に光源を当てる場合はどういう風に改造すれば良いのでしょうか?
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29894
339デフォルトの名無しさん:2007/11/30(金) 12:45:12
スーパークラスのスタティックフィールドは、同じスーパークラスを持つ
サブクラス共通のスタティックフィールドになるんですか?
340デフォルトの名無しさん:2007/11/30(金) 12:56:59
>>339
根本的な部分で誤解していると思うが、共通のスタティックフィールドという概念はない。
スーパークラスにあるstaticフィールドに対してて、サブクラスから「スーパークラス名.」を省略して使うことができる。
privateで宣言しているならば使えないけどな。
なので、共通とか云々の問題じゃなくて見えるかどうかの問題。
Aのstaticフィールドhogeはどんな場合でも1つしかない
341デフォルトの名無しさん:2007/11/30(金) 13:06:59
>>337
私の不勉強で恐縮ですが、できましたら、
意味の無いコードになる例を挙げていただけませんか?
342デフォルトの名無しさん:2007/11/30(金) 13:14:43
>>333
型チェックが必要な場面ってどんな場面だ?
型チェックが必要ないようにジェネリクスを使うんじゃないの?
343デフォルトの名無しさん:2007/11/30(金) 13:27:55
スーパークラスのコンストラクタが自動的に呼び出されるときは
引数が同じ奴がよびだされるんですか?
スーパクラスにサブクラスのコンストラクタと引数が違うコンストラクタしかないときは
何もよびだされませんか?
344デフォルトの名無しさん:2007/11/30(金) 13:33:53
>>343
自分で実際にやってみれば解決する問題だろアホかこいつwww
もしかして、それも出来ないとか?
345デフォルトの名無しさん:2007/11/30(金) 13:37:03
>>343
引数の無いやつが呼び出される
引数の無いコンストラクタが無い場合はエラー
346デフォルトの名無しさん:2007/11/30(金) 13:41:06
>>341
実際にやってみればわかる
ClassCastExceptionは起きない

public class Test<T> {
public static void main(String[] args) {
new Test<String>().foo(new Integer(1));
}
void foo(Object o) {
T t = (T) o;
}
}
347デフォルトの名無しさん:2007/11/30(金) 13:48:44
>>345
引数のないスーパークラスのコンストラクターに何もして貰いたくない場合
はサブクラスはどうしたらいいですか?
348デフォルトの名無しさん:2007/11/30(金) 13:58:16
>>347
スーパークラスを作る人に、コンストラクタで何もしないように頼む
349デフォルトの名無しさん:2007/11/30(金) 13:59:29
>>346
ありがとうございます。確認しました。
お騒がせしてすみませんでした。

// 余計な戻り値を付けて、さらにその型に代入していたからなんて....アハハハ_no
350デフォルトの名無しさん:2007/11/30(金) 14:08:23
Generics はバカに使わせるとバグだらけでみょうちくりんな設計になりそうだなと
昨夜からの一連を読んでて思った。
351デフォルトの名無しさん:2007/11/30(金) 14:34:56
クラスのクラスメソッドの並べ順の規定を教えてください。
352デフォルトの名無しさん:2007/11/30(金) 14:39:34
ない。自由。
353デフォルトの名無しさん:2007/11/30(金) 14:41:35
>>351
あいうえお順
354デフォルトの名無しさん:2007/11/30(金) 14:50:28
いちご、すいか、ぞう、みかん、りんご
が良い順番だとは思えないw
355デフォルトの名無しさん:2007/11/30(金) 15:01:44
変数をまとめて初期化するとき。
それぞれに別々の数で初期化する方法と
全部に同じ数で初期化する方法ありますか?
356デフォルトの名無しさん:2007/11/30(金) 15:33:42
ローカルシステムのクロックに惑わされずに時刻間隔を知りたい場合は
RuntimeMXBean の getUptime() の差を使えば良いですか?
357デフォルトの名無しさん:2007/11/30(金) 15:39:22
>>355
別々の数で初期化する方法
x = 1;
y = 2;
z = 3;
同じ数で初期化する方法
x = 1;
y = 1;
z = 1;
358デフォルトの名無しさん:2007/11/30(金) 15:40:07
x = y = z = 1;
359デフォルトの名無しさん:2007/11/30(金) 16:24:22
>>333
こんな場面.
public T<T> getInstance(Class<?> clazz) {
  return (T) containor.getInstance(clazz);
}
このままだと、未検査キャストでWaring出るだろ?
Anotationで黙らせてもいいけど、型チェック可能ならしたい所。
360デフォルトの名無しさん:2007/11/30(金) 16:49:58
>>359
public T<T> getInstance(Class<T> clazz) {
? return clazz.cast(containor.getInstance(clazz));
}

Java5以上ならこれでいけね?
361デフォルトの名無しさん:2007/11/30(金) 16:55:48
>>360
thx!
そんなメソッドが追加されていたとは気がつかなかったぜ
362デフォルトの名無しさん:2007/11/30(金) 18:10:50
JSP の式言語でコレクションのサイズを参照する方法ないですかね?
空かどうかは ${empty col} でできるのは分かったんですけど。
363デフォルトの名無しさん:2007/11/30(金) 18:13:43
在 日 参 政 権 付 与 反 対 デ モ に 来 れ る 者 援 軍 求 む !
http://sports11.2ch.net/test/read.cgi/offmatrix/1196265306/

外国人参政権がなぜいけないか
http://jp.youtube.com/watch?v=reIRrRDzFxE
【政治】 「放置すると、日韓関係にヒビ」 外国人参政権付与、成立への流れ加速も…公明に各党同調、自民反対派は沈黙、首相次第か★20
http://news22.2ch.net/test/read.cgi/newsplus/1196405135/

この法案が成立したオランダじゃ、永住イスラム人がどんどん増え
そのせいで今もどんどん文化と国そのものがぶち壊されちまってる。
そして、オランダ以外のこの法案が成立した国々でも全く同じことが起こってる。

永住外国人にはかなりありがたい法律だけど、国民にとっちゃ百害あって一利なし。

そ ん な 悪 法 が 日 本 で も 成 立 し よ う と し て る ん だ。

こんな大事になのに、マスコミは沈黙を決め込んでいる。
だから 俺らの力で何がなんでも阻止しなきゃならない。
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
このコピペをみた奴はMixiや自分のブログにこのことについて記事を書いてほしい。
どんな簡単な記事でもいい。アドレスを貼るだけでもいい。
もしくは、このコピペをどっかに投下するのでもいい。
とにかくどんな方法でもいいから、できるだけ多くの人にこのことを伝えてほしい。


お願いだ。今回は冗談抜きで日本の未来が危ない。
364デフォルトの名無しさん:2007/11/30(金) 18:47:51
>そのせいで今もどんどん文化と国そのものがぶち壊されちまってる

べつに問題ないだろ
Java的には
365デフォルトの名無しさん:2007/11/30(金) 19:00:48
関数から2つの戻り値が欲しいときはどうするのが
普通ですか?
366デフォルトの名無しさん:2007/11/30(金) 19:06:14
>>364
実生活のないお前には何も関係ないだろ。もうそろそろお母ちゃんが
ご飯もってくる時間じゃねwww。
367デフォルトの名無しさん:2007/11/30(金) 19:15:50
Beanを作る。Mapを詰める。多値用Genericクラスを作るなど。
368デフォルトの名無しさん:2007/11/30(金) 23:12:01
static private int i= 4;
のようにスーパークラスAにクラス変数を作って
Bをサブクラスとすると
A a=new B();
でインスタンスをつくってaのiを調べると0になってます。
どうしても解りません教えてくださいよろしくお願いします。
369デフォルトの名無しさん:2007/11/30(金) 23:21:09
教えてやるからAクラスとBクラス、それからどのようにiの値を調べたかを教えてくれw
370デフォルトの名無しさん:2007/12/01(土) 00:40:32
明解Java入門編で勉強している超初心者なんですが…
この本の演習がわかんなくてイライラして苦しんでます。。

「要素型がint型である配列を作り、全要素を1〜10の乱数で埋め尽くすプログラム」

は作成できたんですが、その次の
「このプログラムを異なる要素が同じ値を持たないように改良しなさい。」

という方ができません。。。

どういうふうに考えたらいいんでしょうか?
よかったらどなたかご教授御願いしますm(_ _)m
371デフォルトの名無しさん:2007/12/01(土) 00:47:25
>>370
どういう所まで勉強しているのか解らないので回答が難しいが、配列でそれをやるのは面倒だと思う(特に改良だと)
配列が10で1〜10の乱数であると仮定しておく。
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(適当な回数) {
  // ランダムでi番目とj番目をスワップ
}
が一番簡単な方法かと思うぞ

強引にやるならば、確定した所まで重複チェックして、重複していたら乱数を入れなおす・・・ってのも出来るけど、激しくバカらしい
372デフォルトの名無しさん:2007/12/01(土) 00:49:43
別の方法として、ArrayListなどに乱数をぶちこんでおいて、ランダム番目から取得して(remove)、埋めるってのもあり。
いわゆるトランプのシャッフルに近いわけで、それをプログラムでどう書くか考えるべし。


・・・・問題悪いね、それ
373デフォルトの名無しさん:2007/12/01(土) 00:52:55
>>370
補足というか重要なヒント
・重複しないように乱数を発生する ⇒ 難しい

・重複しない整数を作成 ⇒ 簡単
・整数をランダムに入れ替える ⇒ 簡単

プログラムを学んでいく課程で重要なのはいかに簡単な処理に分解できるかってコト
374デフォルトの名無しさん:2007/12/01(土) 00:54:12
>>370
配列のサイズが11以上なら不可能乙wって書いた人を煽ってみるとか。
0〜9じゃないなら hit & brow(というゲームがある)の演習でもないしな。
375デフォルトの名無しさん:2007/12/01(土) 00:57:49
>>371 サマ
>>372 サマ
>>373 サマ
>>374 サマ
迅速な回答ありがとうございます!
そういう考えは思い浮かびませんでした(汗)
再び試行錯誤してみます。
376デフォルトの名無しさん:2007/12/01(土) 01:15:52
宿題スレの方の867です。どなたか助けては戴けないでしょうか…orz
377デフォルトの名無しさん:2007/12/01(土) 01:18:29
自分でやれカス
378デフォルトの名無しさん:2007/12/01(土) 01:24:32
>>377
迷惑なのは百も承知です。これが一番最後の宿題なのですが、
まったくできないので…。やり方だけでも教えて戴けるとありがたいです。
379デフォルトの名無しさん:2007/12/01(土) 01:27:14
お前が助からなくても、誰も困らない
380デフォルトの名無しさん:2007/12/01(土) 01:30:12
mixiでも無視され、Schecter涙目wwww
381デフォルトの名無しさん:2007/12/01(土) 01:37:14
>>371
簡単だが、繰り返し回数に関わらず一様な期待値で順列が発生しない
382デフォルトの名無しさん:2007/12/01(土) 01:43:33
>>378
課題スレで待っておけ 土曜だし暇な人がやってくれるだろ
てか、質問あるんならどこが分からないかだけでも書けよ
383デフォルトの名無しさん:2007/12/01(土) 01:46:47
370です。
アドバイスしていただいてからだいぶかかりましたが
やっとできましたっ!(><)
また一つ勉強になりました。
ほんとにありがとうございましたm(_ _)m
384デフォルトの名無しさん:2007/12/01(土) 01:53:45
>>379
orz

>>380
本気で泣きそうです。

>>382
レスありがとうございます。

ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/106.java

光源とテクスチャを設定したみたのですが、トーラスに反映されません。
どうやったら光源とテクスチャがトーラスに反映されるのでしょうか?
385デフォルトの名無しさん:2007/12/01(土) 02:08:17
>>372
だがちょっと待って欲しい。

ArrayListに突っ込むのなら、Collections.shuffleを使うべきではなかろうか?
386デフォルトの名無しさん:2007/12/01(土) 02:10:34
そんなのがあるんだ
じゃあ
Collections.shuffle(Arrays.asList(array));
で完了じゃね
387デフォルトの名無しさん:2007/12/01(土) 02:18:46
今晩わ。
今プログラムしていてコメント付けようと思ってどうせならJavadoc対応にしようと
思ったんですが、javadocのコメントって/** 〜 */じゃないですか。
でも、/** 〜 */って自分的にあんまり使いたくないんですよ。
理由としては、使わなくなったメソッドやクラスをコメントアウトするときに
/* 〜 */ を使うので、javadocのコメントがあると邪魔になるし
見た目も***アスターが並んでなんか見難いという感じがします。
基本//の方が見やすいしメソッドとかも頭に一行コメントつければ
だいたい事足りますし。
自分はエクリプスとかいう高度なエディタは重くて使ってないので
そういう専門のエディタなら賢くやってくれるかもしれませんが、
今のエディタも軽くて気に入っているので手放せません。
388デフォルトの名無しさん:2007/12/01(土) 02:19:53
>>387 の続き
そういうわけで、ここからが本題ですが、
新しいコメントタグを考えてみました。
クラスとかメソッドの先頭コメントは
//@
// コメント
// @author 俺
// @version 1.0
///
public class XXX ・・・
  //@ 一行コメント
  private int iXXX;

 ↓ フィルタ
/**
* コメント
* @author 俺
* @version 1.0
*/
public class XXX ・・・
  /*** 一行コメント */
  private int iXXX;

こんな具合に変換されるようにしたらいいんじゃないかなと思っています。
というわけで、こんなことしてる人他にいますか?
もっといい方法があったら教えてください。
389デフォルトの名無しさん:2007/12/01(土) 02:24:12
>>384
ええい。適当に気になるところを。
Shape3D(Geometry geometry) ではなく、
Shape3D(Geometry geometry, Appearance appearance) ではない?
その appearance に setTexture(texture2d) しておかなくてもいいの?

とかとか

斜め読みの参考先。
たのしいJava 3D
ttp://www.javaopen.org/j3dbook/text/
Java3DTips
ttp://www.antun.net/tips/java3d/
390デフォルトの名無しさん:2007/12/01(土) 02:28:36
>>388
doxygenを使うといいんじゃない?
///でコメント書けた気がする
391デフォルトの名無しさん:2007/12/01(土) 02:42:44
doxygen使うまでもなくその程度なら正規表現とかで実装できるんじゃないか?
392デフォルトの名無しさん:2007/12/01(土) 04:00:27
>>389
レス、ありがとうございます。ただ、サラっと書かれても何をどういじれば良いのか分かりません…orz
393デフォルトの名無しさん:2007/12/01(土) 05:02:44
>>390
ありがとうございます。
自分としては簡単なロジックなんてフィルタ作った方が楽な気がしました。
>>391
意味がわからなかったんで、javadocのオプションかソースの改造でもするのか
と思って探しちゃいましたよw
どうやらフィルタの実装の話みたいですね。
そうですね、javaで作ろうかとも思いましたが
バッチでもできるかもしれませんね。
ただバッチはあまり詳しくないのでjavaフィルタ書いてみます。
ありがとうございました。
394デフォルトの名無しさん:2007/12/01(土) 07:36:55
>>393
自己レスです
@もうざかったんで>>390 の///を参考にして

/// コメント
// @author 俺
// @version 1.0
public class XXX ・・・
  /// 一行コメント
  private int iXXX;

なのを変換するようにしました。
本当にありがとうございました。
395デフォルトの名無しさん:2007/12/01(土) 08:20:07
>>394
便利そうでいいね。その書式をeclipseなんかでも使えればいいんだけど、さすがに無理か。
396デフォルトの名無しさん:2007/12/01(土) 09:31:52
>>394
ぶっちゃけ好みで一般的に定められたフォーマットを崩されるのは迷惑極まりない
個人的に作っているソースで誰も見ないというなら勝手にやって構わないが
他人が読む可能性があるならばヤメレ

>理由としては、使わなくなったメソッドやクラスをコメントアウトするときに
>/* 〜 */ を使うので、javadocのコメントがあると邪魔になるし
消せ。
コメントアウトの用途で/* */を使う方が邪魔
397デフォルトの名無しさん:2007/12/01(土) 09:32:24
どなたかこのプログラムに「○○が××をして□□になる」というふうに
大まかでいいので解説を加えてください。
私はjavaを始めたばかりでほとんどわかりません。
当然自分でも調べてみますがどうかおねがいします。
ttp://www.uploda.org/uporg1137622.zip.html
398デフォルトの名無しさん:2007/12/01(土) 09:42:46
>>397
ガソリンを保存するタンク、タンクを持つ自動車およびガソリンスタンドを表すプログラム
399デフォルトの名無しさん:2007/12/01(土) 14:51:32
>>387
> 使わなくなったメソッドやクラスをコメントアウトするとき
/* 〜 */ を使うと
System.out.println("*/");
なんて処理が途中にあったときにエラーになるじゃないか。
全部 // にしとけばそういう問題はないが。
400デフォルトの名無しさん:2007/12/01(土) 14:53:09
ならねーよw
401デフォルトの名無しさん:2007/12/01(土) 15:05:28
/をエスケープしとけばいいんじゃね?
"*\/"って。
402デフォルトの名無しさん:2007/12/01(土) 18:15:48
>>384

テクスチャを反映させたいだけなら、

        TexCoordGeneration texGen = new TexCoordGeneration();
        texGen.setPlaneS( new Vector4f( 1.0f, 0.0f, 0.0f, 0.0f ) );
        texGen.setPlaneT( new Vector4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
       
Appearance app = new Appearance();
TextureAttributes textureAttributes = new TextureAttributes();
textureAttributes.setTextureMode( TextureAttributes.REPLACE );
app.setTextureAttributes( textureAttributes );
app.setTexCoordGeneration(texGen);
app.setTexture( texture1 );

--
roll.addChild(new Shape3D(new Torus2()));

roll.addChild(new Shape3D(new Torus2(), app));

でも課題の内容からすると、
TexCoordGenerationは使わないで、Torus2クラスの中で自前計算しろってことですな。
続く。
403デフォルトの名無しさん:2007/12/01(土) 18:22:28
↓これはコメントアウト
        //TexCoordGeneration texGen = new TexCoordGeneration();
        //texGen.setPlaneS( new Vector4f( 1.0f, 0.0f, 0.0f, 0.0f ) );
        //texGen.setPlaneT( new Vector4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
//app.setTexCoordGeneration(texGen);

Torus2クラスの中の修正
super(Torus.NUM_POINTS * 2, GeometryArray.COORDINATES | GeometryArray.COLOR_3, Torus.NUM_POINTS * 3 * 2);

super(Torus.NUM_POINTS * 2, GeometryArray.COORDINATES | GeometryArray.COLOR_3 | GeometryArray.TEXTURE_COORDINATE_2, Torus.NUM_POINTS * 3 * 2);

以下を追加
float[] tex = new float[Torus.NUM_POINTS * 3 * 2];

for (int j = 0, count = 0, count2 = 0; j <  Torus.NUM_POINTS_OUTER; j++) {

for (int j = 0, count = 0, count2 = 0, count3 = 0; j <  Torus.NUM_POINTS_OUTER; j++) {

ループの中に追加
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ

setColorIndices(0, ind)の下の追加
setTextureCoordinate(0, 0, tex);
setTextureCoordinateIndices(0, 0, ind);

ほげほげの部分は自前計算。どうマッピングするかの座標を計算するだけー。
404デフォルトの名無しさん:2007/12/01(土) 18:22:36
 宿 題 ス レ で や れ
405デフォルトの名無しさん:2007/12/01(土) 18:43:43
向こうは丸投げ推奨なので
自分で宿題やりたいけど色々解らないので教えてもらいたい人は
こっちでお願い
406デフォルトの名無しさん:2007/12/01(土) 18:45:38
あっちは練習ドリル的なスレなのか
407デフォルトの名無しさん:2007/12/01(土) 18:48:13
つか、マルチじゃねーかよw
408デフォルトの名無しさん:2007/12/01(土) 22:16:25
丸投げマルチをこっちで答えるのは好ましくない
409デフォルトの名無しさん:2007/12/01(土) 22:55:07
デザインパターンを適用したプログラミングをしたいです。
お題をだしてくれて添削してくれるスレないかな?

410デフォルトの名無しさん:2007/12/01(土) 23:08:36
ここでいいんじゃね?
だけどデザパタを適用するにはある程度の規模でないと意味がないから、長いソース読んでくれる暇人がいるかどうかはシラネ
お題はどんな感じがいいのか、あと>409のスペックを書いておくべし
411デフォルトの名無しさん:2007/12/01(土) 23:22:53
デザパタならこちらのスレでやるべし。
「【GoF】デザインパターン 6
http://pc11.2ch.net/test/read.cgi/tech/1141846078/
412デフォルトの名無しさん:2007/12/02(日) 00:06:12
>>411
Javaで実装したいならばこのスレでいいと思うが?
デザパタスレに特定の言語の実装を持ち込まれても困る
413デフォルトの名無しさん:2007/12/02(日) 00:37:33
>>405
丸投げ推奨なのは課題文の話。
ただでさえ屑講師の意味不明な課題なのに
それを生徒がさらに意味不明な解釈して何したいかさっぱり分からなくなることの防止策。

それを全部他人がやってくれると勘違いしたバカが現れるだけ。

要するに宿題スレどんだけエスパーそろってんだよ!ってことだ。
414デフォルトの名無しさん:2007/12/02(日) 00:48:50
>>413
そのエスパー能力も大切。
415デフォルトの名無しさん:2007/12/02(日) 01:40:11
double型の値xにおいて、[-x,x]の範囲の乱数を出力させるにはどうすればいいんでしょうか?
416デフォルトの名無しさん:2007/12/02(日) 01:54:20
0〜2xまでの乱数を発生さて、xを引けば?
417デフォルトの名無しさん:2007/12/02(日) 01:57:35
>>416
なるほど!ありがとうございました!
418デフォルトの名無しさん:2007/12/02(日) 02:02:02
中三レベルの数学だぞ
419デフォルトの名無しさん:2007/12/02(日) 03:15:57
標準packageの各々のメソッドの中身を知りたいのですが何か良い方法はありますか?
420デフォルトの名無しさん:2007/12/02(日) 03:19:00
>>419
すでにソースコードは公開されてるだろ。かってに落としてきて見れ。
421デフォルトの名無しさん:2007/12/02(日) 03:57:30
javaの固有の実装なんて見ても意味ないだろ
422デフォルトの名無しさん:2007/12/02(日) 08:06:05
司会がお題出してそれに答えたプログラム提出するってスレあったらおもしろそうだな。
423デフォルトの名無しさん:2007/12/02(日) 09:06:48
配列を引数にとる関数を使いたいのですが
その関数内では配列の値を変えたくありません。
そこ以外では変更を行います

呼び出された関数内でだけ
変更できないようにするには
どうすれば良いでしょうか?

コピーを渡すのは処理速度が落ちるので
それ以外でお願いします

今のところの対処法は
関数のコメントに
//引数の値変えるな!
と書いてるだけです
424デフォルトの名無しさん:2007/12/02(日) 09:20:45
>>423
基本的に、今のところ無理。
将来的には @ReadOnly ってアノテーション付いてたら変更不可能にするみたいな事も検討中らしい。

プリミティブ型の配列じゃないなら java.util.Collections#unmodifiableList(List) 使えって感じだけど、
プリミティブ型の配列だと java.util.List で代用するのは、ちときつい。

手間かけてもいいなら @ReadOnlyArray みたいなカスタムアノテーションと、
カスタムアノテーション付きの配列を変更したらコンパイルエラー出すような APT を自作して
ビルド時に必ずAPTチェックにかける、とかすればチェックできるけど。
425デフォルトの名無しさん:2007/12/02(日) 09:22:00
文字コードについて質問があります。
vine4.0 vi編集環境で両方文字コードをEUC_jpにして
System.out.println("ああ");
を表示するだけのプログラムをコンパイルすると
HelloWorld.java:3: ')' expected
System.out.println("ああ");
^
HelloWorld.java:3: ';' expected
System.out.println("ああ");
というコンパイルエラーがでてしまいます。
ShiftJISにしても同じ現象になってしまうの
ですが、何が原因なのでしょうか?
426デフォルトの名無しさん:2007/12/02(日) 10:47:13
>>410,>>412さんありがとうございます。

業務でjava使ってて2年になります。
レベルとしては入門書を卒業してつぎのステップに進みたいところです。

ソースの可視性、メモリ効率の向上、クラス間の依存度が低いコーディングができるようになりたいとデザパタ勉強してみたいと思いました。

webアプリを開発しておりました(servlet,jsp,EJB)。
427デフォルトの名無しさん:2007/12/02(日) 11:05:22
質問があります。


あるディレクトリのなかにあるファイル名を取得するメソッドがあるじゃないですか?

File dir = new File("ディレクトリのパス");
String[] fnames = dir.list();

これって日本語のディレクトリやファイル名も普通に扱えますか?

与えるディレクトリが半角スペースやら日本語を使っていたり、
中のファイルも日本語になっています。
昨日試したら、nullが帰ってきていたんで、ちょっと困っています。

ディレクトリ数もファイル数も数千なので、自力で変更は辛い。
あと、DBにデータも残すので、限りなくオリジナルに近い形がいいです。

これに、パスを加えて、ファイルをフェッチしていくのがプログラムの目的です。


実行環境 
Mac OSX
Eclipse 3.3
Java 5.0


よろしくお願いします。
428デフォルトの名無しさん:2007/12/02(日) 11:36:34
初歩的な質問で申し訳ありませんが・・、

Servlettを作るときって、1つのJSPファイルに1つのServletを用意するものなんですか?
複数のJSPファイルからきたリクエストを1つのServletで対応するクラスへ切り分ける
典型的な手法でもあるのでしょうか?
429デフォルトの名無しさん:2007/12/02(日) 11:37:28
>>426
デザインパターンを適用する場合、
・ソースの可視性 パターンを知らない人(例:上司)にとっては読みにくくなる
・メモリ効率の向上 一概に向上するとは言えず、むしろパフォーマンスは低下する
・クラス間の依存度 低くなる

もし、ソースの可視性を高めたいコトが一番であれば、パターンよりもリファクタリングの勉強をする方がいい。
リファクタリングとパターンは色々と繋がる部分もあるので、パターンの習得にも役に立つしな。

自分が教育の中でパターンに触らせる題材として使うのは、CSVファイルの入出力APIの作成、SwingでのGUI作成って所。
430デフォルトの名無しさん:2007/12/02(日) 11:43:52
>>428
ちゃんと勉強している人の質問で感動した!

異なる処理(リクエスト)毎に別のServletを用意するってのはServletの設計思想にはあっていた。
でも、疑問に思うように無駄が多いと、先人達は思ったわけだ。
そこで生まれたのがStrutsとかのフレームワーク。
Strutsなどに代表されるフレームワークの場合、リクエストを処理するSevletは原則として1つしかない。
全てのリクエストは、そのServletのdoGetに渡され、前処理を行った後に、実際に処理を行うクラス(Action)クラスが呼び出される
(呼び分ける方法はパラメータだったり、URLの末尾だったり)
細かい差はあるものの、今日あるWebアプリケーションフレームワークはほとんどこの仕組みをとっているので、典型的な手法といえる
431デフォルトの名無しさん:2007/12/02(日) 11:46:58
>>427
使えるはず
Macの構成は良く解らんけど、Windowsで言うところのC://(ルート)直下に「ほげほげ」ってディレクトリつくり、ルートのlist()で出てくるか確認してみてくれ。
432デフォルトの名無しさん:2007/12/02(日) 11:51:17
>>425
コンパイルはjavacかい?
日本語無しでコンパイルは通るか?

最近使用していないから忘れ気味だけど、デフォルトはOS依存の文字コードでソースを読み込むはず。
異なるならば、-encodingオプションを指定する。
ダメならUTF-8にしてみれ。
433428:2007/12/02(日) 11:53:13
>>430
即レスありがとうございました。m(_ _)m
434デフォルトの名無しさん:2007/12/02(日) 11:58:10
>>431
そうですか。
やっぱりプログラムのバグですかね?

ディレクトリのパスが間違っていれば、上のFileのところでエラーがでると思うんです。
今自宅なので、後で試してみます。

とりあえず、日本語を使えそうだということを聞いて安心しました。
ありがとうございました。
435デフォルトの名無しさん:2007/12/02(日) 12:00:42
>>434
>ディレクトリのパスが間違っていれば、上のFileのところでエラーがでる
出ません。
エラーになったら、新しいファイル作れませんからw
436デフォルトの名無しさん:2007/12/02(日) 12:07:37
>>429
依存性が低いクラス設計ができるようになることが一番です。

実際にどのようにデザパタを適用できるのかを勉強したくてカキコ。
適用した簡単なをもの作ってみたいなと思いました。
437デフォルトの名無しさん:2007/12/02(日) 12:09:54
>>435
!!

そういえばそうですね。
IO系とは違いますもんねwww

意外と初歩的なところで引っかかっていたみたいなんで、
とりあえずテスト用のプログラムをきちんと作ることにします。
先ほどのコードの上に、パスがディレクトリかどうか調べる文を追加するべきですね。

いやはや、本当にありがとうございます。
438デフォルトの名無しさん:2007/12/02(日) 12:14:00
>>432
> >>425
> コンパイルはjavacかい?
> 日本語無しでコンパイルは通るか?
> 最近使用していないから忘れ気味だけど、デフォルトはOS依存の文字コードでソースを読み込むはず。
> 異なるならば、-encodingオプションを指定する。
> ダメならUTF-8にしてみれ。
ご指導ありがとうございました。
日本語無しなどコンパイルは通ります。(コンパイラはjavacです。)
encodingオプションをUTF8,UTF16,EUC,EUCJP,SJIS等のメジャーなもの
で試して見ましたがやはり同じコンパイルエラーが出ます。。。
439デフォルトの名無しさん:2007/12/02(日) 12:20:39
>>424
なるほど、ありがとうございます
しばらく現状維持でどうしても必要だと思ったときは
その案をもう一度思い出させてもらうことにします
440デフォルトの名無しさん:2007/12/02(日) 12:24:11
>>437
ああ、IO系ってのは
この場合、ファイルの読み込み書き込みのことです。

紛らわしかったですね。
441デフォルトの名無しさん:2007/12/02(日) 12:24:40
BufferedInputStreamでこれから読む位置をストリームの先頭位置まで戻す方法はありますでしょうか?
fseek(fp,0,SEEK_SET)のような処理をしたいのですが。
よろしくお願いします。
442デフォルトの名無しさん:2007/12/02(日) 12:28:42
>>427
MacのJavaはなんか変な問題があったように思う
こっち見てみるといいかも
http://pc11.2ch.net/test/read.cgi/mac/1138543708/
443デフォルトの名無しさん:2007/12/02(日) 12:30:20
>>441
markとresetを使うか、開き直す
444デフォルトの名無しさん:2007/12/02(日) 12:34:42
>>436
Swingで書いてみるとよろし。
・親フレームに子フレームを2つ以上用意する(入力エリア+表示エリア)
・子フレームで起きたイベントは子フレームで処理せずに親フレームに通知する(ここでMediatorパターンを使う)
・親フレームで処理したイベントはデータに反映されるが、子フレームの更新はデータに登録したリスナー経由で行う(Obseverパターン)

簡単な為、入力フレームはボタン1つ、表示フレームはラベル1つでやってみるといい。ボタンを押すと表示が+1されるみたいな
445デフォルトの名無しさん:2007/12/02(日) 12:36:52
>>441
用途的にStreamは一方向に読むもの
ランダムアクセスしたいならば、RandomAccessを使え
446デフォルトの名無しさん:2007/12/02(日) 14:32:22
>>444
ありがとうございます。
いろいろやってみます。

447デフォルトの名無しさん:2007/12/02(日) 18:22:53
以下の挙動で、困っています。これは、JNLPのバグでしょうか…。

JNLPでデスクトップにショートカットアイコンを作成し、
そのアイコンに何らかのファイル(何でもいい)をドラッグアンドドロップすると、
「このアプリケーションは起動できません」「詳細」「了解」というダイアログが表示される。

ここで「詳細」ボタンを押すと、次のような情報が表示される。
※C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt をドラッグアンドドロップした場合。
InvalidArgumentException[ 無効な引数が指定されました: {C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt, C:\Users\hoge\AppData\Local\Temp\javaws12 }]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

で、問題なのは、この後。
ここで「了解」」を押すと、ドラッグアンドドロップしたファイルが、
いきなり削除されてしまうのです。

1.6.0_03, Vista,XP,UbuntuLinuxのいずれにおいても再現しました。
448デフォルトの名無しさん:2007/12/02(日) 18:25:10
FランではないけどFランに近い大学の情報科に在籍している者です。
が、実際に入ってみると周りはPC詳しい&プログラミング言語の経験のある人ばかり。
Javaのクラスを取っているけれど、俺は簡単な宿題をクリアするにも最低1-2時間はかかる。
単純に数値を入力してください→課題に沿った計算→結果を出力 といったここの住民ならば
5分-10分程度で終わる課題をだ。一緒にクラスを取っている人も同じくらいのスピードで終わらせて、
こんなの簡単すぎるよなw と笑っている始末。どうにか最初のJavaクラスは単位を貰えそうだけど、
次に取るクラスが不安でならない。いったいどうすればプログラミングが得意になるんだろうか…。
どうすればクラスメートやここの住民みたいに最速でどんな風に組めば良いかというアイデアをたたき出せるようになるんだろうか。
449デフォルトの名無しさん:2007/12/02(日) 18:34:02
>>448
回答にはなってないけど、情報科は地頭スペックによってやる内容が違うだけで
Fラン大とかは関係ないと思われる。大学のレベルを超えた凄み(留年率)がある。
450デフォルトの名無しさん:2007/12/02(日) 18:37:27
1.登場人物を洗い出す。
2.フローチャートをイメージする。
3.そのイメージをコードに落とす。
このサイクルが重要。コードを弄りまくらないと2が身につかないこともあるけど、
Javaのような言語は大抵、文章がそのままコードに落ちるから直ぐ慣れるよ。
451デフォルトの名無しさん:2007/12/02(日) 18:46:10
>>448
周りの経験者もはじめのうちは1-2時間悩みながらコーディングしてきたんだ
プログラミングに慣れるまではそれが普通。
初期はとにかくコードを書くしかない。
あとは知っているパターンをどう組み合わせるか、って作業になる。

Javaだったら俺は独習Javaをやれと思う。
問題量とサンプルが糞多いけど、サンプルを全部打ち込んで、問題も全部解いてみる。
軽く3ヶ月はかかると思うが、終わったときには周りのクラスメートと同じレベルに立っていると思う
演習問題の添削とかならばこのスレに投下すれば住民も協力してくれるぜ
452デフォルトの名無しさん:2007/12/02(日) 18:52:04
>>448
慣れだよ、慣れ
何度も繰り返し練習して量をこなすことで、やり方が身に付く
453デフォルトの名無しさん:2007/12/02(日) 19:06:52
>>448
みんな最初はそんなもん。
情報科は商業・工業高校出身の人が多いから慣れてる人が多いだけ。
だから1,2年の講義は基本的なものが多く、工業高校出身の人には物足りなく感じるんだろう。
(プログラムが書けても、問題解決能力がなければプログラムに落とし込む事すらできないわけで)

(プログラムの前にアルゴリズムやスタックマシンがなんぞやってところを勉強すべきだと思ってるけど、)
プログラミングの上達のコツは、
作ったプログラムを改造して、その変更によってどう動作が変わったかを把握すること、
コピペはしないこと
かな・・。
454デフォルトの名無しさん:2007/12/02(日) 19:09:58
>>448
本気でプログラミング力を付けたいなら、SICPとCTMCPを読むことをお勧めする
455デフォルトの名無しさん:2007/12/02(日) 19:15:02
Flashでも買って遊んでみるのも手だな。
あれは飽きずにプログラムを楽しむには良い教材。
456448:2007/12/02(日) 19:33:38
(´;ω;`)ぶわっ お前らのヌクモリティに泣けてきた。
授業内容や課題が分からないとき、クラスメートに聞いたら
「お前、こんなのもわからねえの?」と言われたり、
「基本情報技術者試験を来年受けてみようと思うんだけど」と言ったら
「高校の時に取ったぜw 持ってないの? 少し勉強すればバカでも受かるぜ」と言われる始末。
サーセン 普通科高校文系出身が情報科に進んでサーセン でもパソコン好きだったんだ。

>>449
きっと俺はFランでも毎日がいっぱいいっぱい。文系の友達が合コン行くんだって時も課題やってた。

>>450
そういう考え方はなかった。未熟すぐる。

>>451
独習JavaをAmazonで見たらレビューが最悪だったんだけど、俺でも大丈夫なんだろうか。

>>452
独習Javaというやつを買ってやってみようかな。学校で使ってる教科書はやさしいJavaという本なんだけど、
書いている内容のレベルと課題のレベルがあってない。もはや、講義ですら使っていない。
457448:2007/12/02(日) 19:37:39
>>453
たしかに商業高校の情報処理科出身が多い。みんな簿記、シスアドなどの資格を持ってる。
高校では情報処理科のエリートとして推薦で大学に来た人ばかり。
俺は英検2級と漢字検定2級しか持ってない。情報とまったく関係ない。
アルゴリズムやスタックマシンなど本当の計算機科学の分野は未知の世界。

>>454
ググったらMITで使う教科書という事で萎えた。
これを履修するMITの1年生ってうちの大学の4年と比べても完全体セルとヤムチャ位のレベル差があるのでは。

>>455
アカデミック版でも3万以上するんだけど…
458デフォルトの名無しさん:2007/12/02(日) 19:43:21
SI系で業務システム開発をしているのですが、わからない事があるので質問させてください。
インターフェースとその実装クラスに関することです。

ArrayListを使う場合、↓のように宣言する事が多いけど、これはListであればArrayListだろうがLinkedListだろうが良い場合ですよね。
List list = new ArrayList();
たとえばArrayListにしかないtrimToSize()を使いたい場合は上記の場合ダウンキャストしないといけないから、↓のように書くと思います。
ArrayList list = new ArrayList();

JDBCでMySQLに接続したい時は、
registDriverなりClass.forName()すればDriverManagerのgetConnectionがMySQLのJDBCの実装クラスを返してくれるけど、
java.sql.*に定義されているインターフェースのみで操作できますよね。
com.mysql.jdbc.Connection、com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
みたいに実装クラスをソース上に記述して使用するメリットとデメリットを教えていただけませんか?
com.mysql.jdbc.*にしかないメソッドを使いたい場合は前述のArrayList.trimToSize()みたいになるから理解できるのですが、
最適化のために使うと教えられました。
どういう最適化がなされるのでしょうか。識者の方々ご教授くださいm(。_。)m
459デフォルトの名無しさん:2007/12/02(日) 19:48:32
>>458
ここでいう最適化っていうのは、
標準的でないが実装に依存した、よりパフォーマンスの良いメソッドが呼び出せる
ということじゃないかと、エスパーしてみる
460デフォルトの名無しさん:2007/12/02(日) 19:58:57
>>457
プログラム関係の資格?は、法的に有利にならないのであまりクリティカルじゃない
それに、良かれ悪しかれ、プログラム関係の知識は、すぐ陳腐化する

プログラムの勉強は書く前にまず読めと思う
読んだ本より書いた本が多いなどという人でなければ
461デフォルトの名無しさん:2007/12/02(日) 20:00:19
>>459
回答ありがとうございます。
でもそれはArrayList.trimToSize()と同意ですよね・・。
他にいったい何があるのか・・。
462デフォルトの名無しさん:2007/12/02(日) 20:00:46
>>458
色々と誤解してんな。
>ArrayListを使う場合、↓のように宣言する事が多いけど、これはListであればArrayListだろうがLinkedListだろうが良い場合ですよね。
>List list = new ArrayList();
これは間違いというか、使い方を間違えている。
例えばあるクラスのprivateフィールドでListを持ちたいのであれば、ArrayListのままで何も問題ない。
Listとして利用しなければならないとしたならば、それはクラスの外。

つまり、
public ArrayList getList()
と宣言するよりも
public List getList()
と宣言する方が、クラスの内部を変更(ArrayListをLinkedList等)にするなどの変更が容易に出来る(外のクラスに影響がない)
内部的にはListに制限したところでメリットは少ない。
JDBCDriverの場合もそういうこと。
463デフォルトの名無しさん:2007/12/02(日) 20:03:23
あるインタフェースのあるメソッドを呼ぶとき、そのインタフェースを実装するクラスが複数あったとすると、
どっちのクラスのメソッドを呼ぶか渡されたインスタンスの型を見るまで判らないので、
その分のコストがかかるし、どっちを呼ぶかわからない以上
最適化して無駄な処理を消し飛ばしてしまうわけにもいかない

呼びうるメソッドが唯一に絞られる場合は、devirtualizationしてインライン展開してエスケープ解析して
ヒープオブジェクトをスタック上に割り当てたりとかsynchronizedを省略したりとか色々最適化が効くかもしれない

でもJDBCだったら、そんな些細な最適化よりもデータベースにアクセスするコストの方が巨大なので、
気にしても意味ないと思う
464デフォルトの名無しさん:2007/12/02(日) 20:19:19
>>462
なるほど、外部への影響を無くすためですね。

つまりJDBCの場合も、
MySQLに接続する場合はその内部はcom.mysql.jdbc.*のクラスをバリバリ使っていても、
insertData(int data1, int data2)
みたいになっていれば内部で↓のようになっていても、そんな気にするなって事で良いですか(クラス名は適当です)
MySQLPreparedStatement pst = conn.preparedStatement("***");
pst.setData(1, new MySqlData(data1, TYPE_INT));
pst.setData(2, new MySqlData(data2, TYPE_INT));

これをOracleに接続する事になった場合は
OraclePreparedStatement pst = conn.preparedStatement("***");
pst.setData(1, new Datum(data1, INT));
pst.setData(2, new Datum(data2, INT));
と変更しても使う側は気にしないで良いと。

どこを外部とするかによると思いますが。
465デフォルトの名無しさん:2007/12/02(日) 20:25:45
>>464
そういう事。
内部では専用のメソッドを幾ら使おうが、外部提供されているインターフェイスの振る舞いが変わらない限りはOKってのがポイント。
どこを外部とするかってのはまさにインターフェイスで決まっているし、これは有識者が議論して落とし所を決めているわけだ。
実プロジェクトではまともにインターフェイスをきらずに丸投げするから火を噴くんだけどねw
466デフォルトの名無しさん:2007/12/02(日) 20:34:14
>>463
実行時に検索処理みたいなものが走ってしまうのですか?
実行時には変数にインスタンスが割り当てられる時点でインターフェースの情報は使われないものだと思ってました・・・orz
もっとVMの動作を勉強すべきですね・・。

>>465
OracleやMySQL, PostgreSQLに接続する事が決まっているのに、
ResultSetを扱う共通ユーティリティ的なクラスがOracle依存バリバリに実装進められてるのは、
火を噴く前兆ですかね(;−;?
467デフォルトの名無しさん:2007/12/02(日) 20:39:34
>>466
好ましくはないけど、Oracle以外のDBは考慮しないで、かつバージョンアップもしないという状況なら問題はない。
他のDBに接続する可能性が0.01%でもあるならば今からでも方針を変えるべき
468デフォルトの名無しさん:2007/12/02(日) 21:02:01
こういう時ってO/Rマッピング使うもんなんじゃないの?
469デフォルトの名無しさん:2007/12/02(日) 21:07:18
最適化がどうのとか言ってるくらいだから、余計なオーバーヘッドかけたくないんじゃない
470デフォルトの名無しさん:2007/12/02(日) 21:31:35
>>467
バージョンアップの可能性もあるし、他のDBにも接続します・・。

>>468 >>469
共通ユーティリティ的なものが自前O/Rマップもどきになってます。
リフレクションバリバリで。
471デフォルトの名無しさん:2007/12/02(日) 22:09:50
O/Rマッパーは一長一短あるから適合するかは判断できんな
472デフォルトの名無しさん:2007/12/02(日) 22:33:41
最近はiBatisのが評価高いな。テキストファイルに分離できるだけで十分ってことか。
473デフォルトの名無しさん:2007/12/02(日) 22:57:48
t=2〜4、6〜8、10〜12、以降無限に続くときに
Aの符号を反転させるにはどのような文にしたらいいですか?
474デフォルトの名無しさん:2007/12/02(日) 22:59:12
数学弱いからAが誰なのかわかりません。
475デフォルトの名無しさん:2007/12/02(日) 23:01:34
日本語でおk
476デフォルトの名無しさん:2007/12/02(日) 23:02:41
A の符号を反転させるには -A でいいんじゃない
477デフォルトの名無しさん:2007/12/02(日) 23:02:58
Aじゃなくて速度=vです
わかりにくくしてしまってすみません
478デフォルトの名無しさん:2007/12/02(日) 23:06:23
修正しました

t=2〜4、6〜8、10〜12、(以降無限に続く)の時
速度vの符号を反転させるにはどのような文にしたらいいですか?
479デフォルトの名無しさん:2007/12/02(日) 23:09:53
>>478
だれか黒魔術でエスパーを召喚してくれ。
480デフォルトの名無しさん:2007/12/02(日) 23:12:08
-v
481デフォルトの名無しさん:2007/12/02(日) 23:13:20
v の符号を反転させるには -v でいいんじゃない
482デフォルトの名無しさん:2007/12/02(日) 23:16:52
if (t % 4 == 1)
{
v2 = v;
}
else
{
v2 = -v;
}

まあ、内容は分からんけどこんな感じか
483デフォルトの名無しさん:2007/12/02(日) 23:17:57
時間が決まってるなら初速が分かればVが求まるから出てきたVを-Vで良いんじゃないのか?
484デフォルトの名無しさん:2007/12/02(日) 23:25:26
vが-vになるのは分かります
ifの条件がわからないんです
485デフォルトの名無しさん:2007/12/02(日) 23:31:27
>>484
482見た?
486デフォルトの名無しさん:2007/12/02(日) 23:35:14
この条件文ってtが4の倍数の時って意味じゃないんですか?
tが2から4、6から8…の間の速度の符号を反転したいんです
487デフォルトの名無しさん:2007/12/02(日) 23:37:40
住人総苦笑なレスですね
488デフォルトの名無しさん:2007/12/02(日) 23:39:58
リア中か釣りかどっちかしかありえんな
489デフォルトの名無しさん:2007/12/02(日) 23:40:44
すみません余り1でしたね
490デフォルトの名無しさん:2007/12/02(日) 23:44:28
中学生でもわかるだろ・・・
491デフォルトの名無しさん:2007/12/02(日) 23:53:00
ゆとり世代だとこれは高校の物理の範囲。
492デフォルトの名無しさん:2007/12/03(月) 00:14:22
>>457
分野にもよるけど、ある程度まで行くとプログラムの壁より英語の壁にぶちあたると思うw
君が言う推薦で来たエリート様の半分以上は英語で躓く事になるよ。
普通科と工業科じゃ英語の下地が違うからな・・。
英検2級って事は、技術書レベルの英語ならスラスラ読めちゃうな。
493デフォルトの名無しさん:2007/12/03(月) 07:49:06
翻訳を待たずに最新の技術に触れられるってのはアドバンテージがデカイわな。
494デフォルトの名無しさん:2007/12/03(月) 10:40:52
うん
495デフォルトの名無しさん:2007/12/03(月) 11:15:14
すいません連想配列の実装について聞きたいのですが、
ファイルから文字列を読み込みハッシュテーブルを作っていきたいのですが
例えば
ファイル abcdea
というファイルを読み込んだとき普通なら
a=1 b=2 c=3 d=4 e=5 a=6 というテーブルができるのですが、これを
a=1,6 b=2 c=3 d=4 e=5 といったように同じ文字列が出てきた場合はキーを追
加するといったようにしたいのですがどのクラスを使うのが望ましいでしょうか?
496デフォルトの名無しさん:2007/12/03(月) 11:15:45
すいません連想配列の実装について聞きたいのですが、
ファイルから文字列を読み込みハッシュテーブルを作っていきたいのですが
例えば
ファイル abcdea
というファイルを読み込んだとき普通なら
a=1 b=2 c=3 d=4 e=5 a=6 というテーブルができるのですが、これを
a=1,6 b=2 c=3 d=4 e=5 といったように同じ文字列が出てきた場合はキーを追
加するといったようにしたいのですがどのクラスを使うのが望ましいでしょうか?
497デフォルトの名無しさん:2007/12/03(月) 11:17:00
連投すいません。
498デフォルトの名無しさん:2007/12/03(月) 11:25:54
>>495
とりあえず。つ Map<String, List<Integer>>
499デフォルトの名無しさん:2007/12/03(月) 12:04:13
Javaでは配列の途中からをメソッドに渡すってことが可能ですか?
byte[] buf = new byte[256];
とか宣言したときに、あるメソッドにbuf[127]からを渡したいのです。
500499:2007/12/03(月) 12:10:56
すみません自己完結しました。
501デフォルトの名無しさん:2007/12/03(月) 12:18:31
>>500
わずか6分で完結してワロタが、良ければ後続のためにも解決策を書いておいてはくれまいか。
初質スレでは同じ質問が何度も繰り返すことは日常茶飯事だから、それだけで無駄な質問がなくなる。
502デフォルトの名無しさん:2007/12/03(月) 12:21:46
やさしいJava 活用編 第2版って買う価値ある?
503499:2007/12/03(月) 12:37:39
>>501
初歩的すぎて恥ずかしい限りですが、後続のために…

Cのように配列の途中からをhoge(&array[127]);のようにポインタで渡すのはJavaでは無理で、
hoge(array,127);などのように参照位置も渡さなきゃいけないようでした。

参考URL
http://sp.cis.iwate-u.ac.jp/pub/java/
504デフォルトの名無しさん:2007/12/03(月) 13:46:02
>>502
やさしいjavaは地雷
505デフォルトの名無しさん:2007/12/03(月) 15:05:23
>>503
java.util.Arrays#copyOfRange
offsetを引数に渡すと渡されたほうは範囲チェックとか必要になってマンドクセ
最初から処理範囲だけに絞り込んで渡せば、メソッド側は最初から最後まで処理すれば済むのでシンプル
ただし、privateメソッドに渡すのならばoffsetでも問題無
506デフォルトの名無しさん:2007/12/03(月) 15:16:49
使わせる側に手間かけさせてどうすんだこのバカ。
総コード量は増えるわメモリフラグメント作るわ使う手間増えるわの
糞ライブラリでも作る気か。
507デフォルトの名無しさん:2007/12/03(月) 15:44:15
APIとして公開するならばコピーして渡すほうがいいんじゃね?
総コード量 → 変わらない
メモリ → 効率は悪くなるが、それで?ってレベル。フラグメントってのは意味不明。
使う側の手間 → 使われる側の手間も考えればどっちもどっち
508デフォルトの名無しさん:2007/12/03(月) 16:09:25
JAVAとJAVAアプレットってまったく違うんですか?
509デフォルトの名無しさん:2007/12/03(月) 16:27:03
java∋あぷれっと
510デフォルトの名無しさん:2007/12/03(月) 16:27:49
使われる側は 1 箇所の手間で済むが、使う側は利用箇所倍の手間に
増加するという事も分からんのか。
呼び出し前にオフセットと長さを指定するコードは減らないし、
メモリ効率悪いし、デメリットだけでその設計を採用する価値がまったく見いだせない。
511デフォルトの名無しさん:2007/12/03(月) 19:11:26
SwingやAWTなどについて質問です。
ものすごく速いタイミングで2つのイベントが発生した場合でも、
実際に発生した順序でイベントが処理されることは保証されていますか?
512デフォルトの名無しさん:2007/12/03(月) 19:27:55
AWTは知らないが、Swingはシングルスレッドモデルだし、そうなんじゃない?
513デフォルトの名無しさん:2007/12/03(月) 20:00:11
だからAWTとSwingはAWT/Swingスレに行けとry
514デフォルトの名無しさん:2007/12/03(月) 20:09:33
別にいいじゃねーか、たいした流量じゃないしスレ違いってわけでもない

>>511
イベントの発生にバグを仕込まない限り、Swingは保証される。
AWTはシラネ
515デフォルトの名無しさん:2007/12/03(月) 21:15:59
質問なのですが、
import クラス と記入すると
new宣言 しなくてもimportしたクラスのメソッドを呼べるようになりますが、
他にも何かメリットはあるのでしょうか?又、なぜnewを使わずにimportクラスを使うのでしょうか?
516デフォルトの名無しさん:2007/12/03(月) 21:18:18
意味不明
コードを具体的に書いてくれ
517デフォルトの名無しさん:2007/12/03(月) 21:18:36
ん??
new宣言しなくても・・・?
staticメソッドは呼び出せるようになる、というかそのクラスを参照できるようになるけどインスタンスメソッドなら当然newせないかんよ
なにか勘違いしているのでは・・?
518デフォルトの名無しさん:2007/12/03(月) 21:25:40
mainクラスからGaibuクラスを使うとして普通なら 
Gaibu gai = new Gaibu と宣言しGaibuクラスのメソッドを利用しますが、
import Gaibuと記入すればnew宣言しなくても Gaibuクラスのメソッドが使えるようになるのではないのですか? 
519デフォルトの名無しさん:2007/12/03(月) 21:28:50
まだ質問しない方がいいよ
知識が足らなすぎる
520デフォルトの名無しさん:2007/12/03(月) 21:30:03
519さん実際に動いています。
521デフォルトの名無しさん:2007/12/03(月) 21:30:07
ならんがな。
どんな参考書でどんな勉強してきたのか知らないが、staticメソッドとインスタンスメソッドの違い、それからパッケージの意味とimportの使い方を勉強しなおせ
522デフォルトの名無しさん:2007/12/03(月) 21:30:49
>>520
多分、import書かなくても動くんじゃね?
523デフォルトの名無しさん:2007/12/03(月) 22:10:35
どういうロジックをservletに書いてどういうロジックをbeanに書くべきなのでしょうか?
違いがいまいち分かりません。
全部servletに書いたら駄目なんすか?
524デフォルトの名無しさん:2007/12/03(月) 22:15:18
>>518
staticメソッドなら、impoetの有無にかかわらずnewしないで呼べる。
インスタンスメソッドなら、importの有無にかかわらずnewしないと呼べない。

いずれにせよ、importとnewとは関係ない。
525デフォルトの名無しさん:2007/12/03(月) 22:17:29
>>523
規模による
一般論としては、パラメータの解析やどのロジックを実行するかまでをServletが責任を持ち、業務ロジックは分離するのが良いとされている。
言い換えればHttpRequestに関連する部分はServletで処理し、業務ロジッククラスはServletに依存しないようにすると依存性が低くなる。
結果としてテストがやりやすいなどのメリットがある
526デフォルトの名無しさん:2007/12/03(月) 22:21:22
aspx → jsp
aspx.cs → Servlet
.cs(自作クラス) → Bean
って感じ?
527デフォルトの名無しさん:2007/12/03(月) 22:32:01
XML+XSLTをイメージしてXSLTをJSP、XMLをBeanとイメージすればいい。
JSPに何でもかんでも書いちゃう時代もあったけど、8年くらい前の話。

JavaはMVC3層モデルからJ2EE5層モデルと層分けの定義がいろいろあるけど
最初はXML+XSLTをイメージするのが簡単で分かりやすいかと個人的に思う。
528デフォルトの名無しさん:2007/12/03(月) 23:30:43
newの質問で思ったんだけど、
singletonってコンストラクタが使えないジャン。

代わりに、
getInstanceに引数をつけてやれば、コンストラクタみたいに使えるね。
なんで今まで気づかなかったんだろう。
わざわざセッターメソッドを用意していたwww
529デフォルトの名無しさん:2007/12/03(月) 23:37:35
staticクラスを作るのはどういう時?
publicクラスかprivateクラス以外は作ったこと無いわ。
530デフォルトの名無しさん:2007/12/03(月) 23:38:28
ああ、でもやっぱりインスタンスが一つしかないのに、
わざわざgetInstanceでフィールドに代入する意義がないか。

renewField(引数)とかを作ったほうが感覚的にわかりやすいね。
セッターでフィールドを初期化するってのはちょっと違和感がある。
531デフォルトの名無しさん:2007/12/04(火) 00:10:05
フィールド初期化なんて見るからに状態に依存するものをシングルトンって
間違ってるだろうとは思わないのかね。
532デフォルトの名無しさん:2007/12/04(火) 00:11:04
私、経理マンなのですが経営数値を分析・管理するソフトを作りたいのです。
と言って全くこの分野にはシロートなのですが、何から始めたら良いでしょうか?
叩かれることを覚悟で2chで質問させて頂きました。
533デフォルトの名無しさん:2007/12/04(火) 00:17:19
>>532
いや、別にム板は別に誰彼かまわず叩くような板ではないが、経理用のソフトを一から作るのか?
簡単なものならExcelのVBスクリプトを使えばいいと思うが、それ以上は専門のソフトウェアを使った方がいいと思うぞ。
経理なんてクリティカルな分野なんだから、バグが怖いし、何より手作りでは市販ほどのクオリティはできにくい。
それに、自作のソフトではデータや処理に一般性がなくて、情報を同僚なんかと共有しにくいしな。
悪いこといわないから、ソフトウェア板で該当ソフトを探したほうがいい。
534デフォルトの名無しさん:2007/12/04(火) 00:19:09
>>532
JavaのAPIドキュメントを読んで使えるようになることだな。
経理ならまずはjava.math.BigDecimalあたりか。
535デフォルトの名無しさん:2007/12/04(火) 00:24:03
Excelの数値型って何bitまでいけるの?
128bit以上いけるならExcelを進めるわな
536デフォルトの名無しさん:2007/12/04(火) 00:31:03

まともにJavaアプリケーション開発してる人に質問(Javaじゃなくてもいいかもしれないが)

パッケージ名に gui とつけるのは、普通ですか?
それともguiとなるクラス群ををパッケージにまとめるというのは、設計段階で間違ってますか?
 
537デフォルトの名無しさん:2007/12/04(火) 00:34:43
guiパッケージは普通だと思う。
問題はguiパッケージに何を詰めるかだと思うが?
538デフォルトの名無しさん:2007/12/04(火) 00:37:37
>>529
staticとpublic/privateは別の話だろう
static(内部)クラスは、公開クラスとするほどではなく、あるクラスの内部でのみ使われる場合に使う。
staticでない内部クラスとの使い分けは、そのクラスのインスタンスが、外側のクラスのインスタンスと紐づいているかどうか。
例えばあるクラスの中でのみ使うComparatorの実装クラスであれば、内部フィールドを参照するならば非static、参照せずある条件を持つならばstaticとする(例えばの話)
539デフォルトの名無しさん:2007/12/04(火) 00:39:51
>>532
ソフトウェア産業の丸投げ体質を知った上で、優秀な中小企業を見つけ、直接発注する能力を養う事からはじめよう
うちらは開発のプロ、>523は経理のプロ、無理に自分で作るのは辞めたほうがいい。
開発側にどうやったら作りたいものが伝わるかを学ぶ方が建設的
540デフォルトの名無しさん:2007/12/04(火) 00:55:16
>>523
同じ業務プログラムをバッチから呼び出したい場合とか考えてみよう。

>>532
「経営数値を分析・管理」ってどういうこと?
生データは別に会計ソフトがあって、それをいじくっていろいろやりたいとか?

Javaはそういう分野には、あまり向いていないと思う。
541デフォルトの名無しさん:2007/12/04(火) 01:14:52
>>532 >>540
Java でファイルへ I/O って面倒だなぁ。どの言語でもそうだ
と言われるとそうかもしれんが、C++ の方が楽に感じる。
簡単なことなら Ruby とかがいいと思うなぁ。
542デフォルトの名無しさん:2007/12/04(火) 02:18:46
>>541
まぁ、マシなほうだとは思うよ。

Loggerとかを使えばテスト用のは簡単に作れるし、
普通のならライブラリを作っちゃえば?

むしろ、面倒なのは文字列処理とかじゃないかと思うけどね。
メソッドは多いから自由性は高いんだけど、
パーサとかはえらい作るのが面倒だ。
543デフォルトの名無しさん:2007/12/04(火) 02:39:29
HSPでxmlパーサ書いたことある俺に言わせりゃjavaのIOは素直なオブジェクト志向。
544デフォルトの名無しさん:2007/12/04(火) 11:16:27
なんでまたそんな苦行をw
545デフォルトの名無しさん:2007/12/04(火) 13:38:19
>>532
まずは基本的な経理ソフトにアクセスできるインターフェース作りから始めるのが無難でしょう
大量のデータの処理をソフト側に任せ経営管理機能に特化したほうが楽でしょう
データの互換性が何より重要になります

現在のところ経理ソフト自体の完成度は高くその機能を超えるのはなかなか難しいと思います

また処理データをOfficeなどのソフトで処理できるようにする事も大事です
POIを見るといいでしょう
またOOOなどのソフトを介してアウトプット用のデータを作る事も出来ます

表計算ソフトなどでのグラフ化や
役員会議でのパワーポイントでのプレゼン形式の報告など
に使えるようにする事が大事です

グラフをカスタマイズして画像として資料に貼り付けるのであればJFreeChartがお勧めです

とはいえ
資金繰り等の基本的機能はソフトについてるはずなのでそのデータをもとに更に加工
するといった手順になるのではないでしょうか

経理ソフトそのものを再構築するのであればJDBCは必須ですしjava.netのネットワーク機能も必須です
売り物にするつもりであれば全銀データアクセスは無くてはならないものです
546デフォルトの名無しさん:2007/12/04(火) 15:44:54
イニシャライザ中で配列初期化子が使えないのはなんでですか。
コンパイラの手抜きと違うんですか。
547デフォルトの名無しさん:2007/12/04(火) 15:50:31
>>546
C言語の影響じゃねーの?
548デフォルトの名無しさん:2007/12/04(火) 16:07:26
初期化じゃないからでそ
549デフォルトの名無しさん:2007/12/04(火) 16:25:11
new
すればいいじゃん
550デフォルトの名無しさん:2007/12/04(火) 17:03:18
>>546 の「イニシャライザ中で配列初期化子が使えない」
分かるように解説をお願いしますだ_no
551デフォルトの名無しさん:2007/12/04(火) 17:38:48
アプレット作ってるんですが、小数(double)をlabel setText で表示
させようとして、コンパイルしたらdoubleには対応していないと出ました。
どうすれば小数を表示できますか。お願いします。
552デフォルトの名無しさん:2007/12/04(火) 17:44:29
つDecimalFormat
553デフォルトの名無しさん:2007/12/04(火) 17:48:48
jadでデコンパイルしたのを再コンパイルしたらエラーが出たんだが、これって何が原因なんだろうか。
ttp://v2c.xrea.com/
改造しているのはこれで、あとはコンパイルするだけなのに何故かエラーで手詰まり。
デコンパイルしたものをすぐに再コンパイルし直してもエラーになるから改変ミスではないはずだし……
ほんと何が原因なんだろう……
554デフォルトの名無しさん:2007/12/04(火) 17:53:09
>>551
label が java.awt.Label だとすると setText(String)
// 他のクラスでも一般的に setText の引数は String だが。
double に String は含まれないのでコンパイルできない。

簡易メソッドでよければ、Double.toString(double)
他は>>552 やら、1.5以降なら String.format(String, Object) やら…
555デフォルトの名無しさん:2007/12/04(火) 17:53:21
別に、普通にリコンパイルを防ぐobfuscateがしてあるんじゃないの?
556デフォルトの名無しさん:2007/12/04(火) 18:03:42
なんでCより進化した言語にCの流儀入れなきゃなんえんだよ
557デフォルトの名無しさん:2007/12/04(火) 18:03:51
>>553
jadがデコンパイルに失敗してコンパイルできないソースを吐いてしまうことはよくある
558デフォルトの名無しさん:2007/12/04(火) 18:05:50
>>556
そんなあなたにはCの流儀なんか微塵も混じってないHaskellやLispがおすすめ
559デフォルトの名無しさん:2007/12/04(火) 18:48:23
>>553
JDK 1.4 コンパイラで作ったクラスファイルあたりからまともに再コンパイルできるようなコードは吐かないよ。
1.1 でコンパイルしたのは綺麗に出るんだけど。
あれは改変するためのツールじゃなくて分析するためのツール。
560デフォルトの名無しさん:2007/12/04(火) 18:53:15
>>554
あと ""+x とかもあるな…
561デフォルトの名無しさん:2007/12/04(火) 19:40:23
1.4あたりから最適化が凄まじくなったからな。
javaはソース復元できるってのはもう大昔の話。
562デフォルトの名無しさん:2007/12/04(火) 19:41:00
ProcessBuilderを利用して,以下のように外部プログラムの出力を取得し,
Javaで処理をするということを目指しています.
以下のプログラムをそのまま実行したんですが,ある程度以上出力が続いた後,
必ずプログラムが途中で固まってしまいます(強制終了するわけでも
エラーを吐くわけでもなく,実行中のままlineに値が入らなくなる).
外部プログラムの出す出力がある一定以上になったときに必ず固まるので
メモリか何かの問題かと思って,
1.Eclipse起動オプションに-vmargs -Xms256M -Xmx512Mと指定
2.Eclipse上で,実行するプログラムのVM引数にも同じように-Xms256M -Xmx512M指定
して実行したんですが,やはり同じところで固まりました.
どなたか打開策を教えていただけませんでしょうか?
よろしくお願いします.

ProcessBuilder pBuilder = new ProcessBuilder(gaibuProgramCmd);
Process p = pBuilder.start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null){
System.out.println(line);
}
563デフォルトの名無しさん:2007/12/04(火) 19:46:30
あとV2Cのページはttp://v2c.s50.xrea.com/だぞ
564デフォルトの名無しさん:2007/12/04(火) 19:48:57
>>561
最適化が凄まじくなったつーより、
jadがアップデート止めてて1.4以降に対応しきれてないって感じのような。
565デフォルトの名無しさん:2007/12/04(火) 19:56:31
>>555,>>557,>>559,>>561,>>563,>>564
ありがとう。
分析の為のツールか……
900ほどあるクラスの内から一つをデコンパイルして、数行書き換えるだけなのに。
まさかそんな落とし穴があったなんて……
566デフォルトの名無しさん:2007/12/04(火) 20:55:17
リフレクション使って特定クラスの任意のメソッドを呼び出すようなものを作ってるんだけど
(そのうち RPC になる予定なので)、全てのメソッドの先頭で権限チェックするの面倒なんで
アノテーション使って宣言形式でやろうと思うんだけど、こういう使い方ってあり?

@Administrator
public void removeUser(int userId){...}

// 呼び出し側 (このメソッド内でアノテーション見て権限チェック)
RPC.call("removeUser", 100);
567デフォルトの名無しさん:2007/12/04(火) 20:56:33
>>562
標準エラー出力が満杯になって詰まった可能性は?
568デフォルトの名無しさん:2007/12/04(火) 21:00:22
>>566
権限チェック面倒ったって、メソッドの先頭で
checkAdminPrivilege();
とか一行呼ぶだけで済むようにしとけば、大して変わらんと思うのだが…
まぁアノテーションでもいいと思うけど
569562:2007/12/04(火) 21:04:04
>>567
ありがとうございます!
アドバイスを頂いたときにはたと思い至り,
以下のように「pBuilder.redirectErrorStream(true);」を追加すると
正常に動作するようになりました!!!
標準エラー出力が満杯になるということがあるんですね・・.
本当にありがとうございました.

ProcessBuilder pBuilder = new ProcessBuilder(gaibuProgramCmd);
pBuilder.redirectErrorStream(true);
Process p = pBuilder.start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null){
System.out.println(line);
}
570デフォルトの名無しさん:2007/12/04(火) 21:16:49
>>568
将来的にインターフェースにして、動的プロキシ使って RPC 呼び出す構成にしたいので
宣言でやるのが変じゃないかがキモなのですよ。
571デフォルトの名無しさん:2007/12/04(火) 21:23:06
変じゃないかは権限チェックの責任を誰に持たせるかによるんじゃないの。
572デフォルトの名無しさん:2007/12/04(火) 21:28:02
>>570
なんとなくどこかにセキュリティホールが開きそうな気がするのが気になるけど、
大丈夫なら、別にアノテーションいいと思うよ

自分も変な使い方しようとしたことあるし・・・
interface MyProtocol {
@Message(id = 3, priority = LOW)
void hogehoge();
}
とか
573デフォルトの名無しさん:2007/12/04(火) 21:39:57
権限チェックは呼び出し側 (インターフェースの裏に居る InvocationHandler) で一括してやるので
宣言さえ適切なら抜けはなく、宣言しか見ない呼び出し側にも明確かと。
今の頭の中の最終形はこんな感じか。

public interface RemoteServer{
  @Permission(role = User.ADMIN)
  public String deleteUser(int id);
  @Permission(role = User.SYSTEM)
  public void executeBatch();
}

public class RemoteServerInvocationHandler extends InvocationHandler{
  public Object invoke(Object proxy, Method method, Object[] args) throws Exception{
    // メソッドのアノテーションを調べて実行権限確認
    // メソッド名に基づく RPC 呼び出し
  }
}
574デフォルトの名無しさん:2007/12/04(火) 21:41:16
@AccessRights(Role.Administrator) とかの方がコントロールしやすそうだな。.
あとログイン済み確認とアカウントのロール割り当てはチェックは、どのみちせなかん。
575デフォルトの名無しさん:2007/12/04(火) 21:42:27
っと、同じことかいちまったw
576デフォルトの名無しさん:2007/12/04(火) 21:58:38
ああ、インターフェース使う側のプログラマにもどの権限で呼び出せる機能かが
明確になるので意外と良いかもしれん。JDK 1.4 以来ずっと 「アノテーション
なんてどこで使いようがあるんだよ」 と思ってたが、やっと一つ見つけたわw
アスペクト指向チックな設計してるところでは使いようによっては便利なのかな。
577デフォルトの名無しさん:2007/12/04(火) 22:07:11
aptでアノテーションを参照してメソッドの先頭に権限チェックをつっこめるようになったりするといいんだけどねえ。
578デフォルトの名無しさん:2007/12/04(火) 22:35:42
そういや RMI ってまだスタブやスケルトン必要なの?
RMI 実装が動的プロキシ使ってくれればスタブもスケルトンも不要だと思うんだけど。
579デフォルトの名無しさん:2007/12/04(火) 22:48:17
Webサービス全盛の今、RMI使う奴なんかまだ居るのかね
580デフォルトの名無しさん:2007/12/04(火) 23:01:25
対外システムやサブシステム間の接続でもなければ全通信に XML 使うのは
ただのオーバーヘッドでしかないな。まぁ大半は客騙してオーバースペックの
ハード売る口実に使ってるだけなんだが。
581デフォルトの名無しさん:2007/12/04(火) 23:09:50
CORBAって今も現役なの?RMI-IIOP採用はうちの近くでは聞かないなぁ。
WebServiceはRESTのせいで何かHTTPで使えれば何でもそうみたいに聞こえる。
582デフォルトの名無しさん:2007/12/04(火) 23:20:48
分散トランザクション使いまくり、色々な言語/環境/会社使いまくりの某巨大銀行の
中心付近では余裕で現役だったりする。Web サービスなんかバッチ処理 (非 Java)
からアプリケーションの機能呼び出す時くらいにしか使ってないがな。
583デフォルトの名無しさん:2007/12/04(火) 23:26:36
>>578
今は動的プロキシで自動生成してくれるので不要
584デフォルトの名無しさん:2007/12/05(水) 00:47:55
JDK1.4でString.replaceAll("foo", "\\var");をしても、\\が表示されません。(varになる)
String.replaceAll("foo", "\\\\var");としてもだめでした。
どうすればいいでしょうか?
585デフォルトの名無しさん:2007/12/05(水) 01:00:51
>>584
ドキュメント嫁と言おうとしたが1.4のドキュメントには書かれてないな。
1.6のドキュメントより。
> 置換文字列内でバックスラッシュ (\) とドル記号 ($) を使用すると、
> それをリテラル置換文字列として処理した場合とは結果が異なる場合があります。
> Matcher.replaceAll を参照してください。
> 必要に応じて、Matcher.quoteReplacement(java.lang.String) を使用して、
> これらの文字に特別な意味を持たせないようにしてください。
586デフォルトの名無しさん:2007/12/05(水) 01:10:35
すまん、quoteReplacement導入されたの1.5だった。
1.4の場合どうすれば良いかわからん。
587584:2007/12/05(水) 02:01:54
>>585
ご説明ありがとうございます。quoteReplacement…あまり聞きなれないメソッドですね。

別の環境で試したらString.replaceAll("foo", "\\\\var");でうまくいきました。
うまくいかなかった環境とはリビジョンが異なるのでよくわかりませんが
もう一度試してみようかと思います。

ちなみに、うまくいったのはJDK1.4.2_16とJDK1.5.0_12です。(1.5は動作をみるために)
うまくいかなかった(と思う)環境はJDK1.4.2_13使ってました。
1.4のリリースノートに関連するキーワードがないので違いはないと思えますが…?

再度試してだめだったら、Matcherであれこれ試してみようかと思います。
588デフォルトの名無しさん:2007/12/05(水) 03:21:18
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/111.java

このプログラムってどういった処理で実行結果が出てるんでしょうか?
589デフォルトの名無しさん:2007/12/05(水) 04:05:02
>>588
読んで字のごとく。
この程度のソース読めないなら諦めろ。

pencilCase.hasNext()
pencilCase.next()
pencil.getName()

この3つの実装をトレースしてみれ。
590デフォルトの名無しさん:2007/12/05(水) 05:29:58
マヌケ
591デフォルトの名無しさん:2007/12/05(水) 07:40:02
総称型使ったクラス (コレクション持ち) の clone() で、警告なしで
コレクションも複製しようと思ったらまた抑止しなきゃいけないニカ?

public Object clone(){
  try{
    Node<?> node = (Node<?>)super.clone();
    node.subnode = new ArrayList<T>(this.subnode);  // 型のフイッチ
    return node;
  } catch(CloneNotSupportedException ex){
    throw new IllegalStateException();
  }
}
592デフォルトの名無しさん:2007/12/05(水) 11:12:01
>>591
copyやらduplicateやら名前をclone以外にして複製メソッドを作り直す、とか
593デフォルトの名無しさん:2007/12/05(水) 11:24:57
>>592
でも super.clone() 呼んだ時点で (Node<?>) にキャストしなきゃいけないから同じだよなぁ。
うーんちょっと凝ろうとするとダマシダマシ地獄にはまるな、ジェネリクス。
標準のコレクションみたいに 「何でも入るバケツに制限つける」 程度の用途に抑えておいたほうがいいのか。
594デフォルトの名無しさん:2007/12/05(水) 11:34:02
// 例外処理省略
// interface Node extends Clonable
protected Object clone() {
  Node<?> result= (Node<?>) super.clone();
  result.children = new ArrayList<Node>();
  for(Node child; node.getChildren()) {
     result.add((Node) child.clone());
  }
  return result;
}
595デフォルトの名無しさん:2007/12/05(水) 11:34:08
>>593
親クラスが変更不可なら、うーん…設計ミス?(ぉ
596デフォルトの名無しさん:2007/12/05(水) 12:22:55
>>591
どうせSuppressWarnings付けるんなら、super.clone()をNode<T>で受け取るべきだと思う

public Node<T> clone(){
try {
@SuppressWarnings("unchecked")
Node<T> node = (Node<T>)super.clone();
...
}
597デフォルトの名無しさん:2007/12/05(水) 16:22:51
他人が作った、違うパッケージに例外が定義されています。なぜか private です。
private exception Foo;

このパッケージ内のクラスを呼び出しているのですが、Foo が発生しています。
Foo を catch する方法はありますか?
598デフォルトの名無しさん:2007/12/05(水) 16:45:20
作った奴を吊るし上げろ
外に投げる例外でprivateとかバグだろ・・・

回避策はcatch(Exception e) のみ
規約で禁止されていたら乙
599デフォルトの名無しさん:2007/12/05(水) 16:48:10
Desktop desktop = Desktop.getDesktop();
String test ="全角スペースとかOS依存の文字を使ったパス";
File file = new File(test);
try {
   desktop.open(file);
} catch (IOException exception) {
   exception.printStackTrace();
}

何か文字化けしてしまってうまくできません。どうやって文字エンコーディングとか設定してうまくできますか?
600デフォルトの名無しさん:2007/12/05(水) 16:49:45
教えてください。
プログラム内で以下のように記述してコンパイルしたら
  static int[] pos = new int[8];
   static void print() {
   for(int i=0; i<8; i++) {
     System.out.printf("%2d", pos[i]);
  }
 }
次のようなメッセージがでました
The method printf(String, int) is undefined
for the type PrintStream

どのように対処すればいいのですか?
601デフォルトの名無しさん:2007/12/05(水) 16:51:42
>599
以下を書いてくれ
実行環境のOS
読み込みファイルの文字コード
読み込むファイルの具体的なパス
Javaのバージョン
602デフォルトの名無しさん:2007/12/05(水) 16:53:12
>>690
javac -version でバージョン報告よろ
603デフォルトの名無しさん:2007/12/05(水) 17:04:11
>>601
このソースは質問のところを適当に簡略化して書いただけなんですけど、

実行環境のOS                 windowsXPとか
読み込みファイルの文字コード       たぶんXPなんでMS932?(System.getProperty("file.encoding")て取得してみた)
読み込むファイルの具体的なパス     C:/Get Wild.mp3(真ん中のスペースを全角にしてみた)
Javaのバージョン               jdk1.6.0_02

Failed to open file:/C:/Get%E3%80%80Wild.mp3. Error message: 指定されたパスが見つかりません。
完全に文字化けしてる…
604デフォルトの名無しさん:2007/12/05(水) 17:16:24
get wild and tough ひと−りーではー
605デフォルトの名無しさん:2007/12/05(水) 17:16:50
mp3?
何時からmp3がテキストファイルになったんだ?
606599:2007/12/05(水) 17:28:49
>>605
テキスト??
SE 6で追加されたDesktopのopenを使ってファイルを実行しただけですが。
ちゃんとしたパスならmp3に関連付けられたアプリケーションが起動してmp3を再生します…
607デフォルトの名無しさん:2007/12/05(水) 17:39:56
file:// になってないけどいいのかな
608デフォルトの名無しさん:2007/12/05(水) 17:40:24
>>606
おまいが「どうやって文字エンコーディングとか設定して」と聞いているんじゃねーかw
609デフォルトの名無しさん:2007/12/05(水) 17:41:04
Eclipse 3.3 にしたらパッケージエクスプローラで F5 押しても更新されなくなった。
ショートカット変わった?
610デフォルトの名無しさん:2007/12/05(水) 17:46:09
>>599
使用できない文字だろうな
Fileクラスはマルチバイト対応だが、内部的にURIに変換されているからアスキー変換されているっぽい
file://〜 でアクセスできるファイルでないと開けないということ
611デフォルトの名無しさん:2007/12/05(水) 18:00:12
target="_blank"が書いてあるページと、それで表示したページは
セッション情報は共有してるんでしょうか?

具体的には、
1.ページAから別ウィンドウでページBを開く
2.ページBからHttpSessionに情報セット
3.ページBを閉じる
4.ページAから別ウィンドウでページCを開く
5.ページCから2でセットした情報を読み込む
という処理は可能でしょうか?
612デフォルトの名無しさん:2007/12/05(水) 18:03:22
やってみりゃいいのに

多分できる
613599:2007/12/05(水) 18:04:16
>>607
599のソースでちゃんとしたパスなら動くからおk
>>608
化けてるから文字コードかと思って…

>>610
そういうことですか…

ファイルのパスを取得→テキストとかに保存→(数日後)→テキストからパスをロード→実行
ってかんじの機能を持ったアプリだからこれができないと…
何かいい方法ないっすかねぇ
614デフォルトの名無しさん:2007/12/05(水) 18:05:50
なんかすっげー懐かしいニュース見つけた。
http://internet.watch.impress.co.jp/www/article/970827/navjava.htm
615デフォルトの名無しさん:2007/12/05(水) 18:07:41
>>613
アプリフォルダにコピーしとけば?
やってみないとわからないけど、一度Fileインスタンス生成して、toURL().toURI() でURIを作る。
で、URIが有効ならば、URIからFileを生成すればどうだ?
616デフォルトの名無しさん:2007/12/05(水) 18:15:43
化けてるんじゃなくてURIエスケープされてるだけじゃん。
ん?FileってURIだっけURLじゃなかった?
617デフォルトの名無しさん:2007/12/05(水) 18:33:01
素人か?
618デフォルトの名無しさん:2007/12/05(水) 18:33:21
教科書通りにCドライブの直下にソースを作成して、コマンドプロンプトからコンパイルしようと
思ったのですが、コマンドプロンプトが、デフォルトで
C:\Document and Setting\???
から始まるようになっていたのですが、これを直す方法はありますか?
後、無理にC直下から起動する必要はありますか?
619デフォルトの名無しさん:2007/12/05(水) 18:35:30
直下にする理由が分からんが
コンパイルの際にフルパス入力しろ
620599:2007/12/05(水) 18:53:44
Desktop desktop = Desktop.getDesktop();
File file = null;
JFileChooser filechooser = new JFileChooser();;
int selected = filechooser.showOpenDialog(null);
if (selected == JFileChooser.APPROVE_OPTION) {
     // 選択されたファイルを得る
     file = filechooser.getSelectedFile();
}
try {
    desktop.open(file);
} catch (IOException exception) {
    exception.printStackTrace();
}

上のソースで全角スペース使ったファイルをファイルチューザーで選んでも
Failed to open file:/C:/Get%E3%80%80Wild.mp3. Error message: 指定されたパスが見つかりません。
at sun.awt.windows.WDesktopPeer.ShellExecute(WDesktopPeer.java:59)
at sun.awt.windows.WDesktopPeer.open(WDesktopPeer.java:36)
at java.awt.Desktop.open(Desktop.java:254)
at test.Main.main(Main.java:26)

これは困った…どうやらopen自体が全角スペースとかのパスが想定されてないみたいだ…
これはDesktopのソースを見てオーバーライドするしかない?

>>617
最近プログラミング始めた素人です…
621デフォルトの名無しさん:2007/12/05(水) 20:01:47
>>620
確認。問題があるのは sun の WDesktopPeer であって、Desktop 自体は関係なし。

試しに、全角空白を含む存在しないファイルを指定すると、Desktop 内で例外になる。
その場合、全角空白はエスケープされていない。
他の多バイト文字は大丈夫そう(一文字は確認)なのに。

ちなみに File.exists でも問題なし。URI にするのも効果なし。さてはて…
622デフォルトの名無しさん:2007/12/05(水) 21:25:49
>>620
発生場所の行番号も同じなのだが、これじゃね?
http://bugs.sun.com/view_bug.do?bug_id=6599987
623デフォルトの名無しさん:2007/12/05(水) 21:37:10
全角空白の UTF-8 表現は E3 80 80 だから別に化けてるようには思えんが。
624デフォルトの名無しさん:2007/12/05(水) 21:38:16
zipの日本語ファイル名には対応しましたか?
625デフォルトの名無しさん:2007/12/05(水) 21:40:43
>>624
元々全然する気ねーみたいだけど。
てか日本語ファイル名には対応している。Shift_JIS や任意のエンコーディングに対応していないだけ。
626599:2007/12/05(水) 22:12:30
>>621
エラー出るのはたぶん全角スペースだけだな
>>622
場所は一緒だけど何か違う。
そのやつはファイル名はマルチバイトじゃないし、
別にmp3ファイルじゃなくても、パスにともかく全角スペースでエラーでるし…

流石に俺が該当箇所のソース見てみてもどこがおかしいかワカンネ
627デフォルトの名無しさん:2007/12/06(木) 02:06:40
Java3Dの質問もここでよろしいでしょうか?
テクスチャとして張れる画像は(2のn乗)×(2のn乗)ピクセルでなければ
ならない、と調べたら出たのですが、これ以外の大きさの画像を貼り付ける
手段はないでしょうか?
628デフォルトの名無しさん:2007/12/06(木) 04:45:16
ある
いくらでもある
629デフォルトの名無しさん:2007/12/06(木) 06:08:44
>>627
DirectXしかしらんが、そのサイズはサーフェスのサイズではないのか?
もし本当に2のn乗サイズしか無理でも、2のn乗サイズに足りない面積を適当な色でパディングして、
テクスチャを設定するときにUV座標をいじればいい。
630デフォルトの名無しさん:2007/12/06(木) 13:45:05
改行も含む任意の文字の連続にマッチする正規表現はどう書くのがいい?
(?:.|\n)*では遅い上に簡単にスタックオーバーフローしてしまう。
alternationがこの欠点を持つことはsun確認済で直すつもりもないらしい。
(?:.*\n?)*とかかなあ。
631デフォルトの名無しさん:2007/12/06(木) 13:48:24
そんなこと考えなくても Pattern#compile に DOTALL フラグを渡せばいいよ
632デフォルトの名無しさん:2007/12/06(木) 14:01:50
そういうのがあったのか。どうもありがとう。
633デフォルトの名無しさん:2007/12/06(木) 15:53:25
>>632
フラグを渡すのが面倒なら(?s:.*)みたいに正規表現に埋め込むのも
634デフォルトの名無しさん:2007/12/06(木) 16:00:10
>>627-628
ありがとうございます。
ところが実際貼り付けようとしたらコンパイルは通るのですが
実行で躓きます。
texFile = new java.net.URL(getCodeBase().toString() +"画像ファイル");
でぬるぽが出てgetCodeBase(Unknown Source)
となります。何が悪いのでしょうか?
635デフォルトの名無しさん:2007/12/06(木) 16:05:16
log4jでログを出力しているのですが、log4j.xmlの設置ディレクトリは変更できないのでしょうか?
636デフォルトの名無しさん:2007/12/06(木) 16:26:57
Dlog4j.configuration
637デフォルトの名無しさん:2007/12/06(木) 16:38:37
>>634
それアプレット?
どこで実行してる?initの中?
たぶんJava3D関係ない
638デフォルトの名無しさん:2007/12/06(木) 17:35:21
>>636
これって毎回読みにいくっぽいのですが、
初期設定みたいなものにはできないのでしょうか?
639デフォルトの名無しさん:2007/12/06(木) 17:39:32
起動時に毎回読みに行き初期設定になるわけですが、何か問題でも?
640デフォルトの名無しさん:2007/12/06(木) 17:47:27
言葉足らずでした。
JVMの設定にしたいのではなく、とあるプロジェクトではこのlog4j.xmlを使うという形にしたいのです。
641デフォルトの名無しさん:2007/12/06(木) 18:18:04
メソッド名の付け方について質問です。

インスタンス.メソッド(引数)は、
補語.動詞.(目的語)と読み替えられると思います。
(murata.set(hat)で村田に帽子を被せる等)

インスタンスに一連の動作を行わせるのメソッドの名前を今までplay()としていました。
しかし上の例に当てはめると「インスタンスに一連の動作を行う」と、おかしな文章になってしまいます。

「行う」ではなく「行わせる」という意味にメソッド名を変えたいのですが、
この場合どういうメソッド名にすれば良いでしょうか?
642デフォルトの名無しさん:2007/12/06(木) 18:22:30
「インスタンスが一連の動作を行う」と思えばいいんでは?

クラス名・変数名に迷ったら書き込むスレ
http://pc11.2ch.net/test/read.cgi/tech/1191250784/l50
643デフォルトの名無しさん:2007/12/06(木) 18:26:34
主語.動詞(目的語)
だと思う

murata.putOn(theHat); -> 村田が帽子をかぶる
murata.play(); -> 村田が遊ぶ

#村田って誰よw
644デフォルトの名無しさん:2007/12/06(木) 18:28:24
>>641
メソッドの呼び出しはインスタンスに何かを行わせるというより、
インスタンスが何かを行うきっかけを与えるってイメージの方が良いかも。
呼び出し側で行わせるんじゃなくて、インスタンスが自分で行うって感じ。
645デフォルトの名無しさん:2007/12/06(木) 18:30:50
主語.動詞(目的語)だよな。
murata.execute(sequence)とかじゃね?
646デフォルトの名無しさん:2007/12/06(木) 18:31:00
主語はメソッドをコールしているオブジェクトで、
目的語.他動詞(副詞節)
こうじゃね?
647デフォルトの名無しさん:2007/12/06(木) 18:46:57
おまいらの英語ティーチなんて当てになんねー
クヌースにでも教えてもらえ
648デフォルトの名無しさん:2007/12/06(木) 19:35:01
>>640
意味わからん
実行時に指定してもらえばいいだろ
649デフォルトの名無しさん:2007/12/06(木) 19:59:25
>>641
オブジェクト指向MLでそんな話題が前にありました。
http://www.ogis-ri.co.jp/otc/hiroba/MailingList/digest/index.html
2000.07 「メソッドの名付け方」が参考になるかもしれません。
#でも、たしか結論は出ていなかったような・・・。
650デフォルトの名無しさん:2007/12/06(木) 20:18:13
javaでFTPをやろうとしているのだけど、相手先のサーバのディレクトリ
が存在するか否かのチェックってできますか?
651デフォルトの名無しさん:2007/12/06(木) 20:28:37
>>650
FTP 的には cd や ls を試してエラーにならないかどうかでしか判断できない。
652デフォルトの名無しさん:2007/12/07(金) 00:51:45
検索画面で一覧表示し、チェックボックスでチェックしたデータをCSVファイルに
ダウンロードし、同時にDBにダウンロード済みのフラグを立てて画面を再表示して
ダウンロードしたデータが一覧から消えるということを行いたいのですが、上手く
いきません。(レスポンス先をCSVファイルにしている為、画面更新ができない)
どなたか、同じような経験をしてこう解決したという方いましたらご教授の程宜しくお願いします。
653デフォルトの名無しさん:2007/12/07(金) 01:24:33
おい、やっぱり IE は Windows-31J を正しく認識できてないぞ。
654デフォルトの名無しさん:2007/12/07(金) 01:24:42
マルチスレッド考慮してる?
655デフォルトの名無しさん:2007/12/07(金) 01:34:58
>>652
<form> に target="_blank" 付けるなり JavaScript で別ウィンドウ出すなりして CVS ダウンロードのリクエストを送信。
元の画面は JavaScript で 1 秒後にでもリロード。
656デフォルトの名無しさん:2007/12/07(金) 03:46:24
double型の軽いビット演算の方法を教えてください。

今double型を整数部と小数部に分けて考えています。
整数部はlong型にいれビット演算してdouble型に戻し、
小数部はMath.pow(2,63)をかけてlong型に入れビット演算してMath.pow(2,-63)をかけてdouble型に戻す作業をしようとしています。
しかし、こんなやり方ではビット演算とは関係がないところでに重くなってしまいます。
どうしたらよいのでしょうか?
657デフォルトの名無しさん:2007/12/07(金) 08:05:39
昨日JAVAの入門書よんだらプログラムにはmain()メソッドが必ず一個あるって書いてんだけど、今携帯用のMIDPアプリのソース何種類かみたけどmain()メソッドがないよ
どういうことでしょうか?
658デフォルトの名無しさん:2007/12/07(金) 08:17:49
>657
javaアプリケーションの間違いじゃね?
いらない形もあるよ。

コマンドプロンプトから
java クラスファイル
で実行するなら、そのクラス内にはmain必要。
659デフォルトの名無しさん:2007/12/07(金) 08:24:44
>>658
レスありがとうございます!
携帯用の2ちゃんブラウザのa2Bてアプリのソースみてました
main()いらないのもあんですね
ありがとうございました
660デフォルトの名無しさん:2007/12/07(金) 08:25:54
>>658
ちょwおまwww

>>657
書いたコード中にmainがあるとは限らない。
MIDPアプリの場合は、ランタイム(JVMなど)上にさらに
MIDPアプリを動かすための枠組み・仕組みがあって
そこからMIDPアプリが呼ばれるようになっている。
その枠組み・仕組みの中にはJVMから呼ばれるmain()メソッドがあるよ。
661デフォルトの名無しさん:2007/12/07(金) 09:28:02
>>656
doubleのビット演算を行う目的は?
なにがどのくらい重くなるの?
662デフォルトの名無しさん:2007/12/07(金) 09:29:38
1. FileInputStream is = new FileInputStream(new File("C:/tmp/test.txt"));
2. byte[] data = new byte[16];
3. is.read(data); // 16バイトのバイトデータを配列dataに読み込む

 上記のdataを一次元配列にいれるためには配列の型は何にすればいいのでしょうか?
663デフォルトの名無しさん:2007/12/07(金) 09:56:46
>>662
健忘症が激しいようで。自分でやってるのに気がつかないとは…
まあ、byte[] の配列を作ればいいんじゃないの?
data を使いまわすなら、複製しないとダメだけどな。
664デフォルトの名無しさん:2007/12/07(金) 10:26:36
byte[][] 型.
だけど、読込バイト数をファイルサイズから計算して配列サイズを求める必要がある。
どっちかといえば、ArrayList<byte[]> のが良いかと思われ
665デフォルトの名無しさん:2007/12/07(金) 11:17:51
ちょっとしたテキスト解析を行うプログラムを作っています。
その解析処理では、いくつか閾値を設けなければならなくて、
その閾値の設定をどこからでも参照できるようにしたいのです。
(その参照元は、値の設定を行うビューや実際に解析を行うクラスなどです)
こういったグローバルな設定項目をJavaで定義するにはどうすればいいのでしょうか?
666デフォルトの名無しさん:2007/12/07(金) 11:21:09
SingletonとかMonostateとか定数ユーティリティクラスとか?
667デフォルトの名無しさん:2007/12/07(金) 11:26:33
>>659
わかってるとは思うが、それでもお節介に言ってしまうと、mainは複数含まれてもいい。
実行時にどのバイトコードに含まれるmainを実行するのか指定するので、
デバッグ用mainとリリース用mainとか使い分けることも出来る。
668デフォルトの名無しさん:2007/12/07(金) 11:30:21
>>667
質問者の頭の中ではプログラム=クラスだと思うから1つで正しいと思われ
669デフォルトの名無しさん:2007/12/07(金) 11:50:52
asage
670デフォルトの名無しさん:2007/12/07(金) 11:52:40
>>661
>doubleのビット演算を行う目的は?
理由1:
作っているアルゴリズムと速度比較するために遺伝的アルゴリズムを作ろうとしています。
この2つのアルゴリズムの初期化方法と評価方法をまったく同じにするために先に作ったアルゴリズムのdouble型に統一しようとしているため。
理由2:
遺伝的アルゴリズムの交叉、突然変異の計算部分をビット演算するため。

>なにがどのくらい重くなるの?
Math.pow()の部分だけでほとんどの計算時間を費やします。
671デフォルトの名無しさん:2007/12/07(金) 11:59:39
>>666
ありがとうございます。3つとも調べてみました。
定数ユーティリティはクラスメンバを直接読み書きさせるもの、
Monostateは定数ユーティリティにアクセッサを追加したもの、
Singletonはインスタンスメンバを持たせてインスタンスが1つしか存在しないようにしたもの、
という理解で間違ってないでしょうか。
ただ、これらの使い分けは一般にどうされてるんでしょうか…?
672デフォルトの名無しさん:2007/12/07(金) 12:05:12
>>670
Double.doubleToRawLongBitsでdoubleのビットパターンが得られるので、
自力でそれを仮数部と指数部と符号に分解して、演算後また合成して、
Double.longBitsToDoubleでdoubleに戻す…とか
673デフォルトの名無しさん:2007/12/07(金) 12:16:20
>>651
apacheにライブラリがある
其れを使えば簡単に出来るしファイルを扱うようにFTPを操作できる
674デフォルトの名無しさん:2007/12/07(金) 12:30:32
>>670
どんなアルゴリズムでもそうだが、Math.powとアルゴリズムの計算量のバランスがおかしいので、その方法では速度比較できない。
doubleで軽いビット演算を行うのは難しいってのは明らかだろ?

つまり、やろうとしていること自体に無理がある。
自力でビット演算したところで、その処理が重い事は変わらないので比較する前の話
675デフォルトの名無しさん:2007/12/07(金) 12:48:32
>>674
速度比較と書いてしまいましたが・・・収束速度比較の間違いです。ごめんなさい。
どちらのアルゴリズムがより少ない評価回数でより良い値に収束できるのかを調べようとしています。

>>672
ありがとうございます。
早速試してみます。
676デフォルトの名無しさん:2007/12/07(金) 12:58:34
>>673
おまえとは話してるレイヤーが違う。
677デフォルトの名無しさん:2007/12/07(金) 13:03:20
adasge
678テスト ◆tr.t4dJfuU :2007/12/07(金) 13:09:19
テスト
679デフォルトの名無しさん:2007/12/07(金) 13:33:55
テストじゃねぇよテスト
680デフォルトの名無しさん:2007/12/07(金) 14:26:06
>>676
同じだよ
難しく考えすぎてるだけ
その分ソースも難解になるぞ
681デフォルトの名無しさん:2007/12/07(金) 14:39:15
>>680
プロトコル上の制約と既成ライブラリの有無がどうやったら同じレイヤーの話に思えるのか…
ソース? レイヤーの切り分けも出来ない素人が何言ってんだ。
682デフォルトの名無しさん:2007/12/07(金) 16:03:18
StrutsのActionクラスにはインスタンス変数を使ったら
マルチスレッド的にまずいですよね?
683デフォルトの名無しさん:2007/12/07(金) 16:03:21
プロトコル上の制約含めてコントロールできるライブラリ
残念だけど貴方のレイヤーは私のレイヤーに包含されている
684デフォルトの名無しさん:2007/12/07(金) 16:11:27
> 残念だけど貴方のレイヤーは私のレイヤーに包含されている
それは 「cd やら ls やらで調べる手間は既成のライブラリ使えば楽」 ってだけ。
包含? 馬鹿ですか?
685デフォルトの名無しさん:2007/12/07(金) 16:18:17
そんな細かいところ、どっちでもいいよ
686デフォルトの名無しさん:2007/12/07(金) 18:18:19
プライドは邪魔だな
誰の目にも明らかに包含されてる
687デフォルトの名無しさん:2007/12/07(金) 18:27:33
と、言ってみたい年頃なの?
688デフォルトの名無しさん:2007/12/07(金) 18:40:43
画像のクリック検知をしたいのですが、方法がわかりません。
どなたか教えていただけませんか?
689デフォルトの名無しさん:2007/12/07(金) 18:55:02
shadeで作った3Dオブジェクトをjava3dで扱う方法を教えてください
690デフォルトの名無しさん:2007/12/07(金) 19:00:33
>>688
その画像を表示してるコンポーネントにaddMouseListener
691デフォルトの名無しさん:2007/12/07(金) 19:19:51
OOOのインスタンスをJFrame内に生成する方法はないでしょうか
692デフォルトの名無しさん:2007/12/07(金) 19:21:08
MATLABの関数をJavaから使うには如何したらいいでしょうか
693デフォルトの名無しさん:2007/12/07(金) 19:29:07
>>690
解答ありがとうございます。

先にImage imgを宣言しており、MouseActionクラスで処理してるとして

public void paint(Graphics g){
g.drawImage(img, x, y, this);
addMouseListener(new MouseAction()):
}

という感じでよろしいでしょうか?
また、img1,img2というように、画像が複数あった場合の方法も教えていただきたいです。
度々申し訳ありません、よろしくおねがいします。
694デフォルトの名無しさん:2007/12/07(金) 19:31:42
誰の目にも明らか ≒ うまく説明できないけど
695デフォルトの名無しさん:2007/12/07(金) 19:38:53
>>693
paintのたびに毎回やる必要は無い
コンストラクタで一度やっておけば後はずっとイベントが来る

画像の数も関係ない
MouseListenerは画像ではなくコンポーネントに設定するものだから
696デフォルトの名無しさん:2007/12/07(金) 19:53:57
>>695
つまり、

ConstName(){
//画像取得
img1 = getToolkit().getImage("img1.gif");
img2 = getToolkit().getImage("img2.gif");

addMouseListener(new MouseAction());
}

という感じでよろしいんですか?
あと、書き忘れていたんですが、img1とimg2のクリック検知を区別したいのですが…
これは処理しているMouseActionクラス(MouseAdapter継承)で行うんでしょうか。
697デフォルトの名無しさん:2007/12/07(金) 19:56:02
今何を表示してるかは自分でわかってるはずだろ?
if文で場合分けすればいい
698デフォルトの名無しさん:2007/12/07(金) 20:25:34
>>697
説明不足でした。
img1とimg2は同時に表示されているんですが…
できれば例を示していただきたいです。
何度も申し訳ないです、よろしくお願いします。
699デフォルトの名無しさん:2007/12/07(金) 21:00:12
>>698
GUI以前の問題。基本的なロジックに対する理解がなってない。if,for,whileからやり直せ。
700デフォルトの名無しさん:2007/12/07(金) 21:07:57
>>698
// これらは回答が必要な質問ではない
AWTのイベントモデルは理解していますか?
MouseEvent は見ましたか?
座標の概念は分かりますか?
701デフォルトの名無しさん:2007/12/07(金) 21:29:52
ttp://www.asahi-net.or.jp/~dp8t-asm/java/articles/XMLJava2/article.html#prog:print

ここに載っている2.6準備の「Project X」を試してみたいのですが、
xml.jarの場所がわからないのでご存じの方がいたらお願いします。
702デフォルトの名無しさん:2007/12/07(金) 21:34:58
>>699>>700
つまり座標取得を使って画像の範囲内の座標のクリックを検知する、
ということでよろしいのでしょうか?

何か勘違いをしていたみたいです。
ご迷惑をおかけしました。
703管&;理&;人:2007/12/07(金) 21:43:17
テ&;ス&;ト
704デフォルトの名無しさん:2007/12/07(金) 22:13:10
インターネットを通してモーター等をリモートコントロールする事を考えてます
JAVAで双方向での通信までの部分を実現するにはどういったパッケージやクラスが必要になるでしょうか
705デフォルトの名無しさん:2007/12/07(金) 22:28:00
JSP で拡張タグ使うときって、web.xml の taglib-uri に記述しないで

<%@ taglib prefix="foge" uri="/WEB-INF/tld/foge.tld" %>

とか直接 uri に場所指定するのも仕様的に良いんだっけ?
706デフォルトの名無しさん:2007/12/07(金) 22:29:07
>>704
java.io.InputStream
java.io.OutputStream
java.net.Socket
java.net.ServerSocket
707デフォルトの名無しさん:2007/12/07(金) 22:43:34
>>705
Servlet2.3からはOK。
708デフォルトの名無しさん:2007/12/07(金) 23:10:02
>>707
Servlet 2.3 って事は JSP 1.2, J2EE 1.3 (2001年頃) か。
だいぶ古い知識引きずってたのかな。どうもありがとう。
709デフォルトの名無しさん:2007/12/07(金) 23:49:23
 
710デフォルトの名無しさん:2007/12/07(金) 23:59:58
JSPで取得した値をhtmlタグ内の値として使うことって可能ですか?
<input type="checkbox" value=取得した値>
みたいなことがしたいのです。
711デフォルトの名無しさん:2007/12/08(土) 00:02:56
<input type="checkbox" value="<%= value %>">
712デフォルトの名無しさん:2007/12/08(土) 02:16:05
swtを使ってeclipseによくあるチェックボックスリスト(?)を実装したいと思っています。
こういうやつです→ttp://uproda.2ch-library.com/src/lib000995.jpg.shtml

Listのコンストラクタを new List(parent,SWT.CHECK | SWT.BORDER); のように
スタイルにSWT.CHECKを含めてもチェックボックスが付いてくれません(Treeだとこれで付くのですが)。
どのように実装すればいいのでしょうか。お願いいたします。
713デフォルトの名無しさん:2007/12/08(土) 06:49:42
>>712
org.eclipse.swt.widget.ListのAPI読むと、
Only one of the styles SINGLE, and MULTI may be specified.
ってあります。SWT.CHECKは無効ですよ。
そういうのはJFace使わないと無理では。
714デフォルトの名無しさん:2007/12/08(土) 10:11:43
NetBeans使えば簡単に出来るのに
715デフォルトの名無しさん:2007/12/08(土) 12:34:22
716デフォルトの名無しさん:2007/12/08(土) 13:38:09
JavaアプレットをEJBクライアントにすることってできますか?
717デフォルトの名無しさん:2007/12/08(土) 13:46:11
できるよ
セキュリティファイル(名前忘れた)をいじれば、ローカルファイルにだってアクセスできちゃうんだから
718デフォルトの名無しさん:2007/12/08(土) 15:05:38
javabeansのアーキテクチャってどんな場面で使いますか
719デフォルトの名無しさん:2007/12/08(土) 15:21:09
JavaBeansはどこでも使う
720デフォルトの名無しさん:2007/12/08(土) 15:32:40
JavaBeansは最初はオーサリングツールの
プロパティウィンドウに関連付けるために作られたんだよな
721デフォルトの名無しさん:2007/12/08(土) 15:34:55
722デフォルトの名無しさん:2007/12/08(土) 15:38:42
質問です。

JPanelとKeyListenrを継承したクラスを作り
同クラスのmain()からJFrameを生成、そのフレームに同クラスを配置しました。
その際、コンストラクタから自クラスをKeyListenerとして指定したのですが
キーボード入力を受け付けません。

一旦、staticなクラス内インスタンスとして生成してからだと受け付けるのですが
原理というか、なぜそのようなことが起こるのかがわからないので
どなたか分かる方、教えていただけないでしょうか。
723デフォルトの名無しさん:2007/12/08(土) 15:47:09
JSP 2.0 から JSP が XML になったの? どういうこと?
724デフォルトの名無しさん:2007/12/08(土) 15:54:23
なんでもかんでもXML
725デフォルトの名無しさん:2007/12/08(土) 16:31:50
>>722
違いが出るのは、違う作りにしたから…
Listener を配置したのは、JPanel なのか、JFrame なのか…
「staticな"クラス内インスタンス"として生成」とは
何をしたことになるのか、はたまた何もしていないのか…

キーボード入力はフォーカスの問題だったりすることが多いような…
726デフォルトの名無しさん:2007/12/08(土) 17:27:19
>>722
関係ないかも知れないけど
コンストラクタ内で自インスタンスをリスナー登録するのは避けたほうがいい
727722:2007/12/08(土) 18:17:54
>>725
Listenerを配置したのはJPanelです。
this.addKeyListener(this);
としました。

フォーカスはtrueにしてあります。
状況しだいで反応があったので、フォーカスは問題ないと思います。

>「staticな"クラス内インスタンス"として生成」とは
>何をしたことになるのか、はたまた何もしていないのか…
問題のクラスの中に、自分のインスタンスを持たせて、
main()でその中に自分のインスタンスを入れました。
なんで動いたのかとか、何やってるのかは自分でもわかってません。^^;
まあ、だから困ってるわけですが。

>>726
避けたほうがいい理由を教えてもらえませんか?
728デフォルトの名無しさん:2007/12/08(土) 19:06:55
USBメモリから起動可能なwindow用のjava開発環境ってありますか?
javaでメモ帳打ちをしろということになるのでしょうか?
729デフォルトの名無しさん:2007/12/08(土) 19:40:43
>>728
Eclipse
730デフォルトの名無しさん:2007/12/08(土) 20:22:09
>javaでメモ帳打ちをしろということになるのでしょうか?
いきなり皮肉ってるwwww病気かwww
731デフォルトの名無しさん:2007/12/08(土) 21:07:02
>>727
状況しだいで反応があった、というのがミソなんじゃないのかな
公開できる部分で問題になりそうな変えた部分を貼ってみれば、誰かが分かるかも

あと、726 じゃないが…
コンストラクタを通りきってない=生成未完了のインスタンスを
別のインスタンスに渡すなってやつですな。
想定外の事が起きる可能性を増やすことになるから。
732デフォルトの名無しさん:2007/12/09(日) 00:57:54
JSTL の <c:set> って target が Map なら target.put(property, value) みたいなイメージで動く
と思ってたんだけどあってますか? どうもそのように動いてくれないんですけど。

<jsp:useBean id="product" class="java.util.HashMap" />
<c:set target="product" property="name" value="インスタントラーメン" />

javax.servlet.jsp.JspTagException: Invalid property in <set>: "name"
  at org.apache.taglibs.standard.tag.common.core.SetSupport.doEndTag(SetSupport.java:160)
  at org.apache.jsp.tag.web.references.tagfile.writeProduct_tag._jspx_meth_c_005fset_005f0(writeProduct_tag.java:106)
  at org.apache.jsp.tag.web.references.tagfile.writeProduct_tag.doTag(writeProduct_tag.java:70)
  …

property="price" にするとメッセージが 「Invalid property in <set>: "price"」 になるので
<c:set> で例外が発生していることは間違いないと思います。あと <jsp:useBean> を
<% pageContext.setAttribute("product", new HashMap()); %> に変えても同じでした。
何か間違っているのでしょうか。
733デフォルトの名無しさん:2007/12/09(日) 01:21:44
↑すみません、target 属性は EL で書かなければいけないんでした。var の癖が orz

<c:set target="${product}" property="name" value="インスタントラーメン" />
734デフォルトの名無しさん:2007/12/09(日) 19:52:52
文字化けしてしまいます。
文字化けを直したいのですが、どうやればいいのかわかりません。
おしえてくれませんか?

//Sample.java
class Sample{
public static void main(String args[]){
System.out.println("こんにちわ");
}
}

javac Sample.java
java Sample
?????
735デフォルトの名無しさん:2007/12/09(日) 19:56:18
実行環境の表示文字コードの問題でしょ
736デフォルトの名無しさん:2007/12/09(日) 19:57:49
これだったら出るか?
class Sample{
 public static void main(String args[]){
  System.out.println("\u3053\u3093\u306b\u3061\u308f");
 }
}
737デフォルトの名無しさん:2007/12/09(日) 20:01:43
\u3053\u3093\u306b\u3061\u308f
と、出ました。
738デフォルトの名無しさん:2007/12/09(日) 20:03:47
どういう環境だよw
739デフォルトの名無しさん:2007/12/09(日) 20:04:50
eclipseです。
740デフォルトの名無しさん:2007/12/09(日) 20:19:51
eclipseなのかjavacとか打つ?
741740:2007/12/09(日) 20:20:21
×なのか → ○なのに
742デフォルトの名無しさん:2007/12/09(日) 20:24:09
あ、そですね。
すみませんでした。
javac は、打ってません。
実行から、javaアプリケーションを押してます。
743デフォルトの名無しさん:2007/12/09(日) 20:27:08
>641 execute()
744デフォルトの名無しさん:2007/12/09(日) 20:28:47
class Sample{
public static void main(String args[]){
System.out.println(System.getProperty("java.runtime.version"));
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("os.version"));
System.out.println(System.getProperty("os.arch"));
System.out.println(System.getProperty("file.encoding"));
}
}

とりあえず↑の実行結果を貼れ。
745デフォルトの名無しさん:2007/12/09(日) 20:32:12
Dec 9, 2007 8:30:57 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Dec 9, 2007 8:30:57 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Dec 9, 2007 8:30:57 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 818 ms
Dec 9, 2007 8:30:57 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Dec 9, 2007 8:30:57 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
Dec 9, 2007 8:30:58 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 9, 2007 8:30:58 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 9, 2007 8:30:58 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Dec 9, 2007 8:30:58 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Dec 9, 2007 8:30:58 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/40 config=null
Dec 9, 2007 8:30:58 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1382 ms

と、でました。
746デフォルトの名無しさん:2007/12/09(日) 20:36:31
そうか、じゃあがんばってくれ
747デフォルトの名無しさん:2007/12/09(日) 20:42:06
>>745
まだやる気があるなら、>>744
748デフォルトの名無しさん:2007/12/09(日) 20:49:15
もう一度、>>744をするのですか?
749デフォルトの名無しさん:2007/12/09(日) 20:58:12
1.5.0_07-164
Mac OS X
10.4.11
i386
MacRoman

なんか、変わりました。
750デフォルトの名無しさん:2007/12/09(日) 21:00:38
servlet関係の話はどこですればいいですか?
751デフォルトの名無しさん:2007/12/09(日) 22:17:12
Mac じゃ分かる奴少ないんじゃないのか。
日曜の夜には居なさそう。
752749:2007/12/09(日) 22:24:05
お返事待ってます><;
753749:2007/12/09(日) 22:28:29
class Sample{
 public static void main(String args[]){
  System.out.println("Hello World!");
  System.out.println("こんにちわ");
 }
}

だと、
Hello World!
?????
と、なってしまいます。
754デフォルトの名無しさん:2007/12/09(日) 22:35:00
>>749
単純な話として、文字セットの選択ミス。
eclipse でのテキスト保存に使ってる文字セットが MacRoman で、
日本語を扱えないから、MacJapanese か、Unicode系に変更する必要がある

どうだろうか
755デフォルトの名無しさん:2007/12/09(日) 22:36:55
import java.io.*;
class Sample{
public static void main(String args[]) throws IOException{
System.out.write("こんにちわ\n\n".getBytes("MacRoman"));
System.out.write("こんにちわ\n\n".getBytes("MS932"));
System.out.write("こんにちわ\n\n".getBytes("EUC-JP"));
System.out.write("こんにちわ\n\n".getBytes("UTF-8"));
System.out.write("こんにちわ\n\n".getBytes("Unicode"));
}
}

↑ちょっとこれの実行結果を貼ってくれ
756754:2007/12/09(日) 22:41:39
失礼。文字コードの話は eclipse ではなく、javac or java の標準設定ですね。
ええ。>>755に進んでください。
757749:2007/12/09(日) 22:44:50
?????

?±???…????

§?§?§?§?§?

????????´??°???

??S0?0k0a0?0



と、なりました。><
758デフォルトの名無しさん:2007/12/09(日) 22:47:49
別のサーバに存在するファイルを存在するか否かを判定するにはどうすれば
いいでしょうか。
759デフォルトの名無しさん:2007/12/09(日) 22:56:54
もうすでに存在するって自分でゆっちゃってるじゃん
760デフォルトの名無しさん:2007/12/09(日) 23:06:00
とある用件で別処理で生成したファイルを他のサーバから確認しなければ
ならないのです。
761デフォルトの名無しさん:2007/12/09(日) 23:07:02
ソースの保存や読み込み、コンパイル時の文字化けでなくて出力時の問題らしいと言うのは
分かったが、コンソールを表示している JVM がMacRoman (≒ISO-8859-1?) にでもなってるのか。
-vmargs -Dfile.encoding=MacJapanese (≒Shift_JIS?) オプション付けて Eclipse 起動してみ
と言いたいが Mac はどうなってるのか分からんw
762デフォルトの名無しさん:2007/12/09(日) 23:09:25
>>760
システム構成や使えるプロトコルも明かさないで答えられるわけないだろ。
おまいの財布に近藤さんが入ってるかなんて誰も確認できないのと同じ。
763749:2007/12/09(日) 23:24:44
ターミナル上
Applications/eclipse/eclipse.app/Contents/MacOS$ls
eclipse
eclipse.ini

######ファイル名:eclipse.ini#####
-showsplash
org.eclipse.platform
-vmargs
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Xms40m
-Xmx256m
-XX:PermSize=40m
-XX:MaxPermSize=256m
-javaagent:/Applications/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=no.mnemonic
-Dorg.eclipse.swt.internal.carbon.smallFonts

GUIで、eclipse.appをダブルクリックしたら、eclipse3.3が起動します。


なにか、わかりましたら、おしえてください。><
764デフォルトの名無しさん:2007/12/09(日) 23:35:34
FTPしか使えないです。
765デフォルトの名無しさん:2007/12/09(日) 23:37:50
>>763
IBM の developerworks なわけだが。
ttp://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-osxjava/index.html#d

Eclipseでは保存するソースファイルの文字セットをプロジェクトやファイル等、個別に指定することが出来る。
まあ、ぶっちゃけ、UTF-8 に設定して、コンパイルでも UTF-8 を指定して使ってみてはいかがかな、と。
766749:2007/12/09(日) 23:43:47
>>765
どうもありがとうございます。
参考にします。
>>761のオプションを頼りにしたら、出来ました。

eclipse.iniファイルに、-Dfile.encoding=UTF-8を付け加えて、eclipse3.3を再起動させて、>>755を実行させたら、以下のように表示しました。


?????

????????

?????d?

こんにちわ

??S0?0k0a0?0


明日、月曜日なのに、本当にご協力ありがとうございました。
767749:2007/12/10(月) 00:08:49
直ってませんでした><;
import java.io.*;
class Sample{
public static void main(String args[]) throws IOException{
System.out.write("こんにちわ\n\n".getBytes("MacRoman"));
System.out.write("こんにちわ\n\n".getBytes("MS932"));
System.out.write("こんにちわ\n\n".getBytes("EUC-JP"));
System.out.write("こんにちわ\n\n".getBytes("UTF-8"));
System.out.write("こんにちわ\n\n".getBytes("Unicode"));
System.out.println(System.getProperty("java.runtime.version"));
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("os.version"));
System.out.println(System.getProperty("os.arch"));
System.out.println(System.getProperty("file.encoding"));
System.out.println("Hello World!");
System.out.println("こんにちわ");
}
}

?????
????????
?????d?
こんにちわ
??S0?0k0a0?0
1.5.0_07-164
Mac OS X
10.4.11
i386
MacRoman
Hello World!
?????
768デフォルトの名無しさん:2007/12/10(月) 00:10:05
恋愛力学
今日も格闘中
769デフォルトの名無しさん:2007/12/10(月) 00:15:09
そんなものは理論物理学だ
明日も机上の空論
770デフォルトの名無しさん:2007/12/10(月) 00:19:56
>>767
さっきのは Eclipse ワークベンチの文字コードで、あんたが今動かしたプログラムの文字コードは
まだ MacRoman のままなんだわ。

[実行]-[実行ダイアログを開く]-[Javaアプリケーション]-[Sample](多分)-[引数]-[VM引数] に
-Dfile.encoding=UTF-8
と入れてみ。
771749:2007/12/10(月) 00:31:21
>>770
おお!できました。
ありがとうございます。
これって、実行時に毎回入力しないといけないっぽいですね・・・。
一度設定して実行で、普通に表示する方法って無いですかね?
772デフォルトの名無しさん:2007/12/10(月) 00:38:42
Java VM がデフォルトで使用する文字コードをどうやって決めてるかだが、
Mac 環境は分からん。Unix 系だからシェルの環境変数 LANG か
LC_CTYPE を ja_JP.UTF-8 に設定するんじゃないのか。Mac 関連板で聞け。
773749:2007/12/10(月) 00:48:53
$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL="ja_JP.UTF-8"

こうなっています。
774Round Trip:2007/12/10(月) 11:37:21
722,727です。

>>731様、アドバイスありがとうございます。
返答が遅くなって申し訳ありません。

いろいろと試してみた結果、よくわかりません…。
コンストラクタ内で同クラスを、Listener登録と同時にスレッド化しているのですが
その際の処理順序によって動作の如何が変化します。
setFocusable(true)とスレッドの生成の後、スレッド開始前にaddKeyListener(this)をした場合は
keyListenerが動作します。

またこの場合でも、コンパイル→実行(キー反応なし)→コンパイル→実行(キー反応あり)
という手順を踏まないと、正常に動作しません。

何がなんだかわからないのですが、
原因や対処法など、何かわかる方が居られましたら
アドバイスをお願いします。
775デフォルトの名無しさん:2007/12/10(月) 11:40:18
何がなんだかわからないのでソースを示せ
776デフォルトの名無しさん:2007/12/10(月) 11:52:27
ほれ、普通に動くぞ
public class TestPanel extends JPanel implements KeyListener {
    TestPanel() {
    }
    public void keyTyped(KeyEvent e) {
        System.err.println(e);
    }
    public void keyPressed(KeyEvent e) {
        System.err.println(e);
    }
    public void keyReleased(KeyEvent e) {
        System.err.println(e);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                TestPanel panel = new TestPanel();
                panel.addKeyListener(panel);
                panel.setFocusable(true);
                JFrame frame = new JFrame();
                frame.add(panel);
                frame.setSize(100, 100);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
777デフォルトの名無しさん:2007/12/10(月) 12:08:10
>>774
確かにソース示せ、ですが…複合要因かなぁ
Swing継承クラスのコンストラクタ内でスレッド化…なんて、怖い単語が見えてますし
778デフォルトの名無しさん:2007/12/10(月) 12:42:49
ファイルからnバイトを読み込みたいのですが
int read(byte[] b, int off, int len)を使うと入力ストリームの位置がlenバイトづつ
進んでしまうので入力ストリーム位置を初期化したいのですがどうしたらよいですか?


 abcdefg から3バイトづつ読み込むとき
 
1 abc
2 bcd
3 cde
.
.
.
としたいです。。。
779デフォルトの名無しさん:2007/12/10(月) 12:52:23
java.io.RandomAccessFile raf;
while(true) {
byte[] bytes = new bytes[3];
int length = rad.read(bytes, offset, bytes.length);
if(length == -1) break;
}
780デフォルトの名無しさん:2007/12/10(月) 13:02:37
>>778
文字列処理はある程度 1-4 kBぐらい? 一括読みしてから作業しようぜ。
入出力は重めの処理だぞう。まぁ気にならないと思うけど。

読み込み位置を変更する seek が標準APIで出来るのは、>>779のだけだっけね。
781Round Trip:2007/12/10(月) 13:20:33
ソースを張ろうとしてコメントやら関係ない処理をそぎ落としたら
なぜか動いてしまってありゃぁ…?

もうちょっとソースを見直してみることにします。
素のままでは貼る勇気がでません。

>>777
Swing継承クラスのコンストラクタ内でスレッド化って
何が怖いのでしょうか。
良ければ教えてください。
782デフォルトの名無しさん:2007/12/10(月) 13:24:37
>>778
戻したい量にあわせて適切にバッファサイズを指定して作成したプッシュバック可能なストリームで
入力ストリームをラップしてやればできなくもないけどまとめて読んで処理したほうがたぶんいいよ
783デフォルトの名無しさん:2007/12/10(月) 13:31:57
>>781
何の為にスレッドを作っているのか想像もつかないのが怖いんだよ
ソース張らないならば誰もおまえさんのソースの問題点を指摘できないぜ
つまり、おまえさんは学べないって事。
784デフォルトの名無しさん:2007/12/10(月) 13:37:21
java用の画像認識アルゴリズムで
使えそうなフリーのライブラリはありますか
785デフォルトの名無しさん:2007/12/10(月) 13:40:31
なにを認識したいの?
786Round Trip:2007/12/10(月) 14:43:57
>>783
お説ごもっともです。
ソースを以下に添付します。
よろしくお願いします。

import java.awt.Container;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.event.*;
import javax.swing.*;

public class DynamicPanel extends JPanel implements Runnable,KeyListener{
//----------クラス定数----------
public static final int DEFAULT_WIDTH = 500;
public static final int DEFAULT_HEIGHT = 400;
public static final int DEFAULT_WAIT = 50;

//----------クラス変数----------
private int waitSec;

private Thread mainLoop;

//----------コンストラクタ----------
public DynamicPanel(){
setPreferredSize(new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT));
this.waitSec = DEFAULT_WAIT;

this.commonInit();
}
続きます。
787Round Trip:2007/12/10(月) 14:44:40
続きです。
private void commonInit(){
this.setFocusable(true);
this.addKeyListener(this);

mainLoop=new Thread(this);
mainLoop.start();
}

//メインループ
public void run(){
while(true){
runInterface();
repaint();
try{
Thread.sleep(waitSec);
}catch(Exception e){
e.printStackTrace();
}
}
}

//描画処理
public void paintComponent(Graphics g){
super.paintComponent(g);
paintInterface(g);
}
続きます。
788Round Trip:2007/12/10(月) 14:46:12
続きです。
//状態遷移
protected void runInterface(){}
//実行する描画処理
protected void paintInterface(Graphics g){}
//----------キー入力----------
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
System.out.println("Get Key:" + e.getKeyCode());
}
//----------メイン----------
public static void main(String args[]){
Window win = new Window();
DynamicPanel dp = new DynamicPanel();
win.setPanel(dp);
System.out.println("main end");
}
}
class Window extends JFrame{
public Window(){
setTitle("Default");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void setPanel(JPanel panel){
Container contentPane=getContentPane();
contentPane.add(panel);
pack();
}
}
以上です。
789デフォルトの名無しさん:2007/12/10(月) 15:04:16
まずはSwingとThredの関係を勉強汁
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/package-summary.html#threading

想像でしかないが、キーイベントを受け取って、その値を描画するようなプログラムなのか?
そうだとしたら、キーを受け取ったイベント処理で再描画させればいい(ただし、EDTを考慮する)
ポーリング(Thread等で定期的になにか実行する)する必要があるのかい?
前のレスでも出ているが、addKeyListenerはサンプルソースを参考にnewが終わった後にやるべき。
Threadを作るのも同じようにnewの後の方が危険が少ない
790デフォルトの名無しさん:2007/12/10(月) 15:49:13
PDFLibを使用したことのあるかたがおられましたら教えてください。

// テキストの出力
$p->setfont($font, 24.0); // フォント及びサイズを指定
$p->set_text_pos(100, 700); // テキストの位置を指定
$p->show("ハローワールド!"); // テキストを出力
$p->continue_text("(ようこそPDFlibの世界へ)"); // 次行に出力

上記のようにテキストを出力しているのですが
このテキストを半透明で出力することはできるでしょうか?

ソースはJavaでなくて申し訳ありません。
791デフォルトの名無しさん:2007/12/10(月) 15:50:25
>>779.780.782
 参考になりました。ありがとうございます。
792Round Trip:2007/12/10(月) 16:00:13
>>789
Swing自体がイベント消化用のThreadを持っているから
スレッドセーフではない、という事でしょうか…?

自分のプログラムは、ウィンドウ表示の際の横着用です。
継承して、runInterface()とpaintInterface()をオーバーライドすれば
とりあえずウィンドウが表示されて、キーボード操作を受け付ける、という。

KeyListenerにある処理は試験用のもので、
本当は内部変数などにキーボードの入力状態を保存し、上記の関数内で使用するつもりでした。

あと、addKeyListener()をnew終了後にするということですが、
試しても結果に変化が見られなかったので、ほったらかしです。
現状の問題とは直接関連が無いようなので、あえて触らないでいます。
793デフォルトの名無しさん:2007/12/10(月) 16:13:30
質問です。
int型の配列に今要素として
 a[0]=1 a[1]=2 a[2]=3 a[3]=4
がはいっているとして、これをひとつの要素1234にするにはどうすればいいですか?
794デフォルトの名無しさん:2007/12/10(月) 16:21:29
>>792
その方針はバケツでウランと一緒だ
今まで上手くいってるから今後も上手くいくと勘違いしている
795デフォルトの名無しさん:2007/12/10(月) 16:30:14
>>793
ひとつの要素にするってのが、
10進数でa[0]を1000の位、a[1]を100の位、a[2]を10の位、a[3]を1の位とする整数値を求めるって意味なら、
int b = 0;
for (int i = 0; i < 4; i++) {
b *= 10;
b += a[i];
}
繋いで一つの文字列にするって意味なら、
String b = "" + a[0] + a[1] + a[2] + a[3];
とでもすれば?
796デフォルトの名無しさん:2007/12/10(月) 16:31:15
>>793
int result = a[0]*1000 + a[1]*100 + a[2]*10 + a[3]
797デフォルトの名無しさん:2007/12/10(月) 16:41:02
>>785
認識する対象の情報は必要ないと思いますが
798デフォルトの名無しさん:2007/12/10(月) 16:47:34
認識対象の情報無しにどうやって認識するの?
もしかして人の顔を認識するアルゴリズムで道路の端を認識して自動走行できると思ってる?
799デフォルトの名無しさん:2007/12/10(月) 16:49:03
>>797
画像認識は良くわからないけど、一般名詞ぽいし、別に具体的な例を挙げなくても、
どういう認識したいかによって色々あるんじゃないのかな
800デフォルトの名無しさん:2007/12/10(月) 16:49:32
有るのか無いのかだけで良いよ
801デフォルトの名無しさん:2007/12/10(月) 16:55:30
汎用のライブラリは無いけど個別のは有るのかな
それとも知らないだけ?
802Round Trip:2007/12/10(月) 16:55:39
>>794
>バケツウラン
う。
Listener処理の結果を他のスレッドに持ち出すのはそんなに危険なのですか?
それとも、コーディングが面倒という理由だけで継承を使うことでしょうか。
そこまで言われる危険性が理解できないのですが、
どこの処理を指しておられるのでしょうか。

なにしろ、我流なもので…。
ご指導お願いします。
803デフォルトの名無しさん:2007/12/10(月) 17:12:33
>>802
不完全な状態のインスタンスの参照を他へ渡した場合、頻繁に問題が顕在化するってことはないんじゃないかな。
>>792が試したようにたいてい上手く動いているように見えるし、問題にならないことも多い。
でも、それはたまたま上手く動いたと考えて、潜在的に問題になる可能性があって、それを自分が知っているのなら、
避けられるのなら避けておいた方がのちのちためになると思うよ。

スレッドに関しては、Swingはまさにスレッドセーフではないので、
気をつけてコーディングしないと思ってもみない挙動を引き起こす。
804デフォルトの名無しさん:2007/12/10(月) 17:18:15
スレッドセーフの意味を混同してないか?
805デフォルトの名無しさん:2007/12/10(月) 17:24:13
swingがスレッドセーフでないというのは他のスレッドからswing関連のapiを呼び出すのはいかんって意味ではないのか
806デフォルトの名無しさん:2007/12/10(月) 17:26:15
次期Javaでクロー邪が採用されるかどうかはいつ頃決定されますか?
807デフォルトの名無しさん:2007/12/10(月) 17:34:39
802は、落ち着いて、もう一回Swingとスレッドの本を読み返した方がいい

どうにも、Swingの表面だけ使って自作のウィンドウシステムを作ろうとしているように見えてしかたない

802が実現したいと思っていることは多分、Swingを素直に使うだけで簡単に実現できるはず
808デフォルトの名無しさん:2007/12/10(月) 17:40:40
知らないで答えると
初心者が混乱するからやめた方がいいよ
809Round Trip:2007/12/10(月) 17:58:03
>>803
ああ、既存の問題点の放置は良くないということですか。
了解しました。以後、気をつけます。

>>807
仰るとおり、自分用のウィンドウシステムそのものです。
情報源が主にネットの入門サイトなのです。
以前、ろくでもない入門書を掴まされて以来
相当のことがないとその手の本は買う気になれないのです。

なので、良い本があれば教えていただけませんか?
810デフォルトの名無しさん:2007/12/10(月) 18:14:58
Apache Geronimo 2.0 使ってみたチラ裏感想。

寄せ集めで作ったにしちゃまぁまぁだが、問題起きたときに出る情報が少なすぎ。
プロダクトとして成り立ってはいるが、中身はまだまとまりきれてない、WebSphere なら
2.x か 3 前半くらいを使ってる気分。
811デフォルトの名無しさん:2007/12/10(月) 19:45:35
Generics 使ってるクラスで clone() を実装/利用しようとすると @SuppressWarnings("unchecked")
使いまくりになるのは仕方がないと思ってあきらめるしかないの?
812デフォルトの名無しさん:2007/12/10(月) 20:05:26
時代の暗闇にきっと置き去りの何かに気づいてくれ
813デフォルトの名無しさん:2007/12/10(月) 20:37:00
スレッドセーフ性が確立されない場合、
言語規定的にはどのようなことが起こるかは規定されているが、
組み合わせ爆発で、人の想像できる範疇じゃない。
実質的に、それは何が起こっても不思議じゃないプログラムとなる。
814デフォルトの名無しさん:2007/12/10(月) 21:03:23
だからこそ一つ一つに気を使わなきゃいけないのに
あんたがたプログラマーの作る奴はいつも暴走する
815デフォルトの名無しさん:2007/12/10(月) 21:57:54
>>814
まるで自分がプログラマーじゃないような言いぐさだな。
マルチスレッドは、根本的に言語の構造がシングルスレッドを前提としてるから混乱する。
どこぞでマルチスレッド用の言語を開発してたが、それだけでなくプログラミングスタイルそのものを変えないと、
本質的には解決せんだろう。
816デフォルトの名無しさん:2007/12/10(月) 22:04:44
つーかマルチスレッドとGUIというものの相性が悪すぎるんだな。
プログラミングスタイル云々を変えてもここが直るかどうかは疑問かも。
817デフォルトの名無しさん:2007/12/10(月) 22:46:27
あるjarを使用するclassのmainをbat経由で呼び出そうとしているのですが
NoCLassDefinitionで動きません。
java -classpath jarのパス;jarのパス2
とパスを通しているのですが、何か他に考えられる原因はあるでしょうか?
818デフォルトの名無しさん:2007/12/10(月) 22:47:29
パスをダブルウォートで囲っていない。
819デフォルトの名無しさん:2007/12/10(月) 22:48:53
-jarオプションを指定しているとか
820デフォルトの名無しさん:2007/12/10(月) 22:51:19
クラス名が完全修飾じゃないとか
821デフォルトの名無しさん:2007/12/10(月) 22:53:15
JDK がインストールされてないとか
822デフォルトの名無しさん:2007/12/10(月) 23:24:16
そもそもパソコンがないとか
823デフォルトの名無しさん:2007/12/10(月) 23:29:10
霊界からアクセスしてるとか
824デフォルトの名無しさん:2007/12/10(月) 23:36:42
テキストファイルを読み込みたいのですが、物理絶対パスではなく、
クラスパス(?)から読み込みたいです。
どうやったらいいでしょうか?

やりたいこと:
{prj_top}/src/jp/co/.../hoge/HogeTest.java
{prj_top}/src/jp/co/.../hoge/HogeTestData.txt
みたいなファイル管理構成にしていて、Eclipseでビルドすれば、それぞれ以下に配置される。
{prj_top}/classes/jp/co/.../hoge/HogeTest.class
{prj_top}/classes/jp/co/.../hoge/HogeTestData.txt
もちろん {prj_top}/classes には CLASSPATH が通っている。

HogeTest.class のなかから HogeTestData.txt を、最終的には java.io.File で読み込みたい。
(最終的に String 型の変数で、物理パスが取れるのでもかまわないです)
{prj_top}は、開発者によってディレクトリが違うので、HogeTest.class のなかで物理パスは指定できない。
ようするに JUnit で、開発者が誰でもコードを変えずにテストが動くようにしたいです。

URL url = new URL("file:./jp/co/...hoge/HOgeTestData.txt");
File file = new File(url.getFile());
String path = file.getPath()

みたいなことをやってみましたが、変数 path の中身は
.\jp\co\...hoge\HogeTestData.txt
みたいになってしまい、困っています。
825デフォルトの名無しさん:2007/12/10(月) 23:38:36
Java3Dで作ったアプレットを何らかの形式で保存することって出来ますか?
特にテクスチャを正確に表現出来ればいいのですが。
826デフォルトの名無しさん:2007/12/10(月) 23:42:17
エスパーさん、呼んでますよ
827デフォルトの名無しさん:2007/12/10(月) 23:49:03
>>824
ClassLoader#getResourceAsStream
Class#getPackage
String#replaceAll

この辺を javadoc で引けば分かると思うよ
828デフォルトの名無しさん:2007/12/10(月) 23:52:09
>>825
エディタで保存すれば java という形式で保存できます。
コンパイルすれば class という形式で保存できます。
jar コマンドを使えば jar という形式で保存できます。
829デフォルトの名無しさん:2007/12/11(火) 00:06:02
>>828
失礼。具体的に言えばVRMLのような形式で、ということです。
830デフォルトの名無しさん:2007/12/11(火) 00:09:53
そういうのは自分で実装するかモデリングツール使うもんじゃあ・・・。
831デフォルトの名無しさん:2007/12/11(火) 00:15:33
サーブレットで格納したクッキーをjsp内で取得しようとしているのですが、
<%
Cookie cookies[]=request.getCookies();
request.setCharacterEncoding(Windows-31J);
String str=null;
if(cookies!=null)
{
for(int i=0;i<cookies.length;i++)
{
if(cookies[i].getName().equals(omit))
{
str=URLDecoder.decode(cookies[i].getValue(),Windows-31J);
}
%>
このstrを表示しようとすると、常にnullになってしまいます。
832デフォルトの名無しさん:2007/12/11(火) 00:18:24
サーブレットの中での処理は、
Cookie newCookie=new Cookie(omit,URLEncoder.encode(id,Windows-31J));
newCookie.setMaxAge(60); response.addCookie(newCookie);

です。実際にC:\Documents and Settings\USER\Cookies
を見ると、そのクッキーのファイルは生成されているようなのですが、
何が問題なのでしょうか?
833デフォルトの名無しさん:2007/12/11(火) 00:25:59
あれ、携帯から書き込んだらダブルクォテーションが消えてる…。
実際はちゃんと"omit"とか"Windows-31J"になってます。
834デフォルトの名無しさん:2007/12/11(火) 00:36:33
MaxAgeが60秒だからじゃない?
835デフォルトの名無しさん:2007/12/11(火) 00:57:35
JAVA3Dで、ボタンを押したら模様が変わるみたいな、
動的にテクスチャを張り替えるにはどうしたらいいですか?
どなたか教えてください><
836デフォルトの名無しさん:2007/12/11(火) 01:00:07
><
837デフォルトの名無しさん:2007/12/11(火) 03:37:29
//FOR.java
class FOR{
public static void main(String args[]){
for(int=0;i<10;i++){
System.out.println(i);
System.out.println(i+"FOR"); //この行を、このfor文の中で、一回だけ表示させることはできますか?
}
}
}
838デフォルトの名無しさん:2007/12/11(火) 03:49:17
if(i == 0){
  System.out.println(i + " FOR");
}
839デフォルトの名無しさん:2007/12/11(火) 04:31:19
>>838
なるほど。。。
if文使えば良いんですね。
ありがとうございます。
もし、このような場合、どうやればいいですか?
//FOR.java
class Sample2{
public static void main(String args[]){
String[] str1="H e l l o W o r l d ! H e l l J a v a !".split(" ");
for(int i=0;i<str1.length;i++){
String[] str2=str1[i].split("!");
for(int j=0;j<str2.length;j++){
if(j==0){
System.out.println(str2[j]+"FOR");//この行が繰り返し表示されるのですが、1回だけ表示させたいです。
}
System.out.println(str2[j]);
}
}
}
}
840デフォルトの名無しさん:2007/12/11(火) 04:35:33
すみません。
クラスファイル名間違えました。

class FOR{


class Sample2{
841デフォルトの名無しさん:2007/12/11(火) 04:37:25
>>839
フラグ使えばいいだろ。
bool msg = true;
while ( ... ) {
 if (msg) { System.out.println("msg"); msg = false; }
}
842デフォルトの名無しさん:2007/12/11(火) 04:56:47
フラグ使うまでもネェ。

if(i == 0 && j == 0){
  System.out.println(str2[j] + "FOR");
}
843デフォルトの名無しさん:2007/12/11(火) 04:57:15
>>841
あ、なるほど。
なんとか出来そうです。
ありがとうございます。
844デフォルトの名無しさん:2007/12/11(火) 04:59:58
>>842
うぉおおおおお
すげええ
これはシンプルwww
845デフォルトの名無しさん:2007/12/11(火) 06:31:31
おいおい 6.0 で File#toURL() が推奨されないメソッドかよ。
修正は簡単だが嫌がらせ的だな。
846デフォルトの名無しさん:2007/12/11(火) 10:48:32
0x00〜0xFFの符号無し8ビット値の配列を、
バイナリでファイルに書き込むにはどうしたらいいですかね?
byte型だと、-0x80〜0x7Fしか直接格納できないし、
intの下位8ビットを使いたいけど、8ビット分だけをファイルに
書く方法がわからん。。。
847デフォルトの名無しさん:2007/12/11(火) 10:57:19
負の byte 値を書き込めば最左ビットの立ったバイトが書き込まれる。
848デフォルトの名無しさん:2007/12/11(火) 11:04:07
>>846
java.io.OutputStream の write(int)
849デフォルトの名無しさん:2007/12/11(火) 11:10:54
>>847-848
d!試してみます。
850849:2007/12/11(火) 11:16:08
byte[] datas = {0x01, 0x7F, -0x80, -0x01};
これをファイルに書き込んだら、

0x00, 0x7F, 0x80, 0xFF

となったので、実現したかったことができそうです。
重ねてありがd!
851デフォルトの名無しさん:2007/12/11(火) 11:24:11
char型じゃだめなん?
852デフォルトの名無しさん:2007/12/11(火) 11:30:29
>>851
Java の char は何bit型だ〜
てか、文字セットが絡んできて純粋な数値演算だけじゃ出力できないじゃん
853デフォルトの名無しさん:2007/12/11(火) 11:31:39
うわっすまそ
ここJavaのスレだった
C#と間違えていたよん・・・・
854デフォルトの名無しさん:2007/12/11(火) 12:05:58
Locale.getAvailablLocales() が返すロケール配列に mn/mn (モンゴル語/モンゴル国) が含まれてないのに
new Locale("mn", "mn").getDisplayName() で 「Mongolian (Mongolia)」 が返ってくるのは何で?
855デフォルトの名無しさん:2007/12/11(火) 12:08:52
ロケールは存在するが、対応されていないだけだろ
856デフォルトの名無しさん:2007/12/11(火) 14:07:15
Object[]を返してくるメソッド(仮にhoge.get())があるんですが、これをダウンキャストするには
piyo array[] = Arrays.asList(hoge.get().toArray(new piyo[0]));
みたいなことをしないとダメですか? もっと手軽な方法はありますでしょうか?
857デフォルトの名無しさん:2007/12/11(火) 14:16:44
>>856
hoge.get() が返すインスタンスによる。

実は piyo[] を返してるけど、過去のAPIとの互換性で型が Object[] になってるだけとかなら
piyo[] array = (piyo[])hoge.get(); できるし。
インスタンスが Object[] だと、新しく piyo[] 作ってそっちにコピーするしかない。
858デフォルトの名無しさん:2007/12/11(火) 14:35:31
>>857
ありがとうございます。
hoge.get()が返す実際のインスタンスはpiyo[]のはずなんですが
仰るようにキャストをしてみるとどうもClassCastExceptionが発生してしまいます…。
自分のキャスト理解が浅いせいですが、時間も無いので、リスト化したあと配列に変換する形にしておきます。

なおhoge,get()とはorg.eclipse.jface.viewers.CheckboxTableViewer.getCheckedElements()
を指していました。
859デフォルトの名無しさん:2007/12/11(火) 15:10:58
Obect[] は、要素がpiyo型でも「配列としての型」がObject[]だったらキャストできないよ。
860デフォルトの名無しさん:2007/12/11(火) 15:25:05
>>857は嘘だから信じないように
861デフォルトの名無しさん:2007/12/11(火) 15:36:29
>>857
ああ、最初は良くやるのよね。これできるだろうみたいな。

まぁ Collection.toArray もあることだし。
ちなみに、それの引数の配列は長さが足りてないと、
新しい配列を、リフレクションを使って、生成し直すので注意。
862デフォルトの名無しさん:2007/12/11(火) 16:28:34
>>858
個々の要素の型じゃなくて、配列の型の話だぜ。>>859 も言ってるけど。

String typename = hoge.get().getClass().getName(); して
typename が "[Ljava.lang.Object;" だったら配列は
Object[] のインスタンスであって piyo[] のインスタンスではない。
863デフォルトの名無しさん:2007/12/11(火) 16:39:59
>>859,862
ありがとうございます。
配列型には型階層がなくてそれぞれが独立した型と思ったほうがいいんですね。
なおgetClass()してみたところ、型の名前は全てpiyoになってました。

>>860
ご指摘ありがとうございます。

>>861
ありがとうございます。
Object obj[] = hoge.get();
piyo array[] = Arrays.asList(obj).toArray(new piyo[obj.length]);
としてみます。
864デフォルトの名無しさん:2007/12/11(火) 16:49:46
>>863
> なおgetClass()してみたところ、型の名前は全てpiyoになってました。
それは操作間違って個々の要素の型を取ってるか、
Object[] に(piyo[]じゃなくて)piyo型のインスタンスをつっこめるJava以外の言語使ってるかどっちかだな。
865デフォルトの名無しさん:2007/12/11(火) 17:02:23
Can you celebrateの替え歌

Can I find a job? Can I make money tonight? I am neet long long time
就職ていう言葉なんて 知らなかったよね
Can I find a job? Can I make money tonight? I am neet long long time
一人きりだね 今夜もまた2ちゃんできるよね
Lalala... Lalala... Lalala... Lalala...

永く…永く… いつまでも雇っていてくれるどこかを
探して見つけてクビになってまた探して
頑張った勇気出した でも時におそろしい ブラックもあった詐欺にもあった
どうしようもない風に吹かれて
866デフォルトの名無しさん:2007/12/11(火) 17:03:41
>>864
すみません、仰るとおり個々の要素の型を取ってました…。
配列型をgetClass()してみたところ[Ljava.lang.Object;でした。
ある配列型を別の配列型に"キャスト"するのは不可能なんですね。勉強になりました。
867デフォルトの名無しさん:2007/12/11(火) 17:14:20
>>866
> ある配列型を別の配列型に"キャスト"するのは不可能なんですね。

//こっちはできる。
Object[] array = new String[0];
String[] strArray = (String[])array;

//これはできない。
Object[] array = new Object[0];
String[] strArray = (String[])array; //コンパイルは通るけど実行時に ClassCastException になるはず

で、今回は下の方だったから無理なだけ。
868850:2007/12/11(火) 17:16:03
とりあえず目的達成。
こんなコードになりますた。

int[] src = { 0x00, 0x01, 0x7E, 0x7F, 0x80, 0x81, 0xFE, 0xFF };
FileChannel ch = new FileOutputStream(new File("C:/test.bin")).getChannel();
byte[] datas = new byte[src.length];
for (int i = 0; i < src.length; i++) {
  datas[i] = src[i] < 0x80 ? (byte) (src[i]) : (byte) (src[i] - 0x100);
}
ByteBuffer buff = ByteBuffer.allocateDirect(datas.length);
buff.put(datas).rewind();
ch.write(buff);
ch.close();

ファイルをバイナリエディタで開いたら、ちゃんと目的のバイト列で書かれれました。
869デフォルトの名無しさん:2007/12/11(火) 17:29:37
>>868
「datas[i] = (byte)src[i];」で動くんでは。

んで、「data」は非可算名詞なので、datas にはならない。

870デフォルトの名無しさん:2007/12/11(火) 17:45:53
Flow my tears...
871デフォルトの名無しさん:2007/12/11(火) 17:50:56
>>869
動きますた!ありがd!
ちょっと複雑に考えすぎた。。。orz
872デフォルトの名無しさん:2007/12/11(火) 18:09:48
>>869
たしかdatusだっけ?TOEICの問題ででた気がする。
873デフォルトの名無しさん:2007/12/11(火) 18:10:52
datumのこと?
874デフォルトの名無しさん:2007/12/11(火) 18:41:09
JFrameの表示サイズが変更されたことを返してくれるメソッドとかありますか?
875デフォルトの名無しさん:2007/12/11(火) 18:45:16
その JFrame に Window何とかListener だか Component何とかListener だかを仕掛ける。
876デフォルトの名無しさん:2007/12/11(火) 18:55:17
なぜ、あなたはJavaでオブジェクト指向開発ができないのかという本を読んでいます。
その中で七並べを作っています。
テーブルクラスにあるテーブルに置かれたカードを見るというメソッドについてこう実装しました。
フィールドを返すだけです。
public Card[][] getCards()
{
return table_;
}
しかしこれだとtable_の内容が変更される場合があるので、
以下のようにコピーして返すよう改良しました。
public Card[][] getCards()
{
Card[][] table = new Card[Card.SUIT_NUM][Card.CARD_NUM];
for (int suit = 0; suit < Card.Suit_NUM; suit++) {
System.arraycopy(table_[suit], 0, table[suit], 0, Card.CARD_NUM);
}
return table;
}

その後のコラムにこのような事が書いてあります。
>実はこの方法も実はあまり良い方法とはいえない事があります。
>この方法ではgetCardsメソッドを呼び出すたびに新たな配列のコピーが生成されます。
>本書で扱っているような七並べレベルのプログラムでは何の問題もありませんが
>サーバサイドで24時間にわたって動き続けなければならないアプリケーションでは
>GCでシステムが一時的に停止して致命的な問題を引き起こしてしまうこともあるのです。
>不用なコピーを作らないようにする方法としては、table_に対する読み取りアク
>セスのみを提供するインターフェースを返すといった方法が挙げられます。

この「table_に対する読み取りアクセスのみを提供するインターフェース」
というのが想像ができません。
実装するとしたら具体的にどういったコードになるんでしょうか?
簡単なコードを示して貰えれば嬉しいです。
877デフォルトの名無しさん:2007/12/11(火) 19:05:38
こうかな?
public void getCards(Card[][] table_out)
{
for (int suit = 0; suit < Card.Suit_NUM; suit++)
{
System.arraycopy(table_[suit], 0, table_out[suit], 0, Card.CARD_NUM);
}
}
878デフォルトの名無しさん:2007/12/11(火) 19:11:43
てかさ
この程度の本見れば分かる事聞いてるようじゃ他の言語にした方がいいんじゃないの?
879876:2007/12/11(火) 19:41:57
>>877
今と同じ方法のようですが、それで不用なコピーが作られないようになるのでしょうか。

上手くいえないのですが、どのようなインターフェースを作って
それをどう使えば良いのか分かりません。
880デフォルトの名無しさん:2007/12/11(火) 20:08:55
>>876
インターフェイスじゃないけど。

java.util.List<Card> table;
public java.util.List<Card> getCards(){ return java.util.Collections.unmodifiableList(table); }
881デフォルトの名無しさん:2007/12/11(火) 20:27:39
Card getCard(int suit, int card)
だろ、ふつう
882876:2007/12/11(火) 20:35:15
>>880
ほ〜、便利な物があるんですね。
レスありがとうございました。

インターフェースで実現するとしたら、どういった感じになるんでしょうか。
883デフォルトの名無しさん:2007/12/11(火) 20:38:30
@Override アノテーションなど一部のアノテーションはある条件を満たさないとコンパイルエラーになったり、
マーキング以上の役割(実行に影響する役割)を持ちますが、どのように実装されているのか興味があります。

しかし、どのクラスが実装しているか見当がつかないため、参考にするためのサンプルを見つけることができません。
どなたかご存知の方、教えていただけないでしょうか?
884デフォルトの名無しさん:2007/12/11(火) 20:47:00
>>883
「コンパイルエラーを出す処理」 は Java コンパイラがやってるだけで Override アノーテーションに
実装されているわけではない。アノーテーションはマーキングのみで、それを認識するプログラムが
何かアクションをする。java.lang.Override, java.lang.annotation.* でも見て見れ。
885デフォルトの名無しさん:2007/12/11(火) 20:50:18
886デフォルトの名無しさん:2007/12/11(火) 20:54:29
>>885
便乗して聞きたいんだけど apt って具体的に何をするためのツールなの?
887デフォルトの名無しさん:2007/12/11(火) 21:06:58
>>886
APTはソースに書かれてるアノテーションを処理する。

自分で作った com.sun.mirror.apt.AnnotationProcessorFactory の実装クラスの名前を渡してやると、
それを使ってアノテーションを解釈&処理してくれる。
肝心の処理は自分で書かないとだめだけど、ソースの読み込みとかはAPTがやってくれる。
カスタムドックレットを書いて javadoc 使うのと似たような感じ。

JDK6以上使えるなら javac と javax.annotation.processing と Tree API 使うほうが融通が利くけど。
888デフォルトの名無しさん:2007/12/11(火) 21:11:43
>>887
thank you
「ソースを自動生成」 厨に見つからないようにしておこう。
889デフォルトの名無しさん:2007/12/11(火) 21:15:00
JavaでIteratorインターフェイスを備えるクラスを作るにはどうしたらいいんですか?
890889:2007/12/11(火) 21:29:01
すいません、自己解決しました・・・
別の質問をさせて下さい
891デフォルトの名無しさん:2007/12/11(火) 21:31:44
>>884
それを認識するプログラムのほうがどうなってるのかを知りたいんです。
コンパイラ以外にはないんでしょうか。

>>885
ありがとうございます。眺めてみます。
892デフォルトの名無しさん:2007/12/11(火) 21:33:53
>>891
java.lang.Class や java.lang.reflect.Method 調べれ。
893889:2007/12/11(火) 21:36:14
Projectというクラスがあったとして、それがMemberというクラスのコレクションを持っているとき・・・

Membersというイテラブルなクラスを作ってそのインスタンスをメンバー変数にするのがいいのか、
List変数にMemberクラスを押し込んで、それをgetMembers()で取得するほうがいいのか
どちらが理想的な設計ですか?

Memberコレクションを取得するとき多少処理が必要なのでクラスを作ったほうがいいとは
思うのですが、getMembers()の部分に書いても何とかなる量なので迷ってます
894デフォルトの名無しさん:2007/12/11(火) 21:39:08
好みの問題。
895889:2007/12/11(火) 21:44:04
>>894
そうですか・・・、わかりました。
ありがとうございます。
896デフォルトの名無しさん:2007/12/11(火) 21:53:13
質問なのですが説明するのが複雑なのでエスパーになって聞いて下さい。
ある例外を処理したいのですがそのメソッド1に複数の例外が発生しており
Exceptionで処理しております。そのメソッド1はclose()しなければいけないので
必ずtry〜fanallyで囲みたいのです。かつそのメソッド1からの例外に特殊処理したい。
そのような状況になったのでtryで囲みつつ、throwしたのですが例外が発生したとき
メソッド1の呼び出しもとにはその例外がthrowされるのでしょうか?
897デフォルトの名無しさん:2007/12/11(火) 21:59:50
コードでおk
898デフォルトの名無しさん:2007/12/11(火) 22:02:11
>>896
close()したあとリスローすれば?
899デフォルトの名無しさん:2007/12/12(水) 05:29:46
Eclipse 3.3、重さ 1.8 倍くらいになったなぁ。入力に補完や警告が全然追いつかない。
900デフォルトの名無しさん:2007/12/12(水) 05:33:45
Statement や PreparedStatement の execute() って何のためにあるの?
結果はどうでも良い照会や更新やるため?
901デフォルトの名無しさん:2007/12/12(水) 09:28:47
結果が返らないSQLを実行する為

>>896
Exceptionで処理(throws? catch?)スンナ
902デフォルトの名無しさん:2007/12/12(水) 11:30:34
>>896
状況が複雑なことと、エスパーが必要であることは関係ないぞ
ほとんどはプログラムよりも日本語の問題だから。

> tryで囲みつつ、throwした
これは>>898 の再スローのことかね…で、それに続く、
> その例外
これはどの例外のことかね。最初の「ある例外」のことなのか…
throwした、という部分のことなのか…

まぁ、例外というのは、一度 catch されたらそこでお仕舞い。
JDK1.4 からは、再スローする際に、必要なら原因例外を保持させることもできる。
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/Throwable.html
903デフォルトの名無しさん:2007/12/12(水) 12:24:16
>>902
偉そうに嘘書くな
try {
  hoge();
} catch(HogeException e) {
  handleException(e);
  throw e;
}
904デフォルトの名無しさん:2007/12/12(水) 12:35:28
俺様翻訳

> ある例外を処理したいのですがそのメソッド1に複数の例外が発生しており
> Exceptionで処理しております。
メソッド1の中で AException, BException, ... の例外処理を記述しています。

> そのメソッド1はclose()しなければいけないので必ずtry〜fanallyで囲みたいのです。
> かつそのメソッド1からの例外に特殊処理したい。
public void メソッド1(){
  try{
    ...
  } catch(AException ex){
    ex.特殊処理();  // あるいは単に 特殊処理()
  } finally {
    this.close()
  }
}
のように書かなければ行けない。

> そのような状況になったのでtryで囲みつつ、throwしたのですが例外が発生したとき
> メソッド1の呼び出しもとにはその例外がthrowされるのでしょうか?
} catch(AException ex){
  ex.特殊処理();  // あるいは単に 特殊処理()
  throw ex;
} finally {
と書いたのですが、ex はメソッド1の呼び出し元に正しく伝播されるのでしょうか?

答え: YES
905デフォルトの名無しさん:2007/12/12(水) 12:41:20
いやまてこうか

> そのメソッド1はclose()しなければいけないので必ずtry〜fanallyで囲みたいのです。
> かつそのメソッド1からの例外に特殊処理したい。
public void メソッド1() throws AException, BException, ...{
  try{
    ...
  } finally {
    this.close()
  }
}
また、呼び出し元は以下のようにしています。
try{
  メソッド1()
} catch(AException ex){
  特殊処理();
} catch(...

> そのような状況になったのでtryで囲みつつ、throwしたのですが例外が発生したとき
> メソッド1の呼び出しもとにはその例外がthrowされるのでしょうか?

catch のない try-finally 内で例外を throw した場合、その例外は呼び出し元に伝播されるのでしょうか?

答え: YES
906デフォルトの名無しさん:2007/12/12(水) 12:56:47
>>905
try catch で例外でて、さらに finally でも別の例外でたらどーすんだろ?
907902:2007/12/12(水) 13:00:10
>>903
失礼。
catchした例外が終わりってのは大嘘でした。

再スローてと、上位レイヤーに投げることばかり想定してたし
あーあもう嘘教えてるし…オトナシクシテイヨウ。
908デフォルトの名無しさん:2007/12/12(水) 13:19:29
>>907
マはdisられて成長していくものだよ
909デフォルトの名無しさん:2007/12/12(水) 14:21:05
オブジェクトがCSV風に羅列してある以下のようなXMLを
TreeMapに入れたいのですが、どのような手法がもっともスマートでしょうか?
DOMやSAXのどれを使うかなども含めて教えていただけると幸いです。

----------商店街店一覧
<商店街>
<果物屋></果物屋>
<今期売上>923000</今期売上>
<敷地面積>300</敷地面積>
<電器屋>
<今期売上>826000</今期売上>
<敷地面積>200</敷地面積>
</電器屋>
<商店街>
...

--------果物屋商品一覧
<果物屋の商品>
<リンゴ>
<価格>100</価格>
<重さ>250</重さ>
</リンゴ>
<梨>
<価格>150</価格>
<重さ>220</重さ>
</梨>
</果物屋の商品>
...
910デフォルトの名無しさん:2007/12/12(水) 14:21:59
なお、各オブジェクトは将来的には以下のように、
ツリーとして構成したいと考えています。

+商店街
+商店街のパラメータ(総面積、駅からの距離、etc)
|
+商店リスト
+商店のパラメータ(店1つの面積、位置、etc)
|
+商品リスト
+商品のパラメータ(価格、etc)
911デフォルトの名無しさん:2007/12/12(水) 14:24:01
すみません、ずれてしまいました。

+商店街
 +商店街のパラメータ(総面積、駅からの距離、etc)
 |
 +商店リスト
  +商店のパラメータ(店1つの面積、位置、etc)
  |
  +商品リスト
   +商品のパラメータ(価格、etc)

商店街は自身のパラメータと商店リストを持ち
商店は自身のパラメータと商品リストを持ち
商品はそれ自体のパラメータだけ持つ、という感じです。
912デフォルトの名無しさん:2007/12/12(水) 14:25:59
楽 → DOM
高効率 → SAX
もっと高効率 → XML 使わない
913デフォルトの名無しさん:2007/12/12(水) 14:36:26
>>912
ううむ、やっぱりそうなりますか。
今はCSVをがりがり読んで割り付けているのですが、カンマ等の制限がいろいろと・・・

すみません、もうひとつ補足で、商品リストには果物屋の商品も電器屋の商品も
一緒くたに書かれているということがあります。

ですから、各オブジェクトを生成した後にもう一度再配置を行う必要はあるのですが、
パラメータだけでもXMLのツリー構造からすぱっとTreeMapにマッピングできるなら
とても高効率になるような気がします。

914デフォルトの名無しさん:2007/12/12(水) 14:38:46
どうでもいいが、TreeMap をツリー構造で格納できるコレクションと勘違いしてないか?
915デフォルトの名無しさん:2007/12/12(水) 14:43:01
>914
いえ、たぶん大丈夫だと思うのですが・・・IDとかをキーにして取り出せれば十分です。
キーでソート済みになるかならないかでTreemapを選んでいました。

TreeMapのなかにTreeMapを持ったオブジェクトが入れ子のようになって行くかと思います。
916デフォルトの名無しさん:2007/12/12(水) 14:52:18
>>909-911
TreeMapにこだわるならJAXBも使えないし、まずはDOMでやってみて、パ
フォーマンスが気になったときにSAXに変えるのでどうでしょ。

<果物屋><電器屋><リンゴ><梨>って要素名はすごく異様に見えるね。
<商店><業種>果物屋</業種><今期売上>...</商店>
<商品><商品名>リンゴ</商品名><価格>...</商品>
のほうが処理し易いはず。
917デフォルトの名無しさん:2007/12/12(水) 14:57:18
だが、俺はDiggesterを選ぶぜ
ああ、読込専用だから出力は自前で
918デフォルトの名無しさん:2007/12/12(水) 15:09:26
>916
ありがとうございます。DOMから試してみます。
要素名がおかしいのはその通りでした…
919デフォルトの名無しさん:2007/12/12(水) 16:49:07
Tomcat6、Servlet、JSPでHttpSessionを使用しているのですが、
たとえば、の場合、JSESSIONIDという値がCookieに保存されますが、
このCookieをセキュアな通信のみ送信されるようにしたいのですが、
これは可能なのでしょうか?
920デフォルトの名無しさん:2007/12/12(水) 17:03:37
>>919
セキュアな通信ってどういう意味で使ってる?SSL?
921デフォルトの名無しさん:2007/12/12(水) 17:06:40
あー、へんな日本語になってしまったのに
レスありがとうございます。
そうです。SSL通信です。
922919:2007/12/12(水) 18:06:10
自己レスです。
以下のサイトに書いてありました。

ttp://gmt-24.net/archives/category/www/tomcat

レス汚しすいませんでした><

923824:2007/12/12(水) 20:29:06
>>827
レスどうもありがとうございます。遅くなってすみません。
以下のようなコードで目的を達成することができました。

String packageName = getClass().getPackage().getName().replace('.', '/');
String fileResource = packageName + "/HogeTestData.txt";
URL fileUrl = getClass().getClassLoader().getResource(fileResource);
String filePath = fileUrl.getFile();
924デフォルトの名無しさん:2007/12/12(水) 22:46:24
eclipseで設定をいろいろといじくっていたら、
JavaDocコメント生成中の@link記述中にコンテンツアシストすると、
パッケージ名まで補完されるようになってしまいました。
具体的には、

@link ArrayLis

でコンテンツアシストをさせると、

@link java.util.ArrayList

とパッケージ名まで補完されるようになってしまいました。
デフォルトのように、パッケージはimport宣言に書いてほしいのだけれども、
設定をどう直せばいいのでしょうか?
925デフォルトの名無しさん:2007/12/12(水) 23:38:18
>>924
Preferences -> Java -> Editor -> Content Assist -> Add import instead of qualified name とか?
926デフォルトの名無しさん:2007/12/12(水) 23:54:52
JSFでページがロードされたときにHtmlOutputTextに表示するテキストを動的に
生成したいのですが、コンストラクタ部分に何か処理を書くと原因不明のエラーになってしまいます。

C#でいうところのPage_Load()に相当するメソッドはどうやって実現したら良いのでしょうか・・・
927デフォルトの名無しさん:2007/12/13(木) 02:36:48
>>913
YAMLはどう?

個人的には、XML使うならSAXで処理する。
難しいって言われるけど、イベント処理に慣れていればむしろDOMより楽に書ける。

digesterはもっと楽だけど、その構造には向いていない気がする。
928デフォルトの名無しさん:2007/12/13(木) 03:27:19
スレ違かもしれないですが質問です。
ご存じの型がいらっしゃいましたらご指摘いただければとおもいます。

現在tomcat5.5でクラスタリングを行うように設定を行っていますが、うまくセッション情報を共有することができません。

構成としては
www1
apache2.2
tomcat5.5

www2
apache2.2
tomcat5.5

www1とwww2はhoge.comのDNSラウンドロビンにしています。

で何らかの障害等により別サーバに飛んだ際にセッション情報を引き継げるようwww1とwww2のtomcatをクラスタリングしたいと考えています。
servlet.xmlには<Cluster>の部分のコメントアウトを外し、アプリのweb.xmlには<distributable/>も記述してあります。

http://hoge.com/servlets-examples/servlet/SessionExample
で試したところwww1とwww2でセッション情報は共有できているようでした。

しかし、実際のアプリケーションを動かすとセッションにセットした内容がNullとなってしまいます。
フレームワークのセッションへのセットの仕方が原因の一つではないかとも考え始めています。
フレームワークはSeasar2.4のTeedaを利用しています。

929デフォルトの名無しさん:2007/12/13(木) 10:28:17
命令語の読み方が載ってるようなサイトないですか?
930デフォルトの名無しさん:2007/12/13(木) 10:28:35
ResourceBundleで外部化した文字列の定義がプロパティファイル中にないと実行時エラーになりますよね。

この「プログラムから外部化した文字列がすべてプロパティファイルに定義されているかどうか」とか、
「プロパティファイルに書かれているが、プログラム中で使用されていない定義」を調査/テストする
のはどのようにするのでしょうか?

調べ方が悪いのか、そのようなツールやEclipseのプラグインを見つけられませんでした orz

ツールか作業手順を教えて頂けると大変ありがたいです。よろしくお願いします。
931デフォルトの名無しさん:2007/12/13(木) 10:47:20
>>929
命令語ってなんぞや?
932デフォルトの名無しさん:2007/12/13(木) 11:01:19
933デフォルトの名無しさん:2007/12/13(木) 12:16:29
>>932
throwableが載ってませんよ?
934デフォルトの名無しさん:2007/12/13(木) 14:48:16
環境設定でJavaのパスは1.4なんですけど
java -versionでバージョン調べると1.5になってます
この状態でコンパイルを行うと1.4と1.5どちらでコンパイルされるのでしょうか
935デフォルトの名無しさん:2007/12/13(木) 14:53:55
>>934
「環境設定でJavaのパス」って何?
なんにせよ、調べるべきは java -version ではなくて javac -version
936デフォルトの名無しさん:2007/12/13(木) 14:59:50
1.4 だと javac -version は効かないような。
1.4 でも大丈夫なようにすると javac -J-version
937デフォルトの名無しさん:2007/12/13(木) 15:32:41
>>935
多分c:\java1.4にjava5がインストールされてるってな事なんじゃないか?
938デフォルトの名無しさん:2007/12/13(木) 15:41:12
>>934
JDK(インストール時にインストールされるJREの)インストールの際に
c:\windows\system32 に java.exe や javaw.exe が置かれるけど
java.exe はそっち使ってるだけとかじゃね?
939デフォルトの名無しさん:2007/12/13(木) 16:20:15
All-In-One Projectってまだ生きてるの?
940デフォルトの名無しさん:2007/12/13(木) 17:26:53
ど素人の質問すません。
入力してもらったxとyをx÷yで演算処理するプログラムなんですが、

int z = x/y , w = x%=y;

if (y == 0){
System.out.println("割り算を実行できません");
}

else {
if (w == 0){
System.out.println("x÷y=" + z);
}
else{
System.out.println("x÷y=" + z + "余り" + w);

コンパイルはでき計算も出来るのですが、これでyを0と入力するとエラー
(Exption in thread "main" java.lang.ArithmeticException: / by zero at クラス名.main)
とでるのですがどこか間違ってるところありますか?
941デフォルトの名無しさん:2007/12/13(木) 17:34:05
>>940
割る前に調べろや
942デフォルトの名無しさん:2007/12/13(木) 17:37:44
int z = x/y , w = x%=y; ←ここで割算をした後で
if (y == 0){        ←yが0かどうかチェックしてる。
yが0かどうかチェックした後で割算じゃないかな。
943デフォルトの名無しさん:2007/12/13(木) 18:58:20
>>942
ありがとうございます。elseの中でint宣言をしたら無事動きました!
944デフォルトの名無しさん:2007/12/14(金) 01:01:46
Aというboolean型変数があるとして
if文を使わずにAがtrueならfalse,falseならtrueとなるようにしたいんですが
一行でできますか?
945デフォルトの名無しさん:2007/12/14(金) 01:03:41
A = !A;
でいいんじゃないかな
946デフォルトの名無しさん:2007/12/14(金) 01:08:40
解決しました、ありがとうございます
947デフォルトの名無しさん:2007/12/14(金) 04:20:54
ジェネリクスについての質問です。
行列を表現するクラスを作成したいのですが、その各要素の精度を
floatにもdoubleにも対応できるようにするにはどうすればよろしいのでしょうか?
ちょうど下のようなコードを作りたいのですが…。

class HogeMatrix<T> {
  private T matrix[][];
  public static HogeMatrix createFloatHogeMatrix() {
    // ここでnew HogeMatrix<float>()して返す
  }
  public static HogeMatrix createDoubleHogeMatrix() {
    // ここでnew HogeMatrix<double>()して返す
  }
  protected HogeMatrix(){}
  // 以下アクセッサ類
}

Cであれば#defineやテンプレートでできると思うのですが、Javaだとnew T();のような
コンパイル時にコンストラクタが定まらないケースはエラーになるようで困っています…。
よろしくお願いします。
948デフォルトの名無しさん:2007/12/14(金) 04:30:33
float,doubleとかのプリミティブ型ってTにとれるんだっけ?
949デフォルトの名無しさん:2007/12/14(金) 04:36:24
プリミティブ型はTにとれない。
だからラッパークラスのFloatやDoubleをTに代入する。
950947:2007/12/14(金) 04:36:26
>>948
ありがとうございます。どうやら取れないようです…。
Javaではプリミティブ型を実行時に決めることは無理なのでしょうか。。
951デフォルトの名無しさん:2007/12/14(金) 04:42:20
HogeMatrix<Number> じゃねぇの? ゲネリックスは警告なしでコンパイルできてくれるか
予想が難しいけど。

つか double だけでええやん。数値演算処理でわざわざプリミティブ型のラッパー
ガンガン作るような汎用クラスは遅い。プリミティブ型に関しては C++ のテンプレート
みたいにその型を #define で置き換えたような専用クラスができるわけではないし。
952947:2007/12/14(金) 05:03:06
>>949 ありがとうございます。
floatとdoubleの両対応の理由として、行列の次元がそれほど大きくならない場合はdoubleに、
大きくなる場合はfloatで精度を犠牲にしてもメモリを節約できれば、という意図があります。
Float[][]やDouble[][]のようなオブジェクト型だとあまりメモリ効率が変わらなくなってしまう
気がするのですが大丈夫でしょうか…

>>951 ありがとうございます。
なるほど確かに速度は遅くなりそうですよね…
Javaではメモリ効率を気にしていても仕方ない話なんでしょうか。
とりあえずdoubleで実装してみて、実際に問題が起きたらそのときまた考えてみます。
953デフォルトの名無しさん:2007/12/14(金) 09:49:32
その程度のメモリ消費も実行効率も気にするもんじゃない。
それよりそんな変なラッパー作って使おうとする事を気にした方が良い。
954デフォルトの名無しさん:2007/12/14(金) 09:54:43
数値演算処理でラッパー使ってどんだけ効率落ちるか知らん奴は黙ってなさい。
955デフォルトの名無しさん:2007/12/14(金) 09:59:23
>>952
効率うんぬんをを語るときに「気がする」は禁物
きちんとプロファイリングして実用に足るかどうかを判断
設計段階でも効率が要になるような箇所はテストコードを書いて判断材料に
956デフォルトの名無しさん:2007/12/14(金) 12:59:42
こんなエラーが出てしまいますが対処方法はありますか。

#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_FLT_STACK_CHECK (0xc0000092) at pc=0x0096cea9, pid=1260, tid=1412
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode, sharing)
# Problematic frame:
# v ~RuntimeStub::resolve_opt_virtual_call
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
957デフォルトの名無しさん:2007/12/14(金) 13:18:32
JDK をダウンロードしてインストールしなおす。
それでも出るなら別のバージョンをダウンロードしてみる。
あと JVM のバージョン競合が起こっていないか (参照 DLL が矛盾しているとか) 確認。
958956:2007/12/14(金) 13:27:59
>>957
複数のバージョンが入っているのが原因みたいでした。
全て消して最新版を入れるとうまくいきました。
回答ありがとうございました。
959デフォルトの名無しさん:2007/12/14(金) 13:29:05
>>956
こいつか? JDK7では直ってるが、JDK6にはバックポートされてないとか...
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6457572
960959:2007/12/14(金) 13:31:20
残念。はずれか orz
961デフォルトの名無しさん:2007/12/14(金) 15:31:03
>>954
だから「変なラッパー作って使おうとする事を気にした方が良い。 」と書いただろうが
文脈も読めんのか?
962デフォルトの名無しさん:2007/12/14(金) 15:35:46
文脈読めって便利な言葉だよなw
963デフォルトの名無しさん:2007/12/14(金) 15:57:07
Servletの呼び出しが上手くいきません。

web.xmlで<servlet>〜</servlet>にサーブレット名・クラスファイル。
<servlet-mapping>〜<servlet-mapping>にサーブレット名・URLパス名を作成し指定の場所に保存していますが
実際にURLでクラスを呼び出すと404になってしまいます。

解説通りにやっているので私の根本的なミスが原因の可能性が高いと思っていますが、何度やっても上手くいきません。
わかる方いらっしゃったら教えていただけませんか?
964デフォルトの名無しさん:2007/12/14(金) 16:01:59
同じ Web アプリケーション内の JSP や HTML はちゃんと表示できるか?
965デフォルトの名無しさん:2007/12/14(金) 19:22:23
質問があります。
このコードで、ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29965
voidのmyGreeting()とmyFarewell()の中のメッセージもoutFile.printlnで出力したいのですが、
どうすれば良いのでしょうか?
966デフォルトの名無しさん:2007/12/14(金) 19:44:26
System.setOut(outFile);でできない?
967デフォルトの名無しさん:2007/12/14(金) 20:05:19
>>966
それだと、System.out.println("内容〜"); の内容が出力されなくないですか?
968デフォルトの名無しさん:2007/12/14(金) 20:40:11
さっきインストールしたばかりのWindowsXPユーザーの者です。
http://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html
>Windows XP では [スタート]→[コントロールパネル] の順に、Windows 2000 では [スタート]→[設定]→[コントロールパネル] の順に選択します。
>[詳細]→[環境変数] を選択します。

とありますが、
私のXPps2環境の[コントロールパネル]の中に[詳細]という項目がありません。
どうしたらいいでしょうか?
969デフォルトの名無しさん:2007/12/14(金) 20:44:37
マイコンピューターのプロパティーを調べろ
970デフォルトの名無しさん:2007/12/14(金) 20:51:12
>>967
ああゴメン。それ以前にコンパイル通らないや。

>>968
[コントロールパネル]に[システム]ってある?そこの[詳細設定]→[環境変数]→……
>>969のが分りやすいかも。
971デフォルトの名無しさん:2007/12/14(金) 21:05:27
>>964
JSP や HTML はちゃんと表示できます。
クラスの表示ができません。。web.xmlの記述の仕方が悪いのでしょうか?
972デフォルトの名無しさん:2007/12/14(金) 22:02:11
javac -classpath C:\Java\tool\apache-log4j-1.2.15\log4j-1.2.15.jar xxx.java
java -classpath C:\Java\tool\apache-log4j-1.2.15\log4j-1.2.15.jar;. xxx.java

コンパイル、実行はできますが、

ユーザ環境変数にて
変数名 CLASSPATH
変数値 C:\Java\tool\apache-log4j-1.2.15\log4j-1.2.15.jar

と指定して

javac xxx.java
はエラーなく出来ますが。
java xxx.java
がエラーになってしまいます。
エラーメッセージは・・・
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at LoadSetting.main(LoadSetting.java:10)

java ファイル名で実行できるようにしたいのですが、
どなたかご教授ねがいます。
973デフォルトの名無しさん:2007/12/14(金) 22:09:32
>[コントロールパネル]に[システム]ってある?そこの[詳細設定]→[環境変数]→……
これでわかりました、有り難うございました。  あと、Hello Worldの表示も出来ました。

http://andyou.sakura.ne.jp/tool/exifviewer.html
ところで私がジャバをインストールしたのはこのexifviewerを実行してみたいからなのです。
ここから、ExifViewer.zipというのを落としたのですが、この後どうしたらいいのでしょうか?
ここには、
>ExifViewer.jarをダウンロードし、実行してください。
なんて書いてあるのですが、どうしていいのかわかりません。

とりあえず、C:\Documents and Settings\aこのフォルダにExifViewer.zipを置いてみました。
974デフォルトの名無しさん:2007/12/14(金) 22:21:34
>>973
そのページをよく読め。
ExifViewer.zipなんてないぞ。というか作ったやつに聞いたらどうだ?

あと実行するだけならjdkじゃなくてjreを使え。

ExifViewer.jarをダブルクリックするか

java -jar ExifViewer.jar

としてみろ。
975デフォルトの名無しさん:2007/12/14(金) 22:35:24
>>974
> ExifViewer.zipなんてないぞ。というか作ったやつに聞いたらどうだ?
ExifViewer.jarって書いてあるけど、落ちてくるのはExifViewer.zipなんです。

> あと実行するだけならjdkじゃなくてjreを使え。
もう、jdk-6u3-windows-i586-p.exeっていうのをインストールしちゃいました。

> ExifViewer.jarをダブルクリックするか
だから、ExifViewer.jarがないんです。
ExifViewer.zipをリネームするのかな?
976デフォルトの名無しさん:2007/12/14(金) 23:37:40
使ってるブラウザがIEなら拡張子をzipからjarに変えて実行してみろ。
977デフォルトの名無しさん:2007/12/15(土) 00:00:27
>>976
わおぅ、出来ましたw
有り難うございます。
こんな事がまかり通るなんて、恐ろしい世界ですねw
978デフォルトの名無しさん:2007/12/15(土) 01:43:22
IEはダウンロード時に勝手に拡張子を変えることがちょくちょくある
ファイル名が変わっただけで中身が変わるわけじゃないから別に恐ろしくはない
だから拡張子を変えなくてもjava -jar ExifViewer.zipでも実行可能
拡張子に対する関連付けでjarファイルのダブルクリック実行はできないが
979デフォルトの名無しさん:2007/12/15(土) 01:45:58
MIME-TYPEが理解できないバカだからなIEは。
980デフォルトの名無しさん:2007/12/15(土) 01:57:48
>>972
実行はできてる。実行したプログラムの中で予期しない事が起きてるだ
け。コマンドラインに何かパラメータが必要とか。

981デフォルトの名無しさん:2007/12/15(土) 10:02:21
スーパークラス A、サブクラス B, C, D, ... に対して A にだけ main() を実装し、
サブクラスの名前でコマンドラン起動した時 (java B や java C) サブクラス名を
取りたいんだけど、無理ですかね?

public abstract class A{
  public static void main(String[] args){
    // コマンドライン引数の解析や初期化処理
    A a = (A)Class.forName("コマンドで指定したクラス名");
    a.execute();
    // 終了処理
  }
  protected abstract void execute();
}
982デフォルトの名無しさん:2007/12/15(土) 10:26:10
>>981
staticメソッドはクラスに固定されてる。継承はされない。
又、mainメソッドが無いクラスでは実行が開始出来ない。
よって、今のままでは無理。
983デフォルトの名無しさん:2007/12/15(土) 10:31:27
エクレーップス のコンソールに対してだと System.console() が null 返すんですけどコレ使えないの?
984デフォルトの名無しさん:2007/12/15(土) 12:30:23
javaをインストールしたいのですが、j2re1.4.1_01というものが
すでに入っています。これは手動で削除していいんでしょうか?
コンパネの"プログラムの追加と削除"には表示されていないので…
985デフォルトの名無しさん:2007/12/15(土) 13:12:23
import java.awt.*;
public class FrameTest extends Frame {
public static void main(String [] args) {
new FrameTest();
}
FrameTest() {
super("FrameTest");
setSize(200, 100);
show();
}
}
これを、
FrameTest.javaに書き出し、
C:\java>javac FrameTest.java
で、コンパイルしたら成功しました。
しかし、これを起動するのには、
C:\java>java FrameTest
としなくてはなりません。
これをダブルクリックで起動させるにはどうしたらいいでしょうか?
OSはwinsp2です。
986デフォルトの名無しさん:2007/12/15(土) 13:15:18
ジャー にする。
987デフォルトの名無しさん:2007/12/15(土) 13:25:08
>>986
どうすればjarファイルが作れますか?
988デフォルトの名無しさん:2007/12/15(土) 13:26:52
初心者なんですが、array Listのint型やdouble 型での宣言方法を教えてください。
お願いします。
989デフォルトの名無しさん:2007/12/15(土) 13:29:51
無理
990デフォルトの名無しさん:2007/12/15(土) 13:51:33
List<Integer> array = new ArrayList<Integer>() じゃダメかね。
991デフォルトの名無しさん:2007/12/15(土) 13:54:05
もしくは commons primitives の org.apache.commons.collections.primitives.ArrayIntList を使うか。
992デフォルトの名無しさん:2007/12/15(土) 13:54:20
ジェネリックにIntegerとか無理なんだっけ?

ArrayList<Integer> list
が無理なら、

ArrayList<String> list
intを変換して入れたら?
使うときに戻せばいいじゃん。
993デフォルトの名無しさん:2007/12/15(土) 13:55:48
>>991
それって、速いらしいね。
994デフォルトの名無しさん:2007/12/15(土) 17:01:44
1000を取りたい
995デフォルトの名無しさん:2007/12/15(土) 17:08:26
>>994
まぁおちつけ。スレ建てしてくるから
996デフォルトの名無しさん:2007/12/15(土) 17:09:34
        _____
        (\  ∞  ノ
        ヽ、ヽ    /
          `ヽ)__ノ
997995:2007/12/15(土) 17:12:15
だめぽ。誰かヨロ。
998デフォルトの名無しさん:2007/12/15(土) 18:11:19
貰ったー?
999デフォルトの名無しさん:2007/12/15(土) 18:23:19
【初心者】Java質問・相談スレッド110【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1197710566/
1000デフォルトの名無しさん:2007/12/15(土) 18:27:37
1000.
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。