[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/06 12:55 / Filesize : 277 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:05:27 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド114【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1207385614/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

2 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:06:45 ]
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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


3 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:07:10 ]
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 7
ttp://pc11.2ch.net/test/read.cgi/tech/1204155623/l50
■ SWT は --
Java 高速GUI SWT 3
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50

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

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 64 ★★
ttp://pc11.2ch.net/test/read.cgi/tech/1196543694/l50

**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/index.html
■ J2SE 5.0 (1.5.0)
ttp://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
ttp://java.sun.com/javase/ja/6/

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/

4 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 03:39:10 ]
>>1


5 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 03:55:12 ]
>>1
おつ


6 名前:デフォルトの名無しさん [2008/05/12(月) 04:36:14 ]
javaを勉強するなかで、私はまずjavaで簡単なゲームを作ることにしました。
アプレットを作る方法を勉強すればいいと思うのですが、
javaでできるのはアプリケーションとかサーブレットとかもあるがそれはしないつもりなのか?と突っ込まれました

まだ全然よくわからないのですが、アプリケーション用のjavaとかサーブレット用のjavaとかがあるわけではないですよね
アプレットを作るプログラムの基本を学んでいけば、その応用でアプリケーションやサーブレットにも対応していけると予想しているのですが
この考え方で問題ないでしょうか?

いろんな本やサイト見ても、そもそもjavaで出来るのはこれこれで、それはこういうものだっていう説明は中々見つかりません
いきなりプログラムの書き方について(クラスとかメソッドとか)ってのが多くてこの疑問がなかなか解決しなくて困っています

7 名前:デフォルトの名無しさん [2008/05/12(月) 05:08:40 ]
JDKのドキュメント見てわからないなら何見ても一緒
Sunの米国サイトに行っても概要は分かるはず
jakartaなども覗いて見るといいだろう

8 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 10:29:10 ]
>6 javaにはたくさんのクラス、メソッドがあり全てを覚えきって
使いこなすには今生では無理。java.utilパッケージを使いこなすのは必須事項だけど
javaで何がやりたいか?(サーブレット、アプレット,swing etc)を決めて
それのエキスパートになるのが良いと思うよ。

9 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 10:52:16 ]
String[] allTokens = line.split(" ");
for (String token : allTokens)
この意味を教えてください。

10 名前:デフォルトの名無しさん [2008/05/12(月) 11:11:42 ]
age



11 名前:デフォルトの名無しさん [2008/05/12(月) 11:40:03 ]
>>1乙です。
早速質問お願いします。

import java.util.regex.*;

public class TestRegex {
public static void main(String[] args) {
Pattern pattern;
Matcher matcher;
/* パターンマッチ */
System.out.println("<パターンマッチ>");
pattern = Pattern.compile("[^0-9a-zA-Z]+");
matcher = pattern.matcher(args[0]);
boolean b = matcher.matches();
System.out.println("match =[" + b +"] CD=[" + args[0] + "]");
}
}

実行時コマンド java TestRegex "a"
結果はtrueを期待していたのですが、falseになります。

なぜでしょうか?

12 名前:11 [2008/05/12(月) 11:44:10 ]
すいません、自己解決しました。
falseで合ってますね、失礼しました。

13 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 11:49:53 ]
>>9
jdk5以降のjavadocの新機能の章、拡張for文のところを嫁

14 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 12:14:42 ]
>>13
thx

15 名前:デフォルトの名無しさん [2008/05/12(月) 14:29:49 ]
>>6
ただ漫然とエキスパート目指してもその類の人間はごまんと居る
君のように何が出来るのかを考え大枠を作り出す能力こそが非常に重要


16 名前:デフォルトの名無しさん [2008/05/12(月) 16:51:17 ]
javaでUSBバスパワーのON/OFFや
電圧制御などはできますか?
USB扇風機をプログラムで制御できないものかと考えたのですが・・・

17 名前:デフォルトの名無しさん [2008/05/12(月) 17:13:13 ]
JavaUSB


18 名前:デフォルトの名無しさん [2008/05/12(月) 17:40:55 ]
>>17
kwsk

19 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 18:06:54 ]
>>18
ぐぐれ

20 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:10:38 ]
質問なんですがjavaにもMSDNライブラリみたいなサイトってあります?



21 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:03:27 ]
sunのページが山ほどあるだろ

22 名前:デフォルトの名無しさん [2008/05/12(月) 20:05:05 ]
>>19
ありがとうございます。
色々検討してみます。


23 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:10:18 ]
>>21
あ なるほど・・ありです!

24 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:20:15 ]
import java.util.Scanner;
class Les4_1{
public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
int y;
do{
System.out.println("整数を入力してください");
int x = stdIn.nextInt();

if(x == 0){
System.out.println("入力された値は0です。");
}
else if(x <0){
System.out.println("入力された値は正です。");
}
else{
System.out.println("入力された値は負です。"); }

System.out.println("もう一度? YES=1 NO=2");
y = stdIn.nextInt();
}while(y == 1);
}
}
・・・というような参考書に載っていた読み込んだ整数値の符号を判定するプログラムを
作っていたのですが、utilのパッケージ、Les4_1のクラスでシンボルを解決できない、
というエラーが出てしまいます。

一行目をimport java.io.*;に変えるとutilのパッケージのエラーが消えました。
開発環境はJ2SE SDKです。長くなりましたが、どうか回答お願いします。

25 名前:デフォルトの名無しさん [2008/05/12(月) 20:23:25 ]
何の回答?

26 名前:24 mailto:sage [2008/05/12(月) 20:30:28 ]
>>25
すみません、言葉足らずのようでした。
どうしたら解決できるのでしょうか?
プログラムとしては間違っていないようなのですが・・

ttp://www.javadrive.jp/start/scanner/index1.html
こちらのサイトのサンプルプログラムでも同じようなエラーが出てしまいました。

27 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:44:53 ]
正常に動くようだけど?ただし不等号が逆

28 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:46:46 ]
java.util.Scanner
Since:
1.5

29 名前:24 mailto:sage [2008/05/12(月) 20:50:28 ]
>>27
気付きませんでした。ありがとうございます。

>>28
今使ってるのが1.4.2でした・・・。
新しいバージョンのでやり直してみます。ありがとうございます。


30 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:33:21 ]
質問です

ArrayList型の変数に格納されてる値をString型の変数に代入して行きたいのですが
C言語の配列だと最後に\0が格納されていて、終端の判断が出来るのですが
ArrayListにもその様な終端の判断が出来る要素ってありますか?

また無かったら、どの様にして終端を判断するのか教えてください



31 名前:デフォルトの名無しさん [2008/05/12(月) 21:39:29 ]
size()


32 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:43:35 ]
ArrayListの長さならsize()
Stringの長さならlength()





33 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:55:13 ]
>>31-32
ありがとうございます

34 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:18:55 ]
javaを勉強してる学生です。
win+ECLIPSEでやってるのですが、ECLIPSEがちょっと重たい。
いいツールないですか?オススメあったら教えてください。

私、普段macなんですが、macでjavaを勉強しようと思ったらどういう環境がいいですかね?やっぱりECLIPSEですか?OS10.5です。

35 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:24:47 ]
vim + Makefile は軽いよ! 当然ながら。

36 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:54:31 ]
>>34
個人的な意見だが、MacOSXのSWTはやたら遅いので、
MacでやるならNetBeansのほうがサクサク動いてお勧め。

37 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:17:39 ]
>>35,36
vimは先生が使うなって言ってたんです。
なんでかわかりませんが。

MacだとNetBeansですか。。
ちょっとチャレンジしてみます!

38 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:21:57 ]
vim 使いの俺に対する挑戦か・・・その先生はw
まあ、初心者には敷居高いわな。

39 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:24:26 ]
>>38

にゃはは。敷居が高いって言ってました。うちの先生。
NetBeansでいろいろしてからvimにチャレンジしてみます!

40 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:45:06 ]
プログラムでも何でもないんだけど
良いスレ見つからなかったので
簡単な質問させて下さい。

私はローテクアニオタゲーマーでブロック崩しとか
好きなんですけど、JAVAのブロック崩しって
マウス操作がおもくそ引っ掛かりませんか?
ノートだろうがハイスペックデスクトップだろうが
同じような頻度で同じように引っ掛かって
ちゃんと操作してるのにカーソルが動かなくて
玉をロストってのがめっさムカつきます。
これってJAVAゲーの仕様なんですか?
どうしようもないことなんですか?
それ以外は作り手さんが色々な工夫を
し易いみたいで面白いんですが、アレだけは
本当に嫌なんです。どうにかなりませんか?



41 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 02:08:06 ]
>>40
板違い
ここはプログラミングするひとの板です
そのゲームプログラムを>>40が改造してもっとよくしたいとかなら
>>40が作成したソースを示すことで相談に乗れる人もいるでしょう

42 名前:デフォルトの名無しさん [2008/05/13(火) 02:34:37 ]
作り手の質の問題だよね
そんなひどい品質のゲームを出すこと自体センスを疑う

43 名前:デフォルトの名無しさん [2008/05/13(火) 04:48:09 ]
Integerの配列のデータをintの配列のデータに入れようとしたらエラーがでます。
(int)でIntegerの配列のデータをキャストしようとしたんですが無理でした。
なんで?

44 名前:デフォルトの名無しさん [2008/05/13(火) 04:54:57 ]
43です。
自己解決しました。
Integer-int変換なんだから自動で処理してほしいですね

45 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:15:08 ]
>>44
Integer[] i = ...;
int[] j = ...;
j[0] = i[0];
みたいにIntegerとintの間ならauto-boxing, auto-unboxingしてくれるはずだが?
どんな代入を行おうとしたんだ?

46 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:19:35 ]
使ってるのが1.4以下だったならこの言語仕様はないから真面目に変換を書かないとだめだが

47 名前:デフォルトの名無しさん [2008/05/13(火) 07:17:12 ]
>>45
DataTableがInteger型です。
int [ ] DataOfSocialStudies= new int [ DataTable[2].length ] ;
for(int i=0;i<DataOfSocialStudies.length;i++){
DataOfSocialStudies[i]= DataTable[2][i].intValue(); ←この部分
}

ぷらっとフォームを確認したらJDK1.4だったんでJavaHotSpotClient VM1.6
ってのにしたんですけどエラーは変わらず出ました・・・


48 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 07:33:13 ]
JDK1.6入れろよ

49 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 16:11:23 ]
>>47
>ぷらっとフォームを確認したら
PCショップか。

50 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:04:29 ]
あれはぷらっとホーム

昔、営団がホームドアを導入したとき、Home Doorと英表記してたのを思い出した。




51 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:09:54 ]
swingスレか迷ったのですが、
コマンドプロンプトを起動+コマンド入力→実行
をJavaプログラム内から行いたいのですが、こういうのは可能なのでしょうか?

52 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:20:05 ]
Runtimeクラスを調べてごらーん

53 名前:デフォルトの名無しさん [2008/05/13(火) 22:14:05 ]
Web系の仕事をしてまもない若輩者です。

最近、上司の教えにより、ようやくsyncronized構文を使ったサーブレットを作成する事が
理解できるようになりました。スレッドについては他にThreadクラス、Runnableインターフェイス等あるみたいなんですが、
とりあえずsyncronizedを覚えてといわれたので上記2つは勉強しておりません。

Web系開発をするにあたり上記2つ(Threadクラス、Runnableインターフェイス)は
必要でしょうか?

よろしくお願いします。

54 名前:デフォルトの名無しさん [2008/05/13(火) 22:47:42 ]
もしかしてResultSetってクエリの結果をオブジェクト内に保持しているんじゃなくて
getXxx()する度にDBに結果を取りに行ってるんですか?

55 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:54:58 ]
1レコード取得するたびにRDBMのカーソルが動くと思っておけばいいんでない?


56 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:04:16 ]
どうせでっかいがちがちのフレームワーク使うことになると思うよ。

57 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:04:50 ]
>>53

58 名前:53 [2008/05/13(火) 23:08:17 ]
>>57
なんですか!?なにかおかしかったですか??

せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。

だから、教えてくれればありがたいんですが。。



59 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:11:55 ]
>>53
お前にはまだ早いというのが上司の判断だろう

60 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:18:55 ]
            ____
         __,,/  _, ----`ヽ
        / _     ___   、\
       / /   i      \   \\
       ,'./       i  ヽ:.   ヽ:.:.. ヽ.ヽ
      ,'/    / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ
       |i .i i  .i /  ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
       |i .i l  :N_, -弋 \弌弋ナ:}:.:}
      |i∧ ', :{ ,ィjモト \  イjミトイイV
       .|  :メヽ.', `ozZ}      izN。ハ::{
        |  :ヾ_! ゝ "゙゙    '  `゙ ハ.:',
      |  :.:_イ .:.ヽ.   (二フ , イ :.:.:!:.ヽ
      / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\
      / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
    / .{. ',ヾ、ヽi .:.:.{ /(^`  |.:.:.:.//: : :.}: . ヽ.
   / /  ) ヽ ヾ、ヽ:.ハ ヤ{   ∧/.-‐'": : |:.:. i ',
  ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、  : : : l:.:.: .ハ ',
  { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
  V | .:.:/:.:|_,ィ' ̄  ヽ三{ `ー-ノ : イ : : :/:.:i.:{  リ
    ヽ:.:{、.:.V     : : ヘ     : : {: : :/:.::∧|
     ヽ! )人    : : :人      : : : / \!
      "  ヽ : : : : :/イ{     :.ノ: : : :.\
          \__///: :\______/: : : : : : : ヽ
           / //: : :|;|: : : : : : i: : : __: : : : ',
             / 、 {;{   |;|   . : i/. : : : : : :|
          / `Y;{. . . .|;|. : : : /i: : : : : : : : :l

なんですか!?なにかおかしかったですか??

せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。



61 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:24:02 ]
>>58
状況がよく分からんが・・・・・

そもそも、synchronizedを使うということは、
マルチスレッドが絡んでる領域だろう

一般論としてマルチスレッドプログラミングは、概念を理解した上で行わないと危険
しくじると簡単にデータの整合性を破壊したり、パフォーマンスを劣化させてしまう
おまけにバグが再現しにくいので修正も簡単じゃないことがある

62 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:26:04 ]
単なる釣りだろ

63 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:26:34 ]
まあJavaでWebならデフォでマルチスレッドだからな

64 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:33:53 ]
サマータイムになったらどうすればいいの?おしえてちょ

65 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:40:51 ]
何がしたいの?

66 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:55:28 ]
質問です

Javaアプリケーションで起動したときに
フレームの上半分にあらかじめ指定していたファイルから
画像を読み込み表示するというプログラムを
作りたいのですがどう作れば良いのでしょうか?

調べてもAppletに関することばかりで困ってます

67 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:58:48 ]
appletで出来るのなら
親をJFrameにすれば?

68 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:00:39 ]
フレームにAppletを貼ったあとinitとstartを呼び出すのも忘れずに。

69 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:14:30 ]
>>67
いえ
Appletでも出来ないんです


70 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:16:26 ]
ということはここでアプリケーションに関する情報を得たとしても作れないってことだ
素直に宿題スレへ行け



71 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:25:08 ]
申し訳ありませんでした
もう少し勉強してきます

72 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:26:03 ]
>>69
で、どこまで調べた?

73 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:32:19 ]
そういや>>68っていう手があったな。
アプレットなんてもう何年も使ってないから忘れてた。

74 名前:51 mailto:sage [2008/05/14(水) 00:44:12 ]
>>52
すいません、寝ちゃって返事が遅くなってしまいました!><
ちゃんと引数まで付けて実行出来るとは、正にやりたかったことです!
おかげさまで非常に助かりました、本当にありがとうございます!!

75 名前:デフォルトの名無しさん [2008/05/14(水) 00:58:52 ]
ぐぐればすぐ出てきそうなもんだろうに…<<66

76 名前:デフォルトの名無しさん [2008/05/14(水) 01:02:34 ]
宿題スレから誘導されて来ました。
乱数を利用して0〜53の値をランダムで配列に格納するプログラムなんですけど、
永久ループになってしまいます。値は一意です。
どなたか助けてくださいm(_ _)m


public class XXX {
public static void main(String[] args) {
/* 変数宣言 */
int[] card = new int[53];
int nn, num;
boolean frg = false; // 配列との比較用フラグ

/* 乱数の発生と格納 */
nn = 0;

while (nn != 52) {
num = (int)(Math.random() * 54);

for (int i = 0; i < nn; i++){

if (num == card[i]) {
frg = true;
break;
}
}

if (frg == false) {
card[nn] = num;
nn++;
}

77 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:03:02 ]

/* 結果の表示 */
String buf;

for (int i = 0; i < card.length; i++){
buf = " " + card[i];
buf = buf.substring(buf.length() - 4);
System.out.println(buf);

if (i % 10 == 0){
System.out.println();
}
}
}

78 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:14:05 ]
>>76
while (nn != 52) {
num = (int)(Math.random() * 54);

for (int i = 0; i < nn; i++){

if (num == card[i]) {
System.out.println("num=" + num);
frg = true;
break;
}
}
でやってみたらどう?

79 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:34:33 ]
>>78
やってみました、
num = で、1〜53までのランダム整数が永久ループで表示され続けます。
フラグ初期値falseがどんな数値でもtrueになってしまっているようで、
それでいてnnが加算されないのが永久ループの原因のようです。
うう、どうしてかわからない・・・。

80 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:37:22 ]
シャッフルって普通こう書くんでは?

public static void shuffle(int[] array) {
shuffle(array, array.length);
}

private static void shuffle(int[] array, int size) {
if (size == 1) return;
int swapIndex = random.nextInt(size - 1);
int temp = array[size - 1];
array[size - 1] = array[swapIndex];
array[swapIndex] = temp;
shuffle(array, size - 1);
}



81 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:44:02 ]
>>80
すません、まだJAVAならいたてのど素人なので
そこらへんは・・・

(int)(Math.random(x + 1))で、0〜Xまでの数値のランダムというのを
ネットで発見したのでそれを使ってやろうと考えています。

82 名前:80 mailto:sage [2008/05/14(水) 02:05:54 ]
誤: int swapIndex = random.nextInt(size - 1);
正: int swapIndex = random.nextInt(size);

死にたい。

>>81
if (frg == false) {
card[nn] = num;
nn++;
} else frg = false;

ってしてみたら?
あとフラグの綴りはflagです。

buf = buf.substring(buf.length() - 4);

は何やってるのかわかりません。
if(frg == false)はif(!frg)でいいじゃん

83 名前:53 mailto:sage [2008/05/14(水) 02:08:44 ]
たびたびすみません。>>53です。みなさん、レスありがとうございました。

上司からデッドロックとかスレッドの概要はおしえてもらいました。データの整合性
とか同期とかも教えてもらいました。

スレッドクラスとかランナブルインターフェイスというのは、スレッドを専門にあつかうクラスであるみたいですが、
Webアプリやるならsyncronizedだけでいいといわれました。でも、せっかく本を買ったので
必要ならやってみたいとおもったりしたわけです。

概念的なものは理解したつもりです。後はクラスの使い方だとおもうんです。
ですから、それを勉強しといたほうが得なのか、Webアプリには必要ないのかを聞きたいんですが…

ぜんぜん、つりではなく、まじめな質問なので、よろしくお願いします。
具体的には、WebアプリでThreadクラスやらRuunableインターフェイスを使う事があるのかないのかを聞きたいです。

どうか、よろしくお願いします。

84 名前:53 mailto:sage [2008/05/14(水) 02:10:08 ]
上司の物言いが軽かったので、真偽のほどをおしえてもらいたいんです。

すみませんが、軽く答えていただければいいのでよろしくお願いします。

85 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:15:59 ]
その辺のめんどくさいことはアプリケーションサーバがやってくれるので、
意識しなくてよいはずです。
そのためのアプリケーションサーバですから。
せっかく本を買ったのなら、アプリケーションサーバのベンダの人達は、
こんなめんどくさいことやってるんだなあ、と考えながら読みましょう。

86 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:17:01 ]
明示的に使う使わないに関わらずjava技術者ならスレッド全般の知識はあって当然
目先のことに囚われて勉強しなくていいやなんて思っているなら死んだ方がまし

87 名前:53 mailto:sage [2008/05/14(水) 02:26:06 ]
>>85
まいど!やんなくていいですか。ありがとうございます。
せっかく買ったのでやってみようとおもいます。ありがとうございました。

>>86
スレッドってそんな大事なんですね。あちきは、単なる1部分くらいにおもってました。
じゃあ、やってみます。

みなさん、回答どうもありがとうございました。多謝です。

88 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:30:21 ]
>>82
あーっ、なるほど。漸くわかりました。
一度既出の値が出たときにフラグがtrueになるのがそのままtrueのまま続いてしまっていたんですね。
どうもありがとうございます。精進します。


>buf = buf.substring(buf.length() - 4);

すいません、説明不足でした。表示する内容を右揃えする制約があったので、
substringを利用して右揃えをする部分ですこれ。

89 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:45:49 ]

◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
system-trading.jp/news/index.php?cID=3

5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

90 名前:デフォルトの名無しさん [2008/05/14(水) 05:35:57 ]
すみません、別のプロジェクト内のクラスのインスタンスを作ることって可能なんでしょうか?
教科書にスタックの考え方を再現したJAVAプロジェクトと、前置記法のアルゴリズムを再現したJAVAプログラムがあり、
そのうち前置記法のプロジェクトが当然のようにスタックのプロジェクト内のクラスのインスタンスを作っているのですが。
エクリプス上でその部分に赤線が引かれており、実行してもエラーが出ます。
また、別のクラスを呼び出すために「Javaのビルド・パス>プロジェクト」と「プロジェクト参照」の設定」とやらも試してみたのですが、
そうすると赤線部分はなくなったのですが、実行しても何も起こりません。
前置記法のプログラムの最初にはimport java.io.*; とあるのですがそれが関係しているのでしょうか?




91 名前:デフォルトの名無しさん [2008/05/14(水) 07:06:40 ]
すいません。初歩の初歩でつまずきました。。。
実行すると
Exception in thread "main" java.lang.NoClassDefFoundError:
↑はwikiで解決するんですが、
at java.net.URLClassloader$1.run(Unknown Sourse)
at ・・・
at ・・・
と、at何とかが7個出てくるんですがあれはなんでしょうか?
教えてください。

92 名前:デフォルトの名無しさん [2008/05/14(水) 11:42:50 ]
エラー

93 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:25:20 ]
>>91
スタックトレース
例外が投げられた時点でどういうメソッドが呼ばれていたのかの情報
下の行のメソッドが上の行のメソッドを呼んでいることを表す
その場合は例外は一番上のjava.net.URLClassloader$1クラスのrunメソッドで投げられた

94 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:23:05 ]
2006年atex1003第XX回「hoge」(piyopiyo).avi

↑のようなファイル名のファイルが大量に入ったディレクリを引数に指定して、
中のファイル名を第XX回「hoge」.aviにしたいと考え以下のようなものを書いたのですが、
renameToの返却値がfalseになってダメです。
どうしたらちゃんとリネーム出来るのでしょうか?orz
public static void main(String [] args)
{
File dir=new File(args[0]);
String[] str=dir.list();
for(int i=0;i<str.length;i++)
{
File file=new File(args[0]+str[i]);
String newfile=new cui().toRenStr(str[i]);
System.out.print(file.renameTo(new File(args[0]+"/"+newfile)));
}
}

public String toRenStr(String str)
{
Pattern pattern = Pattern.compile(".*第");
Matcher matcher = pattern.matcher(str);
String renstr = matcher.replaceAll("第");
pattern = Pattern.compile("」.*");
matcher = pattern.matcher(renstr);
renstr = matcher.replaceAll("」.avi");
System.out.println(renstr);
return renstr;
}
}

95 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 17:01:05 ]
>>94
renameTo()を呼ぶ前に、file.getName()とnew File(args[0]+"/"+newfile).getName()
を表示して確認。



96 名前:デフォルトの名無しさん [2008/05/14(水) 20:11:53 ]
質問です。
左右マウスホイールって使えないんですかね?
(一般的にはチルトホイールという?)
少し調べたんですけど、全然出てこないですね。

97 名前:デフォルトの名無しさん [2008/05/14(水) 20:51:21 ]
JavaでWebサーバを作成中で、POSTリクエストの受付を可能にしようとしています。
POSTのHTTPリクエストは
「ヘッダ部複数行」
 1空行
「データ部1行」なので、
BufferedReader br = new BufferedReader
(new input StreamReader(socket.getInputStream()));
でHTTPリクエストを取得。そのあとに
while(br.readLine() != (""){
}
String data = br.readLine();
とやれば、データ部をdataに入れられると思ったのですが、
データ部の後ろには改行コードのCRLFがないため、readLineで1行読み込む
ことができないようです。同様にread()でもうまくいきません。

どうにかしてデータ部を取得することはできないでしょうか?

98 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:09:43 ]
>>97
たいていの場合はヘッダにデータ部の長さが入っているので、そのぶん
だけ読めばよろしい。

他、気になるところ:
・HTMLからのフォームPOSTでも、データがMIMEで送られることがあるので、データが1行とは限らない
・データがバイナリのこともあるので、基本的にReader類は使ってはダメ
・chunked-encodingのこともあるので、以下略


99 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:27:47 ]
private InputStream is;
private InputStreamReader in;
これらを使って文字列を読んでるんですが、ファイルが終端に達したかを調べる方法ってありますか?


100 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:32:32 ]
>>99
readメソッドの戻り値がー1



101 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:40:13 ]
>>100
ありがとうございます

102 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 22:50:49 ]
スレチかもしれませんが教えてください。
いまSQL Serverとjavaを繋げる勉強をしています。
INSERTした時間を後で取り出し
after()メソッドで比べたいのですが、そういった処理は可能ですか?
もし可能なら詳しく教えてください。


103 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:01:01 ]
System.currentTimeMillis() または System.nanoTime()

104 名前:デフォルトの名無しさん [2008/05/15(木) 00:19:56 ]
ガベージコレクションは必要なくなったオブジェクトを自動的に開放してくださるそうですが、ストリームも自動開放してくれるのでしょうか?

また、どのタイミングでしてくれるのですか?

105 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:25:52 ]
しません。

106 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:27:08 ]
忘れてた。ファイナライザでクローズしちゃだめだよ

107 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:30:16 ]
ストリームくらいちゃんと閉じろ、馬鹿者

108 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:33:55 ]
void hoge() {
InputStream input = null;
try {
  // 略
} finally
  input.close();
  input = null;   // ←
}
}
これが必要か?って話ならばイラネ


109 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 05:30:00 ]
無駄にnull突っ込むのはC#でもよく見かけるんだが、何でこんなに
流行しちゃったの?何か歴史的背景とかあんの?

110 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:45:43 ]
>>103
ちょっと難しそうですけど、ありがとうございました。



111 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 09:38:05 ]
>>109
nullを入れたほうがGCの取りこぼしが少ないとか、即座にGCされるから効率的だとか、そういう勝手な思い込みから

112 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 11:19:31 ]
input.close();
input = null;
 System.gc();

しても実際3行目でメモリ解放するかはGCの実装依存なんだよね。

113 名前:デフォルトの名無しさん [2008/05/15(木) 11:47:37 ]
バグの原因になるからだよ
処理しないでそのまま流してしまうコードを書くおっちょこちょいが多すぎて
コンパイラがデフォでnullを入れてないコードをコンパイルするときにエラーをはくようになった



114 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 12:46:18 ]
何言ってんだ?

115 名前:デフォルトの名無しさん [2008/05/15(木) 14:52:45 ]
public class A {
 public static void main(String args[]){
  static int i = 0; // int i = 0;ならエラーにならないのはなぜですか?

116 名前:デフォルトの名無しさん [2008/05/15(木) 15:10:35 ]
>>115
ローカル変数には static つけられないって言語仕様で決まってるから。

117 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 15:21:37 ]
public class A {
 static int i = 0;
 public static void main(String args[]){
これならいいんですね。

118 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:27:21 ]
>>117
それだとiはローカル変数ではなくなる。
staticはインスタンスでなくクラスに属する変数であるという意味だから、
クラスやインスタンス個別でなくスレッドごとに存在しているローカル変数に付けると
意味不明になってしまう。単に、>>115でstaticを外したように書けば、
ローカル変数iとして使えるし、コンパイルも通るはず。
それともクラス変数にしようとして書く場所を間違っただけ?

119 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:37:44 ]
型の静的変換について質問です。
とあるObject型のobj、Sting型のstrがあるとして

((String)obj).charAt(0);
str.charAt(0):
この二つでは、静的変換が入る上のほうが実行速度にペナルティーがあるのでしょうか?

以前やっていたCではペナルティがなかったと思うのですが、Javaだと「静的型変換に失敗した」という例外を投げてくれるようなので、おそらくなかでチェック機構が働いており、ペナルティがあるかなと思っているのですが

120 名前:デフォルトの名無しさん [2008/05/15(木) 17:48:19 ]
>>119
コードや実行環境によるとしか言えない。

例えばループ内で obj が再代入されないなら
JITコンパイラが String tmp = (String)obj; みたいなコードを
ループ外部に作成して、ループ内部では tmp.charAt(0) に変換、
みたいな事をする可能性はある。



121 名前:デフォルトの名無しさん [2008/05/15(木) 17:49:55 ]
>>119
あと、(String)obj は動的(実行時)型変換だよ。

静的(コンパイル時)型変換じゃない。

122 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:58:49 ]
>>120-121
なるほど、最適化されるということは、裏を返せば型変換にはペナルティがあるってことですね。

>あと、(String)obj は動的(実行時)型変換だよ。
たしかに。書き方がCと同じだからって、同じものだとは限らないわけですね。
Javaには静的型変換はないようで。

ありがとうございました。

123 名前:デフォルトの名無しさん [2008/05/15(木) 18:15:56 ]
>>118
ありがとうございます。
int変数のiが5なのかを判定したくて
if(i == 5){
と書いてみたのですが、そのif以前にiが初期化されていなかったらiがnullかもしれないから
if(i != null && i == 5){
と書かなくてはならないのか調べたくて
int i;
if(i == 5){
とするとコンパイルできなかったから、
static int i;
if(i == 5){
と書きましたが、これもコンパイル不能でしたが、コンパイラがstaticを
解釈できていないようなメッセージを出しているみたいだったので質問させていただきました。

124 名前:デフォルトの名無しさん [2008/05/15(木) 18:17:38 ]
>>123
int型が null になる事はない

125 名前:デフォルトの名無しさん [2008/05/15(木) 18:21:49 ]
>>124
そうですね。nullになりませんが、プリミティプの数値型は0で暗黙の初期化がされるらしいので
int i;
を書いてから、初期化を書かずに
if(i == 0){
を実行して真となることを確認したいのですが、そのようなソースは書けませんか?

126 名前:デフォルトの名無しさん [2008/05/15(木) 18:23:40 ]
>>125
ローカル変数は暗黙の初期化はされない。

127 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:24:46 ]
>>125
書けません。
必ずローカル変数はその値を参照する前に初期化されていることが求められています。
そして、ローカル変数は初期化を省略した際のデフォルト値のようなものはないので、
自分で初期化しなければなりません。

128 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:27:37 ]
>>125
int i;
と書いただけではiの値は確定していないので必ず初期化が必要。
iに値を代入するのがそんなに面倒?

129 名前:デフォルトの名無しさん [2008/05/15(木) 18:29:52 ]
public class A {
 static int i;
 public static void main(String args[]){
これならiは暗黙の初期化で0ですね。
ありがとうございました。

130 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:36:28 ]
なにがやりたいのかわからん
ローカル変数とクラス変数では全然意味が違う
暗黙の初期化をしたいがためにローカルなものをフィールドに出したら
プログラムそのものの動作が変わってしまうだろ



131 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:15:37 ]
暗黙の初期化なんて百害あって一利ぐらいだわ。
一般的なJavaプログラミングには必要ない。

むしろプリミティブ型の値範囲と精度に注目して欲しい。

132 名前:デフォルトの名無しさん [2008/05/15(木) 19:58:21 ]
なんか、Seasar2っていうのがいいらしい。

おもしろかったらやってみたいんだけど、
家計がしんどいので2000円の本買うのためらってる。

Seasar2っておもしろい??

133 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:13:25 ]
まず働いて2000円の本位買える家計環境にしよう

134 名前:132 [2008/05/15(木) 20:50:48 ]
>>133
働いています><; 一人暮らしでバイクのローンもあるから厳しいんです><;

原付にしときゃよかった><;

Seasarのスレがあったのでみたら、閉店するそうなので
やめます><;

135 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:03:04 ]
2,000円の本を買うのためらうくらいならネットで調べろ

136 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:05:57 ]
JSPでDBとやり取りするドライバ(のようなもの?)のクラスを作っているのですが、判らないことがあります。
ResultSet.nextをコールしないとSQLExceptionがスローされるようなのですが、なぜExceptionになるのでしょうか?

statement.excute(SQL文)でSQLのカーソルをSQL文に対応するレコードに移し、
statement.getResultSet()でカーソルの指し示すレコードをResultSetとして渡す。
で、ResultSet.getString()なりなんなりでSQLの中身を取り出す。

複数のレコードを取り出すならばResultSet.next()を使うのが自然だと思うのですが、単独のレコードが期待される場合は使う必要がないのではないでしょうか?
excuteじゃなくてexcuteQueryだと違うんでしょうか?

137 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:15:23 ]
なぜExceptionの詳細を書かないんでしょうか?
stacktraceくらい張ったらどうでしょうか?

138 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:24:48 ]
>>136
ResultSet のカーソルは、初期状態では最初の行の前に位置付けられています。
メソッド next の最初の呼び出しによって、最初の行が現在の行になります。
2 番目の呼び出しによって 2 行目が現在の行になり、以降同様に続きます。

139 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:29:52 ]
>>136
java.sun.com/javase/6/docs/api/java/sql/ResultSet.html
> A ResultSet object maintains a cursor pointing to its current row of data.
> Initially the cursor is positioned *before the first row*.

日本語版は誤訳だから気をつけろ


140 名前:136 mailto:sage [2008/05/15(木) 22:49:57 ]
英語苦手なんでアレなんですが…

ResultSetのカーソル位置が最初0で、受け取ったデータは1から始まるって事でしょうか?



141 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:54:57 ]
そう

142 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:02:39 ]
把握しました。ありがとうございます。

<チラ裏>
言えない…ResultSetが単体のレコードを格納すると思ってたなんて言えない…
</チラ裏>

143 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 01:09:02 ]
Cursorとかいう名前だったらよかったのにな。


144 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:31:41 ]
>>140
可能です。
以上。
↓次の方どうぞ

145 名前:デフォルトの名無しさん [2008/05/16(金) 08:35:28 ]

質問です、文字列からColorクラスに変換することってできないでしょうか?つまり、
String colorname = "red";
のような色名を表す文字列を使って、setBackgroundやsetColorなどのメソッドの引数をつくる方法はないでしょうか?
色名を全部並べてif文とかで条件分岐をすればできるですが、それだととてもコードが長くなってしまうので・・・


146 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:38:52 ]
>>145
java.awt.Color#getColor(String)

147 名前:145 mailto:sage [2008/05/16(金) 09:11:22 ]
>>146
レスありがとうございます。やってみたのですが、たとえば
Color color;
color.getColor("red");
というふうにすると、コンパイルはできるのですが、ちゃんと色が出ませんでした。
redをblueやcyanに変えてみても、同じ黒っぽい色しか出ません。
どうしてなんでしょうか?



148 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 09:17:15 ]
APIリファレンスすら読まないから。

149 名前:145 mailto:sage [2008/05/16(金) 09:29:15 ]
一応読んではいるのですが・・・

150 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:16:27 ]
質問です

2次元の配列データを、csvファイルにして(デスクトップなどに)出力したいのですが、どのような方法があるでしょうか。




151 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:29:14 ]
自前でやるのが面倒なら commons-csv なりなんなり使え。

152 名前:150 mailto:sage [2008/05/16(金) 10:32:28 ]
すみません、自前でできる方法をお願いします。

153 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:43:36 ]
>>147
使い方としては、
Color color = Color.getColor("red");
だけど、ドキュメントを見るとシステムプロパティがどうとか書いてあっ
てよくわからんね。


154 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:49:05 ]
>>152
自前でやるんなら、自分でCSV書き出すプログラム書くだけだよ。

155 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 11:40:26 ]
>>152
for(data[] row : array){
for(data cell :row){
data.toString()と","をファイル出力
}}

156 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 12:41:17 ]
>153
それはダメ。
その実体は new Color(int, int, int, int) の引数を結合した数値の文字列表現。
> 指定されたプロパティが見つからない場合、
> ***または整数値として解析できなかった場合***、null が返されます。

>145 の言う「名前から色」というのは、どこかで対応表を持つ必要があるから、
公開ライブラリには向かない、と私は思う。
要は、Map<String, Color> か何かで専門クラスを作りましょう、と。

157 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 12:45:53 ]
>>145
javax.swing.txt.html.StyleSheet#stringToColor(String) とか?

158 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 12:47:53 ]
>>155
改行してない。

159 名前:デフォルトの名無しさん [2008/05/16(金) 18:00:57 ]
アプレット初めて半年の初心者なんですが、
JToggleButton();で押下時のボタン色を変えるシンプルな方法はありますか?

メソッドをネットで検索しても見つかりませんでしたので、
JToggleButton();を継承して、オーバーライドしたクラスを作ったんですが、
ボタンのイベントの"actionPerformed()"が、使用されるアプリのほうが
自分より早く呼ばれてしまう為、旨くいきませんでした・・・

160 名前:デフォルトの名無しさん [2008/05/16(金) 18:05:23 ]
こんな感じで作りました。

public class IToggleButton extends JButton implements ActionListener
{
private boolean isSelected = false;

IToggleButton(String str){
super(str);
addActionListener(this);
if (this.isSelected) setBackground(Color.pink);
else setBackground(null);
}

public void actionPerformed ( ActionEvent e ) {
isSelected = isSelected?false:true;
if (isSelected) setBackground(Color.pink);
else setBackground(null);
}

public void setSelected(boolean selected){
this.isSelected = selected;
if (this.isSelected) setBackground(Color.pink);
else setBackground(null);
}

public boolean isSelected() {
    return(this.isSelected);
}
}



161 名前:デフォルトの名無しさん [2008/05/16(金) 19:55:47 ]
プログラミング初心者が最初に行き着く
プログラム言語のスレはココですか?

162 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:40:20 ]
いえいえ、アッセンブラ〜やCを長年経験した上での質問です・・・

163 名前:デフォルトの名無しさん [2008/05/16(金) 22:35:26 ]
若い女のプロ意識に脱帽編…

若い女の営業スマイル。よく出せるなと思っていました。
コンビニやスーパーでも俺みたいなきもいおっさんによくこうも
にこやかな営業スマイルだせるなと感心しておりました。

こないだ、パチンコ屋に行きました。そこは町の中心部にあり自宅から
4,50分のところです。そこは、衣装もエロチックでミニスカートにスリットなる
切れ目が入っていて、店員さんもなかなかの魅力的な娘が多いです。
それも楽しみにときどきそこの店に行きます。

あまりでないので、自動販売機のところで一服してるとかわいい娘が
コーヒーを配っています。あまりこの店までこれないので、ついミニスカートのスリットから見える
太ももを凝視して興奮してしまいました。かなり長い間エロい目つきで見てたはずです。

相手に気づかれました。さすがに、とってもいやな顔されるだろうとおもっていました。
最初はたしかにちょっといやな顔をしましたが、すぐにあのにこやかな営業スマイルにもどりました。

これはびっくりしました。いくら店員とはいえ、俺みたいなもてないブサ男に
この場面で営業スマイルとは・・・

恐れ入りました。パチンコ屋のあの店員。

164 名前:163 mailto:sage [2008/05/16(金) 22:36:08 ]
すまん。誤爆った。リロードされたら、プログラム板だった。すまそ。

165 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:39:49 ]
クライアントの変更要求や追加要求に嫌な顔をして見せる奴は、パチ屋の
女性店員よりプロ意識が低いと言いたいわけですね?わかりますw

166 名前:デフォルトの名無しさん [2008/05/16(金) 22:54:26 ]
基礎からのJava
www.7andy.jp/books/detail?accd=31942656

やさしく学ぶ Sun認定Javaプログラマ
www.7andy.jp/books/detail?accd=32020519

この2つでどっちを買うか迷ってるんだけどどっちがオススメ?
もしくは他にオススメある?
一応研修でざっと習って「やさしいJAVA」ってのも貰った
基本をきっちり押さえつつも実践的な練習もできる本が欲しい
他のSUN認定の分厚いのや外人が書いた翻訳された本は見にく過ぎて無理だった
とりあえず逆引きの本は1冊買った
誰か助けて

167 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:12:15 ]
>>166
「実践的な練習」がどのレベルを指してるのか分かんない。
1.実用的なプログラムを、とりあえず動くレベルで書けるようになりたい。
2.動けばいいレベルなら既に書けるから、より良いコーディングを学びたい。

1なら言語本(Javaそのものを説明してる類の本)はやさしいJava1冊で十分。
それよりも実際に何か書いてみる方に注力して、書きながらその都度必要
な情報を検索する、それでもみつからないなら本を探して買うってやり方の
方が経済的だし効率いい。
言語本を何冊も買うのは意味ないし、言語本を2冊読む時間があるなら1
冊だけ読んでもう1冊読む分の時間で実際にコード書く方が効率いい。
あと、1のレベルに達してない人が2を求めるのは非効率。先ずは1から。

もし2ならJavaの鉄則とJavaの格言は良い本だよ。読みやすいしね。


168 名前:デフォルトの名無しさん [2008/05/16(金) 23:27:34 ]
>>167
こんな時間にどうもありがとう!
明日その2冊を立ち読みしてみる

169 名前:デフォルトの名無しさん [2008/05/17(土) 00:21:32 ]
初歩的な質問ですみません
javaプログラミングをするのに優れたフリーのテキストエディターを教えて下さい。
できれば文字の色を変えてくれて、Tabで列を揃えてくれるやつがいいです。
OSはWindows XPです。
よろしくお願いします。

170 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:36:59 ]
java.util.Collections#synchronizedList() の使い道(使い方)がわかりません。

java.util.List は同期化されませんが、以下のようにすれば、list はスレッドセーフになって帰ってくるのですよね。

List unsyncList = new ArrayList();
List list = Collections.synchronizedList(unsyncList);

○質問1:
マルチスレッド環境において、
Collections#synchronizedList() が返した list に対しては、
synchronized ブロックでくくらずに add() や get() しても、スレッドセーフが保たれるという理解でよいですか?

○質問2:
javadoc の Collections#synchronizedList() のところに、
以下のように書いてあるのが気になります。

>返されたリストの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
>
>List list = Collections.synchronizedList(new ArrayList());
>  ...
>synchronized(list) {
>  Iterator i = list.iterator(); // Must be in synchronized block
>  while (i.hasNext())
>    foo(i.next());
>}
>これを行わない場合、動作は保証されません。

これは、list の add() や get() は質問1:で同期化されるようになったが、
list.iterator() が返すイテレータへのアクセスは同期化されていないので、
イテレータでグルグルまわすときは、synchronized 文で自分で同期化してね、という理解でよいでしょうか?




171 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:42:19 ]
>>169
いくつもあるし相性があるって人もいるので、
ぐぐって出てきたのを使ってみれば?

あるいはEclipse、NetBeans等の統合開発環境とか
文法ミスを指摘してくれたり、デバッグ用の機能がそろってたりと何かと便利
大規模な開発にも耐えうるし、ひとつ持っておくのをお勧めする

172 名前:デフォルトの名無しさん [2008/05/17(土) 00:48:44 ]
>>171
なるほど、ありがとうございます。
早速ぐぐってみます。

173 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:17:27 ]
>>168
Effective Javaがいいよ!

174 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:31:30 ]
>>170
sync-List は、単にsynchronizedメソッドでラップされたインスタンスを提供してるだけ。
必要とされる同期化の手続きが、著しく改善されるわけではない。

iterator で返されるインスタンスは、ラップされたものとは違うので、
生成前に必要な手続きを行う必要がある。

175 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:42:45 ]
>>170
>質問1
はい。

ただし、例えば以下のようなことをしたい場合は、containsやaddがそれぞれ単体で同期されてても
間に割り込まれる可能性があるので、全体をsynchronizedで囲まないと望む結果にはならない。

if ( list.contains(x) == false ) list.add(x);

>質問2
はい。

どのみち、iterator、hasNext、nextをそれぞれ単体で同期したところで、
間にaddが割り込まれたらConcurrentModificationExceptionが起きるから、使い物にならないと思う。

ところで、CopyOnWriteArrayListという便利なものもあるよ。
状況によってはおすすめ。

176 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:24:22 ]
>>145
Color c = (Color)Color.class.getField(colorname).get(null);

要try-catch

177 名前:デフォルトの名無しさん [2008/05/17(土) 07:49:46 ]
JSPの質問なのですが、ここでしてもいいものでしょうか?
スレ違いなら誘導をお願いします。

DBから読み込んだ内容をテーブルとして表示し、レコードごとにボタンを置いて押すとそのレコードの詳細を表示するものを作っています。
レコードをテーブル表示するのはwhile(ResultSet.next())で<tr>〜</tr>を繰り返して実現できそうなのですが、詳細を表示するボタンに迷っています。

というのも渡すパラメータが10個あり、しかもそのうち9つがレコードの内容に依存しない共通の項目です。
ボタン一つ一つにformを作ってhiddenで10個のパラメータを付加してwhileで回すのも考えたのですが、例えば20個のレコードに対して200のhiddenが生成されるのはいかがなものかと他の手段を探しています。
buttonを押したときにonclickで遷移することも考えましたが、buttonに直接パラメータを付加できる属性はないものでしょうか?

178 名前:デフォルトの名無しさん [2008/05/17(土) 08:27:13 ]
HTML(リンク)からJAVAサーブレットに情報を与えるにはどうすればいいのでしょうか。
リンク"A href=恐らくdoPostの値></A"で
データをJAVAサーブレットに送信したいのですが方法がわかりません。
リンクにdoPostの情報を与えるのもわかりませんがリンクからの情報をサーブレットに値を与えデータを返す方法もわかりません。

本にも載ってないのでどうすればいいかわかりません、教えて君になってしまいますがよろしくお願いします。

179 名前:178 [2008/05/17(土) 08:52:14 ]
すみませんdoPostのところはdoGetです。

180 名前:デフォルトの名無しさん [2008/05/17(土) 09:55:43 ]
質問です。
現場のソースで、
List list = new ArrayList();と記述し、ArrayListのメソッドを
使っているソースを見かけたのですが、
ArrayList list = new ArrayList()とのメリット上での差異が分りません。
良い点があるから、List list = new ArrayList();と記述するのでしょうが、
その良い点が分りません。よろしくお願いします。
一応、sjc-p1.4の資格は持っていて、SJCPに合格するだけのインターフェースの知識は
あります。



181 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:01:33 ]
どっちかというとHTMLの話になるわな。
そもそも、一覧から詳細にいくのに10個もパラメータいらんだろ?
なんかおかしな設計ではないのか?

POSTで送信する(Formを使用する)場合、
>9つがレコードの内容に依存しない共通の項目
レコード(繰り返し処理)の外側に配置すればいい
各列のハイパーリンクをクリックしたならば、JavaScriptで各行のキーをhidden項目に設定。
その後、隠しボタンにした「詳細」ボタンをJavaScriptでクリック
ってのが1つの方法。
詳細がボタンであっても同様。

GETでいいならば、URLのパラメータに10個のパラメータを付ければいい。

POST/GETとFORMあたりがよく解っていないならば、まずはHTTPの勉強を汁。

182 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:07:06 ]
>>180
ぶっちゃけて言えば、半端な知識のマが書いた中途半端なコードなだけ。
意図としてはListで定義されているメソッドしかlist変数では使えないって効果しかない。
これがメリットとなるか?というならば、ほとんどの場合は否。

これがメリットとなるケースは、一般的にいって定義されたクラス外からlistの参照を持つ場合。
つまり、あるクラスのフィールドとして、
private final ArrayList list = new ArrayList();
と書いてあっても、
public List getList() {
  return list;
}
とアクセサを定義しておけば、
private final List list = new ArrayList();
とする必要は(ほとんど)ない。

クラス内でArrayListをLinkedListに変更したり、配列に変更しても、List getList()さえ仕様通りの動きをすればいいわけだ。
ローカル変数でやるならばもっと意味はない。


183 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:12:13 ]
あと、当然な話だけど、List list = new ArrayList();と書くよりもArrayList list = new ArrayList()と書くほうが、実装上の選択(メソッド)は増える。
極端な話、LinkedListなんて専用メソッドを活用しなきゃいらない子。

184 名前:デフォルトの名無しさん [2008/05/17(土) 10:25:11 ]
質問です。
swingでゲームを作ろうとして勉強しているものです

ゲーム中(ループ中)にJPanelを実装したクラスのコンストラクタでボタンを配置
別スレッドでループ処理する。このときアクティブレンダリングして描画命令
してるのですが、なぜかボタン隠れた状態で更新されてしまいます。
下にコードを書きますので、どなたかご教授ください

185 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:26:43 ]
>>180
「選択肢があるなら、抽象データ型を使え」という指針がある
Listとおけば実装の詳細がより隠蔽される
例えば実装を交換したいという状況になっても、new ArrayList();の部分だけを取り替えてやればいい

・・・・一応、理論上はそういうことになってるようなのだが、
listのスコープが狭い場合はデメリットにしかならんような?使えるメソッド減るし

186 名前:デフォルトの名無しさん [2008/05/17(土) 10:26:48 ]
//必要パッケージをインポート
import java.awt.*;
import javax.swing.*;
/*****************************************
* パネルクラス(中間コンテナ)
*
*****************************************/
class MainPanel extends JPanel implements Runnable{
//パネルサイズ
public static final int WIDTH = 500;
public static final int HEIGHT = 500;
private Thread thread;
//コンストラクタ
public MainPanel(){
//サイズの設定
setPreferredSize(new Dimension(WIDTH,HEIGHT));
thread = new Thread(this);
thread.start();
JButton btn = new JButton("OK");
add(btn);
}



187 名前:デフォルトの名無しさん [2008/05/17(土) 10:28:14 ]
//ゲームループ

public void run(){

while(true){

SwingUtilities.invokeLater(new Runnable() {
public void run() {
gameRender();
paintScreen();
}
});

try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}

}


}



188 名前:デフォルトの名無しさん [2008/05/17(土) 10:29:03 ]
/*** ダブルバッファリング ***/

// ダブルバッファリング用
private Graphics dbg;
private Image dbImage = null;

//バッファにレンタリング
public void gameRender(){

//初回時の呼び出しならばダブルバッファリング用のオブジェクト作成
if(dbImage==null){
//バッファイメージの作成(領域)
dbImage = createImage(WIDTH,HEIGHT);
if(dbImage==null){
System.out.println("no dbimage obj!");
return;
}else{
//バッファイメージに図や画像を書き込むために必要なGraphicsオブジェクトも作っておく
dbg = dbImage.getGraphics();
}

}

//バッファをクリアする
dbg.setColor(Color.WHITE);
dbg.fillRect(0, 0, WIDTH, HEIGHT);

}

189 名前:デフォルトの名無しさん [2008/05/17(土) 10:29:39 ]
//バッファの内容を画面に転写
public void paintScreen(){

try{

Graphics g = getGraphics();
if(g!=null && dbImage!=null){
//バッファイメージを画面に描画
g.drawImage(dbImage,0,0,null);

}

//システムのtoolkitオブジェクトを返し、画面を強制的に更新させる
Toolkit.getDefaultToolkit().sync();

if(g!=null){
//グラフィックオブジェクトの破棄
g.dispose();
}

}catch(Exception e){
e.printStackTrace();
}


}


}

190 名前:デフォルトの名無しさん [2008/05/17(土) 10:33:02 ]
public class MPN extends JFrame{
//コンストラクタ
public MPN(){
//タイトル
setTitle("ウィンドウ");
setResizable(false);
//ContentPaneにパネルを貼り付ける
MainPanel panel = new MainPanel();
Container contentpane = getContentPane();
contentpane.add(panel);
//フレームサイズをパネルに合わせて設定
pack();
}
private static void createFrame(){
MPN game = new MPN();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setLocationRelativeTo(null);
game.setVisible(true);
}
public static void main(String[] args) {

//イベントディスパッチスレッドにフレームを作成させる
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createFrame();
}
});
}
}




191 名前:デフォルトの名無しさん [2008/05/17(土) 10:35:21 ]
上記ソースを投稿したものです。
長くなりすみません。
どうもダブルバッファリングするとボタンがうまく配置しません。

paintComponentメソッドを使った描画処理ではうまくいきました。

192 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:51:46 ]
>>180
trimToSize() も clone() も使う必要ない場合だと、5文字削れてラッキーとか。

メソッド境界以外では抽象型に拘る必要がないってのもわかるけど、
ArrayList と List にも拘るほど違いないから、ぶっちゃけどうでもいい。

193 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:23:53 ]
自分でボタンを描画したいの?
それとも親(JPanel)にボタンを描画させたいの?

194 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:54:22 ]
>>180
俺は、後でプロファイルを取ってListの実装を最適化する予定の時、よくそう書いておく

195 名前:デフォルトの名無しさん [2008/05/17(土) 12:03:04 ]
>>193

JPanelに描画させたいっす。
コンストラクタでやってるように

なのになぜか裏にいってしまうんだああああ!なぜだあああ!

196 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:31:26 ]
dbImageのgraphicsを取得してJButtonのpaintに渡してdbImageにボタンを書き込む
dbImageを描画した後にrepaintして親を再描画させる
適当に考えてみたので見当違いだったらごめん

197 名前:186 [2008/05/17(土) 12:44:26 ]
パネルにボタンを配置したあと
パネル上に描画処理をほどこすと、かぶるものなのでしょうか

ダブルバッファ処理をしないでpaintComponentを使った描画はかさならず描画されました
ダブルバッファ処理は別スレッド処理なのでイベントディスパッチスレッドで
処理させているのですが、そこらへんがおかしいのでしょうか

うむうむ・・・・

198 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:47:16 ]
ダブルバッファリングって書いてあるけど、バッファ1つだけじゃん……

199 名前:186 [2008/05/17(土) 13:07:34 ]
>>188

描画する領域と、描画する前のサブ領域でダブルバッファリングでは?
参考サイトにはそうかいてあった

200 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:17:28 ]
>>199
その参考サイトが間違ってるだけじゃね?
例えば、そのプログラムだと gameRender() と paintScreen() を
マルチスレッドで並列動作させたらチラつくでしょ。
チラつかないようにgameRender() が使う描画用の領域と、
paintScreen() が使う、既に描画完了してる表示用の領域と
二つ持つのがダブルバッファリング。
paintScreen() 相当の処理が十分速ければダブルでいいけど、
遅い場合はトリプルバッファリングが必要になったりする。

まぁ、いまどきは Window#createBufferStrategy() 使えば済む話だから
自前でダブルバッファリングする必要はあんましないはず。



201 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:25:11 ]
JtextAreaに対して入力キー制限したいです
つまり、左右方向キーは入力を受け付けて上下方向キーは無視、のような
ただJtextAreaに直接KeyEentリスナーを加えてもダメみたいだたし
何かいい方法があればご教示下さい

202 名前:201 mailto:sage [2008/05/17(土) 14:26:47 ]
言葉足らずだったので補足します

左右キーでカーソルを左右に移動、上下キーでは何も処理をいない、
というテキストアリアを実現したいと考えています

203 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:34:45 ]
コンポーネントは描画されて表示している部品だから
その上から塗りつぶしたら見えなくなるよ

204 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:41:26 ]
>>201
何が真っ先に呼ばれるんだろう
protected void processKeyEvent(KeyEvent e)かな・・・自信ない
上手くいったら報告プリーズ

205 名前:186 [2008/05/17(土) 14:49:13 ]
>>203

ありがとうございます。
とすると、上のコードではどうなるのでしょうか
私も考えているのですがいまいち・・知識がたらず・・すみません

206 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:53:08 ]
C:\MixIDE-1.4rc6>java -jar MixIDE.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: mix/ide/MixID
E (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

207 名前:206 [2008/05/17(土) 14:57:03 ]
間違って、送信してしまったorz
javaのプログラムをコンパイルしたいのですが・・・

mixide.sourceforge.net/
mixideというプログラムです

jar形式で配布されてるので、それをcmdで実行すると
C:\MixIDE-1.4rc6>java -jar MixIDE.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: mix/ide/MixID
E (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

となってしまいます・・・アドバイスください

208 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:59:46 ]
gameRenderの
dbImage = createImage(WIDTH,HEIGHT);
以降で自身にaddされたコンポーネントを自分で描画する

209 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:07:57 ]
>>201
Keymap 使って、VK_UP や VK_DOWN に何もしない Action を結び付けてみるとか。

TextAction noaction = new TextAction("noaction") { public void actionPerformed(ActionEvent e){} };
textarea.getKeymap().addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), noaction);

210 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:08:49 ]
>>204
本当ありがとう、processKeyEventメソッドを
オーバライドしてやったら上手くいったよ

昨日1日奮闘してダメだったことを30分で解決してくれるとは、、
もっと精進せねば



211 名前:201 mailto:sage [2008/05/17(土) 15:15:27 ]
>>209
Keymapなんて使ったことなかったので勉強になります
この方法でも上手くいきました。ありがとうございます

212 名前:186 [2008/05/17(土) 15:41:54 ]
>>208

なるほどなるほど。
画面に描画するときに一緒に描画するんですね

ボタンのようなコンポーネントの描画に関してちょっと知識不足です
ぱねるにaddすればはりつけられることはわかっているのですが

一緒に描画というところがまだわかりません
自分で調べてみますが、よろしかったらご教授お願いします!

213 名前:180 [2008/05/17(土) 15:50:16 ]
>>182,185
質問に答えていただいてありがとうございます。


214 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:13:01 ]
以下のプログラムで「booleanの結果を戻す必要があります」と
コンパイルエラーがでるんですが、なぜでしょうか??
returnでbooleanを返してるんですが???
tryの外からbooleanを返すとうまくいくのですが、何故なのか理由がよくわかりません。
public boolean DBDelete(int formVal[]) {
try {
Connection con = getConnection();
Statement smt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = smt.executeQuery("SELECT * from kyuuyo WHERE 社員番号="+formVal[1]);
if (rs.next()) {
if (rs.getInt("社員番号")==formVal[1]) {
rs.deleteRow();
return true;
} else {
System.out.println("該当する社員番号がありません");
return false;
}
}
} catch(Exception e) {
e.printStackTrace();
}
}

215 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:21:52 ]
>>214
全てのケースにおいて return するか例外投げるかしないとダメ。

具体的には rs.next() が true にならないケースと、
catch(Exception e) で例外捕捉したケースが漏れてる。
booleanの結果を戻すか、例外投げる必要がある。

216 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:31:00 ]
>>214
SQLインジェクション

217 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:41:21 ]
KeyMapを使うのと、InputMap + ActionMapを使うのはどっちがいいんだろ。
KeyStroke a = KeyStroke.getKeyStroke("ctrl A");
for (InputMap im = t.getInputMap(); im != null; im = im.getParent()) {
im.remove(a);
}
とか。


218 名前:214 mailto:sage [2008/05/17(土) 16:44:04 ]
>>215
あ、catchにもreturn書かないといけないんですね
なるほど!ありがとうございました!!

219 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:05:30 ]
>>218
それはそれでマズイ

220 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:07:28 ]
>>218
if (rs.next()) {
}
//ここじゃね?



221 名前:214 mailto:sage [2008/05/17(土) 17:40:53 ]
>>218
マズいんでしょうか???

222 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:00:52 ]
例外の握りつぶしでググレ

223 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:08:45 ]
>>180
List list = new ArrayList();

は、List としての機能が必要だが、インスタンスを生成するには具象クラスが必要なので
とりあえずArrayList を使ったということ。

すなわち、それ以降は単に List の機能が必要なだけという、
プログラムの書き手から読み手への強い意思表示が含まれている。

これを、半端な知識のマと言ってしまうと、書き手は哀れw

224 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:44:13 ]
>>223
無駄に短いスコープで抽象化するのは俺も反対だな
そもそもListに関して言えば、何も考えずにgetListとか作る方が問題となるわけで。

225 名前:186 [2008/05/17(土) 19:10:01 ]
>>186 のコードのものです

gameRenderの
dbImage = createImage(WIDTH,HEIGHT);
以降で自身にaddされたコンポーネントを自分で描画する

とアドバイスをいただいたのですが、まだ理解できずボタンが隠れてしまします

gameRender内でaddで追加してもだめでした。
どなたかご教授お願いします

226 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:20:40 ]
最初に具象クラスで書いておいて
「お、ここ、List で十分じゃん」と書き換えるのは抽象化って感じだけど、

List でロジック組んでみたけど、その List のインスタンスも生成しなくちゃならない
というような場合は、むしろ具象化って呼ぶのが適当じゃね?
(そもそも、はなっから List でなく ArrayList で考えるような場合がどれだけあるのだろうか)

そのような場合、生成部分は仕方ないけどそれ以外を
わざわざ List から ArrayList へ置き換えてやる必要があるのかどうか。
いくらスコープが狭くても面倒だし

227 名前:デフォルトの名無しさん [2008/05/17(土) 19:21:18 ]
eqlipseのページからEMF build 2.2.0が落とせない
どこか落とせるところ無いですか?

228 名前:227 [2008/05/17(土) 19:36:02 ]
お騒がせしました、できました。

229 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:43:14 ]
button.paint(dbg)

230 名前:186 [2008/05/17(土) 19:47:52 ]
>>229

できました!
感激です!
スキです!



231 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:01:14 ]
rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/252.java

これをコンパイルしようとすると終盤でFigureTypeが見つけられないとでてしまいます
どこを修正・追加すればコンパイル可能になるでしょうか?

232 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:06:42 ]
>>226
むしろ最初からListではなくArrayListで考えれば充分で、Listとして考える必要もないような気がする。

>生成部分は仕方ないけどそれ以外をわざわざ List から ArrayList へ置き換えてやる
宣言と初期化は普通は同時に行うわけで、書き換える必要もないと思うけど?

233 名前:186 [2008/05/17(土) 20:13:31 ]
>>229

ボタン表示ができたのですが、ボタンとしての機能がなくなっていました!
コンストラクタでボタンをADDで貼り付けて、別スレッドでpaintで描画した結果、
addで貼り付けたボタンは結局うしろにいって、paintで描画したボタン(ボタンとしての機能なし)
が画面はじにでるだけでした!
こういうものなのでしょうか?

234 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:57:46 ]
そりゃ下のコンポーネントにボタン置いてその上のコンポーネントにボタンのグラフィック描画しただけだから
クリックしたイベントが伝達されてないだけだと思う。
設計が悪い。

235 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:01:08 ]
ボタンが押されたら押された状態を描画すればいい
バッファイメージを自分で作るってのはそういう事だよ。
ゲームなんだよね?
JButton使わずにパネル上のマウス位置とマウスイベントを拾ってボタンは画像にしたらどうだろう。

236 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:05:05 ]
>>232
それは順序が逆だ。使う側が必要とするのは本来はListという概念を実現している何かであって、その実現手段は知ったこっちゃない。
しかし、Listの実体を生成するためには、具体的なモノを明示的に指定する必要があって、諸々の取捨選択の結果としてArrayListを用いることになるわけだ。
だから、ListでなくArrayListを型として用いるということは、利用側が必要としているのは「Listを実現した何か」ではなく「ArrayListという実装」である、という意志の表明になる。


237 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:06:41 ]
>>232
まあ、どうでもいいんだけど

例えば、本来、ローカル変数で十分なところに(ループのイテレータとか)フィールドを割り当ててて、
 「できることが多いからいいじゃないか」
 「クラスの外からは隠蔽されているからいいじゃないか」
 「最初からフィールド変数で考えれば十分じゃないか」
と言われるくらい気持ち悪い(※)

ましてや、これを、
「イテレータにフィールド変数を使わないのは、半端な知識がマが書いた云々」
とか非難され始めたら、ちょっと一言いいたくなる。

(※)それぞれ、以下から脳内変換
 「ArrayList は List よりメソッドが多いからいいじゃないか」
 「外向けのメソッドをつくる場合に、List にすればいいじゃないか」
 「最初から ArrayList で考えれば十分じゃないか」


>>生成部分は仕方ないけどそれ以外をわざわざ List から ArrayList へ置き換えてやる
>宣言と初期化は普通は同時に行うわけで、書き換える必要もないと思うけど?

考えてみれば、仮引数とかに使うとかしなければ、そうそう必要ないねぇ。
でも、まあ、人間の頭の中では List を操作しているつもりなのに、
プログラムの中では操作している変数は ArrayList である
という剥離は気持ち悪い。プログラムは、人間が読むためのドキュメントであるべきなのだから。

238 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:45:36 ]
>>236
その理論でいくならば、すべてのクラスにおいて具体的なモノとインターフェイスは別々に考えなければならないともとれる。
現実ではListとして考える≒ArrayList、諸所の取捨選択なんてほとんどない。

メソッド内とかクラス内で閉じるものに対して、「使う側」を意識するんか?
実体をつくるのも使うのも自分だろ。
そりゃ外部とのインターフェイスとしてはListが望ましいけどね。

239 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:24:21 ]
まあどっちでもいいと思うのは確か
Listでも構わんし、ArrayListでも気持ち悪くもない。
>232も必要がないとしか言ってないわけでどっちでもいい的立場なんじゃね?

240 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:26:57 ]
>>238
> その理論でいくならば、すべてのクラスにおいて具体的なモノとインターフェイスは別々に考えなければならないともとれる。
ある意味yes. 実装レベルでclassとinterfaceに分離するか否かは、モノの性質、作業工数、管理工数などを考慮して決めるけど。
あと、「使う側」って言うのは「List/ArrayListを使用しているコード」のこと。
それから、「表明」する主語は「コードを書いた人」で、「表明」している先は「そのコードを読むモノ(人だけじゃなくコンパイラも含む)」のこと。
つまり、List でなく ArrayList と書いたなら、そのソースコードを書いた人はそれを読むモノに対して、「ここでは (List ではなく) ArrayList である必要があるのだ」と主張しているのに等しい。



241 名前:177 mailto:sage [2008/05/17(土) 22:46:21 ]
>>181
確かに詳細にいくだけならプライマリキーを渡せばいいのですが、
詳細からまた一覧に戻ってくる際に同じ条件で検索する必要があるので一覧画面が受け取ったパラメータをまるまる渡してやらなければいかんのです…

ユーザインターフェスはformとボタンを使用する事を考えています。
コードとしては

<table>
<% while(ResultSet.next()){ %>
<tr><td>-----テーブル内容-----</td><td><form action="URL" method="POST"><--hiddonいっぱいとsubmit--></form></tr>
<% } %>
というのが思いついてはいるのですが、それだと生成されるレコードごとにhiddonがたくさん書き込まれてしまうなぁと思いまして…bottunタグにパラメータを埋め込めたら便利なんだけどなぁと思っているのですが…


242 名前:177 mailto:sage [2008/05/17(土) 22:47:30 ]
hiddenのスペル間違えてる…お恥ずかしい…

243 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:54:05 ]
>>241
行ごとにformを作るな、ページに1つでいいだろ

どこまでも検索条件を持ちまわすのか?
検索条件が増えたとき困らないか?

なんでもセッションに値を突っ込むのは奨励されないが、2画面以上遷移して値を保持しなければならない場合、セッションに積んだ方がいい。

244 名前:デフォルトの名無しさん [2008/05/17(土) 23:04:57 ]
Webサービスのライブラリって、axis2とJAX-WSのどっちがお勧め?

axis2は今動かして(クライアントだけだけど)とりあえず動いた。
JAX-WSはJDK落とすのがかったるいのでまだ試してないw

ttp://homepage2.nifty.com/igat/igapyon/diary/2008/ig080116.html
の「いろいろ問題」ってーのは具体的にどのあたりなんでしょ?

245 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:09:08 ]
List と ArrayList だとわかりにくいかもしれないけど、
Map と Hashmap では、体感しやすい経験があった。

最初のソース:
マスタ取得部品みたいなクラスがあって、
Hashmap map = new Hashmap();
で定義されていて、この map オブジェクトを外部からさわれるようになっている。
当然、呼び側からは Hashmap 型でアクセスしていた。

後日、Map の一覧をソートされた状態で表示する必要が発生し、Treemap に変えたくなった。
けれども呼び側では、すべて Hashmap にしているため、呼び側を、結局 Map で
取得するよう、すべて書き換えた。

部品側は、Map map = new Treemap();
にしておしまい。

こういうことがあると、呼び出し側ではインターフェースで取得すべきと思うようになった。
List においても、後日データ量が増えた、チューニングの問題で、ArrayList から LinkedList に変えたくなった
ときに、呼び出し側は List にしておけば、部品側だけの修正ですむと思うのだけど。


246 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:09:29 ]
いがぴょんに聞けば良いじゃん。

ま、現状だと資料とか実装例とか豊富なaxis2でいいと思う。
チャレンジャーならばJAX-WS使ってみれば?

247 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:12:59 ]
>245
問題は「当然、呼び側からは HashMap 型でアクセスしていた」ところ

248 名前:244 [2008/05/17(土) 23:19:44 ]
>>246
おお、もうお返事がw
了解、さしあたりaxis2でもう少し掘り下げてみる。

いや、axis(1)のような、Wikipediaにまで載ってる明らかなダメがあるのかと思ってねw
>JAX-WS
ttp://ja.wikipedia.org/wiki/Apache_Axis

249 名前:245 mailto:sage [2008/05/17(土) 23:20:49 ]
>>247
その部品は、以下のようなメソッドが外部向けに定義されていた。

public Hashmap getMasterMap() { }

たしかにこのままでも、呼び側は Map map = HogeUtil.getMasterMap();
すればよかったんだけど、Javadoc に返却値の型が Hashmap と書かれていたので、
みんな Hashmap 型で取得していたよ。

250 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:25:23 ]
ちげーよw
× public HashMap getMasterMap() { }
○ public Map getMasterMap() { }
あとHashMapだよ、Hashmapはないわ



251 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:27:28 ]
>>244
xfire ( xfire.codehaus.org/ )
あるいは、後継の
CXF ( cxf.apache.org/ )

はどうだい?

xfire は使ってたけど、POJO を WebService 化するのがすごく楽だった。
(コード修正なし、xml 書くだけ)

まぁいまどきのデファクトという意味では、Axis2 でしょう。

252 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:37:28 ]
>>243
ページに一つでformにしたいんですが、複数のSubmitを作ったら全部のHiddenを渡してしまうのが…というのが悩みでして。
submitを押したときに特定のパラメータを渡す動作をsubmitの中に書ければいいのですが…

検索条件は検索結果と詳細の間だけで持ちまわす物です。

253 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:42:34 ]
普通は悩まない

254 名前:170 mailto:sage [2008/05/17(土) 23:49:21 ]
>>174-175
レスどうもありがとうございます。
より詳しく理解できました(とくに >>175 の前半)

いま、マルチスレッドとパフォーマンスについて勉強していて、
(Map のほうが今の仕事に必要なのですが、>>170 は、わかりやすくするために List で質問しました)

Hashtable - Hashmap - ConcurentHashMap
にたどりつきました。

CopyOnWriteArrayList も、同じ java.util.concurrent パッケージですが、
copyOnWriteArrayList の javadoc をみると、ArrayList のスレッドセーフなもの、とあります。

なんで CopyOn・・・なのかわからない。
CopyOnWriteArrayList は、変更時にコピーを作るとあるが、ふつうの ArrayList は、
そうじゃないときにもコピーを作るということ?
また、なぜ「変更時にコピーを作る」がスレッドセーフに寄与するのか?

255 名前:デフォルトの名無しさん [2008/05/17(土) 23:51:14 ]
やさしいJavaの本理解したら、会社で通用する?

256 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:51:46 ]
>>252
JavaScript使って問題ないなら、
・必要なパラメータはhiddenで1組分だけ用意する。
・submitボタンは使わない。
・onClickハンドラで、hiddenのパラメータを書き換えてsubmit。


257 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:52:16 ]
やさしいJavaの本理解したら、会社で通用しないことが理解できる

258 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:58:34 ]
>>256
なるほど、
<Button onClick="">をwhileの中に入れて、JavaScriptの関数の中でhiddenを書き換えて渡せばいいということですね。
関数の引数で書き換えるデータは渡せそうだし、あとはhiddenの書き換えをどう実現するかですね。もしくは関数の中でパラメータを渡す処理をしても同じ動作いけそうです。

この路線で調べながらやってみます。ありがとうございました。

259 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:07:00 ]
>>254
普通のArrayListは、サイズがキャパシティよりも増えるときにしかコピーはしない。
同じ配列を操作するので、複数のスレッドから同時にアクセスすると危険。

CopyOnWriteArrayListは、いかなる変更操作を行うときも元の配列のコピーを作ってそっちを操作し、最後に参照先を指し替える。
元の配列は決していじらずに捨て置くので、iteratorは変更操作に影響されず古いものを参照し続けることができるし、getなどの取得操作も影響を受けない。
変更操作同士は衝突することになるが、参照先の指し替えをAtomicReference#compareAndSetで実行し、失敗したら最初から(コピーを作るところから)やり直す、という方法でスレッドセーフを実現している。

260 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:14:05 ]
>>254
てか、その辺のクラスでスレッドセーフを保証するよりも、Mapを持つクラスを作ってそのクラスが同期制御を管理する方が良い。

どんだけ排他制御が利いたMapにしたところで、Mapの参照を公開してしまうと一気に制御が難しくなる。
逆にHashMapでもあるクラスから外に参照を渡さず、HashMapにアクセスする公開メソッドの同期とれば良い。
並行処理の話ならば新APIの件もあるから、Java並行処理プログラミングって本を読むと良いよ。



261 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:48:55 ]
Win98SEでjavaの勉強をしてるんだけど、コマンドプロンプトをもっと簡単に入力できるようにする設定方法を教えて
会社のPCだと「↑」キーで今まで入力したコマンドやファイル名を20個ぐらい出せるのに、家のPCだと会社と同じWin98SEなのにできない
「→」キーを押したら直前の入力だけなぞれるけど不便過ぎて困ってる

262 名前:170 mailto:sage [2008/05/18(日) 00:51:41 ]
レスどうもありがとうございます。
>>259 なるほど、 CopyOnWriteArrayList の仕組みとメリットが理解できました。
ということは、あるスレッド(A)が CopyOnWriteArrayList#iterator で
iteratorを取得し、それをずーっと保持するとしたら、別スレッド(B)が add() しても、
スレッド(A)が保持する iterator の中身は、スレッド(B)が add() する前の List の内容の
参照を持っているわけですね。なんか DB の分離レベルの話みたいだな。

>>260
Map ですが、実際の現場では Map オブジェクトをそのまま外部にさらすことは無いと思いますが、
(map = null で消されたらお終いだし)
・ラップするクラスを作り、map は private にする
・ラップするクラスには、put と get のメソッドを作る

このとき、map の実装を
・Hashtable にすると、get もロックがかかるので、
・HashMap にしておき、ラッパクラスの put メソッドは、内部で synchronized (myMap) { } ブロックで囲み、
 get メソッドは synchronized をつけなければ、取得時の同時並行性は確保できると思いました。
・でもこの場合、Map の実装を ConcurrentHashMap にして、put メソッドの synchronized を
 はずしても同じなのでは、と考えました。

多分その先は Java並行処理プログラミング を読め、って感じだと思うので、読んでみる事にします。
新APIとは、J2SE5 で導入された、java.util.concurrent.* のことですか?

263 名前:261 mailto:sage [2008/05/18(日) 01:21:29 ]
doskeyで自己解決できた
下らない質問すんませんでした

264 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:32:46 ]
>>260
>・ラップするクラスには、put と get のメソッドを作る 

putとgetだけを提供する場合、

>if ( list.contains(x) == false ) list.add(x); 

のような問題は相変わらず回避できないことに注意。
まぁ用途次第かもしれないので、わかってればかまわない。

>・HashMap にしておき、ラッパクラスの put メソッドは、内部で synchronized (myMap) { } ブロックで囲み、 
>get メソッドは synchronized をつけなければ、取得時の同時並行性は確保できると思いました。

それはだめ。
変更(put)中のデータを参照(get)すると不正な結果を得たり死んだりする可能性がある。
もっと不可解なことが起きる可能性もあるけど、詳細は件の本でも読んでください。
要するにgetにもsynchronizedは必要。

同期の対象がMap1個で済む状況なら、ConcurrentHashMapは便利。
2個以上のMapを同時に更新しなければならない場合とかには無力。

265 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:39:06 ]
>>262
やっぱり理解不足。
putもgetもsynchronized (myMap) { } にしておく、が正解。
getだからといってつけないと、痛い目にあう(ヒント:Atomic性)

>Map の実装を ConcurrentHashMap にする
正しいといえば正しい。
だけど、並行処理で品質を高めるには1箇所で必要最低限の同期を取るのがポイント。

例えばMapとなにか別の要素もあわせて同期を取りたいとする。
すると、Mapで同期をとってさらにラップクラスで同期を調整して・・・と複雑になる。
そんな場合は同期を取るクラスは1箇所にしたほうが楽。
また、全てのメソッドを同期を取る必要があるか?という点も重要。

とはいえ、そのような要素がなければ簡単に実現できるConcurrentHashMap を使うのは正しい(シンプルこそ正義)。


予断だが、外部にさらしてもmap = null では何の影響もないぞw
map.clear() 等はマズイのでオシマイには変わらないけど。

266 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:40:37 ]
もろに被ったな、読み比べて補完してくれw

267 名前:170 mailto:sage [2008/05/18(日) 01:51:25 ]
>>264-265
レスどうもありがとうございます。

理解したつもりが理解不足といわれて&レスの内容をみて、自分のレベルの低さを実感しました。

>>264 で、put だけを synchronized にしても、
ラッパクラスで contains() も提供した場合、contains() と put は同期化されないことを理解しました。

あと、get と put の atomic 性というのも理解しました(つもりです)

>>265 さんの、ロック処理はシンプルに、というのも、以前不必要に synchronized をつけまくって
パフォーマンスを落としたことがあるので実感したことがあります。
どこを同期化して、どこは不要化、というのが大切ですね。

今回の複数の Map をスレッドセーフに更新するというのは、DB の複数テーブルを更新する際に
どこからどこまでを transaction にするか、と似ています(マルチスレッドと同期化、とは違うけど)

もっと勉強します。



268 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 02:30:55 ]
>>267
>以前不必要に synchronized をつけまくってパフォーマンスを落としたことが

Java 6 からVMの改良でsynchronized自体のパフォーマンスが上がってるので、
もしかしたら許容範囲になってるかもしれない (なってないかもしれない)。
不必要なsynchronizedを付けないに越したことはないけれど、
必要なsynchronizedを付け忘れてバグるよりはマシ、と思う。
synchronizedを外す (あるいは付けずに済まそうと企む) ときは、慎重に。

269 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 06:19:04 ]
get で重要なのは(まあどっちも重要だが)原子性より可視性だろ。
VMの最適化で、まだ変数に入れてない値が既に他のスレッドから見えるとか、
そんな奇妙なことが起こりうる。

同期化によるパフォーマンスの劣化は、スレッド間の競合が起こる場合に著しい。
競合で生じるコンテキストスイッチのオーバヘッドは大きく
その場でオブジェクト100個作ってもお釣りが来る。
synchronized 自身は、それほど重くはない。

「Java並行処理プログラミング」は誤訳が酷いね。訳本はみんなそうなのかもしれないけど。
特に最後の happens-before の説明、なんじゃありゃ?
半順序を定義しているだけなのに、ご丁寧に余計な脳内補完をしてる。
意味の通じないロジックや日本語が書いてあったら、無視するか原本を見た方がいい。
英語ができるなら、原本を読んだ方がいいのは言うにあらず


270 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:43:02 ]
> 英語ができるなら、原本を読んだ方がいいのは言うにあらず

最後の一文が……



271 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:00:20 ]
翻訳が〜ってのは解らないでもないが、英語が読めてもスラスラと読める人間は少ないわけで。
非難するならお前が翻訳しろと。

272 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:57:09 ]
いや、普通の感想だろw
金出して買ったものが酷いもんだったら文句いう権利はある。

273 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 12:09:23 ]
>>267
もう辿り着いているかもしれないが、
スレッドセーフ性は「スレッドセーフか否か」と簡単に定義できるものじゃない。

Javaの理論と実践: スレッド・セーフの特性について
www.ibm.com/developerworks/jp/java/library/j-jtp09263/index.html
(ただいまメンテナンス中)


274 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:05:21 ]
Rubyで書かれたクラスを利用したいのですが、どうしたらよいでしょうか?

275 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:07:57 ]
>>274
っ JRuby

276 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:22:28 ]
JRubyの存在をすっかり忘れてました
とりあえずはなんとかなりそうです
ありがとうございました

277 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:32:59 ]
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/254.java

このプログラムでどうしても線の描写だけ始点、挙動がおかしくなります
どこを変更すれば他の図形と同様にクリックした箇所を始点、ドラッグして話した場所を終点の線の描写になるでしょうか?

278 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:42:25 ]
>>277
API docs をちゃんと読んでください。特に java.awt.Graphics を。

279 名前:170 mailto:sage [2008/05/19(月) 02:20:36 ]
>>268-273
レスどうもありがとうございます。
>>273 の URL とか、「Java並行処理プログラミング」を呼んで勉強します。

これまでのいただいた情報を理解するのに精一杯で、しばらくここに質問をする
ことはないと思いますが、ひとまずお礼させていただきます。

280 名前:デフォルトの名無しさん [2008/05/19(月) 07:51:52 ]
JAVAを勉強中の者です。
GUIを使ったサンプルコードで、
final JLabel label=new JLabel("");
というようにlabelやTextFieldにfinalとついているものがありました。
このfinalというのはどういう意味合いでくっついているんでしょうか?
フィールドにfinalが付いている場合は「変更できない」ということですよね。
私が見たサンプルコードだとfinalのついたlabelやTextFieldは表示内容を変更したりしているので、
「変更できない」というのとは違う意味でくっついてるのかなと思ったのですが・・・





281 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 07:55:44 ]
>>280
final ついてたら単に再代入不可能なだけ。
Mutableなオブジェクトなら状態は変更できる。

282 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 08:59:30 ]
>>280
final の上書き(再代入)はコンパイルエラーになるので、コーディングミスを減らせる。
メソッド引数やローカル変数にも適用でき、上書き禁止を明示することができる。
クラスやメソッドに適用しても、上書き禁止(継承禁止)の意味になる。

メソッド内で生成したクラスからの参照を保証する為に、当該ローカル変数を final にすることも。

283 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 11:38:06 ]
ぐち。
クラスをfinalにするとユニットテストが書きにくくて困る。


284 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 12:55:11 ]
そりゃそうだろうな

285 名前:デフォルトの名無しさん [2008/05/19(月) 13:11:07 ]
javaで作るゲームの本に、vistaでゲームを作るとき1/60秒に一回書き換える
ループを作ると誤差がでるから1/10秒で書き換えなさいとか書いてあるけど
1/10秒はカクカクして嫌なので、誤差を出ないように1/60秒で書き換えたいのです。
それなので、そのループを教えてください。

286 名前:280 mailto:sage [2008/05/19(月) 13:11:24 ]
>>281-283
レスありがとうございます。
代入と状態の変更をごっちゃにしてしまっていたということなんですね。
すっきりしました!
どうもありがとうございました。


287 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:09:58 ]
>>285は釣られていい餌?

288 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:04:35 ]
腹が減っていたらどうぞ

289 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:54:09 ]
すみません。質問させてください。
コマンドプロンプト上でjavaファイルをコンパイルしようとしても
pathが通っていないらしく、処理ができません。
今設定しているpathを書かせていただきますので、
どなたかご教授下さい。お願いします。
pathです

C:\WINDOWS\system32;
C:\WINDOWS;
C:WINDOWS\System32\Wbem;
C:Program Files\pcdNavi\bin;
C:\Program Files\Common Files\Roxio Shared\DLLShared\;
C:\Program Files\Softex\OmniPass;
C:\Program Files\Fujitsu\sadata\fsaax;
C:\j2re1.4.2_17\bin

ちなみにローカルディスクCのProgram FilesのJavaの中に
jre1.6.0_05フォルダがあり、そのbinフォルダにもjava.exeが入っているのですが・・・。
これは何か関係あるのでしょうか?


290 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:12:10 ]
JRE=j2re1.4.2_17=jre1.6.0_05=実行
JDK=コンパイル+実行



291 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:39:27 ]
>>289
んむ。>>290の言うようにJDKへのパス通せ。
つかそういうJava以前のことは初心者用の本とかサイトに書いてないか?

292 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:42:25 ]
テンプレに誘導が書いてある

293 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:35:12 ]
すみません、質問お願いします。
今、JAVAの勉強でサーバとクライアントのプログラムを作っていて(クライアントからコマンドを送り、コマンドに応じてサーバから答えを返すプログラム)、
その中でサーバーから送られた文字列をクライアント側で表示する部分がどうしてもうまくいかず、原因がわからず困っています。
下記がおおまかなコードです(はしょりまくってますが)
・サーバ側
ServerSocket ss;
Socket s;
PrintWriter out;
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
out = new PrintWriter(s.getOutputStream(),true);
for(;;){
<ここにコマンドを受け取ってそれに応じた文字列を返すコードが入ります>
(例) out.println("aaaa\nbbbb\ncccc");
}


294 名前:デフォルトの名無しさん [2008/05/20(火) 12:35:33 ]
javaアプリのmainの変わりにjavaappletのinitにしても
appleが動きませんでした
どうしたら動くのか教えてください

295 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:35:41 ]

・クライアント側
Socket s;
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
〜〜〜〜〜〜〜〜〜〜〜〜〜
for(;;){
<ここにコマンドを入力してサーバへ送るコードが入ります>
String message;
while((message = in.readLine()) != null){
System.out.println(message);
}
}

クライアント側の、while文がうまくいかないみたいなんです。どうもnullになったら抜けるというのがだめみたいで、
例えば送られてくる文字列を2行にしておいてwhile文の条件を2回繰り返すというようにするときちんと文字列が2行出るのですが、
それを任意の行数にしたくて「 != null 」という条件にすると全部の行を表示した後になぜかクライアントが落ちてしまうのです。
質問がわかりにくかったらごめんなさい、何かわかる方がいましたら教えていただけないでしょうか。




296 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:41:08 ]
>>295
落ちてしまうって何か例外でも出てるの?
それ捕まえてスタックトレース表示してみれば?

297 名前:295 mailto:sage [2008/05/20(火) 12:51:01 ]
>>296
コマンドプロンプトでやってるんですが、落ちるっていうか全部の行を表示した後に何も表示されなくなるんです。
適当にキーを押しても一切反応せず、でもCtl-Cで終了すると何も表示されなくなったあとに入力したキーを実行しようとした形跡がバーッと表示されるんです。
・・・すみません、わかりにくいですね。こんな感じです。

C:\>java aaa
command : bbb
>>"ccc"
>>"ddd"

ここで本来なら再度command : と出るはずなのですがそれが出ず、ここで適当に「a」とか入力しても何も起こらず、
Ctl-Cを押すと

C:\>a
'a'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。

c:\>

となるんです。








298 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:55:12 ]
>>297
readLineで次のデータが送られてくるのをずっと待ってるだけでは?
サーバ側でSocketをcloseするかshutdownOutputすれば通信終了(EOF)になるのでreadLineがnullを返すはず

299 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:02:33 ]
ちなみに
while ((message = in.readLine()) != null)
でループするということはストリームが閉じられるまで繰り返すとい
うことだから、このwhileを抜けるともうinから読むことはできない。

コマンド-レスポンスを繰り返したいなら、このwhileでメッセージの終
了判定はできないよ。



300 名前:デフォルトの名無しさん [2008/05/20(火) 13:13:07 ]
javaアプリのmainの変わりにjavaappletのinitにしても
appleが動きませんでした
どうしたら動くのか教えてください



301 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:16:14 ]
javaアプリのmainの変わりにjavaappletのinitにしても
りんごが動くわけありません
りんごは手で持って動かしてください

302 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:16:53 ]
>>300
具体的に何をどう変更したのか書きなさい。
リンゴが動かないとは何なのか。


303 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:18:58 ]
www.hellohiro.com/socket.htm

304 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:19:26 ]
万有引力が働かない異世界だからです

305 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:20:37 ]
javaアプリのmainの変わりにjavaappletのinitにしても
appletが動きませんでした
どうしたら動くのか教えてください

306 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:27:07 ]
>>305
アプリとアプレットは別物なので、mainをinitに変えただけで動くわけはない
アプレットとして動くように作られていないのなら、アプレットとして動くように最初から作り直す必要があるかもしれない

307 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:29:04 ]
>>300
アプレットをアプリケーションとして動作させたいってことなら
initはあくまでも初期化処理のみ
メインの動作はstartで行うようにオーバーライドされていることが多いので
インスタンスの生成→コンテナに追加→initによる初期化→コンテナの可視化→startで開始
の順で行う

308 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:32:50 ]
ああ逆か
mainをinitに名前を変えてアプレットとして動作させようとしているのか
無茶な

309 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 16:05:00 ]
おまえらそんな餌に食いつくなよ

310 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:24:38 ]
アプリもアプレットも分からん人間には食いつきようもない餌だもんな。



311 名前:デフォルトの名無しさん [2008/05/20(火) 19:29:22 ]
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77fcd989, pid=1392, tid=2524
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x4d989]
#
# If you would like to submit a bug report, please visit:
# java.sun.com/webapps/bugreport/crash.jsp
#

何これ

312 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:31:30 ]
JVMのクラッシュ

313 名前:デフォルトの名無しさん [2008/05/20(火) 19:38:45 ]
設計根本的に変えたほうがいいのかしら

314 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:01:41 ]
マンガlovemakeの画像ってどうしたらコピーできますか?

315 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:49:29 ]
Javaのデスクトップアプリでデータをローカルで持ちたいとき、
Windowsアプリで言うリソースみたいなかたちで埋め込むにはどうしたらいいの?


316 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:59:03 ]
>>315
リソースファイルで埋め込めばいいよ

317 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:26:46 ]
>>293
>質問お願いします。
いや、質問してるのは君だから。
「回答お願いします」か「質問させて下さい」だろ。

318 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:58:43 ]
main(String[] args){
try{
HashMap<String , String> hashMap = new HashMap<String , String>();
putData(hashMap);
System.out.println("HashMap(bb) : " + hashMap.get("bb"));
System.out.println("HashMap : " + hashMap);
}
catch(Exception e){
e.printStackTrace();
}
static void putData(Map<String , String>map){
map.put("da" , "Five");
map.put("db" , "Four");
map.put("bb" , "Three");
map.put("bc" , "Two");
map.put("aa" , "One");
}
}
これの実行結果が
HashMap(bb) :Three
HashMap :{db=Four, da=Five, aa=One, bb=Three,bc=Two}
こんな感じになるんですが、これと同じように出力されるプログラムをHashSetで書くことはできますか?
もちろん、HashMapなので出力した際の順序まで一緒には出来ないのはいいんdねすが

319 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:12:25 ]
>318
DataEntry(String, String) というコンストラクタを持つクラスでも作って頑張ってください。

320 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:07:02 ]
HashSet クラスには get だの put だのいうメソッドはないから無理。



321 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 07:09:50 ]
HP-UXで稼動するWebシステムの保守を担当することになり
Java未経験ながらいきなり画面の追加をやらされることになりました。
(Webサーバ:SunOneでアプリサーバ:WebOTX、DB:Oracleです)

Javaは過去に勉強したこともありJavaDocなど使えば、何とかソースは読めるのですが、
ソースを格納するディレクトリの構成がイマイチよくわかりません。
なぜこのファイルはここのディレクトリに入れるのか?
とか、
このディレクトリに入れなければならないってのはどこで定義づけられているの?
というようなことです。

ソースの読み方のような入門書じゃなくて、
Webサーバのディレクトリ構成などJavaでのサーバ構築についての
書籍やアドバイスがあれば教えていただきたく。
「UNIXでJava使ってサーバ立てるならこれは基本書だろ!」
というようなものがあれば、ぜひ読んでみたいのですが。

322 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 07:34:32 ]
そんなんプロジェクト毎のルールだろ?
仕様書嫁よ。

323 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:51:11 ]
WEB-INFとかマニフェストファイルのことじゃないの?
いままでの開発をどうやってたのか知らないけど、
最近のIDEとかだと配備までやってくれるよ

324 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:56:55 ]
アプリケーションサーバのマニュアルを読め、で済む話。


325 名前:デフォルトの名無しさん [2008/05/21(水) 14:15:58 ]
特定の文字列が、作成可能な『ファイル』を示しているかどうかを判定するにはどうすればいいでしょう?
……いえ、以下のようなコードを書いてみたんですが、「a:\backup\」がtrueになるんですよ。

public boolean check(String fileName){
File tempFile = new File(fileName);
try{
tempFile.createNewFile();
if(tempFile.exists() == false || tempFile.isFile() == false){
return false;
}
tempFile.delete();
return true;
}catch (IOException e){
return false;
}
}

EclipseのデバッガでcreateNewFileまでで止めてみると、tempFileの中身は「a:\backup」として表示されています。
どうやら最後のパス区切りは無視されてるようなふいんき(……素でtypoした(汗))です。
これは「文字列の最後の一文字がパス区切りではないこと」で判定するしかないのかな?

326 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:22:28 ]
>特定の文字列が、作成可能な『ファイル』を示しているかどうか
イミフ。ファイル名の事?
OS依存。
それとも任意のファイル名でファイルが作成できるかって事?
OS依存。


327 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:49:11 ]
>>325
javadoc で createNewFile を確認しましたか?(特に戻り値を)
File は単純ではないクラスですし、扱い方自体を確認した方が良いと思います。

328 名前:  mailto:sage [2008/05/21(水) 18:43:41 ]
パソコン買おうかと思ってるんだけど、QuadのCPU買ってマルチスレッドのプログラミングをJavaで組んだら
WindowsXPでもマルチコアに対応したプログラムになってくれるんですか?

329 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:50:29 ]
javaのマルチCPU(コア)対応って具体的にはどこら辺まで対応してるんだろうね。

330 名前:325 mailto:sage [2008/05/21(水) 20:25:07 ]
>>326
失礼しました。つまり「a:\backup\」と指定されたら「backup\なんて名前のファイルは作れない。\はファイル名には使えないし、ディレクトリ名じゃなくファイル名を指定しろ」というチェックをしたかったのですよ。
>>325のコードにすれば、ファイル名に使える文字だけが含まれているかと「実際に書き込めるか」が一緒にチェックできると思ったのですが。
最後の「\」を無視して「a:\backup」と「a:\backup\」を等価に扱ってしまうのは、Javaの(WindowsのOS依存の部分の)仕様なのでしょうか?

>>327
はい、trueなら作成成功、falseが帰ってきたら既に存在する、ということですよね?
既に存在する場合の処理はもう少し詰める必要があると思いますが(canWriteを使えばいいかな?)、まずはファイル名の問題をお聞きしようと思い、あのようなコードにした次第です。
ステップ実行をさせると(>>325で書いたとおり)createNewFileの後にa:\backupが作られてしまっているのです。
これは(デバッガの表示どおり) new Fileした時点で最後の「\」を無視して「a:\backup」としてFileのインスタンスが作られてしまっている、ということではないのでしょうか?
ちなみに、他の不正な文字(backup*など)を指定すると、意図したとおりにIOExceptionで落ちるようです。



331 名前:325 mailto:sage [2008/05/21(水) 20:31:51 ]
……失礼。
書き込んだ直後に気が付いたのですが、Fileの仕組みだと、「a:\backup」と「a:\backup\」を等価に扱ってもかまわないのですね。
Fileが扱うのはあくまでパスであり、(まだ存在しない場合)そのパスがディレクトリを示すのかファイルを示すのかは、mkDirするかcreateFileするかによって(後で)分かれる。
よって両者は区別する必要は無いので、「a:\backup」と「a:\backup\」は等価に扱ってよい、という理解でかまわないでしょうか?

332 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:20:02 ]
>>328
ちゃんとスレッドを使えばそうなる

333 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:24:12 ]
Point型に文字を四つ格納したいんだけどどうすればいいの?

334 名前:デフォルトの名無しさん [2008/05/21(水) 22:49:35 ]
質問です。
JScrollPane を使って、エクセルのように動的にサイズを変えるようにしたいんですけど
どうしたらいいでしょう?

JScrollPane のスクロールバーが端の状態で左右のボタンを押したら
自動でサイズが拡張する感じです。

JScrollPane つかうと無理なんでしょうか?

335 名前:334 [2008/05/21(水) 23:10:21 ]
JScrollPane から JScrollBar とってこれるんですね。
でも、JScrollBar のノブが端にあるときにボタンを押しても
AdjustmentEvent は投げないみたいなんで、だめそうですね・・・

336 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:26:21 ]
>>328
なる。

337 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:16:05 ]
すみませんアノテーションについての質問です

クラスとかフィールドとかメソッドにつけたアノテーションは
リフレクション使って取り出すのはわかったのですが
ローカル変数につけたアノテーションの取得方法がわかりません
ご存知の方お教えください、お願いします


338 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:34:19 ]
無理っす

339 名前:デフォルトの名無しさん [2008/05/22(木) 01:51:31 ]
javaからMySQLに接続し、任意のテーブルの列数を取得したいのですが
PHPみたいにmysql_num_rows()みたいなメソッドはありますか?
javadocのjava.sql.*の項を参照したのですが見つからなかったので。

340 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:54:40 ]
select countすれば?




341 名前:339 [2008/05/22(木) 02:01:19 ]
>>340
javaでってことに考え過ぎてそっちの方をすっかり考えてませんでした
試してみます。ありがとうございました。

342 名前:  mailto:sage [2008/05/22(木) 04:41:06 ]
>>332 >>336
どうもありがとう。


343 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:41:01 ]

ttp://mainichi.jp/enta/geinou/graph/200805/21/?inb=yt
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。



▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
https://www.click-sec.com/corp/guide/demo/
ttp://www.yomiuri.co.jp/komachi/news/mixnews/20080521ok02.htm


▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

344 名前:デフォルトの名無しさん [2008/05/22(木) 14:52:37 ]
おい、おまえら。俺様が、Java入門者向けに環境変数自動設定ツール作ってやったんだけど、
Vectorにうpしようか迷ってる。まんどくさいんだけど、うぷしたらダウソする人いるかな?

345 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:01:25 ]
入門者に自動で設定させんな

346 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:34:46 ]
ていうか作らなくても既にそういうバッチがあった気がする。

347 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:53:15 ]
っていうかNetBeansとか入れれば環境変数なんて
設定しなくていいし

348 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:48:59 ]
JSPでDecimalFormatを使うために下のような指定を行い、
<%@ page import="java.lang.Object.*" %>

下記を書いたのですが、下のようなエラーになってしまいます。

DecimalFormat form = new DecimalFormat();
form.applyPattern("#,###");
int i1 = 20000;
out.println(form.format(i1));


DecimalFormat cannot be resolved to a type

どなたか解決策を教えていただけないでしょうか。
もしかしてインポートするクラスが間違ってたりするのでしょうか?

349 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:51:33 ]
お騒がせしました、、import java.text.*;で行けましたorz

350 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:34:10 ]
java のプロファイラで、「今はこれを使うのがベスト」ってなんだろう。
お勧めがあれば教えてください。

自分がググって見つけたこと
・Eclipse プロファイラプラグインは、開発が止まっていて Eclipse 3.3 に対応していないと聞いた。
・Eclipse TPTP のプロファイラは、重すぎてうんこ というのを ぐぐると見かける。
・NetBeans 6.1 のプロファイラがいいらしい。

IDE 統合型でない場合は、HPjmeter があるが(これはつかったことがある)、
これくらいでしょうか。




351 名前:デフォルトの名無しさん [2008/05/23(金) 00:16:20 ]
インターフェースを実装したクラスのメソッドに継承もとのコメントを転写したいのですが
何か簡単な方法はないでしょうか?

352 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:52:36 ]
Ctrl+C V

353 名前:デフォルトの名無しさん [2008/05/23(金) 00:54:32 ]
>>352
何個もあるのでツールとか使って1回でさくっとできる方法でお願いします。

354 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:52:05 ]
コピペは最も代表的なアンチパターン

355 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 03:24:50 ]
>351
何も書かないこと。Eclipse3.3.2 は確認。
どうしてもコメントを書きたいなら、javadocに察知されないように気をつけて。

そういうことではない?

356 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:02:47 ]
前スレで20桁以上の計算をしたいと相談したとき、BigDecimalやBigIntegerを使うようにアドバイスをいただいた者です。
今度はiアプリで20桁以上の整数の計算をしたいのですがどういう風にすればいいでしょうか?
ググってみるとDoJaではBigIntegerが使えないという記述を見つけたので相談しました。
よろしくお願いします。

357 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:52:02 ]
自分で実装するしか

358 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:02:17 ]
>>356
BigIntegerのソースそのまま使うとかw

359 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:05:33 ]
そしてGPLに感染、と。

360 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:58:29 ]
OpenJDKはクラスパス例外付きだろPhoneMEがクラスパス例外なしだ。



361 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:22:37 ]
java.mathパッケージのままだとライセンス上問題でるだろうし
パッケージ改変したり部分的にパクった場合はクラスパス例外適用されんだろ。

362 名前:デフォルトの名無しさん [2008/05/23(金) 16:24:29 ]
とっても基本的なことなんだが、
なんで

int i=2;
String k;
String l;
k="a8";
l="a" + i;

とすると、なんで、k!=lになるんでしょう。

363 名前:デフォルトの名無しさん [2008/05/23(金) 16:25:32 ]
間違えた。

int i=2;
String k;
String l;
k="a2";
l="a" + i;

こちらです。
よろしくお願いいたします。

364 名前:デフォルトの名無しさん [2008/05/23(金) 16:25:59 ]
間違えた。

int i=2;
String k;
String l;
k="a2";
l="a" + i;

こちらです。
よろしくお願いいたします。

365 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:28:14 ]
この違いを勉強しろ
k.equals( l ) → true
k == l →false

366 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:29:31 ]
>>363
>>1

367 名前:デフォルトの名無しさん [2008/05/23(金) 16:29:39 ]
ちなみに、こちらだと、str1==str2になり、ほかは等しくなりません。
2=3なら気持ちが分からんでもないけど・・・

String str1 = "aaa1";
String str2 = "aaa" + 1;
String str3 = "aaa" + String.valueOf(1);

if (str1==str2){System.out.println("str1=str2");}
if (str1==str3){System.out.println("str1=str3");}
if (str3==str2){System.out.println("str3=str2");}

368 名前:デフォルトの名無しさん [2008/05/23(金) 16:34:18 ]
初心者の質問なんですけど
2次配列に値を入れたいのですが、

例えば・・・

int a[][] = new int[10][10];
a[][] ={ {1,1,0,1,1,1,1,2,1,1},
{1,3,1,1,1,4,1,1,1,1},
{7,1,1,5,1,1,1,6,1,1},



{ } };

こんな感じで
要素の殆ど同じ数が占めている
データを2次配列に入れたいんです。

どうやったら綺麗に力技じゃなく入力できますか?

369 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:36:00 ]
数字に規則性があるならできるけど、それ以外はしらね

370 名前:デフォルトの名無しさん [2008/05/23(金) 16:36:42 ]
>>365-366
ありがとうございます。
勉強したが、やはり、>>367が理解できん。
リテラル値をそのまんま突っ込んでいるから実体に反映されてるんかなぁ。



371 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:37:07 ]
>>367
javac様はコンパイル中に「"aaa" + 1」を見て「両方とも定数だからい
ま1つの文字列にしちゃおう」と考える。「"aaa" + String.valueOf(1)」
は「なんか関数呼び出しがあるからコンパイル時にはどうしようもない
よね」と考える。


372 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:38:34 ]
>>370
定数式とかString#intern()でぐぐれ。

373 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:43:06 ]
>367
定数としてコンパイル可能な String のうち、同値になるものが同じインスタンスとされてるだけ。
>363 の例なら、int i=2 を final int i=2 とすれば、k==l は true となる。

374 名前:デフォルトの名無しさん [2008/05/23(金) 16:48:42 ]
>>369
隣接行列を2次配列にしたいんですけど
ノード数が100個以上あって、
エッジが繋がっている部分に重みがあって
エッジが繋がっていない部分を無限大の重みを付けたいんです。

規則性はあんまりないです。

ちなみに駅間の最短距離を求めるプログラムで利用したいんです。
データは隣駅までの距離です。

375 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:50:02 ]
>>368
何をもって綺麗とか力技とかと評価するのか知らないが、
ほとんどを占めている数を配列全体に(Arrays.fillとかで)入れておいて、
配列内の位置とその値のペアで(配列やコレクションで)持っておいたものを代入するとか。

376 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:51:44 ]
>368
java.util.Arrays.fill
>374
規則性が無いものを "計算機" で処理しよう、とな。
そこに妙な説明が書けるんだから、その通り実装すれば良いでしょう。

377 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:55:35 ]
>>374
隣接行列はそういうスパースなグラフでは表現時にメモリの無駄が多いので、
他の表現方法で接続データを持っておいて(隣接リストとか)、
それをプログラム内で隣接行列に展開するようにするとか。

378 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:08:26 ]
メモリの無駄が多い→同じ情報が繰り返し出てきてもたつき感がある

379 名前:デフォルトの名無しさん [2008/05/23(金) 17:22:18 ]
>>371-373
ok danke.
少しだけavacの気持ちが分かりました。

380 名前:デフォルトの名無しさん [2008/05/24(土) 00:00:25 ]
enum ってなんて読むのですか?



381 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:53:27 ]
>>380
コミュニケーションする相手とのコンセンサスが取れているのならどんな読み方でもどうぞ。
enumはenumeration(またはその派生形)の略なので元の言葉の発音を基にするか、
enumそのものの綴りを連想できるような読み方にするかすればいいと思うよ。

382 名前:デフォルトの名無しさん [2008/05/24(土) 01:11:12 ]
ファイルに入力されてるなら
そこから読み取るっていうこともありえるけど・・・

383 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:44:02 ]
AWTのTextFieldで右詰めにするのってできないんでしょうか??
どうやったらいいのか調べてもさっぱわかりません。。。
SwingならsetHorizontalAlignment使えばいいんですが、AWTでのやりかたをどなたかご教授願えませんかm(_ _)m

384 名前:デフォルトの名無しさん [2008/05/24(土) 02:05:43 ]
>>381
ありがとね

385 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:23:38 ]
LayoutManagerを無効にしたらTextField(5)とかいう風に列の幅を指定しても
結局そのサイズが0になっちゃうんですが、、、
座標指定できるLayoutManagerとかないですよね??
列の数を指定して(Dimensionではなくcolum数で)、
座標を指定してコンポーネントを配置することってできないんですかね??

386 名前:デフォルトの名無しさん [2008/05/24(土) 03:05:52 ]
class C2 extends C1 {...
C1 c1 = new C1();
C2 c2 = (C2)c1;
これは可能ですか?

387 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:12:53 ]
>>i386
C1を型に変換できません

388 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 05:40:02 ]
>>385
TextFieldを子孫コンポーネントとしたFrameを一旦表示してやると、
そのコンポーネントの推奨サイズが有効な値として取得できるようになるから、
推奨サイズをコンポーネントのサイズとして設定してやり、
その後、Frameを再描画すればいい。
一旦表示して設定後、再描画とかの流れが面倒なら、行儀の悪いものになるが、
コンポーネントを加えた後でFrameをネイティブスクリーンリソースに接続すれば、
Frameを表示することなくコンポーネントの推奨サイズを得ることができるようになる。

389 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:48:29 ]
>>385
なるほど。。。
ありがとうございます!!

390 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:19:54 ]
arraylistで値を追加する際genericsで型を指定していると処理の時間が多少短いような気がするのですが
これは偶然の誤差なのでしょうか?それとも速くなるものなのでしょうか?



391 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:05:33 ]
ならねぇ

392 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:11:20 ]
>>391
ありがとうございます

393 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:32:08 ]
オートボクシング/アンボクシングが働いて若干のパフォーマンス低下ってのならある。
けどもしそこがネックになってるならJITで最適化されるから気にしない。

394 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:32:36 ]
arraylistとlinkedlistの要素の追加に5倍ほどの時間差があるのですがこれはどういう理由なのでしょうか?
先頭の削除はarraylistが遅い
ランダムアクセスはLinkedListが遅いっていうのはわかるんですけど

intを1〜8000000
ArrayList追加 : 2385
LinkedList 追加 : 11095


395 名前:デフォルトの名無しさん [2008/05/24(土) 13:36:11 ]
>>394
そりゃあ、最後の要素までたどりつくまで時間がかかるからじゃないの?

396 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:58:00 ]
>>395
末尾に追加すると ってやつね

397 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:11:20 ]
>>394
追加し続けるだけ? それなら、
ArrayList→1回のaddにおける代入回数は1回。配列の末尾に要素を代入する(これで1回)だけ。配列のサイズが足りなくなると、元の1.5倍のサイズの配列を確保して元の要素を全部コピー。(このときだけ遅い)
LinkedList→1回のaddにおける代入回数は5回。要素を入れるEntryをnewして要素を代入(これで1回)し、前後のリンクを繋ぎ直す。(前、後、前の後、後の前で計4回)
あとは、どちらにもサイズのインクリメントとConcurrentModificationException判定用カウンタのインクリメントがあるけど、数字を見ると大きな要因ではなさげ。(最近のCPUだと並列処理されるのかな)
また、ArrayListは配列の拡張にペナルティがあるけど、LinkedListも1要素毎にnewするからか、ある程度相殺されてるっぽい。

398 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:20:00 ]
>>395
すいません説明が足りませんでした
>>396さんの通り末尾に追加です

>>397
リンクを繋ぎなおす処理で問題が出ていたわけですね
詳しい説明ありがとうございました

399 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:25:41 ]
>>395
LinkedListは頭と尻尾を知ってるから、わざわざそんなことしないぞ。
(間にsentinelを挟んだリング状になってる)

つか、適当なこと言う前にソース嫁。

400 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:03:41 ]
プ ロ フ ァ イ リ ン グ



401 名前:デフォルトの名無しさん [2008/05/24(土) 18:18:39 ]
keytoolの-validityで指定可能な最大値は何日ですか?

402 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:43:07 ]
javaでチャットを作ってます
swingのテキストエリアにメッセージを表示しているのですが、一行ずつフォントや色を変える方法はあるのでしょうか?
テキストフィールドを複数使ってテキストエリアのようにするぐらいしか思いつきません

403 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:43:27 ]
0か-1で無期限じゃなかった?

404 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:57:47 ]
>402
検索用ワード「JTextComponent スタイル」

405 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:02:46 ]
>>404
ありがとうございます!

406 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:01:03 ]
createImageに関しての質問なのですが
extends ComponentしたクラスでcreateImageをすると
nullが返りgetGraphicsすることができません

ググってみたところextends FrameしたクラスでaddNotifyをオーバーライドすればいいと
ありましたがcreateImageを利用する上で何をextendsするのがセオリーなのでしょうか
どうでもいいようなことかも知れませんがお願いします

407 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:19:14 ]
>>406
まだ表示されてないコンポーネントはcreateImageできない
BufferedImageをnewして使うといい

408 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:35:45 ]
>>406
Toolkit#createImageを使う手もある

409 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 04:28:52 ]
class GenericsTest<T> {
private T data;
public void copy(T newData) {
data = new T(newData); // error
}
}

このnew T(newData)のところ、
C++のテンプレートなんかだと
コンパイルできるんですが、javaではできませんでした
Tのメンバが全くわからない場合
どのようにmemberwise copy (deep copy)すべきでしょうか?

410 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 06:26:14 ]
>>409
interface CopyFactory<T> { T copy(T object); }
みたいのを定義&実装してやって、
コンストラクタ使わずにそっちで生成。



411 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 08:23:19 ]
>>410
了解です
ありがとうございました

412 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:51:59 ]
>>>409
・リフレクションでcloneを呼び出す
・リフレクションでコンストラクタを呼び出す
・serializeしてdeserializeする

413 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:05:50 ]
それが出来上がったら、俺だったら迷わずシングルトンなインスタンスを入れてみる

414 名前:FF [2008/05/25(日) 20:20:00 ]
キャラクター画像の背景の透過処理の仕方を教えてください。

415 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:39:42 ]
・もともと背景が透明画像用意する。
・IndexColorModelだったら透明色指定しとく。そうじゃなければ色置換。

416 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:47:28 ]
ArrayListをさらにList化することは出来るのですか?

417 名前:デフォルトの名無しさん [2008/05/25(日) 23:09:17 ]
何をしたいのかもう少し詳細に説明してください

418 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:32:17 ]
こうか?
ArrayList<ArrayList<Object>>

419 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:12:45 ]
>>417-418
レスありがとうございます。java宿題スレとマルチになってしまうんですが、とりあえず分からないなりに
解決してみようと思ってるんですが結局思いつかなくて、ここで聞いてるしだいです。
          if (bean.getSql().startsWith("select")) {
// iはループ用のカウンター;実行結果を取得する
for (int i = 1; i <= fileColumns; i++) {
columnNames.add(rsmd.getColumnLabel(i));
}
// フィールドの変数NameListに取得した文字列を入れます。
bean.setNameList(columnNames);
// 獲得したデータの格納
while (rs.next()) {
     ArrayList date = new ArrayList();
     for (int i = 1; i <= 3; i++) {
               date.add(rs.getObject(i));
            }
 bean.setResultList(date);     ←このResultListを、さらにList化したいです
        session.setAttribute("access", bean);
}
          }

SQLを実行してデータベースから結果をとりだして格納するんですが、上のプログラムだけだと
上書きしている状態で、最後に取得した情報しか表示されないのです。
すべて表示させるにはResultListをリスト化して、リスト化したところに個々の情報を入れていけば
全て表示できると言われたのですが、どうやってResultListをリストすればいいのか検討がつかないのですよ。

420 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:53:46 ]
マルチは首つって市ね



421 名前:デフォルトの名無しさん [2008/05/26(月) 01:07:29 ]
>>419

commons-collectionsのMultihashMapとかどう?

422 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 01:56:59 ]
>>420
ごめんなさい。

>>421
HashMapちょっと調べてきます!!
ご助言ありがとうございます。

423 名前:デフォルトの名無しさん [2008/05/26(月) 12:39:28 ]
お世話になっております。
今2つの内部クラスを作っています。ゆくゆくは内部クラスを別ファイルにでも切り離したいのですが、まだ先の話です。 現在は2つの内部クラス内のメンバー変数を内部クラス同士で参照させています。

下記のコードだと、eclipseはエラーを吐きませんが、 実行するとjava.lang.NullPointerExceptionエラーになります。
インスタンスもできていると思うし特に問題はなさそうです。

質問なのですが、なにか根本的に間違っていますか?

class M{
Initialize initialize;
Disp disp;

class Initialize{
private void once(){disp.isVal = true; }
}
class Disp{ boolean isVal; }

private Initialize mkInit(){
return initialize; }
private Disp mkDisp(){
return disp; }

public static void main(String[] args){
M m = new Majang();
Initialize initialize = m.mkInit();
Disp disp = m.mkDisp();

initialize.once();
}
}

424 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:55:15 ]
m.initializeに誰も何も代入していない (初期値nullのまま)

425 名前:423 [2008/05/26(月) 13:08:14 ]
早速の返答ありがとうございます。
ってことは
Initializeのコンストラクタでなにかの値を指定すればOKなのでしょうか。

//getClass()を使ったほうが可読性が高いですね。すみません。

426 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 13:24:37 ]
>>425
Initializeオブジェクトを生成してinitializeに代入しないといけないだろうということ
要するに
× Initialize initialize;
○ Initialize initialize = new Initialize();

427 名前:423 [2008/05/26(月) 13:38:20 ]
>>426
なるほど。
ありがとうございました。


428 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:44:13 ]
>>423
ねぇアレやっていい?アレ
ガッ!やっていい?

429 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 18:39:26 ]
>>423
内部クラスにするのはそれなりの設計理由があってすることで、
分離することが決まっているのなら、最初からきちんと分けて設計すべき。
クラス間の依存度が高いまま単に分けるだけなら分ける意味はあまりないし、
依存度が低くなるように最初の設計でインタフェースをきちんと決めて別々にした方がいい。
あとから制約を増やすのは面倒事になることが多い。

430 名前:デフォルトの名無しさん [2008/05/26(月) 19:20:09 ]
失礼します.
クラスからインスタンスを配列で作った際,Ins[0],Ins[1]…
Ins[n]内のメソッドから,Ins[n-1]内の変数をいじりたいのですが,どのようにすればよいでしょうか?



431 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:25:25 ]
JavaのGuiツールの中でボタンを押したらシェルを起動するという処理を行いたくて
Runtime rt=Runtime.getRuntime();
try{
rt.exec("cmd.exe");
}catch(Exception e){
e.printStackTrace();
}

こういうのをactionPerformedメソッドの中に入れた所何故か起動しません。
プログラムをnotepadとかにすると起動するのにこれだと起動しないのは何故なのでしょうか?
またcmdまでのパスも通っているし、念のためフルパスでやったけれどダメでした。

432 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:36:05 ]
俺以外誰も423の5行目に反応すらしない・・・とは思わなかった今ではガッしたことに反省している

433 名前:423 [2008/05/26(月) 21:04:41 ]
>>429
ただ単純に、一緒にしてしまうとコードが複雑になるので、
表示系と処理系を分離したいと。
できれば、最終的には表示系は処理系から隠蔽してメソッドで呼び出すだけにしたいかな、と。

ただ、いっしょにしている方がコードを書くのには明らかに簡単でとりあえず動くことから目標にしているんですよ。
プログラムはズブの素人で経験はCP/M86上のFBASIC位・・・

>>432
本来のぬるぽですからねぇ。ふふふ


434 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:12:24 ]
文字が半角カタカナであるか判断する方法はありますか?

435 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:46:44 ]
文字コードで調べる。

436 名前:デフォルトの名無しさん [2008/05/26(月) 21:53:11 ]
使用メモリーの増加に伴ってスレッド処理速度が落ちてしまうのはどうすれば回避できるでしょうか

437 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:02:01 ]
使用していないメモリを開放する

438 名前:デフォルトの名無しさん [2008/05/26(月) 22:05:02 ]
おおっ
少し感動

どうやればいいですか

439 名前:デフォルトの名無しさん [2008/05/26(月) 22:07:17 ]
GC弄るの?

440 名前:デフォルトの名無しさん [2008/05/26(月) 22:09:00 ]
nio
のBufferとかどうかなと思ったんだけど



441 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:11:32 ]
newをできるだけ減らす(できるだけオブジェクトを使いまわす)とか、
アルゴリズムを工夫するとか

442 名前:デフォルトの名無しさん [2008/05/26(月) 22:15:23 ]
それは
既にやってあるなあ


443 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:33:14 ]
使用メモリの増加に伴う速度低下がオブジェクトの生成にあるのなら
使用するオブジェクトをスタートアップの段階で全て準備してしまい
擬似的に静的に使用メモリを準備する
もちろんすべてひもつきのままにして破棄させない
一時的なオブジェクトの破棄に伴うGCの頻発による速度低下なら
メモリを積み込めるだけ積み込んでGCを停止する

444 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:33:27 ]
設計がうんこなんだろ

445 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:33:42 ]
メモリを積み増せば解決

446 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:34:51 ]
てst

447 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:39:41 ]
Oracle の JDBC ドライバ (V9.2.0 ) で Oracle DBMS に接続してるんだが。
クエリ投げて、SQLException 投げてきたときに、クエリのどの部分が違うのか、
あるいは、どの列が制約条件に違反してんのか、どうしたらわかるの?
教えてエロい人。

448 名前:デフォルトの名無しさん [2008/05/26(月) 22:46:04 ]
>>443
サンキュ
ただ原因はスレッドがやってる作業そのものがデータの吸出しにあることだと思う
6000個のスレッドをpool使って逐次で動かしてるんだが作業が進むに従って重くなるんで
このデータを一時的に何とかしないといかんかも

449 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:55:34 ]
6000個のスレッドwww
どんなマシンでまともに動くのか教えて欲しいwww

>>447
SQLのエラーコードを取得して、Oracleのマニュアルを参照汁
getErrorCodeとかそんなメソッドある

450 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:57:07 ]
6000個もスレッドを使ってる時点で
何かがおかしいと思わざるを得ないのだが
コンテキストスイッチのコストだけでもバカにならないんじゃ



451 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:57:59 ]
6,000・・・Thredのコストだけでも500Mくらいつかってそうだな、おい。
どうせpoolの管理も自分でやっているんだろ
ExecutorServiceとか使えばサクサク動く予感

452 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:59:12 ]
6000台のPCに分散処理させれば解決(・∀・)イイ!!

453 名前:デフォルトの名無しさん [2008/05/26(月) 22:59:29 ]
つかってる

454 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:59:53 ]
6000!
スレッドダンプが終わらん!

455 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:03:20 ]
public class Test {
public static void main(String[] args) {
char[] a = { 'ア', 'ア', 'あ', 'A', 'A' };
for (char c: a) {
System.out.println(Character.UnicodeBlock.of(c));
}
}
}

そりゃ、アもAも HALFWIDTH_AND_FULLWIDTH_FORMS に分類されちゃうよなー。


456 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:03:54 ]
本当に6000もスレッドを使わなければいけないのか、
よく考えるべきである

457 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:07:45 ]
>>453
減らすべし。大抵は多くても数十で十分のはず
他の言語なら大量に作って大量に捨てるような設計でも問題ないこともあるけど
Javaのスレッドは、基本的にそんな使い方はしない

458 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:10:02 ]
タスクが6万あったとしても、スレッドは数十で充分だろうな、たぶん。

459 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:25:23 ]
必要だから作っているんです
それにpool使って逐次動かしていますから問題はありません
データの吸出しを修正してみます

460 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:25:43 ]
>>449
サンクス。 getParameters() とかいうのがあるので、ちょいと試してみる。



461 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:33:00 ]
煽りとかじゃなしにプログラマとして6000個のスレッドがどういう状況で必要になるのか興味がある

462 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:41:28 ]
意味も解らず調べもせずに実装しているという状況なんだろう

463 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:03:19 ]
スレッド6000個ってnewするだけでもコスト高そうだな。

464 名前:デフォルトの名無しさん [2008/05/27(火) 00:08:16 ]
ごめんタスクが6000で稼動してるのは10ほど

そっか言い方間違えたな

しかしボロカスだなあw


465 名前:デフォルトの名無しさん [2008/05/27(火) 00:11:35 ]
もう少し詳しく言うとHTMLパースをMozillaJavaHTMLParserつかってさせるためのもの


466 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:17:39 ]
全部並列でって話ならば、そりゃ負荷かけすぎ
IOのように比較的長く待たされる処理がほとんどならば、6000タスクを並列にやって硬貨出るけど、HTMLのParseじゃ逐次処理の方が早いかもよ

467 名前:デフォルトの名無しさん [2008/05/27(火) 00:19:36 ]
かもしれんねPoolサイズ3に絞ってやったら少し改善した


468 名前:デフォルトの名無しさん [2008/05/27(火) 00:21:56 ]
このサイズをメモリーの状況に応じて自動変更できるとさらにいいなあ

469 名前:デフォルトの名無しさん [2008/05/27(火) 00:27:49 ]
申し送れましたが
皆さん有難う

470 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:34:12 ]
HTMLのパースに10スレッドも使うか?
パースに1、JS実行に1、画像読み込みに1で3くらいじゃね?



471 名前:デフォルトの名無しさん [2008/05/27(火) 00:37:35 ]
ページ数が多くて

472 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:43:51 ]
sageを覚えようね

473 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:46:16 ]
ああ
下げたほうが良いのか
了解

474 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:59:23 ]
javaの実行時間で質問です。
ある処理をSystem.currentTimeMillis()の差で調べたのですが
forで100回ぐらいまわした平均をとったほうが正確になるかと考えました。
すると1回のときとだいぶ違う時間になったのですがなぜかわかりますか?

475 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:02:40 ]
具体的にどう違ったのさ?

476 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:09:10 ]
>>474
JITが潰してくれたんでは

477 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:09:17 ]
何度も実行されるコードは高速化の価値があると判断&最適化されたりする。


478 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:11:54 ]
ほんまかいな

479 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:08:19 ]
最近の香具師はHotSpot知らんのか?


480 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:05:53 ]
>>478だけだろう




481 名前:デフォルトの名無しさん [2008/05/27(火) 15:02:12 ]
昨日のスレッドの件有難う
大分よくなった

でも6600ページダウンロードしてパースする作業だけで15分はかかりすぎだよねえ
何とかならんものか

482 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:44:39 ]
ごめん下げだったよね

ついでにいいかな
Matplotlibって視覚化ツールがあるんだけど
これをjavaからコントロールした人居る?

483 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:17:27 ]
>>481
鯖に負荷掛かるから止めろ。

484 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:37:28 ]
そうそう
そのためにスレッド数は絞るようにはしてるんだけどね
ダウンローダーと基本的には接続の部分は一緒だから
嫌われるプログラムではあるよね

485 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:48:54 ]
XMLの読み込みなんですけど、xmlnsを読み込むのってどんなメソッド使ったらいいんですか?

486 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:54:29 ]
xmlns属性は普通報告されない

487 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:56:31 ]
xmlns属性の値を引っ張ってきて別のメソッドで使いたいんですけど・・・

488 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:00:42 ]
じゃあパーサーから出るDocumentのelementひっぱってきてatributeを見れば良いんじゃね

489 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:06:07 ]
若しくはHTMLの文字列をindexof(xmlns)で位置拾って""でくくられてるところをStringで拾うとか
てかあそこ値変わるのか

490 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:12:50 ]
ごめんなさい普通に>>488でできました。
ありがとうございました



491 名前:デフォルトの名無しさん [2008/05/27(火) 17:34:52 ]
やっぱ
半値押しで粘りそうな感じもしないではないな
買い方逃げるとしたら次のリバだろうね

492 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:36:06 ]
誤爆ごめん

493 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:37:32 ]
誰かグラフ描写のJGraphというソフトを使ったことある人いませんか?

ダウンロードはできたんですが、そのあとのjarファイル等の操作がよくわかりません。

わかる方いれば、よろしくお願いします。

494 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:46:50 ]
JFreeChartのほうが機能多くていいぞ

495 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:58:01 ]
JFreeChartですか・・・

僕がやりたい(やらなければいけない)のは、「グラフ理論」なんです。
有向グラフとかノード、アークといったやつです。

496 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:01:50 ]
だったらJSCIのほうがいいかも

497 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:44:58 ]
JGraphを使えっていう指示があったんです(泣)

498 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:50:01 ]
そっかあ
わかんないなあ
誰か助けてあげてえ

499 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:00:20 ]
ディスクイメージなどのisoの中身を確認したり、抜き出したりするライブラリはありませんか?

500 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:05:33 ]
>>499
あまり知識がないもんで・・・
よくわからないです。



501 名前:デフォルトの名無しさん [2008/05/27(火) 19:08:09 ]
WINRARをDllフックしてJINIでつなぐ

502 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:10:29 ]
>>501
そういうライブラリは存在しないのですかね?
ネイティブにしたくないので仕様書探します。

503 名前:デフォルトの名無しさん [2008/05/27(火) 19:12:43 ]
あい

504 名前:デフォルトの名無しさん [2008/05/27(火) 19:22:34 ]
webアプリ構築してます。
strats+hibernateです。マスターテーブルの存在チェックを複数件(1〜300)行いたいのですが一件づつselectしチェックを行うのと全件selectしてmapに格納して存在チェックするのではどちらがよいでしょうか
マスタの件数は150件ほどです

505 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:40:05 ]
>>481
あんまり馬鹿やってるとIPではじかれる

506 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:44:53 ]
>>505
そうなんか?
別にクラッキングじゃねえけど

507 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:00:32 ]
>>506
迷惑

508 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:00:38 ]
ご質問させて頂きます。
余りを出す演算子で%があると思うのですが
%以外で余り値を出す演算子とかはあるのでしょうか?

何か方法があれば教えて頂ければと思います。
宜しくお願い致します。

509 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:02:56 ]
まあいいやはじきたきゃはじきやがれ
脆弱サーバー入れて客の責任にしたきゃすればいい

510 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:04:36 ]
>>508
宿題を出された→%禁止→でも、あまりを使うアルゴリズムしか思いつかない→%以外に何かあるはずだ→質問しよう
と、エスパーしてみる

あまりを出す演算子って言われたら%しか思いつかない



511 名前:デフォルトの名無しさん [2008/05/27(火) 21:06:20 ]
むかしBasicであったなMIDだっけ覚えてねえや
あれのこと?

512 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:13:07 ]
%っじゃなくても出せるような。

一桁ずつ2で割ってけばいずれ余りが出る。
ナベアツプログラム検索してるときにこの手の考え方が出てたよ。

513 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:17:49 ]
>>510
自分も%しか思い浮かばないので質問させて頂きました。

>>511
うーん、多分違うと思います。
すいません。

>>512
それは奇数なら大丈夫だと思うのですが偶数なら・・・。
と言うか、1桁ずつ2で割るという意味がちょっと自分は理解出来ないのですが
どういうことでしょうか?
%以外の演算子があるのでしょうか?
ちょっとナベアツプログラムでぐぐってきます。


514 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:21:05 ]
ていうか、質問は演算子だったんだろ。演算子なんて数が知れてるだろうに

515 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:21:59 ]
>>513
どうして%じゃだめなんだよ

516 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:24:38 ]
二つの整数値、8 と 3 の 『和』 『差』 『積』 『商』 『余り』 を計算して表示してください。(結果はすべてint型)
尚、『余り』に関しては 余り演算子 % を使用する場合と、しない場合の2通りの方法を考えてみましょう。

又、3ではなく、0で割るとはどうなエラーメッセージなのかも確認してみましょう。

という課題で出された為です。
自分は%以外の演算子を知らない為、質問させて頂きました。

517 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:26:31 ]
小学生なら余りを出すときは割られる数から商と割る数を掛けたものを引くだろうな

518 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:27:09 ]
大学の先生に聞け

519 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:28:13 ]
終了。次の質問どうぞ

520 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:28:57 ]
%以外の演算子は使っていいんだから-と/と*でできるじゃないか



521 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:29:46 ]
てか割り算できない人いるか

522 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:31:01 ]
馬鹿は際限がないということだ

523 名前:デフォルトの名無しさん [2008/05/27(火) 21:32:04 ]
Modだったな
一文字違いじゃねえか

524 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:46:19 ]
皆様、お答え頂きありがとうございました。

525 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:54:43 ]
>>506
ファイナンス系は厳しいぜ
IPからプロバイダに垢停止迫ったりは普通
あまりしつこいと自宅に直接電話かかって来るからなw

526 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:04:12 ]
たった3スレッドでか?
ありえねえだろ

527 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:18:45 ]
あと普通は嫌ならロボットはじくスクリプト入れるよな

528 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:32:28 ]
あと普通はレイプされるのが嫌なら錠付き貞操帯を着けて鍵を飲み込んでおくよな

529 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:54:59 ]
プログラムの実行時間計測してるんですが毎回時間がばらついてしまいます。
なぜでしょうか??


530 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:55:59 ]
rdtscとかQueryPerformanceCounter()を使う



531 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:31:03 ]
運悪くGCが働いたか、何かの最適化が起こっている可能性がある

532 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 01:14:46 ]
>526
HTTP1.1 では、同時接続数上限は 2 ですよ、と。
さらに言えば、連続して接続するなら、単一接続にした方が良いと思います。
過ぎたるは及ばざるがごとし。てか、鯖にも許容量があるので。

HTTPヘッダに、Accept-Encoding: gzip を追加しましょう。
対応していれば、テキストが5分の1ぐらいに圧縮されます。
java.util.zip.GZIPInputStream で解凍できます。

533 名前:デフォルトの名無しさん [2008/05/28(水) 01:40:24 ]
>532

どうせapacheを使うのだから、apacheでやらせた方が良くない?

534 名前:ume mailto:sage [2008/05/28(水) 04:13:44 ]
>>516 8.0-(int)(8.0/3.0)*3.0 CとJavaでも。

535 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 07:55:57 ]
>>508
a%b=a-(a*(a/b))

※/演算子の結果が小数を返すものならintで丸める

または自作で余りを求める関数を作れ
っていう意味では?


536 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:42:30 ]
>>533

>>526 (のさらに元ネタの、スレッドを起こすプログラム書いている人)は、
Httpクライアント側じゃないの?

537 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:54:52 ]
そうだよ
クライアント側

2でいいなら2にして見るかな
何ももめるつもりで書いてるものでは無いからな
あと6600はひとつのサーバーに対してじゃないから
その辺は如何なのかなって気もするけどな

良くあるループの理論速度計算みたいに
スレッドの計算できる式ってあるのかな

538 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:57:01 ]


話全く変わるけどマルチっぽくてすまんが
OOOSDKのことで聞きたいんだが

たとえばJPanelにCALCのインスタンス貼るのはUNO使えば良いんだろうか

539 名前:デフォルトの名無しさん [2008/05/28(水) 16:44:11 ]
final で宣言した変数にcloneで初期値を代入できんのやね。
そんなもんなのかなぁ。

540 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:20:52 ]
普通はできると思う。どういう初期化の仕方をしてできなかったの?
public class A implements Cloneable {
private final C c;
public A(C c) throws CloneNotSupportedException { this.c = (C)c.clone(); }
public static void main(String[] args) throws CloneNotSupportedException {
C c = new C();
A a = new A(c);
final C b = (C)c.clone();
System.out.println(c + ", " + a.c + ", " + b);
}
}
class C implements Cloneable { public Object clone() throws CloneNotSupportedException { return super.clone(); } }



541 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:23:01 ]
あ、Aの方のimplements Cloneableは余計

542 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:29:56 ]
こういうことをしたいんじゃないかと思う
public class A implements Cloneable {
 private final ArrayList list = new ArrayList();
 public Object clone() throws CloneNotSupportedException {
  A a = (A) super.clone();
  a.list = a.list.clone();    // ← できない
  return a;
 }
}

543 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:39:03 ]
それは普通に再代入だから
再代入を禁止したいからfinalを付けるのに付けた意味がないような
本当のところは実際にやろうとしたことを聞かないと分からないけど

544 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:39:39 ]
アプレットを表示するHTMLを作りたいのですが、
赤いXとアプレットのサイズの灰色の枠のみ表示されて、中身が表示されないんですが、

何が悪いのかわかりません。

545 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:40:50 ]
コードを書けコードを
こっちにだって何が悪いか分からん

546 名前:544 [2008/05/28(水) 17:43:00 ]
<html>
<head>
<title>11_4</title>
</head>

<body>
<h1>11の4</h1>

<applet code="s11_4.class" width="500" height="500"> </applet>

</body>
</html>

547 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:05:38 ]
>>546
そのHTMLと同じディレクトリにs11_4.classは存在するか?
他に必要なクラスファイルもすべて存在するか?
何か例外が発生していないかコンソールを確認してみたか?
s11_4のソースコードを見せてみれば何かわかるかもしれない

548 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:21:38 ]
.class 削ってみること。

549 名前:544 [2008/05/28(水) 18:32:38 ]
>>547
上三つはだいじょぶでした
アプレットビューワで見れてもHTMLに引っ張ってきただけじゃだめなんですね、、、、

550 名前:548 mailto:sage [2008/05/28(水) 18:42:52 ]
焦った、すまん。



551 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:44:12 ]
>549
appletviewer の引数って htmlファイルですよ、と。

他は大文字小文字とか。

552 名前:544 mailto:sage [2008/05/28(水) 18:50:20 ]
>>551
その意味がわからないのは申し訳ないです。

553 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:58:09 ]
appletviewerとブラウザでセキュリティ面で違いがあったりするから
それが原因かもとも思ったがブラウザでも例外は発生していないらしいからこれは違うか

>>552
どっちの意味が分からないのか分からないが
appletviewer hoge.html
で実行するものじゃないの?
またはコメントにappletタグを記述したソースファイルで
appletviewer Hoge.java
とか
大文字小文字を区別する環境なら合わせてやらないとクラスファイルを発見できない
S11_4.classでサーバに上げたのにs11_4.classを指定しているとか

554 名前:544 [2008/05/28(水) 19:17:05 ]
>>553
エクリプスで三角形おして動作を見てたから、ぴんと来ないです。

ほかの人のパソコンで見れたら委員だけど、エグゼファイルみたいなのに
することもできずテン

555 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:30:02 ]
jarファイルにエクスポートすればいいんじゃないか
appletタグもjarファイル使って

<applet archive="hoge.jar" code="s11_4.class" width="500" height="500">

みたいな感じで

556 名前:548 mailto:sage [2008/05/28(水) 20:04:20 ]
>アプレットビューワで見れてもHTMLに引っ張ってきただけじゃだめなんですね
C:\>dir
s11_4.class
hoge.html
2 個のファイルが見つかりました。
C:\>appletviewer hoge.html
と、入力してみる。三角ボタンじゃなくて。

557 名前:デフォルトの名無しさん [2008/05/28(水) 20:35:28 ]
Swing とかで
youtubeの外部プレイヤー(小さいやつ)の音量設定のような、
マウスのせたらスライドバーがでてきて調整できる GUI 部品ってないんですかね?

もしくは作れるんでしょうかね?

558 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:57:44 ]
作れないものなどない

559 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:36:26 ]
だが、お前には作れない

560 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:09:39 ]
つまらん煽り



561 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:33:06 ]
タイマーで、描画を3秒ごとに進めようとしてるんですけど、
配列が保管されないんですけど、こういうものなんでしょうか。

java初めてです。

562 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:46:51 ]
ローカル変数にしてるオチの予感・・・

563 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:47:06 ]
配列の宣言位置がおかしいんじゃないでしょうか

564 名前:561 mailto:sage [2008/05/29(木) 01:06:14 ]
クラス
 …メイン
クラス
 …タイマー
 …グラフィックフレーム
クラス
 …画像描画
    …パブリック イント 多次元配列
    …描画のメソッド
       …配列に、値を入れる。
        ↓
タイマーでロードされると
配列の値が残っていない…。

565 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 01:19:08 ]
>564
私なら、配列の生成、変更箇所をたどっていく。
大体は、生成に問題がある。
配列でなければ、それを含むクラスの生成と運用に問題がある。

566 名前:デフォルトの名無しさん [2008/05/29(木) 01:58:34 ]
import java.awt.*;
class R6_2
{
public static void main( String [] args )
{
R6_2_image window = new R6_2_image()
window.setSize(400,600);
window.setTitle("R6_2");
window.setVisible(true);
}}

import java.awt.*;
class R6_2_image extends ExitFrame
{
public void paint( Graphics g )
{
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("image.jpg");
g.drawImage(image,50,50,this);
}}

windowsVista、CPad for Java2 SDKの環境でjavaしています。
上のプログラムがR6_2.java,下がR6_2_image.javaです。
R6_2.javaファイルを実行すると、シンボルが解決されていないとエラーが出て、コンパイルできません。
image.jpgとExitFrameは同じディレクトリに入れてます。

567 名前:デフォルトの名無しさん [2008/05/29(木) 02:33:01 ]
誰か来て…

568 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 02:51:58 ]
>566
ExitFrame は同じパッケージで、Frameを継承してるとして、
R6_2_image window = new R6_2_image()セミコロン抜け

569 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:16:45 ]
if(hairetu[j][i]==0 && hairetu[j][i+1]==0 && hairetu[j][i+2]==0){

をすると、なぜか例外になってしまいます。

if(hairetu[j][i]==0 || hairetu[j][i+1]==0 || hairetu[j][i+2]==0){

では起こらないんですが…


何が違うのでしょうか?

570 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:35:43 ]
範囲外参照の例外だろ? &&だったら全て満たさないといけないから条件全て実行する。||だったらどれか満たせばいいから一つでも満たしたら以降は確認しない。



571 名前:569 [2008/05/29(木) 12:39:55 ]
つまりその三つを満たしている場合がないから例外が出てるってことなんですか

572 名前:569 [2008/05/29(木) 12:42:02 ]
あ、いや、ちゃいますね。
配列の外をってことですね。

573 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:48:51 ]
>571
例外とは何か。条件を満たさないと起きる物なのか?
570 は、貴方の質問に答えただけで、貴方の疑問には答えていない。
それでも、十分に答えを見つけるだけのヒントは出ている。

というか、表示された例外クラスの事をちゃんと調べましたか?

574 名前:569 mailto:sage [2008/05/29(木) 13:57:48 ]
助かりました。arigatouございます

575 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 14:56:46 ]
swingプログラムを作ってるのですが、
Javaで多重起動防止する方法ってどういったものがあるのでしょうか?
WIn32APIのミューテックスみたいなのの他、
実行中のプロセス名を全部取得して自分のプロセス名があれば表示前に終了する
みたいなのを考えたのですが、Javaでのこういうのの実現方法が分かりません。

576 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:00:20 ]
ないからlockfile作るのが一般的じゃない?

577 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:16:51 ]
仮想マシン単位なら、createNewFile - deleteOnExit の連携かな。試してないけど。
何らかの理由で削除されない事に対応するには、
ロックファイル内容の書式に更新時間を記録するようにするか、ね。

578 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:26:31 ]
起動中は特定のポート握りっぱなししておいて、
起動時に特定のポート開けなかったら起動させないとか。

579 名前:デフォルトの名無しさん [2008/05/29(木) 16:16:30 ]
よろしくお願いします。
VBで言うところのErr.RaiseしてOn Error Gotoに飛ばすようなことをしたいのですが
意図的にSQLException等の例外を引き起こすメソッドみたいなものはありますか?
というか考え方が間違っていますか?

try{
  //処理1
  if(!hoge()){
    例外に飛ばす処理
  }

  //処理2
  :

}catch{
  //ここに飛ばす
}

580 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 16:23:03 ]
>>575
起動するときファイルに自プロセスIDを書き込む
多重起動チェックのときそのIDのプロセスが生きていればエラー
JNI使うことになりそうだけど
>>579
throw new SQLException()
ただしgotoを実現するために例外を使うのは良くない



581 名前:579 [2008/05/29(木) 16:38:40 ]
>>580
物凄い勢いで答えていただきありがとうございました。
例外を使用しない方向で考えてみます。

582 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 16:46:07 ]
>579
仕様上、例外もしくはエラーである必要があるのならば、
適切な(なるべく既存の、必要であれば自作の)例外オブジェクトを生成し、throw すれば良い。

お勧めはしませんが、ラベル付き break, continue を使えば、疑似gotoは可能。
ttp://www.y-adagio.com/public/standards/tr_javalang/14.doc.htm#6842

583 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 16:47:28 ]
イベント駆動型アプリケーションて概念もあるけどな

584 名前:579 mailto:sage [2008/05/29(木) 17:14:54 ]
>>582,583
レスありがとうございます。

よくよく考えてみましたが、やはり仕様上例外である必要があるため
前言撤回で、throwを使わせていただきます。

リンクありがとうございます。今読んでいます。

>イベント駆動型アプリケーション
勉強します!

585 名前:デフォルトの名無しさん [2008/05/29(木) 19:46:41 ]
preparedStatementを使ってて、
SQLのログ出力する時に、「?」部分に実際に値が入っている状態で出したいんだけど
どうすればいいですか?別々に出力させるしかないのでしょうか?

586 名前:デフォルトの名無しさん [2008/05/29(木) 21:06:52 ]
JSpinner の中身を左詰で表示させたいんですけど
設定がわかりません orz
set〜 を探してもそれっぽいのないのですが。。。

587 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:15:15 ]
>>586
((JSpinner.NumberEditor) spinner.getEditor()).getTextField().setHorizontalAlignment(SwingConstants.LEFT);

588 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:52:25 ]
>586
似たような物をチュートリアルから
ttp://java.sun.com/docs/books/tutorial/uiswing/components/spinner.html#format
* キャスト前に instanceof でオブジェクトの型を確認。
* キャストに基底クラスの JSpinner.DefaultEditor を使用。

589 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:09:58 ]
>>575
java.sun.com/javase/ja/6/docs/ja/api/java/nio/channels/FileLock.html

590 名前:デフォルトの名無しさん [2008/05/29(木) 23:11:33 ]
>585

?の部分にバインドするのはDBサーバだから簡単な方法はない気がします。



591 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:24:34 ]
バインドしたやつってDBサーバ側のクエリログとかはどうなん?
自分で確かめてないけど、バインドした結果のが残ってないん?

592 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 01:28:45 ]
6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
ttp://system-trading.jp/news/index.php?ID=39
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。


ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/

593 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 01:36:19 ]
>>590
String#formatを使えるなら、それほど難しくない気もする。

594 名前:590 mailto:sage [2008/05/30(金) 01:44:29 ]
>593

それだと、DBで実行しているものと同じとは言えないと思うのですが。。。

簡単かどうかは人によって違うとは思うのですが、JDBCのパラメータをいじるだけでは出来そうもないという意味で、簡単ではないと書きました。

595 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 02:54:48 ]

JGraphについてです

JGraphはsourceforgeからダウンロードしましたが(初心者なんで)使い方がわかりません。
環境はVistaでj2sdk2.4です。

どなたかJGraph使い方わかる人はいませんか?(ファイルの移動、コンパイル方法など)


596 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 07:12:39 ]
j2sdk2.4?

597 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 07:53:32 ]
>>596
すみません、眠たくてぼけてました
j2sdk1.4.2_17です。

598 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 09:54:13 ]
>>590,593,594
ありがとうございました。
ざっとString#formatも調べてみましたが、
これはこれで使いこなすのに時間がかかりそう・・・
でも参考になりました。ありがとうございました。

599 名前:585 mailto:sage [2008/05/30(金) 12:05:14 ]
>>591
すいません、抜けていました。
レスありがとうございました。


600 名前:ぬこぬこダンス ◆QQgpZ/Znz. mailto:sage [2008/05/30(金) 12:34:58 ]
Hoge [] array = new Hoge[100];
for( int i = 0; i < array.length, ++i )
{
  array[i] = new Hoge();
}

このようにしてメモリを確保した場合

for( int i = 0; i < array.length, ++i )
{
  array[i] = null;
}

array = null;

ってやるのが正しい方法でしょうか?

それとも

array = null; だけでOKなんでしょうか?



601 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:44:00 ]
>>600
何もしなくてOK
nullを代入する必要は通常ない

602 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:44:59 ]
null代入イラネ

603 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:47:43 ]
>>601-602
ありがとうございました

604 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 13:35:34 ]
exec("explorer")を呼び出す際に引数を付けて任意のディレクトリを開くようにしたいのですが、
他のプログラムのようにexec("explorer C:/")というようにやっても
シェルからexplorer C:/と入力するような動作はしません。
これって何が問題なのでしょうか?

605 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 13:54:07 ]
exec("explorer C:\\") としないとダメとか?

606 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:07:11 ]
>604
XP です。シェルが何か分かりませんので cmd で確認。同じ動作をします。
単なる入力ミスor確認不足じゃないですか?

もちろん、意図した動作は 605 でしょうけど。

607 名前:604 mailto:sage [2008/05/30(金) 14:49:27 ]
>>605で出来ました、レスありがとうございます。
Javaの中のパス指定は/でいいけど外部プログラムに渡す時は\じゃないとダメなんですね。。

608 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:22:57 ]
java.sql.SQLNonTransientConnectionException: バッチエレメント # のエラーです0: 通信エラーが検出されました: Software caused connection abort: recv failed。

これって何が原因ですか
対処方法も分かったら教えてください

609 名前:デフォルトの名無しさん [2008/05/30(金) 18:02:07 ]
Javaで perlやphpのcryptみたいな物ってあるんでしょうか・・?
DESでsalt2文字で暗号化したいんですが・・

www.dynamic.net.au/christos/crypt/UnixCrypt.txt
だとちょっと結果が違うみたいで

javax.cryptoを使うのは方式が違う感じ?

何か良いものがあれば教えてください〜

610 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:07:26 ]
>>609
「みたいな物」 が欲しいだけで 「同じ物」 が必要じゃないなら、別にちょっとくらい結果が違ってもいいんでないの?



611 名前:デフォルトの名無しさん [2008/05/30(金) 20:40:46 ]
randomの乱数生成ですが
0から乱数が始まるみたいですが
最低値と最大値を 5〜10 のように指定した乱数の出し方がわかりません。
教えてください。


612 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 20:51:37 ]
>>611
new Random().nextInt(6) + 5;

613 名前:デフォルトの名無しさん [2008/05/30(金) 20:58:29 ]
>>612
わかりました。サンクス

614 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:13:26 ]
インスタンスを生成したときの内部のメモリ状態について質問です。

クラスは、変数とメソッドで構成されていると思うですが、
インスタンス生成の度にメモリ上に確保されるのは、
変数だけなのでしょうか?
それとも、変数とメソッドなのでしょうか?

私は前者だと思っていたのですが、
会社の先輩が後者だと言って譲りません。
恐い先輩なので、私が悪いことにしてその場を治めましたが納得できません。
どちらが正しいのでしょうか?


615 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:22:36 ]
メモリ状態なんてJVMの実装依存でしょ

616 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:15:46 ]
>>614
OpenJDKのソースを斜め読みした限りじゃインスタンス変数だけと思われ。

617 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:42:02 ]
一般的なJVMの実装ならば変数だけだろ
メソッドはどのインスタンスでも同じ振る舞いするわけで、わざわざインスタンス毎に作成するメリットはほとんどないわけだから
メソッド変数という意味ならば変わるけどな

618 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:46:27 ]
>>614
> 恐い先輩なので、私が悪いことにしてその場を治めました
これは正しい。

> が納得できません
これは正しくない。

619 名前:614 mailto:sage [2008/05/30(金) 22:50:13 ]
>>615-617
レスありがとうございます。
やはり常識的に考えて、生成されるのはインスタンス変数だけですよね。
恐い先輩に頭ごなしに否定されたので、自分が間違っているような気になっていました。

620 名前:デフォルトの名無しさん [2008/05/31(土) 00:26:19 ]
GUIでウェブブラウザ作ってるんですが・・・
下のif文の中に入ってくれません。
どなかか考えうる理由など教えていただけると嬉しいです。
必要であれば、ソースすべて載せます。
はじめて質問するので、なにか不束な点があると思いますが、
許してください。。。
JButton ret; //戻るボタン

public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();

//この条件の中に入ってくれません
if(obj == ret){
System.out.println("test4");
System.out.println("test4");
System.out.println(address.getText());
list.removeLast();
this.setUrl(list.getLast());
}
else if (obj == address) {
System.out.println("test2");
System.out.println(address.getText());
list.add(address.getText()); //ジャンプするURLを格納
this.setUrl(address.getText());

}}



621 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 00:37:49 ]
retをローカル変数で定義しているとか?
下のelse if は入るんだよね?

622 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 00:46:36 ]
printデバッグするにしても、"test4"とか固定文字列を表示するんじゃ
なくて、ifの前にobjとかretを表示してみるとかー。



623 名前:デフォルトの名無しさん [2008/05/31(土) 01:13:40 ]
二つの文字列を表示する時
一つめの文字列を表示させたあと
2秒ほど間を開けて
二つめの文字列を表示するにはどうすればいいですか?

624 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 01:17:34 ]
>>623
簡単に言うと、間に Thread.sleep(2000); を挟む。


625 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 01:22:30 ]
JNIでCと連携してるんだけど、特定のnativeメソッドを使用した時に
UnsatisfiedLinkErrorが投げられてしまう。

環境変数は通っているし、
ヘッダファイルが最新の状態で問題なくビルドできたのに、
そのメソッドだけ蹴られる。
ためしに問題の部分をコメントアウトして実行したら、問題なく動いた。
だから他のnativeメソッドは、たぶん普通に呼び出せてるんだよね。

DLLの中身をのぞいて見ても、件のメソッドは他のメソッドと同じようにちゃんと存在している。

これはいったいどういうことなんだろう…?

626 名前:620 [2008/05/31(土) 01:30:52 ]
>>621
ローカル変数では定義してませんね・・・
下のelse if文には入ります

>>622
obj表示してみました。
今もうその文字列のcontainsメソッド使ってごり押しでif文に入りました!


ただなんで前の状態じゃ入れないか疑問に残って仕方がない・・

627 名前:デフォルトの名無しさん [2008/05/31(土) 01:40:57 ]
>>624
やってみます、ありがと

628 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 01:47:32 ]
>>626
ありそうなのは、JButton ret;と、実際に追加されているボタンが異なるケース。
同名のローカル変数が追加されて、メンバのretに値が入っていない。
JButton ret=new JButton();とかやってないか?



629 名前:620 [2008/05/31(土) 02:42:15 ]
>>628
ぁぁぁ・・・ご名答です・・
コンストラクタでやってしまってました・・・
わざわざありがとうございます。

今ブラウザの戻る、進む、ホームに戻るが作成できました。
あとは履歴とブックマークくらいしたいなー。
他なにか機能ないかなー。

なんか学校の課題とはいえ、がっつり便利なブラウザ作ってみたいなー。

630 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 02:50:40 ]
>>629
> がっつり便利なブラウザ作ってみたい
ってことは今使っているブラウザに不満な点があるということだから、
その不満を解消する機能をつければいい。
既にあるものを再生産するのは詰まらんだろう。



631 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 03:08:05 ]
>>629
そういうミスを防ぐために、メンバ変数に特殊な命名規則を導入するス
タイルもある。
m_ret
mRet
f_ret
fRet
ret_
または常にthis.retで使うとか。


632 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 03:58:37 ]
short と byte[] の相互変換ってどうやるんですか?
private byte[] ShortToByte( short s )
{
byte [] b = { (byte)((s >> 8) & 0xFF), (byte)((s >> 0) & 0xFF) } ;
return b;
}

private int ByteToShort( byte []b )
{
return ((b[0] & 0xff) << 8) | (b[1] & 0xff);
}

こんなのを作ってみましたけど 上手く行きません

short s = -1;
System.out.println( s );
System.out.println( ByteToShort( ShortToByte( s ) ) );

結果
-1
65535

633 名前:デフォルトの名無しさん [2008/05/31(土) 04:10:17 ]
>>632
それshort返してねえよ int返してる

634 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:28:20 ]
あ^^;色々変更して試しにint返してみてそのままでした

private short ByteToShort( byte []b )
{
return (short)((b[0] & 0xff) << 8) | (b[1] & 0xff);
}

でも同じ結果です

635 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:33:27 ]
private byte[] convertShortToByte(short s) {
byte[] b = new byte[2];
((ByteBuffer)ByteBuffer.allocate(2).putShort(s).rewind()).get(b);
return b;
}
private short convertByteToShort(byte[] b) {
return convertByteToShort(b, 0);
}
private short convertByteToShort(byte[] b, int offset) {
return ByteBuffer.allocate(2).put(b, offset, 2).getShort(0);
}

636 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 05:24:53 ]
そんなややこしい方法でしか無理ですか?

637 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:07:55 ]
ここでエスパー参上
short 返してねえよ。int 返してる

638 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:13:47 ]
>>637
>>634です


639 名前:294 [2008/05/31(土) 12:09:33 ]
Aクラス=(appletをextendsしたクラス)でBクラス=(frameをextendsしたクラス)ではなく
Bクラスを使用しないでAクラスでBしたクラスがする処理をしたらappletとしてうごきました。
ところでappletではファイルの読み書きとかが出来ないらしいけど、
何が出来て何が出来ないかということはどうやって解るんですか

640 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 12:53:26 ]
>>639
↓に載ってるものは出来ない
java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/permissions.html#PermsAndMethods

ただし↓のファイルに書いてあれば許可される
C:\Program Files\Java\jre1.6.0_06\lib\security\java.policy



641 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 13:13:04 ]
>>640
ありがとうございます。
とてもよく知ってますね。
そういう知識はどこで覚えたんですか?
なんでそんなに詳しいんですか?
どこかで習ったりしたんですか?


642 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 13:32:07 ]
>>641
公式サイトのドキュメント↓読んでれば見つかる
java.sun.com/javase/ja/6/docs/ja/
ここの 「セキュリティ」 と書いてあるリンクを辿っていけばセキュリティについて書かれている
さっきのページは 「セキュリティ」 → 「Java 2 SDK におけるアクセス権」
片っ端から全部読むには量が多すぎるが、必要なときに必要な情報だけ探して来れば十分

643 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:11:40 ]
>>636
static short ByteToShort(byte[] b)
{
  return (short)((b[0] << 8) | b[1]);
}

static byte[] ShortToByte(short s, byte[] b)
{
  b[0] = (byte)((s >> 8) & 0xFF) ;
  b[1] = (byte)(s & 0xFF) ;
  return b;
}

public static void main(String[] args)
{
  short s = -1;
  byte b[] = new byte[2];
  System.out.println( ByteToShort( ShortToByte( s, b )));
}
君のメモリー(思い出は((無い

644 名前:デフォルトの名無しさん [2008/05/31(土) 14:51:39 ]
synchronizedブロックだとメソッドから復帰するとモニタも解放になりますが、
メソッドから復帰してもロック・オブジェクトのモニタを持ちつづけるにはどうすればいいのでしょうか?

645 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:06:20 ]
>>644
それ用のスレッドを作ってモニタを持ち続けさせるか、
特にオブジェクトのモニタである必要がないなら java.util.concurrent.locks.ReentrantLock あたりを使う

646 名前:デフォルトの名無しさん [2008/05/31(土) 15:08:02 ]
やはり少し手間がかかるんですかありがとうございます。

647 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:15:55 ]
>>645
イテレーションが目的であって、要素が途中で変更されると困るときはどうするんでしょうか。
例えばjava.util.Vectorのsynchronizedは取得時のみでイテレーション中は変更される可能性があるわけで、これとは少し意味が違いますよね。

648 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:22:30 ]
>>647
使う側が必要なだけsynchronizedかける

例:
Vector v = ....;
synchronized (v) {
 Iterator i = v.iterator();
 while (i.hasNext()) {
  ...
 }
}

649 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:28:45 ]
ああ、そうですね。

650 名前:デフォルトの名無しさん [2008/05/31(土) 15:30:06 ]
先頭のスーペースはもしかしてnbsp;をタイプしてるんですか?



651 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:32:36 ]
専ブラが変換してくれるので自分でタイプしてはいない

652 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:35:43 ]
>>648
それだと違うインスタンスのロックにならないから、
例えば別のVectorインスタンス(クローンとか)から内部を変更されてしまい、
要求する仕様を満たさないよ。そういうのは見つけにくいバグになるんじゃないの?

653 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:39:59 ]
>>652
違うインスタンスって何
内部って何の内部
要求する仕様とやらをはっきりさせてくれ

654 名前:デフォルトの名無しさん [2008/05/31(土) 15:42:13 ]
↑自分が答えられる範囲を超えるとこのように暴走しますw

655 名前:デフォルトの名無しさん [2008/05/31(土) 15:43:12 ]
パッケージについて質問します。
デスクトップ上にTestフォルダを作成し
その中にメインの "Test.java" と "DirTestA.java" を置きました。
別階層からTest.javaのオブジェクトを作るため
Test.javaに package Test; と書いてimportして作成できたのですが
そうするとTest.javaで 同じ階層内にいるDirTestA.javaのオブジェクトを作ろうとしたら
DirTestAのシンボルを解決できません。とでます。

試しに DirTestA.javaにも package Test; と書いて
Test.javaで import Test.DirTestA; と書いても
解決しません。
どうすれば、同じ階層内でも参照できますか?

656 名前:デフォルトの名無しさん [2008/05/31(土) 15:43:39 ]
なんだ。>>653は親切そうだったけど実はすぐ発狂するキチガイだったのかww

657 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:56:13 ]
>652
良く分からないなら無理に指摘しなくても大丈夫です。
問題が起きてから騒いでください。

>655
コンパイルする場所が間違ってるかも
Testフォルダがあるフォルダでコンパイルしてますか?
(パッケージ名は小文字推奨です。クラス名と区別が付かない等の為)
あとは、変更前のclassファイルが残ってる可能性も。

658 名前:653 mailto:sage [2008/05/31(土) 15:58:45 ]
別に暴走も発狂もしてないけど・・・
質問に答えるために必要な追加情報を求めてるだけだよ
(言い換えると質問が意味不明)

659 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:04:25 ]
>>655
ひとつ上のディレクトリから
javac Test/Test.java
ってやってみるとどう?

660 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:05:46 ]
Hoge{
 private int n;
 
 Hoge( int i ){
  n = i:
 }
}
Hoge hoge = new Hoge( 10 );:


これに新しい値を入れたい場合

hoge = null;
hoge = new Hoge( 100 );
でないとダメですか?

null代入せず上から直接
hoge = new Hoge( 100 );
した場合はどうなりますか?



661 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:08:20 ]
>>660
直接入れても一緒。
null代入は不要。

662 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:17:35 ]
ですよね、ありがとうございます

663 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:19:26 ]
C++のnewのイメージとごっちゃになりました
たしかC++だと落ちますよね?

664 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:33:30 ]
C++のnewはdeleteしないと落ちはしないけどメモリリークになる
JavaのnewはGCが自動的に解放してくれる

665 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:53:54 ]
>>658
確かに不明部分があるけど、やってれば分かるようなこの程度のことを詳細に書いてもらったとしても、君程度の技術じゃ答えられないでしょうにww
ところで君はその質問にちゃんと答えられる自信はあるんですか?

666 名前:デフォルトの名無しさん [2008/05/31(土) 16:55:43 ]
教えてください。
以下のようなソースを書いたのですが、
☆のところで怒られてしまいます。
[アクセス可能な型 Swing_main のエンクロージング・インスタンスがありません。 型 Swing_main のエンク ロージング・インスタンスで割り振りを限定する必要があります (たとえば x.new A() で、x は Swing_main のインスタンス)。]

★は怒られないのに何で☆はだめなのというところが知りたいのですが、

public class Swing_main extends JFrame{
public static void main(String[] args) {

//コンストラクタでFrame作成
new Swing_main("test");
//メソッドでFrame作成
Swing_test();
}
//コンストラクタ
Swing_main(String title){
super(title);
★addWindowListener(new WindowEventHandler()
};
//メソッド
public static void Swing_test(){
JFrame frame = new JFrame("Jframe1") ;
☆frame.addWindowListener(new WindowEventHandler());
}
//WindowListener
class WindowEventHandler implements WindowListener{
public void windowActivated(WindowEvent e) ・・など
}
}

667 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:05:34 ]
>>666
WindowEventHandlerはstatic classじゃないので、外側のクラスSwing_mainのインスタンスが必要
★はコンストラクタ内なのでthisが存在するが、☆はstaticメソッド内なのでインスタンスが存在しないからエラー

668 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:12:54 ]
>>653
>>658
こうやってすぐ叩かれるから無駄口を吐かない方がいいよ。

669 名前:デフォルトの名無しさん [2008/05/31(土) 17:19:39 ]
>>667さん
回答ありがとうございます!
WindowEventHandler をstaticにしたところ怒られなくなりました。
ただ、☆にはframeというインスタンスがあるんですが、
これだと駄目という部分が理解できません。
そもそもこういうつくりは駄目だということでしょうか



670 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:25:55 ]
>>669
そのframeはJFrameであって、Swing_mainじゃないし。
もし
Swing_main frame = ..... ;
であるなら、
frame.new WindowEventHandler()
のように書ける。



671 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:26:24 ]
JAVAにはOpenCVのような画像処理を扱うAPIはありますでしょうか。
OpenCVの移植があれば最高なのですが、ぐぐっても出てこないということは無いのですかね。。


672 名前:デフォルトの名無しさん [2008/05/31(土) 17:29:21 ]
駆け出しのプログラマなんだけど、休日とか、書類作成メインの日とか、コーディングしない日があるのが怖い
コードを書かないと実力が落ちそう

そこで、将棋でいう「詰め将棋」みたいに、シンプルなプログラミングの問題を掲載したサイトとか本とか無い?

673 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:32:29 ]
>>672
っ pc11.2ch.net/test/read.cgi/tech/1212085079/

674 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:33:58 ]
>>652
そのVectorに関しての質問です。
cloneで生成したインスタンスから、clone元のインスタンスを操作する方法を教えてください。
よろしくお願いします。

675 名前:デフォルトの名無しさん [2008/05/31(土) 17:39:38 ]
Vectorの質問というよりもJavaコレクションフレームワークの全体像から勉強しなおした方がいいんじゃないの?

676 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:41:34 ]
>>674
?

677 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 19:31:14 ]
wisdom.sakura.ne.jp/system/java/swing/swing2.html
ここを見て勉強していたのですが、
awtでは描画処理をpaint()をオーバーライドして行っていたのに、
swingではpaint()のオーバーライドは推奨されていない、と書かれています。
何故使ってはマズいのかということと、
swingでGraphicsクラスのオブジェクトを得て描画処理するのはどういう風にやるのが普通なのか教えて下さい。

678 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 19:41:32 ]
>>677
paintは、そのコンポーネント自身だけでなく、ボーダーや子コンポーネントも描かないといけないのだけれど、
オーバーライドするとそれが行われなくなってしまうのでマズイ。
swingでは、代わりに protected void paintComponent(Graphics g) をオーバーライドしてください。

679 名前:678 mailto:sage [2008/05/31(土) 19:53:30 ]
あぁ、ただし JApplet には paintComponent はありません。
paintComponent を持ってるのは JComponent の子孫だけ。
JApplet に直接描きたい場合は paint をオーバーライドするしかない。
普通は中に swing コンポーネントを配置したいから JApplet を使うのであって、JApplet に直接描くのはあんまりしないと思う。

680 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:10:30 ]
じゃ、なんでJAppletをswingのパッケージに入れたんでしょうか。混乱しませんか?



681 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:16:11 ]
javax.swingパッケージにはコンポーネント以外のクラスもいっぱい入ってるよ
ActionとかTimerとかSwingWorkerとか
↓みてみ
java.sun.com/javase/ja/6/docs/ja/api/javax/swing/package-summary.html

682 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:08:23 ]
Cよりjavaから先に勉強した方がいいの?

683 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:18:08 ]
>>682
初心者のためのプログラミング言語ガイド Part9
pc11.2ch.net/test/read.cgi/tech/1210941509/

684 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:19:38 ]
興味がある言語からやればいい

685 名前:デフォルトの名無しさん [2008/05/31(土) 22:15:20 ]
JFrameにJAppletをaddすべきかどうかいつも悩むんですけど・・
AWTでは全く問題ないのにswingはpaint関連を知っていると、少し変な設計なんですがどう思いますか?

686 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:55:57 ]
>>685
まぁ別にいいんじゃない?
気になるならFrameの上にJAppletを置けば

687 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:59:36 ]
てか、JAppletの上にJPanelを引いてなにかするべきだろ?
そうすれば同じようにJFrame上でも動作可能になる。

688 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:05:56 ]
>>686
そうするとSwingのUIから外れちゃいませんか?

689 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:11:27 ]
JPanelにLinkedList<JLabel>を配置したい場合はどうしたらよいでしょうか?

690 名前:689 mailto:sage [2008/05/31(土) 23:13:42 ]
スイマセン、やっぱりもうちょっと自分で考えてみます。



691 名前:689 mailto:sage [2008/05/31(土) 23:16:52 ]
自己解決しました。スレ汚し&連投失礼致しました。

692 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:32:25 ]
>>688
そういう細かいことが気になるんなら、687 の言うように JPanel 上にすべてを構築して、
アプレットの場合はそのパネルを JApplet の中に置き、
アプリケーションの場合はそのパネルを JFrame の中に置くようにすればいいよ

693 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:32:43 ]
正規表現を使ったプログラムを作っているのですが、
pattern = Pattern.compile("^Java.*");
matcher = pattern.matcher("JavaでHello World");
boolean b = matcher.matches();
System.out.println(b);
pattern = Pattern.compile(".*World$");
matcher = pattern.matcher("JavaでHello World");
boolean c = matcher.matches();
System.out.println(c);
このとき同じ文字列に1回1回compileとmatcherを使ってしまいます
この場合ならPattern.compile("(^Java.*|.*World$)");とまとめれば済みますが
これをもっと多数(50とか60とか)に増やすときにはものすごく長くなってしまうと思います
なんとかスッキリまとめる方法はないですか?

694 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:39:28 ]
正規表現はそれだけで1冊の本が出るように別の言語と思え

695 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:09:19 ]
50個追加していき
"ab"+"cd"+"ef"...
とやればよい。

そのUIってのは、Menuとかがswingらしくなくnative依存という事だと思うんだけど。
で、>>687はそういうことを言ってたのか。オレの強力なエスパー使っても分からなかった・・

696 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:16:22 ]
>>695
つまりPattern.compile("^Java.*"+".*World$");というように記述すればいいのですか?

697 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:48:02 ]
>>693
その質問内容だと、「愚直に|で繋げ」、としかアドバイスできないと思
う。長い正規表現の記述が長くなるのは当たり前。

やりたいことをもっとハイレベルに書けば、正規表現とは違ったスマー
トな解決方法もあるかもしれない。



698 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:16:19 ]
>>693
ふと思ったのだが、文字列を1行にしようとしてないか?
 "(^Java.*"
+"|.*World$)"
って2行にして書いてもコンパイル時にまとめられるから"(^Java.*|.*World$)"と同じ事だぞ。

699 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:46:22 ]
用途を拡張したいということだろ
ただつなぐだけなら誰でも分かる話

700 名前:693 mailto:sage [2008/06/01(日) 02:18:15 ]
やりたいのはテキストファイルを読み込んで1行ごとにパターンマッチしてるかを
判定していくプログラムですね
ただ、パターンが大量にあるのでそれをソースコードの中に全部書いていくのは
無駄が大量なのではないかと疑問に思ったしだいで
チェックしたいパターンを別のファイルに記述しておいて
そのファイルを読み込むという方法も考えましたが、改行文字の処理が面倒そうですし



701 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 02:20:24 ]
>>700 for ループでぶん回せば?

702 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 02:56:43 ]
ほとんどの場合に最初の方のパターンでマッチするから、後のパターンは無駄になる事が多いって事かな。
なら、
>チェックしたいパターンを別のファイルに記述しておいてそのファイルを読み込む
でもいいと思うけど。配列にした方が早いかも知れんが。

>改行文字の処理が面倒そう
これが良くわからん。BufferedReader#readLine()で1行ずつ読むだけだと思うのだが、何かまずいのか?

703 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:04:30 ]
そこまで考えてやることもないだろう。

704 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:08:40 ]
>>702
1行ごとに
^Java.*
みたいなのを書いていったファイルを読むと考えていますが
readline()は改行文字を読まないんでしたっけ?
それなら1行呼んでそれに+していく方法に問題は無いんですが

705 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:11:50 ]
APIドキュメントを読むのは基本
基本が出来ないやつはいつまでたっても馬鹿

706 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:19:06 ]
>>705
申し訳ございません
このような愚行でスレを汚してしまったことを深くお詫びします
>704は無視していただいて構いません

707 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:35:11 ]
ファイル名とかは含まず、画像内容そのもののダイジェストを求めたくて、
↓作ったけど、もうちょっと最適化できないでしょうか?
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30326

ファイル名とかパスを除くための、
特に46〜50行目ぐらいの↓が無駄な気がするけど、いい案が思い浮かばないです。
// (1)Normalize
BufferedImage bimg = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_3BYTE_BGR);
Graphics g = bimg.createGraphics();
g.drawImage(icon.getImage(), 0, 0, null);
ImageIcon normalize_icon = new ImageIcon(bimg);


708 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 04:33:04 ]
パス or URLが示す(画像)ファイルに含まれるデータのハッシュを使わない理由は?

709 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 04:49:01 ]
>>708
圧縮形式の違いは無視したい。
PNGやBMPとか、クリップボードから取り込んだイメージとかとか

デコード済みの画像から作りたいです。

710 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:08:05 ]
どういう最適化を望んでいるのかによる。



711 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 09:55:50 ]
無駄なコードや、性能とか

ImageIconからシリアライズ可能なイメージ情報だけ取得したり
できないのかなと思ったのだが、無い?

712 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 10:18:26 ]
>>709
java.awt.image.PixelGrabber つかって画素データ取り出してから
画素データのハッシュ値計算すりゃいいんでは?

713 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 12:16:44 ]
>>707
これでどう

static byte[] getImageHash(String path) { return getImageHash(ImageIO.read(new File(path))); }
static byte[] getImageHash(URL url) { return getImageHash(ImageIO.read(url)); }
static byte[] getImageHash(BufferedImage image) {
 int[] pixels = new int[image.getWidth() * image.getHeight()];
 image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth());
 return MessageDigest.getInstance(HASH_ALGORITHM).digest(pixels);
}

714 名前:デフォルトの名無しさん [2008/06/01(日) 13:50:51 ]
型変換についてなんですが
スーパークラスA, それを継承しているサブクラスBがあるとして
明示的なキャスト変換以外に
型をスーパAからサブBに変換する方法はありますか?

715 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 13:58:25 ]
>>714
Visitorパターン、またはダブルディスパッチ

716 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 18:45:11 ]
>>713
その手があった。サンクス
Officeサンプル画像のBlue hills.jpgで50回ほどベンチマークしてみたけど
(JDK 1.6.0_05-b13)で比較したら、new int[];BufferedImage.getRGBのほうが
残念ながら、2割ほど遅かった。
(new int[]とそこへのコピーがオーバーヘッドになっちゃうのかな?)

sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30328

>>712
PixelGrabber、考えて見まつ



717 名前:デフォルトの名無しさん [2008/06/01(日) 23:26:06 ]
testフォルダをルートとして
その中にtestaとtestbのフォルダを作って
testaフォルダの中にあるjavaファイルから
testbのフォルダの中にあるファイルデータaa.textを
ロードする場合の指定は
testb/aa.textでいいでしょうか?
実行すると
java.lang.NullPointerException
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
という例外が出るんですが

718 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:35:26 ]
フォルダ云々じゃなくてまずはパッケージの概念と実行する時のクラスパスに関して勉強して来い
お前の質問じゃ、それでもいいともそれではダメともどちらでも取れる

719 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:11:45 ]
>>717
釣りなのか?なんか笑える

720 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:32:34 ]
>>717 説明の文章だけ読むと ../testb/aa.txt



721 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:38:56 ]
     * Returns a shallow copy of this <tt>ArrayList</tt> instance.  (The
     * elements themselves are not copied.)

    public Object clone() {

        ArrayList<E> v = (ArrayList<E>) super.clone();
        v.elementData = Arrays.copyOf(elementData, size);

これ、ディープ・コピーじゃないんですか?
以前のソースがないので分かりませんが、clone()の実装がバグってるんでしょうか。

722 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 05:41:04 ]
>>721
6のArrayListの実装?
どうみてもシャローコピーなんだが。
super.clone()
は継承元ではオーバーライドされていないからObject#clone()呼び出しと同義だし、
v.elementData = Arrays.copyOf(elementData, size);
は単に各要素への参照値をクローンしたArrayListの方にコピーしているだけでしょ?
コメントにも要素自身はコピーされないって書いてあるやん。

723 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:56:08 ]
v.elementData = Arrays.copyOf(elementData, size); 

これでしょ問題なのは。

v.elementData = this.elementData

シャローコピーといえば、普通はこうじゃないの?
オブジェクト(クラス)がArrayListだから、クラスの意味からすれば
オブジェクトのフィールドにある配列の内容の方もコピーするってのは分からなくもないけど、
シャローコピーは配列の参照だけコピーで内容はやんないんじゃなかったか。


724 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:57:04 ]
> v.elementData?=?this.elementData
>
> シャローコピーといえば、普通はこうじゃないの?

コピーになっとらんがな。

725 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:05:34 ]
>>723
そもそも
> * Returns a shallow copy of this <tt>ArrayList</tt> instance.
をわざわざ引用していたり
> clone()の実装がバグってるんでしょうか
などと言っているところからみて
> ディープ・コピーじゃないんですか?
は配列のコピーうんぬんの話でなく
ArrayList#clone()のことを質問してるんじゃないの?

726 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:08:25 ]
>>724
要素が変更されたらおかしくなるし、確かにコピーになってない。
そうするとコレクションに限っては、cloneの仕様を満たすのは、やっぱこれでいいじゃないの?

727 名前:デフォルトの名無しさん [2008/06/02(月) 08:10:54 ]
これだとコンストラクタと同じだし、cloneを実装したSUNの意図がイマイチわからん。
継承しても、cloneを再実装しようかどうか迷うじゃん。

728 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:17:41 ]
>>727
インスタンスメソッドである事に意味があるんじゃね?

コンストラクタは型わかってないと呼べないし。

729 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:25:07 ]
>>728
インスタンスなら、キャストしないといけないから結局はキャスト先の型がわかんないとダメでしょ。
リフレクト使うのもいいけど、そうれなら全て継承元の(ArrayList)のキャストになってしまう。
型分かってんなら、継承していてもいなくても、ArrayListのコンストラクタでいいでしょ。
イマイチわかんないな。
cloneが実装されている標準のクラスはあまりないから馴染みないけど、どういうときに使うんだ?


730 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:41:41 ]
>>729
(T)arraylist.clone() のキャスト先の型Tは
T extends Cloneable & List みたいちょっとだけでも抽象化できる。
コンストラクタ呼ぶ時ほど具体的な型名は必要ない。



731 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:58:55 ]
>>727
配列の clone() と似た動作を目指しただけだと思うが。

片っ方を変更したら、もう片方も変更されるようなものが欲しければ
List#subList(int, int) 使えって言われるだろうし。

732 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:58:40 ]
インスタンスメソッドでArraylListであることは最低限保証できるってことだと思う。
それなら、cloneじゃなくてdupとか別の名前でもいい気がしたけど
Vectorのころにcloneを実装しちゃったからその名残かな。

733 名前:デフォルトの名無しさん [2008/06/02(月) 15:10:46 ]
Appletが起動したらTextFieldにカーソルが点灯している状態にしたいのですが
教えてください。FrameやWindowはつかってません。


734 名前:デフォルトの名無しさん [2008/06/02(月) 15:53:18 ]
>v.elementData = this.elementData 

シャローコピーならこれでコピーされてるでしょ。
どうせコピー元が変更されたり追加されて内部の配列の参照が変更されても、
コピー先はその時点での状態がコピーできればいいんだし。
コピーになってないとかいって、意味わかんないな。

v.elementData = Arrays.copyOf(elementData, size);  

でも実質同じだから冗長と言えなくもない。


735 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 16:21:15 ]
>>733
検索した
ttp://www.alles.or.jp/~torutk/oojava/maneuver/1998/swing/swing_ja.html
>また、フォーカスを持つコンポーネントをプログラム中から指定することもできます。JComponentクラスのメソッド、requestFocus()です。

これでいい?

736 名前:デフォルトの名無しさん [2008/06/02(月) 17:24:05 ]
sample.jsp

<%@ page contentType="text/html;charset=Shift_JIS" %>
<%! String a=""; %>
<%
//↓これを書くとjsp:paramで何故かエラー
request.setCharacterEncoding("JISAutoDetect");
a=request.getParameter("nam");
%>
<html>
<head>
<title>sample</title>
</head>
<body>
<jsp:include page="include.jsp">
<jsp:param name="param" value="<%=a %>" />
</jsp:include>
</body>
</html>

737 名前:736 [2008/06/02(月) 17:26:02 ]
include.jsp
<div align="right">
<%= request.getParameter("aaa") %>
</div>


実行結果:
org.apache.jasper.JasperException: An exception occurred processing JSP page /sample.jsp at line 16
(16行目は<jsp:include page="include.jsp">の行です)


何故かjsp:includeでUnsupportedOperationExceptionになるんですが。
<jsp:include page="include.jsp" />と閉じると何事も無く実行され、
request.setCharacterEncoding("JISAutoDetect");をコメントアウトしても実行できます。

なぜでせう?

738 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:15:28 ]
>>734がすごいことを言っている件

739 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:24:31 ]
super.clone();使ってるから
v.elementData = this.elementData 
の代入すら必要ないんじゃないの?

740 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:28:47 ]
何かアプリケーションを作りたいと思ってJavaで開発用エディタを作ったのですが、
これを個人毎に文字の色とかコンパイラのURIとかの各種情報を保存して
起動時に設定するようにしようかと思ったのですが、
こういう設定の保存ってどういう形式で行うのが普通なのでしょうか?
「設定.txt」とかいう形で保存するのも何か変な気がします。



741 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:54:04 ]
サンプルプログラムでは、*.propertiesが多いね

742 名前:デフォルトの名無しさん [2008/06/02(月) 19:11:39 ]
そのclone()についてなんですけど、java.lang.NumberやStringなどはclone()実装されてないのがよく分からないんです。
コレクションの方はclone()あるのに、値の方はなんでないんでしょうか。

それもthis用のコンストラクタとでも言うのか、それ用のコンストラクタすら用意されてないのもあり、
もしコピーするならかなり遠回りな操作をしなければならないですよね。
イミュータブルだとしても、classもfinalのも多く、設計上に意図としてはインスタンスのコピーはするなってことなんですか?

743 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:22:01 ]
> イミュータブルだとしても、classもfinalのも多く、設計上に意図としてはインスタンスのコピーはするなってことなんですか?
Immutableなオブジェクトのコピーとって何したいの?

744 名前:デフォルトの名無しさん [2008/06/02(月) 19:31:05 ]
内部が変更できるかどうかじゃなくて、インスタンスのコピーの話なんですけど、ごっちゃにしてませんか?

745 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:33:23 ]
何したいとかじゃなくて、そもそもそのAPIがないなら何も出来ないでしょw

746 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:40:30 ]
>>740
サラッとスゴい事をおっしゃる。

747 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:47:31 ]
>>742
cloneを実装してないのは、たぶんイミュータブルなインスタンスをコピーできても、うれしいことが特に無いからじゃないかな
finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない

748 名前:デフォルトの名無しさん [2008/06/02(月) 20:02:07 ]
>finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない 

こういうこと平気で書いちゃうあたりが、イミュータブルとかextendsとかを分かってないんだろうね。
インスタンスとcloneも同じく、ごっちゃにしてるんだろうw

749 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:02:09 ]
>>742
もし仮にNumberやStringをコピーできるとしたら、それがどんな場面で役に立つ?

750 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:04:22 ]
>>741
ありがとうございます!
propertiesをキーワードにググって実装してみたところ出来ました!

>>746
すいません、やっぱり.txtで保存するのはおかしいですよね;
直感的に変なのは分かるのですが、テキストファイルだとデータと値の関係がないとか、
そういうことが.txtを用いない理由なんでしょうか?



751 名前:デフォルトの名無しさん [2008/06/02(月) 20:29:52 ]
>>749
仮にも何も、もう設計上出来ないんだよ。
まあ書いてもいいんだけどね(笑)
インスタンスをコピーするってことはどういうことなのかをよく理解すればいいんじゃないの?

752 名前:デフォルトの名無しさん [2008/06/02(月) 20:30:47 ]
>finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない  

こういうこと平気で書いちゃうような人だしなぁw

753 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:58:23 ]
>>751
俺がバカだからか、よくわからないので教えてほしい。
インスタンスをコピーするってことはどういうことなんだ?
コピーなんかせずに同じインスタンスを使えばいいじゃないか?

754 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:00:45 ]
>>750
いや、スゴい事ってのは
>Javaで開発用エディタを作ったのですが、
の部分。
質問するより答える立場の人でしょ。

755 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:01:58 ]
>>721に戻ると、
・これは普通shallow copyと言わないのでは?

という話だよね。たしかに「オブジェクトのshallow copy」とは言えない。
フィールドにぶらさがったものを複製しているからね。
でも、「(このオブジェクトが表している/保持している)配列のshallow copy」ではあるでしょ。
参照の羅列としての配列を複製しているだけで、配列の要素をいちいち複製していないから。
〜 完 〜

てことじゃないのかい

756 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:04:53 ]
> 配列の要素

配列にぶらさがっているオブジェクト
と言った方がいいか

757 名前:デフォルトの名無しさん [2008/06/02(月) 21:21:20 ]
clone()したくローン先の方で変更したら、クローンもとのオブジェクト
でも変わる事が期待されるでしょ。
o2=(...) o1.clone ();
o1.set (1,val)
シャローコピーって書いてあるなら、このときo2, o1の保持してるvalは同じであってほしいよね。
今さらだから、APIドキュメントの方をそう書き直せばすむんじゃないの?
確かVector.clone()の記述はそんな風に書いてあった(jdk 1.5だけど)。
ドキュメントにうそ書いてあると、実装するとき困るんだよ。

758 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:25:47 ]
>>757
> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。

クローンを殴ったらクローン元も痛みを共有するわけですね、わかります

759 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:43:53 ]
>>721
> (The elements themselves are not copied.)

って但し書きの意図を汲めば、まー、まず迷わないと思うんだけどどうよ。
でも、ここで「elements」を「参照」ではなく、「参照先のインスタンス」だと解釈しなければならないってのが、
微妙といえば微妙なのかな。ふつうわかるんじゃね?名前を書き写さずに何が名簿のcloneなのかっていう。

>>757
> シャローコピーって書いてあるなら、このときo2, o1の保持してるvalは同じであってほしいよね。

全然思わない。(一応言っておこうw)

760 名前:デフォルトの名無しさん [2008/06/02(月) 21:58:51 ]
ああ、わりい。飯食ってた

>clone()したくローン先の方で変更したら、ローンもとのオブジェクト 

気がつかなったかけど笑えるね。たぶん自己破産の相談なのかな?

>全然思わない。(一応言っておこうw) 

長年使ってると、全然思うのが、まあ普通なんだけどw
その挙動がArrayListにふさわしくないなら、clone実装すんなってこと。もしくはAPI DOCのバグを書き直せ。
どうせ翻訳の人も見てんだろうしSUNに言っといてよ。頼むよ。



761 名前:デフォルトの名無しさん [2008/06/02(月) 22:03:40 ]
>>754

>Javaで開発用エディタを作ったのですが、 

実はTextAreaをaddしただけでも、偉そうに言えばこうもいえるんじゃないの?
どう凄いのかわかんないんだけど。

762 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:25:02 ]
>>760
一応言うだけ言ってみるけど、トリップつけてくれないかな

763 名前:デフォルトの名無しさん [2008/06/02(月) 22:27:39 ]
なんで?

764 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:28:17 ]
無視したいから

765 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:34:36 ]
>>760
>長年使ってると、全然思うのが、まあ普通なんだけどw

悪いけど風呂入ってくるから、全然思わないにもう一票入れておいてよ

766 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:39:21 ]
>>754,>>761
開発用「エディタ」なので、ホントIDEみたいに立派なもんじゃないです><;
インテリセンスとかキーワード色分けとかオートインデントとか
IDEの中で自分が欲しい部分だけ取って軽く書きたいときに使う用に作った程度です。

普段はC/C++畑でJavaは全然なので、勘違いさせてすいません。。

767 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:56:37 ]
質問です。
Component.createImage(int width, int height);
でcreateImageしたのですが、これに透過色を設定したgifファイルをdrawImageすると透過される(ハズ)の部分が白で塗りつぶされた状態になってしまいます。
試しにcreateImageを使わないでただgifファイルをdrawImageすると透過はされていたのでgifファイルには問題がないように思います。
また、createImageしたImageにgifファイルを書き込まずImageをdrawImageしても白で塗りつぶされてしまっています。


768 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:06:34 ]
>>767
component.getGraphicsConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
でイメージを作って、gifを乗せる前に
((Graphics2D)g).setComposite(AlphaComposite.Src);
するといいよ

769 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:17:10 ]
>>757
> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。
期待されない。

> 確かVector.clone()の記述はそんな風に書いてあった(jdk?1.5だけど)。
書いてない。
> Returns a clone of this vector. The copy will contain a reference to a clone of the internal data array,
> not a reference to the original internal data array of this Vector object.

770 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:20:26 ]
>>768
ご丁寧にどうもありがとうございます。
無事透過したまま書き込むことができました。

それにしても他のソースで使ってるコードなのに突然動作が変わるなんてなんだか怖いです。
精進します・・・。



771 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:25:59 ]
>>757 
> clone()したくローン先の方で変更したら、クローンもとのオブジェクト 
> でも変わる事が期待されるでしょ。 
それをしたいなら、o2=o1;でいいよーな。

772 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:31:41 ]
charにnullが代入できない。
納得いかない。

char test1 = '';

char test2 = null;

どっちも駄目なんだよな。

773 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:33:58 ]
納得いかないかもしれないが、そういうものだと思って使うしかない。

774 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:37:25 ]
新しいプログラミング言語が生まれることを期待したい!!

775 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:39:37 ]
新しいプログラミング言語はすでに色々あると思うけど・・・
C#などはいかが?

776 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:52:21 ]
>>772
> char test1 = '';

これはないでしょw
Unicodeだっつってんだからその範囲内でなんとかしようよ

777 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:57:35 ]
Character c = null;

778 名前:772 mailto:sage [2008/06/03(火) 01:13:41 ]
返信ありがとう。

int型にもnullを代入できないや・・・。
昔は代入できたよね?
勘違いかな?

779 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 01:23:15 ]
>>772
あそうか、「何charにnull突っ込んでんのww」と未熟者に突っ込む機会喪失問題か

780 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 01:23:41 ]
違ったらしいなw



781 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 01:30:42 ]


782 名前:デフォルトの名無しさん [2008/06/03(火) 01:32:05 ]
web.xmlの<servlet>タグでサーブレットのクラスを指定すると、それまでアクセスできてたjspにアクセスできなくなるんですけど、、なんで!?


783 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:19:38 ]
>>778
nullは参照型のリテラルであり参照型からプリミティブ型への暗黙の型変換は
プリミティブ型のラッパークラスからのauto-unboxingによるもの以外にない

784 名前:778 mailto:sage [2008/06/03(火) 02:37:23 ]
>>783
暗黙の型変換を使えば、プリミティブ型にnullを代入出来るって言ってるのかな?
ちょっと判り難かったから・・・すみません。
とりあえず有難う。
もう寝なきゃ・・・。

785 名前:デフォルトの名無しさん [2008/06/03(火) 02:39:33 ]
>>769
君、しつこいよ。荒らしと同じだよ。
そういう君独自の解釈はもういいから、早くSUNの翻訳担当の人に言っといてよ。

786 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:41:40 ]
>>783
場を和ませたい人がいるのか、たぶん釣りだと思うんだがww

787 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:42:52 ]
>>785
ごめん、これで最後にするけど、>>764以降漏れは無視してるから

788 名前:デフォルトの名無しさん [2008/06/03(火) 02:59:29 ]
>>787
一日中2CHに張り付いてんですか…邪魔する気はありませんけど、ホント、ご苦労なことですね…

789 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:29:09 ]
>>784
釣りじゃなくてマジ?
プリミティブ型にはそもそもnullという概念自体存在しない。

790 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 05:58:03 ]
もしSQL流のNULLがJavaにあったらキッツイ気がするな



791 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:57:57 ]
>>772
charに無効な値を入れたいなら、U+FFFFというソレ用のコードポイントがある。


792 名前:784 mailto:sage [2008/06/03(火) 11:35:32 ]
>>789
大マジまんだけど、でもようやく理解できた。
int型にnullへのポインタ突っ込むのは無理があるもんな。(遠い昔C言語をやっていた頃の記憶を呼び起こした。間違ってるかも。)


>>791
それ使える。
int(Unicode補助文字)ならU+FFFFFFFFって訳ね。

793 名前:784 mailto:sage [2008/06/03(火) 11:43:15 ]
>>784
>>791
感謝の言葉を忘れていた。
ありがとう。

794 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 16:40:14 ]
nullは-1でいいのか?0がいい感じの気がするけど。

795 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:55:27 ]


796 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:57:04 ]
一貫してれば具体値は何でもイイよ。

797 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:16:55 ]
質問させてください。
Eclipseの使用を考えています。
そのためには、どの程度のPC性能が必要ですか?

現在使用中のPCは、
CPU Pentium4 3.0GHz
MEM 1Gbyte
です。



798 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:20:14 ]
どなたかご教授願います。
-------------------------------

class sample1
{
public static void main(String args[])
{
double ans3 =(double)5/3;

System.out.println("5÷3は" + ans3 + "です。");

}
}

---------------------------------

上のようなソースがあるとして、
5/3の前に(double)の表記を入れる理由というのはなぜなんでしょうか?
すでにdouble ans3 のところでdoubleと書いてあるのでans3には、
ちゃんと小数点が含まれた答えが表示されると思うのですが。
もしかしてアホすぎる質問でしょうか

799 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:20:52 ]
>>797
大丈夫だと思うが、とにかく落としてきて軽く動かしてみ
どのぐらいが「快適に動かせる」と感じるかは、個人差がある

800 名前:797 mailto:sage [2008/06/03(火) 20:34:03 ]
>>799
> 大丈夫だと思うが、とにかく落としてきて軽く動かしてみ
とりあえず動くようで安心しました。さっそく、インストールしてみます。
回答ありがとうございます。



801 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:21:38 ]
>>598
5/3するときにはそれがdouble型に代入されるなんて気にしちゃいない。
つーか、思ってるだけじゃなく、キャストのありなしで結果が違うことくらいは試せ。


802 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:34:41 ]
>>798
www.lcv.ne.jp/~kenmio/yomimono/yomimono4.htm
ここの「5割る2は2?」って所を見ると良いよ。

803 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:46:15 ]
>>802
ありがとうございました。
これで寝れそうです。

804 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:48:18 ]
>>803
マルチ先にも断っとけよ。

805 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:39:53 ]
設計に関して質問があります。

今作っているソフトの中でJButtonやJTextなどのオブジェクトが多数出現します。
こうした場合配列にしておくと
JButton button[]=new JButton[BUTTONNUM];
for(int i=0;i<button.length;i++)
{
button[i].〜
}
みたいに一括で処理できるものもあるので便利なのですが、
個別の名前(例えばdeletebutton)を付けた場合に比べて
button[1]、button[2]では何のボタンか分かりづらい面があります。

こういう場合、一般的にor皆さんの場合どうしているか教えてください。

806 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:43:31 ]
ちなみに今現在の処理方法ですが、
HashtableとgetIndex(String)という関数を作って、

Hashtabel hash=new Hashtable();
hash.put("delete","0"");
hash.put("prev","1");
・・・
public int getIndex(String buttonname)
{
return Integer.parseInt((String)hash.get(buttonname));
}
button[getIndex("delete")]という風にしています。

807 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 03:46:46 ]
自分では使ったことのない機能:
enum MyButton { DELETE, ... }

... button[MyButton.DELETE] ...
(いきなり質問の条件を無視してみる)

808 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:08:34 ]
>>806
そういうハッシュテーブルの使い方をするくらいなら、
間接的に配列のインデックスなんかに結びつけるんじゃなくて、
HashMap<String, JButton> buttons = new HashMap<String, JButton>();
buttons.put("delete", new JButton());
buttons.put("prev", new JButton());
...
buttons.get("delete").〜
みたいに名前とインスタンスを直接結び付けておいてもいいような。
>>805のように一括して処理したいようなループを回すときは、
for (JButton button : buttons.values()) {
button.〜
}
のようにできるし。

809 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:30:13 ]
>>807
たぶんそれコンパイルできない
Cの列挙型ではないからもしやるならbutton[MyButton.DELETE]でなくbutton[MyButton.DELETE.ordinal()]だ

810 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 08:03:06 ]
>>805
個別の名前をつけて配列にも入れておけばいいじゃない
JButton deleteButton = new JButton();
JButton prevButton = new JButton();
...
JButton button[] = { deleteButton, prevButton, ... };



811 名前:デフォルトの名無しさん [2008/06/04(水) 08:45:22 ]
ボタンいくつ貼り付けてるの?

812 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:26:13 ]
>>810
たぶん、そういう生成もループで済ませたいんじゃないかな。わかんないけど。
たしかに「多数」ってどのくらいなのか気になるw

813 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 12:11:24 ]
>>805
一括に処理したいというのと個別に名前で指定したいという要求はバッティングするんじゃ?

本当に希望しているのは、個別に指定したいけど、コード量は減らしたいってだけじゃないの?

それなら、
private JButton getButton(String name,...){}
JButton delete = this.getButton("削除",...)
みたいなビルダーメソッドを作ればいいのでは

814 名前:805 mailto:sage [2008/06/04(水) 12:57:50 ]
皆さんありがとうございます!
ですね、一括で処理したいのは生成も含めて、
パネルへの追加とかフォントの指定とかまとめて共通の処理を行う部分で、
個別に判断する所というのはActionListenerを実装したりする部分なんかです。
色んな方法を聞けて勉強になりました、列挙体に至ってはJavaであることを知らなかった…。
今日学校からやってみます、本当にありがとうございます!

ちなみにリネーマ&ファイル整理用のプログラムなのでボタンは今は
プレビュー、リネーム、ファイル検索、削除、移動、ディレクトリ表示くらいですが、
テキストフィールドの方が
ワイルドカード、正規表現、前方一致、後方一致、ユーザ定義用etcとたくさん指定出来るように作ってあって11個くらいといった感じでしたw

815 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:03:17 ]
>>57-58を見て思った。

>>57のような意味不明なレスをすると自分のレス番号が該当になったとき
>>58のように「おかしい」とおもわないといけない儀式でもあるのか?

おかしいと思ってる>>58まったく理解できないのだが。
別の意味でおかしいとは思うけどさ

816 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:07:34 ]
君がThreadとか理解してるなら気にしなくていいんじゃない?

817 名前:デフォルトの名無しさん [2008/06/04(水) 17:09:58 ]
結局ビルダーパタンで落ち着いたのね。
せいぜいそれぐらい(11個)とか思ったけど、チェックボックス(とラベル)が100個超えてるUIのパターンもあるから。
それならソースコード11行とか100行にわたり書けばいいんじゃないかと思うけど。

818 名前:デフォルトの名無しさん [2008/06/04(水) 17:27:06 ]
ここで聞くことかどうかわからんが。

大昔、いろんなラベルがついた箱が線でくっついて
うにゃうにゃ(バネモデルか何かで)動くデモってのを見た記憶があるんだが、
うまく見つけられなくて困り中。

誰か在処か名前をご存じでしたら教えてください。


819 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:39:42 ]
スレッド番号100から、スレが経った日付を列挙してみた。
100 2007/03/31
101 2007/04/30
102 2007/05/29
103 2007/06/27
104 2007/07/27
105 2007/08/28
106 2007/09/19
107 2007/10/18
108 2007/11/07
109 2007/11/25
110 2007/12/15
111 2008/1/13
112 2008/2/8
113 2008/3/1
114 2008/4/5
115 2008/5/12
Javaスレの進行速度は月1ペースか。今から4年ほど前はスレが50くらいだったのに
急激にスレの消費速度が加速していって2007年3月末の時点で100になったときは
そのスレッドの消費速度の速さには驚いたものだ。

Java登場当初にはAppletの影響でJavaは遅いなどと言われC/C++プログラマの間でも
不評が多く、プログラム板、プログラマ板で頻繁にJava叩きが行なわれていたにも関わらず、
これほどにまでJavaの知名度の人気が上がるとは誰が予想しただろうか。M$が2000年にC#を発表した
とき、一部の者やM$の関係者は、「これからはC#が普及し、Javaは衰退する」と言っていたにもかかわ
らず、あれから8年経った今でもJavaは衰退する様子を見せず、後から登場したC#はほとんど普及し
ていないという有様。

気がつけばJava関連の求人も毎年毎年増え、Javaだけでも食うに困らない状況にまでなった。
書店のコンピュータ関連書籍コーナーにはJavaだけで占められた本棚が大きく占有していった。
今では書店ではAjaxやWeb関連書籍が多いが、WebにJavaを利用することはもはや当たり前に
なった感がある。M$のC#を揺るがした背景にはGoogleの影響が少なからずあるのではないかと思えてくる。

820 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:40:44 ]
この調子で行けば、2010年にはスレは
スレは12月で122、2009年1月で123、2010年1月で135、2011年1月で147、
2012年1月で159、2013年1月で171、2014年1月で183、2015年1月で195、
2016年1月で207、2017年1月で219、2018年1月で231、2019年1月で243、
2020年1月で255にまで伸びるだろう。

その頃までに、2chがあるのか、今の2chが存在しうるかどうかはわからないが。
blogなどの外部のコミュニティに徐々に質問者が移行するときがやってくるだろうか?

Javaは何十年経っても古いプログラムを動かすことができる。
だからその頃にこのスレがなくなってもJavaは相変わらず健在だろう。



821 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:41:45 ]
>>815
なんか口に出さないで指指された気分になるじゃん。
m9(^Д^)

822 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:43:24 ]
懐かしいAAだな

823 名前:デフォルトの名無しさん [2008/06/04(水) 18:25:57 ]
4年も張り付いてるみたいだしw

824 名前:デフォルトの名無しさん [2008/06/04(水) 18:29:03 ]
月に50万円稼ぐ派遣の狼君が捕まっただろ。
人殺し食っちゃったんだっけな?

C++/C#好きで、宗教(GNU?)狂信者だって噂だよw
そんなやつと同じにされてもね。

825 名前:デフォルトの名無しさん [2008/06/04(水) 18:32:36 ]
どこかのIT記事で「天才20歳(何々賞受賞!)」とかの奴もいたけど、似たような狼君じゃないの。


826 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:35:07 ]
>>818
JDKに付いてるデモなら多くないんだから順番に試していけばいいじゃないかw
たぶんアプレットのデモの中のGraphLayoutかな?

827 名前:デフォルトの名無しさん [2008/06/04(水) 18:44:38 ]
>>808>そういうハッシュテーブルの使い方をするくらいなら、 

そういうひねくれた方法を見つけるほうが実は凄いんだけどね。(実用でもないし、使わないけど)

>>806


828 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:53:39 ]
>826

おお、まさしくコレだ。
てっきりLayoutManagerがらみかと思ってスルーしてた。スマン&&ありがとう。



829 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:08:37 ]
>>827
どういう意味だ??

830 名前:デフォルトの名無しさん [2008/06/04(水) 19:18:13 ]
バグの元になるでしょ。



831 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:42:25 ]
>>824
おいおい、マジかよ。なんでそこまで知ってるんだ。
どこかのスレで話題になってるのか?

832 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:44:50 ]
>>808 >>827見て思った。

>>808のコードは
ハッシュでボタンを区別しているようだが・・・

これこそ、enumを使うべきじゃないかね


833 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:54:06 ]
> するくらいなら
だから本当は>>808みたいなのもアレだけどハッシュならハッシュで別に添え字を値にしなくてもってことじゃない?
しかも整数値でなくてわざわざ文字列を値にしているし

834 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:56:54 ]
>>831
板違いの話題だからマ板池

835 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:27:38 ]
>>833
誰かみたいに死体の肉を食べちゃったわけじゃないし、まーいーじゃん。

836 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:26:21 ]
>>823
張り付くってどういう意味か。久しぶりにJavaスレを見たんだけどな。
気がつけばスレがここまで進んで驚いているんだよ。

2chで初めてJavaスレに書き込みをしたのは
もっと前だけどな。

837 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:26:56 ]
>>834
なんとなくどこのスレかはわかったが。
誘導スレを紹介してくれないか

838 名前:デフォルトの名無しさん [2008/06/05(木) 02:48:44 ]
ここはスルー?
助言求む!

839 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:41:54 ]
>838
おまい誰だよ。煽りとかじゃなくてマジで

840 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 05:33:41 ]
誤爆か?



841 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 10:52:56 ]
つまんねー

842 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:28:45 ]
swingプログラムの中でメニューやボタンから別のウィンドウを表示させる際に
class Window2{
Window2(String title){
JFrame frame2=new JFrame(title);
・・
frame2.setVisible(true);
}
}
こういう風にもう一つのクラスを作ってnewした場合、
setCloseOperation(JFrame.EXIT_ON_CLOSE)を設定すると
呼出し元のウィンドウも含めてプログラム全体が終わってしまいます。
WindowListenerで設定しようかと思ったのですが、
明示的に破棄するウィンドウを指定するにはどうしたら良いのでしょうか?

843 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:30:56 ]
DISPOSE_ON_CLOSE のこと?

844 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:37:46 ]
DISPOSE_ON_CLOSE 相当の処理を自分でやりたいってことなら、
DO_NOTHING_ON_CLOSE にして windowClosing で dispose を呼ぶ

845 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:38:43 ]
>>843
あああすいません、それですね!
何かハンドル渡してウィンドウ指定して破棄みたいなやり方かと思ったらあったのかorz

846 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 12:46:56 ]
>>833
添え字というかなぜかStringになってるところが
かなりヤバイね

847 名前:デフォルトの名無しさん [2008/06/05(木) 14:45:25 ]
JSONみたいにXMLのマージを行うことの出来るJavaのライブラリってある?

848 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:22:02 ]
eclipseでJavaの開発を始めたばかりのひよっこです
JUnitの使用に慣れておけ、と言われました
明日一日使ってJUnitの勉強をするつもりですが、参考になるサイトがあったら教えてくださいです

849 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:29:20 ]
いった奴に責任があるからそいつに聞いておくんなさいまし。

850 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:44:22 ]
サンのJDKとOPENJDKってやつは同じものなの?
どっちもフリーで使える?



851 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:00:39 ]
>>721
今更だけど。。もしそこで内部の配列をコピーしなかったら、
要素が増えて拡張されたときに一方の配列がとりかえられて、泣き別れになるよね。

852 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:02:46 ]
ていう以前に要素数のカウンターが別管理になるか

853 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:17:00 ]
JUnitとか意味ない

854 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:30:02 ]
大体、単体テストツールの使い方なんて
教えてくれるもんじゃないの?

855 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:30:12 ]
>>721 >>851
というかEffective Javaを読めとしか

856 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:30:47 ]
>>848
@ITとJUnitでググレ

857 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:33:07 ]
JUnitの使い方だけ覚えてもServletやDBやHTTPセッションのテストは
容易ではないからなあ。

JUnitだけでなくJakarta Cactus、DBUnit、HTTPUnit、MockObjectの
使い方まで覚えないといけない。

どうせならTestNGも覚えておくことをお勧めしておく。
JUnitはJUnit4が出たのでそれも覚えておくことをお勧めしておく。
ついでにAntやMavenからJUnitを起動する方法も覚えておくことをお勧めしておく。

858 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:41:39 ]
JUnitとかのテストツールの使い方覚えるよりも、テストの書き方覚えたほうがいい。

859 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:57:11 ]
テストの書き方はチーム内のルールがあるのでは?

「JUnitに慣れておけ」と言った当事者に質問しろ


860 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:45:34 ]
つまり名目的なJUnitのパターンを研究すれば回避の道が開けるかもしれないわけか



861 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:50:54 ]
Cactus や HttpUnit は、めんどくさいだけで
あまり意味がないと思うのが本音。

テストケースを通すばかりのクラスになり、画面を見れば一目瞭然の問題の
エラー、あるいは仕様的にグレーだけど明らかに改善したほうがいい問題
に気がつかないことが多い。
テストケースの作り方が悪いのだろうけど。あと見た目の問題とか。

顧客に「テストの時間一杯取ったのに、こんなのにも気づかなかったの?」と怒られる。

うちのチーム(Webアプリ)は、Unit テストは Serviceクラス、Utility クラス、DAO まで。
UI レイヤ(Struts だったら、Actionクラス、ActionForm、jsp)は、Excel でテスト仕様書起こして
手でやっている。

ケントベックの言う、「いつでも、再帰的にテストをできるようにする」はUIレイヤでは実現できてないけど、
このやり方が、かけるコストと、目的に対する効果が一番バランスが取れていると思っている。

テストクラスの実装にいつも時間がかかるのをどうにかしたいと思っていて、
slenium とか fitness という単語は知っているのだけど、まだ試してみてない。

というわけでみなさんどうしてますか?



862 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:44:52 ]
ほぼ>861と同様だけど、DAOは検索系しかやらんな。
S2Daoなり使っていると特に。
逆に画面系は入力チェック系だけはHttpUnitとか使う

863 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:24:21 ]
>>861
一番面倒くさいのはCactusだな。

そんでみんなしてMockObject使って
HttpServletResponseとHttpServletRequestオブジェクトを偽装して
Servletのテストしているんだよな。

864 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:28:04 ]
>>861
Seleniumでググってみたら
これはなかなか使い勝手がよさそうだ

865 名前:デフォルトの名無しさん [2008/06/05(木) 22:37:29 ]
あんこ1
あんこ2

あんこ3
あんこ4


あんこ5
あんこ6

あんこ7

このようなテキスト構成のときに
以下のように、改行が2つ続くとき改行したいのですが
どのような制御をすればよいでしょうか

あんこ1、あんこ2、あんこ3、あんこ4
あんこ5、あんこ6、あんこ7

866 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:52:48 ]
テキストはファイルからか?
readLineで空文字だったらフラグを立てる
次も殻文字だったら改行する
ってループではどうかね

867 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:55:37 ]
>>865
とりあえず、マルチポストはやめとけ

868 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:35:42 ]
あんこってなんだ?
うんこのオマージュか?

869 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:51:18 ]
マルチ氏ね

870 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 07:14:34 ]
はわわー



871 名前:デフォルトの名無しさん [2008/06/06(金) 12:56:12 ]
基礎的な質問で申し訳ないのですが
HTTPURLConnectionのtimeout,wait,retryの上手なやり方が有ったら教えていただけ無いでしょうか
TimeoutExceptionを活用すべきなのかどうかも分からない素人です
どうかお願いします

872 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:12:56 ]
まずTCP/IPとHTTPを学んで来い話はそれからだ

873 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:48:52 ]
あるjavaアプリがあって、一連の処理がどのようなクラスのメソッドを実行してきたかをダンプしたいと思っています。
Linuxでいうところのstrace見たいなものです。
プロファイルというものを知りましたが、使用されてメソッドのサマリの表示だけで、
呼び出し順番がわかりません。
実行した順番に呼ばれたメソッドをダンプできる方法はありますでしょうか。

874 名前:デフォルトの名無しさん [2008/06/06(金) 13:54:14 ]
872
分からないなら無駄な返答は不要です

875 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:59:24 ]
>>872
Thread.currentThread().getStackTrace() を使う。
あとはデバッガで起動するとか。

876 名前:875 mailto:sage [2008/06/06(金) 13:59:52 ]
失敗。>>873 ね。

877 名前:871 [2008/06/06(金) 14:14:13 ]
あさっての答えが返ってきたかと思ってびっくりしたよ
気をつけてね

878 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:23:23 ]
Java "execution trace"
みたいな話じゃないの。

879 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:41:03 ]
JavaでWinのexplorerみたいなのを作りたいのですが、
どうしたら実装出来るでしょうか?
左の方はJTreeで頑張れば出来そうなのですが、
右の選択したディレクトリの中身が表示される部分がよく分からないです。


880 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:44:44 ]
JListでいいんじゃ?



881 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:50:28 ]
>>875
それは可能なのですが、ダンプをしたいまま差にそのときの、になってしまいます。
一連の処理(時間)の間に呼ばれたメソッドの履歴が取得したいです。
詳しくは解かりませんが、下記のページで実行結果からシーケンス図を作成しています。
イメージとしては、これのメソッドリストがほしい感じです。

AA.aa()
BB.aa()
AA.bb()


882 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:39:39 ]
eclipse に ajdt というプラグインを入れて、
AspectJ というのを使って関数の前後でログ出力をするようにしてみたのですが、
eclipse でデバッグするのがやりづらくなりました。

ブレークポイントをはりつけても目的の処理でブレークするのが
うまく出来なくて困っています。

AspectJ を使ってもデバッグしやすい方法があったら教えてください。

883 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:51:32 ]
>>881
デバッガに詳細トレースログを取る機能が無いか確認。
無いなら JPDA 使って自分でデバッガを作る。

884 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:16:33 ]
OpenJDK って Sun の JDK の代わりとして充分使える?


885 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:16:22 ]


886 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:42:09 ]
javaのGuiにおけるレイアウトがさっぱりで全然やりたいレイアウトに出来ないので質問させてくださいorz


画面を縦三分割にしたいのですが、それぞれ等隔ではなく真ん中は広く、
またそれぞれの横幅を縮めたり伸ばしたりするレイアウトにしたいのですが
こういうのってどうしたら出来るのでしょうか?


887 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:10:25 ]
真ん中は引き延ばすってこと?
それならBorderLayoutでも十分そうだけど・・・
手打ちならGridBagLayoutとかSpringLayout使えばかなりのレイアウトは実現できるよ。

888 名前:デフォルトの名無しさん [2008/06/07(土) 21:34:42 ]
それは、レイアウトじゃなくてコンポーネントじゃないか?

889 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:45:03 ]
>>887
レスありがとうございます。
そうです、幅は1:3:1くらいで真ん中だけ大きくしたくて、
かつブラウザのサイドバーみたいに横幅を調整出来るようにしたいのです。
GridBagLayout、難しそうだけどググりながらちょっとやってみます。

>>888
すいません、正直どういう意味か分からないですorz

890 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:45:31 ]
境界をつまんでサイズ調整できるやつはJSplitPaneな。




891 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:26:34 ]
>>890
ありがとうございます!!
頭悪すぎてこんな時間までかかってしまいましたがなんとか出来ました!

しかしJavaはC/C++に比べて簡単にGui部品が使えるのに、
レイアウトだけは非常にやっかいですね…。


892 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:38:36 ]
レイアウトの簡易さはC#にかなわないなJavaは

893 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:53:33 ]
C#に限ったことではないが、固定配置+Dock/Anchor方式は
直感的に自由度の高いレイアウトが出来るからな

894 名前:デフォルトの名無しさん [2008/06/08(日) 04:49:43 ]
しかし一度は位置したコンポーネントを動的に動かしたりは出来ない。

895 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 06:19:46 ]
NetBeans6のレイアウト機能はほぼ直感的にレイアウトできるようになっている

896 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 09:14:21 ]
ま、レイアウトは言語そのものの問題じゃないから。

897 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 10:05:09 ]
一度配置?

898 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:58:01 ]
C#というか.NETも、Swingのような窓サイズに合わせた動的配置のコンポーネントが用意されたよ。Ver.2.0くらいから。
しかしあまり使われていないようだ。

899 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:18:36 ]
javaじゃ動的レイアウトがあたりまえだからなぁ。


900 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:46:45 ]
C#はあくまでもjavaの模造品の域を超えてないからなあ
Cの方は次に期待だよな



901 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:05:54 ]
X-WindowsやTKをベースに考えるなら動的レイアウトなのは自然だよね。
WindowsFormのDockプロパティはオマケみたいなもので、
動的レイアウトはWPFで全面採用になってる。
ただ動的レイアウトはポトペタ系のツールが作りづらいのが難点。

902 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:47:39 ]
それで最終的にはCUIに仕上がるんですね。わかります。

903 名前:デフォルトの名無しさん [2008/06/09(月) 11:16:33 ]
cは廃れるだろうね

904 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:23:20 ]
X-Windowsにはつっこんでいいの?

905 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:00:21 ]
sのあるなしだけだったらつまらないからほってたほうが
他にあるならどぞ

CはC++と互換の無いC99はいらない

906 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:24:58 ]
あるTextFieldに入力するとタイプ毎に任意のJLabelにその文字に
規定の変換がされたものを表示されていくプログラムを作ろうと思ったのですが、
何故かタイプとラベルに表示される文字に時間差があります。

具体的にはこういうコードを書くと、

public void keyTyped(KeyEvent e) {
System.out.println("タイプされた文字:"+e.getKeyChar());
System.out.println("表示文字:"+example.getText());
exlabel.setText(example.getText());
}

出力はこうなります。

タイプされた文字:a
表示文字:
タイプされた文字:b
表示文字:a
タイプされた文字:c
表示文字:ab
タイプされた文字:d
表示文字:abc

これってどうしてなのでしょうか?

907 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:53:41 ]
>>906
keyTyped()が呼ばれたときには、まだexampleへのキー入力処理が実行さ
れていないから。


908 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:57:20 ]
うむ

909 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:07:45 ]
>>907
なるほど、タイプ→フィールドに追加だからですね。
意識したことがなかったので気づきませんでした。
exlabel.setText(example.getText()+e.getKeyChar());
これでいけました、ありがとうございます。


910 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:57:49 ]
>>909
「文字」と「文字列」を区別したほうがいいと思うけど、それはともかく
DocumentListener
というものはご存知かな



911 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:07:37 ]
Javaのjava.util.regex.Patternの動作について質問です。
正規表現に文字クラス"[a-z0-9&&[3-8]c-h]"を与えたところ、
この文字クラスにマッチする文字は 'c'、'd'、'e'、'f'、'g'、'h'の6字になるんです。
これってどういう仕様なのでしょうか?
以下は、マッチする文字を表示するサンプルです。参考に他の文字クラスも表示していますが
"[a-z0-9&&[3-8]c-h]"を渡した場合の挙動だけが、なぜそうなるのか良くわからないのです。
-----
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
printMatchingChars("[a-z0-9&&[3-8]c-h]");
printMatchingChars("[a-z0-9&&[3-8][c-h]]");
printMatchingChars("[a-z0-9&&[3-8]&&[c-h]]");
}
private static void printMatchingChars(String regex) {
Pattern p = Pattern.compile(regex);
StringBuilder buf = new StringBuilder();
for (int cp = 0; cp < Character.MAX_CODE_POINT; cp++) {
if (p.matcher(new String(Character.toChars(cp))).matches()) {
buf.append((char) cp);
}
}
System.out.println(regex + ":" + buf + ':');
}
}
-----
出力結果
[a-z0-9&&[3-8]c-h]:cdefgh:
[a-z0-9&&[3-8][c-h]]:345678cdefgh:
[a-z0-9&&[3-8]&&[c-h]]::
P.S.代理レスでの書き込みなので、返信が遅れるかもしれません。


912 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:54:29 ]
java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html
>文字クラス
>[abc] a、b、または c (単純クラス)
>[^abc] a、b、c 以外の文字 (否定)
>[a-zA-Z] a 〜 z または A 〜 Z (範囲)
>[a-d[m-p]] a 〜 d、または m 〜 p:[a-dm-p] (結合)
>[a-z&&[def]] d、e、f (交差)
>[a-z&&[^bc]] b と c を除く a 〜 z:[ad-z] (減算)
>[a-z&&[^m-p]] m 〜 p を除く a 〜 z:[a-lq-z] (減算)

> 文字クラス演算子は、次の順で優先順位が高くなります。
> 1 リテラルエスケープ \x
> 2 グループ化 [...]
> 3 Range a-z
> 4 論理和 [a-e][i-u]
> 5 論理積 [a-z&&[aeiou]]

これを見る限り、
[α-ω[...]]
はともかく、
[[...]α-ω]
の形がどうなるのかは書かれていない(=例外でもおかしくない?)ように見えるけど、どう?

>正規表現構文の動作の詳細については、『Mastering Regular Expressions, 2nd Edition』
> (Jeffrey E. F. Friedl 著、O'Reilly and Associates、2002 年) を参照してください。

だそーですが

913 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:38:14 ]
>>911-912 BUG-BUG-SunMicro に報告、、ってどうやるの?

914 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:38:32 ]
>>911
とりあえず現象だけ見ると、
[a-h0-8&&[3-9]c-z]
[a-h0-8&&[あ-ん]c-z]
[a-h0-8&&[3-9][あ-ん]c-z]
[a-h0-8&&c-z]
は、同じく
[c-h]
と等価になっちゃうっぽいね

915 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:57:52 ]
>>912-914さん、返信ありがとうございます。
>>914さん、
&&の前の文字セットと、&&の後ろの定義済みあるいは[]で閉じられていない文字セットを論理積してるみたいですね。
&&の前後の文字セットの結果は無視されているような。

そして否定が付くと、(ますます良くわからないのですが)

[a-zあ-ん&&[3-8]c-h]:cdefgh:
[^a-zあ-ん&&[3-8]c-h]:: (何もマッチしない)

となります。
こんな面倒な構文使わなければいいと思われると思いますが、
正規表現からそれにマッチするランダムな文字列を生成するクラスを作っていまして
生成した文字がPatternで必ずマッチするようにしたいのです。

916 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:58:02 ]
[a-h0-8&&[c-z]]
この基本形を入れとくべきか

917 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:08:45 ]
>>915
「ちゃんと例外をスローしてもらわないとなあ」というのが私の感想ですがw

918 名前:913 mailto:sage [2008/06/09(月) 21:51:26 ]
[^a-z&&[3-8]c-h]
[[^a-z]&&[3-8]c-h] 否定は問題ない

919 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:57:34 ]
>>912
そのオライリーの本、
「正規表現 第二版」のことだよね。

ちゃんと日本語訳された本があるからそっち紹介してもいいんじゃないかと



920 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 09:48:31 ]
[...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...]
[...[...]]&&[...]&&[...[...]]&&[...[...]]&&[...]&&[...]
[...[...]]&&[...&&[...[...]&&[...[...]&&[...&&[...]]]]]

[...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...]
[[...]...]&&[...]&&[[...]...]&&[[...]...]&&[...]&&[...]
[[[[[[...]...]&&...]&&[...]...]&&[...]...]&&...]&&[...]



921 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:20:25 ]
>>912
正規表現 第3版 出てる。

922 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:59:46 ]
そういえばそうだったあね

923 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:44:49 ]
スレ違いかもしれませんが、JAVAのことで質問です。

JAVAを使える無料レンサバは何故少ない(というか無い)
んでしょうか?

924 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:50:27 ]
Perlではなくて?

925 名前:923 mailto:sage [2008/06/11(水) 17:57:15 ]
>>924
はい、JAVA(できればstruts)で作ったWEBアプリをレンサバ
で動かそうにも無料のがなく、有料だと高くて…。

確かにPerlもみかけませんよね。phpはどこでも使えるのに・・・ orz

926 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:15:47 ]
>>925
無料では見たことがないな。


927 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:22:02 ]
自分でサーバーたてちまえ

928 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:22:44 ]
ただで鯖使おうって根性が間違ってる。

929 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:27:48 ]
そんなに大変じゃないだろ

930 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:58:12 ]
>>926-929
そうですね、やっぱり自鯖をたててみます。
レス有難う御座いました。



931 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:03:33 ]
サーブレットとかってwww鯖の申請通ればあとはアパッチとかの設定だけだしな。

932 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:15:03 ]
>有料だと高くて…
Tomcatでいいんだろ?月500円でも高いのか?
www.easytone.jp/
無料なのがないのはJavaだと自由度が高すぎてセキュリティに問題が起きる可能性が高いからだと思うけどな?
それにJavaはphpなどに比べれば難しいから需要も少ないってこともあるだろうなあ?


933 名前:デフォルトの名無しさん [2008/06/11(水) 19:22:10 ]
質問です

public void paint(Graphics g) {
g.drawImage();
}

上記の場合、アプレットだと public void paint(Graphics g)のgの部分はブラウザから
受け取るとあるのですが、アプリケーションの場合、オブジェクトのgはどこで作られるのでしょうか?
自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?

 


934 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:28:23 ]
>>932
金払ってるのに何のセキュリティが問題になるんだよwアホかおまえは

935 名前:デフォルトの名無しさん [2008/06/11(水) 19:31:34 ]
別に鯖缶に文句は無いけど、客を選んでるようじゃそのうち縮小していって、淘汰されるだろうよ

936 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:36:57 ]
>>934
無料の場合の話だろ(wアホはおまえじゃ(w

937 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:37:45 ]
>>933
ブラウザっていうか,sunの中の人がGraphicsオブジェクトを作って
それを引数に指定してpaintを呼び出すようなコードを書いてて,裏ではそれが動いてる
アプリケーションも一緒

938 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:40:05 ]
>>932
あ、こんな安いレンサバあるんですね。
なるほど、ありがとうございます。

939 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:43:50 ]
>>938
使ったことはないんでいいかどうかはわからないよ。
無料10日間お試しコースってのがあるから試してみたら?


940 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:46:26 ]
JTreeのTreeWillExpansionListenerを使い展開時に
DefaultMutableTreeNode型のインスタンスからそのノードに至るまでの
ルートからのパスを取得したいのですが、どうやったら良いのでしょうか?



941 名前:デフォルトの名無しさん [2008/06/11(水) 19:52:31 ]
>>937
paintを呼び出す時に自動的に、Grapnicsオブジェクトが作られる
という事でしょうか?

942 名前:デフォルトの名無しさん [2008/06/11(水) 19:57:15 ]
>>936
セキュリティが問題になるとかいいのがれじゃん。無料とか言って話しをそらすなw

943 名前:デフォルトの名無しさん [2008/06/11(水) 20:02:08 ]
JSpinner で

普段は浮動少数(double)

〜〜dB(デシベル) と手打ちした時は
自動で対応する値に変換
(6dB -> 2、20dB -> 10)

というのをやりたいのですが、どんな感じで実装するのがスマートなんでしょうか?


944 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:07:46 ]
>>941
違う
中の人が作って呼んでる

945 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:33:51 ]
>>933
>自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?

初心者的にはまあごもっともな疑問だと思う。ちょっとかみ砕いてみる。

「paintメソッドを作る」ということは、
「もし「ここに自分の姿を描いてね」と言われたらこう描く(こう対応する)、と決める」ということ。
何をどう描くかは決められるけど、何に描くべきかは外から指定される。

「paintメソッドを呼ぶ」ということは、
「「ここ(=Graphicsオブジェクト)に自分の姿を描いてね」と頼む」ということ。
どういう絵ができるかは相手次第だけど、「描く場所」はちゃんと用意してから注文する。

ふつうは、アプレットとは別に画面作りの本部(中の人)みたいなのが動いていて、
必要なときに(paint/updateを呼ぶ前に)Graphicsオブジェクトを用意する、
と考えていればいいと思う。

それ以外にも、画像に描画するGraphicsオブジェクトを生成してpaintに渡せば、
その時の表示内容を画像にできたり、というような使い方もできる。

946 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:36:56 ]
>>940
JTreeの展開のどの部分のパスなのかしら?

947 名前:945 mailto:sage [2008/06/11(水) 20:40:48 ]
ごめん、読んでなかったw

>アプリケーションの場合は

かw

948 名前:デフォルトの名無しさん [2008/06/11(水) 20:57:47 ]
>>945
文句は無いんだけど、もし君が学校か何かの講師ならイマイチ。
安物のJava教本を読んだほうがいいかな

949 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:05:08 ]
ageるな厨房

950 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:10:47 ]
>>946
すいません、C:\Program Files\Adobeとかいう階層があったら、
Adobeを開いた時にC:\Program Files\Adobeという絶対パスを取得してFileに渡したいという感じです。
一応ググったりしながら下のようにやってみたのですが、関数で既にそういうものが用意されていたりするでしょうか?
TreeNode paths[]=konode.get(i).getPath();
String path="";
for(int j=0;j<paths.length;j++)
path+=paths[j]+"\\";



951 名前:945 mailto:sage [2008/06/11(水) 21:11:07 ]
>>948
個人的にはイマイチ講師程度ならうれしいよw

952 名前:デフォルトの名無しさん [2008/06/11(水) 21:50:03 ]
こういうアホ講師は得意げになっていって、後々面倒になるんだよね・・

953 名前:デフォルトの名無しさん [2008/06/11(水) 22:13:24 ]
>>949
怒るとすぐこんなふうになるし、こいつは短気なんだろw

954 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:28:56 ]
>>950
JTreeが実際に何を象徴しているか、JVMは知らないんじゃないかしら?

955 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:34:36 ]
>>939
丁寧にdクス。

956 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 23:03:20 ]
>>940
TreeWillExpandListenerに渡されるTreeExpansionEventから引っ張れる、これ
java.sun.com/javase/ja/6/docs/ja/api/javax/swing/event/TreeExpansionEvent.html#getPath()
とは別のもの?

957 名前:933 mailto:sage [2008/06/12(木) 06:07:03 ]
ありがとう

958 名前:デフォルトの名無しさん [2008/06/12(木) 14:33:54 ]
すいません、最近javaをはじめた者です。
buf[i+1]<<8|buf[i]&0xFF
これの"|"は何を意味しているのですか?

959 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:36:55 ]
論理和

960 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:55:12 ]
>>958
ビット単位のOR



961 名前:デフォルトの名無しさん [2008/06/12(木) 15:20:06 ]
たぶんバグw

962 名前:デフォルトの名無しさん [2008/06/12(木) 15:39:46 ]
jsp:invokeの意味が全然わからないんだが、
これって要するに他言語で言うeval?

jsp:doBodyとのちがいもわからん

963 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:58:14 ]
>>958
他のは分かるけど、ということ?なんか不自然な気が

964 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:29:31 ]
>>962
JSPはほとんど知らないけど、
java.sun.com/products/jsp/syntax/2.0/syntaxref2017.html <jsp:doBody>
java.sun.com/products/jsp/syntax/2.0/syntaxref2021.html <jsp:invoke>
このへんざっと見る限り、
・doBodyは、そのタグで囲まれた部分全体を(フツーのJSP文法で?)解釈して処理する
・invokeは、タグの中身に複数のfragment(attributeの一種らしい)があるような複雑な構成で、
 個々のfragmentを指名して、その内容をdoBody的に処理
みたいな感じ?とすれば「全部eval」と「一部eval」ということになるかもしれんね。

965 名前:デフォルトの名無しさん [2008/06/12(木) 17:28:58 ]
会社の経費精算システムがjavaアプリで作られており、Windowsマシンで動いております。
作りが悪くて各項目ごとに、出発・到着・金額はいいとして、国や日本円とかをいちいち
入れなくてはならず、毎回入れる項目はだいたい同じなのでスクリプトで自動入力させたいのですが
javaアプリのフォームにデータを入れてボタンをクリックさせるツールとか方法は
あるのでしょうか?
vbscriptとか自動入力クリックツールとかはjavaアプリは全然動かすことができません。

966 名前:デフォルトの名無しさん [2008/06/12(木) 17:31:53 ]
何の作りが悪いって?

967 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:12:26 ]
入力した整数を自動的に因数分解するプログラムを作るにはどうすればいいのでしょうか

968 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:16:28 ]
>>967 自分が手計算で因数分解するときの手順をそのままプログラムで書けば良い

969 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:19:53 ]
>>967
1は任意の整数xの約数であるから、x=1・xと因数分解できる。■

Java 素因数分解
でぐぐるとか?

970 名前:デフォルトの名無しさん [2008/06/12(木) 18:29:02 ]
■は一体何の意味?



971 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:31:17 ]
>>968
>>969
すみません。もう少し勉強しなおしてきます。

972 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:43:19 ]
>>965
作った業者に改良を依頼したらいいと思うよ

973 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:48:38 ]
>>970
D.Q.N.(「父さんこのイモ何のイモ?」の略)

974 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:49:35 ]
int x = 9801;
java.util.Map<Integer, Integer> map = new java.util.TreeMap<Integer, Integer>();
int f = 2;
while (x >= f) if (x % f == 0) {x /= f; if (map.get(f) == null) map.put(f, 1); else map.put(f, map.get(f) + 1);} else f++;
System.out.println(map);

975 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:04:54 ]
整数xの約数
とあるけど、-23*1とか0*1でもいいのかな
君のプログラムはどういう仕様になってるの?

976 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:54:56 ]
>>967の問題が素因数分解であるなら、入力は正整数だから>>975は心配無用
アルゴリズムは基本的に>>974の方法で良いが、細かいことをいうと

y = ⌊√x⌋ とすると、
ループ継続条件は x > 1 かつ f ≤ y
(ループ終了時 x > 1 なら、その x が最後の素因数)

977 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:20:23 ]
>>962 >>964
jspは実行前にコンパイルされるはずだからevalというには語弊があるな。funcallとかapply?

978 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:29:13 ]
質問です。
JAVAで、指定したフォルダをエクスプローラで開くことは出来るでしょうか?
Windows以外で動作しなくても構いません

ひょっとしたらRuntimeやProcessで出来るかとも思ったのですが、
あれはexeやjarファイル等の起動しか出来ないようで……

979 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:31:08 ]
Windowsに限るならexplorer.exe使えばいいよ。
オプションはスレ違いなので調べてちょ。

980 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:37:28 ]
>>979
即答ありがとうございます
何とかなりそうです



981 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:37:42 ]
>>978
JDK6以降なら java.awt.Desktop#open(java.io.File) でも開けるっぽい。

982 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:53:22 ]
>>978
explorer C:\Program Files
みたいに引数つければRuntimeでいける。

983 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:18:47 ]
>>981
こんなのがあったのか……
JDKのバージョンにこだわりはないので、エクスプローラの引数指定よりこっちの方がスマートですね
色々試してみます。
回答ありがとうございました

984 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:28:52 ]
>>976
少し苦しいけど許してあげるよw
以後軽率な発言は控えるように






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef