5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2008/07/09(水) 12:32:06
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

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

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


2 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/09(水) 13:50:16
>>5
> のsはどこからもってきましたから?
ブラウザでも、テキストエディタでも、検索してみたら?

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

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

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

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

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

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

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


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

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


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

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


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

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

16 :15: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: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:2008/07/09(水) 23:47:58
インデントが解除され見がたくなり申し訳ないです。

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

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

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

21 :15:2008/07/09(水) 23:58:36
大変失礼致しました。

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

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



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

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

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

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

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



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

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

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

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

>>24
>>26

です。


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

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

と言われています。

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


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


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

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

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

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

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

参考にしているのはこの辺りです。
http://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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/10(木) 01:07:37
>>30-31
何を聞きたいのかわからない。「外部的に同期化」て意味不明。



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

Sunのドキュメントとか見てると結構出てくる表現なんですが…
http://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 :デフォルトの名無しさん:2008/07/10(木) 01:22:12
>>25
そのインスタンスが使われることなく、
> kz = KozaList_before.get(j);
で捨てられていることは理解しているか?


35 :30:2008/07/10(木) 01:25:40
>>32
ごめんなさい。
こっちのリンクのほうがよかったですね。
http://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 :デフォルトの名無しさん: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
http://unity3d.com/unity/

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

38 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/10(木) 10:41:37
0〜50までの乱数を出してそれに50足した値をranに入れればいいよね。

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

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

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

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

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


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

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


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

47 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/10(木) 11:57:30
普段はintで計算して、setするときだけshortやbyteにキャスト、でいいんじゃないか

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

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

50 :デフォルトの名無しさん: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='http://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 :デフォルトの名無しさん:2008/07/10(木) 13:08:35
>>51
まさか本人は恥ずかしくて二度と顔を出せまい

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

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

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

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


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


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

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

59 :デフォルトの名無しさん: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: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/11(金) 01:36:09
>>67
nt a = 0;
int b = 0;
b = a++;

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


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

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

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

72 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/11(金) 09:44:07
Eclipseにあるプログラムをもってきて、
インポートすると、

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

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

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

78 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/11(金) 16:58:32
教えていただいた方法でうまくいきました。
79,80さん、ありがとうございました。

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


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


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

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

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

どう言うこと?

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

99 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/12(土) 00:20:45
>>100
2つ目はコンパイルエラーなんじゃ。 if () { } 括弧をつけてきちんと書いてみなされ。

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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


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


117 :108: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 :デフォルトの名無しさん:2008/07/12(土) 04:35:18
>>118
equals
つか、Javaで真っ先に習うことの一つのような気がするが……。

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

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

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

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

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

125 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/12(土) 10:21:57
ActionServlet org.apache.struts.action.Action.servlet
org.apache.struts.action.Actionのservletだろ

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

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

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

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

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

いえ、public class 〜Action extends MappingDispatchAction {

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Hello|(←キャレット)
World

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


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

151 :デフォルトの名無しさん: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:2008/07/12(土) 23:09:48
>>151
ありがとうございます!
無事解決しました。

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

179 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 00:34:08
環境変数のtempから取る

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

183 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 03:39:02
>>185
どうして結果が500にならないと思うのか分かりません。

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

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

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

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

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

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

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

201 :197: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: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:2008/07/14(月) 08:56:41
org.apache.struts.action.Action
にservletというフィールドがありました。

有難う御座いました!!

205 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 11:24:12
>>205
String name = req.getParameter("1");
取るならこうだろ


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


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


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




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

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

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

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

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

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


216 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 14:02:35
>>217
それで?
質問文を書け。

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

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

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

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

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


224 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 14:52:11
>>215
たしかこうでは
Class-Path: C:/mysql-connector-java-5.1.6-bin.jar;.

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

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

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

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

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

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

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

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


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

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

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


236 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 16:15:50
>>236
そういう考え方も出来るんですね。勉強になります。

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

240 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/14(月) 21:18:27
>>8 >>10は一体何何だ?
福田やすおチンパン総理のことかと思った

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

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

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

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

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

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


よろしくお願いします。

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

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

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


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

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

249 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/15(火) 10:55:43
>>250
何がわからないんですか?
両方とも、その動作で正しいですよ。


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

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

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

259 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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:2008/07/15(火) 19:32:12
>>266
レスありがとうございます。
今public修飾詞に変更してコンパイルしてみましたがやっぱりダメでした。

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

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

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

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

273 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/15(火) 23:46:22
NIOでバイト単位で扱うとか

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

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

279 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/16(水) 13:52:27
>>283
キャストしたくないだけなら
byte[] array = { 0xFFFFFFFE, 0xFFFFFFFF };

286 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/16(水) 14:54:52
>>288
0~127 byte表現 0x00~0x7F → int表現 0x00000000~0x0000007F
-128~-1 byte表現 0x80~0xFF → int表現 0xFFFFFF80~0xFFFFFFFF

291 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/16(水) 22:15:05
ごめんなさい
第1引数を4以上にすると出ます

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

297 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/16(水) 22:31:07
普通にスタックオーバーフローだわ・・

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

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

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

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

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

304 :デフォルトの名無しさん: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:2008/07/17(木) 10:09:05
アンカミス
293 → >>303

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

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

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

309 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/17(木) 12:54:22
>>312
結城浩たんのJava言語で学ぶデザインパターン入門とか読んでみるとか。

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

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

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

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

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

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


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

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

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

は実装の不備だろう

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



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

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

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

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

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

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

http://localhost/ユーザーID

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

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

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

329 :325:2008/07/17(木) 21:58:14
request.getPathInfo()
で解決しましたw

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

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


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

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

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

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

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

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

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

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

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

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

344 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/18(金) 20:25:26
>>344
宿題スレに行け。

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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


360 :346: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 :デフォルトの名無しさん:2008/07/19(土) 10:16:42
メソッドの名前をまちがって全角でやったら、全角文字列でやったらできました。
メソッドの名前を日本語でできることってみんなしってますか?

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

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

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

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

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

369 :デフォルトの名無しさん: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:2008/07/19(土) 15:16:38
>>369
ありがとうございます。
まだ気になるのですが、paint の処理中(このプログラムの場合10秒間)に
呼び出された repaint は、 Queue の中に入れられるということですが、
>>360の動作を見る限りでは、 Queue に残っているrepaint 要求が
全て取り出されずに、そのままになっているように思えます。

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

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

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

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

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

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

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

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

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

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

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

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

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

軽く死ねるな

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

410 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/20(日) 21:57:24
総当たりで調べてもいいんじゃない?

412 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/20(日) 22:19:26
> (map[0][2]==1 && map[1][1]==1 && map[2][0]==1))}

その } は { の間違いでは

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

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

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

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

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

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


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

420 :410: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/21(月) 00:17:39
形態素解析エンジンsenを使いたくて
http://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 :デフォルトの名無しさん:2008/07/21(月) 00:21:20
>>422
確か、何故かsetPropertyが効かなかったはず
見つかりませんって書かれたパスに、
sen.xmlとかその周りのやつ(辞書とかも)も置いてみたらうまくいったような・・・・・・

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

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

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

428 :426: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 :デフォルトの名無しさん:2008/07/21(月) 12:21:21
public class Util{
 public static boolean isEmpty(String parameter){
  return (parameter==null || parameter.isEmpty());
 }
}


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

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

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

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

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


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

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

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

436 :デフォルトの名無しさん: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:2008/07/21(月) 17:55:47
ぐは。。。ぬるぽか。寝るわ。

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

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

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

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

442 :426:2008/07/21(月) 21:18:27
>>441
祝日って何?

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

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

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

445 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/22(火) 00:50:12
プログラミング自体が初心者なら書いてあっても理解は無理
適当な入門本でも一通り学習してからの話

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

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

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

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

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

451 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/22(火) 17:52:49
super の呼び出しはコンストラクタの先頭文にする

453 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/22(火) 19:21:48
インポート部分を書け

457 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/22(火) 20:08:10
丸投げはここじゃねーよ

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

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

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


463 :デフォルトの名無しさん: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:2008/07/22(火) 21:16:33
コンストラクタが衝突してた 南無

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

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

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

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

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

470 :455:2008/07/22(火) 22:25:01
>>469
http://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 :デフォルトの名無しさん:2008/07/22(火) 22:26:30
>>469
全部アップさせたほうがいいよ。
宿題スレで挙がってた奴だろ?
DigitalWorldClockがAbstractWorldClockのサブクラスで、
AbstractWorldClockがAbstractClockのサブクラスとか言う構成だったはず。

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

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

474 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/22(火) 22:44:49
結論、講師が屑

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

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

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



478 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/22(火) 23:53:39
abstract教えてんのかファクトリメソッド教えてんのか分からんな。

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

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

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

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


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

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

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

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

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

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

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

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

でいいじゃん

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

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

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

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

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

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


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

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

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

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

くらいじゃね

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

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

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

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

503 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/23(水) 23:29:24
>503
ありがとうございます!!
解決しました。

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

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

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

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

isNumberは自作ですね。

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

508 :501:2008/07/23(水) 23:46:52
さっきの続きですが、

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

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

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

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


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

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

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

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

515 :508:2008/07/23(水) 23:56:33
具体例をあげると、

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

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


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


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



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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

529 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/24(木) 09:00:54
これでどうよ
<X extends List<X>> void someMethod(X x) {
x.add(x);
x = x.get(0);
}

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

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

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

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

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

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

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



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

539 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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("http://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 :デフォルトの名無しさん:2008/07/24(木) 23:07:52
定期的に上がるネタだな

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

557 :デフォルトの名無しさん:2008/07/26(土) 11:13:35
mainに書こうとするとThread.sleepじゃ駄目じゃなかったか?
自身のスレッド取得してsleepとかだった気がする・・忘れた・・

558 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/26(土) 14:19:32
stacktraceでおk

560 :デフォルトの名無しさん:2008/07/26(土) 15:46:36
String を int に変換するのってどうしたらいいんですか?

561 :デフォルトの名無しさん:2008/07/26(土) 15:56:19
>>560
入門書1冊やってから出直してこい

562 :デフォルトの名無しさん:2008/07/26(土) 16:34:00
やさしいjavaにはそんな方法書いてなかったきがする。あれはダメだ

563 :デフォルトの名無しさん:2008/07/26(土) 17:04:30
やさしい(ところだけ)Javaだからな

564 :デフォルトの名無しさん:2008/07/26(土) 20:05:07
Stringからintは文字入力当たりで乗ってそうな気がするが・・

565 :デフォルトの名無しさん:2008/07/26(土) 22:39:18
教育は国家の土台なのに。
これじゃ砂上の楼閣だ。

566 :デフォルトの名無しさん:2008/07/26(土) 23:05:00
やさしいjavaもやさしいC++も書いてあることかわらないからな

567 :デフォルトの名無しさん:2008/07/26(土) 23:32:40
どんな頭してんだよw

568 :デフォルトの名無しさん:2008/07/27(日) 00:16:27
プログラム言語Javaを読んでて、finalがスレッドで特別な意味を持つ、って感じの説明の意味が分からん。

あるスレッドでStringをクラスのstaticフィールドに書き込んで、その後に別のスレッドからそのフィールドを
見ても、書き込んだ値が見えることが保証されない。でも、finalにすれば保証される。
不変オブジェクトだから同期が必要ない、と言うのはプログラマの誤解だ。

みたいなことが書いてあったが、値を変えない見るだけの変数なら、同期なんて必要ないし、
普通、他の言語でも同期なんてしないよな?ちがうのか?

569 :デフォルトの名無しさん:2008/07/27(日) 00:21:01
>>568
値を変えないで見るだけ、というのは初期値の0から変えない場合に限る
他のスレッドからは、変更する前の値である初期値の0が見える場合がありうる

http://www.ibm.com/developerworks/jp/java/library/j-jtp02244/
http://www.ibm.com/developerworks/jp/java/library/j-jtp03304/

570 :デフォルトの名無しさん:2008/07/27(日) 00:49:43
>>568
そう簡単な話じゃないってこったw

571 :kptdEsCUpYdeJPfdZFS:2008/07/27(日) 00:52:28
hQS1UB <a href="http://ejrfsnyjpyid.com/">ejrfsnyjpyid</a>, [url=http://fyhfhnswsdjf.com/]fyhfhnswsdjf[/url], [link=http://mevudxopwjek.com/]mevudxopwjek[/link], http://jwqpsqacgcmw.com/

572 :デフォルトの名無しさん:2008/07/27(日) 01:19:57
あるスレッドで書き込んだものが別のスレッドで見えるのが保証されるのは
何らかの方法で同期化された場合だけ


573 :デフォルトの名無しさん:2008/07/27(日) 02:10:13
Javaでファイルの移動を実行させる場合には、みなさんは、どのメソッドを使ってますか?
(コピーではなく移動)


574 :デフォルトの名無しさん:2008/07/27(日) 02:12:13
File#renameTo()

575 :デフォルトの名無しさん:2008/07/27(日) 02:12:53
>560

http://www.nextindex.net/java/class/Integer.html
StringをvalueOf()でInteger型にして、
Integer型からparseInt()でint型にする


576 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/27(日) 02:28:24
>>575
Integer#parseInt(String) で String から int に出来るだろw
あと、Integer から int は parseInt() ではなく intValue()

579 :デフォルトの名無しさん:2008/07/27(日) 07:01:20
>>558
MessageID は設定しなくていいのか?
他のところ(yahoo とか infoseek とか)には送れている?
Outbound Port 25 Blocking な ISP かどうかは確認した?
Hotmail 側でなんらかの受信遮断処置(Sender ID/SPFとか)をしていないか確認した?

580 :デフォルトの名無しさん:2008/07/27(日) 08:52:03
>>573
カットアンドペーストをやりたいってこと?
バイトストリームで新しいファイルに全て書き写して
元のファイルをFile#delite()で消すのは?

581 :デフォルトの名無しさん:2008/07/27(日) 10:32:35
>>577
それだとaの中身をbに移動じゃなくて、aをbにリネームだな。

582 :デフォルトの名無しさん:2008/07/27(日) 11:48:34
流れぶったぎってすいません。

とりあえずJAVAの絵本を読んたので、これからJAVAを始めたいのですが
初心者から中級者あたりまで、大人の階段を一気にかけのぼれるような
本を教えてくださいませんか。
だいたい三冊〜四冊くらい買う予算は用意してます。
初級者→できる初級者→職場にいても舌打ちされない程度の雑用兼初心者→飯に誘ってもらえる程度の中級者
という段階を踏みたいです。

単純に、みなさんが昔参考にした本を、赤ちゃんレベルから順番に教えていただければいいかな、と。

583 :デフォルトの名無しさん:2008/07/27(日) 11:53:56
「本で勉強しました」っていうのは軒並み使えないので
とりあえず何か作れ。

584 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/27(日) 11:59:20
おまいら、今日は日曜なのに仕事してんの?

586 :デフォルトの名無しさん:2008/07/27(日) 12:00:19
>>583

ありがとうございます。
本だけ読んでも、童貞のエロ孔明にすぎないですもんね。

でも、今の僕は「ハーイー」しか言えないイクラちゃん状態なんです。
せめて人間の言葉がしゃべれるレベルになるには、何か本を読まないとダメかなと。

587 :デフォルトの名無しさん:2008/07/27(日) 12:07:03
>>582
「三冊〜四冊」読んだだけで「飯に誘ってもらえる程度の中級者」になれたら苦労せんわw
本を読んで理解するのも新しいことをするには必要だが、>>583 が言うように自分で作ってみたり、
誰かが作ったものを読んで、どうしてそうなってるのかとかどうしたらより良くなるのかとか考えろ。
そういうことで「階段を登れる」もんだと思うぞ。

588 :デフォルトの名無しさん:2008/07/27(日) 12:07:09
>>582
入門書が終わって一通り言語仕様を理解しても、困ったことにそれだけじゃ足りない
オブジェクト指向や周辺技術についての理解が必要
本はもちろん有用だが、コードを読み書きしないとダメ

一冊だけ。「Effective Java」どちらかというと中級者向けになるんだろうか
しばらくすると第二版が出るらしい
入門書はよく分からん。ただ「独習Java」は勧めない

589 :デフォルトの名無しさん:2008/07/27(日) 12:15:17
>>585
ここは仕事場だったのかw 完全に遊びに来てるぞww

590 :デフォルトの名無しさん:2008/07/27(日) 12:16:30
>>587
そうですね。考えが甘かったス。

>>588
ありがとうございます。
その本を買って、わけのわからなさに打ちのめされてみたいと思います。

やっぱりコードの読み書きが大事なんですね。
サンプルの多そうな本を買ってみます。

591 :デフォルトの名無しさん:2008/07/27(日) 12:25:32
>>588
俺は独習Javaやったんだけど、わかりやすくて入門書としては良いと思うんだが。

なぜお勧めできないの?


592 :デフォルトの名無しさん:2008/07/27(日) 12:29:55
>>589
休日出勤の息抜きにカキコしてるの?

593 :デフォルトの名無しさん:2008/07/27(日) 12:35:22
>>582

2冊目としては
・Sun認定資格 SJC-Pの教科書
 ついでに資格もとれるかも
・JavaプログラマのためのUML
 UMLやOOPに関する知識がざっくり得られる。
・Effective Java
 Java言語独特の作法、やってはいけない事を教えてくれる。

「独習Java」は俺もお勧めできない。


594 :デフォルトの名無しさん:2008/07/27(日) 12:40:02
>>593
ちなみにお勧めできない理由を教えていただけると嬉しいです

595 :デフォルトの名無しさん:2008/07/27(日) 12:41:57
>>591
いきなりオブジェクト指向とは云々と書かれてて頭を抱えた記憶があるのと、
使われているクラスが全体的に古い感じがする(VectorとかStringBufferとか)
JDK5.0以降の構文拡張に関連する記述が少ない

・・・・と書いてて気づいたが、もう第4版が出てたのか。そっちは確認してない

596 :デフォルトの名無しさん:2008/07/27(日) 13:08:31
>>595
なるほど。ありがとう。

597 :デフォルトの名無しさん:2008/07/27(日) 13:11:59
>>595
StringBufferではいけないの?

598 :デフォルトの名無しさん:2008/07/27(日) 13:15:48
独習Javaは今となっては古いんだわ、1.4もしくはもっとふるいのがベースだから。
少し遠回りしてもOKならば、俺は勧めるよ。
あれをやり込めばかなりの量のコードを書くことになるからね。

その後、1.5に対応するために、開発者ノートシリーズ「Java1.5 Tiger」ってのをお勧め

599 :デフォルトの名無しさん:2008/07/27(日) 13:23:04
>>597
今ならStringBuilderがある。違いは同期化の有無

600 :デフォルトの名無しさん:2008/07/27(日) 13:27:36
>>599
StringBuilderが同期がないんでしょ?

601 :デフォルトの名無しさん:2008/07/27(日) 13:27:52
>>593
ありがとうございます。
早速アマゾンで検索したのですが

■Sun認定資格 SJC-Pの教科書

これはありませんでした。正式名称でしょうか。
また、こういう初心者から入りやすい教科書系の本は、自分に必要だと思いましたので
この本以外の教科書系で良いものがありましたら、よろしくお願いします。

■JavaプログラマのためのUML

似たような名前の本が二冊ありました。ソフトバンクから出ているほうでいいのでしょうか?
カットシステム社から出ている本も評価が高いようです。

すいません。

602 :デフォルトの名無しさん:2008/07/27(日) 13:28:42
>>597
別に問題はない。ただ速度を求めるなら StringBuilder ってだけ。
最近は CPU も早いんだし、StringBuffer でもいいけどね。

603 :デフォルトの名無しさん:2008/07/27(日) 13:32:27
>>598
「Java 5.0 Tiger」だな

604 :デフォルトの名無しさん:2008/07/27(日) 13:38:47
>>601

SUN教科書Javaプログラマ(SJC-P) (SUN教科書)
http://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
http://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 :デフォルトの名無しさん:2008/07/27(日) 13:41:34
今まで質問してる人と別人ですけど
俺も本で勉強してて「10日で覚えるJAVA入門」と
「トレーニグドリルJAVA」と「JAVA入門の入門」を買って
基礎の基礎から勉強したいから読んでるんですけど
挙げられた本買ってこようと思います

606 :デフォルトの名無しさん:2008/07/27(日) 15:12:43
独習javaは演習問題の解答がついてないからうんこ

607 :デフォルトの名無しさん:2008/07/27(日) 15:40:33
>>604
SUN教科書Javaプログラマ(SJC-P) (SUN教科書)を購入することにしました。
評価が低くしているは「初心者向けである」という点らしいので、
逆に初心者の僕には持って来いですね。ありがとうございます。

UMLの本は、もう一冊のほうを買うことにしました。

608 :デフォルトの名無しさん:2008/07/27(日) 16:51:17
大人の階段上る君はまだシンデレラさ

609 :デフォルトの名無しさん:2008/07/27(日) 17:02:40
Javaをやってる時点でお子様

610 :デフォルトの名無しさん:2008/07/27(日) 17:08:32
Javaを馬鹿にするやつはJava言語規定を読んだことがないんだろうな

611 :デフォルトの名無しさん:2008/07/27(日) 17:55:14
>>584
なるほど。
ということはjavaではディレクトリの移動は出来ない?

612 :デフォルトの名無しさん:2008/07/27(日) 17:58:36
http://item.rakuten.co.jp/book/4014609/
これ使ってるよ

613 :デフォルトの名無しさん:2008/07/27(日) 18:10:50
>>611
ツッコんでいいやら呆れていいやら。
ディレクトリの移動と言っている動作が
「ディレクトリの中身を全て別のディレクトリに移す」
ことで、出来ないと言ってるのが
「File(を示す何か)クラスのrenameTo()のように一発で出来るものが無い」
という意味なら、Javaの標準APIでは無いかもしれない。
が、「javaで」出来ないのかといえば、数行〜数十行のメソッドを書けば出来るだろうし、
標準ではない Jakarta 等にはあるかもしれない。

614 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/27(日) 19:00:25
>>615
ディレクトリ自体のリネームはこんなじゃね?
new File("hoge\\").renameTo(new File("hogehoge\\"));


617 :デフォルトの名無しさん:2008/07/27(日) 19:21:36
>>615
java フォルダ 移動でググるとこんなとこが一番最初にでたぞ
ttp://tids30.seesaa.net/article/34178646.html

618 :デフォルトの名無しさん:2008/07/27(日) 19:40:31
>>617
上書きは個別に判断しなくちゃならないな

619 :デフォルトの名無しさん:2008/07/27(日) 20:26:13
>>617
いまのバージョンのJDKじゃコンパイルできないね。
何が原因なのだろう

620 :デフォルトの名無しさん:2008/07/27(日) 20:40:43
>>619
単にclassやimport java.io.*; を省略してるだけ

621 :デフォルトの名無しさん:2008/07/27(日) 20:51:31
>>620
ありがとうございます

622 :デフォルトの名無しさん:2008/07/27(日) 20:56:59
javax.scriptで使えるJavaScriptのDOMでXPath使える?
xpath使いたくてチンコギンギンにしてるんだけど

623 :デフォルトの名無しさん:2008/07/27(日) 23:11:01
そもそもDOMつかえね

624 :デフォルトの名無しさん:2008/07/28(月) 02:54:31
踏み台に使えるよ

625 :デフォルトの名無しさん:2008/07/28(月) 15:57:50
アクセスレベルで、public、protected、privateはよく解かるのですが、
パッケージアクセスの使用すべきポイントがわかりません。
本来どのようなときに使うべきものなのでしょうか?

626 :デフォルトの名無しさん:2008/07/28(月) 15:59:18
他のパッケージに見せたくないクラスやメソッドに。

627 :デフォルトの名無しさん:2008/07/28(月) 16:00:45
>>625
すみません。言葉不足でした。
パッケージ内でアクセスが可能なのはわかっているのですが、
クラス配置・クラス設計で考えたときに、パッケージアクセスを使用した方がいいクラス間関係ってどういったものがあるかが知りたいです。

628 :デフォルトの名無しさん:2008/07/28(月) 16:14:50
同じパッケージのクラスにはアクセスさせたいけど、それ以外にはアクセスさせたくない場合。
パッケージ共通で必要だけどパッケージ外では見せてもしょうがないものに使えばいいんじゃね?
パッケージは何かの機能を実現するクラスの集合だから、パッケージ外部に公開する機能を補助するために、
パッケージ内部にだけ必要なようなものが存在することはあるんじゃない?

629 :デフォルトの名無しさん:2008/07/28(月) 16:16:49
例えば・・・・・・・、テキストエディタのコンポーネントを作るとする
たぶん TextEditor クラス本体以外にも、LineBuffer とか UndoBuffer とか色々なクラスが必要に違いないが、
これらはエディタの実装のために必要なだけであって、使うだけの人は触らないだろうし触ってもあんまり意味ないと思われる
これらテキストエディタ関連のクラスは全部 com.example.myname.texteditor だとかいったパッケージに入れ、
TextEditor や TextEditorEventListener だとかいった使う人用のクラスやインタフェイスだけ public にしといて、
LineBuffer とか UndoBuffer とかいった内部実装用のクラスはパッケージアクセスにしとけば、
外から見てすっきりするし、勝手に内部構造を触られてややこしいことになったりもしない

630 :デフォルトの名無しさん:2008/07/28(月) 16:32:57
protectedがパッケージスコープも持つのに迷ってしまう人は多いね。


631 :デフォルトの名無しさん:2008/07/28(月) 17:00:47
protected は基本的に継承用だろ。

632 :デフォルトの名無しさん:2008/07/28(月) 17:02:07
Eclipse3.2.0をインストールして、言語パックNLpack1-eclipse-SDK-3.2.1-win32も上書きして
メニュー等IDE自体は日本語になったのですが、IDEの[ヘルプ]→ダイナミックヘルプから見れるJavadocが英語のままです。
ここのダイナミックヘルプを日本語にしたい場合はどうしたらよいのでしょうか?

633 :デフォルトの名無しさん:2008/07/28(月) 17:19:04
protectedはパッケージ外から継承されたとき用で、
パッケージ内は基本的にスコープなど気にせずに
みんなパッケージスコープを使えっていうのが本来の設計思想。
メンバーのデフォルトスコープがパッケージスコープなのがその証拠。
パッケージ、モジュール、ユニット、ライブラリ呼び方はいろいろだが、
その範囲内は適当にという言語は多いからそれに倣ったのだと思う。
例えばdelphiはprivateがユニットスコープだった。
ただ、javaの利用者がアバウトな使い方を良しとしなかったのでそういった使い方は余りされていない。
みんな一生懸命privateと書いている。


634 :デフォルトの名無しさん:2008/07/28(月) 17:24:12
>>632
mergedoc

635 :デフォルトの名無しさん:2008/07/28(月) 17:28:50
>メンバーのデフォルトスコープがパッケージスコープなのがその証拠。
ってのはどーなんだろね?

単に新しい予約語考えるのが面倒だった、
既存の予約語 例えば package でパッケージプライベートにしても良かったけど
予約語に複数の意味持たせるのは汚いからあまりやりたくなかった、
とかも考えられるけど。

636 :デフォルトの名無しさん:2008/07/28(月) 17:42:53
>予約語に複数の意味

それはすでに final がやっちゃってるような・・・

637 :デフォルトの名無しさん:2008/07/28(月) 17:45:34
>>636
複数の使い方があるだけでいいなら class もあるし。

638 :デフォルトの名無しさん:2008/07/28(月) 18:07:05
>>634
あの、MergeDocの解説の通りにやってみましたが
ポップアップしか日本語になりません・・・
http://www.itmedia.co.jp/enterprise/0311/24/epn01.html

639 :デフォルトの名無しさん:2008/07/28(月) 18:08:00
デフォルトでは右のほうに出るヘルプビューのjavadocを日本語で見たいです。


640 :デフォルトの名無しさん:2008/07/28(月) 18:56:53
なぜjavaはカレントディレクトリを移動できない(させない)のでしょうか?

641 :デフォルトの名無しさん:2008/07/28(月) 19:02:55
カレントディレクトリなんて、ユーザがコマンドラインで指定したファイル名を解釈するとき以外、何に使うんだ?

642 :デフォルトの名無しさん:2008/07/28(月) 19:27:08
いまやWebのほとんどはjavaが絡んでいるって聞きますが、
具体的にWebでのJavaって何をさしているのですか?
JavaによるWeb開発をしようと本屋に立ち寄ったはいいけど、
なにやら環境が沢山あり過ぎて何に手を出すべきか迷ってしまいます。

一般にWenでのJava=JSPの本を買うのが普通なんですか?(+DBMS)

643 :デフォルトの名無しさん:2008/07/28(月) 19:32:23
>いまやWebのほとんどはjavaが絡んでいるって聞きますが
その統計にjavascriptが混じってることは間違いない。

644 :デフォルトの名無しさん:2008/07/28(月) 19:34:09
> いまやWebのほとんどはjavaが絡んでいるって聞きますが、

そんなことないw

645 :デフォルトの名無しさん:2008/07/28(月) 19:38:26
Webっていってもただのホームページとかでなく、
業務で利用するようなWebシステムです。

646 :デフォルトの名無しさん:2008/07/28(月) 19:38:33
絡んでるってのはつまり
サーバー上でJavaが動くって事じゃないか
動かしてるかどうかは無関係に

647 :デフォルトの名無しさん:2008/07/28(月) 19:39:53
すくなくとも、JavaScript本は買わないほうがいい
仕事じゃ使わない。

648 :デフォルトの名無しさん:2008/07/28(月) 19:43:15
使うよ

649 :デフォルトの名無しさん:2008/07/28(月) 19:46:42
使うこともある程度
最近は

650 :デフォルトの名無しさん:2008/07/28(月) 19:54:01
仕事によるだろjk

651 :デフォルトの名無しさん:2008/07/28(月) 19:55:50
Tomcatが主流

652 :デフォルトの名無しさん:2008/07/28(月) 20:06:57
JAVAにまつわる専門用語が氾濫しているが
Webは儲からないのでやめたほうがいい

653 :デフォルトの名無しさん:2008/07/28(月) 20:08:18
>>645
社内業務システムなんかだとASP.NETも多いぞ。

654 :デフォルトの名無しさん:2008/07/28(月) 20:13:58
社内業務システムはACCESSとEXCELだろJK

655 :デフォルトの名無しさん:2008/07/28(月) 20:41:49
Beanがお勧め

656 :デフォルトの名無しさん:2008/07/28(月) 21:10:16
学校でとりあえずjavaの基礎を習ったのですが、
そこではjavacでコンパイル、コマンドプロンプトからクラスファイルを
指定して実行したのですが、これがjavaの基本なのでしょうか?
exeファイルを作って直接実行、ということは出来ないのですか?

657 :デフォルトの名無しさん:2008/07/28(月) 21:15:29
>>656
run anywhereじゃなくなるから、exe化はJavaの思想とは違う。
不可能じゃないけどね。

658 :デフォルトの名無しさん:2008/07/28(月) 21:21:09
exeの変わりにjarと起動用のバッチファイルを生成するプログラムを作ったことがあるよ。
裏でant呼んでコンパイルして最後に*,classを消してしまうプログラムなのだけどわりと重宝した。

659 :デフォルトの名無しさん:2008/07/28(月) 21:33:27
exeにするのはjavaの思想に反しているのは分かりますが…
となると、実行には常にコマンドプロンプト等が必要ということですか?

660 :デフォルトの名無しさん:2008/07/28(月) 21:35:25
だからjarファイルにすればダブルクリックで実行できるって

661 :デフォルトの名無しさん:2008/07/28(月) 21:59:24
Windowsのアプリが作りたいなら素直にC#にいったほうがいいと思うが
Javaとたいして変わらないから

662 :デフォルトの名無しさん:2008/07/28(月) 22:18:26
C#の将来性は?
結局VC++が増加しそう


663 :デフォルトの名無しさん:2008/07/28(月) 22:19:38
学校で習いたてならそういう感想を持つだろうけど実際の開発でjavacは使わないから安心していい。

664 :デフォルトの名無しさん:2008/07/28(月) 22:21:01
>>662
それをJavaスレで聞いてどーすんだ?

665 :デフォルトの名無しさん:2008/07/28(月) 22:25:18
>>663

なにを使うの?

666 :デフォルトの名無しさん:2008/07/28(月) 22:26:10
>>662
Google Code Jamの言語別統計をみると、C++とJavaが人気のようだけど。

667 :デフォルトの名無しさん:2008/07/28(月) 22:28:04
くそ、こんなときにIDが表示されれば・・・

668 :デフォルトの名無しさん:2008/07/28(月) 22:31:06
>>665
apache ant
IDEのeclipseやnetbeansもこれを中で使ってる。

669 :デフォルトの名無しさん:2008/07/28(月) 22:33:07
>>666
世界ではなく日本国内では?

670 :658: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 :デフォルトの名無しさん:2008/07/28(月) 22:42:32
>>668
Antはコンパイラと言うわけではないのでは・・・

672 :デフォルトの名無しさん:2008/07/28(月) 22:47:05
>>670
良く分からないが、それこそ、Antでするようなこと?

673 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/28(月) 22:59:54
IronPythonやIronRubyもあるでよ

676 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/28(月) 23:31:46
参照渡しをしているわけではありません。
参照を値渡ししてるだけです。

678 :デフォルトの名無しさん:2008/07/28(月) 23:33:49
メソッドですでに参照として受け取ってるから。
mainメソッド内で持っている、あるオブジェクトへの参照Aと、メソッドで受け取った参照は、参照先は同じでも、別物。
だから、上の例ではchangeで確かにAの指す先はBとしてあるが、mainメソッド内の参照には影響がない。

679 :デフォルトの名無しさん:2008/07/28(月) 23:38:08
オブジェクトの参照も「値」で、その値をコピーして渡してる感じ で、いいんだっけ?

680 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/29(火) 00:02:26
A の指してる先は同じ
しかし A 自体は別々

682 :デフォルトの名無しさん:2008/07/29(火) 00:03:17
それはクローンだな。
オブジェクトの実体:0x1100〜0x1200

main内のA:0x2000-0x2010(実体の格納先など)
change内A:0x2300-0x2310(同上)

アドレスで書くとかえって分かりにくくなるかもね。
サイズなんか適当だから。

683 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/29(火) 00:26:35
ああなるほど!
参照ではなく参照を値渡しているって「指している矢印」がもうひとつ出来るイメージですね!
皆さんのおかげでやっと理解することが出来ました。
こんな時間にも関わらずもの凄く分かりやすい説明をして頂いて本当にありがとうございます!


685 :デフォルトの名無しさん:2008/07/29(火) 02:36:46
Javaの変数は、
プリミティブに対しては値そのものが入るけど、
オブジェクトに対してはそのオブジェクトへの参照が入る

メソッドは、それらの値渡しをする

686 :デフォルトの名無しさん:2008/07/29(火) 08:33:20
javaでは参照渡しはないのですか

687 :デフォルトの名無しさん:2008/07/29(火) 08:37:54
ないです

688 :デフォルトの名無しさん:2008/07/29(火) 09:17:58
プリミティブ以外は参照わたしじゃなかったのかい?

689 :デフォルトの名無しさん:2008/07/29(火) 09:22:21
>>688
いいえ。参照の値渡しです。

690 :デフォルトの名無しさん:2008/07/29(火) 10:05:49
メタには参照渡しだけど、メタじゃ済まない部分が顔を出す。

691 :デフォルトの名無しさん:2008/07/29(火) 19:16:07
ここで聞いて良いものか微妙かもしれませんが、こういうのってどうやって作るのでしょうか?
http://www.nicovideo.jp/watch/sm3943529

692 :デフォルトの名無しさん:2008/07/29(火) 19:30:56
すみません、バケットソートをカウントじゃなく
二次元配列で作ったらものすごく処理が遅くなったんですけどどうしてでしょうか?


693 :デフォルトの名無しさん:2008/07/29(火) 19:39:34
>>691
普通にタグ出力しまくるだけでおk

694 :デフォルトの名無しさん:2008/07/29(火) 19:46:03
>>692
それだけだと作り方が悪いとしかいえない。

695 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/29(火) 20:04:41
バケットソートの高速性は要素数に比例する量の処理で済むところだ
そのコードのように二重ループにすると要素数の二乗に比例する量の処理が必要になる
大雑把に言ってバブルソートと同じ計算量

699 :デフォルトの名無しさん:2008/07/29(火) 20:28:17
どうしようもない質問かと思いますが
コンストラクタというのはインスタンスを作成するのに使う
クラスの特殊なメソッドのようなものという認識で良いのでしょうか?

700 :デフォルトの名無しさん:2008/07/29(火) 20:39:30
うん

701 :デフォルトの名無しさん:2008/07/29(火) 20:47:06
>>700
ありがとうございます
コンストラクタの作成と書いてあったので混乱しました
「クラスのコンストラクタを使ってインスタンスを作成する」
と脳内変換しておきます

702 :デフォルトの名無しさん:2008/07/29(火) 22:16:58
>>693,>>695
レスありがとうございます!
1px取得してその色の■をhtmlの方でmarginとpaddingを0にして
ひたすら敷き詰めていけば出来るものなのかな?
ちょっとその方向で今から作ってみようと思います。


703 :デフォルトの名無しさん:2008/07/29(火) 22:18:11
>>701
コンストラクタの作成は、コンストラクタの定義を書くということだと思うが

704 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/30(水) 00:09:35
>>701
文脈が解らんけど、
複数のコンストラクタを定義できるし、そのときは「コンストラクタを作成する」という。

706 :デフォルトの名無しさん:2008/07/30(水) 00:13:33
質問させてください
現在、jdk6でgui開発を行っています
サイズを指定しないJFrameの上にサイズを指定したJPanelを載せて、JFrame#pack()を行い、大きさを整えようとしたのですが、なぜか、小さくなってしまいます。
JPanelはsetSizeで800*600とかにしているのですが、実行するとせんべいみたいな形になってしまいます
なぜなんでしょ?
また、せんべいみたいな形になったwindowを広げるとJPanelは800*600なのに、それを超えてJFrameの大きさと同じ大きさまで拡大してしまいます
これも、なぜなんでしょ?

解決方法や実装の常識的な方法があれば、教えてください

707 :デフォルトの名無しさん:2008/07/30(水) 00:15:10
>>706
setPreferredSize(Dimension)

708 :デフォルトの名無しさん:2008/07/30(水) 01:11:11
Swingのソース見れば分かるがsetPreferredSize()はかなり無視されてるぞw

709 :デフォルトの名無しさん:2008/07/30(水) 01:28:20
>>708
夏だな

710 :デフォルトの名無しさん:2008/07/30(水) 02:00:47
>>706
サイズも含めて望みのレイアウトになるようなレイアウトマネージャを使う。
そしてそのレイアウトマネージャがレイアウトに利用するコンポーネントのプロパティを正しく設定する。

711 :デフォルトの名無しさん:2008/07/30(水) 02:07:25
>>710
ベスト回答

712 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/30(水) 15:28:55
フリーの日本語で音声合成ができるライブラリってありますか?

716 :デフォルトの名無しさん:2008/07/30(水) 15:34:19
javaでボタンなどのコンポーネントを追加するときは、
getContentPaneでコンテナを取得して、
そのコンテナに対してコンポーネントを追加すると思います。
そこで、質問なのですが、コンテナを複数個作成することはできるのでしょうか。
目的は、複数のコンテナを複数の画面とみなし、
メニューなどから必要に応じて表示するコンテナを切り替えることです。

717 :デフォルトの名無しさん:2008/07/30(水) 15:52:09
>>716
CardLayout使うとか、JLayeredPane使うとかじゃだめ?

718 :デフォルトの名無しさん:2008/07/30(水) 15:55:01
>>717
ありがとうございます。早速、調べてみます。

719 :デフォルトの名無しさん:2008/07/30(水) 16:37:41
質問です。
JAVAのstaticメソッド内に宣言したローカル変数は
ヒープに領域を取られるのでしょうか?

配列などのオブジェクト宣言時は領域を取られるとあったのですが、
変数はオブジェクトではありませんよね?

720 :デフォルトの名無しさん:2008/07/30(水) 16:40:12
>>719
メンバだろうがstaticだろうがローカル変数はスタックじゃね?

721 :デフォルトの名無しさん:2008/07/30(水) 16:44:07
標準ライブラリってどうやって見るんですか?

722 :デフォルトの名無しさん:2008/07/30(水) 16:46:23
>>714
staticか否かにかかわらず、ローカル変数は「ローカル変数テーブル」
に置かれる。(で、ローカル変数テーブルは通常はスタック上に置かれる)
でも、ローカル変数が指す先はヒープ上かもしれない。
例:
static void foo() {
Foo f = new Foor();
// f はローカル変数テーブルに領域が取られるが、fが指すオブジェクトはヒープ

>>719
同じことを二度も書かなくていいよ。


723 :デフォルトの名無しさん:2008/07/30(水) 16:52:33
これで二度書けば解答がもらえると認識した。

724 :デフォルトの名無しさん:2008/07/30(水) 16:52:43
>>721
http://java.sun.com/javase/ja/6/docs/ja/api/index.html

725 :デフォルトの名無しさん:2008/07/30(水) 17:29:48
enterflagってどうゆう関数?

726 :デフォルトの名無しさん:2008/07/30(水) 21:10:33
書いた奴に聞け

727 :デフォルトの名無しさん:2008/07/30(水) 21:56:32
ディレクトリ階層を取得してくれるライブラリはありませんか?
シンボリックリンクとかあって、単純に再帰かけると無限ループ入るんで、
誰かが提供したライブラリを使ってプログラミングがしたい。
読み込んで、ノードがサイズとか名前とか更新日時とかを持った木構造にしてくれればいい。

728 :デフォルトの名無しさん:2008/07/30(水) 21:59:21
winのlnkファイルもあるしな。
まああれは解析されてるがディレクトリツリーの取得ぐらい自分で書け。

729 :デフォルトの名無しさん:2008/07/30(水) 23:11:43
>>728
すごくだるいです・・・
他人が書いたライブラリを使った方が正確です。

730 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/31(木) 07:42:47
kwsk

734 :デフォルトの名無しさん:2008/07/31(木) 07:43:11
>>731
POI

>>732
聞く前に試せ

735 :デフォルトの名無しさん:2008/07/31(木) 08:26:36
>>732
それだと-3≦i<3の範囲になっちゃうけど

736 :デフォルトの名無しさん:2008/07/31(木) 10:05:49
springなどのDIってのは、結局のところJDKのProxyで割り込みかけてるってのが正体ですか?

737 :デフォルトの名無しさん:2008/07/31(木) 14:17:39
public void paint(Graphics g){
 g.setColor(Color.green);
 g.fillArc(30,30,150,100,90,250);
}

アプレットに表示した後、数秒待機してこの図形を消したいのですが、
図形を消す命令というのはありますか?

738 :デフォルトの名無しさん:2008/07/31(木) 14:18:59
clear

739 :デフォルトの名無しさん:2008/07/31(木) 14:27:22
>>738
よろしかったら記述方法のヒントを頂けないでしょうか?
g.clearではだめだったので… orz

740 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/07/31(木) 15:20:50
解決しました、ありがとうございました。

742 :デフォルトの名無しさん:2008/07/31(木) 19:59:56
JFrameのウィンドウを何らかの処理をした後、自動でHIDE_ON_CLOSEの状態に
したいのですがどうすればいいんでしょうか?

743 :デフォルトの名無しさん:2008/07/31(木) 20:03:14
setVisible(false)

744 :デフォルトの名無しさん:2008/07/31(木) 21:55:41
jspとかサーブレットやるときはほぼ確実にコンテナにトムキャットを使いますけど、
実際に現場でもトムキャット(+アパッチ連携)が使われてるんでしょうか?
それともグラスフィッシュとかでしょうか?

745 :デフォルトの名無しさん:2008/07/31(木) 22:05:44
使いたいものを使えよ

746 :デフォルトの名無しさん:2008/07/31(木) 22:31:29
WebSphereやWebLogicのようなメーカーものも強いな

747 :デフォルトの名無しさん:2008/07/31(木) 23:36:26
Tomcatのみで運用だけはない、そのくらいかと

748 :デフォルトの名無しさん:2008/07/31(木) 23:47:46
gr3というゲームがあるんですけど、
Javaのなんというプログラム(ファイル?)で開いていいのかわからず、
起動できません。
教えてください。

749 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/01(金) 01:12:27
jdbcでぐぐれ

751 :デフォルトの名無しさん:2008/08/01(金) 09:46:23
共通の定数クラスやユーティリティークラスをみんなで更新しているので、cvsのマージが大変です。
皆さんはこのような時どうされます。
定数クラスを各自作成し、最後にリファクタリングで1つにまとめコミットし、その他は破棄でやってます。
自分ではなかなかだなと思っています。

752 :デフォルトの名無しさん:2008/08/01(金) 10:03:45
このint aをマルチスレッドで扱うとき、synchronizedブロックで囲って排他したほうがいいでしょうか。
オブジェクトの捜査ならその中でいろいろやるけど1行だけの更新なら必要ないと思うのですが。

753 :デフォルトの名無しさん:2008/08/01(金) 10:24:21
>>751
git でも mercurial でもなんでも使えよ。

>>752
更新する場所がソース上で1行だろうがなんだろうが、そこを通るスレッドが複数
存在するならガードする必要があるのはあたりまえだろボケ。

754 :デフォルトの名無しさん:2008/08/01(金) 11:01:48
>>751
共通部分は一人で作る

755 :デフォルトの名無しさん:2008/08/01(金) 11:27:45
>>753
要は、intのデータバイト更新しかかり中に別スレッドが読んじゃうからということですか?

756 :デフォルトの名無しさん:2008/08/01(金) 11:34:16
2つのスレッドが同時に更新したら・・・とか
同期しないと別スレッドの更新した値が更新されて見えないことがあるよ・・・とか

757 :デフォルトの名無しさん:2008/08/01(金) 12:02:08
>>756
その、同時に更新したらという懸念はわかるけど、同時に更新したらどうなるの?
データはめちゃくちゃになる、ということ?

758 :デフォルトの名無しさん:2008/08/01(金) 12:13:03
>>757
銀行口座の例とか教科書に載ってなかったか?
javaじゃないけど
http://www.atmarkit.co.jp/fdotnet/mthread/mthread03/mthread03_01.html

759 :デフォルトの名無しさん:2008/08/01(金) 12:50:46
5年ぐらいJavaいじってなくて、そろそろまたいじろうかと思ってるんですけど
Web系の場合、何で遊ぶのが一番仕事の役に立ちそうですか?

Tomcat+Struts2あたり?

宗教戦争っぽくなりそうですけど、目安を知りたいので教えてください

760 :デフォルトの名無しさん:2008/08/01(金) 13:45:59
金融系で開発する場合の開発環境はEclipseが多いですか?

761 :デフォルトの名無しさん:2008/08/01(金) 14:01:52
事実上EclipseなのだがWebSphere Studioを使ってるよ

762 :デフォルトの名無しさん:2008/08/01(金) 14:25:39
JavaアプレットってSwingやAWTのことですか?
現在、Javaアプレットに代わって利用されているJava技術は何ですか?(FLASH等多言語は除く)

763 :デフォルトの名無しさん:2008/08/01(金) 14:27:33
java web start (jnlp)

764 :デフォルトの名無しさん:2008/08/01(金) 19:36:19
java開発ソフト(http://java.sun.com/javase/ja/6/download.htmlの2番目)をインストールして
コンパイルしようとしたのですがjavacが認識されず出来ません
どうすればよいですか
初歩的ですみません

765 :デフォルトの名無しさん:2008/08/01(金) 19:43:06
環境変数設定してないのかな

766 :デフォルトの名無しさん:2008/08/01(金) 19:46:53
>>764
http://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html
の4.を行わない場合、javacをフルパスで起動する必要がある。

767 :デフォルトの名無しさん:2008/08/01(金) 20:45:40
jnlpの実装がRIのjwsしかないってのがな。
ブラウザが実装してくれればいいのに

768 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/01(金) 23:52:06
public interface hogeLogic<T> {
T execute(Object o);
}

771 :デフォルトの名無しさん:2008/08/01(金) 23:57:02
>>770
これは別ですか?
public interface hogeLogic {
void execute ()
}

あとjdk1.4だと>>769以外に何かありますか

772 :デフォルトの名無しさん:2008/08/02(土) 00:14:01
いまさら1.4かよ。Java7出たらEOLだけどいいのか?

773 :デフォルトの名無しさん:2008/08/02(土) 00:30:21
java.lang.Void

774 :デフォルトの名無しさん:2008/08/02(土) 00:40:30
java.lang.ZOID

775 :デフォルトの名無しさん:2008/08/02(土) 00:50:29
新規案件で1.4とかもあるぜ、もうアホかと

776 :デフォルトの名無しさん:2008/08/02(土) 00:53:46
>>772
Sunが金払う顧客にはサポート続けるって言ってなかったっけ?

777 :デフォルトの名無しさん:2008/08/02(土) 01:08:25
>>769
そのパターンでは、静的型付の利点を生かせないよね。


778 :764:2008/08/02(土) 06:23:37
>>766
設定してみましたが変化がありませんでした

>>768
ありません><


779 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/02(土) 17:17:05
java.awt.Color.whilteとjava.awt.Color.WHITEは何の違いがあってどう使い分けるのよ

782 :デフォルトの名無しさん:2008/08/02(土) 17:53:46
定数は大文字アンスコで書くのがルール
後はわかるな?

783 :デフォルトの名無しさん:2008/08/02(土) 19:59:32
>>759
だれかたのむ

784 :デフォルトの名無しさん:2008/08/02(土) 21:13:53
>>759
Web+仕事が前提だと、未だにStruts1がぶっちぎり。
Struts2はその他大勢とどんぐりの背比べ状態。
それでもあえてStruts1以外を選ぶなら、Wicketあたりをお勧めしておく。

785 :デフォルトの名無しさん:2008/08/02(土) 22:40:36
Swingの経験はあるけどWebは初めてって人には、却ってWicketの方が分かりやすいかも。

786 :デフォルトの名無しさん:2008/08/02(土) 23:17:34
>>782

いや、わからん・・・・
定数と同名のpublic変数フィールドがなぜ定義されてて、
どうやって使い分けるのか
検討もつきません。まじで。

787 :デフォルトの名無しさん:2008/08/02(土) 23:33:47
>>786
つ 導入されたバージョン: 1.4

788 :デフォルトの名無しさん:2008/08/03(日) 01:07:46
APIドキュメントの読み方や利用方法がいまいち分からないのですが
丁寧に解説している本ってありますか?
いま持っている本はドキュメントの使い方の説明はほとんどされてません。

789 :デフォルトの名無しさん:2008/08/03(日) 01:13:28
>>786
1.4以前に定義された小文字の変数名だと命名規約に反する。
それで大文字を導入したが小文字の方を消すと以前作ったコードがコンパイルできなくなる。

>>788
辞典みたいなもん。

790 :デフォルトの名無しさん:2008/08/03(日) 01:16:20
とくにAWTやSwingのドキュが意味不明です

791 :デフォルトの名無しさん:2008/08/03(日) 01:19:22
GUIプログラミングの基礎を勉強すればいい

792 :デフォルトの名無しさん:2008/08/03(日) 01:24:03
誰か>>780の件、たのむ

>ビジネス層の中身によるがObjectまで抽象化すると逆にメリットがなくなる。
メリットって?

793 :デフォルトの名無しさん:2008/08/03(日) 03:39:15
>>792
よくわからんがコントローラー層から実行するメソッドごとに、
インタフェース作ることにならんかい?

極端な例だけど、
あるひとつのドメインに対して、
CRUDごとにインタフェース作るより、
まとめてインタフェース定義するほうが自然だよ。


794 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/03(日) 16:20:44
文字列として比較しているからだろ

798 :デフォルトの名無しさん:2008/08/03(日) 16:24:27
>>3
DOSの本嫁

799 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/03(日) 16:31:59
ピンズが皆浮いてるw

802 :デフォルトの名無しさん:2008/08/03(日) 16:32:53
誤爆った

803 :デフォルトの名無しさん:2008/08/03(日) 16:48:44
>>799
すごすぎる...
正にどんぴしゃのコードです。
ありがとうございます。

ちなみに、
「シリアライズ可能クラス は long 型の static final serialVersionUID フィールドを宣言していません。」
という警告が出たのですが、これは何を意味しているのでしょうか。
動作の方は、至って正常です。


804 :デフォルトの名無しさん:2008/08/03(日) 17:46:03
ググレ、カス

805 :デフォルトの名無しさん:2008/08/03(日) 19:47:13
質問スレで回答がなかったので、こちらにも投稿させてください

mvel 勉強してるんですが、macro が分かりません。
http://mvel.codehaus.org/Macros

mvel の macro とは何するものなんでしょうか?
どういったことを意図して作られた機能なのでしょう?
サンプルを実行しても理解できませんでした。
ただの文字列置換ではないですよね…

806 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/03(日) 21:19:35
HTMLを取得して、FORMタグ内のパラメータを作成して、フォーム送信するにはどうしたらいいですか?
HttpURLConnectionを使ってHTMLを取得するまではできていて、
HTML Parserを使って、FORMタグ内のタグ解析もなんとなくできそうですが、フォーム送信がさっぱり
GETならURLに?をつけてパラメータを結合したものをHttpURLConnectionから取得すればフォーム送信したことになりそうだけど、
POSTを使ってhiddenで送信されるパラメータをJava上から実現するのはどうしたらいいんだい?

808 :デフォルトの名無しさん:2008/08/03(日) 21:24:27
コマンドプロンプト上で実行するJavaプログラムを書いてます。Win XPです。
時刻を表示して、時刻が変わったら上書きして表示するということをしたいのですが、
どのようにすれば良いのでしょうか。
また、無理だったら、画面をクリアして書き直すということをしたいのですが、
クリアの仕方もわかりません…
「Java 画面のクリア コマンドプロンプト」でググっても出ませんでした。

809 :デフォルトの名無しさん:2008/08/03(日) 21:24:40
>>807
httpunit

810 :デフォルトの名無しさん:2008/08/03(日) 21:25:09
POSTだったらgetOutputStreamしてそれに書き込めばいいよ。

811 :デフォルトの名無しさん:2008/08/03(日) 21:27:32
>>808
コマンドプロンプト(System.out)の書き換えは基本的に不可能
というか、OSに依存していてWindowsじゃ無理
改行して次の文字を表示していくか、簡単なGUIをSwingで作ればおk

812 :デフォルトの名無しさん:2008/08/03(日) 21:29:27
>>807
ttp://www.atmarkit.co.jp/fjava/javatips/069java006.html

すでに手書きしているので今更だが、HttpUnitを使うともっと楽にできる。

813 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/03(日) 21:34:46
>>809,810,812
おまいらThx!即レスThx!

815 :デフォルトの名無しさん:2008/08/03(日) 22:18:56
>>813
しょうがないっていうか、コンソールってどういう目的であるか考えろよ。
見苦しいんじゃなくて、そう流れるのが普通

816 :デフォルトの名無しさん:2008/08/03(日) 22:33:11
HttpUnitすげーっと思って使ってみたらJavaScriptで落ちまくるw
これはやり方が悪いのかねぇ。
どうもページ内でリンクされてる外部のJavaScriptを読みにいってないっぽいんだよなぁ

817 :デフォルトの名無しさん: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: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 :デフォルトの名無しさん:2008/08/03(日) 23:32:01
>>818
だから、テストするクラスが少なくなってもテストするパターンが複雑になるんじゃ本末転倒。
それよりは静的言語のメリットを生かして、ビジネスロジックごとにインターフェイスきる方がいいんじゃね?ってのが流れだと(ry

>これは変なのでしょうか?
あえて時代に逆行しているのは構わないけど、誰からも支持されてないよな?
それが答えだよ

821 :デフォルトの名無しさん:2008/08/03(日) 23:39:31
>>820
コントローラでぐちゃぐちゃとビジネスクラスを呼び出してる方が
テストは複雑な気がするのですが・・・。
POJOじゃないクラスでのテストが増えるってことでしょう?

822 :デフォルトの名無しさん:2008/08/03(日) 23:55:14
ビジネスロジックを意味のある塊に纏めて実行するビジネスロジックを用意すればいいじゃないか。
変な皮被せるんじゃなくて、純粋にビジネスロジックとして纏めるんだよ。
何のための DI だよ?

823 :デフォルトの名無しさん:2008/08/04(月) 00:37:01
>>817
目的のことが出来ました!
ありがとうございます。

824 :822:2008/08/04(月) 00:39:08
と思ったら、DI してるのか。
しかし >>818,819 は何だ?
Foo も Bar も静的に型が決まるんだから、汎化して呼び出す意味が分からん。
本来 Foo やら Bar やらが持つ意味どおりに getXxx やら getYyy を呼べよ。
真剣にその汎化して呼び出す理由が分からん。

例えばカートを扱うサービスがあったとして、 putXxx とか removeYyy とかやりたいと思うのだが、
それだともの凄く窮屈じゃないか?
とても分かり難いソースにならないか?

実装とインタフェースの分離ってのは、やってもらうことは決まってるけど実装には依存しないってことだよ。
何でも屋インタフェースを用意するってことではないよ。

会計データを入力すると決算書を吐くインタフェースはあっていいが、
何か頼むと何かやってくれるインタフェースなんてあっても意味ないぞ。

825 :デフォルトの名無しさん:2008/08/04(月) 00:40:21
なんか根本的に話が通じてない気がするな
そもインターフェイスを統一することに何のメリットがあるんだ?


826 :デフォルトの名無しさん:2008/08/04(月) 00:49:42
誰でも簡単に使える(笑)フレームワークでも目指しているんじゃない?

827 :デフォルトの名無しさん:2008/08/04(月) 00:52:43
おk、インターフェイス名はプログラムIDの連番
全ての定義メソッドはexecuteだ
プログラムID+Resultという型で結果を返すこと

この手の設計と似ているね・・・

828 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/04(月) 03:35:19
>>828
ただ、エラーを消すために、
private static final long serialVersionUID = 1;
こんなことするくらいだったら、
eclipseの設定で出なくしちゃっていいよ。
設定のコンパイラの辺りでどーにかなるよ。
それが嫌ならちゃんと直列化について勉強するとよいよ。


830 :デフォルトの名無しさん:2008/08/04(月) 03:38:16
>>828
イベントリスナやら、Comparatorなんかではよく見るけど、
インタフェースを実装するときがほとんどだな。

つまり、よくあることではない。
ってことだ。

831 :デフォルトの名無しさん:2008/08/04(月) 07:34:59
>>828
@SuppressWarnings でおk。
@SuppressWarnings嫌いって多いけど、
そうなら勉強するしかない。
そして@SuppressWarningsが正解で、
デフォルトバージョンを入れてしまうことが間違いだと分かる。

>>便乗になるのですが、このようにクラスのインスタンスの生成時にメソッドを
>>オーバーライドするというのは、よくあることなのでしょうか。

よくある。
別にクラス作っても一緒だけど、
「たった一つ振る舞いを変える」かつ、
「その振る舞いはそこでしか使わない」
の場合は生成時オーバーライドが一番見やすい。

832 :デフォルトの名無しさん:2008/08/04(月) 10:05:14
>>825
DI登場以前にはメリットがあった。
トランザクション管理とか、ロギングとかね。

今では、過去の遺物だと思う。

833 :デフォルトの名無しさん:2008/08/04(月) 10:12:56
serialVersionUIDの警告はIDEが過剰に出してるものだからIDEの設定で切るのが筋。
javacやantだと出ないでしょ、たしか。


834 :デフォルトの名無しさん:2008/08/04(月) 12:12:00
JAVAの最大化ボタンを押せなくする(使用不可能)プログラムを教えてください。
お願いします。くぐったんですけど出てきませんでしたm(__)m

835 :デフォルトの名無しさん:2008/08/04(月) 13:00:25
ttp://www.uploda.org/uporg1586571.txt

mojiフオルダ内にある[moji000〜moji004]の5枚の画像について、読み込み
とある処理をして出力するプログラムなんですが
[moji0〜moji4]を読み込むにはどのように書き換えればよいのですか?

836 :デフォルトの名無しさん:2008/08/04(月) 13:05:36
>>835
宿題スレで書いてもらったコードだろ・・・
>private static DecimalFormat df = new DecimalFormat("000");

private static DecimalFormat df = new DecimalFormat("0");
でどうよ?

837 :デフォルトの名無しさん:2008/08/04(月) 13:13:21
>834
java.awt.Frame#setResizable(boolean)

838 :デフォルトの名無しさん:2008/08/04(月) 13:40:13
>>837
それはImportの所に置きますか?
それとも初期化の所に置くのですか?

839 :デフォルトの名無しさん:2008/08/04(月) 16:54:05
JTableで作成したテーブルのカラムを後から変更することは
できるでしょうか。
getColumnNameがあるのに、setColumnNameがないようなのです。
また、getColumnで取得できるTableColumnにも
名前を設定できるメソッドがありません。


840 :デフォルトの名無しさん:2008/08/04(月) 17:17:42
setHeaderValue(Object)ってなかったっけ?

841 :デフォルトの名無しさん:2008/08/04(月) 17:38:42
それでいけました!
ありがとうございます。

842 :デフォルトの名無しさん:2008/08/05(火) 09:44:13
Objectクラスはnewできますが、new Object()をする場合などあるのでしょうか。
今までロックインスタンス用としてしか使用したことがありませんが、他に有意義な使用法等あれば教えてください。

843 :デフォルトの名無しさん:2008/08/05(火) 09:51:55
>842
ttp://www.google.co.jp/codesearch?q=lang%3Ajava+%22new+Object(%22

844 :デフォルトの名無しさん:2008/08/05(火) 11:34:30
while ・・・
String a;
a = ・・・
}

String a;
while ・・・
a = ・・・
}
すべきといわれますが、なぜでしょうか?

845 :デフォルトの名無しさん:2008/08/05(火) 11:52:37
{がなくてwhileがどうなってるかわからんけど前者だとaの定義を何回も行う事になるから。

846 :デフォルトの名無しさん:2008/08/05(火) 12:01:06
>>844
一般的には、前者の方がスコープ短くできるので良いとされる。

後者が良いのは a の初期化処理が共通で使いまわせる場合とかだね。

847 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/05(火) 14:32:09
クラスをbyte[]に変換することは出来ますか?
Hoge hoge = new Hoge();
byte[] buf = (byte[])hoge;
上記のようなことがしたいのですが・・・
よろしくお願いします。

849 :デフォルトの名無しさん:2008/08/05(火) 14:39:55
>>533
javadoc -doclet 自作クラス … でjavadoc要素の操作をしているのですが、
javadocのデバッグはできるのでしょうか?

下記のオプションをつけてみましたが、不正なオプションでエラーになってしまいました。
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

850 :デフォルトの名無しさん:2008/08/05(火) 14:47:26
>>848
シリアライズでぐぐる

851 :デフォルトの名無しさん:2008/08/05(火) 19:00:38
EventObjectなしのListenerってありですかねぇ?
単純な通知だけのとかは面倒でしょうがない。

852 :デフォルトの名無しさん:2008/08/05(火) 19:13:53
>>851
単に何かが起きたことの通知だけなら
Java流のイベントソース/イベントリスナーの形にきっちり従わなくても
単純にObserver/Obserbableで作るのではだめ?

853 :デフォルトの名無しさん:2008/08/05(火) 19:16:45
Obserbable → Observable

854 :デフォルトの名無しさん:2008/08/05(火) 19:18:15
WindowsでコンパイルしたSwingアプリのラベルやらなんやらがLinux上でことごとく文字化けするんですが、
文字コードレベルではrun anywhereは実現できないんですか?

855 :デフォルトの名無しさん:2008/08/05(火) 19:28:43
>>854
フォントの問題じゃないか?

856 :デフォルトの名無しさん:2008/08/05(火) 19:42:01
>>852
ありがとうございます。
通知の種類が複数あるため、Observerではちょっと・・・
引数でその種類を示す物を送るのもありですが。

857 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/05(火) 22:25:23
>>857
その辺はJavaよりもJDBCドライバの実装に依存する。
DBMSとJDBCドライバの名前とバージョンさらして。

859 :デフォルトの名無しさん:2008/08/05(火) 22:25:41
>857
使ってるデータベースやドライバの仕様じゃなくて?

860 :デフォルトの名無しさん:2008/08/05(火) 22:47:48
DBMS MySQLの5.0.27
JDBCドライバ mysql-connector-java-5.0.4

です。
この辺の仕様ということなら、残念ですね・・・。

861 :デフォルトの名無しさん: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:2008/08/05(火) 23:10:54
>>861
サンクス!
グーグル大先生に色々聞いてみることにします。

863 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/06(水) 12:26:38
>>863
そうですか

865 :デフォルトの名無しさん:2008/08/06(水) 15:26:33
未だにj2sdk1.4.2_14を使っているんですけど、
Java入門者にとっては最新版でなくても差し支え無いですか?


866 :デフォルトの名無しさん:2008/08/06(水) 16:16:34
>>865
1.5で言語仕様がかなり追加された。
それに合わせてAPIも実装だけでなくインタフェース部分も書き直されたので、
少なくともjdk5か、できればjdk6を使用したほうがいいと思う。
入門書とかもそれに対応したものを使う。

867 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/06(水) 17:46:03
>>868
16byteのキャラクタを未加工で出力してるんだからそれであってる。
DataOutputStreamを使ったことが間違い。

それでもこういう手合いはwriteUTFで自己解決してしまうんだろうな(笑

870 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/06(水) 18:22:23
sageれてなかった...
すみません.

873 :デフォルトの名無しさん:2008/08/06(水) 18:24:25
UTF-16が開けるエディタがあったら問題解決かもしれない。
この場合必ずビッグエンディアンになるんだろうか。それともCPUのエンディアン依存?

874 :デフォルトの名無しさん:2008/08/06(水) 19:01:10
>>873
DataInput/DataOutputはビッグエンディアン。

875 :デフォルトの名無しさん:2008/08/06(水) 19:36:13
javadocのコメント内容が変更できるAPIはあるでしょうか

876 :デフォルトの名無しさん:2008/08/06(水) 19:44:10
エディタのタブ背景をプロジェクトによって色分けするプラグインありますか?
前半で似たような名前があるとタブを見ただけでは解かりにくくて。


877 :デフォルトの名無しさん:2008/08/06(水) 19:58:03
DefaultMutableTreeNode を使って JTree を作っているのですが、
Node ごとにドラッグ&ドロップ許可/禁止させたいのですが、可能でしょうか?

878 :デフォルトの名無しさん:2008/08/06(水) 20:22:16
できる

879 :デフォルトの名無しさん:2008/08/06(水) 20:27:13
可能

880 :877:2008/08/06(水) 20:30:16
orz
どの辺りを調べればよいのでしょうか?


881 :デフォルトの名無しさん:2008/08/06(水) 20:42:36
TreeModel とか TreeModelListener とか

882 :デフォルトの名無しさん:2008/08/06(水) 21:17:03
awtかSwingのDnDパッケージだろ

883 :デフォルトの名無しさん:2008/08/06(水) 22:38:31
JAVAってeclipse以外でできますか?
地元ネット喫茶にてeclipse(JAVA)ができなくなってました。
なるべくならJDKの全varに対応してるアプリがうれしいのですが。

884 :デフォルトの名無しさん:2008/08/06(水) 22:49:11
意味が解らん

885 :デフォルトの名無しさん:2008/08/06(水) 23:45:44
jniで使用するnativeライブラリをjarの中に含めるなどして
java.library.pathにパスを追加せずにnativeライブラリを呼び出せることって出来るのでしょうか?
なるべく簡単且つすっきりと纏めれたらなぁと思いまして。。

886 :デフォルトの名無しさん:2008/08/06(水) 23:50:37
>>865
jdk6というかjre6の方が圧倒的に速い

887 :デフォルトの名無しさん:2008/08/06(水) 23:54:54
JAVAの再生方法を教えてください

888 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/07(木) 00:57:01
closeしてないとか

891 :デフォルトの名無しさん:2008/08/07(木) 01:00:01
>>889
終わったらちゃんとpw.close()してる?

892 :デフォルトの名無しさん:2008/08/07(木) 01:03:54
レスありがとうございます。
closeはしてるのですが・・・ブツッと行の途中で切れます

893 :デフォルトの名無しさん:2008/08/07(木) 01:54:58
closeは実際に実行されてる?
明示的にflushを実行した場合はどう?

894 :デフォルトの名無しさん:2008/08/07(木) 02:29:03
JVMからJVMって起動出来る?


895 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/07(木) 04:18:37
最終的にフレームの下地が写るから透かすのはuN以降じゃないと無理じゃない?
コンポーネントの一部を透かしたいならSwingならできるけど。

898 :デフォルトの名無しさん:2008/08/07(木) 08:38:55
>>885
JNI は最終的には Windows で言えば LoadLibrary 関数を呼ぶことになるので、jar の中に入れたままでは
不可能。
もしやりたいなら jar からテンポラリディレクトリに解凍(もしくはリソース読み込み)して、それを読み込ませる
ようにロジックを組まないとダメだと思う。

899 :デフォルトの名無しさん:2008/08/07(木) 14:39:54
JFileChooserで得られるファイルが、
FILEオブジェクト固定であることに悩んでいます。
本当は、FileOutputStreamオブジェクトが欲しいのですが...。
file.getPathが返した値を、FileOutputStreamのコンストラクタに
指定するしかないでしょうか。

900 :デフォルトの名無しさん:2008/08/07(木) 14:56:04
>899
JFileChooser を使って FileOutputStream を得る、
新しいクラスを作ったらどうでしょう

使いづらい道具は直せるのがプログラミングですよ
治具みたいなものです。

901 :デフォルトの名無しさん:2008/08/07(木) 15:09:23
>>900
何か、思いっきり勘違いしていました。
FileOutputStreamのコンストラクタに
取得したFileオブジェクトを指定すればよいだけの話でした。
お騒がせしました。

902 :デフォルトの名無しさん:2008/08/07(木) 15:24:31
JAIってどこでダウンロードできますか?

903 :デフォルトの名無しさん:2008/08/07(木) 17:19:19
Java Web Startでのアプリケーションのインストール情報を管理するアプリケーションが標準でついてたと思うのですがどなたかご存じないでしょうか?

904 :デフォルトの名無しさん:2008/08/07(木) 17:23:34
ネットビーンズとエクリプスは使い方がぜんぜん違いますか?

905 :デフォルトの名無しさん:2008/08/07(木) 17:23:39
>>903
コントロールパネルでJavaを開いてインターネット一時ファイルの表示ボタンを押すと出るやつ?

906 :デフォルトの名無しさん:2008/08/07(木) 17:35:01
>>905
意味合いは違ったようですがビンゴです
ありがとうございました!!

907 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/08(金) 02:28:56
if(mask == null){
mask = new Mask();ここでnewしたのに
}
mask = label.getValue(); ここで代入してるのは何故?

912 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/08(金) 03:07:23
デスクトップにJavaが全然普及しないのはSwingがヘッポコだからですか?

914 :デフォルトの名無しさん:2008/08/08(金) 03:20:22
ネイティブな実行形式吐けないからだろ。

915 :デフォルトの名無しさん:2008/08/08(金) 03:41:53
C#もVBもネイティブじゃ無いじゃん

916 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/08(金) 08:00:15
awtならかまわないけど、Swingとjava.util.Timerを使っています?
それならタイマーイベントはスレッドになるからTimerTaskのsetTextはまずい気がする。
Swingならなるべくswing.Timerを使った方が無難。


922 :デフォルトの名無しさん:2008/08/08(金) 08:06:16
>>920
なんかいろいろ違いそうだが・・・。

「ボタンを押したら始まって、ボタンを押したら止まる。」
という仕掛けに、タイマが存在する理由は全くない。

タイマタスクは、実行内容をスケジュールと合わせて保持するだけで、
「実行中」「停止中」を切り替えるステートオブジェクトではない。
TimerTask#cancel()=次の実行時刻が来ても実行されないように、
キャンセルフラグを立てておくだけ。
今の実行状態を切り替えるためのものではない。

ヌルポはなにがnullなんか調べれば解決できるだろ。

923 :デフォルトの名無しさん:2008/08/08(金) 08:29:24
MainPanelが謎のスタティックメンバーを持ってたり、
ActionListenerがメンバ持ってたりでかなりあれだな。
actionUpdateをどこかで作り直してるとかしてないだろうか。
それならヌルポになる。


924 :デフォルトの名無しさん:2008/08/08(金) 08:38:44
AwtかSwingかアプレットで

いくつか画像があって、マウスが特定の画像の上に乗っている状態の時にその画像を変える(その画像から出たら元に戻す。)にはどうしたらいいですか?
(変化前と変化後の画像のサイズは同じ)

925 :デフォルトの名無しさん:2008/08/08(金) 08:45:17
アプレットでは不可能な技術

926 :デフォルトの名無しさん:2008/08/08(金) 08:47:03
>>924
1から10まで聞くつもりかよ

927 :デフォルトの名無しさん:2008/08/08(金) 09:49:26
ただのマウスオーバーじゃん。mousemotion拾え

928 :デフォルトの名無しさん:2008/08/08(金) 10:00:41
>>926
?
>>927
アプレット領域全部ではなく、特定の画像の上でのみイベントを発生させたいです。
将棋のゲームで、ある駒の上にマウスを持っていくと、その駒が移動可能なマスを薄い黒色でピカピカ点灯させるといった感じです。
画像じゃなくても、ボタンのようなオブジェクトに各駒の画像が表示できるならそれでもよいのですが


929 :デフォルトの名無しさん:2008/08/08(金) 11:30:37
mouseMovedは座標を得られるからマウスが画像の上かどうかを判断できるし、
JButtonにImageIconを設定することもできるし、
画像を表示したJLabelにMouseListenerをつけることもできる

930 :デフォルトの名無しさん:2008/08/08(金) 11:34:13
>>929
ありがとうございます。

931 :デフォルトの名無しさん:2008/08/08(金) 11:35:35
mainメソッドとコンストラクタの違いは
main - VMが起動した時に呼び出される
コンストラクタ - クラスをインスタンス化した時に呼び出される
という理解でよろしいでしょうか?

932 :デフォルトの名無しさん:2008/08/08(金) 11:39:35
よろしいですよ

933 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/08(金) 12:05:29
1は
所属するクラスのサブクラス<<の中>>からアクセスできる
ってこと
Stringクラスの外からはアクセスできない

936 :デフォルトの名無しさん:2008/08/08(金) 12:20:41
javaでは継承でアクセス修飾子の範囲(特権)を広げる方向に変更ししてよい。
つまり継承したクラスではclone()をpublicにoverrideできる。
Object.cloneは特別なメソッドでoverrideする場合はCloneableインターフェイスを実装しなければならない。
CloneableはマーキングのみでcloneメソッドはあくまでもObject.cloneである。

937 :934:2008/08/08(金) 12:21:46
なるほど・・・
ありがとうございます。

938 :デフォルトの名無しさん:2008/08/08(金) 12:26:29
"A"のchar型は'A'ですが、"\n"のchar型は何ですか?
char c = ;

939 :デフォルトの名無しさん:2008/08/08(金) 12:40:54
char c = '\n';

940 :デフォルトの名無しさん:2008/08/08(金) 12:48:08
>>939
GJ

941 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/08(金) 12:51:15
JButton[] bt = new JButton[100];

943 :デフォルトの名無しさん:2008/08/08(金) 12:54:14
>>942
すいません。寝ぼけてましたっっ

944 :デフォルトの名無しさん:2008/08/08(金) 15:29:05
String str = "hoge";
このときStringクラスのコンストラクタは一切呼ばれないのでしょうか。以前聞いたことがあって。
リテラル?を保持するなんかのクラスがあるのでしょうか。
あるとした場合、それはmain以降から呼ばれるクラスでアクセスできるのでしょうか?

945 :デフォルトの名無しさん:2008/08/08(金) 16:33:07
>>944
呼ばれます。
"hoge"が使用される時に"hoge"に対応するデータがコンスタントプールから取り出され、
その情報を元にString型のインスタンスが生成されます。
その時にStringのコンストラクタも呼ばれます。

946 :デフォルトの名無しさん:2008/08/08(金) 16:36:18
>>945
Stringのコンストラクタにでん部ブレークを張りましたが、決して呼ばれなかったです。
new String(chararray);とかすれば呼ばれますけど。"hoge"でどのコンストラクタが呼ばれますか?
ちなみに1.6です。

947 :デフォルトの名無しさん:2008/08/08(金) 16:40:52
Stringはランタイムに組み込まれてるからそんなこと考えるのは無意味だよ

948 :デフォルトの名無しさん:2008/08/08(金) 16:48:59
気になるなら、javap してみりゃいいよ。

   5:   ldc             #2; //String hoge
   7:   putfield        #3; //Field str:Ljava/lang/String;

これだけだね〜

949 :デフォルトの名無しさん:2008/08/08(金) 18:02:27
BufferedImageに任意の大きさに拡大縮小した画像を読み込むにはどうすれば良いのでしょうか?


950 :デフォルトの名無しさん:2008/08/08(金) 18:07:54
Graphics g = bufferedimage.getGraphics();
g.drawImage(画像, 0, 0, 任意の幅, 任意の高さ, null);
g.dispose();

951 :デフォルトの名無しさん:2008/08/08(金) 18:11:36
iteratorでまわし途中で、iterator生成もとのリストを削除する方法ってありますか

952 :デフォルトの名無しさん:2008/08/08(金) 18:15:36
Iterator#remove

953 :デフォルトの名無しさん:2008/08/08(金) 18:24:33
>>950
レスありがとうございます。
えっと拡大縮小した画像を描画するのではなく、
その画像の高さや幅やRGBを取得して他の処理に用いたいので
BufferedImage bi=〜
みたいにBufferedImageのインスタンスに拡大縮小した画像を読み込みたいのです。

954 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/09(土) 01:43:14
初期化の方法。
String str = null;
もしくは
String str = "";;

963 :デフォルトの名無しさん:2008/08/09(土) 01:43:22
なんという名前のテキストファイルに、どういう文字列を書き込みたいのか、まずはそれを説明してくれ

964 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/09(土) 02:04:04
>>966
引数…?Arraylist list=new Arraylist…?
全体を通して頭狂ってるだろ。


968 :958:2008/08/09(土) 02:13:42
>>967
>Arraylist list = new Arraylist

この行はいらないのかな?

エクリプスが家にあれば自分でもおかしいってことがわかると思うんですけどメモ帳だと厳しい
出直してきます。
お手数おかけして申し訳ございませんでした
でも初期化の方法がわかっただけでも助かりました

969 :デフォルトの名無しさん: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:2008/08/09(土) 02:17:19
>System.out.println(filename);
前に書いてたコード消し忘れ。これはナシで。

971 :958:2008/08/09(土) 02:26:53
>>969
やりたいこととしてはそんな感じなんですけど
メインクラスの実行文から呼び出してサブクラスにあるBufferedReaderやFileWriterを使いたい

972 :デフォルトの名無しさん:2008/08/09(土) 02:54:04
>>971
これだけおかしいのにeclipseが無いと分からないのは初心者未満すぎるので、
人に聞く前に初心者用の本で勉強してください。
まずは引数やサブクラスの意味、それと掲示板で聞く際の常識から。

973 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/09(土) 13:54:37
というかIDE関係ないだろ。

977 :デフォルトの名無しさん:2008/08/09(土) 15:44:45
SJC-P の試験ですが、試験コード(?)を書くときは、
「310-055J」と「310-055」ではどちらが正式な書き方ですか?
(最後に「J」を付けるべきかどうかってことです。)

978 :977:2008/08/09(土) 17:02:48
自己解決しました。

http://suned.sun.co.jp/JPN/certification/progdetails.html

こことか

https://www1.prometric-jp.com/exam_list/exam_list.asp

ここ見るとJはいらないみたいですね。
お騒がせしました。

979 :デフォルトの名無しさん:2008/08/09(土) 19:42:54
HttpUnitでinnerHTMLはサポートされているのでしょうか?
document..getElementById('***').innerHTML = "***";
こんな感じのスクリプトを実行させても、実行できたというtrueは返って来ますが、何が変化したのかさっぱりで・・・
どなたか分かる方よろしくお願いします。

980 :デフォルトの名無しさん:2008/08/09(土) 19:58:56
コンテンツ産業はGDPの2%、ゲームはその中で更に極僅かな一部分だからな。
産業としてみれば、音楽産業ですら豆腐産業とほぼ同じ市場規模(年間約5000億円)でしかない。


981 :デフォルトの名無しさん:2008/08/09(土) 20:36:07
どこの誤爆だ?

982 :デフォルトの名無しさん:2008/08/09(土) 22:23:27
innderHTMLはJavaScriptですね、わかります

983 :デフォルトの名無しさん:2008/08/09(土) 22:38:52
いやそれは分かってますよ。
JavaScriptはRhinoでサポートされてます。
ですがHttpUnitでの実行のサポートがされているのか気になっているんです。

984 :デフォルトの名無しさん:2008/08/09(土) 22:46:40
海外のフォーラムに全く同じ質問がある。ググれカス

985 :デフォルトの名無しさん:2008/08/09(土) 22:56:13
あんがと!解決したっちゃ!

986 :デフォルトの名無しさん:2008/08/10(日) 03:27:40
JavaでWindowsやLinux上で動くアプリケーションソフトを製作する場合、
どのようにして配布をするのでしょうか?

987 :デフォルトの名無しさん:2008/08/10(日) 05:41:41
jarで固める

988 :デフォルトの名無しさん:2008/08/10(日) 12:49:09
J#

989 :デフォルトの名無しさん:2008/08/10(日) 13:19:25
>>988
スレ違い

990 :デフォルトの名無しさん:2008/08/10(日) 15:05:56
Visual Web JSFで
データベースのデータをフィルタリングしながら取得するには
RowSet←FilterdTableDataprovider←ValueBindFilterCriteria
で良いんでしょうか
フィルター条件そのものをどこでコントロールすればいいのかも
分からないので
ついでに教えてください

991 :デフォルトの名無しさん:2008/08/10(日) 16:05:11
javaでwindowsのWaitForSingleObjectのようなメソッドはあるでしょうか。
特定のイベントが発生するまでのスレッドを待機させ、
イベント発生時にスレッドが自動的に動作するようにしたいのです。


992 :デフォルトの名無しさん:2008/08/10(日) 16:13:55
もうちょい低レベルの同期手段もあるが、まずは基本のモニターを使いこなそう。
synchronized(Object)
Object.wait / notify / notifyAll
Thread.interrupt


993 :デフォルトの名無しさん:2008/08/10(日) 16:29:26
印刷処理のように、単純にイベントが発生した時点でスレッドを起動させるので済むって話ならば、待機とかやる必要はないぞ。

994 :デフォルトの名無しさん:2008/08/10(日) 16:53:40
waitで待機しているスレッドが再び動作するには、
誰か別のスレッドにnotifyを呼び出してもらう必要があると思っています。
notifyを明示的に呼ぶのではなく、
ボタンが押されたら自動的にスレッドが動作するようなことを
したいのですが、できるものでしょうか。

995 :デフォルトの名無しさん:2008/08/10(日) 17:08:14
JSF(index.jsp)で、テキストボックスに、"foo"と入力して、
フォーム送信したとき、result.jspに飛んで、それ以外が入力された時、
result2.jspに飛んで、未入力でフォーム送信した時、index.jspで、"入力してください。"
という処理をするには、どのようなJSPと、faces-config.xmlと、モデルを書けばいいんでしょうか。
おしえてください。

996 :デフォルトの名無しさん:2008/08/10(日) 17:12:03
join();

997 :デフォルトの名無しさん:2008/08/10(日) 17:30:06
>>994
WaitForSingleObjectもそんな機能はないよ
ボタンが押されたらnotifyすればいいじゃん

998 :デフォルトの名無しさん:2008/08/10(日) 17:32:14
>>994
Notifyを明示的に呼ぶのとWaitForSingleObject使うのにそんなに差はないような。
何をやりたいのかよくわからないが、スレッドプールが向いてるのかも。
それならコンカレントAPIにいろいろある。

999 :デフォルトの名無しさん:2008/08/10(日) 17:34:38
どんな目的のスレッドをwaitしてんだ?

1000 :デフォルトの名無しさん:2008/08/10(日) 18:18:14
むしろ次スレをwaitしてるよ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

279 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)