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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:32:06 ]
プログラミング言語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質問・相談スレッド116【歓迎】
pc11.2ch.net/test/read.cgi/tech/1213347130/
次スレは>>990あたりで。

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


2 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:32:42 ]
**** 関連スレッド案内 ****
■ 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アプリ) Part18
ttp://pc11.2ch.net/test/read.cgi/tech/1214192372/l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 8
ttp://pc11.2ch.net/test/read.cgi/tech/1206017034/l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 65 ★★
ttp://pc11.2ch.net/test/read.cgi/tech/1212085079/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/

3 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:28:24 ]
初心者質問ですいませんが本に書いていないので教えてください。

C:\Users\Documents\Hoge\src\pkgcui\Cui.java
こういう階層にパッケージpkgcuiに入ったCui.javaがあるとします。
この時カレントディレクトリがC:\Users\Documents\Hoge\srcだとすると
javac pkgcui\Cui.java
java pkgcui.Cuiで実行できますが、
カレントディレクトリが
C:\Users\Documentsだとすると
javac Hoge\src\pkgcui\Cui.javaで、
javaコマンドの方の指定の仕方はどうしたら良いのでしょうか?


4 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:34:36 ]
java -classpath Hoge\src pkgcui.Cui

5 名前:デフォルトの名無しさん [2008/07/09(水) 13:45:29 ]
前スレ999さんへ
これはアドベンチャー用のプログラムなんでswicthは必須です。
前すれ998さんへ
while(true){
int pa = s.nextInt();
のsはどこからもってきましたから?
できればこれらのプログラムをサープレットで書いて欲しいのですが。

6 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:50:16 ]
>>5
> のsはどこからもってきましたから?
ブラウザでも、テキストエディタでも、検索してみたら?

7 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:56:47 ]
>>4
てっきりclasspathってmain以外のクラスを探すためのもので
mainはjava .\Hoge\src\pkgcui.Cuiとか出来るのかと思ってました…。
ありがとうございます、本当に感謝です!

8 名前:デフォルトの名無しさん [2008/07/09(水) 14:38:50 ]
教えてくれ五飛!
俺はJAVAをあと何回実行かければスイッチを使った引き算ができるようになるんだ!
教えてくれ五飛!
俺はあと何日で
死ぬんだろうか。

9 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:58:16 ]
トムキャットプロジェクトだとcontext.xmlがプロジェクトごとに生成されないのですが、自分で追加すれば動作してくれるのでしょうか?
それともserver.xmlに記述しなければいけないのでしょうか?

10 名前:デフォルトの名無しさん [2008/07/09(水) 15:25:06 ]
やはり2週間弱でJAVAでアドベンチャーが作れるのにどこも雇ってくれないのは、勤務地のせいか。
おい福田、さっさと横須賀の方にプログラムの会社を作りやがれ!
サミットばかりやってないで自分の国民を防衛しろ!
いざとなった時国民の信頼が無いと日本潰れてしまうよ。



11 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:48:58 ]
既に手遅れですから次々世代くらいに期待しましょう
敗者復活は王道

12 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 18:59:39 ]
Threadクラスを継承したクラスA内のrunメソッドでsleep(1000)で1秒ほどスレッドをとめている間に、
そのAの他メソッドを使うとInterruptedExceptionとかの例外が出ますか?

13 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 19:07:49 ]
>>12
InterruptedExceptionのマニュアルを読みなさい。


14 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 19:59:22 ]
>>12
interruptメソッドを使うとInterruptedExceptionが出ます

15 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:43:42 ]
ArrayListの中身に意図しない書き換えが起こり、困っております。


APIを見たところ、同期化されないから注意しろ、的な文章を見つけたのですが
複数スレッドを使うようなプログラムを意図的に書いてはいません。

ためしにAPIに書いてあった
List list = Collections.synchronizedList(new ArrayList(...));
の形で定義してみても、結果は変わりませんでした。


言葉だけだと説明が難しいので、サンプルのソースを次に記入します。

データベースから取得した口座の残高に100円追加するソースです。

16 名前:15 mailto:sage [2008/07/09(水) 23:44:23 ]
private void zandaka_keisan(){
ArrayList<Koza> KozaList_before = new ArrayList<Koza>(4000);
ArrayList<Koza> KozaList_after = new ArrayList<Koza>(4000);

//データベースから配列の形状で口座たちを取得します
KozaList_before =dba.selectKoza("条件");
Koza kz = new Koza();
int zandaka = 0;

//取得件数分繰り返し
for(int j=0 ; j<KozaList_before.size() ; j++){
kz = KozaList_before.get(j);
zandaka = kz.getZandaka() + 100;
koza.setZandaka();
//↑この行が終了すると、KozaList_beforeの中身のkozaに100円足されてしまいます。
//本当は、KozaList_afterにだけ計算結果を格納したいです。
KozaList_after.add(j, kz);
}

}


17 名前:15 mailto:sage [2008/07/09(水) 23:45:03 ]
インスタンス化する口座クラス。単にゲッターとセッターがあるだけです。
public class Koza {

private int zandaka;

koza(int zandaka){
this.zandaka = zandaka;
}

public void setZandaka(int zandaka){
this.zandaka = zandaka;
}

public int getZandaka(){
return zandaka();
}

}

18 名前:15 mailto:sage [2008/07/09(水) 23:47:58 ]
インデントが解除され見がたくなり申し訳ないです。

何か、根本的な勘違いをしているのかも知れません。
ヒント等分かる方、よろしくお願いいたします。

19 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:53:48 ]
>>18
>koza.setZandaka();
の行が通らなくね?

20 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:54:06 ]
>>16
まて。それは本当にコンパイルが通ってるコードのコピペなのか?
いろいろとおかしいだろう。
> Koza kz = new Koza();
これに何か意味があるのか? ループの中で潰されてるが。
> koza.setZandaka();
kozaなんて変数は定義されてないぞ。
あと、setterなのに何で引数がないんだ。



21 名前:15 mailto:sage [2008/07/09(水) 23:58:36 ]
大変失礼致しました。

ソースは目視のみの確認でしたので、出直してきます。

22 名前:15 mailto:sage [2008/07/10(木) 00:16:15 ]
コンパイルしました。(dba.selectKoza("条件");は質問用なのでエラーになりますが・・・)

import java.util.*;
public class Sitsumon {


private void zandaka_keisan(){
ArrayList<Koza> KozaList_before = new ArrayList<Koza>(4000);
ArrayList<Koza> KozaList_after = new ArrayList<Koza>(4000);

DbAccess dba = new DbAccess();

//データベースから配列の形状で口座たちを取得します
KozaList_before =dba.selectKoza("条件");
Koza kz = new Koza();
int zandaka = 0;

//取得件数分繰り返し
for(int j=0 ; j<KozaList_before.size() ; j++){
kz = KozaList_before.get(j);
zandaka = kz.getZandaka() + 100;
kz.setZandaka(zandaka);
//↑この行が終了すると、KozaList_beforeの中身のkozaに100円足されてしまいます。
//本当は、KozaList_afterにだけ計算結果を格納したいです。
KozaList_after.add(j, kz);
}

}

}


23 名前:15 mailto:sage [2008/07/10(木) 00:16:55 ]
public class Koza {

private int zandaka;

Koza(int zandaka){
this.zandaka = zandaka;
}

Koza(){
this.zandaka = 0;
}
public void setZandaka(int zandaka){
this.zandaka = zandaka;
}

public int getZandaka(){
return zandaka;
}
}

24 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:17:18 ]
KozaList_beforeに入っているKozaインスタンスが、どこでもコピーされ
てなさそう。KozaList_before.get()で取り出したインスタンスと
KozaList_after.add()で追加したインスタンスは同じものだよ。



25 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:18:53 ]
>>20

解読ありがとうございます。

> Koza kz = new Koza();
これに何か意味があるのか? ループの中で潰されてるが。

ループの前に、kozaのインスタンスを用意したつもりです。

26 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:22:21 ]
>25
Kozaインスタンスは倍の数に増えて欲しいのに、newが1回だけし
かないことを疑おう。



27 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:27:59 ]
>>24
>>25

アドバイスありがとうございます!
計算前のKozaインスタンスと、計算後のKozaインスタンスを
それぞれ別に用意してあげる必要があるという事ですね。

Java・・・難しいです・・・・。

28 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:29:10 ]
27訂正

>>24
>>26

です。


29 名前:デフォルトの名無しさん [2008/07/10(木) 00:53:22 ]
前スレの982です。

>>983
懇意にさせていただいているお客さんから、とある小システムを
ベンダが手を引くから引き継いでくれ。良い悪いを評価して、
悪い部分は直す良い提案をして貰えれば、悪いようにはしない。
(儲けが出るように発注する)

と言われています。

規模が小さいのでウチとしては絶対取りたいとかそういう
訳ではないですけど(営業サイドの思惑から)、今まで/今後の
つきあいもありますので、無碍には出来ないし、というところです。


>>982
FingBugといのは使ったことが無いので、ちょっと調べてみます。
情報ありがとうございます。


他にこういうのはどうよ、というのが有れば教えていただけると
助かります。

30 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:57:44 ]
「JCEのSecretKeyって、外部的に同期化する必要はありますか?」

Web系で、全リクエストで共通の鍵を使用します。
オンライン中にパスワードは通常変更されません。
暗号化の目的は、ブラウザに保存されるCookieをユーザから不可視にするためです。
JDKは1.4.2です。

現在↓こんな感じでSecretKeyを作成しています。

#記憶を元に書いているので間違ってたらスミマセン
##全角スペースでインデントしているのは御愛嬌

参考にしているのはこの辺りです。
www.trustss.co.jp/Java/JEncrypt123.html

private static SecretKey generateSecretKey(String password) {
 MessageDigest messageDigest = MessageDigest.getInstance("MD5");
 messageDigest.update(password.getBytes());
 byte[] passwordDigest = messageDigest.digest();

 SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
 return secretKeyFactory.generateSecret(new DESKeySpec(passwordDigest));
}

続きます



31 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:58:15 ]
続きです

暗号化/復号化はこんな感じです。
this.passwordはコンストラクタで初期化されています。

public String encrypt(String plain) {
 byte[] bytes = plain.getBytes();

 SecretKey secretKey = generateSecretKey(this.password); // XXX 毎回作るの?

 Cipher cipher = Cipher.getInstance("DES");
 cipher.init(Cipher.ENCRYPT_MODE, secretKey);
 return encode(cipher.doFinal(bytes)); // Cookieに保存するためBase64でエンコードして戻す
}

public String decrypt(String crypted) {
 byte[] bytes = decode(crypted); // さっきのBase64をデコードする

 SecretKey secretKey = generateSecretKey(this.password); // XXX synchronizedにすれば毎回作る必要はないけどね…

 Cipher cipher = Cipher.getInstance("DES");
 chiper.init(Cipher.DECRYPT_MODE, secretKey);
 return new String(chiper.doFinal(bytes));
}

Cipherはともかく、変更されない鍵までリクエストのたびに作るor同期化するっていうのは
イマイチ感が漂うのですが…
そもそもインスタンスが不変であれば同期は要らない気もしています。

どちらにせよ言及している文書が探しきれていないので、「ここ読め」とかでも結構です。
よろしくお願いします。


32 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:07:37 ]
>>30-31
何を聞きたいのかわからない。「外部的に同期化」て意味不明。



33 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:20:22 ]
>>32
うう〜ん、あまり一般的な言い方ではないんですかね。

Sunのドキュメントとか見てると結構出てくる表現なんですが…
www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GZAZ_jaJP256JP256&q=%e5%a4%96%e9%83%a8%e7%9a%84%e3%81%ab%e5%90%8c%e6%9c%9f%e5%8c%96

要はライブラリなんかが複数スレッドから同時に呼ばれるときに、
ライブラリ側でマルチスレッド環境を考慮していない場合なんかだと
内部的に保持しているメンバ変数の値が不整合になっちゃう場合があって、
だから呼び出し元がsynchronizedで呼んでやることで単一スレッドのみからの
アクセスを保障するようにプログラムを書くことです。 >「外部的に同期化」

さっきのサンプルでいうと、encryptやdecrptのメソッドをsynchronized宣言してやることで、
「外部的に同期化する」対応を行うことになります。

ただ、ライブラリ側で対応していたり、>>31で言及したようにそもそもインスタンスが不変であれば、
内部変数の値が不整合となることもないのでsynchronizedがいらないのではないかと思い、
それについてのドキュメントはありませんか?という意味で質問しました。

34 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:22:12 ]
>>25
そのインスタンスが使われることなく、
> kz = KozaList_before.get(j);
で捨てられていることは理解しているか?


35 名前:30 mailto:sage [2008/07/10(木) 01:25:40 ]
>>32
ごめんなさい。
こっちのリンクのほうがよかったですね。
www.google.co.jp/search?num=100&hl=ja&safe=off&rlz=1T4GZAZ_jaJP256JP256&q=%22%E5%A4%96%E9%83%A8%E7%9A%84%E3%81%AB%E5%90%8C%E6%9C%9F%E5%8C%96%22&lr=

わかりにくくて申し訳ありません。

36 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:43:15 ]
>>33
10年以上Javaを触ってるけど、「外部的に同期化」って初めて聞いたよ。

で、1つのSecretKeyを複数のスレッドのCipherから利用したことあるけ
ど、問題が出たことないです。ドキュメントがあったわけじゃないから、
問題が起きないという保証はないですね。本質的に内部状態を持つよう
なインスタンスじゃないから、大丈夫だと思うけど。

もしそういうドキュメントを見付けられなくて、パフォーマンスを上げ
たいなら、SecretKeyとCipherのペアを貸し出し&返却するようなキャッ
シュ機構を作ればかなり効果があるです。


37 名前:デフォルトの名無しさん [2008/07/10(木) 02:30:52 ]
お聞きしたいことがあります。

アプリケーション組み込み向け(もしくは組み込み可能な)のJVMというのはあるのでしょうか?

以前に見た Unity という3D Game Engineがmonoを使って.NETをスクリプトエンジンとして使っていました。
UNITY: Overview
unity3d.com/unity/

これのJavaVM版のようなことがしたいと考えております。
主にWindowsで動作ができればと考えております。

38 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 02:34:37 ]
>>36
ありがとうございます。
# 不特定多数の場所では用語の使い方には注意しなければいけませんね。今後は気をつけます。

> ドキュメントがあったわけじゃないから、問題が起きないという保証はないですね。
> 本質的に内部状態を持つようなインスタンスじゃないから、大丈夫だと思うけど。

正にその辺りが問題で、イケそうでイケないもどかしさが元となって質問に至った次第です。

「JCEは結局インターフェースの規定であって、SecretKeyについてのマルチスレッド環境下での
動作はドキュメント化されていない。故にその動作は実装依存であり、たとえSUNから提供されているJARが
スレッドセーフであった(ことをリバースコンパイル等の手段を用いて実証した)としても、
仕様化されていない以上、将来のリリースでは変更される可能性がある。」

ということがハッキリしているのであれば、防御的にsynchronizedに倒すという結論に至れるのですが、
現在は、そのための判断の材料を探している段階です。
(SUNからJREと一緒に配布されているJARは、あくまでJCEの規格の一実装という位置づけですよね?)

当然、本当にそこまで仕様に対する厳密な判断が必要なのかという議論も別にあると思います。
また、性能に対してどれだけのペナルティがあるのかによっても、結論は変わると思っています。
# まあ面倒だから同期化にして終了としたい自分もいる訳ですがwww

> SecretKeyとCipherのペアを貸し出し&返却するようなキャッシュ機構

・ペアを幾つか作っておき、貸し出し・返却動作のみを同期処理とする
・ペアが全て貸し出しになった場合のみ、新たなペアを作成して貸し出す
ようなイメージで合ってますか?

確かに、これならば同期、鍵の生成部分は最小限で済むかもしれませんね。
サーブレットのスレッド数とあわせておけば、新たなペアの作成も不要となるような気もします。
ありがたく参考にさせて頂きます。

39 名前:デフォルトの名無しさん [2008/07/10(木) 08:19:54 ]
質問です。
例えば、クラスXでクラスYのインスタンスを生成したとして、
クラスY内のフィールドの変化をクラスXで監視する方法って無いでしょうか?
(フィールドの値を取得するのではなく、actionListenerのように変化に反応するような仕組みということです)
あるいはクラスXかYでstaticフィールドを作り、それの変化を監視するという方法は無いでしょうか?



40 名前:デフォルトの名無しさん [2008/07/10(木) 10:34:31 ]
JAVAの乱数についての質問です。
int ran = rnd.nextInt() % 100;
で0〜100までの値をranに数字をランダムで入れるまではわかるのですが、
50〜100までの値をranに数字をランダム入れるが分かりません。
ご提示お願いします。



41 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:41:37 ]
0〜50までの乱数を出してそれに50足した値をranに入れればいいよね。

42 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:42:38 ]
>>39
PropertyChangeListener とか、Observer と Observrable とか

>>40
ran = rnd.nextInt(50) + 50;
で、50 <= ran && ran < 100 になる。

43 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:50:07 ]
最低値足せば良いだろ。算数の問題だ。

44 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:52:38 ]
>>39
Yが監視できるように作られてないとだめ。

クラスYを自前で実装するなら、
変更時にイベント通知するように実装する。
Observerパターン。
Observableとか、PropertyChangeSupportとか使えばすぐ実装できる。


Yが誰かが作ったいじれないクラスで、通知機能がない場合、
フィールド操作がセッタでしっかり実装されてるなら、
セッタをオーバーライドしてなんとかできる。
ソース見れないとか、セッターなしでいろんなタイミングで操作されてるとかなら、
どうにもならない。非同期でいいなら、一定時刻毎に値をチェックする。(ポーリング)

45 名前:デフォルトの名無しさん [2008/07/10(木) 11:06:51 ]
>>43
足したら除々に足されていくのがプログラム。


46 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 11:13:49 ]
>>45
昨日いたな。そんなバカ。

47 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 11:43:55 ]
質問です
Windowsでjava6でJDBC使うアプリ作ってます。

通常、整数データは何も考えずintにしてましたが、
DBのデータ容量を考えると、不必要な桁数をもつカラムは、SMALLINTやTYNYINTで
定義した方がよさげかな、と思いました。
で、Java側のソースは、数値の取りうる範囲は自前でチェックしているので
別にintのまま、setInt()でも動くのですが、どうせJDBC側でキャストなどして
時間が掛かるだろうと思い、shortやbyteを使う事を検討しています。
shortにしてsetShortを使えばキャストは必要なくなりますので速いと思うのですが、
しかし、通常のjava側の計算処理において、shortでの計算などをがりがりやる事になりますが
暗黙の型変換などがあるので、ここでかえって時間が掛かるのではないかと危惧しています。
性能論議は実測が基本というのは分かっていますが、変更箇所も膨大ですので、変更前に
short化は意味があるかどうか、多少でもアドバイス頂ければと思います。
よろしくお願いします。

48 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 11:57:30 ]
普段はintで計算して、setするときだけshortやbyteにキャスト、でいいんじゃないか

49 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:30:24 ]
>>48
すみません!目から鱗でした!それで行きます

でも、考えるとますます、Javaにおけるshortなどの存在意義が無いですよね
なぜ暗黙の型変換でintにするような仕様を入れたのでしょうかね

50 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:55:46 ]
log4jですみません。infoとerrorで別ファイルにログを出力したいのですが
log4j.xmlの設定がわかりません。
下記のように設定しているのですが両方infoのほうに出てしまいます。
どこを修正すればよいでしょうか?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='jakarta.apache.org/log4j/'>
<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="c:\\hoge\\log\\hoge_error.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy/MM/dd HH:mm:ss} %p:%c:%m:%n" />
</layout>
</appender>
<appender name="TRACE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="c:\\hoge\\log\\hoge_trace.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy/MM/dd HH:mm:ss} %m%n" />
</layout>
</appender>
<category name="common">
<priority value="error" />
<appender-ref ref="ERROR" />
</category>
<category name="common">
<priority value="info" />
<appender-ref ref="TRACE" />
</category>
</log4j:configuration>



51 名前:デフォルトの名無しさん [2008/07/10(木) 12:56:42 ]
>>46
それは障害者の人を軽蔑することになるぞ。

その件はインポでnullを宣言したら普通に足せました。

52 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 13:08:35 ]
>>51
まさか本人は恥ずかしくて二度と顔を出せまい

53 名前:デフォルトの名無しさん [2008/07/10(木) 14:35:41 ]
>>52
本人ですが何か?
ってかネット上で『羞恥心』はねえだろ。

54 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 14:52:01 ]
>>53
( ´,_ゝ`)プッ

55 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 15:28:21 ]
>>50
フィルタをかけるらしい

ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/344.txt


56 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:13:25 ]
宿題スレから誘導されてきました。
現在、swingを利用したGUIプログラムを作成しています。
catchブロックで例外を捕らえた場合は、
そのエラー内容を表示しろとのことなのですが、
これはJOptionPane.showMessageDialogで表示したほうがよいのか、
System.out.printlnで表示したほうがよいのか、
一体どちらなのでしょうか。
System.out.printlnだと、開発環境から起動しなかった場合に、
内容を確認できないと思っています。


57 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:35:10 ]
どっちでもいい
仕様、案件、状況などに応じて適当なのを選べ
あとエラーはSystem.outよりSystem.err

58 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:43:09 ]
了解しました。
ありがとうございます。

59 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:47:33 ]
InetAddress ia=InetAddress.getAllByName("www.yahoo.co.jp");
System.out.println(ia.getHostAddress());
これを現時点で実行すると13個のIPアドレスが表示されますが、
これはwww.yahoo.co.jpのホスト名を13台のPCが持っているということなのか、
www.yahoo.co.jpのホスト名を持つ一台のPCが13個のIPアドレスを持っているということなのかどちらなのでしょうか?

またこのような1ホスト名:複数IPというのは前者の場合は分散化によるメリットが考えられますが、
後者のように一台のPCが複数のIPアドレスを持つことは何の意味があるのでしょうか?

60 名前:59 mailto:sage [2008/07/10(木) 22:49:01 ]
意味不明なこと書いてしまった…。
こっちです。
InetAddress ia[]=InetAddress.getAllByName("www.yahoo.co.jp");
for(int i=0;i<ia.length;i++)
System.out.println(ia[i].getHostAddress());



61 名前:デフォルトの名無しさん [2008/07/11(金) 00:14:14 ]
Linux環境でJavaMailを使ってメール送信機能を実装したいのですが
JavaMailってSendMailが立ち上がってる必要があるのでしょうか?
それともSendMailなしでも単体で送信可能なのでしょうか?

62 名前:デフォルトの名無しさん [2008/07/11(金) 00:19:40 ]
>>59
javaと関係なく、DNS 関係を知ることを進める。
一台が複数のアドレスを持てれば、IP毎にマシンを用意しなくてすむ。

63 名前:デフォルトの名無しさん [2008/07/11(金) 00:24:47 ]
>>61
必ずしも *SendMail は* 必要無いが、*SendMail に代わるもの* が
動いている必要がある。
でなければそもそもメールが流れないことになるだろう。

64 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:33:29 ]
どうもです、
>>63
試しにプロバイダのSTMPサーバーをメールサーバーに指定して
プログラムを動かしてみたのですがなぜか/var/log/maillogに
ログが出力されているのですがSendMailを使っていなくても
SendMailに中継されてたりするのでしょうか?

65 名前:デフォルトの名無しさん [2008/07/11(金) 01:23:55 ]
初めまして、インクリメントにつて質問なのですが
class Sample4_6
{
public static void main(String args[])
{
int a = 0;
int b = 0;

b = ++a;

System.out.println("代入前にインクリメントしたもので、bの値は、" + b + "です。");
}
}

結果が、”代入後にインクリメントしたもので、bの値は、1です。”

次に
class Sample4_6
{
public static void main(String args[])
{
int a = 0;
int b = 0;

b = ++a;

System.out.println("代入後にインクリメントしたもので、bの値は、" + b + "です。");
}
}

結果が、”代入後にインクリメントしたもので、bの値は、0です。”


66 名前:デフォルトの名無しさん [2008/07/11(金) 01:24:56 ]
訂正
後者は、”b = a++; ”です

67 名前:65-66 [2008/07/11(金) 01:28:14 ]
ここで、疑問なのですが

結果的には、"1"になるはずなのに
どうして、後者が"0"なのか理解できません
出力される前に値がインクリメントされていないからでしょうか?

68 名前:デフォルトの名無しさん [2008/07/11(金) 01:34:18 ]
>>67
sysoutで言ってるじゃマイカ
>代入後にインクリメントしたもので、bの値は、0です。
結果的に 1 になるのは代入した b じゃなくインクリメントした a だろう

69 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:36:09 ]
>>67
nt a = 0;
int b = 0;
b = a++;

これのbがなんで0かってこと?
>代入後にインクリメントしたもので
それなら理由は自分で書いてるとおりだけど。


70 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:46:41 ]
int a = 0;

if ( ++a == 1 ) 適当な表示
if ( ++a == 2 ) 適当な表示



71 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:48:28 ]
if ( ++a == 1 ) 適当な表示
if ( a++ == 2 ) 適当な表示

72 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:55:13 ]
int a=0;
System.out.println(a);
System.out.println(a++);
System.out.println(a);
System.out.println("---");
a=0;
System.out.println(a);
System.out.println(++a);
System.out.println(a);

73 名前:65-66 [2008/07/11(金) 02:11:57 ]
ひ〜難しい。。。

考えても混乱します・・・・

74 名前:デフォルトの名無しさん [2008/07/11(金) 07:20:15 ]
b = a++;



b = a;
a++;

と等しい

75 名前:デフォルトの名無しさん [2008/07/11(金) 09:13:03 ]
>>74
インクリメントを使わずに書いた方がより分かり易くならないか?
b=a++; → b=a; a=a+1;
b=++a; → a=a+1; b=a;

76 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 09:44:07 ]
Eclipseにあるプログラムをもってきて、
インポートすると、

Classはraw型です。総称型Class<T>への参照は、
パラメータ化する必要があります。

という警告がでます。
警告は
java.lang.Class hoge;
のような宣言部分で出てます。
とりあえず、よく分からず適当に、
java.lang.Class<?> hoge;
としたら、警告は無くなったんですが、
こんな対応でいいか教えてください。

77 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 11:11:56 ]
いいんじゃないの

78 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 15:47:00 ]
JDBCを利用したプログラミングで苦戦しています。
insert文の実行にて、
stmt.executeUpdate("INSERT INTO mytable VALUES(10, 20)");
のようにするのではなく、
stmt.executeUpdate("INSERT INTO mytable VALUES(a, b)");
のように変数の値を追加したいのですが指定の方法がわからない状態です。
いろいろと調べてみたところ、${}でいけるような情報があったのですが、
それでも上手くいかない状態です。
変数の値を反映させるには、どうすればよいのでしょうか。

79 名前:デフォルトの名無しさん [2008/07/11(金) 16:33:46 ]
変数の前でダブルクウォーテーションをきればいい
普通の文みたいに+でつなげばよろし

80 名前:デフォルトの名無しさん [2008/07/11(金) 16:39:08 ]
補足
stmt.executeUpdate("INSERT INTO mytable VALUES(a, b)");
じゃなくて
String str="INSERT INTO mytable VALUES("+a+","+ b")";
stmt.executeUpdate(str);
にしてみては
携帯で急いで打ったからどっかちがうかも



81 名前:デフォルトの名無しさん [2008/07/11(金) 16:55:44 ]
IF文の条件を以下のようにしたいのですが書き方がわかりません。
教えてください。


String型のaのときは
int型のaを返す

82 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:58:32 ]
教えていただいた方法でうまくいきました。
79,80さん、ありがとうございました。

83 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:04:28 ]
>>82
SQL injectionとかあるからプリペアードステートメントがいいよ
www.atmarkit.co.jp/fjava/rensai/jdbc04/jdbc04_1.html


84 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:15:31 ]
>>81
aは変数? そのaの型は何なんだ?


85 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:24:12 ]
プリペアードステートメントを使うと、SQL文の解析を毎回行わずに済むようですね。
変数の値が固定である場合には、利用できそうです。
参考になる情報、ありがとうございました。

86 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:28:49 ]
今夜分かるSQLインジェクション対策
www.atmarkit.co.jp/fsecurity/column/ueno/42.html

87 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:32:12 ]
>>85
> 変数の値が固定である場合には、利用できそうです。

どう言うこと?

88 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:38:26 ]
まあ、今時SQL文を+でつないでるようじゃ
プロ失格でしょ。

89 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:05:06 ]
どうだろ。
ユーザによる検索なんかも、幾つも作っておくもの?
項目の組み合わせの変わる場合も?

90 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:13:44 ]
>>85
違う。変数で渡す場合はプリペアードステートメント必須。
もし使ってないコードが納品されたら問答無用で突っ返す。



91 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:18:51 ]
>>89
SQL自体は動的に組替えても、その中に外部から来るデータは含めない。
要は、プリペアードステートメントを含むSQLを組み立てて、それに外部
から来るデータを渡す。
DBやDBコネクタにバグがある可能性もある(特にマルチバイト文字)から、
100%安心できるわけではないが、少なくとも自分の担当範囲で脆弱性を
埋め込む可能性は減らせる。

92 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:24:38 ]
プレースフォルダのパラメータは使いたいがPrepareしないという選択肢はなかったんだっけ?
JDBCじかは最近やってないから忘れてしまってる。


93 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:41:09 ]
切実に困ってます…

メニューのボタンに触れるとサブナビゲーションが横にスクロールして出てきて、
マウスをボタンから離すとサブナビゲーションが元に戻る、というスクリプトはどのようにすればいいのでしょうか。

超初心者で、探してみたんですが、そういった方法の名称もわからないので見つけることができませんでした。
どなたか教えて頂けませんでしょうか。

94 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:46:24 ]
>>93
>スクリプト
javascript? だったらすれ違い。

95 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:49:54 ]
>>94
そうでしたか。
それではそっちで聞いてみます。
ありがとうございました

96 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:53:28 ]
>>91
なるほどね

97 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:40:56 ]
質問です。

Windowsをメインに考えているのですが、javaの暗黙の型変換にはやはりコストが
掛かるものと考えておいたほうが良いのでしょうか?

たとえばメソッドの、boolean method(int i){return i >10;} とboolean method(short i){return i >10;} は
全く同じバイトコードにコンパイルされますが、これでもやはり実行時にJVM内部で変換のコストが
発生しているのでしょうか?

98 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:44:05 ]
言葉足らずですみません。

バイトコードの1行目が、
0 iload_1 [i]
なのですが、つまり、ここにshortの変数をぶち込んだ時に、
内部でintへの変換が発生すると思うのですが
そういう認識であってますでしょうか?

99 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:52:51 ]
>>97-98
コストはかかっているのかもしれないが、1つインスタンスをnewするコ
ストに比べたら何十万分の一とかそういうレベル。



100 名前:デフォルトの名無しさん [2008/07/12(土) 00:18:57 ]
質問です

"if
else if
else if
else"



"if
if
else
else
else"

は、同じ意味なのでしょうか?




101 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:20:45 ]
>>100
2つ目はコンパイルエラーなんじゃ。 if () { } 括弧をつけてきちんと書いてみなされ。

102 名前:100 [2008/07/12(土) 00:30:18 ]
レス、ありがとうございますが・・・
????

103 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:33:06 ]
if と else は一対

104 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:35:25 ]
>>100の質問の意味はかりかねる。実は文字列の比較をしたいだけでは " とか付いてるし。

105 名前:100 [2008/07/12(土) 00:37:33 ]
>>103->>104
はい、この二つの文法は意味が同じか訊きたいのです。

106 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:40:56 ]
どう考えたら同じに思えるんだ。

107 名前:101 mailto:sage [2008/07/12(土) 00:42:11 ]
if () { 
} else if {
} else if {
} else {
}
  
と 

if () {
   if () { 
   } else {
   } 
   else  // なんだよこれ
} else {
}


108 名前:デフォルトの名無しさん [2008/07/12(土) 00:45:39 ]
FileFilterについて質問します。
ファイルを開くときにフィルタを適用して、拡張子による選別は実現できたのですが、
保存のときにフィルタを適用することができません。

例えばメモ帳などでデータを保存するときに、ファイルの種類をテキストタイプに指定すれば
ファイル名にわざわざ拡張子.txtを入力せずともテキストファイルの保存ができると思いますが、
このような機能を実現するには、自分で処理部分を実装するしかないのでしょうか?

109 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:11:18 ]
>>108
FileFilterと何が関係あるのかわからない。
ユーザにファイル名を入力してもらったら、filename + ".txt" ってや
るだけでは?



110 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:17:58 ]
>>109
既に".txt"ってついている場合を分けなきゃな



111 名前:108 mailto:sage [2008/07/12(土) 01:25:53 ]
メモ帳で保存した場合、ファイルの種類にテキストタイプを選択したあと、
ファイル名に"test.java"と入力して保存すると、javaファイルとして保存されるんです。

ファイル名から拡張子を抜き出すことは可能なのですが、条件分けに戸惑ってまして…
FileFilterを利用すれば面倒なことは勝手に処理してくれるのかな、と思ったのですが、
どうやらそうじゃないみたいですね。

112 名前:100 [2008/07/12(土) 01:40:29 ]
>>106>>107
はぁーなるほど、訂正ありがとうございます。

学校の資料見ると、上記の二つの文は書き方が違うだけで
同じと書いてありましたので・・・・

113 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:43:35 ]
>>112
学校の資料が間違っていたか間違って覚えてきたのか。
短いプログラムを書けば実証できるんだからナゼやってみない?

114 名前:100 [2008/07/12(土) 01:59:36 ]
>>113
はい、やってみます。
サンクスですた。。。

115 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 02:07:40 ]
>>111
何かを勘違いしていると思われる。

保存するファイル名がtest.txtだろうがtest.javaだろうが、ファイルの
中身は同じだよ? Windowsのエクスプローラがファイル名を見て「テキ
スト ドキュメント」とか種類を表示しているだけ。


116 名前:115 mailto:sage [2008/07/12(土) 02:11:54 ]
あ、メモ帳の例が悪いだけかな。
たとえば画像処理するプログラムで、test.jpgならJPEGで保存、
test.bmpならBMPで保存、という感じに保存されるデータ自体が変わるケー
スもあるね。
そういうのは自分でコードを書かなきゃダメだ、もちろん。


117 名前:108 mailto:sage [2008/07/12(土) 03:08:51 ]
無事解決しました。
意見していただいた方、ありがとうございました。

118 名前:デフォルトの名無しさん [2008/07/12(土) 04:12:21 ]
import java.io.*;

class Sample5_6
{
public static void main(String args[]) throws IOException
{
System.out.println("苗字を入力してください。");

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();
String str1 = "山田";
String str2 = "伊藤";

if(str1 == "山田"){
System.out.println("太郎が入力されました。");
}
else if(str2 == "伊藤"){
System.out.println("次郎が入力されました。");
}
else{
System.out.println("1と2を入力して下さい。");
}

}
}

119 名前:118 [2008/07/12(土) 04:15:18 ]
これが、思い通りになりません

出力が
”山田”を入力したら”太郎”に
”伊藤”を入力したら”次郎”に
なるようにしたいのですが、
後者が、どうしても、”伊藤”と入力すると”太郎”が
出力されてしまいます

120 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 04:35:18 ]
>>118
equals
つか、Javaで真っ先に習うことの一つのような気がするが……。



121 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 04:44:49 ]
慣れるまでは結構やると思うけどね

122 名前:118 [2008/07/12(土) 04:48:57 ]
equals
は、まだ習っていません・・・
できたら、ソースを訂正していただけないでしょうか・・・?

123 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 05:01:51 ]
ていうかあれだな、strにキーボードで打った文字入れてるのに
if文で使ってないのは比較以前の問題だな。。。

とりあえずequalsは「java 文字列比較」で調べればいいよ

124 名前:118 [2008/07/12(土) 05:58:04 ]
ありがとうございました

125 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:58:43 ]
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.MappingDispatchAction;

public ActionForward select (ActionMapping map,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res ) throws Exception{
DBManagement dbManager = new DBManagement();
ArrayList alTask = new ArrayList();
ServletContext scContext = servlet.getServletContext();
DataSource dsSource =(DataSource) scContext.getAttribute(Globals.DATA_SOURCE_KEY);
alTask = dbManager.selectData(dsSource);
req.setAttribute("input", alTask.toArray());
return map.findForward("index");
}

上記のコードがあります。selectメソッドの5行目や6行目では、newを使ってインスタンスを生成しています
が、次の行のservlet.getServletContext();ではインスタンスを生成しなくてもいきなり
servlet.getServletContext();という風にgetServletContext() メソッドを使えています。これは何故でしょうか?

ぐぐってもわからなかったので、ご教授いただければ幸いです。 どうぞ宜しくお願い致します。


126 名前:デフォルトの名無しさん [2008/07/12(土) 08:35:06 ]
>>125
select メソッドがあるクラスに servlet という フィールドは無いか?
もしくはそのクラスが extends しているクラスに servlet という protected か public なフィールドは無いか?

127 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:18:07 ]
>>126
早速のレス有難う御座います。
私が見た限りでは、どちらもありませんでした。

なお、エクリプスで上記のコードを見ると、servlet.getServletContext() のservletだけ
青文字になっていたのでマウスのカーソルを当ててみたところ、

ActionServlet org.apache.struts.action.Action.servlet
Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

と出ました。何かしらご教授いただければ幸いです。どうぞ宜しくお願い致します。

128 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:21:57 ]
ActionServlet org.apache.struts.action.Action.servlet
org.apache.struts.action.Actionのservletだろ

129 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 12:45:37 ]
>>99
ありがとうございました

130 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 13:09:30 ]
>>128
レス有難う御座います。
ということは、インポートしたパッケージに含まれるオブジェクトは、newで
インスタンスを生成しなくてもいきなり使える、ということでしょうか?



131 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 13:29:27 ]
>>130
public class LoginAction extends Action {

とかしてるんじゃないの?

132 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 13:38:41 ]
>>131
レス有難う御座います。

いえ、public class 〜Action extends MappingDispatchAction {

になっています。なにかご教授いただければ幸いです。どうぞ宜しく
お願い致します。

133 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 13:48:21 ]
>>132
MappingDispatchActionは、Actionのサブクラスなのでは?

134 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 14:10:05 ]
>>130
インスタンス変数と継承の関係について理解が足りない。

135 名前:デフォルトの名無しさん [2008/07/12(土) 15:39:11 ]
最近Javaを始めたものですが、以前にC++を扱っていた人が
「JavaでGUIを作る気になれない」
といっていたのを思い出しました。
どちらが優れてるか等の議論はしませんが、それぞれのメリット、デメリットを教えていただけないでしょうか?


136 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 15:59:38 ]
JAVAで二重起動を検出する標準的な方法などは、あるものでしょうか。
oshiete1.goo.ne.jp/qa2030088.html
この手順のような、解放処理を登録せずに実装できる方法を探しています。

137 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:09:38 ]
>>136
そこに書いてある、解法処理を登録する奴が一番標準的

138 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:23:20 ]
なるほど、そうでしたか。
この解放処理をWindowAdapterクラスを継承したクラスの
windowClosingで処理するという方法はありでしょうか。
試した限りでは、上手く動作しているのですが。

139 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:32:20 ]
>>138
java.lang.Runtime#addShutdownHook(java.lang.Thread) 使ったほうが、
異常終了(例えば Windows の ctrl-c による強制終了とか)でも終了を捕捉できる可能性が高くなる。

必要ないならアリだと思う。

140 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:35:48 ]
>>135
Java *だけで* ある簡単な GUI を作ってみて、
C++ *だけで* 同じ GUI を作ってみて、
比較してみたら何か分かるんじゃないか?



141 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:49:56 ]
>>139
レスありがとうございます。
もう一度、検討しなおします。


142 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:25:47 ]
>>135
OS

143 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 19:56:54 ]
テキストエリア内の現在のキャレットの位置を(X行,Y列)で取得するにはどうしたらいいんでしょうか?
getCaretPosition()でオフセットを取得して、そこから(X行,Y列)への変換を試みたのですが、
うまくいきませんでした。
どなたか、御教示下さい。

144 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:14:08 ]
>>143
やったこと無いけど、
getCaretPosition() を使った方法じゃダメなの?

145 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:14:37 ]
swingでウィンドウを作ってみたんですがうまく行きません
OSはVistaの32bit、javaのヴァージョンはVersion 6 Update 7です。

コンパイルしたものを実行するとウィンドウは出てくるんですが
ボタンやテキストエリア等の中身が一切表示されません。
ウィンドウサイズを手動で変えると表示されます。
別のウィンドウをアクティブにしてから戻ると、
その別のウィンドウと重なった部分が消えてしまいます。

解決策はありますでしょうか。よろしくお願いします。

146 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:22:55 ]
>>145
バリデートツリーとかリペイントとか?

Java低速GUI Swing 7
pc11.2ch.net/test/read.cgi/tech/1204155623/

147 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:32:14 ]
>>145
ソースをこちらへ
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm

148 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:33:26 ]
>>145
swingの描画ぶっこわしてるんじゃない?
paintComponent()で描画してる?

149 名前:143 mailto:sage [2008/07/12(土) 22:34:43 ]
>>144
getCaretPosition()でオフセットを取得したあと、値から
現在のキャレットの行と列の位置を判断する方法が思い浮かばないんです。

Hello|(←キャレット)
World

例えばこの位置でのオフセットの値は5になるんですが、この値から
行と列の位置(1,6)を判断する方法が思い浮かばなくて…


150 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:44:56 ]
>>146-148
早々のレスありがとうございます。
スレ違いだったようで失礼しました。
paintComponent()というのを使っていないので
調べてみようと思います。解決しなければswingのスレか
ソースうpしてまた質問させてください。
ありがとうございました。



151 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:46:19 ]
>>149
JTextArea ta;
として、
こんな?
int y =0;
int x =1;
int cnt = ta.getCaretPosition();
for(String s:ta.getText().split("\n")){
if(cnt<=s.length()){
y=cnt+1;
break;
}else{
cnt=cnt-s.length()-1;
x++;
}
}

152 名前:143 mailto:sage [2008/07/12(土) 23:09:48 ]
>>151
ありがとうございます!
無事解決しました。

153 名前:デフォルトの名無しさん [2008/07/12(土) 23:45:31 ]
GUIおぼえなくちゃだめ?

154 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:01:05 ]
netbeans使えば?

155 名前:デフォルトの名無しさん [2008/07/13(日) 00:52:58 ]
>>135
正直どっちでもいいよ。JavaでGUI作ってもC++で作っても
パフォーマンスの違いなんて昨今じゃそこまで広がらない
けど個人的にはC++のほうがなんかいいんだよなぁ〜。。。なんでだろw

156 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 09:07:56 ]
まぁ見た目ぐらいだな

157 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 09:28:55 ]
GUIなんてプログラムの本質ではない

158 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:13:07 ]
数年前、いらないMMX Penとか河童celの入ったPCでtomcatの実験をしてみたら
遅くて使い物にならなかったのでjavaの利用を諦めていたのですが
最近話題の激安鯖などはそこそこ使えますか?

159 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:45:02 ]
CPUよりは、どっちかってーとメモリの問題だね。128MB程度では遅すぎる。
512MBくらいあればXPでも遊べるよ。
DBもリッチなIDEも全部入れるとなると、1GBくらいないときついけど。

160 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 12:31:49 ]
私も初心者です。

やねう企画代表者やねうらお(本名・磯崎元洋)が
・ソフトウェアの不正コピーを行っていた
・労働契約上の違反をしていた
・他は不正コピーしていないことを証明しようとしてエロゲーのパッケージを発見し、
 写真に撮ってアップロードしようとした。
d.hatena.ne.jp/pmoky/19000106
やねう企画の裏側(競馬の詐欺ソフトの製作現場)
d.hatena.ne.jp/pmoky/20060510
d.hatena.ne.jp/pmoky/20060511
d.hatena.ne.jp/pmoky/20060512
有限会社やねう企画(所在地・大阪府八尾市末広町2−1−2)が計画倒産
www.sia.go.jp/~osaka/zenso/19.09.pdf

やねうらおプロフィール
性格:友達から「チンピラ」「ヤクザ」と呼ばれている。前世で殺人鬼だった宿業を背負っているという妄想(自覚)あり。
最終学歴:専門学校卒
主な職歴:有限会社センキ(凌辱系アダルトゲームの製作会社)を経て独立、有限会社やねう企画を設立、2006年に計画倒産
代表作:『夜這いマニア』『盗撮マニア』『お楽しみCDシリーズ』『競馬詐欺ソフト』『BM98』

やねうらお語録
>「ワシのほうが潔癖やと思うんやけどな。
>絶対に違法コピーのソフトしか使わんし。
>たとえば強盗に入ったときに、ちょっとかわいそうになって
>十万円だけ残してったら、おかしいやろ?
>自分の『強盗する』という意思に対して矛盾やろ?
>だからワシは、一個も買ったソフトを使ったことがない!!」




161 名前:デフォルトの名無しさん [2008/07/13(日) 12:35:16 ]
substring(0,0)って使えるんですか
最初の一文字だけを取り出すケースが出てしまうものを作ろうとしているのですが・・・・・・

162 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 12:49:46 ]
>>161
それは0文字じゃね
最初の1文字なら substring(0, 1)

163 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 13:23:55 ]
普通にcharAtでよくね?

164 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 13:28:34 ]
最近、やねうらおは弓月(>>160)とか言う真性のキチガイに絡まれている

【自作自演】弓月城太郎氏に関するまとめ【神秘体験】
d.hatena.ne.jp/yaneurao/20080619

165 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 13:56:23 ]
コピペ君って馬鹿だな、まで読んだ。

166 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 14:13:29 ]
>>163
codePointAt

167 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 15:26:06 ]
クラスの継承を使ったときに
スーパークラスではpublicなメソッドをサブクラスではprivateとして隠蔽したいときはどうすればいいですか?

例えばHashtableクラスを継承したMyHashtableを作って、#get(Object key)を使わせたくない、等です。

168 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 15:29:07 ]
PS
継承ではなく委譲にして必要なメソッドだけ実装する
という方法はNGです

169 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 15:32:42 ]
無理です
サブクラスはいつでもスーパークラスにキャストできるので、どっちみち無駄です
使わせたくないだけなら、オーバーライドして例外を投げる方法がなくもない

public Object get(Object key) {
  throw new UnsupportedOperationException();
}

しかし継承より委譲の方が良いのではないか

170 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 15:37:56 ]
しかしgetだけ封じても、iterator使えば列挙できるし、putやremoveすれば元の値が返ってくるし、
完全に値を取得できなくするのはなかなか面倒い気がする



171 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 15:43:33 ]
継承でのアクセス修飾子の変更は特権を広げる方向だけなのでだめ。
隠したいメソッドを抜いたインターフェイスを準備して実装、
そのインターフェイスを通して操作するのはどう。

172 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 16:00:35 ]
うーむ、やはり委譲ですかね・・・
どうもありがとうございました

173 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 16:25:29 ]
>>167
そんなリスコフの置換原則を全力でぶっちするような設計は却下。

174 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:51:52 ]
大人の事情で、仕方なくJavaの実装を行うことになりました
深入りしたくないので、C/C++で実装したDLLを使いたいのですが
可能でしょうか?
VS2005、C/C++職歴6年生です。

175 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:00:05 ]
可能ですが、その大人の事情とやらが使わせてくれないかも
Javaアプリケーションは100%Javaで完結していることが好まれることがある
使っていいことになったら、JNIでぐぐれ

176 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:06:21 ]
>>174
原理的にはやればできる。
お勧めはしないがするのはアンタだ。やりたいようにすればいい。
JNI使えば、Java側からC/C++の関数を呼び出したり
逆にC/C++側からJavaのオブジェクトにアクセスできたりできるので、
やりたいことは多分できるはず。

177 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:21:33 ]
>>175
>>176
Thx
JNIまたは、DLLをJavaで書き直すか、今晩ゆっくりトレードオフを考慮し
月曜の朝決めます

178 名前:デフォルトの名無しさん [2008/07/14(月) 00:06:23 ]
少し前に二重起動に関して質問した者です。
二重起動の確認にFileOutputStreamを利用するのが一般的
ということなのですが、
この方法を使用するとロック用に使用しているファイルが
普通にWindowsファイルシステム上で確認できてしまいます。
これを確認できないようにするには、どうしたらよいのでしょうか。

179 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 00:09:23 ]
普段あんまり確認しないような場所 (C:\Documents and Settings\username\Local Settings\Temp とか) を使えばいいのでは

180 名前:デフォルトの名無しさん [2008/07/14(月) 00:27:48 ]
レスありがとうございます。
確かにそうなのですが、ユーザーからすれば、
やはり気持ちのよいものではないと思い、
何か策はないかと考えてしまう次第です。
また、一時ファイルのパスのDocuments...の部分が、
vistaとxpで違うのが、厄介なところです。
う〜ん...。



181 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 00:34:08 ]
環境変数のtempから取る

182 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 00:39:24 ]
レスありがとうございます。
早速、調べてきます。

183 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 00:58:32 ]
次のようなコードで問題なく動作しました。
色々とありがとうございました。
stream = new FileOutputStream(new File(System.getenv("TEMP") + "\\lock"));

184 名前:デフォルトの名無しさん [2008/07/14(月) 03:35:16 ]
class SwitchSample
{
public static void main(String args[])
{
int cal = 100;

for(int i = 1; i<=5; i++){
switch(i){
case 1:
case 2:
cal = cal + i;
break;

case 3:
cal = cal - i;
break;

case 5:
cal = cal / 2;
break;

default:
cal = cal * 10;
}
System.out.println("カウント数は、" + i + "です。" );
}
System.out.println("計算結果は、" + cal + "です。" );
}
}


185 名前:184 [2008/07/14(月) 03:36:02 ]
どうして、結果が500になるのかわかりません・・・
解説お願いします。

186 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 03:39:02 ]
>>185
どうして結果が500にならないと思うのか分かりません。

187 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 03:41:27 ]
どんな結果になると予想したのさ

i=1の時にswitch節はcase 1: に一致して、
breakが無いからcase 2: に書いてある cal = cal + i; が実行されるって分かってる?

188 名前:184 [2008/07/14(月) 03:45:47 ]
cse1が、一回目の繰り返しですよね?100 + 1 = 101ですよね?
で、cse2が、二回目の繰り返しで、100 + 2 = 102
で・・・・・????????????

189 名前:デフォルトの名無しさん [2008/07/14(月) 03:52:25 ]
中級の本おしえて

190 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 04:02:07 ]
>>184
初期値: 100
i=1: case 1 → 100+1=101
i=2: case 2 → 101+2=103
i=3: case 3 → 103-3=100
i=4: default → 100*10=1000
i=5: case 5 → 1000/2=500
結果: 500



191 名前:184 [2008/07/14(月) 04:41:16 ]
>>190
レス、ありがとうございます。
疑問がまだあります、Breakで一旦抜けているのに
i=1: case 1 → 100+1=101
i=2: case 2 → 101+2=103
のように、case2で103になったのを、それ以外にあたいする
case 4に、103という数値をいれてもいいのでしょうか?

192 名前:184 [2008/07/14(月) 04:48:22 ]
なんとなく、わかりましたが、
たとえば、こうなるとき
for(int i = 1; i<=5; i++){
for(int i = 1; i<=4; i++){
for(int i = 1; i<=3; i++){
for(int i = 1; i<=2; i++){

で、i<=3なら此処で抜けて
以前、まで(3以下まで)の処理がされる継承されてるからですね?
そして、case 3でブレイクということでしょうか?


193 名前:184 [2008/07/14(月) 04:49:15 ]
簡単に言いますと、途中に(3にいくまで)Breakがあるから
ぬけだされないのかと・・・?

194 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 04:50:57 ]
javaでWeb上のXMLを取得するプログラムを組みたいのですが
取得部分のやり方を教えていただけませんか。
できればSAXでお願いします。

195 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 04:51:29 ]
>>191>>192
日本語を先に勉強しろ

196 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 04:51:52 ]
>>191
>>192
なにを言ってるのかさっぱりわからん。
switch - case の break を for の break と勘違いしてるか?
両者は別のもの、というか、case にある break では for は終わらないぞ

197 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 04:57:06 ]
>>194
WebからXMLを取得することとSAXを使うことは直接は関係ない。
まずWebからHTMLを取得することを勉強しなさい。

198 名前:184 [2008/07/14(月) 05:01:31 ]
出直してきまふ
むじぃ

199 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 05:05:45 ]
>>198
まるっきり勘違いを積み重ねてるようだから、出直して分かるか怪しいな
先のコードに行番号つけて、処理されると思っている順番に番号を書き出してみるのがいいだろう

200 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 05:07:01 ]
>>197
Htmlを取得してそのXMLを読み込んで利用という認識でOKですか?



201 名前:197 mailto:sage [2008/07/14(月) 05:15:39 ]
>>200
OKじゃない。
Webから何かを取得するという処理は、それがXMLだろーが
HTMLだろーが画像だろーが動画だろーが関係ない。
取得した後、XMLだったらSAXなりDOMなりXSLTなり
なんでも使って処理すればいい。

202 名前:デフォルトの名無しさん [2008/07/14(月) 08:01:02 ]
URLオブジェクトをつくり、ConnectURでゲット要求だして取り敢えずやってみ

203 名前:130 mailto:sage [2008/07/14(月) 08:53:46 ]
>>132
>>134

亀レスで申し訳ないです。色々調べてみたら、

java.lang.Object
org.apache.struts.action.Action
org.apache.struts.actions.DispatchAction
org.apache.struts.actions.MappingDispatchAction
で、


204 名前:130 mailto:sage [2008/07/14(月) 08:56:41 ]
org.apache.struts.action.Action
にservletというフィールドがありました。

有難う御座いました!!

205 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 11:16:38 ]
JSPで1つのテキスト欄に対して複数の送信ボタンを作って処理を分けたいのですが、
それぞれの送信ボタンに異なるnameの値を設定してそれをサーブレットでどのボタンが押されたか判断し、その後の処理を分岐させようとしてもうまくいきません。

JSPで
<form method="POST" action="サーブレットのURL">
<input type="submit" name = "1" value="追加" />
<method="POST">
<input type="submit" name = "2" value="更新" />
(省略)
</form>

サーブレットで
String name = req.getParameter("name");
out.println("name="+name);
とやってもname=nullとしか表示されずnameの値を取得することが出来ません。

どこが間違っているのでしょうか?また、他に良い方法はあるのでしょうか?

206 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 11:24:12 ]
>>205
String name = req.getParameter("1");
取るならこうだろ


207 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 11:48:13 ]
>>206
出来ました。ありがとうございます。


208 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:07:41 ]
実行可能なjarファイルを起動すると、
JDBCドライバが見つからないというエラーが出て困っています。
eclipceだと起動するけど、jarファイルにすると起動しないというパターンです。
マニフェストファイルにclass-pathとJDBCドライバのフルパスを書いて、
そのパスにJDBCドライバを置いているのですが、
何故か思うようにいきません。
どこに問題があるのでしょうか。


209 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:08:19 ]
すいません。またnameの事でエラーが出てしまいました。
name = req.getParameter("1");
とやるとnameが1の送信ボタンの時は問題ないのですが
nameが2の送信ボタンのときは
nameを表示したりnameで判断させようとしたときにエラーが出てしまいます。
受け取るものがなくてnameに何も入っていないのが問題だと思うのですが、
あらかじめnameに"null"などどいてれもやはり同じエラーが出ます。
どうか解決策をお願いします。




210 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:18:34 ]
>>209
ぬるぽ



211 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:19:08 ]
>>209
どっちも name="buttonname" にして
String value = req.getParameter("buttonname");
で value.equals("追加") か value.equals("更新") かで見るとか?

212 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:29:28 ]
>211
出来ました。ありがとうございます。
nameはこんな使い方も出来るんですね。

213 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:38:53 ]
>>212
ぬるぽもちゃんと理解しないと今後つまずくと思うのだが

214 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:39:50 ]
>>212
たぶん勘違いがあると思うが。
req.getParameter() で返されるのは <input name="A" value="B"> の
value の方("B")だ。
name = req.getParameter() という書き方から推測すると name の方("A")が
返されると思っているのではないか。

215 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:41:16 ]
208です。
試しに、System.getProperty("java.class.path")を実行してみると、
どうやらクラスパスが通っていないようです。
ただし、マニフェストファイルには確かに次のように書いています。
Class-Path: C:/mysql-connector-java-5.1.6-bin.jar
このようなフルパスの指定に何か問題があるのでしょうか。


216 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:43:35 ]
>>213
スレ的にはそっちがネタだなw


217 名前:デフォルトの名無しさん [2008/07/14(月) 13:51:59 ]
メモ帳にdoubleで生成した乱数が40万個あります。
そのデータをあるプログラムで読み込み計算し、上書きするという作業をしています
しかし、乱数、及び配列の数を40万個から50万個に変えたとき
outofmemoryerrorと表示されてしまいます。環境はNetBeans6.0.1です。
PCのメモリは1GBあります。

218 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:02:35 ]
>>217
それで?
質問文を書け。

219 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:06:17 ]
>>217
そのプログラムをもっとメモリを使わないで済むように改良するんだ!

220 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:12:48 ]
java7になってBigDecimalを言語的にサポートされるので
BigDecimalをつかうプログラミングをするのはjava7になってから始めた方がいいですか?



221 名前:217 [2008/07/14(月) 14:25:41 ]
失礼しました。
質問内容は、乱数、配列が50万個でもOutOfMemoryerrorを出さず、
プログラムを動くものにしたいのですが、どのようにしればいいでしょうか

222 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:29:14 ]
メモリーを2ギガにする

223 名前:115 mailto:sage [2008/07/14(月) 14:33:15 ]
>>221
javaのコマンドラインフラグで使用するメモリを増やす。


224 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:43:09 ]
>>213
根本的な原因を理解しないといけないということですね。
String name = req.getParameter("2"); とするとnameが1の送信ボタンが押された場合、nameが2の値が存在しないので
それをnameに入れるとnameが何も入ってない状態(null)になるので、nameを判断しようとした場合、値がないのでエラーになるものだと思いました。

>>211の解決策はnameを統一し、nameの値(送信スイッチごとのvalue)で判断する。
こうすればどのスイッチがおされても必ずnameに値が入るのでnullにならない。というものだと解釈しました。


>>214
最初(>>205)はnameに'A'が入ったものが返ってくると思い、nameと書いていましたが、
アドバイスを頂き、今は理解できたと思います。
ありがとうございました。


225 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:52:11 ]
>>215
たしかこうでは
Class-Path: C:/mysql-connector-java-5.1.6-bin.jar;.

226 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:54:13 ]
>>224
if (name.equals("追加") {
}
だけだとエラーになるけど
if (name != null && name.equals("追加") {
}
とすればエラーにならないでしょ。

227 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:02:20 ]
if (name != null && name.equals("追加") {

これって左が先か右が先かって順番決まってたっけな?

228 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:03:57 ]
>>227
左が先

229 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:04:07 ]
決まってる
左が先

230 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:08:01 ]
クローンを自動で作る方法ありませんか?



231 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:17:41 ]
implements Cloneable すればいいだけでは

232 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:17:50 ]
>>225
レスありがとうございます。
試してみたのですが、やはりうまく動いてくれません。
もう、よくわからないので、jre/lib/extにドライバを置こうと思っています。


233 名前:217 [2008/07/14(月) 15:21:49 ]
>>222
仮想メモリを2Gにしましたが、うまくいきませんでした。
>>223
コマンドラインフラグを調べましたが、良くわかりませんでした。
プログラム中で宣言するのですか?それとも、javaの設定を変えるのですか?

234 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:37:32 ]
>>226
試してみたところ確かに下のはエラーになりませんでした。
上のはnameと比較しようとするとnameがnullなのでエラーになる。
下のはnameがnullかどうかチェックし、nullじゃなかったら比較に入るのでnullでもエラーが出ない。ということですね。

235 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:47:40 ]
>>234
   ∧_∧
  ( ´∀`)< ぬるぽ


236 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:49:57 ]
>>224
改良してみよう。
二つのボタン <input name="1" value="追加"><input name="2" value="更新"> の場合、
value の値は表示にも使われることもあって、プログラム内で判断に使うには向かない。
そこで value を見なくて済むように、それぞれが押された場合に req.getParameter() が
何を返すかもう一度見てみる。
 追加ボタン押下時:
  req.getParameter("1") = "追加"
  req.getParameter("2") = null
 更新ボタン押下時:
  req.getParameter("1") = null
  req.getParameter("2") = "更新"
ということは、押されたほうの req.getParameter() の返値は *nullでは無い* と
一般化できる。
だから
if(req.getParameter("1") != null) {
// 追加が押された場合の処理
} else if(req.getParameter("2") != null) {
// 更新が押された場合の処理
}
と書くことも出来、これなら value の値が例えば"追加"が"ついか"と変更されても
プログラム側は修正しなくて済むことになる。

237 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:58:52 ]
>>233
メモリの割り当てはこの辺だけど、プログラムを見直したほうが良いんじゃね?
ttp://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/tooldocs/windows/java.html#Xms

238 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 16:15:50 ]
>>236
そういう考え方も出来るんですね。勉強になります。

239 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 18:34:52 ]
>>208
JDBCドライバのフルパスの場所に、ドライバのjar置いてあるだけ、とか言う落ち?

240 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 19:15:17 ]
>208
マニフェストファイルにクラスパス以外にフルパスを記述、って具体的に何をしたんだか

ttp://java.sun.com/j2se/1.3/ja/docs/ja/guide/jar/jar.html#Main%20Attributes
# Class-Path:

この属性の値には、このアプリケーションまたは拡張機能に必要な拡張機能
またはライブラリの相対 URL を指定する。URL は 1 つ以上の空白で区切る。



241 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:18:27 ]
>>8 >>10は一体何何だ?
福田やすおチンパン総理のことかと思った

242 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:36:57 ]
2週間弱でアドベンチャー作るっていまいちよくわからんな

243 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 22:43:33 ]
すみません、板違いになるかと思いますが、教えていただけますか。

<form mothed="post" action="./Result">
<input type="submit" name="id" value="hello" />
</form>

フォームから送信した値を、request.getString("id")で取得して、これを、下記例URLのように表示できますか?

example.com/Relust?id=hello
ではなくて、このような形で↓
example.com/Result/hello/

web.xmlをいじる必要はありますか?


よろしくお願いします。

244 名前:243 mailto:sage [2008/07/14(月) 22:47:12 ]
すみません
メソッドまちがえました。
request.getParameter()
でしたorz

245 名前:デフォルトの名無しさん [2008/07/14(月) 23:03:40 ]
javaでGUIでゲームを作ろうとしています。
制限時間30秒のゲームを作ろうと思うんですが、
どうやって時間をカウントダウンさせればいいかわかんないです…
たぶんそういうコンポーネント?があるのかなと予想してるんですが…

246 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:08:19 ]
>>243
filter


247 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:15:08 ]
>>245
Timer

248 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:16:10 ]
>>245
java.util.Timerないしはjava.util.concurrent.ScheduledExecutorService
後者はJava SE 5.0以降のみ
あとjavax.swing.Timerなんてのもあったな

249 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 00:47:30 ]
やはりコンカレント工学

250 名前:デフォルトの名無しさん [2008/07/15(火) 10:52:22 ]
すいません、質問お願いします。

Fileクラスのコンストラクタを作るのに
"File(String parent,String child)"でつくると、
mkdirsは実行できるcreateNewFileのところで実行エラーになります。
フォルダを見るとParentフォルダの中にchildフォルダができています。
たとえばString childに"test.txt"と入れても"test.txt"というフォルダが作られてしまいます。
はじめに"File(String pathname)"でmkdirsでディレクトリを作っておいて、
"File(File parent,String child)"だとうまくファイルが作成されるのですが。

APIを見てもわからなく本当に困っています。
よろしく、お願いいたします。




251 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 10:55:43 ]
>>250
何がわからないんですか?
両方とも、その動作で正しいですよ。


252 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 11:32:17 ]
mkdirsは、parentまでではなく、自分自身のところまでディレクトリを作る
new File("c:\\foo\\bar\\test.txt").mkdirs() なら、c:\foo\bar\test.txt というディレクトリを作る
ちなみに new File("c:\\foo\\bar\\test.txt") と new File("c:\\foo\\bar", "test.txt") は同じ

253 名前:217 [2008/07/15(火) 12:31:06 ]
アドバイスしてくれた方々、ありがとうございました。
いろいろ調べ、改良も考えたのですが、うまくいきません。
以下は私の作成したソースです。改良できそうなところをご指摘ください。
package javaapplication2;
import java.io.*;
import java.util.*;
public class LoadtoSave {
public static void main(String[] args) {
//データ格納用Listの準備
List<String[]> list = new ArrayList<String[]>();
double WAh[] = new double [600000];
try {
FileReader fr =new FileReader("WA.txt");
BufferedReader bf = new BufferedReader(fr);
String st = null;


254 名前:217 [2008/07/15(火) 12:31:38 ]
while ((st = bf.readLine()) != null) {
String[] line = st.split(",");
list.add(line);//ファイル上1行の各数値を文字列として格納
}
bf.close();
int i=0;
for(String[] values: list){
for(String value: values){
double num = Double.parseDouble(value);//文字列を数値型に変換
WAh[i]= num;
i=i+1;
}}}
catch(IOException e) {
e.printStackTrace(); }
//ここでWAhについて大量の計算(並列的)
try {
File outFile = new File("WA.txt");
FileWriter out = new FileWriter(outFile);
PrintWriter pw = new PrintWriter("WA.txt"); //(8)書き込むデータがなくなるまで書き込み
for(int j=0;j<600000;j++){
pw.print(WAh[j]);
pw.print(",");
}
pw.close();}
catch(IOException e){
}}}

255 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 12:37:15 ]
package pkgweb;
class Test {
private String str;
Test(String s){str=s;}
public String getStr() {return str;}
public void setStr(String str) {this.str = str;}
}
このファイルに対してjavac pkgweb\Test.java -d ..\WEB-INF\classesを実行してWEB-INF\classes以下にクラスファイルを作成し、jspから使用したいのですが
pkgweb.Test cannot be resolved to a typeとエラーが出ます。
jspの中身は以下のものです。
<%@ page contentType="text/html; charset=Windows-31J"%>
<html lang="ja"><head></head>
<body>
<%pkgweb.Test a=new pkgweb.Test("hoge");%>
<%=a.getStr()%>
</body></html>

色々ググったりしたのですが解決方法が分かりません。
どうしたら良いのか教えてください。

256 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 12:52:23 ]
>>255
まず、貼り付けずに、どこかへアップするべきだったな。
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm
とか

257 名前:256 mailto:sage [2008/07/15(火) 12:59:27 ]
>>255
ごめん。
253-254から繋がってるかと思った。

258 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:02:52 ]
>>253
1レスに入りきらないようなコードを貼られても見づらいし、
並列か並行か知らないけど、分けられるなら、一辺にやらなければよいのでは?

259 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:13:21 ]
>>253,254
入力で、ファイル内容を全部Stringに入れてからdoubleに変換してる所と、
出力で、改行入れないで1行に出力してる所が少し気になった。

260 名前:デフォルトの名無しさん [2008/07/15(火) 13:17:46 ]
>>253
250 で書いているような個所が見当たらないぞ。

>>250
あるファイルを示すパス path があるとして、その親ディレクトリを含めてファイルを作成したいなら
File file = new File(path);
file.getAbsoluteFile().getParentFile().mkdirs();
file.createNewFile();
としたらどうだろうか。



261 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:58:35 ]
Windows環境でProcessBuilderでコマンドをバックグラウンドで実行して放置しておきたいのですが、
コマンドが標準出力メッセージを多量に出し、別スレッドでInputStreamを適宜読み込まないと
コマンドがバッファ一杯で途中で止まってしまいます。
標準出力・エラー出力がたまらない方法ありましたら教えてください。

262 名前:デフォルトの名無しさん [2008/07/15(火) 14:11:35 ]
コマンドを標準出力に出力しないオプション付けて実行
nullにリダイレクトw

263 名前:250 [2008/07/15(火) 14:17:16 ]
>>250です。
皆様、ありがとうございました。
>>252 様
>>new File("c:\\foo\\bar\\test.txt") と new File("c:\\foo\\bar", "test.txt")
後者のようにコンストラクタを作って、
そのあとmkdirsとcleatefileしたらファイルを作るところでエラーで
確認すると
foo/bar/test.txt/というようなすべてがフォルダでできていたのです。

>>260 様
>>253は私の書いたものではありません。
教えていただいた方法試してみます。
ありがとうございます。

ただ、疑問なのですが、普通は
>>new File("c:\\foo\\bar", "test.txt")
ではbarの中にtest.txtという「ファイル」ができるはずですよね?

264 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 14:25:02 ]
>>263
いいえ
barの中にtest.txtというディレクトリを作ります
mkdirsはディレクトリを作るメソッドです

265 名前:260 [2008/07/15(火) 15:00:08 ]
>>263 >>253
すまない、名前ちゃんと見ていなかった。

恥かし隠しに話題を変えるかw
>コンストラクタを作って
という表現は変だ。
コンストラクタはクラスのインスタンスを作るためのメソッドの名前みたいなもんで、
new クラス名(〜) というのはインスタンスを実際に作っている。
なので「コンストラクトしている」とかならまだいいかもれないが、
「コンストラクタを作って」はいない。

また、Fileクラスは(その名前に反して)ファイルだけを処理するわけじゃない。
基本はパス名を処理するものであって、パスの最後の部分がファイルかどうかは気にしない。
”この名前のディレクトリを作れ”と指示(mkdirs())されたら(指示したほうは
最後の部分はファイルのつもりでも)Fileクラスはディレクトリとして作ってくれてしまうし、
それが仕様となってる。

266 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 15:29:32 ]
>>255
public class Test {
にして
public Test(String s){str=s;}
にすれば、どう?

267 名前:デフォルトの名無しさん [2008/07/15(火) 15:51:31 ]
>>253
package javaapplication2;
import java.io.*;
public class LoadtoSave {
public static void main(String[] args) throws IOException {
double WAh[] = new double[600000];
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("WA.txt"));
String line;
for(int i=0; (line=br.readLine())!=null; ) {
for(String value : line.split(",")) WAh[i++]= Double.parseDouble(value);
}
} finally {
if(br != null) try { br.close(); } catch(IOException e) { /*無視*/ }
}
// ここでWAhについて大量の計算(並列的)
PrintWriter pw = null;
try {
pw = new PrintWriter("WA.txt"); //(8)書き込むデータがなくなるまで書き込み
for(double v : WAh) pw.print(v+",");
} finally {
if(pw != null) pw.close();
}}}
動かしてないがこんな感じには纏まるだろう。後はその多量の計算というところを
例えば10万件ずつ6回の処理に分けられないかとかだな。

268 名前:217 [2008/07/15(火) 16:05:35 ]
>>259
>入力で、ファイル内容を全部Stringに入れてからdoubleに変換してる所と、
その他のやり方というか、王道的なものがありましたら、
教えて貰えると助かります。

>出力で、改行入れないで1行に出力してる所が少し気になった。
csv形式で書き込み、読み込むのを目的としてそうしました。

>>267
具体的なソースありがとうございます。
私の書いたソースと大きく変わったところは私には分かりませんが、
それを用いたときOutOfMemoryとならないか試してみます。

269 名前:255 mailto:sage [2008/07/15(火) 19:32:12 ]
>>266
レスありがとうございます。
今public修飾詞に変更してコンパイルしてみましたがやっぱりダメでした。

270 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:33:11 ]
ところで最大ヒープサイズの設定はしたのかね
大量の計算何してるのかしらないけど
40〜50万で64m使い切るなら256mにすりゃ160〜200万くらいまでいけるんじゃないのか?
とりあえず動かすだけだったら.



271 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:52:34 ]
>>269
WEB-INF以下のパスはあってる?

\WEB-INF\classes\pkgweb\Test.class

272 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:05:58 ]
プログラムって大変だな。学期末のレポート提出のために頑張ってるけど
だるすぎる。内容は初歩中の初歩なのに。

273 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:29:46 ]
>>271
今各デプロイを見直したところ、
Tomcat 5.5\conf\Catalina\localhost以下の
web.xmlのdocBaseに書いたパスが一階層間違っていました!
/webをアプリケーションフォルダに設定したつもりが/web/jspになっていて
WEB-INFディレクトリを/web以下に置いていたための間違いだったようです。

レス頂き構成を見直したことが発見に繋がりました、ありがとうございます!

274 名前:デフォルトの名無しさん [2008/07/15(火) 22:13:16 ]
>>217
20桁くらいの数字が40万もあれば10Mくらいいきそうだな。
まぁどうすればいいかは知らんけど

275 名前:デフォルトの名無しさん [2008/07/15(火) 23:37:04 ]
質問させて下さい。

全角半角の混ざった文字列の先頭から10byte分切り出したいのですが、
もし、10byteの切れ目が全角文字の1byte目だった場合、
9byteで切り出したいというような処理ってどうやって書けばいいでしょうか?

276 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:46:22 ]
NIOでバイト単位で扱うとか

277 名前:デフォルトの名無しさん [2008/07/16(水) 00:01:24 ]
>>275
結果文字列=""
合計バイト数=0
取出文字位置=0
while(取出文字位置 < 文字列の文字数) {
文字=文字列[取出文字位置++]
合計バイト数+=文字のバイト数
if(合計バイト数 > 10) break
結果文字列=結果文字列+文字
}

278 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:10:11 ]
>>275
そのデータはどのような形式で保持してるの? byte[]? エンコーディングは?

279 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:26:24 ]
全角が堂のこうの言ってるんだからwindows-31Jじゃね?

280 名前:250 [2008/07/16(水) 09:23:50 ]
>>250です。
>>246>>247様、どうもありがとうございました。

インスタンスを作成する、ですね。
ここでご指摘いただけてよかったです。

そしてわかりました!
どうもありがとうございました。



281 名前:デフォルトの名無しさん [2008/07/16(水) 11:17:10 ]
J2EEの日本語APIリファレンスを
探してるのですが
SUNのページを探しても見つかりません
どこでダウンロード可能でしょうか



282 名前:デフォルトの名無しさん [2008/07/16(水) 11:54:50 ]
byte[] b = {(byte)0x01, (byte)0x02};
これをキャストせずにきれいに書くことはできませんか?

283 名前:デフォルトの名無しさん [2008/07/16(水) 11:59:12 ]
16進で表現したいので
byte[] b = {(byte)0xFE, (byte)0xFF};
のように書きたいです。
10進でしたら
byte[] b = {254, 255};でよいのですが。

284 名前:デフォルトの名無しさん [2008/07/16(水) 12:02:51 ]
数値は数値でしかないし、その表現方法(文字で)が変わるだけでしょ

285 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:52:27 ]
>>283
キャストしたくないだけなら
byte[] array = { 0xFFFFFFFE, 0xFFFFFFFF };

286 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:17:38 ]
コストが掛かるがこんなん使うとか

static byte[] b(int...is) {
byte[] bs = new byte[is.length];
for(int i=0; i<is.length; i++) bs[i] = (byte) is[i];
return bs;
}

// byte[] b = b(0x01, 0x02, 0xFE, 0xFF); // {1, 2, -2, -1}

287 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:47:02 ]
>>275
相手がShift_JIS系なら、
boolean isSJISLeadingByte(byte val) {
 int b = val & 0xFF;
 return (0x81 <= b && b <= 0x9F) || (0xE0 <= b && b <= 0xFC);
}
みたいのを書いて分岐した方が楽。

NIO charsetはライブラリ書く人向けの作りなので、異常系の状態拾おうとすると
真面目にエラー処理させられるような作りになってて面倒くさい。
無理矢理使うとこんな感じか。
byte[] array = .....
CharBuffer buf = CharBuffer.allocate(array.length); //文字数≦バイト数と仮定

CharsetDecoder decoder = Charset.forName("windows-31j").newDecoder();
decoder.onMalformedInput(CodingErrorAction.REPORT);
decoder.onUnmappableCharacter(CodingErrorAction.REPORT);

int trim_bytes = 0;
CoderResult result;
do{
 buf.clear();
 result = decoder.decode(ByteBuffer.wrap(array, 0, array.length - trim_bytes++), buf, true);
}while(result.isError());
System.out.println(result + " : " + buf.flip());

288 名前:デフォルトの名無しさん [2008/07/16(水) 14:50:22 ]
>>285
JAVAではintが基本だから32ビットの16進で書けばよかったということですか。
上位24ビットが0でなくてFFFFFFなのはなぜですか?

289 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:54:17 ]
>>288
> JAVAではintが基本だから32ビットの16進で書けばよかったということですか。
真面目に取らんでいいよ。

> 上位24ビットが0でなくてFFFFFFなのはなぜですか?
byte であらわせるのは -128〜127まで。
なので -128〜127 の定数値はキャストなしで byte に代入可能。
上位24ビットを 0 にすると 0〜255 になって、0x80 以上はキャストしないと代入できなくなる。

290 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:54:52 ]
>>288
0~127 byte表現 0x00~0x7F → int表現 0x00000000~0x0000007F
-128~-1 byte表現 0x80~0xFF → int表現 0xFFFFFF80~0xFFFFFFFF



291 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 15:46:42 ]
>>281
J2EEは今はJava EEという名前
Java EEでさがせ

Java SEの近くにある

292 名前:デフォルトの名無しさん [2008/07/16(水) 19:43:16 ]
>>290
0x7Fまでなら0x000000を付けて、
0x80以上なら0xFFFFFFを付けるんですね。
16進を書くには、(byte)でキャストするか、場合分けの8ニブルの16進で書くか
というどちらにしても、長いソースになってしまいますね。

293 名前:デフォルトの名無しさん [2008/07/16(水) 19:46:49 ]
>>292
短くしたいだけなら>>286で良いんじゃね?

294 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:08:52 ]
CPUをいじめるのが好きなのでAckermann関数の値を求めるのを作ったんですが、以下のソースのを実行すると
at Ackermann.ackermann(Ackermann.java:12)
というメッセージが、ばーっと出てきます。どこがおかしいのでしょうか?

public class Ackermann{
public static void main(String args[]){
long i=Long.parseLong(args[0]);
long j=Long.parseLong(args[1]);
System.out.println(ackermann(i,j));
}

public static long ackermann(long m,long n){
if(m==0)return n+1;
else{
if(n==0)return ackermann(m-1,1);
else return ackermann(m-1,ackermann(m,n-1));
}
}
}

295 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:15:05 ]
ごめんなさい
第1引数を4以上にすると出ます

296 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:20:39 ]
コンパイル通らないはずだけど
if elseの対応が合ってない

297 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:30:44 ]
うちのではコンパイル通りました。
if(m==0)return n+1;
else{
 if(n==0)return ackermann(m-1,1);
 else return ackermann(m-1,ackermann(m,n-1));
}

if elseの対応は上のような感じです。

298 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:31:07 ]
普通にスタックオーバーフローだわ・・

299 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:34:02 ]
再帰が深すぎてスタックオーバーフローを起こしてるんじゃ

300 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:39:18 ]
なんかそうっぽいです・・・
別の方法でCPUをいじめます・・・



301 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:11:50 ]
>>292
>8ニブルの16進で書くか
何だこれ?

302 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 01:06:43 ]
>>301
ニブルでぐぐってみれば?

303 名前:デフォルトの名無しさん [2008/07/17(木) 02:38:05 ]
>>293
286を見落としていました。286を使ってみたいです。
でもコンパイルできませんでした。
JDK1.3では無理ですか?
b(int...is) { が可変長の引数に対応するものに見えましたが。

304 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:50:26 ]
>>262
ありがとうございます。
ではjavaレベルでストリームをパイプしないで実行はサポートされていないのですね。
ようはNULLリダイレクトしても、結局意味のないそのストリームは生成してしまう、ということですか?
もちろん何もわたってこないのでreadする意味もないですが。

305 名前:デフォルトの名無しさん [2008/07/17(木) 10:07:11 ]
>>293
1.3じゃ286は無理だな…
さらに呼び出しコスト上がるがこんなんでどう?
1.3のJDKで試してないからエラー出るかもしれないが。

static byte[] b(String str) {
StringTokenizer st = new StringTokenizer(str, ", \t");
byte[] bs = new byte[st.countTokens()];
for(int i=0; i<bs.length; i++) {
bs[i] = Integer.decode(st.nextToken()).byteValue();
}
return bs;
}

// b("0x01, 0x02, 0xFE, 0xFF");
// b(" 1, 2, 254, 255"):
// b(" 1 2 -2 -1"):
// 以上全てnew byte[]{ 1, 2, -2, -1 } と同じバイト配列を返す

306 名前:305 mailto:sage [2008/07/17(木) 10:09:05 ]
アンカミス
293 → >>303

307 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 10:27:55 ]
>>304
コマンドが出力してくる以上、ストリームには貯まるもんだ。
だから >>262 はまず「そのコマンドに"出力しない"オプションがあるなら
それを指定してやれ」と言ってるのじゃないか。
そして、そんなオプションが無い、もしくは指定できない何か理由があるのなら、
シェルの機能を使ってnullデバイスにリダイレクトしとけ、と言ってるんだと思うぞ。
シェルも使えないのなら、>>261 が自分でやったように「ひたすら読み込んで捨てる」と
いうnullストリームをjavaで作って食わせるしかないかもな。

308 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 10:47:46 ]
>>304
process.getInputStream().close();
process.getErrorStream().close();

して黙らせるのじゃいかんのか?

309 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 12:02:59 ]
hashcodeってオーバーライドしなくても、MAPのキーに使っても正しい値って取れますよね。
それはhashcode()で値が同じでも、最終的にequalsで判断するから、と考えてよろしいでしょうか?

310 名前:デフォルトの名無しさん [2008/07/17(木) 12:09:00 ]
近藤よしゆき著のJavaプログラマのためのアルゴリズムとデータ構造をお持ちの方に質問があります。
95〜96ページの待ち行列の出力サンプルで、

MyQueue[a b c] front=0 rear=3
aを取り出した
bを取り出した
MyQueue[c ] front=2 rear=3
dを入れた
eを入れた
cを取り出した
MyQueue[d e ] front=3 rear=0

とあるのですが、
なぜ、rearは0になってしまったのでしょうか?



311 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 12:13:52 ]
>>309
一般的には、ダメ。
equals()がtrueなのにhashCode()が違う値、の場合にうまく動かない。
hashCode()が常に同じ値を返したりすると、HashMapなどの効率がものす
ごく悪くなる。


312 名前:デフォルトの名無しさん [2008/07/17(木) 12:44:26 ]
お尋ねします。
現在JAVAでGUIを使った簡単なゲームを作っています。(具体的には、5目並べです)
ゲーム自体は既にできあがって、きちんと動作もしているのですが、
どうも初心者なためクラスをどのように構成すればよいのかがよくわかりません。
いまのところ、windowクラスとpaintクラス、それとThinkクラスの3つになっています。
windowクラスはウィンドウ及びボタンなどのクラス、
paintクラスは盤上の勝敗判定等のほかpaintComponentメソッドを含む描画用のクラス、
Thinkクラスはコンピュータが次の手を決定する思考ルーチンのクラスです。

このようなゲームの場合、どういったクラスをいくつ定義するのがソースコードとして美しいのでしょうか?
今の状態はなんだかクラスごとの役割分担がごっちゃになっているような気がして・・・
どうすれば「オブジェクト指向」の概念がきちんと活かされていることになるでしょうか?






313 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 12:54:22 ]
>>312
結城浩たんのJava言語で学ぶデザインパターン入門とか読んでみるとか。

314 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:16:06 ]
>>310
その本は持っていないが、長さ5の配列でキューを実装している例では?
front が読み口のインデックス、
rear が書き口のインデックスなのだろう。

4番まで書き込んだから、次は0番を再利用するのでは?

315 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:50:02 ]
>>311
ということは、hasecode()とequals()をオーバーライドしなくても全然OKって事ですよね。
しかもデフォルトのhasecode()はアドレス値的なものが入るので、大抵がユニークになっています。
しかもデフォルトではequals()がtrueなら同じインスタンスのhashCode()なので、もちろん同じ値で問題なし。
そう考えると、この2つはオーバーライドしない方がいいのではと思っちゃいます。あくまでMAPのキーとして使うだけを考えていますが。

316 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:50:50 ]
>>308
たぶんコマンド側がパイプエラーになると思います。

317 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:58:54 ]
>>315
同じ値を持つ異なるインスタンス、というものがなければ、別に問題ない

318 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:10:27 ]
>>315
>>317の言うとおり。
たとえば、StringはhashCode()とequals()をきちんと定義しないといけないケース。


319 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:22:19 ]
>>310
双方向キューじゃない?

320 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:31:48 ]
>>318, et al.
そもそも、

> equals()がtrueなのにhashCode()が違う値

は実装の不備だろう

>>319
普通のリングバッファに見えるけど?





321 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:35:53 ]
>同じ値を持つ異なるインスタンス、というものがなければ、別に問題ない 
という前提ならequalsをoverrideする必要性さえない。
hashcodeはequalsがtrueであるなら同じ値を返さなくてはならない、
それを破るくらいならいつでも同じ値を返すほうがまだまし。

322 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:40:05 ]
formatを使って仮名入力の文字列を綺麗に表示ってできますか?

323 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:38:48 ]
まずやってみたらいいのに。
初心者であろうとなかろうと、試すことはできるだろ。

324 名前:デフォルトの名無しさん mailto:age [2008/07/17(木) 18:54:39 ]
質問失礼します。

log4jでログ出力していますが、それが何らかの異常で書き込まれなかった場合
対処をしたいと考えています。
ですが、Log.debugなどは異常の時スタックトレースは吐くものの、例外はthrow
していないようで、IOException等が発生しても取得できません。
こういうときはどうするものなのでしょうか。

325 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:30:24 ]
Servletで、ブログ作りたいんですが、DBに登録してあるユーザーIDをURLに下記のように載せて表示させるやり方教えてくれませんか?

localhost/ユーザーID

326 名前:デフォルトの名無しさん [2008/07/17(木) 20:56:39 ]
繧ェ化けます。よい方法はありませんか?
ユニコード考案者はバ力かと。
アルファベットまで2バイトで扱うJAVA作った人はバ力かと。

327 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:10:31 ]
>>326
バカじゃありません

328 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:20:24 ]
>>326
化けるって文字コードとかどうしてる?

329 名前:325 mailto:sage [2008/07/17(木) 21:58:14 ]
request.getPathInfo()
で解決しましたw

330 名前:デフォルトの名無しさん [2008/07/17(木) 22:11:28 ]
来年入社する会社ではJAVAを使います
基本情報の国家資格は持っているのですが使った言語はCASLなのでJAVAは全くの素人です
本を買ってみようと思うのですがおすすめの本などがあれば教えてください



331 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:26:35 ]
人の書いたソースを読みまくるのが最良の教科書。


332 名前:デフォルトの名無しさん [2008/07/17(木) 22:35:40 ]
>>310
これはリングバッファになってる
p90の図を見ればわかるよ

333 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:43:44 ]
Javaの云々よりもSQLとかHTML/CSSあたりやったほうが業務じゃ役に立つかも名

334 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:05:09 ]
リングキューってやつか

335 名前:330 [2008/07/18(金) 00:52:23 ]
質問答えてくださった方ありがとうございます
今度企業の方に具体的に何すればよいのかよく聞いてきます

336 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 08:00:09 ]
まぁやさしいJavaとか結城浩の本とかが定番かな・・
基本はともかくインスタンスとか拡張とか出てきたときに分かりやすい本がいいよなぁ

337 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:08:43 ]
java -cp の後のクラスパスに、他のマシンのパスからクラスをロードしたいのですが、いわゆるURLクラスロード?です。
どのようにクラスパスを設定すればよろしいでしょうか?

338 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:59:08 ]
>>337
java -cp file://・・・とやってもダメでした。これはデフォルトのクラスローダーがURLクラスローダーではないからでしょうか?

339 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:51:16 ]
>>338
「他のマシン」とはどう繋がってる?Windows でネットワークドライブとして見えているなら
\\(IPアドレスorホスト名)\(以下パス)で指定すればいい。
Linux ならそもそもマウントされてるだろうからそこを指せばいい。
ファイルを参照できないのなら apache でも立てて http で指定してみれば?

340 名前:デフォルトの名無しさん [2008/07/18(金) 18:01:05 ]
今自作のプロキシをJavaで作っているのですが、
表示できるページが限られる理由に心当たりのある方はいらっしゃいますか?
ブラウザから要求をソケットで吸い出して、
そのurlからurl.connectionをしてそこからreadしてByte型で
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
outにwriteしています。
ご教授願います!
なんとなくの予想でもいいです!お願いします。



341 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:23:43 ]
>>340
HTTP のリクエストヘッダはどうなってる?ブラウザが出すものをできればそのまま
使用しないと見れないページは出てくる。
UserAgent とか Cookie とかは特に。

342 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:28:01 ]
>>339
localhost/aa.jar でやってもダメです。そもそもURL指定はCLASSPATHではできないみたいですね・・・
URL経由でのクラスロードはアプレットでできたと思ったのですが、同じようにはいかないですね・・・・

343 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:49:25 ]
>>342
お前質問に答えろよ。「他のマシン」とはどう繋がってるんだよ。
だいたい localhost/ って、自マシンにちゃんと http デーモン
立ち上げてんだろうな?
まあ CLASSPATH だと http とかは無理かもだから、http 経由でなきゃダメ
なら Java Web Start でやれば?
そもそもネットワーク経由でファイルがやりとりできる(Samba とか)なら、
最悪ドライブにマウントしろよ。

344 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:20:27 ]
すみませんが教えてください
今JAVAで○×ゲームを作っているのですが
埋まらない個所ができてしまいました
何を埋めればいいでしょうか?
よろしくお願いします
String msg =new String();
int x,y;
public void init(){
addMouseListener(this);
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
x =//埋まらない所 ();
y =//埋まらない所 ();
msg = "座標x:"+x+"y:"+y+"が選ばれました";
repaint();
}

345 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:25:26 ]
>>344
宿題スレに行け。

346 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:23:48 ]
Appletで、
ループの中にrepaint()を入れ、
paint()の中で描画のループをさせているのですが、
最初に呼び出されたpaint()が終わるまで
次のpaint()の描画が出てこず、尚且つ、その間にも、
もともとのメソッド内のループは動いていました。

説明が分かりづらいと思いますが、
どういった理由でこうなっているのか、教えてください。

347 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:19:29 ]
レンダリングマネージャ(だっけ?)がダーティーとみなしてなくて再描画されてないとか?

348 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:41:04 ]
なに行ってるのかワカンネ・・
どこにループ書いてるんだ?

349 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:54:54 ]
ソースうp

350 名前:デフォルトの名無しさん [2008/07/18(金) 22:56:55 ]
javaでC++のプログラムを実行する方法ってありますか?



351 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:01:21 ]
JNI経由で呼び出す方法がある

352 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:35:22 ]
printfをオーバーライドして機能拡張したいんだが、どうすればいいの?

353 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:39:32 ]
printfをオーバーライドすることはできないが、Formattableインタフェース使えば、
やりたいことはできるんじゃないかな。

354 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:53:23 ]
>>353
さんくす。Formattable調べてみる。

355 名前:デフォルトの名無しさん [2008/07/19(土) 01:54:51 ]
質問です。
JAVAでペイントソフトのようなものを作っているんですが、
ウィンドウが非アクティブになる(他のウィンドウの下に隠れるなど)と、
描画したものが消えてしまうんです。
他のウィンドウと一部分重なるとその部分だけ消えます。
なぜなんでしょうか?



356 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:58:31 ]
>>355
お前Vistaじゃないだろ
Vistaだと消えないんだぜ

357 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 02:08:04 ]
>>355
プリミティブなGUIプログラミングとはそういうものだ。
だから、隠れた部分が再表示されるときにはイベントが飛ぶようになってる。
それに合わせて再描画しろ。

358 名前:デフォルトの名無しさん [2008/07/19(土) 02:13:10 ]
>>355
その消えた部分を再描画するために paint()(とその下位のpaintComponent())が呼ばれる。
paint()もしくはpaintComponent()が呼ばれた時、書かれていたものが再描画されるようになっているか?
ツールの描画操作をした時だけしか描画してないのじゃないか?

359 名前:355 mailto:sage [2008/07/19(土) 07:40:04 ]
みなさんありがとうございます、お蔭様で解決いたしました!
358さんがおっしゃられたとおりで、ツールの描画操作をした時だけしか描画していませんでした。


360 名前:346 mailto:sage [2008/07/19(土) 09:56:51 ]
分かりづらい説明、失礼しました。
始めからソースを乗せれば良かったのですが、何分恥ずかしかったので…。
public class SampleP4 extends Applet implements Runnable{
int num;
int x;
public void init(){
Thread th;
th = new Thread(this);
th.start();
}
public void run(){
try{
for(int i=0; i<10; i++){
num = i;
x = i * 10;
repaint();
Thread.sleep(1000);
}
}
catch(InterruptedException e){}
}
public void paint(Graphics g){
String str = num + "です。";
try {
for(int i=0; i<10; i++){
g.drawString(str, (10 + x), 10+i*10);
Thread.sleep(1000);
}
} catch (InterruptedException e) {}
}
}
repaint()では別スレッドが呼び出されているとは思うのですが…



361 名前:デフォルトの名無しさん [2008/07/19(土) 10:09:59 ]
携帯サイトにJSFを使いたいんですが上手く表示できません
フィルターのことをWEBで見つけてやって見たんですが
それでも上手くいかないんですが
皆さんはどうやってますか

362 名前:デフォルトの名無しさん [2008/07/19(土) 10:13:03 ]
>>360
repaintでEDTが呼ばれる。EDTは確かに別スレッドだが、EDTはいわばシングルトンだ。
EDTが処理している間に別の処理(二回目以降のrepaint)を要求しても、1つめのrepaintが
終わらない限り、EDTは処理できない。
SampleP4が単に10個のメッセージを位置をずらしながら表示したいだけなら、
public void paint(Graphics g){
String str = num + "です。";
g.drawString(str, (10 + x), 10+num*10);
}
で充分だ。
(もちろんこれだけだと画面が重なった時に再ペイントされない現象となるが。)

363 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 10:16:42 ]
メソッドの名前をまちがって全角でやったら、全角文字列でやったらできました。
メソッドの名前を日本語でできることってみんなしってますか?

364 名前:デフォルトの名無しさん [2008/07/19(土) 10:21:21 ]
>>361
状況がさっぱり分からん。
皆さんは上手くやってるんだろうよ。

365 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 10:24:56 ]
>>363
某社フレームワークの自動生成コードは、全力全開で日本語識別子を使いまくってる。
あと、「プロダクションコードには日本語入れたくないけど、ユニットテストだったらいいよねー」といった意見もある。

366 名前:デフォルトの名無しさん [2008/07/19(土) 10:25:02 ]
>>363
発見したらまず検索してみようなw

367 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 10:36:25 ]
>>363
英語の全然出来ない同僚が、翻訳サイト使って超直訳のメソッド名にしてるのを見ると、
いっそ日本語の方が良いんじゃないかという気はするな。
そういうヤツらに限って、プロジェクト用語集やら命名規約やらは見ない。

368 名前:346 mailto:sage [2008/07/19(土) 13:30:52 ]
>>362
Threadで言うところのsynchronized修飾子のようなついてると考えてよいのでしょうか?
なんだか分かった気がします。ありがとうございます。

369 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:52:18 ]
>>368
EDT への要求は Queue に入れられ、EDT はそれを順次取り出して処理する。
repaint すると Queue に入れるだけですぐ戻る。
だから SampleP4#run は1秒毎に repaint 要求を Queue に入れることができるが、
EDT は最初の repaint を処理するために SampleP4#paint を呼びだし、その中で
合計10秒間処理が行なわれているので、次に EDT が Queue から repaint 要求を
取り出して処理できるのは10秒後となってしまう。
EDT は画面全てを統括しているため、10秒間も処理を奪ってしまうとその間、
ボタン操作からウインドウそのものの再描画まで全て出来なくなる。
一時的にフリーズしたようになってしまうため、EDT の処理内で時間のかかることは
すべきでない。

370 名前:346 mailto:sage [2008/07/19(土) 15:16:38 ]
>>369
ありがとうございます。
まだ気になるのですが、paint の処理中(このプログラムの場合10秒間)に
呼び出された repaint は、 Queue の中に入れられるということですが、
>>360の動作を見る限りでは、 Queue に残っているrepaint 要求が
全て取り出されずに、そのままになっているように思えます。



371 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:20:33 ]
>365
俺もJUnitのテストメソッド名は日本語OKってのは同意
JavaDocがテスト仕様書として通りやすいのがポイントだわな

どうでもいいが、いまどき全てのクラスがプログラムコード、メソッド名も連番ってプロジェクトに遭遇したんだが、どうすればいいと思う?

372 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:33:37 ]
>>370
何度repaintを要求しても、paintは1回しか発生しない
表示内容(ラベルのテキストやイメージ、この場合はnum)が何度変更されても、
最後に1回だけpaintし直せば最新の状態が反映され万事OKであると仮定されている

373 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:43:36 ]
オーバーライドに関する質問なのですが、オーバーライドをした上で保持をする、というのはどういうことなのでしょうか?

374 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 16:02:16 ]
>>371
javaでの話しか?

変換表を用意して、ツールでクラス名/メソッド名とその参照を置換とかどう?

1. 変換表に従って置換
2. 担当分を普通に書く
3. 変換表に従って置換(1の逆)
4. コンパイル&テスト
5. 問題があれば2に戻る

375 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 16:28:20 ]
>374
そこまでやるかどうか・・・って感じはしてる
おまけにprivateメソッドも禁止(プログラム定義書に定義されたメソッド以外は作成不可)だし
名前出してしまうが、NTTデータのイントラマートのコーディング標準ってそうなっているのか?

376 名前:346 mailto:sage [2008/07/19(土) 17:38:35 ]
>>365
なるほど、Queueの中にたまっている全てのrepaint要求が、
最後のrepaintだけで済まされているということですね。
ありがとうございます。

377 名前:デフォルトの名無しさん [2008/07/19(土) 19:56:21 ]
>>371
こっちの社内にもそんなプロジェクトがあったな。VBだったが。
汎用機やってた人間がリーダーしてるもんだから、そうしろという命令らしい。
モジュール名が XXYYZZNN で機能番号・画面番号・画面内番号・内部通番とか。
そんなプロジェクトには絶対入りたくないもんだ。

378 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:59:46 ]
>>373
なにを保持するんだ。

379 名前:デフォルトの名無しさん [2008/07/19(土) 20:10:26 ]
以下のようなコードを実行すると、((ArrayList)getList.get(2)).remove(l);の
ところで、java.lang.ArrayIndexOutOfBoundsException: -1
と注意されます。どうしたらいいか教えていただけませんか?

String findstring=thesaurus;
for(int k=0, l=0 ; k < ((ArrayList)getList.get(2)).size(); k++, l++){
String filename = (String) ((ArrayList)getList.get(2)).get(k);
try{
String line;
BufferedReader reader=new BufferedReader(new FileReader(filename));
while((line=reader.readLine())!=null){
int n=line.indexOf(findstring);
if(n<0){
((ArrayList)getList.get(2)).remove(l);
l--;
}
}
reader.close();
}
}

380 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 20:19:51 ]
>>379
ファイルが複数行で、2行以上で探している文字が入っていない。
l-- の後、どこを通っているか System.out.println() をあちこち入れて
確かめてみろ。



381 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 22:22:01 ]
>>376
java アクティブレンダリングでググれば幸せになれるよ

382 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:06:43 ]
>>375
>おまけにprivateメソッドも禁止

軽く死ねるな

383 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:01:42 ]
エンクロージング・インスタンスがない、っていうエラーはどうやったら解けるんですか?

384 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:03:34 ]
>>379
見たことないタイプの技巧ループだな。
2変数で、両方インクリしてるとか、ループ内操作してるとこが
文法的にどうなの?


for(int k=LIST.size()-1;k>=0;k--){
  (・・・remove()込みの操作・・・)
}
って感じで逆走査すれば、remove()でインデクスずれるとか
気にしないで1変数でできる。

385 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:05:00 ]
>>383
インナークラスだよな。
中のクラスにstatic を付けるとか。

386 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:08:41 ]
>>383
内部クラスを new するときに明示的にインスタンスを与えるか、内部クラスを static にする

387 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:15:31 ]
>>385,386
ありがとうございます。staticつけたらすぐ解決しました。

388 名前:デフォルトの名無しさん [2008/07/20(日) 02:06:56 ]
ArrayIndexOutOfBoundsException:-1って出たんですが
これって何のエラーですか?javaはかなり初心者です


389 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:11:56 ]
配列のインデックスに -1 が指定されましたというエラー

390 名前:デフォルトの名無しさん mailto:age [2008/07/20(日) 06:02:28 ]
こんにちは。最近勉強を始めたものです。
リダイレクト機能を使ってテキストファイルから複数の数字を読み込み、配列に格納したいのですが、
そのテキストファイルが以下のような場合、うまくまとめて配列に格納する方法はないでしょうか?

42342423 2343242342 2433 34444
234 34344 343 444443
34 3444 44 45858

ちなみに自分はsubstringsメソッドを使ってそれぞれ抜き出し、trimメソッドにより空白を取り除いてから
配列に格納したのですが、どうも見栄えが悪いうえに効率が悪いような気がしたので質問させていただきました。

この数字はあとで計算に使うため、配列の型はint[]型にしたいです。
よろしくおねがいします。




391 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 06:05:53 ]
StreamTokenizerとかScannerとか

392 名前:390 mailto:sage [2008/07/20(日) 06:05:57 ]
>>390はテキストファイルの内容に空白スペースをいれていたのですが2ちゃんの処理の都合上か
スペースが取りのぞかれてしまいました。
42342423-2343242342-2433-34444
234------34344------343--444443
34-------3444-------44---45858
この半角ハイフンがスペースだと考えていただけますようおねがいいたします。

393 名前:390 mailto:sage [2008/07/20(日) 06:13:25 ]
>>391
即レスありがとうございます。使い方をこれからググったりして調べてみます!

394 名前:デフォルトの名無しさん [2008/07/20(日) 11:03:26 ]
すみません。
ある数値の入ったdoubleに最小の数を足したいんですけど
どうやったらいいですか?

395 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:15:18 ]
>394
Double.MIN_VALUE

396 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:18:35 ]
>>395
それはやっても出来ませんでした。

397 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:29:43 ]
>396
それは、
コンパイルできない? 実行できない? 計算結果が想定外?

398 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:30:26 ]
浮動小数点数だから足してもかわんねーんじゃないの

399 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:34:47 ]
多分、0+Double.MIN_VALUE以外では変わらないと思います。

400 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:43:10 ]
>>399
Double.MIN_VALUE + Double.MIN_VALUE とかでも変わると思うが。



401 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:48:57 ]
どんな数でも足すと変わる最小の数を得る方法

402 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:50:20 ]
足し算は絶対値が小さい数からというのは基本ですの

403 名前:390 mailto:sage [2008/07/20(日) 15:28:19 ]
Scannerクラスのメソッドを用い、完璧に作り上げることができました。本当にありがとうございました!

404 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:24:06 ]
IntとIntegerで相互に変換するにはどうすればよいんでしょうか?
調べてみたものの中々具体的なプログラムがなくわかりませんでした。

405 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:35:06 ]
>>404
java5以降ならそのまま代入でいいけど、java 1.4のはなし?

406 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:47:27 ]
int i = (new Integer(100)).intValue();

407 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 18:09:23 ]
ぼくしんぐ><

408 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 18:38:26 ]
>>394もおねがいします。

409 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 18:54:30 ]
Double.NEGATIVE_INFINITY

410 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 21:50:08 ]
すみませんが教えてください
マルバツゲームを現在作成しているのですが、
マルの勝利条件を決める方法がわかりません
法則性がまったくわからなくて苦戦しています
先輩方ぜひ教えてください

//oが勝ちの条件
if((map[0][0]==1 && map[0][1]==1 && map[0][2]==1)
■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■))}
msg="oの勝ちです。";
finished=true;
repaint();





411 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 21:57:24 ]
総当たりで調べてもいいんじゃない?

412 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:16:30 ]
>>411
さきほどいろいろと調べて入れてみました

//oが勝ちの条件
if((map[0][0]==1 && map[0][1]==1 && map[0][2]==1)||
(map[1][0]==1 && map[1][1]==1 && map[1][2]==1)||
(map[2][0]==1 && map[2][1]==1 && map[2][2]==1)||
(map[0][0]==1 && map[1][0]==1 && map[2][0]==1)||
(map[0][1]==1 && map[1][1]==1 && map[2][1]==1)||
(map[0][2]==1 && map[1][2]==1 && map[2][2]==1)||
(map[0][0]==1 && map[1][1]==1 && map[2][2]==1)||
(map[0][2]==1 && map[1][1]==1 && map[2][0]==1))}
msg="oの勝ちです。";
finished=true;
repaint();

あっているかどうかはわかりませんが…
なんかエラー表示が出てしまって…


413 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:19:26 ]
> (map[0][2]==1 && map[1][1]==1 && map[2][0]==1))}

その } は { の間違いでは

414 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:22:45 ]
解りにくいから、
if( 条件1) {
  // 処理
}else if(条件2) {
  // 処理
}
というように書いておけ。
だからタイプミスしてエラーになるんだよ

415 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:24:09 ]
>>413
>>414
すみません
ミスしていました
そこは直ったはいいのですが、
今度はほかのところを訂正すればするほど間違いが出て
ちょっとカオスな状況になってきました

とりあえずお礼を
教えてくださりありがとうございます

416 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:24:32 ]
map[x][y] は ○が1, ×が-1,未入力が0でいいのか?
それならば、map[0][0] + map[0][1] + map[0][2] == 3 とかの方が解りやすいかもしれん

417 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:27:22 ]
>>416
アドバイスどうもです
ただあまり文を変えることが許さないので
実践できずorz

418 名前:410 mailto:sage [2008/07/20(日) 23:00:20 ]
>>417文ミスです
「許されることがないので」でした
すみません


419 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:21:51 ]
演算結果を小数点以下5桁とか8桁まで、と指定して取得するにはどうすれば良いんですか?

420 名前:410 mailto:sage [2008/07/20(日) 23:32:12 ]
皆さんのおかげで組み立てられたのですが
訂正部分を直せば直すほど「間違えです」表示が…

とりあえずこれは間違えていますでしょうか?

public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClick(MouseEvent e){
int x =e.getX;
int y =e.getY;




421 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:04:33 ]
>>394,408
Math#nextUp

>>419
超適当
static double scale(double d, int scale) {
double r = Math.pow(10, scale);
return Math.round(d * r) / r;
}

422 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:17:39 ]
形態素解析エンジンsenを使いたくて
www.esco-sb.jp/blog/roughjustice/archives/2007/03/java_sen.php
ここを見ながらインストールしたのですが、System.setPropertyの使い方が分からずつまずいています。

sen.homeにsenのインストールディレクトリを指定すれば良いようなのですが、
System.setProperty("sen.home","C:\\Program Files\\sen-1.2.2.1");
とやるとjava.lang.IllegalArgumentException: unknown protocol: c
のエラーになり、相対パスを試そうと↓をやると
System.setProperty("sen.home","..\\..\\..\\sen-1.2.2.1");
java.lang.IllegalArgumentException: C:\Users\hoge\Documents\program\Sen\..\.\sen-1.2.2.1\conf\sen.xml (指定されたパスが見つかりません。)
と展開されないためエラーが出ます。

参考ページは絶対パスで通っているようなのですが、何故こうなるのでしょうか?

423 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:21:20 ]
>>422
確か、何故かsetPropertyが効かなかったはず
見つかりませんって書かれたパスに、
sen.xmlとかその周りのやつ(辞書とかも)も置いてみたらうまくいったような・・・・・・

424 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:22:07 ]
パスをurlで書いたらどう?

425 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:23:08 ]
sen.xmlでは相対パスで辞書ファイルの位置とかを記述してあるので
ディレクトリ構造をいじらず、関連ファイル群をそのままコピーして

426 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:58:23 ]
ちょっと疑問に思ったんですけど、html<form>から受け取った、Servletのrequest.getParameter("");の文字数について。
<!--index.jsp-->
<form action="index.jsp">
<input type="text" name="id" />
<input type="submit" />
</form>
<%
if(request.getParameter("id")!=null){
%><%=request.getParameter("id").length()%><br /><%
}
%>

この場合、テキストボックス未入力でフォーム送信時、結果:"0"と出力されますが、nullじゃないのでしょうか?
未入力チェックする時、下記のような風によくするのですが、nullチェックは必要ないですか?
if(request.getParameter("id")==null && request.getParameter("id").length()<1){
//未入力時処理
}

427 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 11:08:04 ]
HttpRequest(POST/GET)じゃ、""とnullを区別できないのは解るか?
getParameter()のnullチェックは、パラメータ自体が送信されてこなかった事を考慮すれば必要だろう
どちらにせよUtilメソッドを作っておいて
if(Util.isEmpty(request.getParameter("id"))) {
  // 未入力処理
}
とか、書くほうがスマートだが

428 名前:426 mailto:sage [2008/07/21(月) 11:30:29 ]
""は、レンジ0文字
nullはパラメタ自体が送信されなかった時
ってことでいいですかね?
Utilメソッドを作るというのは、こういうことですか?
public class Util{
private boolean Parameter = false;
public boolean isEmpty(String Parameter){
if(Parameter!=null && Parameter.length()<1){
this.Parameter = true;
}
return this.Parameter;
}
}


429 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 12:21:21 ]
public class Util{
 public static boolean isEmpty(String parameter){
  return (parameter==null || parameter.isEmpty());
 }
}


430 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 15:30:16 ]
C#…



431 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 16:52:03 ]
キーボードから入力させて、それをリストに追加していくプログラムを
forで作りたいんですが、どうやればいいですか?

例えば、最初に入れたい分の数を入力して、
次にその数の分入力させる。

432 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 17:08:46 ]
>forで作りたいんですが

433 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 17:38:10 ]
import java.awt.*;
public class SampleApp extends Frame implements ActionListener{


という書き出しなのですが、java.lang.NoClassDefFoundError: ActionListenerと出ます。
理由がわかりません。環境はEcipse3.3です。

434 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 17:51:42 ]
java.awt.event.ActionListener

435 名前:426 mailto:sage [2008/07/21(月) 17:51:47 ]
>>429
Stringクラスに、isEmpty()ってあるんですか?><

436 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 17:54:16 ]
Dinner[] dinners=new Dinner[]{ CURRY , RAMEN , YAKIZAKANA };

try{

int menu=Integer.parseInt( ID ) % dinners.length;
eat(dinners[menu]);

}

}catch(NumberFormatException e){

goToBed()

}


えいっ!

437 名前:436 mailto:sage [2008/07/21(月) 17:55:47 ]
ぐは。。。ぬるぽか。寝るわ。

438 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 18:08:56 ]
>>421
ありがとうございます。

439 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 18:18:47 ]
>>435
1.6で導入された。
length()が0の場合true

440 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 18:24:34 ]
>>434
ありがとうございます!できました!
インポート対象はその層までだったんですね・・・・



441 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 20:19:09 ]
ところでおまいら、祝日だってのに
もしかして仕事してるわけ?

442 名前:426 mailto:sage [2008/07/21(月) 21:18:27 ]
>>441
祝日って何?

443 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 22:35:55 ]
>>441
そんなの関係ねぇ

444 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 00:37:40 ]
なんかほんとに初心者丸出し質問で申し訳ないんですが
簡単な3×3マスパズル(コマをスライドさせて元の絵に戻すアレ)
の作り方なんか調べられるサイトや本って無いですかね。

javaゲームの本なんかに書いてあるのだろうか

445 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 00:49:47 ]
ttp://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC


446 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 00:50:12 ]
プログラミング自体が初心者なら書いてあっても理解は無理
適当な入門本でも一通り学習してからの話

447 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 00:55:03 ]
>>444
15パズルでぐぐるといいかも

448 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 03:23:28 ]
ありがとうございます。

実は課題で出されてソースだけでも見つけてコピペしないと・・・と
クラスメートが悩んでいたので助かりました。

449 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 04:21:15 ]
クラスメートw

450 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 07:47:12 ]
>>448
こんなヒドイの久しぶりに見た



451 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 17:37:02 ]
public DigitalWorldClock(String c, int o)
{
super(c,o);
}

”Wellington,+12”みたいなtxtファイルを読み込んで、コンマの前後で分けて、
上みたいな感じでSuper(c,o)を使いたいのですが、

public DigitalWorldClock(String str)
{
int index = str.lastIndexOf(',');
c = str.substring(0, index);
o = Float.parseFloat(str.substring(index+1));
super(c,o);
}

↑と書いたところ、” super の呼び出しはコンストラクタの先頭文でなければなりません。”と出ます
どう直せばいいのか教えてください

452 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 17:52:49 ]
super の呼び出しはコンストラクタの先頭文にする

453 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 18:01:23 ]
めちゃくちゃ汚いがこんな具合。
別にファクトリメソッドを準備したほうが賢いと思うよ。

public DigitalWorldClock(String str) 

 super(hoge1(str), hoge2(str)); 
}
private static String hoge1() {
 int index = str.lastIndexOf(','); 
 return str.substring(0, index); 

private static float hoge2() {
 int index = str.lastIndexOf(','); 
 return Float.parseFloat(str.substring(index+1)); 



454 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 18:05:04 ]
これが正攻法のファクトリメソッド
private DigitalWorldClock(String c, float o) { super(c,o); } 
public DigitalWorldClock createInstance(String str) {
  int index = str.lastIndexOf(','); 
  c = str.substring(0, index); 
  o = Float.parseFloat(str.substring(index+1)); 
  return new DigitalWorldClock(c, o);
}

455 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 18:21:33 ]
>>452-454
さっそく教えてくださってありがとうございます。
何となくですけど、教えてくださったことはわかりました。
super(c,o)は別にした方がいいんですね・・・

それで、さっそく>>454で教えていただいた方法に書き換えて試してみたのですが、
private DigitalWorldClock(String c, float o) { super(c,o); }
の部分に、「シンボルを見つけられません」と出てしまいます。
プログラムの後の方で出てくる「list.add(new DigitalWorldClock(str));」にも、シンボルが見つけられませんと出ます。
これはどう直せばいいのでしょうか?重ね重ねすみませんがよろしくお願いします

456 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 19:21:48 ]
インポート部分を書け

457 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 19:57:08 ]
eclipseとは別で起動しているjavaに以下のデバッグオプションをつけ、eclipseからリモートデバッグできました。
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

通常リモートデバッグができれば、デバッグ中(変更対象にはブレークで止まっていない)にソースを変更し、
再度変更クラスに処理が入ると、変更が反映されるはずなのですが、反映されません。

何か設定ややり方が間違えているでしょうか?
JDK1.6です。

458 名前:kokoro [2008/07/22(火) 20:00:59 ]
はじめまして。java初めてなんです。

[課題]@1の倍数の和、2の倍数の和、3の倍数の和。
   Aたて10個、横10個の正方形を作る。色は交互にする。
    緑、赤、緑、赤・・・・
    赤、緑、赤、緑・・・・
    緑、赤、緑、赤・・・
[期限]今週中ぐらい
[バージョン]java アップレット
[補足]for文と、if-else文を使って。

お願いします。

459 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 20:08:10 ]
丸投げはここじゃねーよ

460 名前:デフォルトの名無しさん [2008/07/22(火) 20:09:35 ]
間違えました・・・



461 名前:455 mailto:sage [2008/07/22(火) 20:31:03 ]
>>456
すみません、インポート部分ってどこですか?

462 名前:デフォルトの名無しさん [2008/07/22(火) 20:34:01 ]
TextSS


463 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 21:00:22 ]
>>451

public DigitalWorldClock(String str)
{
this(str, str.lastIndexOf('.'));
}

private DigitalWorldClock(String str, int index)
{
super(
str.substring(0, index),
Float.parseFloat(str.substring(index+1))
);
}


464 名前:463 mailto:sage [2008/07/22(火) 21:16:33 ]
コンストラクタが衝突してた 南無

465 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 21:27:54 ]
>>457
即時更新不可のオプションでも入れているのでは?

466 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 21:46:46 ]
>>461
読んで字のごとくimport部分だ

467 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 21:54:28 ]
>>457
そんなことせんでも1.6ならclassファイル上書きで勝手に更新してくれるべ

468 名前:455 mailto:sage [2008/07/22(火) 22:09:33 ]
>>466
import java.util.*;
import java.awt.*;
import java.io.*;
こういうことですか??

469 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:15:02 ]
どこでシンボルが見つけられないんだ?

470 名前:455 mailto:sage [2008/07/22(火) 22:25:01 ]
>>469
rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/368.java
↑のclass DigitalWorldClock extends AbstractWorldClockの
private DigitalWorldClock(String c, float o) { super(c,o); }

public class Ex5dの
list.add(new DigitalWorldClock(str));
です



471 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:26:30 ]
>>469
全部アップさせたほうがいいよ。
宿題スレで挙がってた奴だろ?
DigitalWorldClockがAbstractWorldClockのサブクラスで、
AbstractWorldClockがAbstractClockのサブクラスとか言う構成だったはず。

472 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:30:10 ]
クラス設計おかしくないか?
Clockインターフェースを作ってWorldClockをextendsしてAbstractWorldClockを実装だろ。

473 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:33:01 ]
言い忘れたがAbstractWorldClockが見つからないからコンパイルエラーが出てる。
AbstractWorldClockを用意してインポートしろ。

474 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:34:56 ]
>>470
前に挙がってた
abstract class AbstractWorldClock extends AbstractClock
を見るに、
public AbstractWorldClock()
public AbstractWorldClock(String c, int o)
しか無い。
AbstractClockは未詳のままだが、要するに該当のsuperコンストラクタは無いのだろう。

定義されているのは、
public DigitalWorldClock createInstance(String str) {
だから、
DigitalWorldClock(str)
も存在しない。

475 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:44:49 ]
結論、講師が屑

476 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:47:58 ]
>>475
講義の途中の課題だからな、javaの全機能使うというより、abstractとかのコマなんだろ。

477 名前:455 mailto:sage [2008/07/22(火) 22:48:47 ]
>>471->>474
言及いただいたとおり最近宿題スレでもお聞きした問題の続きです
教えていただいておいて恐縮ですが、正直さっぱりわかりません・・・
DigitalWorldClock(str) は使わないということですか??

AbstractClockは
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/369.java
ですが・・・



478 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:59:56 ]
>>477
>>451でFloat.parseFloatが出てきたあたりでおかしくなったんだろ。
intで受けるコンストラクタしかないんだから、intにしとけばいい。

list.add(new DigitalWorldClock(str));
は、
list.add(DigitalWorldClock.createInstance(str));
というところ?

public DigitalWorldClock createInstance(String str)

public static DigitalWorldClock createInstance(String str)
にしとくのかな。

479 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 23:53:39 ]
abstract教えてんのかファクトリメソッド教えてんのか分からんな。

480 名前:455 mailto:sage [2008/07/22(火) 23:57:15 ]
>>478
ありがとうございます
Float.parseFloatは、ほかの課題からそのまま使ったのでそのままにしてました

教えていただいたところを変えてみましたが、

シンボルを見つけられません。
シンボル: コンストラクタ AbstractWorldClock(java.lang.String,float)
場所 : AbstractWorldClock の クラス
private DigitalWorldClock(String c, float o) { super(c,o); }

というエラーと、

static でない 変数 c を static コンテキストから参照することはできません
static でない 変数 o を static コンテキストから参照することはできません

というエラーが出てコンパイルが通りません。
>>451のファイルを書き換えたのですが、それじゃダメだったんでしょうか・・・?



481 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:05:03 ]
>>479
そもそも、>>470のmainに文字列を引数にしたコンストラクタが出てこないし、
もう課題からそれてなにをやるべきかわからなくなっているのでは?

482 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:14:11 ]
>>480
>private DigitalWorldClock(String c, float o) { super(c,o); }
上位クラスにfloatを引数にしたのコンストラクタが無いんだから、floatを使ってるのが間違いなんでしょ。
上位クラスにあわせてintに書き換える。

>static でない 変数 c を static コンテキストから参照することはできません
>static でない 変数 o を static コンテキストから参照することはできません
cとoはsuperに任せて設定させたいという主旨のはずだから、
String c = str.substring(0, index);
int o = Integer.parseInt(str.substring(index+1));
とか。

483 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:40:38 ]
java言語で
(自分でキーボードで入力する)12+13*13/11−99=
みたいな電卓プログラムを作りたいのですが、調べても見つからず、まったくわかりません。
計算順位は*、/、+、ーでやりたいと思ってます。=で計算結果を出力です。
どなたか教えていただけませんか?

484 名前:455 mailto:sage [2008/07/23(水) 00:42:04 ]
>>482
floatだとダメなんですね。
扱うデータに小数点ついてたので、ついてなきゃだめだと思ってました。
>static でない 変数 c を static コンテキストから参照することはできません
意味がわかりました、ありがとうございました。


それで、何度も何度もすいません、コンパイルは通ったけど実行できませんでした。
Exception in thread "main" java.lang.NumberFormatException: For input string: "+0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at DigitalWorldClock.createInstance(Ex5d.java:29)
at Ex5d.main(Ex5d.java:47)

こういうエラーが出るので調べたら「アプリケーションが文字列を数値型に変換しようとしたとき、文字列の形式が正しくない場合にスローされます」とありました
読み込むデータに、小数、正の数、負の数、ゼロ、があるのですが、それが問題なのでしょうか?
でもFloatにするんだとダメですよね・・・

485 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:54:55 ]
>>484
1.+0と言う表記を使わない
2.parseFloatで数値化してから(int)でキャスト
3.先頭の+記号を除外するコードを書く

いくらでも方法はあるのでは。


486 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:55:47 ]
>>483
Javaではけっこう手間がかかる
方針としてはたぶんこんな感じ

1.与えられた式を後置記法に変換する
2.左から式を読んでいく。数値だったらスタックに積み、
 演算子だったら積んであった数値をスタックから出して計算する

ちょっと複雑。詳しくは「後置記法」あたりで検索してみては
他にはJavaと連携できる別の動的言語を呼び出して、evalに通すとかって方法も無いではない

487 名前:483 mailto:sage [2008/07/23(水) 01:04:25 ]
>>486
ありがとうございます。とりあえずやってます!

488 名前:455 mailto:sage [2008/07/23(水) 01:38:36 ]
>>458
ありがとうございます、2でやってみたらとりあえず動きました!
本当にありがとうございました!

489 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 04:07:22 ]
>>483
逆ポーランド記法 RPNでググレ

490 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 05:00:26 ]
カッコに対応しなくていいなら、逆ポーランド使わなくとも2-passで、

1. 左から順に取り出して、乗除算だけ計算
2. 左から順に取り出して、残った加減算を計算

でいいじゃん



491 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 07:53:34 ]
JavaCC

492 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 10:06:00 ]
www.google.co.jp/search?hl=ja&q=%EF%BC%91%EF%BC%92%EF%BC%8B%EF%BC%91%EF%BC%93%EF%BC%8A%EF%BC%91%EF%BC%93%EF%BC%8F%EF%BC%91%EF%BC%91%EF%BC%8D%EF%BC%99%EF%BC%99%EF%BC%9D&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

Googleで計算してHTMLをパースして答えを取り出すのはどう?

493 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 10:36:12 ]
グローバルフィールドとしてのオブジェクトの参照は何バイトくらい使用しているのでしょうか?
例を示すと下のような感じです。
class Hoge{
Hage h; // これのサイズ
}
class Hage{
}
特にメモリ云々を気にしている訳ではないのですが気になったので質問させていただきました。

494 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 12:27:52 ]
>>493
調べたわけではないが内部的にはレジスタ長かポインタの大きさかな。
h に格納されるオブジェクトがヒープをどれだけ食ってるかは知らない。

495 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 12:52:39 ]
オブジェクトヘッダの推定量なら、ちょっと古いけど
groups.yahoo.co.jp/group/jvm-talk/message/68?expand=1
あたりが参考になるかも?

496 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 14:06:52 ]
プロファイル取った方が確実

497 名前:デフォルトの名無しさん [2008/07/23(水) 18:41:53 ]
最近SwingのJTableからMySQLのTableの更新、追加、削除をするよう、それぞれプログラムを書いてみました。
お伺いしたいのですが、みなさんはこんな用途にSwingは使われますか?
なにかもっとデータベースのプログラムの用途に向いたものがありそうな気もして、ご質問させてもらいます。


498 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:26:02 ]
・JavaDocの書き方について

自分で作ったクラスにつけるJavaDocの書き方に定石ってありますか?
英語でなら以下のサイトにあるのですが、その日本語版があれば教えていただきたい。

Requirements for Writing Java API Specifications
java.sun.com/j2se/javadoc/writingapispecs/index.html

499 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:44:23 ]
JavaDocの書き方
・忘れんな
・日本語でおk
・メンテ汁

くらいじゃね

500 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:09:39 ]
言語が違っても書く内容は同じでいいでしょ



501 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:18:18 ]
int A = 123;

と定義して、Aが数値型かどうか判断するとき
どうすればいいですか?

502 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:20:11 ]
Javaでそれを判断しなければならない状況があるのか?

503 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:22:45 ]
>>501
こうか?
public class Test{
static boolean isNumber(Object o) {
return o instanceof Number;
}
public static void main(String[] args) {
int A = 123;
System.out.println(isNumber(A));
}
}

504 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:29:24 ]
>503
ありがとうございます!!
解決しました。

isNumberを使えばよいのですね。
結構ググッたけど見つけられませんでした。

505 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:31:06 ]
なんともはや

506 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:32:22 ]
503氏は見やすいように分離しただけで、
処理のキモはinstanceof演算子ね

507 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:36:05 ]
ああ、そうですね><

isNumberは自作ですね。

instanceofは知ってたんですが、こういう
使い方は気づきませんでした。

508 名前:501 mailto:sage [2008/07/23(水) 23:46:52 ]
さっきの続きですが、

インスタンスを生成せずに型を調べる方法はありますか?

509 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:52:24 ]
>>508
ない。

インスタンス生成せずに型を調べたいケースってのも思いつかんが。

510 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:53:02 ]
>>508
いったい何をしたいんだ。
そんなことが必要になる状況は、ふつうないぞ。




511 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:53:03 ]
>503のってAをボクシングでIntegerに変換してからinstanceofしているわけで、なんか違うんじゃね?

512 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:53:56 ]
プログラマが知っておくべきことだろそれは

513 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:54:41 ]
>>508

514 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:55:47 ]
あれだ、Eclipseでも使えってのが回答か?

515 名前:508 mailto:sage [2008/07/23(水) 23:56:33 ]
具体例をあげると、

コンソールなどから入力された値が、文字なのか数値なのかを
判定したいんですけどこのような場合はどうすればよいでしょうか?

516 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:58:58 ]
すみません。コンソールからの入力は確実にString型なので例が悪かったです。


コンソールから入力された値が本当にString型なのか確認したいときは
どうすればよいでしょうか?


517 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:59:36 ]
>>515
それは「値の型」を調べたいんじゃなくて、コンソールから来た「文字
列」が数字を表現したものかどうかを調べたい、ってこと。



518 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:59:38 ]
String str = input();
if(input.match("[0-9]+")) {
  System.out.println("数字です");
}

519 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:00:29 ]
>516
戻り値がStringな時点でString以外はねーよ

520 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:02:32 ]
>>517
はい。そういうことです。
確かに書き方が悪かったです。

みなさん、申し訳ないです。

>>518
なるほど。ありがとうございます。
それのことです!!



521 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:03:04 ]
ていうか自分でパーサ書けよ。それくらい

522 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:04:37 ]
>>519
確かにそうなんですけど、無意味ですがやらなければならないんです。

523 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:13:10 ]
数値型かチェックした後に数値に変換するんだろうから、
変換ロジックと互換性のある検査ロジック使わないと駄目だよ。

例えば、Integer.parseIntでとNumberFormat.parseでは受け入れる文字列に違いがあるよ。

524 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:23:21 ]
なるほど。参考になりました。

アドバイスを考慮してコーディングを進めていきます。

525 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:26:43 ]
>>520
それは「書き方が悪い」んじゃない。その2つは全く違う概念だ。

526 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:36:03 ]
そうですね。アドバイスを頂く過程で気づきました。

最初は、オブジェクトの型を調べなければならないと思っていました。
でも実は型を調べるのではなく、String型の中身が数値なのか文字なのか
ということを調べることだったんですね。


527 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:39:12 ]
要するに自分が何したいか分かってないと

528 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 00:44:41 ]
そうですね。分かったつもりになっていました。
以後気をつけなければならないな、と思います。

529 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 08:10:49 ]
そういう時に例外使うんじゃないの?

530 名前:デフォルトの名無しさん [2008/07/24(木) 08:31:51 ]
genericsの質問です。
自己参照する型はどう書くのでしょうか?
つまり、
void someMethod( java.util.List<X> x ) {
x.add( x );
x = x.get( 0 );
}
がエラー/警告を吐かないようにするためにはXに何を書けばいいのでしょうか?




531 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:00:54 ]
これでどうよ
<X extends List<X>> void someMethod(X x) {
x.add(x);
x = x.get(0);
}

532 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 10:45:30 ]
javaソースからjavadocの要素を取り出してエクセルに出力するツールを作成したいのですが、
エクセルはPoiを使用する予定ですが、javaソースからjavadocの要素を取得するAPIが分かりません。
標準API問わず、何か便利jarかAPIありますでしょうか?

533 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 10:59:04 ]
doclet API 使えば?

534 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 11:36:26 ]
画像を読み込みたくて
BufferedImage img = ImageIO.read(new File("aaa.jpg"));
を書いたのですが、コマンドプロンプトからは実行し読み込めるのですが、
Eclipseのデフォルトパッケージに入れたものからは読み込めません。
絶対パスで指定すればできるのですが、相対パスで書くにはどうすればいいでしょうか。

535 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 12:14:31 ]
相対パスってのはカレントディレクトリが基準なんだが、カレントディレクトリがどこかは確認したか?
System.out.println(System.getProperty("user.dir"));

536 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 12:23:34 ]
>>535
解決しました。
ソースのフォルダに画像が入っていたため読み込まれなかったようです。
また、コマンドプロンプトで実行したときはカレントディレクトリが
ソースのフォルダになるため読み込めたようです。
ありがとうございました。

537 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 15:07:54 ]
外部コマンド(exe)を実行するために下記のような
ソースを書いているのですが
連続する2つ以上のスペースが一つにまとめられてしまいます。
Runtime.getRuntime().exec(strCmd);

これを正常に実行するにはどうしたらよいでしょうか?
よろしくお願いいたします。



538 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 15:49:31 ]
>>537
strCmd の中身がどんなときまとめられて、
まとめられることでどんな影響があるのさ

539 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 15:59:12 ]
>>538
すみません。事故解決しました。
String strCmd[] = new String[3];
strCmd[0] = "hoge.exe";
strCmd[1] = "hoge1";
strCmd[2] = "hoge2";
Runtime.getRuntime().exec(strCmd);
としたらOKでした。


540 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 21:17:10 ]
>>483 >>492
import java.io.*;
import java.net.*;
public class CalcClient {
public static void main(String[] args) throws IOException {
String answer = calc("12+13*13/11−99= ");
System.out.println(answer);
}
public static String calc(String target) throws IOException {
URL url = new URL("www.google.com/search?q=" + URLEncoder.encode(target, "utf-8"));
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String response = "";
for (String line; (line = br.readLine()) != null; ) response += line;
br.close();
conn.disconnect();
return response.replaceAll("^.*?(<h2 class=r>.*?<b>.*=\\s*(\\S+?)\\s*</b></h2>).*?$", "$2");
}
}



541 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:07:52 ]
定期的に上がるネタだな

542 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 00:04:20 ]
質問させてください

今度、業務でJavaでGUI作ることになりました
会社から勉強しとけと言われているのですが、ここだけは読んでおけというウェブページ(できれば日本語)もしくは書籍はありますか?
ちなみにSE6使うそうです
当方のスキルはJava関係だとSE6使ってwebアプリのロジックとservletまわり書いていました

よろしくお願いいたします

543 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 00:09:33 ]
Tutorialは一通り読んだ方がいいですね。
というかそれ読んで、自分でこなしたらそれだけで基礎知識としては十分だと思います。

544 名前:デフォルトの名無しさん [2008/07/25(金) 00:37:17 ]
質問させてください
Eclipseだけはあるのですが、JDKは絶対に必要ですか?教えて下さい

545 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 00:38:17 ]
eclipseスレへいけ

546 名前:デフォルトの名無しさん mailto:age [2008/07/25(金) 14:51:49 ]
POI(HSSF)で、特定のセルにドロップダウンリストを
作りたいのですが作り方がわかりません。
そもそも作れるのかどうかも模索中なのですが・・・。

テンプレートファイル側でドロップダウンリストを
用意していたのですが、読み込ませた後でそのまま
出力したら、ドロップダウンリストが無効(消滅)
していたので、対応してないのかな?とは思って
いるのですが・・・

稚拙な質問で申し訳ありませんが、どなたか救いの手を・・・


547 名前:デフォルトの名無しさん [2008/07/25(金) 14:59:06 ]
質問というか意見を伺いたいのですが、
Swingでアプリケーションのフォームを作成する場合に
Model-View-Presenterパターンを適用したとすると、
TableModelはM/V/Pいずれの所有物とすべきですか?

548 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:04:15 ]
モデル

549 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:13:46 ]
何とかパターンが2重構造になってると思えばわかりやすいかもね。
狭い目で見るとモデルで広い目で見ると別のグループに入ってる。

550 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 16:04:57 ]
モデルとJTableを繋ぐアダプタってあたりでどう
それってプレゼンタかな
setValueというイベント(?)も来るし



551 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:11:41 ]
>>547のModel-View-Presenterパターンって、
Model-View-Controlerパターンと別物?
ちょい気になったので教えて。

552 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:36:46 ]
Presentation-Service-Persistence と混ざっているんじゃね?

553 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:48:22 ]
>>551
ぐぐってみたが、別物っぽい。ただ、数分眺めただけなので、すぱっと違いのわかるページは見付けてないんだけど。

554 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 05:34:54 ]
Modelの更新通知の責務がControlerにあるMVCじゃね?

555 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 08:25:07 ]
mainのみのシングルスレッドでウェイトをかけるには、どうしたらいいのでしょうか
マルチスレッド化してしまうのも考えたのですが

556 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 10:49:26 ]
5秒待つとかそういうことか?
それなららばThread.sleep(5000);

557 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 11:13:35 ]
mainに書こうとするとThread.sleepじゃ駄目じゃなかったか?
自身のスレッド取得してsleepとかだった気がする・・忘れた・・

558 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:35:48 ]
javamailでhotmailへ送信ができません。

Properties props = System.getProperties();
// SMTPサーバーのアドレスを指定
props.put("mail.host","hotmail.com");
Session session=Session.getDefaultInstance(props,null);
MimeMessage mimeMessage=new MimeMessage(session);
// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom(new InternetAddress("asde@hotmail.com","七誌","iso-2022-jp"));
// 送信先メールアドレスを指定
mimeMessage.setRecipients(Message.RecipientType.TO,"hogehoge@hotmail.com");
// メールのタイトルを指定
mimeMessage.setSubject("Hello World JavaMail","iso-2022-jp");
// メールの内容を指定
mimeMessage.setText("testtest","iso-2022-jp");
// メールの形式を指定
mimeMessage.setHeader("Content-Type","text/html");
// 送信日付を指定
mimeMessage.setSentDate(Calendar.getInstance().getTime());
// 送信します
Transport.send(mimeMessage);

ご教授お願いします

559 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 14:19:32 ]
stacktraceでおk

560 名前:デフォルトの名無しさん [2008/07/26(土) 15:46:36 ]
String を int に変換するのってどうしたらいいんですか?



561 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:56:19 ]
>>560
入門書1冊やってから出直してこい

562 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:34:00 ]
やさしいjavaにはそんな方法書いてなかったきがする。あれはダメだ

563 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:04:30 ]
やさしい(ところだけ)Javaだからな

564 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 20:05:07 ]
Stringからintは文字入力当たりで乗ってそうな気がするが・・

565 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:39:18 ]
教育は国家の土台なのに。
これじゃ砂上の楼閣だ。

566 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 23:05:00 ]
やさしいjavaもやさしいC++も書いてあることかわらないからな

567 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 23:32:40 ]
どんな頭してんだよw

568 名前:デフォルトの名無しさん [2008/07/27(日) 00:16:27 ]
プログラム言語Javaを読んでて、finalがスレッドで特別な意味を持つ、って感じの説明の意味が分からん。

あるスレッドでStringをクラスのstaticフィールドに書き込んで、その後に別のスレッドからそのフィールドを
見ても、書き込んだ値が見えることが保証されない。でも、finalにすれば保証される。
不変オブジェクトだから同期が必要ない、と言うのはプログラマの誤解だ。

みたいなことが書いてあったが、値を変えない見るだけの変数なら、同期なんて必要ないし、
普通、他の言語でも同期なんてしないよな?ちがうのか?

569 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:21:01 ]
>>568
値を変えないで見るだけ、というのは初期値の0から変えない場合に限る
他のスレッドからは、変更する前の値である初期値の0が見える場合がありうる

www.ibm.com/developerworks/jp/java/library/j-jtp02244/
www.ibm.com/developerworks/jp/java/library/j-jtp03304/

570 名前:デフォルトの名無しさん [2008/07/27(日) 00:49:43 ]
>>568
そう簡単な話じゃないってこったw



571 名前:kptdEsCUpYdeJPfdZFS mailto:qviwwp@ejnvyf.com [2008/07/27(日) 00:52:28 ]
hQS1UB <a href="ejrfsnyjpyid.com/">ejrfsnyjpyid</a>, [url=fyhfhnswsdjf.com/]fyhfhnswsdjf[/url], [link=mevudxopwjek.com/]mevudxopwjek[/link], jwqpsqacgcmw.com/

572 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 01:19:57 ]
あるスレッドで書き込んだものが別のスレッドで見えるのが保証されるのは
何らかの方法で同期化された場合だけ


573 名前:デフォルトの名無しさん [2008/07/27(日) 02:10:13 ]
Javaでファイルの移動を実行させる場合には、みなさんは、どのメソッドを使ってますか?
(コピーではなく移動)


574 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:12:13 ]
File#renameTo()

575 名前:デフォルトの名無しさん [2008/07/27(日) 02:12:53 ]
>560

www.nextindex.net/java/class/Integer.html
StringをvalueOf()でInteger型にして、
Integer型からparseInt()でint型にする


576 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:13:13 ]
File#renameTo

577 名前:デフォルトの名無しさん [2008/07/27(日) 02:18:06 ]
>>574

import java.io.*;

public class TestRenameToDir{

public static void main(String[] args)throws IOException{
File f = new File("a\\");
f.renameTo(new File("b\\"));
}

}

こんな感じで書いてみたけど、フォルダ"a"の中身は移動してくれません・・

578 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:28:24 ]
>>575
Integer#parseInt(String) で String から int に出来るだろw
あと、Integer から int は parseInt() ではなく intValue()

579 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 07:01:20 ]
>>558
MessageID は設定しなくていいのか?
他のところ(yahoo とか infoseek とか)には送れている?
Outbound Port 25 Blocking な ISP かどうかは確認した?
Hotmail 側でなんらかの受信遮断処置(Sender ID/SPFとか)をしていないか確認した?

580 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 08:52:03 ]
>>573
カットアンドペーストをやりたいってこと?
バイトストリームで新しいファイルに全て書き写して
元のファイルをFile#delite()で消すのは?



581 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 10:32:35 ]
>>577
それだとaの中身をbに移動じゃなくて、aをbにリネームだな。

582 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 11:48:34 ]
流れぶったぎってすいません。

とりあえずJAVAの絵本を読んたので、これからJAVAを始めたいのですが
初心者から中級者あたりまで、大人の階段を一気にかけのぼれるような
本を教えてくださいませんか。
だいたい三冊〜四冊くらい買う予算は用意してます。
初級者→できる初級者→職場にいても舌打ちされない程度の雑用兼初心者→飯に誘ってもらえる程度の中級者
という段階を踏みたいです。

単純に、みなさんが昔参考にした本を、赤ちゃんレベルから順番に教えていただければいいかな、と。

583 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 11:53:56 ]
「本で勉強しました」っていうのは軒並み使えないので
とりあえず何か作れ。

584 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 11:56:25 ]
>>577
「ファイルの」移動だと言っとろーが。
a\c.txt
b\
で a の中身を b に移動させたいのなら
new File("a\\c.txt").renameTo(new File("b\\c.txt"));
にしないといけないんじゃないか。

585 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 11:59:20 ]
おまいら、今日は日曜なのに仕事してんの?

586 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:00:19 ]
>>583

ありがとうございます。
本だけ読んでも、童貞のエロ孔明にすぎないですもんね。

でも、今の僕は「ハーイー」しか言えないイクラちゃん状態なんです。
せめて人間の言葉がしゃべれるレベルになるには、何か本を読まないとダメかなと。

587 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:07:03 ]
>>582
「三冊〜四冊」読んだだけで「飯に誘ってもらえる程度の中級者」になれたら苦労せんわw
本を読んで理解するのも新しいことをするには必要だが、>>583 が言うように自分で作ってみたり、
誰かが作ったものを読んで、どうしてそうなってるのかとかどうしたらより良くなるのかとか考えろ。
そういうことで「階段を登れる」もんだと思うぞ。

588 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:07:09 ]
>>582
入門書が終わって一通り言語仕様を理解しても、困ったことにそれだけじゃ足りない
オブジェクト指向や周辺技術についての理解が必要
本はもちろん有用だが、コードを読み書きしないとダメ

一冊だけ。「Effective Java」どちらかというと中級者向けになるんだろうか
しばらくすると第二版が出るらしい
入門書はよく分からん。ただ「独習Java」は勧めない

589 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:15:17 ]
>>585
ここは仕事場だったのかw 完全に遊びに来てるぞww

590 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:16:30 ]
>>587
そうですね。考えが甘かったス。

>>588
ありがとうございます。
その本を買って、わけのわからなさに打ちのめされてみたいと思います。

やっぱりコードの読み書きが大事なんですね。
サンプルの多そうな本を買ってみます。



591 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:25:32 ]
>>588
俺は独習Javaやったんだけど、わかりやすくて入門書としては良いと思うんだが。

なぜお勧めできないの?


592 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:29:55 ]
>>589
休日出勤の息抜きにカキコしてるの?

593 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:35:22 ]
>>582

2冊目としては
・Sun認定資格 SJC-Pの教科書
 ついでに資格もとれるかも
・JavaプログラマのためのUML
 UMLやOOPに関する知識がざっくり得られる。
・Effective Java
 Java言語独特の作法、やってはいけない事を教えてくれる。

「独習Java」は俺もお勧めできない。


594 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:40:02 ]
>>593
ちなみにお勧めできない理由を教えていただけると嬉しいです

595 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 12:41:57 ]
>>591
いきなりオブジェクト指向とは云々と書かれてて頭を抱えた記憶があるのと、
使われているクラスが全体的に古い感じがする(VectorとかStringBufferとか)
JDK5.0以降の構文拡張に関連する記述が少ない

・・・・と書いてて気づいたが、もう第4版が出てたのか。そっちは確認してない

596 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:08:31 ]
>>595
なるほど。ありがとう。

597 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:11:59 ]
>>595
StringBufferではいけないの?

598 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:15:48 ]
独習Javaは今となっては古いんだわ、1.4もしくはもっとふるいのがベースだから。
少し遠回りしてもOKならば、俺は勧めるよ。
あれをやり込めばかなりの量のコードを書くことになるからね。

その後、1.5に対応するために、開発者ノートシリーズ「Java1.5 Tiger」ってのをお勧め

599 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:23:04 ]
>>597
今ならStringBuilderがある。違いは同期化の有無

600 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:27:36 ]
>>599
StringBuilderが同期がないんでしょ?



601 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:27:52 ]
>>593
ありがとうございます。
早速アマゾンで検索したのですが

■Sun認定資格 SJC-Pの教科書

これはありませんでした。正式名称でしょうか。
また、こういう初心者から入りやすい教科書系の本は、自分に必要だと思いましたので
この本以外の教科書系で良いものがありましたら、よろしくお願いします。

■JavaプログラマのためのUML

似たような名前の本が二冊ありました。ソフトバンクから出ているほうでいいのでしょうか?
カットシステム社から出ている本も評価が高いようです。

すいません。

602 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:28:42 ]
>>597
別に問題はない。ただ速度を求めるなら StringBuilder ってだけ。
最近は CPU も早いんだし、StringBuffer でもいいけどね。

603 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:32:27 ]
>>598
「Java 5.0 Tiger」だな

604 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:38:47 ]
>>601

SUN教科書Javaプログラマ(SJC-P) (SUN教科書)
www.amazon.co.jp/SUN%E6%95%99%E7%A7%91%E6%9B%B8Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-SJC-P-SUN%E6%95%99%E7%A7%91%E6%9B%B8-Paul-Sanghera/dp/4798112186/ref=sr_1_1?ie=UTF8&s=books&qid=1217133309&sr=1-1

JavaプログラマのためのUML
www.amazon.co.jp/Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEUML-%E3%83%AD%E3%83%90%E3%83%BC%E3%83%88%E3%83%BBC-%E3%83%9E%E3%83%BC%E3%83%81%E3%83%B3/dp/4797325135


どちらもAmazonの評価は極めて低いようだ・・・

まあいろいろな人の意見を参考にしてくだされ

605 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:41:34 ]
今まで質問してる人と別人ですけど
俺も本で勉強してて「10日で覚えるJAVA入門」と
「トレーニグドリルJAVA」と「JAVA入門の入門」を買って
基礎の基礎から勉強したいから読んでるんですけど
挙げられた本買ってこようと思います

606 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:12:43 ]
独習javaは演習問題の解答がついてないからうんこ

607 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:40:33 ]
>>604
SUN教科書Javaプログラマ(SJC-P) (SUN教科書)を購入することにしました。
評価が低くしているは「初心者向けである」という点らしいので、
逆に初心者の僕には持って来いですね。ありがとうございます。

UMLの本は、もう一冊のほうを買うことにしました。

608 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:51:17 ]
大人の階段上る君はまだシンデレラさ

609 名前:デフォルトの名無しさん [2008/07/27(日) 17:02:40 ]
Javaをやってる時点でお子様

610 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:08:32 ]
Javaを馬鹿にするやつはJava言語規定を読んだことがないんだろうな



611 名前:デフォルトの名無しさん [2008/07/27(日) 17:55:14 ]
>>584
なるほど。
ということはjavaではディレクトリの移動は出来ない?

612 名前:デフォルトの名無しさん [2008/07/27(日) 17:58:36 ]
item.rakuten.co.jp/book/4014609/
これ使ってるよ

613 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:10:50 ]
>>611
ツッコんでいいやら呆れていいやら。
ディレクトリの移動と言っている動作が
「ディレクトリの中身を全て別のディレクトリに移す」
ことで、出来ないと言ってるのが
「File(を示す何か)クラスのrenameTo()のように一発で出来るものが無い」
という意味なら、Javaの標準APIでは無いかもしれない。
が、「javaで」出来ないのかといえば、数行〜数十行のメソッドを書けば出来るだろうし、
標準ではない Jakarta 等にはあるかもしれない。

614 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:17:16 ]
ディレクトリの移動ってったって、
HDD上での位置は変わらないけど、
そこにどういうパスでアクセスするかって
だけの話だからなぁ。

パス情報を変えればいいだけの話。

615 名前:デフォルトの名無しさん [2008/07/27(日) 18:26:35 ]
こんなかんじで、ディレクトリ下のファイル一覧を作成しないと、ディレクトリ単位の移動はできない?

import java.io.*;

public class FileTest{

static FileWriter fw ;

public static void main(String[] args)throws IOException{
System.out.println("どのディレクトリのファイル一覧を作成しますか? Directory?");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
fw = new FileWriter("list.txt");
File f = new File(br.readLine());
File files[]= f.listFiles();
fileShow(files);
fw.close();
}

public static void fileShow(File files[]){
for (int i=0;i<files.length;i++){
if (files[i].isFile()){
try{
fw.write(files[i].getAbsolutePath()+"\n");
}catch(IOException e){System.out.println("書き込みエラーです");}
}
else if(files[i].isDirectory()){fileShow(getDirectory(files[i]));}
}
}


public static File[] getDirectory(File file){ return file.listFiles(); }
}

616 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:00:25 ]
>>615
ディレクトリ自体のリネームはこんなじゃね?
new File("hoge\\").renameTo(new File("hogehoge\\"));


617 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:21:36 ]
>>615
java フォルダ 移動でググるとこんなとこが一番最初にでたぞ
ttp://tids30.seesaa.net/article/34178646.html

618 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:40:31 ]
>>617
上書きは個別に判断しなくちゃならないな

619 名前:デフォルトの名無しさん [2008/07/27(日) 20:26:13 ]
>>617
いまのバージョンのJDKじゃコンパイルできないね。
何が原因なのだろう

620 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:40:43 ]
>>619
単にclassやimport java.io.*; を省略してるだけ



621 名前:デフォルトの名無しさん [2008/07/27(日) 20:51:31 ]
>>620
ありがとうございます

622 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:56:59 ]
javax.scriptで使えるJavaScriptのDOMでXPath使える?
xpath使いたくてチンコギンギンにしてるんだけど

623 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:11:01 ]
そもそもDOMつかえね

624 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 02:54:31 ]
踏み台に使えるよ

625 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 15:57:50 ]
アクセスレベルで、public、protected、privateはよく解かるのですが、
パッケージアクセスの使用すべきポイントがわかりません。
本来どのようなときに使うべきものなのでしょうか?

626 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 15:59:18 ]
他のパッケージに見せたくないクラスやメソッドに。

627 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:00:45 ]
>>625
すみません。言葉不足でした。
パッケージ内でアクセスが可能なのはわかっているのですが、
クラス配置・クラス設計で考えたときに、パッケージアクセスを使用した方がいいクラス間関係ってどういったものがあるかが知りたいです。

628 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:14:50 ]
同じパッケージのクラスにはアクセスさせたいけど、それ以外にはアクセスさせたくない場合。
パッケージ共通で必要だけどパッケージ外では見せてもしょうがないものに使えばいいんじゃね?
パッケージは何かの機能を実現するクラスの集合だから、パッケージ外部に公開する機能を補助するために、
パッケージ内部にだけ必要なようなものが存在することはあるんじゃない?

629 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:16:49 ]
例えば・・・・・・・、テキストエディタのコンポーネントを作るとする
たぶん TextEditor クラス本体以外にも、LineBuffer とか UndoBuffer とか色々なクラスが必要に違いないが、
これらはエディタの実装のために必要なだけであって、使うだけの人は触らないだろうし触ってもあんまり意味ないと思われる
これらテキストエディタ関連のクラスは全部 com.example.myname.texteditor だとかいったパッケージに入れ、
TextEditor や TextEditorEventListener だとかいった使う人用のクラスやインタフェイスだけ public にしといて、
LineBuffer とか UndoBuffer とかいった内部実装用のクラスはパッケージアクセスにしとけば、
外から見てすっきりするし、勝手に内部構造を触られてややこしいことになったりもしない

630 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:32:57 ]
protectedがパッケージスコープも持つのに迷ってしまう人は多いね。




631 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:00:47 ]
protected は基本的に継承用だろ。

632 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:02:07 ]
Eclipse3.2.0をインストールして、言語パックNLpack1-eclipse-SDK-3.2.1-win32も上書きして
メニュー等IDE自体は日本語になったのですが、IDEの[ヘルプ]→ダイナミックヘルプから見れるJavadocが英語のままです。
ここのダイナミックヘルプを日本語にしたい場合はどうしたらよいのでしょうか?

633 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:19:04 ]
protectedはパッケージ外から継承されたとき用で、
パッケージ内は基本的にスコープなど気にせずに
みんなパッケージスコープを使えっていうのが本来の設計思想。
メンバーのデフォルトスコープがパッケージスコープなのがその証拠。
パッケージ、モジュール、ユニット、ライブラリ呼び方はいろいろだが、
その範囲内は適当にという言語は多いからそれに倣ったのだと思う。
例えばdelphiはprivateがユニットスコープだった。
ただ、javaの利用者がアバウトな使い方を良しとしなかったのでそういった使い方は余りされていない。
みんな一生懸命privateと書いている。


634 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:24:12 ]
>>632
mergedoc

635 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:28:50 ]
>メンバーのデフォルトスコープがパッケージスコープなのがその証拠。
ってのはどーなんだろね?

単に新しい予約語考えるのが面倒だった、
既存の予約語 例えば package でパッケージプライベートにしても良かったけど
予約語に複数の意味持たせるのは汚いからあまりやりたくなかった、
とかも考えられるけど。

636 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:42:53 ]
>予約語に複数の意味

それはすでに final がやっちゃってるような・・・

637 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:45:34 ]
>>636
複数の使い方があるだけでいいなら class もあるし。

638 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 18:07:05 ]
>>634
あの、MergeDocの解説の通りにやってみましたが
ポップアップしか日本語になりません・・・
www.itmedia.co.jp/enterprise/0311/24/epn01.html

639 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 18:08:00 ]
デフォルトでは右のほうに出るヘルプビューのjavadocを日本語で見たいです。


640 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 18:56:53 ]
なぜjavaはカレントディレクトリを移動できない(させない)のでしょうか?



641 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:02:55 ]
カレントディレクトリなんて、ユーザがコマンドラインで指定したファイル名を解釈するとき以外、何に使うんだ?

642 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:27:08 ]
いまやWebのほとんどはjavaが絡んでいるって聞きますが、
具体的にWebでのJavaって何をさしているのですか?
JavaによるWeb開発をしようと本屋に立ち寄ったはいいけど、
なにやら環境が沢山あり過ぎて何に手を出すべきか迷ってしまいます。

一般にWenでのJava=JSPの本を買うのが普通なんですか?(+DBMS)

643 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:32:23 ]
>いまやWebのほとんどはjavaが絡んでいるって聞きますが
その統計にjavascriptが混じってることは間違いない。

644 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:34:09 ]
> いまやWebのほとんどはjavaが絡んでいるって聞きますが、

そんなことないw

645 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:38:26 ]
Webっていってもただのホームページとかでなく、
業務で利用するようなWebシステムです。

646 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:38:33 ]
絡んでるってのはつまり
サーバー上でJavaが動くって事じゃないか
動かしてるかどうかは無関係に

647 名前:デフォルトの名無しさん [2008/07/28(月) 19:39:53 ]
すくなくとも、JavaScript本は買わないほうがいい
仕事じゃ使わない。

648 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:43:15 ]
使うよ

649 名前:デフォルトの名無しさん [2008/07/28(月) 19:46:42 ]
使うこともある程度
最近は

650 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:54:01 ]
仕事によるだろjk



651 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:55:50 ]
Tomcatが主流

652 名前:デフォルトの名無しさん [2008/07/28(月) 20:06:57 ]
JAVAにまつわる専門用語が氾濫しているが
Webは儲からないのでやめたほうがいい

653 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:08:18 ]
>>645
社内業務システムなんかだとASP.NETも多いぞ。

654 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:13:58 ]
社内業務システムはACCESSとEXCELだろJK

655 名前:デフォルトの名無しさん [2008/07/28(月) 20:41:49 ]
Beanがお勧め

656 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:10:16 ]
学校でとりあえずjavaの基礎を習ったのですが、
そこではjavacでコンパイル、コマンドプロンプトからクラスファイルを
指定して実行したのですが、これがjavaの基本なのでしょうか?
exeファイルを作って直接実行、ということは出来ないのですか?

657 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:15:29 ]
>>656
run anywhereじゃなくなるから、exe化はJavaの思想とは違う。
不可能じゃないけどね。

658 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:21:09 ]
exeの変わりにjarと起動用のバッチファイルを生成するプログラムを作ったことがあるよ。
裏でant呼んでコンパイルして最後に*,classを消してしまうプログラムなのだけどわりと重宝した。

659 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:33:27 ]
exeにするのはjavaの思想に反しているのは分かりますが…
となると、実行には常にコマンドプロンプト等が必要ということですか?

660 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:35:25 ]
だからjarファイルにすればダブルクリックで実行できるって



661 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:59:24 ]
Windowsのアプリが作りたいなら素直にC#にいったほうがいいと思うが
Javaとたいして変わらないから

662 名前:デフォルトの名無しさん [2008/07/28(月) 22:18:26 ]
C#の将来性は?
結局VC++が増加しそう


663 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:19:38 ]
学校で習いたてならそういう感想を持つだろうけど実際の開発でjavacは使わないから安心していい。

664 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:21:01 ]
>>662
それをJavaスレで聞いてどーすんだ?

665 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:25:18 ]
>>663

なにを使うの?

666 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:26:10 ]
>>662
Google Code Jamの言語別統計をみると、C++とJavaが人気のようだけど。

667 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:28:04 ]
くそ、こんなときにIDが表示されれば・・・

668 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:31:06 ]
>>665
apache ant
IDEのeclipseやnetbeansもこれを中で使ってる。

669 名前:デフォルトの名無しさん [2008/07/28(月) 22:33:07 ]
>>666
世界ではなく日本国内では?

670 名前:658 mailto:sage [2008/07/28(月) 22:39:28 ]
でてきた。こんなのです。学習用には重宝した。
//++@ sample
//++m local.test.Hello
//++ local/test/Hello.java
package local.test;
public class Hello {
  public static void main(String [] args) {
    new Hello2().hi();
  }
}
//++ local/test/Hello2.java
package local.test;
public class Hello2 {
  public void hi() {
    System.out.println("hello world !");
  }
}
//++
以上をsample.txtに保存、コンパイルでsample.jarとsample.batを作って実行。
C:\>trj sample.txt
C:\>sample
hello world !




671 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:42:32 ]
>>668
Antはコンパイラと言うわけではないのでは・・・

672 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:47:05 ]
>>670
良く分からないが、それこそ、Antでするようなこと?

673 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:57:23 ]
>>672
そのプログラムは
ディレクトリ掘ってjavaファイル配置してbuild,xml作ってantを呼び出す。
jarだけ元のディレクトリにコピーして作業用のディレクトリを削除。
antはコンパイラというよりmakeユーティリティ。
makeと違ってjavacそのものではなくjavaのランタイムの中にある
コンパイル用のモジュールやjarを作るためのモジュールを呼び出す。


674 名前:デフォルトの名無しさん [2008/07/28(月) 22:58:40 ]
.NETやJAVAってどんどんいろんな物取りこんでんだな、
JAVAは
JRubyでRubyが
JythonでPythonが

.netは
ASP、Visual Basic、Visual C#、Visual C++、Visual J#
等が動くようになってる。

時代の流れは速いな・・・
これからプログラミングするには覚えるの多すぎるな
最近の若い世代は覚える技術が多すぎて可愛そうだわ


675 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:59:54 ]
IronPythonやIronRubyもあるでよ

676 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:28:58 ]
Javaは配列とオブジェクトは参照渡しということですが

class Hoge{
public int x;
Hoge(int t){x=t;}
}
public class Cui{
public static void main(String[] args)
{
Hoge A=new Hoge(7);
Hoge B=new Hoge(999);
change(A,B);
System.out.println(A.x +" , "+B.x);
}
public static void change(Hoge A, Hoge B){A=B;}
}

上の表示結果は「7 , 999」でchange内をA.x=B.xにすると「999 , 999」になる、
というのがどういうことなのかイマイチ分かりません。
参照渡しなら元のAはBのオブジェクトが指す所を指すようになって
A=Bで「999 , 999」になるように思えたのですが、どうしてでしょうか?

677 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:31:46 ]
参照渡しをしているわけではありません。
参照を値渡ししてるだけです。

678 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:33:49 ]
メソッドですでに参照として受け取ってるから。
mainメソッド内で持っている、あるオブジェクトへの参照Aと、メソッドで受け取った参照は、参照先は同じでも、別物。
だから、上の例ではchangeで確かにAの指す先はBとしてあるが、mainメソッド内の参照には影響がない。

679 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:38:08 ]
オブジェクトの参照も「値」で、その値をコピーして渡してる感じ で、いいんだっけ?

680 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:57:48 ]
main内の
Hoge A=new Hoge(7);
これでAが指してるアドレスが仮に0x1110〜0x1120だとすると、
change(Hoge A , Hoge B)でのAは別のアドレス(仮に0x2220〜0x2230)を指していて、
その中身が0x1110〜0x1120に入っているものと同じになるってことでしょうか?



681 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:02:26 ]
A の指してる先は同じ
しかし A 自体は別々

682 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:03:17 ]
それはクローンだな。
オブジェクトの実体:0x1100〜0x1200

main内のA:0x2000-0x2010(実体の格納先など)
change内A:0x2300-0x2310(同上)

アドレスで書くとかえって分かりにくくなるかもね。
サイズなんか適当だから。

683 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:11:41 ]
代入前
------------         -Hoge--
|  main の A   |---> |  x = 7  |
------------         -------
|  main の B   |-----↑-----    
------------          |        ↓    
| change の A |------      -Hoge--- 
------------                | x = 999 |
| change の B |--------> --------
------------      

A=B 代入後
------------         -Hoge--
|  main の A   |---> |  x = 7  |
------------         -------
|  main の B   |------------    
------------                  ↓    
| change の A |--------> -Hoge--- 
------------                | x = 999 |
| change の B |--------> --------
------------      

mainのAは何も変わらない

684 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:26:35 ]
ああなるほど!
参照ではなく参照を値渡しているって「指している矢印」がもうひとつ出来るイメージですね!
皆さんのおかげでやっと理解することが出来ました。
こんな時間にも関わらずもの凄く分かりやすい説明をして頂いて本当にありがとうございます!


685 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:36:46 ]
Javaの変数は、
プリミティブに対しては値そのものが入るけど、
オブジェクトに対してはそのオブジェクトへの参照が入る

メソッドは、それらの値渡しをする

686 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 08:33:20 ]
javaでは参照渡しはないのですか

687 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 08:37:54 ]
ないです

688 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 09:17:58 ]
プリミティブ以外は参照わたしじゃなかったのかい?

689 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 09:22:21 ]
>>688
いいえ。参照の値渡しです。

690 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 10:05:49 ]
メタには参照渡しだけど、メタじゃ済まない部分が顔を出す。



691 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:16:07 ]
ここで聞いて良いものか微妙かもしれませんが、こういうのってどうやって作るのでしょうか?
www.nicovideo.jp/watch/sm3943529

692 名前:デフォルトの名無しさん [2008/07/29(火) 19:30:56 ]
すみません、バケットソートをカウントじゃなく
二次元配列で作ったらものすごく処理が遅くなったんですけどどうしてでしょうか?


693 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:39:34 ]
>>691
普通にタグ出力しまくるだけでおk

694 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:46:03 ]
>>692
それだけだと作り方が悪いとしかいえない。

695 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:52:39 ]
>>691
画像読み込んで1pxづつ見ていくだけ
色取得も出来るし簡単だよ。
多分ものすごいHTMLのソースになってるんだろうけど・・

696 名前:デフォルトの名無しさん [2008/07/29(火) 19:56:33 ]
>>694

2次元配列のプログラム思い出しながら書いてみました。
だいたいこんな感じです。
maxはバケットソートを使って並び変えたい要数の最大値です。

max++;
sort_array.length=tail
int[][] bucket=new int[max][tail];

for(int i=0 ; i<tail; i++){
int m=0;
while(bucket[sort_array[i]][m]<=1){
m++;
{
bucket[sort_arrray[i]][m]=sort_array[i]
}

for(int i=1; i>tail; i++){
while(bucket[i][m]<=1){
sort_array[i]=bucket[i][m]
m++:
}
}


697 名前:デフォルトの名無しさん [2008/07/29(火) 20:00:18 ]
すみません、一個目のwhileのとこ「<」と「>」間違えてました


while(bucket[sort_array[i]][m]>=1){
m++;



698 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:04:41 ]
バケットソートの高速性は要素数に比例する量の処理で済むところだ
そのコードのように二重ループにすると要素数の二乗に比例する量の処理が必要になる
大雑把に言ってバブルソートと同じ計算量

699 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:28:17 ]
どうしようもない質問かと思いますが
コンストラクタというのはインスタンスを作成するのに使う
クラスの特殊なメソッドのようなものという認識で良いのでしょうか?

700 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:39:30 ]
うん



701 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:47:06 ]
>>700
ありがとうございます
コンストラクタの作成と書いてあったので混乱しました
「クラスのコンストラクタを使ってインスタンスを作成する」
と脳内変換しておきます

702 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:16:58 ]
>>693,>>695
レスありがとうございます!
1px取得してその色の■をhtmlの方でmarginとpaddingを0にして
ひたすら敷き詰めていけば出来るものなのかな?
ちょっとその方向で今から作ってみようと思います。


703 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:18:11 ]
>>701
コンストラクタの作成は、コンストラクタの定義を書くということだと思うが

704 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:26:23 ]
>>702
ちょっとやってみたけど単純にテキストじゃないっぽい?
ブラウザにもよるかもしれないけれど、テキストでやると、属性値が変わる部分でずれる部分があるから、テーブルでやってみたらきれいにできた。
public static void encode(BufferedImage input,PrintStream writer,String pxStr,int width,int height){
BufferedImage out = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
out.getGraphics().drawImage(input, 0, 0,width,height, null);

writer.println("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
for (int i = 0; i < height; i++) {
writer.println(" <tr>");
for (int j = 0; j < width; j++) {
int rgb = out.getRGB(j, i);
writer.printf(" <td style=\"background:#%06X\">",rgb&0xFFFFFF);
writer.print(pxStr);
writer.println("</td>");
}
writer.println(" <tr>");
}
writer.println("</table>");
}
pxStrはテーブル内の文字列。全角スペース*2くらいがちょうどいいかも
拡大縮小は今回ほんとに最低限の実装だけどw

705 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:09:35 ]
>>701
文脈が解らんけど、
複数のコンストラクタを定義できるし、そのときは「コンストラクタを作成する」という。

706 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:13:33 ]
質問させてください
現在、jdk6でgui開発を行っています
サイズを指定しないJFrameの上にサイズを指定したJPanelを載せて、JFrame#pack()を行い、大きさを整えようとしたのですが、なぜか、小さくなってしまいます。
JPanelはsetSizeで800*600とかにしているのですが、実行するとせんべいみたいな形になってしまいます
なぜなんでしょ?
また、せんべいみたいな形になったwindowを広げるとJPanelは800*600なのに、それを超えてJFrameの大きさと同じ大きさまで拡大してしまいます
これも、なぜなんでしょ?

解決方法や実装の常識的な方法があれば、教えてください

707 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:15:10 ]
>>706
setPreferredSize(Dimension)

708 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 01:11:11 ]
Swingのソース見れば分かるがsetPreferredSize()はかなり無視されてるぞw

709 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 01:28:20 ]
>>708
夏だな

710 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:00:47 ]
>>706
サイズも含めて望みのレイアウトになるようなレイアウトマネージャを使う。
そしてそのレイアウトマネージャがレイアウトに利用するコンポーネントのプロパティを正しく設定する。



711 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:07:25 ]
>>710
ベスト回答

712 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 09:45:20 ]
以下の方法でurlクラスロードできません。
URL[] url = {new URL("file:///C:/…/classes")};
new URLClassLoader(url).loadClass("/jp/co/…/Xxx")); → ClassNotFoundException
new URLClassLoader(url).loadClass("/jp/co/…/Xxx.class")); → ClassNotFoundException

実際のディレクトリ
クラスパス → C:\…\classes
クラス → C:\…\classes\jp\co\…\Xxx.class


713 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 10:08:26 ]
>>712
> new URLClassLoader(url).loadClass("/jp/co/…/Xxx")); → ClassNotFoundException
new URLClassLoader(url).loadClass("jp.co.….Xxx"));

loadClass する時のクラス名はバイナリ名らしいので
packagename.classname$innerclassname みたいに
パッケージ及びトップレベルクラスまでは '.' で繋いでいい。

714 名前:デフォルトの名無しさん [2008/07/30(水) 15:13:44 ]
質問です。
JAVAのstaticメソッド内に宣言したローカル変数は
ヒープに領域を取られるのでしょうか?

配列などのオブジェクト宣言時は領域を取られるとあったのですが、
変数はオブジェクトではありませんよね?

715 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 15:28:55 ]
フリーの日本語で音声合成ができるライブラリってありますか?

716 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 15:34:19 ]
javaでボタンなどのコンポーネントを追加するときは、
getContentPaneでコンテナを取得して、
そのコンテナに対してコンポーネントを追加すると思います。
そこで、質問なのですが、コンテナを複数個作成することはできるのでしょうか。
目的は、複数のコンテナを複数の画面とみなし、
メニューなどから必要に応じて表示するコンテナを切り替えることです。

717 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 15:52:09 ]
>>716
CardLayout使うとか、JLayeredPane使うとかじゃだめ?

718 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 15:55:01 ]
>>717
ありがとうございます。早速、調べてみます。

719 名前:デフォルトの名無しさん [2008/07/30(水) 16:37:41 ]
質問です。
JAVAのstaticメソッド内に宣言したローカル変数は
ヒープに領域を取られるのでしょうか?

配列などのオブジェクト宣言時は領域を取られるとあったのですが、
変数はオブジェクトではありませんよね?

720 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 16:40:12 ]
>>719
メンバだろうがstaticだろうがローカル変数はスタックじゃね?



721 名前:デフォルトの名無しさん [2008/07/30(水) 16:44:07 ]
標準ライブラリってどうやって見るんですか?

722 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 16:46:23 ]
>>714
staticか否かにかかわらず、ローカル変数は「ローカル変数テーブル」
に置かれる。(で、ローカル変数テーブルは通常はスタック上に置かれる)
でも、ローカル変数が指す先はヒープ上かもしれない。
例:
static void foo() {
Foo f = new Foor();
// f はローカル変数テーブルに領域が取られるが、fが指すオブジェクトはヒープ

>>719
同じことを二度も書かなくていいよ。


723 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 16:52:33 ]
これで二度書けば解答がもらえると認識した。

724 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 16:52:43 ]
>>721
java.sun.com/javase/ja/6/docs/ja/api/index.html

725 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 17:29:48 ]
enterflagってどうゆう関数?

726 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:10:33 ]
書いた奴に聞け

727 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:56:32 ]
ディレクトリ階層を取得してくれるライブラリはありませんか?
シンボリックリンクとかあって、単純に再帰かけると無限ループ入るんで、
誰かが提供したライブラリを使ってプログラミングがしたい。
読み込んで、ノードがサイズとか名前とか更新日時とかを持った木構造にしてくれればいい。

728 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:59:21 ]
winのlnkファイルもあるしな。
まああれは解析されてるがディレクトリツリーの取得ぐらい自分で書け。

729 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:11:43 ]
>>728
すごくだるいです・・・
他人が書いたライブラリを使った方が正確です。

730 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:47:38 ]
>>729
ならそのまま延々待ってろw



731 名前:デフォルトの名無しさん [2008/07/31(木) 01:18:13 ]
Javaで、Excelのデータを読むときは、poiを使用するけど
もし、Javaで、OpenOfficeOrgのドキュメントのデータを読むときは
何を使用されていますか?

732 名前:デフォルトの名無しさん [2008/07/31(木) 06:06:04 ]
for文について質問です。

int i;
for(i=-3;i<3;i++);

といった始めにiを-3としておいて-3≦i≦3の計算をさせることはできますか?

733 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 07:42:47 ]
kwsk

734 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 07:43:11 ]
>>731
POI

>>732
聞く前に試せ

735 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:26:36 ]
>>732
それだと-3≦i<3の範囲になっちゃうけど

736 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 10:05:49 ]
springなどのDIってのは、結局のところJDKのProxyで割り込みかけてるってのが正体ですか?

737 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:17:39 ]
public void paint(Graphics g){
 g.setColor(Color.green);
 g.fillArc(30,30,150,100,90,250);
}

アプレットに表示した後、数秒待機してこの図形を消したいのですが、
図形を消す命令というのはありますか?

738 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:18:59 ]
clear

739 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:27:22 ]
>>738
よろしかったら記述方法のヒントを頂けないでしょうか?
g.clearではだめだったので… orz

740 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:42:40 ]
private bool display = true;

void 数秒後に発動するタイマーのハンドラー() {
  display = false;
  画面の再描画指示 repaint() でいいんだっけ?
}

public void paint(Graphics g){ 
  if (display) {
   g.setColor(Color.green); 
   g.fillArc(30,30,150,100,90,250); 
  }





741 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 15:20:50 ]
解決しました、ありがとうございました。

742 名前:デフォルトの名無しさん [2008/07/31(木) 19:59:56 ]
JFrameのウィンドウを何らかの処理をした後、自動でHIDE_ON_CLOSEの状態に
したいのですがどうすればいいんでしょうか?

743 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 20:03:14 ]
setVisible(false)

744 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 21:55:41 ]
jspとかサーブレットやるときはほぼ確実にコンテナにトムキャットを使いますけど、
実際に現場でもトムキャット(+アパッチ連携)が使われてるんでしょうか?
それともグラスフィッシュとかでしょうか?

745 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 22:05:44 ]
使いたいものを使えよ

746 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 22:31:29 ]
WebSphereやWebLogicのようなメーカーものも強いな

747 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 23:36:26 ]
Tomcatのみで運用だけはない、そのくらいかと

748 名前:デフォルトの名無しさん [2008/07/31(木) 23:47:46 ]
gr3というゲームがあるんですけど、
Javaのなんというプログラム(ファイル?)で開いていいのかわからず、
起動できません。
教えてください。

749 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 01:01:16 ]
JavaでPostgresにデータ追加する方法教えてー。
・データベース名
「userdb」
・テーブル名
「user」

列名  型      制約
id varchar(10) 主キー
name  varchar(50) NOT NULL
address varchar(50) なし

追加するデータ
 「add.txt」の内容
 001,太郎,taro@test.ne.jp
002,花子,hanako@test.ne.jp
003,次郎,jiro@test.ne.jp

750 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 01:12:27 ]
jdbcでぐぐれ



751 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 09:46:23 ]
共通の定数クラスやユーティリティークラスをみんなで更新しているので、cvsのマージが大変です。
皆さんはこのような時どうされます。
定数クラスを各自作成し、最後にリファクタリングで1つにまとめコミットし、その他は破棄でやってます。
自分ではなかなかだなと思っています。

752 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 10:03:45 ]
このint aをマルチスレッドで扱うとき、synchronizedブロックで囲って排他したほうがいいでしょうか。
オブジェクトの捜査ならその中でいろいろやるけど1行だけの更新なら必要ないと思うのですが。

753 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 10:24:21 ]
>>751
git でも mercurial でもなんでも使えよ。

>>752
更新する場所がソース上で1行だろうがなんだろうが、そこを通るスレッドが複数
存在するならガードする必要があるのはあたりまえだろボケ。

754 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 11:01:48 ]
>>751
共通部分は一人で作る

755 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 11:27:45 ]
>>753
要は、intのデータバイト更新しかかり中に別スレッドが読んじゃうからということですか?

756 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 11:34:16 ]
2つのスレッドが同時に更新したら・・・とか
同期しないと別スレッドの更新した値が更新されて見えないことがあるよ・・・とか

757 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 12:02:08 ]
>>756
その、同時に更新したらという懸念はわかるけど、同時に更新したらどうなるの?
データはめちゃくちゃになる、ということ?

758 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 12:13:03 ]
>>757
銀行口座の例とか教科書に載ってなかったか?
javaじゃないけど
www.atmarkit.co.jp/fdotnet/mthread/mthread03/mthread03_01.html

759 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 12:50:46 ]
5年ぐらいJavaいじってなくて、そろそろまたいじろうかと思ってるんですけど
Web系の場合、何で遊ぶのが一番仕事の役に立ちそうですか?

Tomcat+Struts2あたり?

宗教戦争っぽくなりそうですけど、目安を知りたいので教えてください

760 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 13:45:59 ]
金融系で開発する場合の開発環境はEclipseが多いですか?



761 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 14:01:52 ]
事実上EclipseなのだがWebSphere Studioを使ってるよ

762 名前:デフォルトの名無しさん [2008/08/01(金) 14:25:39 ]
JavaアプレットってSwingやAWTのことですか?
現在、Javaアプレットに代わって利用されているJava技術は何ですか?(FLASH等多言語は除く)

763 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 14:27:33 ]
java web start (jnlp)

764 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:36:19 ]
java開発ソフト(java.sun.com/javase/ja/6/download.htmlの2番目)をインストールして
コンパイルしようとしたのですがjavacが認識されず出来ません
どうすればよいですか
初歩的ですみません

765 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:43:06 ]
環境変数設定してないのかな

766 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:46:53 ]
>>764
java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html
の4.を行わない場合、javacをフルパスで起動する必要がある。

767 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 20:45:40 ]
jnlpの実装がRIのjwsしかないってのがな。
ブラウザが実装してくれればいいのに

768 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 23:45:24 ]
>>764
bin フォルダの中に javac.exe はあるぽ?

769 名前:デフォルトの名無しさん [2008/08/01(金) 23:48:48 ]
webアプリのビジネス層のインターフェースの設計について質問。
下のように、似たようなシグネチャのメソッドを持つインターフェースを
数種類だけ作ってアプリ全体で使い回そうとしてるんだけどこれって普通ですか?
コントローラからはビジネス層へのアクセスは必ずこれらを呼ぶようにしていますが、
もっと賢いやり方があれば教えてください。

public interface hogeLogic {
void execute (object o)
}

public interface hogeLogicReturningObject {
Object execute (object o)
}

public interface hogeLogicReturningList {
List execute (object o)
}

770 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 23:52:06 ]
public interface hogeLogic<T> {
T execute(Object o);
}



771 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 23:57:02 ]
>>770
これは別ですか?
public interface hogeLogic {
void execute ()
}

あとjdk1.4だと>>769以外に何かありますか

772 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:14:01 ]
いまさら1.4かよ。Java7出たらEOLだけどいいのか?

773 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:30:21 ]
java.lang.Void

774 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:40:30 ]
java.lang.ZOID

775 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:50:29 ]
新規案件で1.4とかもあるぜ、もうアホかと

776 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:53:46 ]
>>772
Sunが金払う顧客にはサポート続けるって言ってなかったっけ?

777 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 01:08:25 ]
>>769
そのパターンでは、静的型付の利点を生かせないよね。


778 名前:764 mailto:sage [2008/08/02(土) 06:23:37 ]
>>766
設定してみましたが変化がありませんでした

>>768
ありません><


779 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 09:18:28 ]
>>769
インターフェイスを使うのは必要として、
ビジネス層の中身によるがObjectまで抽象化すると逆にメリットがなくなる。
もう少し具象化した型別にインターフェイスを用意したほうがよいと思うよ。

780 名前:デフォルトの名無しさん [2008/08/02(土) 14:51:22 ]
>>777
>>779
なるほど。確かにタイプセーフじゃないんで
>>769はこれはこれでどうしたものか、と思いました。
参考までに1.5だと全部下ので
片が付くと思ったのですが、あってますか?
public interface hogeLogic<T, E> {
T execute(E commandParameterObj);
}



781 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 17:17:05 ]
java.awt.Color.whilteとjava.awt.Color.WHITEは何の違いがあってどう使い分けるのよ

782 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 17:53:46 ]
定数は大文字アンスコで書くのがルール
後はわかるな?

783 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 19:59:32 ]
>>759
だれかたのむ

784 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 21:13:53 ]
>>759
Web+仕事が前提だと、未だにStruts1がぶっちぎり。
Struts2はその他大勢とどんぐりの背比べ状態。
それでもあえてStruts1以外を選ぶなら、Wicketあたりをお勧めしておく。

785 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 22:40:36 ]
Swingの経験はあるけどWebは初めてって人には、却ってWicketの方が分かりやすいかも。

786 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:17:34 ]
>>782

いや、わからん・・・・
定数と同名のpublic変数フィールドがなぜ定義されてて、
どうやって使い分けるのか
検討もつきません。まじで。

787 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:33:47 ]
>>786
つ 導入されたバージョン: 1.4

788 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 01:07:46 ]
APIドキュメントの読み方や利用方法がいまいち分からないのですが
丁寧に解説している本ってありますか?
いま持っている本はドキュメントの使い方の説明はほとんどされてません。

789 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 01:13:28 ]
>>786
1.4以前に定義された小文字の変数名だと命名規約に反する。
それで大文字を導入したが小文字の方を消すと以前作ったコードがコンパイルできなくなる。

>>788
辞典みたいなもん。

790 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 01:16:20 ]
とくにAWTやSwingのドキュが意味不明です



791 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 01:19:22 ]
GUIプログラミングの基礎を勉強すればいい

792 名前:デフォルトの名無しさん [2008/08/03(日) 01:24:03 ]
誰か>>780の件、たのむ

>ビジネス層の中身によるがObjectまで抽象化すると逆にメリットがなくなる。
メリットって?

793 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 03:39:15 ]
>>792
よくわからんがコントローラー層から実行するメソッドごとに、
インタフェース作ることにならんかい?

極端な例だけど、
あるひとつのドメインに対して、
CRUDごとにインタフェース作るより、
まとめてインタフェース定義するほうが自然だよ。


794 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 03:44:33 ]
>>792
ビジネス層でObject受け取ってうれしいか?
結局ダウンキャストしなきゃいけないじゃん。

795 名前:デフォルトの名無しさん [2008/08/03(日) 15:52:03 ]
JTableのsetAutoCreateRowSorterにtrueを指定した場合、
テーブルのカラムを押したときにソートができるようになります。
ところが、このソートの仕方がおかしいのです。
たとえば、次のような値は

8 1
14 -> 8
1 14

となるように思えますが、実際には

8 1
14 -> 14
1 8

のようになってしまいます。
DefaultTableModel.addRowにはIntegerオブジェクトを渡しているのに、
数学上での大小を区別してくれません。
どうすれば、よいでしょうか。

796 名前:デフォルトの名無しさん [2008/08/03(日) 16:07:40 ]
795です。
スペースがうまく入っていないので補足します。
言いたいことは、1,8,14という並び方になってほしいのに、
1,14,8という並び方になってしまうということです。

797 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:20:44 ]
文字列として比較しているからだろ

798 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:24:27 ]
>>3
DOSの本嫁

799 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:27:48 ]
>>796
ttp://guijava.180r.com/pJTable%A4%CE%BE%AE%B5%BB%BD%F4%A1%B9.html

800 名前:デフォルトの名無しさん [2008/08/03(日) 16:31:34 ]
バイト配列→文字列の変換をするメソッドを書きたいです。
ぐぐってみたところ、以下2つのメソッドが引っかかったのですが
どちらを使うべきでしょうか?
asHex2()のif文は必要なのでしょうか。

public static String asHex(byte b[]) {
 StringBuffer sb = new StringBuffer();
 for (int i = 0; i < b.length; i++) {
  sb.append(Integer.toHexString((int) b[i] & 0xff));
 }
 return sb.toString();
}

public static String asHex2(byte b[]) {
 StringBuffer sb = new StringBuffer(b.length * 2);
 for (int index = 0; index < b.length; index++) {
  int bt = b[index] & 0xff;
  if (bt < 0x10) {
   sb.append("0");
  }
  sb.append(Integer.toHexString(bt));
 }
 return sb.toString();
}



801 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:31:59 ]
ピンズが皆浮いてるw

802 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:32:53 ]
誤爆った

803 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:48:44 ]
>>799
すごすぎる...
正にどんぴしゃのコードです。
ありがとうございます。

ちなみに、
「シリアライズ可能クラス は long 型の static final serialVersionUID フィールドを宣言していません。」
という警告が出たのですが、これは何を意味しているのでしょうか。
動作の方は、至って正常です。


804 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 17:46:03 ]
ググレ、カス

805 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:47:13 ]
質問スレで回答がなかったので、こちらにも投稿させてください

mvel 勉強してるんですが、macro が分かりません。
mvel.codehaus.org/Macros

mvel の macro とは何するものなんでしょうか?
どういったことを意図して作られた機能なのでしょう?
サンプルを実行しても理解できませんでした。
ただの文字列置換ではないですよね…

806 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 20:35:42 ]
>>769
>>777,779 に賛成。
そもそも、何故そのようにまとめる必要があるのか?
そのまとめ方は、なんか共通処理があってそれを挿みたいから、それを interface で判断するって事?

自分は(おそらくその他大勢も)基本的にビジネスロジックも POJO がベストだと思っていて、
そのような共通メソッドでビジネスロジックを呼び出すスタイルは過去の物だと思っている。

例えば、Foo を渡すと Bar を返す Hoge という処理があったとする。
// interface
public interface Hoge{
  Bar getBar(Foo foo);
}
// implementation
public class HogeImpl{
  Bar getBar(Foo foo){
    // do something
    return bar;
  }
}

さて、これでダメな理由って何? interface が増えるから?
個々のビジネスロジックの interface が増えるのは全く問題ではないのだが、
それが分からないのであれば、もっと勉強しなければならない。

ついでにこれを T execute(<E>) にした時の利点って何?
それは実装と interface の分離について何かメリットがあるのか?


最後に、とりあえず Seasar でも Spring でもいいから、なんか DI を使ってごらん。
サンプルアプリとかを見て、真似してみ。 やれば↑のことが分かるようになるはず、だと思う。
java にとっての DI は、もはや必須のパラダイム。 EJB3 にも DI が取り込まれたのも必然。やってみ。

807 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:19:35 ]
HTMLを取得して、FORMタグ内のパラメータを作成して、フォーム送信するにはどうしたらいいですか?
HttpURLConnectionを使ってHTMLを取得するまではできていて、
HTML Parserを使って、FORMタグ内のタグ解析もなんとなくできそうですが、フォーム送信がさっぱり
GETならURLに?をつけてパラメータを結合したものをHttpURLConnectionから取得すればフォーム送信したことになりそうだけど、
POSTを使ってhiddenで送信されるパラメータをJava上から実現するのはどうしたらいいんだい?

808 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:24:27 ]
コマンドプロンプト上で実行するJavaプログラムを書いてます。Win XPです。
時刻を表示して、時刻が変わったら上書きして表示するということをしたいのですが、
どのようにすれば良いのでしょうか。
また、無理だったら、画面をクリアして書き直すということをしたいのですが、
クリアの仕方もわかりません…
「Java 画面のクリア コマンドプロンプト」でググっても出ませんでした。

809 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:24:40 ]
>>807
httpunit

810 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:25:09 ]
POSTだったらgetOutputStreamしてそれに書き込めばいいよ。



811 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:27:32 ]
>>808
コマンドプロンプト(System.out)の書き換えは基本的に不可能
というか、OSに依存していてWindowsじゃ無理
改行して次の文字を表示していくか、簡単なGUIをSwingで作ればおk

812 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:29:27 ]
>>807
ttp://www.atmarkit.co.jp/fjava/javatips/069java006.html

すでに手書きしているので今更だが、HttpUnitを使うともっと楽にできる。

813 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:32:48 ]
>>811
ありがとうございます。

無理なのですか…残念です。

【時刻】2008/08/03/21:31:10
【時刻】2008/08/03/21:31:11
【時刻】2008/08/03/21:31:12
【時刻】2008/08/03/21:31:13
【時刻】2008/08/03/21:31:14


となるのは見苦しいですが、しょうがないのですね…

814 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:34:46 ]
>>809,810,812
おまいらThx!即レスThx!

815 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:18:56 ]
>>813
しょうがないっていうか、コンソールってどういう目的であるか考えろよ。
見苦しいんじゃなくて、そう流れるのが普通

816 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:33:11 ]
HttpUnitすげーっと思って使ってみたらJavaScriptで落ちまくるw
これはやり方が悪いのかねぇ。
どうもページ内でリンクされてる外部のJavaScriptを読みにいってないっぽいんだよなぁ

817 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 22:42:47 ]
>>813
こんなことは出来るんじゃないか?
System.out.print("HOGE");
System.out.write(0x0D);
System.out.println("ORZ");


818 名前:デフォルトの名無しさん [2008/08/03(日) 23:04:56 ]
>>806
丁寧にありがとう。Springを使ってる。言ってることも理解できます。
実践J2EEシステムデザインって本読んで、それを参考にやってますが、
やりたいことは、コントローラでビジネスロジックを呼び出す回数を出来る限り
少なくして、コントローラのテストを簡単にしたい。
コントローラが扱うビジネスクラスを限定したいのです。
そのために、ビジネスロジックのinterfaceを2段がまえにして、
コントローラから呼ばれるinterfaceはexecuteである程度汎用化して、
(ObjectかMapでモデルオブジェクトだけ返してくれれば十分なので)
これしか呼ばないようにする。ビジネスロジックの入り口。
より具象化した型はexecuteを実装したクラスの中だけで
扱うようにしたいんだけど、これは変なのでしょうか?

public interface Hoge<T, E>{
T execute(E object)
}
public class HogeImpl<Void, Integer>{
private Foo foo; // DIする
private Bar bar;  // DIする

public int execute(Object o) {
foo.doXXXLogic()
bar.doYYYLogic()
return foo.getZZZ() + bar.getZZZ();
}
}
public interface Foo{
int doXXXLogic();
}
public interface Bar{
Biz doXXXLogic();
}

819 名前:818 mailto:sage [2008/08/03(日) 23:09:18 ]
すみません、訂正。
public interface Hoge{
int execute()
}

public class HogeImpl{
private Foo foo; // DIする
private Bar bar;  // DIする

public int execute() {
return foo.doXXXLogic() + bar.doYYYLogic();
}

}
public interface Foo{
int doXXXLogic();
}

public interface Bar{
int doXXXLogic();
}

820 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:32:01 ]
>>818
だから、テストするクラスが少なくなってもテストするパターンが複雑になるんじゃ本末転倒。
それよりは静的言語のメリットを生かして、ビジネスロジックごとにインターフェイスきる方がいいんじゃね?ってのが流れだと(ry

>これは変なのでしょうか?
あえて時代に逆行しているのは構わないけど、誰からも支持されてないよな?
それが答えだよ



821 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:39:31 ]
>>820
コントローラでぐちゃぐちゃとビジネスクラスを呼び出してる方が
テストは複雑な気がするのですが・・・。
POJOじゃないクラスでのテストが増えるってことでしょう?

822 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:55:14 ]
ビジネスロジックを意味のある塊に纏めて実行するビジネスロジックを用意すればいいじゃないか。
変な皮被せるんじゃなくて、純粋にビジネスロジックとして纏めるんだよ。
何のための DI だよ?

823 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:37:01 ]
>>817
目的のことが出来ました!
ありがとうございます。

824 名前:822 mailto:sage [2008/08/04(月) 00:39:08 ]
と思ったら、DI してるのか。
しかし >>818,819 は何だ?
Foo も Bar も静的に型が決まるんだから、汎化して呼び出す意味が分からん。
本来 Foo やら Bar やらが持つ意味どおりに getXxx やら getYyy を呼べよ。
真剣にその汎化して呼び出す理由が分からん。

例えばカートを扱うサービスがあったとして、 putXxx とか removeYyy とかやりたいと思うのだが、
それだともの凄く窮屈じゃないか?
とても分かり難いソースにならないか?

実装とインタフェースの分離ってのは、やってもらうことは決まってるけど実装には依存しないってことだよ。
何でも屋インタフェースを用意するってことではないよ。

会計データを入力すると決算書を吐くインタフェースはあっていいが、
何か頼むと何かやってくれるインタフェースなんてあっても意味ないぞ。

825 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:40:21 ]
なんか根本的に話が通じてない気がするな
そもインターフェイスを統一することに何のメリットがあるんだ?


826 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:49:42 ]
誰でも簡単に使える(笑)フレームワークでも目指しているんじゃない?

827 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:52:43 ]
おk、インターフェイス名はプログラムIDの連番
全ての定義メソッドはexecuteだ
プログラムID+Resultという型で結果を返すこと

この手の設計と似ているね・・・

828 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 01:11:15 ]
serialVersionUIDについて質問させてください。
次のようにクラスに追加したら、シリアライズに関するエラーが
なくなると思っているのですがなくなりません。
どこが問題なのでしょうか。

model = new DefaultTableModel(column, 0) {

// シリアライズに関する警告を消そうと思い追加
private static final long serialVersionUID = 1;

// オーバーライドしたいメソッド
public Class<?> getColumnClass(int columnIndex) {
return Integer.class;
}
};

便乗になるのですが、このようにクラスのインスタンスの生成時にメソッドを
オーバーライドするというのは、よくあることなのでしょうか。
普通は、サブクラスを作成してそこでメソッドをオーバーライドし、
サブクラスのインスタンスを作成するものだと思うのですが。


829 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 03:35:19 ]
>>828
ただ、エラーを消すために、
private static final long serialVersionUID = 1;
こんなことするくらいだったら、
eclipseの設定で出なくしちゃっていいよ。
設定のコンパイラの辺りでどーにかなるよ。
それが嫌ならちゃんと直列化について勉強するとよいよ。


830 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 03:38:16 ]
>>828
イベントリスナやら、Comparatorなんかではよく見るけど、
インタフェースを実装するときがほとんどだな。

つまり、よくあることではない。
ってことだ。



831 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 07:34:59 ]
>>828
@SuppressWarnings でおk。
@SuppressWarnings嫌いって多いけど、
そうなら勉強するしかない。
そして@SuppressWarningsが正解で、
デフォルトバージョンを入れてしまうことが間違いだと分かる。

>>便乗になるのですが、このようにクラスのインスタンスの生成時にメソッドを
>>オーバーライドするというのは、よくあることなのでしょうか。

よくある。
別にクラス作っても一緒だけど、
「たった一つ振る舞いを変える」かつ、
「その振る舞いはそこでしか使わない」
の場合は生成時オーバーライドが一番見やすい。

832 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 10:05:14 ]
>>825
DI登場以前にはメリットがあった。
トランザクション管理とか、ロギングとかね。

今では、過去の遺物だと思う。

833 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 10:12:56 ]
serialVersionUIDの警告はIDEが過剰に出してるものだからIDEの設定で切るのが筋。
javacやantだと出ないでしょ、たしか。


834 名前:デフォルトの名無しさん [2008/08/04(月) 12:12:00 ]
JAVAの最大化ボタンを押せなくする(使用不可能)プログラムを教えてください。
お願いします。くぐったんですけど出てきませんでしたm(__)m

835 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 13:00:25 ]
ttp://www.uploda.org/uporg1586571.txt

mojiフオルダ内にある[moji000〜moji004]の5枚の画像について、読み込み
とある処理をして出力するプログラムなんですが
[moji0〜moji4]を読み込むにはどのように書き換えればよいのですか?

836 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 13:05:36 ]
>>835
宿題スレで書いてもらったコードだろ・・・
>private static DecimalFormat df = new DecimalFormat("000");

private static DecimalFormat df = new DecimalFormat("0");
でどうよ?

837 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 13:13:21 ]
>834
java.awt.Frame#setResizable(boolean)

838 名前:デフォルトの名無しさん [2008/08/04(月) 13:40:13 ]
>>837
それはImportの所に置きますか?
それとも初期化の所に置くのですか?

839 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 16:54:05 ]
JTableで作成したテーブルのカラムを後から変更することは
できるでしょうか。
getColumnNameがあるのに、setColumnNameがないようなのです。
また、getColumnで取得できるTableColumnにも
名前を設定できるメソッドがありません。


840 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 17:17:42 ]
setHeaderValue(Object)ってなかったっけ?



841 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 17:38:42 ]
それでいけました!
ありがとうございます。

842 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 09:44:13 ]
Objectクラスはnewできますが、new Object()をする場合などあるのでしょうか。
今までロックインスタンス用としてしか使用したことがありませんが、他に有意義な使用法等あれば教えてください。

843 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 09:51:55 ]
>842
ttp://www.google.co.jp/codesearch?q=lang%3Ajava+%22new+Object(%22

844 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 11:34:30 ]
while ・・・
String a;
a = ・・・
}

String a;
while ・・・
a = ・・・
}
すべきといわれますが、なぜでしょうか?

845 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 11:52:37 ]
{がなくてwhileがどうなってるかわからんけど前者だとaの定義を何回も行う事になるから。

846 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 12:01:06 ]
>>844
一般的には、前者の方がスコープ短くできるので良いとされる。

後者が良いのは a の初期化処理が共通で使いまわせる場合とかだね。

847 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 13:08:42 ]
a.xml
=======
<a>
<b>
<c>1</c>
</b>
</a>
=======

b.xml
=======
<a>
<b>
<c>2</c>
</b>
</a>
=======

を下記のようにマージするクラスやフレームワークはあるでしょうか?
<a>
<b>
<c>1</c>
</b>
<b>
<c>2</c>
</b>
</a>


848 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 14:32:09 ]
クラスをbyte[]に変換することは出来ますか?
Hoge hoge = new Hoge();
byte[] buf = (byte[])hoge;
上記のようなことがしたいのですが・・・
よろしくお願いします。

849 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 14:39:55 ]
>>533
javadoc -doclet 自作クラス … でjavadoc要素の操作をしているのですが、
javadocのデバッグはできるのでしょうか?

下記のオプションをつけてみましたが、不正なオプションでエラーになってしまいました。
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

850 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 14:47:26 ]
>>848
シリアライズでぐぐる



851 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 19:00:38 ]
EventObjectなしのListenerってありですかねぇ?
単純な通知だけのとかは面倒でしょうがない。

852 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 19:13:53 ]
>>851
単に何かが起きたことの通知だけなら
Java流のイベントソース/イベントリスナーの形にきっちり従わなくても
単純にObserver/Obserbableで作るのではだめ?

853 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 19:16:45 ]
Obserbable → Observable

854 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 19:18:15 ]
WindowsでコンパイルしたSwingアプリのラベルやらなんやらがLinux上でことごとく文字化けするんですが、
文字コードレベルではrun anywhereは実現できないんですか?

855 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 19:28:43 ]
>>854
フォントの問題じゃないか?

856 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 19:42:01 ]
>>852
ありがとうございます。
通知の種類が複数あるため、Observerではちょっと・・・
引数でその種類を示す物を送るのもありですが。

857 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:17:03 ]
DBにたくさんSQL文を投げる時に使うPreparedStatementって、
「?」の数が8個より大きいと使えないのかな?ちなみにバージョン1.5.1.

こんなエラーが出る
java.sql.SQLException: Parameter index out of bounds. 9 is not between valid values of 1 and 8

APIやら解説書にもそんな記述は無いんだが、だとしたら相当ショボイ部品だなぁ・・・

858 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:25:23 ]
>>857
その辺はJavaよりもJDBCドライバの実装に依存する。
DBMSとJDBCドライバの名前とバージョンさらして。

859 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:25:41 ]
>857
使ってるデータベースやドライバの仕様じゃなくて?

860 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:47:48 ]
DBMS MySQLの5.0.27
JDBCドライバ mysql-connector-java-5.0.4

です。
この辺の仕様ということなら、残念ですね・・・。



861 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:08:38 ]
"JDBC MySQL Parameter index out of bounds"あたりでググってみたが、
%付きでlike演算子使った時に同じエラーが出る、という話がヒットした。
ttp://forums.mysql.com/read.php?39,86819
ttp://forums.mysql.com/read.php?39,86819,86821#msg-86821
ttp://archives.neohapsis.com/archives/dev/sapdb/2003-q4/0768.html
他にもあるかもしれないが、自分でググってみて損はないぞ。

862 名前:857 mailto:sage [2008/08/05(火) 23:10:54 ]
>>861
サンクス!
グーグル大先生に色々聞いてみることにします。

863 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 11:32:03 ]
javaのStringクラスにログ的なものを入れた改修し、それを使用させるために
-Xbootclasspath/p:-Xbootclasspath/p:C:\classes の起動オプションを追加したところ
以下のメッセージが出て起動できません。
JDK1.6です。
Error occurred during initialization of VM
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:394)
at java.lang.System.initProperties(Native Method)
at java.lang.System.initializeSystemClass(System.java:1072)

864 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 12:26:38 ]
>>863
そうですか

865 名前:デフォルトの名無しさん [2008/08/06(水) 15:26:33 ]
未だにj2sdk1.4.2_14を使っているんですけど、
Java入門者にとっては最新版でなくても差し支え無いですか?


866 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 16:16:34 ]
>>865
1.5で言語仕様がかなり追加された。
それに合わせてAPIも実装だけでなくインタフェース部分も書き直されたので、
少なくともjdk5か、できればjdk6を使用したほうがいいと思う。
入門書とかもそれに対応したものを使う。

867 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:31:31 ]
>>885
同じ1.4.2系列の最新版1.4.2_18にはしとこうぜ。

868 名前:デフォルトの名無しさん [2008/08/06(水) 17:38:17 ]
すみません,どなたか助言お願いします.

DataOutputStreamクラスのwriteChars(String)を実行すると
出力先のtxtファイルでは文字列の文字1つ1つの間に
半角空白が1つずつ入ってしまいます.

どうすれば空白が入らずに出力できるでしょうか.

ちなみにANTLRという構文解析ソフト(javaで記述)の中で,
  out.writeChars(text);
  out.writeChars(Integer.toString(value));
などという感じで使っています.


869 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:46:03 ]
>>868
16byteのキャラクタを未加工で出力してるんだからそれであってる。
DataOutputStreamを使ったことが間違い。

それでもこういう手合いはwriteUTFで自己解決してしまうんだろうな(笑

870 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 18:08:22 ]
16bitだった。好きなほうで

BufferedWriter out2 = new BufferedWriter(new OutputStreamWriter(out));
PrintWriter out3 = new PrintWriter(new BufferedWriter(new OutputStreamWriter(out)));




871 名前:sage [2008/08/06(水) 18:21:35 ]
>>869-870
ありがとうございます!

文字列をそのままバイトコードとして流したのがだめだった,ってことでしょうか?
適当に言ってますが...
とにかくOutputStreamWriterを見てみます!

872 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 18:22:23 ]
sageれてなかった...
すみません.

873 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 18:24:25 ]
UTF-16が開けるエディタがあったら問題解決かもしれない。
この場合必ずビッグエンディアンになるんだろうか。それともCPUのエンディアン依存?

874 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:01:10 ]
>>873
DataInput/DataOutputはビッグエンディアン。

875 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:36:13 ]
javadocのコメント内容が変更できるAPIはあるでしょうか

876 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:44:10 ]
エディタのタブ背景をプロジェクトによって色分けするプラグインありますか?
前半で似たような名前があるとタブを見ただけでは解かりにくくて。


877 名前:デフォルトの名無しさん [2008/08/06(水) 19:58:03 ]
DefaultMutableTreeNode を使って JTree を作っているのですが、
Node ごとにドラッグ&ドロップ許可/禁止させたいのですが、可能でしょうか?

878 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:22:16 ]
できる

879 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:27:13 ]
可能

880 名前:877 [2008/08/06(水) 20:30:16 ]
orz
どの辺りを調べればよいのでしょうか?




881 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:42:36 ]
TreeModel とか TreeModelListener とか

882 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:17:03 ]
awtかSwingのDnDパッケージだろ

883 名前:デフォルトの名無しさん [2008/08/06(水) 22:38:31 ]
JAVAってeclipse以外でできますか?
地元ネット喫茶にてeclipse(JAVA)ができなくなってました。
なるべくならJDKの全varに対応してるアプリがうれしいのですが。

884 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 22:49:11 ]
意味が解らん

885 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 23:45:44 ]
jniで使用するnativeライブラリをjarの中に含めるなどして
java.library.pathにパスを追加せずにnativeライブラリを呼び出せることって出来るのでしょうか?
なるべく簡単且つすっきりと纏めれたらなぁと思いまして。。

886 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 23:50:37 ]
>>865
jdk6というかjre6の方が圧倒的に速い

887 名前:デフォルトの名無しさん [2008/08/06(水) 23:54:54 ]
JAVAの再生方法を教えてください

888 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:18:58 ]
Javaは再生しません

889 名前:デフォルトの名無しさん [2008/08/07(木) 00:54:22 ]
ファイルに出力するときに
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("tst.txt")));
という風にやっているのですが、出力が途中で切れてしまい、最後までファイルに出力してくれません。
・具体的には、ファイル1から文字列を読み込む
・文字列を加工してファイル2に出力
これをファイル1の最後まで行うのですが、pw.println(加工した文字列)では途中できれ、System.out.println(加工した文字列)
だと途中で切れずに最後まで出力します。
解決法を教えていただけないでしょうか・・・

890 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:57:01 ]
closeしてないとか



891 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 01:00:01 ]
>>889
終わったらちゃんとpw.close()してる?

892 名前:デフォルトの名無しさん [2008/08/07(木) 01:03:54 ]
レスありがとうございます。
closeはしてるのですが・・・ブツッと行の途中で切れます

893 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 01:54:58 ]
closeは実際に実行されてる?
明示的にflushを実行した場合はどう?

894 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:29:03 ]
JVMからJVMって起動出来る?


895 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:37:41 ]
>>893
よくやっちまうのがこのパターン。
FileWriter fw = new FileWriter("tst.txt");
PrintWriter pw = new PrintWriter(new BufferedWriter(fw));
fw.close(); // これが余計
pw.close();

>>894
外部プロセスは起動できるのだから

896 名前:デフォルトの名無しさん [2008/08/07(木) 03:24:00 ]
JAVAでいらない周りの背景を透かすにはどうやればいいのでしょうか?
不必要な白い部分まで写ります。

897 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 04:18:37 ]
最終的にフレームの下地が写るから透かすのはuN以降じゃないと無理じゃない?
コンポーネントの一部を透かしたいならSwingならできるけど。

898 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 08:38:55 ]
>>885
JNI は最終的には Windows で言えば LoadLibrary 関数を呼ぶことになるので、jar の中に入れたままでは
不可能。
もしやりたいなら jar からテンポラリディレクトリに解凍(もしくはリソース読み込み)して、それを読み込ませる
ようにロジックを組まないとダメだと思う。

899 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 14:39:54 ]
JFileChooserで得られるファイルが、
FILEオブジェクト固定であることに悩んでいます。
本当は、FileOutputStreamオブジェクトが欲しいのですが...。
file.getPathが返した値を、FileOutputStreamのコンストラクタに
指定するしかないでしょうか。

900 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 14:56:04 ]
>899
JFileChooser を使って FileOutputStream を得る、
新しいクラスを作ったらどうでしょう

使いづらい道具は直せるのがプログラミングですよ
治具みたいなものです。



901 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:09:23 ]
>>900
何か、思いっきり勘違いしていました。
FileOutputStreamのコンストラクタに
取得したFileオブジェクトを指定すればよいだけの話でした。
お騒がせしました。

902 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:24:31 ]
JAIってどこでダウンロードできますか?

903 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:19:19 ]
Java Web Startでのアプリケーションのインストール情報を管理するアプリケーションが標準でついてたと思うのですがどなたかご存じないでしょうか?

904 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:23:34 ]
ネットビーンズとエクリプスは使い方がぜんぜん違いますか?

905 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:23:39 ]
>>903
コントロールパネルでJavaを開いてインターネット一時ファイルの表示ボタンを押すと出るやつ?

906 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:35:01 ]
>>905
意味合いは違ったようですがビンゴです
ありがとうございました!!

907 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 18:09:14 ]
zipの中身表示するJFileChooser作ったときは意外と苦労したのにSwing Hacksに同じ事やられたorz

908 名前:デフォルトの名無しさん [2008/08/07(木) 19:27:06 ]
data.txtというファイルに読み書きするプログラムを作成しました。
このプログラムをダブルクリックだけで実行できるjarファイルにしたいのですが、
data.txtはjarファイルと別に用意しなければ実行できないのでしょうか?
jarファイルの中にdata.txtも含めて実行してみたのですが、
data.txtが見つからないと出ました。
data.txtをjarファイルのあるフォルダに置いておけば実行できました。

909 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:37:12 ]
パスの指定の問題だろ。getResource[AsStreem]()ってメソッドを使うんだ。

910 名前:デフォルトの名無しさん [2008/08/08(金) 02:21:52 ]
actionPerformed内での挙動に関する質問です。
Maskクラスに値を詰め、それを利用したいのですが、

private Mask mask;

public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();


if(cmd.equals("Read")){
if(mask == null){
mask = new Mask();
}
mask = label.getValue();
}else if(cmd.equals("Write")){
System.out.println(this.mask.getValue());
}

としたときに、下の標準出力から「NullPointerException」
が返ってきます。maskのnewはできていると思うのですが…

万策尽きました。どなたかご教授くださいm(_ _)m



911 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 02:28:56 ]
if(mask == null){
mask = new Mask();ここでnewしたのに
}
mask = label.getValue(); ここで代入してるのは何故?

912 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 02:36:58 ]
String cmd = e.getActionCommand();

この間にMask mask;とかって行は無い?

if(cmd.equals("Read")){
 if(mask == null){
  mask = new Mask();
 }
 mask = label.getValue();
}else if(cmd.equals("Write")){
 System.out.println(this.mask.getValue());
}

"Read"の前に"Write"が実行されるとmaskはnullになるよ?

そもそも例外が出ているのはどこ?maskが問題なの?


913 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:07:23 ]
デスクトップにJavaが全然普及しないのはSwingがヘッポコだからですか?

914 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:20:22 ]
ネイティブな実行形式吐けないからだろ。

915 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:41:53 ]
C#もVBもネイティブじゃ無いじゃん

916 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 04:07:30 ]
MicrosoftNativeです

917 名前:デフォルトの名無しさん [2008/08/08(金) 04:18:13 ]
>>911,912
ちょっと簡易的に書きすぎました
MaskはTimerTaskを継承していて、裏で常に動いています。
で、これをStopさせたいのですが、このmaskオブジェクトにアクセスできない状態です。

調べたところ、maskは存在していますが、
Write側でmaskのアドレスを認識できないようです。

グローバル部分でnewするとそれはそれで問題がありなので、
この状況からWrite側のmaskオブジェクトを操作させる方法が欲しいところです。

918 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 05:51:46 ]
ひどい情報の小出し。
肝心な部分を隠してどこが問題なのじゃないだろ。
maskの実装とTimerの起動箇所を隠さず出せ。

919 名前:デフォルトの名無しさん [2008/08/08(金) 07:34:34 ]
>>918 すまん。別のコードともごっちゃになってて自分でも意味不明。
最初から言い直します。
class tTask extends TimerTask{
public void run(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("ss's':mm'm':hh'h'");
MainPanel.pD.timeLabel.setText(sdf.format(date));
}
}
class actionUpdate implements ActionListener{
Timer ttimer;
tTask ttask;
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
if(cmd.equals("Start")){
if(ttask == null){
ttask = new tTask();
}
MainPanel.pB.startButton.setEnabled(false);
MainPanel.pB.stopButton.setEnabled(true);
ttimer.schedule(ttask,0,1000);
}else if(cmd.equals("Stop")){
System.out.println("Time task off");
this.ttask.cancel();
this.ttask = null;
MainPanel.pB.startButton.setEnabled(true);
MainPanel.pB.stopButton.setEnabled(false);
}

920 名前:デフォルトの名無しさん [2008/08/08(金) 07:36:50 ]
staticに作ったMainPanel上のボタンを押すとStart、Stopされる仕組み。
このとき、this.ttask.cancel()に対してNullPointerException発生。
しかしttaskのrunは動きっぱなし。
さてこれをどうやって止めればよいのか?という質問でした。



921 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 08:00:15 ]
awtならかまわないけど、Swingとjava.util.Timerを使っています?
それならタイマーイベントはスレッドになるからTimerTaskのsetTextはまずい気がする。
Swingならなるべくswing.Timerを使った方が無難。


922 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 08:06:16 ]
>>920
なんかいろいろ違いそうだが・・・。

「ボタンを押したら始まって、ボタンを押したら止まる。」
という仕掛けに、タイマが存在する理由は全くない。

タイマタスクは、実行内容をスケジュールと合わせて保持するだけで、
「実行中」「停止中」を切り替えるステートオブジェクトではない。
TimerTask#cancel()=次の実行時刻が来ても実行されないように、
キャンセルフラグを立てておくだけ。
今の実行状態を切り替えるためのものではない。

ヌルポはなにがnullなんか調べれば解決できるだろ。

923 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 08:29:24 ]
MainPanelが謎のスタティックメンバーを持ってたり、
ActionListenerがメンバ持ってたりでかなりあれだな。
actionUpdateをどこかで作り直してるとかしてないだろうか。
それならヌルポになる。


924 名前:デフォルトの名無しさん [2008/08/08(金) 08:38:44 ]
AwtかSwingかアプレットで

いくつか画像があって、マウスが特定の画像の上に乗っている状態の時にその画像を変える(その画像から出たら元に戻す。)にはどうしたらいいですか?
(変化前と変化後の画像のサイズは同じ)

925 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 08:45:17 ]
アプレットでは不可能な技術

926 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 08:47:03 ]
>>924
1から10まで聞くつもりかよ

927 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:49:26 ]
ただのマウスオーバーじゃん。mousemotion拾え

928 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:00:41 ]
>>926
?
>>927
アプレット領域全部ではなく、特定の画像の上でのみイベントを発生させたいです。
将棋のゲームで、ある駒の上にマウスを持っていくと、その駒が移動可能なマスを薄い黒色でピカピカ点灯させるといった感じです。
画像じゃなくても、ボタンのようなオブジェクトに各駒の画像が表示できるならそれでもよいのですが


929 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 11:30:37 ]
mouseMovedは座標を得られるからマウスが画像の上かどうかを判断できるし、
JButtonにImageIconを設定することもできるし、
画像を表示したJLabelにMouseListenerをつけることもできる

930 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 11:34:13 ]
>>929
ありがとうございます。



931 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 11:35:35 ]
mainメソッドとコンストラクタの違いは
main - VMが起動した時に呼び出される
コンストラクタ - クラスをインスタンス化した時に呼び出される
という理解でよろしいでしょうか?

932 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 11:39:35 ]
よろしいですよ

933 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 11:45:34 ]
>>932
ありがとうございます。

934 名前:デフォルトの名無しさん [2008/08/08(金) 12:02:00 ]
Javaにおいて、Stringは不変であるからObject.clone()は
実行する必要が無い。

これの実装に関して分からないことがあります。
Javaにおいては
1.protectedメンバは自身の属するパッケージ、
 または、所属するクラスのサブクラスからのみ
 アクセス(利用)できる。
2.全てのクラスはObjectクラスのサブクラス

と、認識しています。
ということは、Stringオブジェクトはclone()を実行できると
思ったのですが、protectedメンバなので利用できない旨の
コンパイルエラーが出力されます。
なぜでしょうか?

935 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:05:29 ]
1は
所属するクラスのサブクラス<<の中>>からアクセスできる
ってこと
Stringクラスの外からはアクセスできない

936 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:20:41 ]
javaでは継承でアクセス修飾子の範囲(特権)を広げる方向に変更ししてよい。
つまり継承したクラスではclone()をpublicにoverrideできる。
Object.cloneは特別なメソッドでoverrideする場合はCloneableインターフェイスを実装しなければならない。
CloneableはマーキングのみでcloneメソッドはあくまでもObject.cloneである。

937 名前:934 mailto:sage [2008/08/08(金) 12:21:46 ]
なるほど・・・
ありがとうございます。

938 名前:デフォルトの名無しさん [2008/08/08(金) 12:26:29 ]
"A"のchar型は'A'ですが、"\n"のchar型は何ですか?
char c = ;

939 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:40:54 ]
char c = '\n';

940 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:48:08 ]
>>939
GJ



941 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:50:46 ]
これだとエラーが出てしまうんですけど、どうしたらよいでしょうか

JButton[] bt = JButton[100]; //ここでエラー
for (int i=1; i<=100; i++)
{
bt[i] = new JButton(new ImageIcon("ohana.jpg"));
}


942 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:51:15 ]
JButton[] bt = new JButton[100];

943 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:54:14 ]
>>942
すいません。寝ぼけてましたっっ

944 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:29:05 ]
String str = "hoge";
このときStringクラスのコンストラクタは一切呼ばれないのでしょうか。以前聞いたことがあって。
リテラル?を保持するなんかのクラスがあるのでしょうか。
あるとした場合、それはmain以降から呼ばれるクラスでアクセスできるのでしょうか?

945 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:33:07 ]
>>944
呼ばれます。
"hoge"が使用される時に"hoge"に対応するデータがコンスタントプールから取り出され、
その情報を元にString型のインスタンスが生成されます。
その時にStringのコンストラクタも呼ばれます。

946 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:36:18 ]
>>945
Stringのコンストラクタにでん部ブレークを張りましたが、決して呼ばれなかったです。
new String(chararray);とかすれば呼ばれますけど。"hoge"でどのコンストラクタが呼ばれますか?
ちなみに1.6です。

947 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:40:52 ]
Stringはランタイムに組み込まれてるからそんなこと考えるのは無意味だよ

948 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:48:59 ]
気になるなら、javap してみりゃいいよ。

   5:   ldc             #2; //String hoge
   7:   putfield        #3; //Field str:Ljava/lang/String;

これだけだね〜

949 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:02:27 ]
BufferedImageに任意の大きさに拡大縮小した画像を読み込むにはどうすれば良いのでしょうか?


950 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:07:54 ]
Graphics g = bufferedimage.getGraphics();
g.drawImage(画像, 0, 0, 任意の幅, 任意の高さ, null);
g.dispose();



951 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:11:36 ]
iteratorでまわし途中で、iterator生成もとのリストを削除する方法ってありますか

952 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:15:36 ]
Iterator#remove

953 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:24:33 ]
>>950
レスありがとうございます。
えっと拡大縮小した画像を描画するのではなく、
その画像の高さや幅やRGBを取得して他の処理に用いたいので
BufferedImage bi=〜
みたいにBufferedImageのインスタンスに拡大縮小した画像を読み込みたいのです。

954 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:29:30 ]
欲しいサイズのBufferedImageを作って、その作ったBufferedImage上に描画すればいいだろ
BufferedImage bi = new BufferedImage(任意の幅, 任意の高さ, BufferedImage.TYPE_INT_RGB);
Graphics g = bi.getGraphics();
g.drawImage(画像, 0, 0, 任意の幅, 任意の高さ, null);
g.dispose();

955 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:57:09 ]
>>954
今までGraphicsってpaintとかpaintcomponentとかで
引数として既知な感じで扱っていたのでよく理解してなかったですが、
これで描画対象をメモリ上のBufferedImageに出来るんですね。
なんかBufferedImageのコンストラクタって引数にImageとかが無いから
今までどう使うものか分からなかったけど、おかげさまでやりたい処理が出来ました。
ありがとうございます!><

956 名前:デフォルトの名無しさん [2008/08/09(土) 00:41:50 ]
テキストファイルにコマンドライン引数で入力したデータを書き込みたいのですが
現時点ではテキストファイルにまでは辿りつくけど文字を記入することができない状態です
修正箇所と修正の仕方を教えてください

mport java.util.*;
import java.io.*

public class A23_StrArray extends A22_StrArray
{

public void writeFile(String path) throws Exception
{
Arraylist list = new Arraylist

File file = new File(path); //Fileのオブジェクトを生成
FileWriter fw = new FileWriter(file); //Filewriterのオブジェクトを生成

//リストの要素が無くなるまでループ
for(int i = 0; i < list.size(); i++)
{
fw.write(get(i));
}

System.out.println("ファイルに書き込みました。");
fw.close();
}
}

957 名前:デフォルトの名無しさん [2008/08/09(土) 00:42:59 ]
//実行クラス
mport java.io.*;
import java.util.*;
pubic class A23_exec
{
public static void main(String args[])
{
A23_StrArray list = new A23_StrArray();

//書き込み処理
if(inputData.equals("12"))
System.out.println("取得内容?");
inputData = input();//コマンドラインからの入力
list.writeFile(inputData);
}

private static String input()
{
//入力用オブジェクト
BufferedReader cinBuff = new BufferedReader(new InputStreamReader(System.in));
//コンソールからの文字入力
try
{
//入力用オブジェクトが文字入力を受付、それをStringクラスに代入
return cinBuff.readLine();
}
catch(IOException e)
{
System.out.println("IOExceptionエラー発生!!");
}
}
}

958 名前:デフォルトの名無しさん [2008/08/09(土) 00:46:05 ]
//書き込み処理
if(inputData.equals("12"))
System.out.println("ファイル名は?");
inputData = input();//コマンドラインからの入力
System.out.println("書き込むデータは?");
inputData = input();//コマンドラインからの入力
list.writeFile(inputData);

一部修正。正しくはこうです
家のPCにエクリプスが無くてインデントとかおかしい部分もあると思いますが
勘弁してください

959 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:04:28 ]
public void writeFile(String path) throws Exception
{
Arraylist list = new Arraylist

File file = new File(path); //Fileのオブジェクトを生成
FileWriter fw = new FileWriter(file); //Filewriterのオブジェクトを生成

//リストの要素が無くなるまでループ
for(int i = 0; i < list.size(); i++)
{
fw.write(get(i));
}

めちゃくちゃじゃないか。

960 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:10:36 ]
そのコードのどこでlistに値を詰めているのか教えて欲しい



961 名前:958 [2008/08/09(土) 01:37:34 ]
public void writeFile(String path) throws Exception
{
Arraylist list = new Arraylist

File file = new File(path); //Fileのオブジェクトを生成
FileWriter fw = new FileWriter(file); //Filewriterのオブジェクトを生成

String str;

str =

//リストの要素が無くなるまでループ
for(int i = 0; i < list.size(); i++)
{
fw.write(get(i));

list.add(str);
}


strを初期化できれば行くんでしょうか?
どうすれば初期化できるかわからない

962 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:43:14 ]
初期化の方法。
String str = null;
もしくは
String str = "";;

963 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:43:22 ]
なんという名前のテキストファイルに、どういう文字列を書き込みたいのか、まずはそれを説明してくれ

964 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:44:18 ]
//リストの要素が無くなるまでループ
答え: リストに要素はありません><

965 名前:958 [2008/08/09(土) 01:48:24 ]
>>962
ありがとうございます。それで試してみます

>>963
あらかじめCドラの直下にテキストファイル(仮にabc.txtする)を置いておいて
最初の引数を入力時にc:\ abc.txtで指定した後に
次の引数でファイルに書き込みたいんです

966 名前:958 [2008/08/09(土) 01:51:34 ]
日本語的におかしいので訂正

最初の引数を入力時にc:\ abc.txtと入力して指定した後に
次の引数で書き込む文字列を入力したい

967 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:04:04 ]
>>966
引数…?Arraylist list=new Arraylist…?
全体を通して頭狂ってるだろ。


968 名前:958 mailto:sage [2008/08/09(土) 02:13:42 ]
>>967
>Arraylist list = new Arraylist

この行はいらないのかな?

エクリプスが家にあれば自分でもおかしいってことがわかると思うんですけどメモ帳だと厳しい
出直してきます。
お手数おかけして申し訳ございませんでした
でも初期化の方法がわかっただけでも助かりました

969 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:15:04 ]
>>956
public static void main(String args[])throws Exception
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("ファイル名入力>>");
String file=br.readLine();
System.out.println(filename);
FileWriter fw=new FileWriter(file);
System.out.println("書き込むデータは?");
fw.write(br.readLine());
br.close();
fw.close();
}

なんか書いてくれたコードが不明だが、やりたいのはこういうことじゃなくて?

970 名前:969 mailto:sage [2008/08/09(土) 02:17:19 ]
>System.out.println(filename);
前に書いてたコード消し忘れ。これはナシで。



971 名前:958 mailto:sage [2008/08/09(土) 02:26:53 ]
>>969
やりたいこととしてはそんな感じなんですけど
メインクラスの実行文から呼び出してサブクラスにあるBufferedReaderやFileWriterを使いたい

972 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:54:04 ]
>>971
これだけおかしいのにeclipseが無いと分からないのは初心者未満すぎるので、
人に聞く前に初心者用の本で勉強してください。
まずは引数やサブクラスの意味、それと掲示板で聞く際の常識から。

973 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 06:17:06 ]
中堅企業以上の場合
ふつう公開されている初任給データに家賃補助は含まれてませんよね?

974 名前:デフォルトの名無しさん [2008/08/09(土) 07:15:01 ]
初任給なんて大手から零細までどこも18〜20万 院卒は+2

975 名前:デフォルトの名無しさん [2008/08/09(土) 07:46:49 ]
なんか、複雑な気持ちです。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

アキバ殺傷事件の献花台がホームレスのエサ場に!
ttp://www.tanteifile.com/diary/2008/06/30_01/index.html

976 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:54:37 ]
というかIDE関係ないだろ。

977 名前:デフォルトの名無しさん [2008/08/09(土) 15:44:45 ]
SJC-P の試験ですが、試験コード(?)を書くときは、
「310-055J」と「310-055」ではどちらが正式な書き方ですか?
(最後に「J」を付けるべきかどうかってことです。)

978 名前:977 mailto:sage [2008/08/09(土) 17:02:48 ]
自己解決しました。

suned.sun.co.jp/JPN/certification/progdetails.html

こことか

https://www1.prometric-jp.com/exam_list/exam_list.asp

ここ見るとJはいらないみたいですね。
お騒がせしました。

979 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:42:54 ]
HttpUnitでinnerHTMLはサポートされているのでしょうか?
document..getElementById('***').innerHTML = "***";
こんな感じのスクリプトを実行させても、実行できたというtrueは返って来ますが、何が変化したのかさっぱりで・・・
どなたか分かる方よろしくお願いします。

980 名前:デフォルトの名無しさん [2008/08/09(土) 19:58:56 ]
コンテンツ産業はGDPの2%、ゲームはその中で更に極僅かな一部分だからな。
産業としてみれば、音楽産業ですら豆腐産業とほぼ同じ市場規模(年間約5000億円)でしかない。




981 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:36:07 ]
どこの誤爆だ?

982 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:23:27 ]
innderHTMLはJavaScriptですね、わかります

983 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:38:52 ]
いやそれは分かってますよ。
JavaScriptはRhinoでサポートされてます。
ですがHttpUnitでの実行のサポートがされているのか気になっているんです。

984 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:46:40 ]
海外のフォーラムに全く同じ質問がある。ググれカス

985 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:56:13 ]
あんがと!解決したっちゃ!

986 名前:デフォルトの名無しさん [2008/08/10(日) 03:27:40 ]
JavaでWindowsやLinux上で動くアプリケーションソフトを製作する場合、
どのようにして配布をするのでしょうか?

987 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 05:41:41 ]
jarで固める

988 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:49:09 ]
J#

989 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 13:19:25 ]
>>988
スレ違い

990 名前:デフォルトの名無しさん [2008/08/10(日) 15:05:56 ]
Visual Web JSFで
データベースのデータをフィルタリングしながら取得するには
RowSet←FilterdTableDataprovider←ValueBindFilterCriteria
で良いんでしょうか
フィルター条件そのものをどこでコントロールすればいいのかも
分からないので
ついでに教えてください



991 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 16:05:11 ]
javaでwindowsのWaitForSingleObjectのようなメソッドはあるでしょうか。
特定のイベントが発生するまでのスレッドを待機させ、
イベント発生時にスレッドが自動的に動作するようにしたいのです。


992 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 16:13:55 ]
もうちょい低レベルの同期手段もあるが、まずは基本のモニターを使いこなそう。
synchronized(Object)
Object.wait / notify / notifyAll
Thread.interrupt


993 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 16:29:26 ]
印刷処理のように、単純にイベントが発生した時点でスレッドを起動させるので済むって話ならば、待機とかやる必要はないぞ。

994 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 16:53:40 ]
waitで待機しているスレッドが再び動作するには、
誰か別のスレッドにnotifyを呼び出してもらう必要があると思っています。
notifyを明示的に呼ぶのではなく、
ボタンが押されたら自動的にスレッドが動作するようなことを
したいのですが、できるものでしょうか。

995 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:08:14 ]
JSF(index.jsp)で、テキストボックスに、"foo"と入力して、
フォーム送信したとき、result.jspに飛んで、それ以外が入力された時、
result2.jspに飛んで、未入力でフォーム送信した時、index.jspで、"入力してください。"
という処理をするには、どのようなJSPと、faces-config.xmlと、モデルを書けばいいんでしょうか。
おしえてください。

996 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:12:03 ]
join();

997 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:30:06 ]
>>994
WaitForSingleObjectもそんな機能はないよ
ボタンが押されたらnotifyすればいいじゃん

998 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:32:14 ]
>>994
Notifyを明示的に呼ぶのとWaitForSingleObject使うのにそんなに差はないような。
何をやりたいのかよくわからないが、スレッドプールが向いてるのかも。
それならコンカレントAPIにいろいろある。

999 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:34:38 ]
どんな目的のスレッドをwaitしてんだ?

1000 名前:デフォルトの名無しさん [2008/08/10(日) 18:18:14 ]
むしろ次スレをwaitしてるよ



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<278KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef