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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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

前スレッド
【初心者】Java質問・相談スレッド103【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1182896607/

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

次スレは>>980あたりで。
2デフォルトの名無しさん:2007/07/27(金) 08:55:33
                          刀、           , ヘ
                  /´ ̄`ヽ /: : : \_____/: : : : ヽ、
              ,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
               /: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
     ,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
    /: :.,.-ァ: : : |: : : : : : : : :    :\: : : : :: : : :ヽ  \   /: : : :/
    ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i  / /: : : : :/
     /: :     ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/  /: : : : :/         、
.    /: : /  . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : |  /: : : : :/            |\
   /: : ィ: : : : :.i: : |   \!___/ ヽ:: : : : : : :\|:.:.:.:/:!  ,': : : : /              |: : \
   / / !: : : : :.ト‐|-    ヽ    \: : : : : l::::__:' :/  i: : : : :{              |: : : :.ヽ
   l/   |: : :!: : .l: :|            \: : : l´r. Y   {: : : : :丶_______.ノ: : : : : :}
      l: : :l: : :ト、|         、___,ィ ヽ: :| ゝ ノ    '.: : : : : : : : : : : : : : : : : : : : : : /
      |: : :ト、: |: :ヽ ___,彡     ´ ̄´   ヽl-‐'     \: : : : : : : : : : : : : : : : : : イ
        !: :从ヽ!ヽ.ハ=≠' , ///// ///u /           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      V  ヽ|    }///  r‐'⌒ヽ  イ〉、
              ヽ、______ー‐‐' ィ´ /:/:7rt‐---、       こ、これは>>1乙じゃなくて
                  ィ幵ノ ./:/:./:.! !: : : : :!`ヽ     ポニーテールなんだから
              r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\   変な勘違いしないでよね!
               /: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
3デフォルトの名無しさん:2007/07/27(金) 15:36:55
Java Communication APIというものを用いて,PCカードのポートに接続したGPS(機種はI-ODATAの
CFGPS2)から座標などの情報を取得しようとしています.
現在その前段階として,下記のサイトで公開されているポートの種類や数,通信状況を調べる
サンプルプログラムをお借りして,動作確認をしようとしています.GPS機器を接続しているポート
(COM1)が通信状態になるようにするため,他の電子地図アプリケーションなどでGPSからの情報を
受信している状況を作り出し,このサンプルを動作させました.しかしながら,『COM1が使用中で
ある』という出力が得られませんでした.
こちらでお尋ねするのが相応しいのかどうかの判断に困りましたが,一応Javaを使用している
こともあり,今回質問に参りました.なにかアドバイス等頂きたいと存じます.また,他に質問するに
相応しい場所があるようでしたら,お手数ですがそちらへの誘導をお願いします.

よろしくお願いします.

参考URL:ttp://www.javainthebox.net/JavaForFA/08-09CommAPI/No.08/commapi1.html
4デフォルトの名無しさん:2007/07/27(金) 21:40:21
4ね
5デフォルトの名無しさん:2007/07/27(金) 22:05:00
>>3
GPSはシリアルポートとして見える仕様なのか?
ノートでもオンボードでシリアルのチップが載ってるかもしれないので
まずそれを切ること(完全に切れない可能性も高いけど)
それか単にCOM3あたりで見える可能性もあり。あとはハイパーターミナルあたりで
確認すれ。
6デフォルトの名無しさん:2007/07/27(金) 23:33:51
>996
synchronized でガードされるのはステートメントだけ
従って他のsynchronized メソッドおよびに、synchronized(this)で囲まれたブロックが同期化の対象になる
オブジェクト自体は保持しているクラスなどから自由に触れるわけで同期とは関係がないぞ

一般的に言えば、そのクラスの可変な変数に対して読み込みと書き込みを行っているメソッドを全てsynchronizedにすれば同期化の要件は満たす(ただし、実効性能は考えない)
7デフォルトの名無しさん:2007/07/27(金) 23:38:53
javaでmidiファイルの生成中です。

import javax.sound.midi.spi.*;
import javax.sound.midi.*;

で、何とかメロディを作ったり、音色を変えたりできる様になったのですが、
ドラムの音の出し方が分かりません。

どうぞご教授お願いします。
8デフォルトの名無しさん:2007/07/28(土) 00:21:52
マルチか?
それともこっちのスレで質問しなおす事にしたのか?
もしそうならあっちに一言書いてからこっちに書くべきじゃないか?
誘導もされてなかったのに質問だけしてほったらかしってのは正直どうかと思うよ。
9デフォルトの名無しさん:2007/07/28(土) 02:22:02
どっちにしろjavaの質問じゃないね。
midi関連を扱う板/スレへ池。
10デフォルトの名無しさん:2007/07/28(土) 02:34:03
FileInputStream fis = new FileInputStream("flight.dat");

として読み込んだファイルの行数を得る方法ってありますか?
教えてください。m(_ _)m
11デフォルトの名無しさん:2007/07/28(土) 02:36:38
LineNumberReaderってのがある。
12デフォルトの名無しさん:2007/07/28(土) 03:17:27
>>11
ありがとうございます!
13デフォルトの名無しさん:2007/07/28(土) 06:21:58
jarファイルにもクラスファイルにも同じクラスを置いたら、誤作動起こす?クラスノットファウンドとか?
14デフォルトの名無しさん:2007/07/28(土) 06:48:37
クラスローダが先に見つけたクラスがロードされる
15デフォルトの名無しさん:2007/07/28(土) 08:57:22
ソケット通信を実装しています。

スレッドは使わず、Selectorクラスを利用して複数クライアントからのデータ受信を
実現しようと思っているのですが、一つ確認させてください。

Selectorクラスでイベントが発生したチャネルを取得するselectedKeys()メソッドからは
Keyがイベント発生順に格納されているのでしょうか?

Aさんが送信→Bさんが送信→Cさんが送信→Aさんが送信
とやった場合、上記の順序は確実に保証されてselectedKeys()から取得できるのでしょうか?
1613:2007/07/28(土) 11:59:23
>>14
レスサンクス

もう一つ質問
とあるサイトで配布されているjarファイルを使用する時に、
一部のクラスがソースも配布されていたため、
その対象のクラスだけリコンパイルして実際に動かすJava環境と
同じJavaのバージョンでクラスファイルを作成し、
ソースが提供されていないクラスはそのままにして、
それらをもとの一つのjarファイルとして作り直したら、
キャスト変換エラーが起きた。

リコンパイルしてjarを作り直しただけなのに、わけわかんね。
17デフォルトの名無しさん:2007/07/28(土) 12:11:22
>>15
ソケット通信の実装ってかなり高度だぞw

Selector.selectedKeys() はSetを返すように定義されている
従って、順番が保証されているとは通常は考えられない
保証しているならば、SortedとかListを返すだろう

そもそも、送信順番は受信側では基本的に保証できないよ
どんな順番でServerSocketがacceptするかには関与できないから
"おそらく"送信順番に受け付ける、ってくらいじゃね?
そこまでソケット通信の実装をしているならば別だがw
18デフォルトの名無しさん:2007/07/28(土) 13:32:11
オンラインゲームってかw
19デフォルトの名無しさん:2007/07/28(土) 14:01:40
ダイアログを親フレームとの相対位置に表示したいです。
親フレームの絶対位置が分かれば出来そうですが、それを取得する方法が分かりません。
それとも他に適した方法がありますか?

教えてください。
20デフォルトの名無しさん:2007/07/28(土) 14:37:39
javaの基本文法は一通り終了して、更にjavaの勉強を続けようと思うのですが、どのような勉強方法がよいでしょうか?
21デフォルトの名無しさん:2007/07/28(土) 14:41:54
何か作ったことある?
電卓とか○×ゲームくらいは作れる?
22デフォルトの名無しさん:2007/07/28(土) 14:43:47
>>21
アプレットで電卓、それとC言語で○×ゲーム(コンソールアプリ)は作成したことあります。
23デフォルトの名無しさん:2007/07/28(土) 14:48:41
そか
http://www.geocities.jp/ky_webid/algorithm/index.html
こういうアルゴリズムとデータ構造の勉強はした?
24デフォルトの名無しさん:2007/07/28(土) 14:53:28
有名なアルゴリズムに関しては基本情報技術者試験の勉強で一通り目を通しましたが、
自分で実装まではしていません。

このようなデータ構造とアルゴリズムは一通り自分で実装して動きを確かめた方がよいのでしょうか?
25デフォルトの名無しさん:2007/07/28(土) 15:05:37
>>16 同名の別クラスがあって、部分的なソースでコンパイルした時と、完全なソースでコンパイルした時ではロードされるクラスが違う、とか。
//////////////Test.java////////////////
public class Test{
 public static void main(String[]args){
  System.out.println(new StringBuffer("Test"));
 }
}
//////////////StringBuffer.java////////////////
public class StringBuffer {
  String a;
  public StringBuffer(String a){ this.a=a; }
  public String toString(){ return a.toUpperCase(); }
}
//////////////////////////////
例えばこんなん。Test.javaだけでコンパイルした場合とStringBuffer.java付きでコンパイルした場合では動作が違う。
26デフォルトの名無しさん:2007/07/28(土) 15:12:40
>>24
そりゃするに越したことはない
ある程度規模の大きなものを作る事と
色んなクラスの使用を経験しておくのがいいと思う
27デフォルトの名無しさん:2007/07/28(土) 15:56:22
javaでエディタ作ろうと思っているんだけど、
TextArea内に行数を表示させる箇所を作るのって不可能ですよね。
今考えてるのは、文章入力用のTextAreaとそれに対応するように
行数表示用で編集不可のTextAreaを並べておこうと思っているんだけど。
もし、swing使ったり他の方法でこれが実現できるようなら教えてもらえないでしょうか。
28デフォルトの名無しさん:2007/07/28(土) 16:07:41
>27
TextAreaの中に書くことは無理
独自にComponentを作成するか、JTableなどと組み合わせれば可能
29デフォルトの名無しさん:2007/07/28(土) 17:10:54
>>25
うーん、自分の環境はそれは考えにくいと思うんだけど。。
30デフォルトの名無しさん:2007/07/28(土) 20:32:42
for(int idx = 0 ; idx < 32; idx++) {
 if (i<<idx < 0) {
    System.out.print("1 ");
 } else {
    System.out.print("0 ");
 }
}
↑はint型の変数iのビット列を表示するやつなんですけど、
これのbyte型バージョンを作ろうとしたらうまく動きません
(for文の条件のところを idx < 8 に変更し、iをbyte型のbに変更)
なぜでしょうか?
31デフォルトの名無しさん:2007/07/28(土) 20:47:42
インターフェースを渡して、それを実装したクラスを返すプログラムを作りたいんですが。
(今はとりあえずから実装)、可能でしょうか?
public class Hoge{
public static Class<? extends T> createClass(Class<T> c){
if(c.isInterface()){
なんらかの手段を使ってメソッドを空実装したクラスをreturn;
}else return null;
}
}
public interface Hello{
String sayHello();
}
public class Hogehoge{
public void main(String[] args){
Hoge.createClass(Hello.class<Hello>);
}
}
32デフォルトの名無しさん:2007/07/28(土) 21:19:28
>>30
たぶん、シフト演算でされる単項数値昇格を忘れてるんだと思う。
シフト演算のオペランドの型が byte、short、char なら
シフト演算する前に暗黙のうちに int 型に変換される。
33デフォルトの名無しさん:2007/07/28(土) 21:25:33
>>32
単項数値昇格ですか。初めて聞きました。
これから調べてみます
どうもありがとうございました。
34デフォルトの名無しさん:2007/07/28(土) 21:31:33
>>31
可能。でも、そこのサンプルなんか変じゃね?
35デフォルトの名無しさん:2007/07/28(土) 23:04:28
このスレで見つけたJUnitとかいうツール使ってみたんだけど、これって戻り値がない場合は使えないの?
36デフォルトの名無しさん:2007/07/28(土) 23:28:20
>35
お前には使えなそうだ
37デフォルトの名無しさん:2007/07/28(土) 23:47:17
>>26
そういうことをやろうかと考えていたのですが、
具体的にはどんなことをすればよいのでしょうか?
38デフォルトの名無しさん:2007/07/28(土) 23:59:15
>>29
考えにくい、じゃなくて実際に確かめようぜ。大した手間じゃないだろ。
うまく行かない時ってのは大抵自分の思い違いが原因でな(だからゴムのアヒルに話すのが有効なデバッグになる)。
すぐにわかる事を調べずに、思いこみでコードいじってる内は若葉マーク取れないよ?
39デフォルトの名無しさん:2007/07/28(土) 23:59:16
>>37
アルゴリズムは知識レベルでも十分だと思う
ソート スタック キュー リスト マップ ハッシュ
これらは既にJavaがAPI化しているからJavadocでも読んで理解してればいい

どっちかっていうと、学校や会社であまり詳しく教えてくれないデザインパターンを勉強した方が為になる。

Java デザインパターン でぐぐれ
40デフォルトの名無しさん:2007/07/29(日) 00:07:17
>>38
レスありがd。
一応jarの中身を見たけど、別のjarファイル内にあるクラスファイルとは重複してなかったんだ。
実行時にどのjarファイルを読んでクラスの情報を取得したかについてはデバッガで調べて正しかった。
そのクラスがimport宣言しているクラスが実はJavaのバージョンによっては対象外だったりしてたのかも。。
41名無しさん@そうだ選挙に行こう:2007/07/29(日) 03:21:32
>jarの中身を見たけど、別のjarファイル内にあるクラスファイルとは重複してなかったんだ。
>実行時にどのjarファイルを読んでクラスの情報を取得したかについてはデバッガで調べて正しかった。
複数のjarがあり、ソースのあるjarは別のjarのクラスを利用しているわけか(後付けすんなよ…)。
で、調べたのはそれだけ?同じパッケージ内のクラスは?

>import宣言しているクラスが実はJavaのバージョンによっては対象外
無ければコンパイル時に見つからないと出るし、複数あってもコンパイル時にどれか分らないって出ると思うけど。


つーかそもそもどこまで分ってるんだ?
1.キャスト変換エラーが出る場所が分っている。
2.キャスト変換エラーが出るインスタンスが分っている。
3.キャスト変換エラーが出るインスタンスの本来あるべきクラスが分っている。
4.キャスト変換エラーが出るインスタンスがいつ、どこで作成されるか分っている。
5.キャスト変換エラーが出るインスタンスの実際のクラスが分っている。
6.上記3.と5.は異なっている事が分っている。

#一応ソースとかコンパイル→jar固め手順が誤って無いって前提で話してるけど、そのへんは大丈夫だろうか
42名無しさん@そうだ選挙に行こう:2007/07/29(日) 03:40:42
>>39
Java デザインパターン
でぐぐってみる
サンクス

デザインパターンでオススメの参考書とかってある?
43名無しさん@そうだ選挙に行こう:2007/07/29(日) 03:47:36
>42
CollectionとかSwingの実装
本だと結城本が入門用で定番
個人的にはリファクタリングによるデザインパターン入門とかってやつがオススメ
44名無しさん@そうだ選挙に行こう:2007/07/29(日) 03:55:56
>>43
なるほど
明日本屋行って買ってくる
遅い時間にありがとう
45名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:36:09
FileDialogで選択したファイルのパスとファイル名をTextFieldにsetTextで入れて
そのTextField内の文字列を初期値にFileを作りたいのですがうまくいきません。
そのFileでhashCodeとgetNameを行うためにはどうすればいいんでしょうか?
46デフォルトの名無しさん:2007/07/29(日) 15:39:46
>>41
詳細に説明してくれて、感謝感激雨あられです。

>つーかそもそもどこまで分ってるんだ?
もっと詳しくソース追ってみたけど、実はキャスト変換の前のコードでそもそもの問題が見つかってしまって。。
ClassクラスのforName()のnewInstance()の戻り値が、事前にstaticなオブジェクト変数に値が入っていることで、
別のインスタンスが返されるように出来ているっぽい。コンストラクタ上でforNameの引数に渡したクラス名とは
別のオブジェクトを返すように実装されている感じ。


>#一応ソースとかコンパイル→jar固め手順が誤って無いって前提で話してるけど、そのへんは大丈夫だろうか
jar固め手順とは?

jar -cvf "jarファイル名" "フォルダ1(リコンパイルしたもの)" "フォルダ2(もともとjarに格納されていたもの)" "ファイル(*.propertiesなど)"

みたいな感じでjarを作っている。

もしリコンパイルしたソースが他のパッケージ内のクラスを参照しているのであれば,
上記の場合、フォルダ1とフォルダ2は逆かな?パッケージ名は単純にアルファベット順にならべてんだけど。。


47名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:26:50
>>45
うまくいきませんじゃ、分からないのだが?
そのような内容では、出来るはずですとしか答えられん・・・。
うまくいかないコードをはってくれ。
48名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:53:53
書き込んだあとに調べてみたところ
tf1.setText(fd.getDirectory()+fd.getFile());
とやってはディレクトリの区切り文字が\になってしまってるのが原因のようでした。
この\を\\に置き換えることってできますかね?
49名無しさん@そうだ選挙に行こう:2007/07/29(日) 18:32:40
JFrameの表示座標ってどうにか変えられないだろうか
JButtonに反応して表示するように下はいいけど左上が画面の左上に吸着したような位置にでてしまう
50名無しさん@そうだ選挙に行こう:2007/07/29(日) 19:27:39
public void setLocationRelativeTo(Component c)

引数をnullとすれば画面中央に表示
51名無しさん@そうだ選挙に行こう:2007/07/29(日) 19:50:10
>49,50
setLocationRelativeTo(parentFrame) でね?
 
parentFrameは、JButtonを配置したJFrameな
52名無しさん@そうだ選挙に行こう:2007/07/29(日) 20:09:04
>>49 >>50
setLocationRelativeToでググってみたらsetLocationなんていうのもあるんだな
ちょっとこれ使ってやってみる
返答サンクス
53デフォルトの名無しさん:2007/07/30(月) 12:32:04
ファイルの入出力について詰まったので、教えてください。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TextReader {

public TextReader(){
try{
String strLine;
FileReader in = new FileReader("stage.txt");
BufferedReader reader = new BufferedReader(in);
while((strLine = reader.readLine()) != null){
System.out.println(strLine);
}
reader.close();
}catch(IOException ie){
System.out.println("error");
}
}
}

↑のようなプログラムで、stage.txtというファイルの中身をコンソール上に表示させたいのですが、エラーになってしまいます。
ちなみにstage.txtというファイルは、このプログラムファイルと同じディレクトリに入れています。
どこがおかしいのかご指摘頂けないでしょうか、お願いします。
54デフォルトの名無しさん:2007/07/30(月) 12:34:42
すいません、書き忘れましたが、
public static void main(String s[]){
TextReader t = new TextReader();
}
もTextReader内に入っています。

お願いいたします。
55デフォルトの名無しさん:2007/07/30(月) 14:34:36
>>53
System.out.println("error"); を ie.printStackTrace() に変えて、
どんなエラーなのか調べれば?
56デフォルトの名無しさん:2007/07/30(月) 14:41:55
>>55
レスありがとうございます。
それを試してみたら(指定したファイルが見つかりません)になりました。
同じディレクトリ内にファイルを入れてるんですが・・・。何かファイルの指定法に間違いがあるんでしょうか?
57デフォルトの名無しさん:2007/07/30(月) 19:07:28
同じディレクトリってどこと同じなんだYO
File file = new Filr("stage.txt");
と書いてみて、絶対パス表示してみろ
58デフォルトの名無しさん:2007/07/30(月) 20:23:24
俺が思うに、綴りが間違ってるんじゃないかな。
59デフォルトの名無しさん:2007/07/30(月) 20:26:28
>>57
うわ・・・なんというミス・・・ありがとうございます。
確かにどこと同じなんだよって話ですね・・・。解決しました。ありがとうございます。
60デフォルトの名無しさん:2007/07/30(月) 20:37:12
次のようなCSVダウンロードプログラムをLinuxサーバー上で実行し、
Windowsでダウロードした場合、なぜか、Windowsで改行コードがCR/LFになってしまう。
なぜ、LFでなく、CR/LFになるのでしょうか?
ブラウザが変換している?
response.setHeader(xxxxxx);
PrintWriter pw = response.getWriter();
pw.println(XXXX);
pw.close();
61デフォルトの名無しさん:2007/07/30(月) 20:41:52
>>60
printlnが出力する改行コードはJVMが動いているシステムにとって自然な改行コードになる。
もし変えたくなければ自分で必要な改行コードを出力する。
6261:2007/07/30(月) 20:44:18
あ、すまん。勘違い。>>61は忘れてくれ。
63デフォルトの名無しさん:2007/07/30(月) 20:51:32
>60
どこにCSVファイルがあるか教えてくれ、ただのサーブレットにしか見えない
64デフォルトの名無しさん:2007/07/30(月) 21:37:00
setHeaderでapplication/octet-streamにする
6519:2007/07/30(月) 23:08:45
どなたか分かりませんか?
66デフォルトの名無しさん:2007/07/30(月) 23:16:40
setLocation / setLocationRelativeTo
67デフォルトの名無しさん:2007/07/30(月) 23:25:27
なんかgdgdだがsetLocationRelativeTo なんてあったのか。
Swingはデカすぎるから困る。
68デフォルトの名無しさん:2007/07/30(月) 23:28:48
SWT/JFaceに比べりゃ・・・
Eclipseで入力補完使いながら、setといれれば直ぐ見つかる程度だろう
69デフォルトの名無しさん:2007/07/30(月) 23:44:22
質問javamail使ってwebmailみたいのつくりたいんだけど、HTMLメールを
どうしようかなって思ってて。
やろうと思ってるのはHTMLタグ(&)だけ抜いて、テキストだけで
実装しようかと思ってるんだけど、HTML抜くライブラリとかってあるの?
smtp実装してるのはあるんだけど、popしてメール表示するようなサンプルって
あんましないんだよね。。誰かやったことある人おしえてください。
文字コードencodingは次考えます。
7061:2007/07/30(月) 23:46:28
プログラムのXXXの部分は適当です。カンマ区切りで出力と仮定しています。
なぜ、Linuxなのに、CRがつくのかがわからないです。
71デフォルトの名無しさん:2007/07/31(火) 00:13:39
JMSって何をする目的で使うのでしょうか?
72質問です:2007/07/31(火) 01:11:55
サーブレット間通信について質問です。

あるコンテキスト内で2つのサーブレットが起動しています。
この片方からもう片方のメゾッドを呼び出すことが出来ることを知りました。
書籍には
Servlet ServletContext.getServlet(String str)
でもう片方のサーブレットを取得できると書いてありますが、
如何せん書籍が古いため、現在このメゾッドはサポートされていないそうです。
同等の機能を実現するためにはどうすればいいのでしょうか?
73デフォルトの名無しさん:2007/07/31(火) 06:17:50
>>61
Servletの設定がそうなっているんじゃない?

>>72
相当古い本だな、それ
そのメソッドをServletではなく共通で使える普通のクラスにすればいい
Servletの何か(パラメータ等)が必要ならば、それを引数に渡せばOK
74質問です:2007/07/31(火) 09:23:13 BE:42319687-2BP(6)
>>73
回答ありがとうございます。
片方のサーブレットが持つ情報をもう片方がほしければ、
その「普通のクラス」のstaticなクラス変数を介してもらえばいいということでしょうか?
75デフォルトの名無しさん:2007/07/31(火) 15:45:43
予約後って全部暗記したほうがいいの?
76デフォルトの名無しさん:2007/07/31(火) 15:48:27
うん
77デフォルトの名無しさん:2007/07/31(火) 16:52:41
Math.abs(-10);
のメソッドの結果がなんで-10じゃなくて10なんですか?
78デフォルトの名無しさん:2007/07/31(火) 17:08:02
[バージョン]JDK1.5
[内容]
java.util.concurrent パッケージの ArrayBlockingQueue と LinkedBlockingQueue は
どのように使い分ければ良いのでしょうか。

ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/concurrent/ArrayBlockingQueue.html
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/concurrent/LinkedBlockingQueue.html

実際にやろうとしていることは、ThreadPoolExecutor 生成でこれらを用い、

・実行されるスレッド数の上限を決めたい(例えば10)
・上限に達したら、submit された際キューに積まず例外で返したい

なのですが、この場合、

ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 0L,
    TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(10));
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());

と言った感じで良いものなのでしょうか。

ttp://www-06.ibm.com/jp/developerworks/java/040625/j_j-tiger06164.html
を見ると、LinkedBlockingQueue だと取りあえず受けてしまう様にも見えるのですが、
Javadoc の説明からは読み取りきれず悩んでいます。
79デフォルトの名無しさん:2007/07/31(火) 18:24:09
>>77
Math.abs がどんな機能なのか知ってるか?

>>78
>どのように使い分ければ
Array〜は固定サイズ限定だから、無限にしたければLinked〜を選ぶしかない。
でなければ、別にどっちでも。

>実行されるスレッド数の上限を決めたい(例えば10)
>上限に達したら、submit された際キューに積まず例外で返したい
SynchronousQueue を使う。
他のキューだと、スレッド数が上限に達しても、さらにキューが一杯になるまでタスクが溜まる。
80デフォルトの名無しさん:2007/07/31(火) 18:52:16
>>77
現役中学生に聞いてみれば?
81デフォルトの名無しさん:2007/07/31(火) 18:54:22
>>80
なんで?
Math.absってどういう意味?Mathはなんとなく数学っぽいが。
82デフォルトの名無しさん:2007/07/31(火) 18:56:44
absは阿部さんの略
83デフォルトの名無しさん:2007/07/31(火) 19:12:25
つーかjavadoc嫁よ屑
84デフォルトの名無しさん:2007/07/31(火) 19:44:07
>>82
つまんねぇんだよカス
85デフォルトの名無しさん:2007/07/31(火) 19:48:11
ご、ごめん
86デフォルトの名無しさん:2007/07/31(火) 19:55:48
質問させていただきます。
ArrayList を Iterator で順序アクセスした場合、この順序はもとのリストの順序と一致しないのでしょうか?
87デフォルトの名無しさん:2007/07/31(火) 20:30:05
一致する
88デフォルトの名無しさん:2007/07/31(火) 20:43:36
てか順序が一致しないListってあるの?
Setと違って並びありきなクラスだと思うんだけど。
89デフォルトの名無しさん:2007/07/31(火) 21:05:26
一致しないとまずすぎるだろ常考・・・
90デフォルトの名無しさん:2007/07/31(火) 21:11:38
>>88
no
91デフォルトの名無しさん:2007/07/31(火) 21:13:29
セックル中?
92デフォルトの名無しさん:2007/07/31(火) 21:16:09
回答ありがとうございます。
自分もそう思って、

for (int i=0; i < list.size(); i++) {
// list.get(i) を処理
}



for (Object obj: list) {
// obj を処理
}

のように書き換えたら問題がおきたのです。
他の問題があったのかな。
93デフォルトの名無しさん:2007/07/31(火) 21:31:13
どんな問題が起きたんだよw
ClassCastExceptionとかNullPoだったら氏ね
94デフォルトの名無しさん:2007/07/31(火) 21:39:48
>>78
最初にExecutors.newHogeHoge の標準ファクトリメソッドで生成されるものを使うのが推奨されている。
それでダメならばカスタマイズ汁

で、こんな場所で質問しているヤシはマルチスレッドなんかに手を出すべきじゃない
95デフォルトの名無しさん:2007/07/31(火) 21:46:57
こんな場所で質問しているヤシはJavaなんかに手を出すべきじゃない
96デフォルトの名無しさん:2007/07/31(火) 22:23:16
じゃあどの言語がいいんだよ
97デフォルトの名無しさん:2007/07/31(火) 22:53:34
>>96
それをこんな場所で質問しているヤシはプログラムなんかに手を出すべきじゃない
98デフォルトの名無しさん:2007/07/31(火) 23:09:41
じゃあこのスレにいるやつらはなんなんだよw
99デフォルトの名無しさん:2007/07/31(火) 23:31:39
質問があるんですが,アプレットで文字とかを描画するときに,
paintメソッドで,Graphics gとかを引数にとっていると思うのですが,
gが良くわかりません.
他のクラスから,アプレットのメソッドを呼び出したりして,
アプレットに文字列を描画したいのですが,gのところをどうすればよいかわかりません.
どなたか詳しい方教えてください
100デフォルトの名無しさん:2007/07/31(火) 23:43:30
>>99
もしかして、paintを自分から呼び出して描画処理を行おうとしていない?
paintには描画したい内容を記述して、
それを呼び出すのはjavaの処理系が再描画すべき時点でやってくれる。
もし自分から描画させたい場合はpaintを直接呼び出さず、
repaintなどの再描画を促すメソッドを呼び出せばいい。
こちらからアクティブに描画する方法もあるが、
初心者のうちはこういうパッシブ描画でがまんしておけ。
101デフォルトの名無しさん:2007/07/31(火) 23:43:40
>>99
gは大事にしてね。
引数渡しするかキャンバスクラスに実装して使い回せばおk
102デフォルトの名無しさん:2007/08/01(水) 00:16:19
>>101
使いまわしたら生きてるか死んでるかの確認と再生成を自力でやらなきゃいけなくない?
103デフォルトの名無しさん:2007/08/01(水) 00:34:08
すみません、自力では限界なので誰か教えてください。
当方、専門学校の選択でJAVAを取った1年生です。

Eclipseを使ってJAVAをやっているのですが
import model.product;
の行で「インポートされた model は見つかりません。」とエラーが表示され、先に進めず困っています。

このぐらい自力で解決しろ、と思われますが、
検索をかけても解るものがヒットしないのです、どうか宜しくお願いします。

…教諭がソース(コメント、解説無し)のプリントを配布するだけで質問に答えてくれないんです。
104デフォルトの名無しさん:2007/08/01(水) 00:55:35
パッケージを理解しろ。「java パッケージ」でぐぐれ。
srcフォルダの下に、model/product っていうディレクトリはあるのか?

専門学校ってEclipseとかやるんだ。
105デフォルトの名無しさん:2007/08/01(水) 01:37:05
専門学校でツール使うばあい、ツール教える側が理解してなくてカオスってるときがあるけどな。

それでサポやらされる身にもなってみろ。
106デフォルトの名無しさん:2007/08/01(水) 01:51:48
じゃあやめちまえ
107デフォルトの名無しさん:2007/08/01(水) 02:26:30
>>103
>質問に答えてくれないんです

嘘つくな
108デフォルトの名無しさん:2007/08/01(水) 02:32:44
int test[]={80,43,43,32,84};
109デフォルトの名無しさん:2007/08/01(水) 02:40:44
>>103
どこの学校か教えてくれたら、完全な解説を書きます。
110103:2007/08/01(水) 06:19:13
>104
回答有難う御座います、srcというフォルダ自体がありません。
Wikipediaでパッケージというものがどういうものか、一応は理解できたつもりです。

プリントの中に package model.Product; と書かれたソースファイルが無いです…

>105
多分その通りかと…とても若い人で出欠取ったらどこかへ行ってしまいます。

>106
辞めてもいいのですが単位が…

>107
授業中に質問ができなく、職員室に突撃して聞いても「自分で調べろ」の一点張りで…

>109
日本工学院です
111デフォルトの名無しさん:2007/08/01(水) 07:55:06
>授業中に質問ができなく、職員室に突撃して聞いても「自分で調べろ」の一点張りで…

質問に答えるとボロが出るからな
112デフォルトの名無しさん:2007/08/01(水) 11:27:37
>>110
model.product なんてクラスが必要なければそんな import 文は単に消しちまうか、
どっかで使われてるなら model パッケージを作って product クラスを適当にでっちあげればいいんでない。
113デフォルトの名無しさん:2007/08/01(水) 15:00:44
>>103
エラーメッセージをググる事を覚えるといいかも。
例えば「インポートされた は見つかりません」
固有部分を抜いて検索してみるのね。
114デフォルトの名無しさん:2007/08/01(水) 18:11:16
配列のソートがよくわからん。
誰かおせーて。
115デフォルトの名無しさん:2007/08/01(水) 18:12:34
116デフォルトの名無しさん:2007/08/01(水) 18:43:30
>>114
Arrays.sort で出来るよ
117デフォルトの名無しさん:2007/08/01(水) 19:18:47
専門学校の教師に聞いた話だが、2年制とかになると早めに辞めさせてしまう方が評価が高いらしい
下手に全員が進級すると教室が足りないんだってw
118デフォルトの名無しさん:2007/08/01(水) 20:07:32
>>117
教室と言うか教室の中にある設備機材のほうだなw

だから講師が生徒潰しにかかって、それに触発されて生徒間も潰し合いし出して
マジで頭おかしくなって精神科・心療内科行く奴が増えて
そっち系の知識が豊富になりつつ、潰し合いに生き残った者たちはどんどん専門学校に洗脳されて外でワケワカメな事言いだすんじゃないか。

そもそも、コンピュータ系専門に常駐してる講師なんて業界の底辺から溢れて食ってけないから講師をry
それを補うためにたまに外部からプロ呼ぶんだろうが。
119デフォルトの名無しさん:2007/08/01(水) 21:48:40
>>118
まるでヒューマ○みたいな専門学校だなww
もっとツールを使わないで一から作る技術を身につけたほうが
いいんだろうけど。
120デフォルトの名無しさん:2007/08/01(水) 22:08:50
ツール類の環境を整えてるのが売りなんじゃ?
まあ、今は学生書があれば激安で一式そろえれるから今は独学でも勉強が。

仕事で使うような自社ライブラリとかはそもそも入手できないし。
仕事で使う数十万から100万するモデリングツールや動画編集ソフト類も無理だろうし。
121デフォルトの名無しさん:2007/08/01(水) 23:09:58
JMSのことが詳しくのってる本かサイトはありませんかね?
できれば日本語希望です。
122デフォルトの名無しさん:2007/08/01(水) 23:16:50
JMSなりActiveMQでぐぐって、最初のリストに出てくるサイトの中に無ければないんじゃね?
123デフォルトの名無しさん:2007/08/02(木) 01:38:04
struts関連の事ですので、多少スレ違いかも知れませんが
ご容赦下さい。

環境:JDK1.5 apache+tomcat struts winXP (+Exlipse3.2 All in One)

アクセスログ出力の為、RequestProcessorを拡張する事に
なりました。(Actionのexecute発行前後でログを出す)

で、今回画面項目のチェック等でvalidationを使用する為、
TilesPluginとTilesRequestProcessorを使用しています。

(参考www.atmarkit.co.jp/fsecurity/rensai/struts03/struts03.html)
上記サイトを参考にし、TilesRequestProcessorをextendsした
クラスをstruts-config.xmlのcontroller processorClass に
指定していますが、何の反応も有りません。
(ロジックを通っていない、エラーも特に起きない)
((エラーが起きる様なロジックをわざと用意しても同様))


で、PukiWiki様の説明によると、TilesPlugin使用時には
TilesRequestProcessorが自動的に指定される、との事でした
ので、ワザとcontroller processorClassに変なクラスを
指定してみたりもしたのですが・・・・やはり何も起きません。


上記の結果、controller processorClass指定時は。
他の設定ファイル(web.xml等)も設定が必要なのでは?
他に設定が無い限り、TilesRequestProcessoの自動指定
が外れないのでは無いか?と疑っているのですが、何か
ご存知の方、他に設定が必要でしたらお教え下さい。
お願い致します。
124デフォルトの名無しさん:2007/08/02(木) 08:07:54
125デフォルトの名無しさん:2007/08/02(木) 11:15:57
統計ライブラリは何を使ってますか
フリーのものでお勧めのがあればご紹介ください
126デフォルトの名無しさん:2007/08/02(木) 12:17:49
setColorでRGB値で色を作ろうとした時に、
色を格納している変数の名前をr,g,bにしていたところ、

hoge.java:18: シンボルを見つけられません。
シンボル: コンストラクタ Color(int,java.awt.Graphics,int)
場所    : java.awt.Color の クラス
g.setColor(new Color(r,g,b));

というエラーが出たのですが、これどういうことでしょうか?
変数名をred,green,blueに変えたらコンパイルちゃんと通ったのですが、
引数に禁止されてる変数名とかあるのですか?
127デフォルトの名無しさん:2007/08/02(木) 12:33:40
>>126
gの型は何のつもりなんすか。int or Graphics?

128デフォルトの名無しさん:2007/08/02(木) 12:39:59
>>127
あ…Graphics gを引数で受け取ってて、
記憶域の都合で関数外でint r,g,bを宣言してたから
名前が被ってた…orz
Javaは昨日からだけどC/C++は2年くらいやってるのに
何をこんな間違いを…orz
ちょっと吊って来ます。
129質問です:2007/08/02(木) 12:47:08 BE:9069034-2BP(6)
java で特定の日時を保存するには何のクラスを使えば適切なのでしょうか?
130デフォルトの名無しさん:2007/08/02(木) 12:56:48
>>129
君の言ってる保存って何?
ファイルに出力する事?
131質問です:2007/08/02(木) 13:15:19 BE:11335853-2BP(6)
>>129
あ。すいません。
メモリー上で保持することです。JavaPlatform SE 6でお願いします。
Dateかと思ったんですが、ドキュメントをみるとメンバー関数に
推奨されてない的なことが沢山あったので別にあるのかなと思って質問いたしました。
132質問です:2007/08/02(木) 13:42:15
int i;
for (int j = 1 ; j <= 9 ; j++){
i = 2 * j;
System.out.println("2 × " + j + " = " + i);

for文なんですが、出力部分の"+"の意味がわかりません。
どういう意味なんでしょうか?
133デフォルトの名無しさん:2007/08/02(木) 13:45:34
>>131
yyyy年MM月dd日 hh時mm分ss秒のDateインスタンスを作りたいってことね。
java.util.Calendarを使うこと。例えば今日の日付ならこうなる。

Calendar cal = Calendar.getInstance();
cal.set(2007, 7, 2, 13, 32, 40); // 2007年8月2日 13時32分40秒
Date today = cal.getTime();

Calendar#set()の第二引数は月の指定だが、0スタートなので注意。
詳しくはjavadoc参照。
134デフォルトの名無しさん:2007/08/02(木) 13:49:37
>>132
System.out.println("aaa"+"bbb");
表示されるのは「aaabbb」

int x=5;
System.out.println("aaa"+"x");
表示されるのは「aaax」

int x=5;
System.out.println("aaa"+x);
表示されるのは「aaa5」
135デフォルトの名無しさん:2007/08/02(木) 13:50:26
>>132
+は文字列同士の連結の意味
iとかjはintだけど文字列に自動で変換されたあとで連結される
たとえばj=3,i=6の場合、
System.out.println("2 × " + j + " = " + i);

System.out.println("2 × " + "3" + " = " + "6");

System.out.println("2 × 3 = 6");
になる
136デフォルトの名無しさん:2007/08/02(木) 13:50:35
>>132
なんだ、足し算教えろっていってるのか?
137デフォルトの名無しさん:2007/08/02(木) 13:51:45
>>132
文字同士の連結
文字通りの足し算だね
138質問です:2007/08/02(木) 13:52:10 BE:31739876-2BP(6)
>>133
おおお、詳しくありがとうございます(ノ∀`)
参考になりました
139デフォルトの名無しさん:2007/08/02(木) 13:57:15
さすがに千葉工業大学だなw
つりもレベル低いや
140デフォルトの名無しさん:2007/08/02(木) 20:23:37
よくわかったね
141デフォルトの名無しさん:2007/08/02(木) 21:20:10
よくわかるも何も自己紹介してるじゃん
142デフォルトの名無しさん:2007/08/02(木) 21:23:20
Be付けて恥さらし(笑)
143質問です:2007/08/02(木) 21:35:16 BE:7557252-2BP(6)
>>142
ニセ者をニセ物と見抜けないおまいも(略
144デフォルトの名無しさん:2007/08/02(木) 21:44:49
やってることが恥晒しってことだろ
145デフォルトの名無しさん:2007/08/03(金) 10:03:28
JTextAreaで表示するテキストの行間の間隔を変えたいのですが、それっぽい設定が見つかりませんorz
どこをいじれば良いのでしょうか・・
146145:2007/08/03(金) 12:02:22
自己解決しました。
147デフォルトの名無しさん:2007/08/03(金) 12:32:27
してないです。
148デフォルトの名無しさん:2007/08/03(金) 13:07:38
test
149デフォルトの名無しさん:2007/08/03(金) 14:09:41
メゾッド内で引数に与えられたboolean型の値の変更をするために
Boolean型を使おうと思っているのですが、使い方がよくわかりません。

private void _found_error(Boolean error_frag)
{
  error_frag = Boolean.valueOf(true);
}

public void readFormData()
{
  // 初期値はfalse
  Boolean error_frag = Boolean.valueOf(false);

  // 内部でtrueにしているはずなのに
  _found_error(error_frag);

  if(error_frag.booleanValue())
  {
// なぜかここが実行されない
  }
}

何が悪いのか教えてください
150デフォルトの名無しさん:2007/08/03(金) 14:32:02
_found_error の error_frag が指す先を別のオブジェクトに変えても、
readFromData の error_frag が指す先は変わらないから。
151デフォルトの名無しさん:2007/08/03(金) 14:33:43
>>149
Boolean はimmutableなのでインスタンスの状態の変更はできない。
そしてJavaは全て値渡し。
error_frag の参照値がコピーされて _found_error に渡され、
_found_error ではコピーされた参照値をBoolean.valueOf(true) が戻す参照値で上書きする。
その際、readFromData の error_frag は影響を受けない。

解決法としてはインスタンスメソッドなら error_frag をインスタンス変数にする、
それが嫌なら boolean[] やら class MyBoolean{ boolean flag; } を使うなどして
インスタンスの状態を変更できるものを使う。
152デフォルトの名無しさん:2007/08/03(金) 14:38:54
考えてみれば
error_frag = Boolean.valueOf(true);
ではerror_fragの実体の指す先が変わってしまいますよね、失礼しました。

値を変えたいboolean型をこれらのメゾッドの関数が含まれるクラスのメンバー変数にして
解決することにしました。

どうもありがとうございます。
153デフォルトの名無しさん:2007/08/03(金) 15:10:46
連絡がありません。いいかげんな対応をされては困ります。あと一週間以内に何も連絡が無い場合、
落札者都合で削除すると同時に悪い評価が付きます。
154デフォルトの名無しさん:2007/08/03(金) 15:42:52
ServerSocket.accept()や、BufferedReader.readLine()のような
入力がある、終わるまで待機するような方法を探しているのですが、スレッドを使って値を
155デフォルトの名無しさん:2007/08/03(金) 15:45:24
途中で書き込んでしまったorz
ServerSocket.accept()や、BufferedReader.readLine()のような
入力がある、終わるまで待機するような方法を探しているのですが、スレッドを使って値を
監視する、以外に方法はないでしょうか?なんかこれだとCPUの無駄遣いのような気がしますし
もっと効率のいい方法がないかなと。
156デフォルトの名無しさん:2007/08/03(金) 16:05:35
何を待ちたいのかわからないが、
自スレッドを Object#wait で寝かせて、他のスレッドから #notify もしくは #notifyAll で起こすことはできる
157デフォルトの名無しさん:2007/08/03(金) 16:09:32
それか、複数のソケットを同時に待ちたいってことなら、Selector を使うと幸せかもしれない。
ぜんぜん違う話なら、もっとくわしく・・・
158デフォルトの名無しさん:2007/08/03(金) 18:22:06
初期状態の時にJListが描画(表示)されません。
中央の"set"の下らへんをクリックするとJListが初めて描画される感じです。
これを簡単に解決したいんですが、どうしたらいいでしょうか?
やはり、上の描画部分はCanvasで下はボタン等のパネルにすべきでしょうか?

http://up.spawn.jp/file/up39072.txt
159デフォルトの名無しさん:2007/08/03(金) 18:22:51
すいません、"set"じゃなくて"m"です。とりあえず中央のボタンの下らへんにJListがあります。
160デフォルトの名無しさん:2007/08/03(金) 19:00:50
thread内でDBにSELECTしたりINERTしたりする時ってデッドロックって起きる?
同じテーブルの同じレコードに同時にINSERTしたりしたら起きるんかな?
161デフォルトの名無しさん:2007/08/03(金) 20:01:20
>>159
まあ、SwingというかAWTから勉強した方が良い。
162デフォルトの名無しさん:2007/08/03(金) 20:12:21
>>158
とりあえず super.paint(g);

レイアウトマネージャとか、AWTとSwingを混ぜるなとか、色々あるけど、まぁね。がんばれ。。
163デフォルトの名無しさん:2007/08/03(金) 20:18:01
そもそもprintConponent()な。
164デフォルトの名無しさん:2007/08/03(金) 20:20:08
paintComponentじゃね?
165デフォルトの名無しさん:2007/08/03(金) 20:25:51
>>157
Jinputを使ってgamepadからの入力を受け付けるんですけど
Jinputだといわゆるイベント(keyEvent)とかを発行しないんです。
だから現状はいつボタンが押されたか常にスレッドで〜msごとに
どのボタンが押されてるかチェックしてるんですが、
もっと効率よくイベント発行するタイミング(ボタンおされた時)を調べるにはどうしたらいいかなと。
166デフォルトの名無しさん:2007/08/04(土) 00:33:16
jinputなんか知りまへん・・・と言いたいが、そのうち自分も使いたくなるかもしれないから調べてみる。

・・・・・・
だめっぽいね。 一定時間ごとに poll するしかなさそうです。
よく考えたら DirectInput も joyGetPos も自分で取りに行くしかないっけか。。。
結論 → むり
167デフォルトの名無しさん:2007/08/04(土) 09:28:53
ソースコード上に書いたクラスのフィールドやメソッドの順番って、
コンパイル後やHotSpotコンパイラがネイティブコンパイルした後も維持されますか?
どのVMならというのではなくて、言語仕様としてどうなのかなと。
168デフォルトの名無しさん:2007/08/04(土) 10:37:28
ソースの字面出現順にメモリにアラインメントされるかってこと?

それなんて構造体?

javaはレジスタすら動的に配置して定期的にメモリ内容かわってるのに。
ていうか配列すら最適化のために連続しておかれる保証はないのに。
169デフォルトの名無しさん:2007/08/04(土) 11:24:42
>>155
Swingとかでの話か?
1文字入力がある度に、KeyEventListenerで拾って処理するってのが定石
お前さんが思うほど不可はかからない
もしくは、フォーカスが外れたタイミングで処理する

CUIとかでの話であれば、System.in.read() 等はブロックする筈
170デフォルトの名無しさん:2007/08/04(土) 11:54:11
自作classの使用方法についての質問です。

次のような構造でDBにアクセスするプログラムを作成しています。

(Console)--[入力取得と出力]--[データ加工]--[DBAHelperImpl implements DataStoreAccessHelper]--(MySQL)
注 [xxx]:自作Javaクラス、(xxx):システム外部を表します

[DataStoreAccessHelper]は、情報の取得、情報の保存、取得した情報からオブジェクトを作成、
取得した情報をjava.util.Listで戻す、などのメソッドを宣言したインタフェースです。
[DBAHelperImpl]は、そのインタフェースをMySQL用に実装したクラスです。

ここで、[DBAHelperImpl]を使用する方法について調べたところ、3通りの方法が見つかりました。
(1) DBAHelperImplをnewして使用する
(2) DBAHelperImpl内にstaticなインスタンスを作成し、
   作成したインスタンスをDataStoreAccessHelperとして戻すメソッドを通じて使用する
(3) DBAHelperImplをDataStoreAccessHelperとして作成して戻すクラスを新たに作り、
   そのクラス経由で取得、使用する

私は(1)の方法で使用していたのですが、(1)の方法はあまり勧められないとの記述があり、迷っています。
諸兄のご意見をお聞かせください。
171デフォルトの名無しさん:2007/08/04(土) 12:03:26
>>168
> 配列すら最適化のために連続しておかれる保証はない
まじでか。まあデカイ配列で落ちられても困るから有りだけど。
172デフォルトの名無しさん:2007/08/04(土) 12:34:34
>>170
(1)の方法で勧められない理由は何か説明できる?
説明できないならば、(1)の方法でも何も問題ない。

(2)は結局はImplがどれかを知らなければならないので(1)と何も変わらない
(3)はいわゆるFactoryクラスを作るパターンだが、Implを状況に応じて使い分ける必要がないならばただのオナヌー
173デフォルトの名無しさん:2007/08/04(土) 12:42:55
(2)は後のリファクタリングを意識した冗長設計だな。
シングルトンにしたほうが都合が良いなら、内部でそうすればいいし、
DBAHelperImplに致命的なバグがあり、
工数的に他所のDAOをラップして返した方が都合が良い場合もある。
174デフォルトの名無しさん:2007/08/04(土) 12:49:43
>>167
フィールドは並び替えられているという話を読んだ覚えがある。
char a;
int b;
char c;
みたいなのを順番どおり並べると隙間が出来て無駄なんで
int b;
char a;
char c;
に並び替えて隙間を詰める。
175デフォルトの名無しさん:2007/08/04(土) 13:17:36
低レイヤーの話をするのは無意味。Cじゃないし。
176デフォルトの名無しさん:2007/08/04(土) 13:23:32
>>171
javaの配列が短形でなくて良いのはどうせ最適化されて実行時に都合の良いように再配置され凸凹になるから。

メモリアドレスで言えば番地が連続している訳ではないし、その必要も無い。

配列要素nがあったとして番地的にn+1の要素が隣の番地にあるとは限らない。

だからjavaの配列は順次アクセスが早いとは限らない。
177デフォルトの名無しさん:2007/08/04(土) 13:27:36
まあこのくらいの問題なら自分でアラインするより
よっぽどスマートなメモリの使い方する(文字列以外)から気にしたら負け。
178デフォルトの名無しさん:2007/08/04(土) 14:58:42
javaで構造体(みたいなもの)を定義してその中のある要素でソートするにはどうしたらいいですか?
たとえば
名前、身長、体重のデータからなる構造体を身長の高い順から表示するようなプログラムを作りたいんですが。
179デフォルトの名無しさん:2007/08/04(土) 15:30:54
compareTo
180デフォルトの名無しさん:2007/08/04(土) 15:31:04
OSのシステム言語を英語にするとコンソールの日本語が文字化けしてしまうのですが
システム言語に関係なく日本語を文字化けさせないためには、どのようにすればよいのでしょうか?

ロケールなどを設定してもダメでした…
181デフォルトの名無しさん:2007/08/04(土) 15:32:07
仕様です
182170:2007/08/04(土) 15:45:23
お答えありがとうございます。
現時点では(1)を否定する理由が思いつかないため、(1)でいこうと思います。

その後いろいろ調べてみました。
(2)を採用する理由は、実装クラスの内部的な変更に強くなる(インタフェースのメソッドのみを使用している限り、利用する側の修正がない)。
(3)を採用する理由は、実装クラスそのものが別のクラスに変更されることに強くなる(データストアがWeb、Fileなどに変わっても使える)。

このように理解したのですが、これで問題ないでしょうか。
183デフォルトの名無しさん:2007/08/04(土) 17:36:18
> (2)を採用する理由は、実装クラスの内部的な変更に強くなる(インタフェースのメソッドのみを使用している限り、利用する側の修正がない)。
> (3)を採用する理由は、実装クラスそのものが別のクラスに変更されることに強くなる(データストアがWeb、Fileなどに変わっても使える)。

(2) と (3) はほとんど同じことだと思うが。

(2) は DBAHelperImpl のメソッドで取得するとはいえ、
実際に何のクラスが返されてるか外からはわからないわけで。
別のクラスにすりかえることはカンタン。
184デフォルトの名無しさん:2007/08/04(土) 18:04:03
どなたかListについて教えていただきたいのですが

例えばArrayListでインスタンスを生成したListの変数があり
そのリストには1000個の要素(文字列)が入ってるとします。
もっと具体的に書くと文字列"AAA"と"BBB"と"CCC"が
それぞれ100個、400個、500個リストに格納されてるとして
(格納されてる文字列の並びは適当)
このときリストに格納されている各文字列の存在個数を高速に割り出す方法はありますでしょうか?

パフォーマンスを無視すれば配列のサイズ分だけ回せば可能ですが
それだと配列のサイズの二乗になってしまうので可変長データでやるにはかなり非現実的ですので
185デフォルトの名無しさん:2007/08/04(土) 18:14:53
>>184
ソートしてからなら1次でしょ。
StringはComparable<String>を実装してますよん。
186デフォルトの名無しさん:2007/08/04(土) 18:17:15
コピーしてマージソートしてから1週舐めるなら
文字列の種類が少ない場合に遅くなるかもしれんけどね。
187デフォルトの名無しさん:2007/08/04(土) 18:22:50
ハッシュマップで数えるとか。
for (String s : list) {
if (hashmap.containsKey(s)) {
hashmap.put(s, map.get(s) + 1);
} else {
hashmap.put(s, 1);
}
}
188デフォルトの名無しさん:2007/08/04(土) 18:26:02
TreeSetじゃだめなん?
189デフォルトの名無しさん:2007/08/04(土) 18:27:08
あーSetはだめだった。
190デフォルトの名無しさん:2007/08/04(土) 18:40:40
>>187の方法でやったことあるけど十分早かったような
191デフォルトの名無しさん:2007/08/04(土) 18:41:43
いま軽くコレクションクラスでソートしてみたら恐ろしく簡単にソートできたので
>>185様の案で行くことにしました。ありがとうございました。
192デフォルトの名無しさん:2007/08/04(土) 18:52:16
ソートする必要なければ TreeMap/TreeSet よりか HashMap/HashSet のが速いよ
Tree の利点はキーが常にソート順を維持されてるところ
Hash は順序不定
193デフォルトの名無しさん:2007/08/04(土) 18:58:05
それじゃ187様の方法で行きます。ありがとうございました
194デフォルトの名無しさん:2007/08/04(土) 19:12:46
ところでListの配列をHashMapに変換または簡単に作成する方法ある?
195デフォルトの名無しさん:2007/08/04(土) 19:32:16
キーはいかがなさいますの?
196デフォルトの名無しさん:2007/08/04(土) 19:44:35
やっぱソートして比較することにした
197デフォルトの名無しさん:2007/08/04(土) 19:50:02
Stringのマイクロベンチマークは、String.equalsが落とし穴になるよな。
例えば定数をコンソールやテキストから入力するなら、s1 == s2 で true になることは無い。
静的にデータを持つならnew String(CONST_STR)みたいにしとくことが必要になる。

こういう正しいテストデータ作成用のライブラリってない?
198デフォルトの名無しさん:2007/08/04(土) 19:53:25
>>197
何がやりたいか分からん
199デフォルトの名無しさん:2007/08/04(土) 19:54:20
マイクロベンチマークがしたい。
200デフォルトの名無しさん:2007/08/04(土) 20:01:55
>>180
コンソール側のページコードでどうにかならない?
201デフォルトの名無しさん:2007/08/04(土) 20:02:07
>new String(CONST_STR)みたいにしとくことが必要

ここがわからない。

>正しいテストデータ

ここもわからない。
202デフォルトの名無しさん:2007/08/04(土) 20:04:55
>>201
> ここがわからない。
>> 例えば定数をコンソールやテキストから入力するなら、s1 == s2 で true になることは無い。

言語仕様がわからないなら介入しなくていいから。
203デフォルトの名無しさん:2007/08/04(土) 20:05:37
equalsつかえよ
204デフォルトの名無しさん:2007/08/04(土) 20:08:27
迷惑だからキミは絡まないで。
205デフォルトの名無しさん:2007/08/04(土) 20:08:54
とりあえず>>197はアホ
206デフォルトの名無しさん:2007/08/04(土) 20:10:20
String.equalsの仕様を知らない馬鹿がなんか邪魔してくる・・・
207デフォルトの名無しさん:2007/08/04(土) 20:43:25
オブジェクトが一致する場合と一致しない場合で、equals が true になる場合の計算コストが違うことをいってるわけ?
トーシロの俺には何がなんだか(´・ω・`)
208197:2007/08/04(土) 20:46:30
事故解決しますた
209208:2007/08/04(土) 20:48:48
誤爆です><
210デフォルトの名無しさん:2007/08/04(土) 20:57:44
     /ニYニヽ
    /( ゚ )( ゚ )ヽ
   /::::⌒`´⌒::::\   でっていうwwwwwwww
  | ,-)___(-、|
  | l   |-┬-|  l |
   \   `ー'´   /
211デフォルトの名無しさん:2007/08/04(土) 21:55:52
存在個数なら、ListなめてMapにカウント突っ込んでいけばいいんじゃないの?
212デフォルトの名無しさん:2007/08/04(土) 22:36:53
パフォーマンスの問題は、実際にパフォーマンス上の問題が起きてボトルネックが発見できた場合に対処すればいい。
机上の空論でのパフォーマンス対処ほど無駄なものはない
213デフォルトの名無しさん:2007/08/04(土) 22:40:59
 /i /{/'⌒'}  }}Y/ / ,r-、ヽ,  /
 ノ、|、ヾ_,,ノ  ノ ノ{ ヾ {^')) }フ/ /          _/
   \ヽ、    彡'`、、  'ー' ノ //",,゙ """ /    ヽ 理  議  そ
 ヽ-、ミ‐-、、 、,r=‐'¬ー=、、,-‐'_ ヽ、    /ノ     /  解  論  の
 ミ/   ~          ̄ノ /\   /彡 ""  |/   で   し  な
  /   ,'    u ∪   ! ヽ  | i、゙ー''"彡     /|   き  て  め
  、、∪ / ノ /  _,,,...-‐‐ニ=,ノ,,/ ヽ、,,_ \   ,イ / |   な  い  方
  ニ、=!, l_. レr=-ニ二、,,,.-'"    ー、==-ヽ'"/ / ヽ   い  る  を
  、(・,)>ノ⌒  ∠,(・,)_く  ゙`   ヽ゚ノ`ー=、_ /// ∠  の  こ
    ̄/""゙   ヽ ̄ ̄  \ヽ      ̄ ̄ //   ノ  か  と
  u 〈  、     u   (ヽ          //     ̄ノ ?  も
    ヽ -'   lj     >、       //  /    ̄ヽ、
    /ヽー‐ 、      /'"´ 'i     //  /       ∨ヽ/
    ^゙"⌒ヾ、     ,i|  ,"__}    //  /  /
    ー-  -      ヽ_人`'′ //  /  /
               / i'゙' /-─‐‐''/_/_
   、         _/-‐ヽ、___,,,, -‐‐  ̄
   ー-、、,,__,-‐'//ノゝノ ノ  ヽ\
214デフォルトの名無しさん:2007/08/04(土) 22:45:30
>問題が起きてボトルネックが発見できた場合に対処すればいい

どこの腐れ初心者ですか?
あ、ここは初心者スレか。悪かった

>机上の空論でのパフォーマンス対処ほど無駄なものはない
何千件とデータ回す場合を考えたら目に見えて明らかなんだが頭大丈夫かお前?
215デフォルトの名無しさん:2007/08/04(土) 23:00:33
それは凄い動体視力
216デフォルトの名無しさん:2007/08/04(土) 23:20:25
>>214
マジレスしとけば、数千件程度でパフォーマンスに影響出るって何時の世代のマシンだよw
数千回DBアクセスでもすんの?
数千回IOでもすんの?
217デフォルトの名無しさん:2007/08/04(土) 23:24:49
じゃあ数百万件に変更な。これでいいか?
218デフォルトの名無しさん:2007/08/04(土) 23:27:47
>>217
素直にDB使え
219デフォルトの名無しさん:2007/08/04(土) 23:36:24
>>217
そりゃアルゴリズムか設計に問題あるだろ
220デフォルトの名無しさん:2007/08/04(土) 23:42:42
>184だが、Listに文字列を突っ込む時にMapにカウントしておく
適当に書いたのでコンパイルは通らないと思うがこんな感じだ
class StringList {
  List<String> list;
  Map<String, Integer> counter;
  public int add(String str) {
      Integer count = counter.get(str);
      if(count == null) {
          count = new Integer(0);
          counter.put(str, count);
      }
      count++;
      list.add(str);
      return count;
  }
}
最初から数えておけばいいってこと
221デフォルトの名無しさん:2007/08/04(土) 23:57:17
最初からカウントしてたら誰も質問しねぇわなww
オナニーコードもほどほどにな
222デフォルトの名無しさん:2007/08/05(日) 00:09:22
プッ
223デフォルトの名無しさん:2007/08/05(日) 00:34:48
longやintといったプリミティブ型の数値をbyte配列に変換するにはどうしたらいいでしょうか?
longの値をbyte[8]の配列に入れたいのです。

何か方法がありましたらぜひお教えください。
224デフォルトの名無しさん:2007/08/05(日) 00:38:27

くそ天皇 くそ天皇 くそ天皇 くそ天皇

いい加減死ねっつってんだろ屑ニートくそ天皇が

相変わらず病的な粘着っぷりだな屑ニートくそ天皇が

毎日毎日毎日粘着出来て良いでちゅねくそ天皇

くそ天皇さっさと死にやがれゴミが

東京に在住している精神病珍米糞ニートくそ天皇君の末路

さっさと精神病院逝くか首吊って逝くか選べや糞天皇が

早く死ねよ糞ニート天皇が

粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました
さっさと死ねやくそ天皇が

早く死ねっつってんだろ屑ニートくそ天皇が

お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや

とっと死に晒せや糞ニート天皇が
225デフォルトの名無しさん:2007/08/05(日) 00:40:17
どういうふうに変換したいのよ。

どういうふうでもいいなら、これでどう↓
long x = 0;
byte[] b = new byte[8];
new DataOutputStream(new ByteArrayOutputStream(b)).writeLong(x);
226デフォルトの名無しさん:2007/08/05(日) 00:42:33
>>223
long l = 1000;
byte b = (byte) l;
という形でダウンキャストを行う
そうすれば、上位ビットを無視するので、最下位のバイトが格納される。

上位バイトの取得は、ビットシフトを使えばOK
227デフォルトの名無しさん:2007/08/05(日) 00:42:42

くそ天皇 くそ天皇 くそ天皇 くそ天皇

いい加減死ねっつってんだろ屑ニートくそ天皇が

相変わらず病的な粘着っぷりだな屑ニートくそ天皇が

毎日毎日毎日粘着出来て良いでちゅねくそ天皇

くそ天皇さっさと死にやがれゴミが

東京に在住している精神病珍米糞ニートくそ天皇君の末路

さっさと精神病院逝くか首吊って逝くか選べや糞天皇が

早く死ねよ糞ニート天皇が

粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました
さっさと死ねやくそ天皇が

早く死ねっつってんだろ屑ニートくそ天皇が

お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや

とっと死に晒せや糞ニート天皇が
228デフォルトの名無しさん:2007/08/05(日) 00:42:51
byte[] binary = new byte[8];
ByteBuffer buff = ByteBuffer.wrap(binary);
buff.put(longValue)

もっといい方法が在るかもしれん。
あとJava内部のバイト配列はビッグエンディアンのはずだから気をつけること。
229デフォルトの名無しさん:2007/08/05(日) 01:01:41

くそ天皇 くそ天皇 くそ天皇 くそ天皇

いい加減死ねっつってんだろ屑ニートくそ天皇が

相変わらず病的な粘着っぷりだな屑ニートくそ天皇が

毎日毎日毎日粘着出来て良いでちゅねくそ天皇

くそ天皇さっさと死にやがれゴミが

東京に在住している精神病珍米糞ニートくそ天皇君の末路

さっさと精神病院逝くか首吊って逝くか選べや糞天皇が

早く死ねよ糞ニート天皇が

粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました
さっさと死ねやくそ天皇が

早く死ねっつってんだろ屑ニートくそ天皇が

お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや

とっと死に晒せや糞ニート天皇が
230デフォルトの名無しさん:2007/08/05(日) 01:07:06
初心者じゃないんだけど、axisとかlog4jとか使ってるフリーのJavaライブラリを
複数使ってるとjarの中にあるクラスがバージョン違いで実行エラーになるんだけど
どうしたらいいんだろう。

実行中にロードされたクラスファイル全部を見直して、モジュールの競合を解決してくれたり
何がいけないのかを判断してくれるツールないかなー?
231デフォルトの名無しさん:2007/08/05(日) 01:12:54
>>230
・競合ライブラリを最新のものに統一する。動かない部分は自前で修正
・それかクラスローダを分ける
232デフォルトの名無しさん:2007/08/05(日) 01:14:47
>>231
クラスローダを分けるとClassクラスとかでインスタンス生成するとき面倒じゃない?
競合ライブラリを最新のものにして、古いメソッドや仕様変更したAPI使ってたら、アウトだし。
233デフォルトの名無しさん:2007/08/05(日) 01:18:44
初心者じゃないって前振りはいったいなんだったのだろうか。
234デフォルトの名無しさん:2007/08/05(日) 01:21:31
class A<T> {
List<T> list = new ArrayList<T>;
public List<T> getList() {
return list;
}
}

みたいにクラスにリストを持たせたとき、

A<Hoge> a = new A<Hoge>();

に対して

a.getList.add(hoge1);

とか

a.getList.remove(hoge2);

って出来ないの?やってみたところできてないっぽいんだけど
235デフォルトの名無しさん:2007/08/05(日) 01:26:58
できるでしょ。

>a.getList.add(hoge1);

a.getList().add(hoge1);
236デフォルトの名無しさん:2007/08/05(日) 01:29:07
uho-勘違いしていました
お恥ずかしい(-_-)

>>235
回答ありがとうございました
237デフォルトの名無しさん:2007/08/05(日) 02:33:58
複数のスレッドから操作されるフィールドcountに
volatlieを付けるとする。どの程度保障されるもの?

while (count < 0) {

}
public void setCount() {
    this.count = count;
}
238デフォルトの名無しさん:2007/08/05(日) 02:35:06
仮引数書き忘れた。。。
239デフォルトの名無しさん:2007/08/05(日) 02:44:20
そんな意味不明なコード片じゃ何が言いたいのかわからん。

count++; みたいなコードは、volatile であってもアトミックにならない。他のスレッドが割り込む可能性がある。
つまり count++; をするスレッドが複数あったらだめ。
書き込むスレッドがひとつだけの場合は複数のスレッドから読んでも大丈夫。

・・・ていう話? それとも volatile の正確な定義が知りたいのん?
240デフォルトの名無しさん:2007/08/05(日) 02:45:56
Java の volatile はいい加減な実装になってる可能性がある、
って話を見たことがあるんだけど、今でもそうなの?
241デフォルトの名無しさん:2007/08/05(日) 02:55:30
可能性の話をされてもなぁ。
1.4 以前と 5.0 以降で volatile の仕様が変わったという話はある。
少なくとも 5.0 以降は仕様どおり実装されてんじゃない? Sun の VM では。
でなきゃ、java.util.concurrent.* あたりが今ごろ異常動作しまくりのはず。

詳しい話はこのへんでもどうぞ↓
http://www-06.ibm.com/jp/developerworks/java/040416/j_j-jtp02244.html
http://www-06.ibm.com/jp/developerworks/java/040514/j_j-jtp03304.html
http://www-06.ibm.com/jp/developerworks/java/library/j-jtp06197.shtml
242223:2007/08/05(日) 03:25:44
>>225,226,228
回答ありがとうございます。
勉強になりました。

昔ならったコボルでは
long l=0x0123456789abcdefL;
byte[] b=new byte[8];
b=l;
で、lをbに代入すると
[01][23][45][67][89][ab][cd][ef]
こんな感じにカパッと当てはまったなー、javaではどうやればいいんだろうと思ったしだいです。
ビッグエンディアンには注意します。
243デフォルトの名無しさん:2007/08/05(日) 04:02:50
Java内部がビッグエンディアンというか、
Data*StreamやデフォルトのByteBufferがそう補正してるってのが正しい?
244デフォルトの名無しさん:2007/08/05(日) 04:09:43
正しくない。
というか意味がわからん

245デフォルトの名無しさん:2007/08/05(日) 04:40:07
意味が分からないなら書くな。てかJavaDocに載ってる。
246デフォルトの名無しさん:2007/08/05(日) 05:17:10
最近byteとintの単項数値昇格ネタ増えたな。
俺自身バイト指向でデータ扱うことが減ったのですっかり忘れてた。
"& 0xFF"で下位bitのみとれって話だよね。
247デフォルトの名無しさん:2007/08/05(日) 09:05:18
Jakarta CommomsのHttpClientについてのいいページない?
ググったけど、情報量が足りないページばかり。
248デフォルトの名無しさん:2007/08/05(日) 09:22:41
>>247
情報量って。。。本家にいくらでもあるだろ
249デフォルトの名無しさん:2007/08/05(日) 09:27:21
ファイルの入出力をしているのですが、

もしプログラムと同じディレクトリに入出力用ファイルあれば、
そのファイルから中身を取り出し・加工して再びそのファイルに書き出す。
もし無ければ、新しいファイルを作成して、そこに書き出す。

という用に行いたいのですがどの様にしたら良いでしょうか?
教えてください。
250デフォルトの名無しさん:2007/08/05(日) 09:50:44
>>249
どのJAVAの入門書でもサンプルコードが載ってるだろ
ググれば山ほどあるだろ
251デフォルトの名無しさん:2007/08/05(日) 11:27:43
>>242
時代の流れだな
Javaでバイトを意識してデータを扱うケースは稀だし、知らない技術者も多い
252デフォルトの名無しさん:2007/08/05(日) 13:02:22
String型変数に入っている(2バイト)文字の文字列を
漢字、ひらがな、カタカナ、その他記号などといった種類別に分割するということを

「プログラミング言語Javaに関する質問スレです。」
         ↓
「プログラミング」「言語」「Java」「に」「関」「する」「質問」「スレ」「です」「。」

Javaで(効率よく)やるにはどのようにしたらよいでしょうか?
(というか、文字種別をどうやって判断したらよいでしょうか?)
文字コードによる問題などもありますか?
253デフォルトの名無しさん:2007/08/05(日) 13:07:50
ひらがなとカタカナは順序どおり並んでるらしいからif thenでやるのが簡単っぽいけど
254デフォルトの名無しさん:2007/08/05(日) 13:10:03
漢字・ひらがななら3バイトだと思うのは置いといて、
自然言語解析するか単純にテキストそう舐めして用意しといた単語リストと照らすか。
日本語はRPNなのでry

言い出したら切りがないな。
255デフォルトの名無しさん:2007/08/05(日) 13:12:39
UFT-16なんだから、全部2バイトだろ
256デフォルトの名無しさん:2007/08/05(日) 13:14:09
volatlieの件だけど、1.5ならいけそうです。
ありがとう、検証してみます。
1〜400のスレッドから操作を受けてるみたい
257デフォルトの名無しさん:2007/08/05(日) 13:36:33
>>256
1.5ならば、AtomicIntegerの使用を検討してみたら?
アトミックな操作が簡単に出来る

ただ、そもそもスレッド周りの勉強をした上でスレッドに手を出した方がいい
258デフォルトの名無しさん:2007/08/05(日) 13:39:45
>>252
効率よくやる方法はかなり難しいのではないか?
英語のように単語間がスペースで区切られているなら楽だろうが・・・

ぱっと思いつくのは、カタカナ・ひらがな・半角英数(といくつかの記号)は正規表現かなにかで定義
漢字で抽出するのは難しすぎるので「その他」で我慢する
後は、頭から崩して連結していくしかないと思う

下手に文字コードを数値で表現した所で、バグは増えても実行性能は大してかわらなそ
259デフォルトの名無しさん:2007/08/05(日) 13:40:16
スレッドに手を出さなきゃスレッドの勉強なんぞできないだろ
このスレの自称中級者どもはうざいのばっかだな・・・
260デフォルトの名無しさん:2007/08/05(日) 13:51:02
お前は新しい技術をコピペでもして使ってから勉強するのか?
動けばいいという低レベルなマの典型だな
261デフォルトの名無しさん:2007/08/05(日) 13:56:40
お前のコードはバグだらけなんだろうな。
普通は模範的なコードを見て覚えるもんだ。
262デフォルトの名無しさん:2007/08/05(日) 13:58:18
模範的なコードを意味も含めて理解することが勉強ではないのか?w
263デフォルトの名無しさん:2007/08/05(日) 13:59:59
>>262
お前自身が何も理解してなさそうだな。この流れをみるに。
264デフォルトの名無しさん:2007/08/05(日) 14:02:00
>260の頭が悪いということは解った
265デフォルトの名無しさん:2007/08/05(日) 14:02:53
初学者がvolatileって単語にたどり着いてる時点でGoサインはでてるだろ
いじって覚える絶好のころあいだと思うのだが違うのか?
266デフォルトの名無しさん:2007/08/05(日) 14:27:56
別の人がさわらないプログラムだからと言って、クラス変数を全てpublicにしたら怒られそうですが。

public class Hogegege
{
  private String name__;

  public String getName()
  {
    return new String(name__);
  }
}

っていうように、クラス変数を要求されたときに
新たに生成したものを返して絶対に変更できないようにした方がいいんでしょうか?
それとも単に return name__; でOK?
267デフォルトの名無しさん:2007/08/05(日) 14:32:10
String は元から絶対に変更できないから単に return でOK。
変更できるようなオブジェクト (普通の配列とか) は clone した方がいいこともある。
268デフォルトの名無しさん:2007/08/05(日) 14:40:46
StringやIntegerなどは不変クラスと呼ばれる値オブジェクトとして理想的な構造を持ってる。

例えばOSごとの改行コードを返すクラスがあるとして、
それがchar[]で返されるものなら、それは return clCode.clone(); とかすべき。
コレクションならCollections.unmodifiable系メソッドでラップするのもよし。
269デフォルトの名無しさん:2007/08/05(日) 14:50:07
定数にコレクションを使うときに下のようにすることもある。

public static final Set<String> SUPPORTED_LANGUAGE;
static {
    Set<String> set = new LinkedHashSet<String>();
    set.add("ja");
    set.add("en");
    SUPPORTED_LANGUAGE = Collections.unmodifiableSet(set).;
}
270デフォルトの名無しさん:2007/08/05(日) 14:52:08
要求された側が何をしたいかにもよる
要求された側も何をさせてOKかを考える
その上で生で公開させてもいいし、防御的にコピーを返してもいい
結局は要求次第だが、なるべくは防御的にするのがセオリー

Stringに関しては>267,268の説明の通り
たが、char[]をコピーするか否かは要件次第なので、一概にコピーするべきとは言えない
271デフォルトの名無しさん:2007/08/05(日) 15:41:35
変なのが騒いでるが
だれか満を持してネタ投下した>>255に突っ込んでやれよw

UTF系は固定長じゃないぞ。
272デフォルトの名無しさん:2007/08/05(日) 16:15:11
UTF-32は固定長だが、UTFじゃなかったのか。
273デフォルトの名無しさん:2007/08/05(日) 17:10:30
UTF-32は21bitになったUnicode3.1の全コードを単一のbit長で表現するために
後から作られたから可変長にする必要がないだけだよ。
アレが特殊。21bit範囲内はUCS-4と互換性を取るって目的もあるし。

可変長より固定長の方が扱いやすいからbitの無駄使いより扱いやすさを優先した符号化方式。

UTFは元来可変長で表すもの。
274デフォルトの名無しさん:2007/08/05(日) 17:13:49
サロゲートがそもそも後付けだろ
275132:2007/08/05(日) 17:31:38
連結って意味だったんですね^^;
謎が解けましたorz

ありがとうございました。
276デフォルトの名無しさん:2007/08/05(日) 17:48:43
サロゲートが後付けって言うかUnicode作り出した段階で
すでに16bitじゃ足りないのは分かってたけどそれに対処したのが遅れただけ。
実装側の互換性の問題とかがあったから。
277デフォルトの名無しさん:2007/08/05(日) 18:02:43
StringBuffer key = new StringBuffer();
Random random = new Random(タネ);

for(int index = 0;index < 20;index ++)
{
  key.append((char)('A' + random.nextInt() % 26));
}

ランダムなAからZまでの文字を20個追加したいのですが、
変な文字列が連結されます。何がいけないのでしょうか?
おしえてください。
278デフォルトの名無しさん:2007/08/05(日) 18:08:47
>>277
nextInt()は32ビット乱数のはずだから負数も取った気がした。
0と自然数だけ欲しければnextInt(26)ってやれば0〜25をとるよ。
279デフォルトの名無しさん:2007/08/05(日) 18:10:52
>>277
出来ました!どうもありがとうございます。
280デフォルトの名無しさん:2007/08/05(日) 18:13:04
>>277
random.nextInt() でマイナスも含まれるから。
試しにrandom.nextInt() だけ出力してみるといい

random.nextInt() にはオーバーロードメソッドで、0からnまでの乱数を返すrandom.nextInt(n) がある
random.nextInt(26) で試せば期待した結果になると思われ
281デフォルトの名無しさん:2007/08/05(日) 18:23:18
アンカーミスった
>>278 >>280
思い通りの動作が出来ました、どうもありがとうございますm(_ _)m
282デフォルトの名無しさん:2007/08/05(日) 19:52:27
>>276
サロゲートペアはUnicode誕生から5年後に導入されたんだが。
適当なこと書かないでおくれよw
283デフォルトの名無しさん:2007/08/05(日) 21:45:02
小生、Eclipseを使って開発しているのですが
本日「BufferUnderflowException」なるものが発生しました。
ググってみたところ「相対「get」操作がソースバッファのリミットに達したときスローされる、チェックされない例外です。」
との記述があったのですがよく意味がわかりませんでした。
ここでいうソースバッファのリミットとはコンパイラーのメモリのことを指しているのでしょうか?
もしメモリ関連のサイズのことを指しているのでしたらどこで設定できるのかどなたか教えていただけないでしょうか?
ちなみにEclipseの設定→Java→インストール済みのJREに指定しているのは最新のJRE1.6.0です。
284デフォルトの名無しさん:2007/08/05(日) 21:53:47
いや。
java.nio.ByteBufferあたりのクラスのget系メソッドでサイズをオーバーして読み込んでしまった意味。
配列で範囲外のインデックスを使ったっていうのに近い。 単にプログラミングミス。
285デフォルトの名無しさん:2007/08/05(日) 22:04:45
>>283
相対操作はpositionが読み込んだ値のバイト数分先に進むんだよ。
あと何バイト読み込めるかはremainingで確認できる。

構造体チックに各メンバ変数の並びを仮定して使うなら、0, 4, 8みたく
プリミティブごとのバイト数を足して絶対アクセスすればいい。
286デフォルトの名無しさん:2007/08/05(日) 22:10:18
プログラムミスだなんて・・・・そんな・・・
実績のある会社が提供してる有料のライブラリーに含まれるメソッドを使ってたんだけど
使い方がわるかったのかなぁ・・・あーもう嫌ぽ
287デフォルトの名無しさん:2007/08/05(日) 22:20:12
すいません、javaである処理を実行すると
コンソールの初めあたりに以下のようなエラーメッセージが出て
VM?ごと処理落ちしてしまいます。
しかもこれは必ずは発生するというわけではなくて不定期に出てしまいます。
不定期ですが処理を繰り返しているとすぐ発生する感じです。
JREのランタイムも最新のものを指定いるのですが相変わらず発生します。
どなたかわかる方がいらっしゃいましたら教えてください
「An unexpected error has been detected by Java Runtime Environment」
288デフォルトの名無しさん:2007/08/05(日) 22:29:50
エラーログ嫁
289デフォルトの名無しさん:2007/08/05(日) 22:39:56
申し訳ありません。エラーログ?を読んでもさっぱりわかりませんでした。
通常のログとは違ってこの処理落ちの場合にのみ生成されるログをのことだと思いますが
なんか「Thread」「Process」「System」といった感じにわけられて情報を
ダンプしているような感じに見受けられましたがエラー原因となるような記述は
書かれているのかいないのかサパーリでした。なにか読み方があるのでしたら教えてください
290デフォルトの名無しさん:2007/08/05(日) 23:03:08
http://forum.java.sun.com/thread.jspa?threadID=777177
こういう感じのやつか?

最初のほうの#がついた行をうpしてみ
291デフォルトの名無しさん:2007/08/05(日) 23:27:01
あぁそれですわ。でもログは職場のマスィーンにあるので今うpできんのです申し訳ないです
292デフォルトの名無しさん:2007/08/06(月) 00:13:57
>>286
ソースコード読んでみろ
実績のある会社ならばソースコードくらい提供できる
出来ないとか抜かすならば金払う必要なし
逆コンパイルしてバグ見つけて訴訟もおk
293デフォルトの名無しさん:2007/08/06(月) 00:42:55
>>287
それってJavaからネイティブモジュール読み込んでます?*.dllファイルとか?
それだともしかしたら、PCの相性が悪いだけかもしれません。
自分もJNIを用いたプログラムでブルースクリーン出した事がある。しかも不定期。。

294デフォルトの名無しさん:2007/08/06(月) 01:06:59
ネイティブ使用ならVM引数にXcheck:jniをつけてみる
しかし>>287のよーな現象に陥ったことがない為役にたつかはわかんない。
295デフォルトの名無しさん:2007/08/06(月) 01:15:05
>>286
まぁその会社のサポート窓口に訊いてみれば?
使い方の問題にせよバグにせよ、なんらかの返答はあるでしょ。
296デフォルトの名無しさん:2007/08/06(月) 01:16:58
JDI でオブジェクト生成を監視するのってどうすれば良いとおもう?
297デフォルトの名無しさん:2007/08/06(月) 03:02:37
>>282
お前は日本語理解しような。

16bitじゃ足りないのは初期段階から分かってたけど実装側を無視できなかったから"Unicode誕生から5年後に導入された"んだろうが。

だいたいjavaなら普段は拡張面無視してるからUTF-16で16bit単位の可変長だろうが。

固定長なのはUCS-2ですよw
298デフォルトの名無しさん:2007/08/06(月) 08:10:39
UCS-2 UCS-4 っていうのは文字集合であってエンコーディングじゃないんでは?
299デフォルトの名無しさん:2007/08/06(月) 12:16:16
>>252
単純にやりたいなら、java.text.BreakIterator#getWordInstance()
本格的にやりたいなら、形態素解析が必要。
300デフォルトの名無しさん:2007/08/06(月) 18:37:52
//Sample1
AAAAA

 *

BBBBB

//Sample2
XXXXX
YYYYY
ZZZZZ
という中身のSample1.txtとうファイルを読み込んで
*の部分にSample2.txtというファイルの中身を書き加えて
Sample3.txtというファイルに書き込むとすればどうやって記述すればよいのか
教えてください。

//Sample3
AAAAA

XXXXX
YYYYY
ZZZZZ

BBBBB
301デフォルトの名無しさん:2007/08/06(月) 18:41:13
>>300
1. Sample1.txtを読み込む
2. Sample2.txtを読み込む
3. Sample3.txt に Sample1.txt と Sample2.txt の内容を書き込む
302デフォルトの名無しさん:2007/08/06(月) 18:46:53
Sample1.txtを少しずつ読む
*かどうか調べる
 *ならSample2.txtの内容をSample3.txtに書く
 *でないなら今まで読んだSample1.txtの内容をSample3.txtに書く
Sample1.txtの終わりまで繰り返す
303デフォルトの名無しさん:2007/08/06(月) 19:30:00
>>301
>>302
ありがとうございます
やってみます
304デフォルトの名無しさん:2007/08/07(火) 01:38:48
あの、関数の引数にfinalは付けるべきでしょうか。
関数内では値を変えることがないし変わって欲しくない場合、
finalを付けた方がいいとは思うんですが、
全てに付けているとパラメータの部分が長くなってしまい見づらいといえば見づらいです。
常識的にはどうするべきなんでしょうか。
305デフォルトの名無しさん:2007/08/07(火) 01:49:10
>>304
限りなく好みかもしれない場所の1つだな
finalにした所でオブジェクトの内部は変更される可能性はある
引数に対して再代入する事自体を禁止し、FindBugsアタリでチェックしておけば不要とも言える
(逆に言えば、メソッド内で引数への再代入を防止する為にfinalを付ける、だがw)

個人的には不要派
306デフォルトの名無しさん:2007/08/07(火) 01:50:10
final付ける場合と付けない場合もあるし、
つけなくてはエラーになるときがある。
べつに無理につける必要はないと思うのだが....
307デフォルトの名無しさん:2007/08/07(火) 01:52:40
>>304
プロジェクトで決められてたら、それに従えばいい。そうでなければ好きにすれば良い。

経験的には手作業で final 付けてると、そのうち嫌気がさして止める。
308デフォルトの名無しさん:2007/08/07(火) 02:06:45
一番最初にやるHelloWorldなんですけどテキストに書いて
それをコンパイルしようとしたんですけど
「javacは内部コマンドまたは外部コマンド、操作可能なプログラム
またはバッチファイルとして認識されていません」となってしまいます。
どうしたらコンパイルできるようになりますか?
309デフォルトの名無しさん:2007/08/07(火) 02:08:35
環境変数でググれ
310デフォルトの名無しさん:2007/08/07(火) 02:10:14
>>306
final付けなくてはエラーになると本気で思っているならば勉強不足
それは匿名クラスなどに参照を渡しているからだろう
311デフォルトの名無しさん:2007/08/07(火) 02:10:26
環境変数PATHを設定する
312308:2007/08/07(火) 02:23:25
とりあえずみんなが指摘してくれた通り環境変数見てみたんだけど多分あってると思う。
;C:\Program Files\Java\jdk1,5,0\binをpathに加えればいいんだよね?
313デフォルトの名無しさん:2007/08/07(火) 02:23:54
JDBCでのデータベース接続ができなくて困っています。以下のように作業を進めました。

postgres@debian$ createdb hellodb

------Connector.java------
package db;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;

public final class Connector {
private static Connection conn;

static {
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException ex) {
throw new InternalError(ex.getMessage());
}
}

private Connector() {
}

public static Connection open() throws SQLException {
return DriverManager.getConnection("jdbc:postgresql://debian/hellodb", "postgres", "");
}
}
314308:2007/08/07(火) 02:26:07
やっぱり駄目だ・・・誰か助けてくれ
315デフォルトの名無しさん:2007/08/07(火) 02:27:05
カンマとピリオド再確認
316デフォルトの名無しさん:2007/08/07(火) 02:33:38
あと、本当に 1.5.0 かどうかも。
実は 1.6.0 をインストールしてましたとか。
317デフォルトの名無しさん:2007/08/07(火) 02:34:29
------ConnectorTest.java------
package db;

public class ConnectorTest {
public static void main(String[] args) {
System.out.println(Connector.open());
}
}

postgres@debian$ java -cp .:/usr/share/java/postgresql.jar db.ConnectorTest

------エラーメッセージ------
org.postgresql.util.PSQLException: Connection refused.
Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

db名、ユーザ名、パスワード名は大丈夫だと思うんですが・・・。
318デフォルトの名無しさん:2007/08/07(火) 02:50:20
>>312
> ;C:\Program Files\Java\jdk1,5,0\binをpathに加えればいいんだよね?
を加えちゃいかん
;"C:\Program Files\Java\jdk1,5,0\bin"
空白文字の扱いを知らんのか
319318:2007/08/07(火) 02:52:26
しかもピリオドでなくてカンマやんw
;"C:\Program Files\Java\jdk1.5.0\bin"
320デフォルトの名無しさん:2007/08/07(火) 02:53:01
>>312
pathに加えた手順を説明してみて
321デフォルトの名無しさん:2007/08/07(火) 03:01:01
java的にはfinalな引数を導入したのは内部クラスから参照するためって事を知ってる前提で話してるんだよね?

人に聞くくらいなら内部クラスない場合は好み程度、と考えておけば良いんじゃない?

自分からfinal付ける明白な理由もなさそうだし。
322308:2007/08/07(火) 03:04:37
駄目だ・・・何でできないんだ?とりあえず315さんにいわれたようにカンマとピリオドはおk
そして318さんに言われたとおりに;"C:\Program Files\Java\jdk1.5.0\binってPathのあとに
つけて今にいたりました>>320
323デフォルトの名無しさん:2007/08/07(火) 03:08:53
PATHをマイコンピュータのプロパティから変更してるなら、
プロパティをOK押して閉じてからコマンドプロンプトをいったん閉じて開きなおす。
324デフォルトの名無しさん:2007/08/07(火) 03:10:35
そもそもC:\Program Files\Java\jdk1.5.0\binってフォルダの中にjavac.exeがあるのかね?
325デフォルトの名無しさん:2007/08/07(火) 03:13:11
>>322
ちなみにうちの環境だと
C:\Program Files (x86)\Java\jdk1.5.0_01\bin
にjavac.exeはある
326308:2007/08/07(火) 03:24:33
なんか頭がもうパニックだ・・・とりあえず本に書いてある通りに書くと
class Examplel {
public static void main(String args[]) {
System.out.println("This is the output from Examplel");
}
}
をかいてそれをファイル名はExamplel.javaにして保存。実行するためにコマンド開いてjavac Examplel.java入力するらしい。
もう俺にはお手上げです。
327デフォルトの名無しさん:2007/08/07(火) 03:28:25
>>326
それは関係無い

コマンドプロンプトから
"C:\Program Files\Java\jdk1.5.0\bin\javac.exe" -version
って入れて Enter 押して結果を教えなさい
328308:2007/08/07(火) 03:31:03
指定されたパスが見つかりませんたって出ました
329デフォルトの名無しさん:2007/08/07(火) 03:31:06
ClassPath通してる?
330308:2007/08/07(火) 03:33:52
よくわからない
331デフォルトの名無しさん:2007/08/07(火) 03:33:54
C:\Program Files\Java\jdk1.5.0\libの中の
jarファイルにクラスパス通してないんじゃないの?
332デフォルトの名無しさん:2007/08/07(火) 03:34:39
>>328
マイコンピュータ開いてCドライブ開いて・・・って辿っていってjavac.exeのあるフォルダ確認して。
Windowsの種類やJDKのバージョンによってこのフォルダのパスは変わるから。
333デフォルトの名無しさん:2007/08/07(火) 03:35:11
よく釣りに付き合ってますねー
肝心なとこスルーして答えてないしメチャクチャ釣り臭いんですけど
334デフォルトの名無しさん:2007/08/07(火) 03:36:37
>>333は教えることもスルーすることもできないゴミ
335デフォルトの名無しさん:2007/08/07(火) 03:36:45
>>328
ってことは、原因は 『C:\Program Files\Java\jdk1.5.0 に Java SDK をインストールしていない』 ってことになるんだけど、
[1] ダウンロードした SDK の確認(JDK と JRE と間違えてないか)
[2] インストール場所の確認
をお願い
336デフォルトの名無しさん:2007/08/07(火) 03:36:45
釣りだべ
337308:2007/08/07(火) 03:45:11
ごめん釣りじゃなくて本当にわかんないんだよ・・・喧嘩しないでくれ
>>332よくわからない調べ方が。>>335も調べ方がわからない。本当にすまん。初心者なんだ。
338デフォルトの名無しさん:2007/08/07(火) 03:45:46
>>337
次の各問いに○か×で答えよ
1.C:\はあるか
2.C:\Program Filesはあるか
3.C:\Program Files\Javaはあるか
4.C:\Program Files\Java\jdk1.5.0はあるか
5.C:\Program Files\Java\jdk1.5.0\binはあるか
6.C:\Program Files\Java\jdk1.5.0\bin\javac.exeはあるか
339デフォルトの名無しさん:2007/08/07(火) 03:51:11
もうjavac.exeをハードディスクの中で検索したら?
340308:2007/08/07(火) 03:55:34
1○
2○
すまんもうこれ以上わからん・・・
341308:2007/08/07(火) 03:56:15
>>339
ごめん。どうすればいいですか?
342デフォルトの名無しさん:2007/08/07(火) 03:56:28
実はJDKをインストールしていませんでしたというオチ?
343デフォルトの名無しさん:2007/08/07(火) 03:57:58
>>340
じゃあJDKをインストールしてないんじゃないの?
これはPCに元から入ってるものじゃないよ
どこからダウンロードした?
そもそもダウンロードすらしてない?
344308:2007/08/07(火) 03:58:09
いや本についてる奴インストールしたと思う。
345デフォルトの名無しさん:2007/08/07(火) 03:58:13
>>341
たぶんね、まじめな話パソコンに慣れてからのほうが良いと思うんだ。
門前払いする気は無いんだけど、PC の知識はどうしても必要になるから、今のままだと今後さらに悩むことになる。

とりあえず寝れ。寝て起きてまた考えろ。
346デフォルトの名無しさん:2007/08/07(火) 03:59:20
>>341
HDD内のファイル検索すらしたことが無いのか?
プログラミングはかなり時期尚早だよ。
347308:2007/08/07(火) 04:01:15
>>345
なんかみんなの話聞いてたら確かに自分は早すぎるなと思ったわ・・・_| ̄|○
とりあえず今日はもう一回インストールしてみて寝ます。ありがとうございました。
348デフォルトの名無しさん:2007/08/07(火) 04:03:34
>>347
インストールの途中で出てくる説明はよく読んでね
特にインストール先のフォルダを指定するところがあるだろうからそこはメモしておくといい
349デフォルトの名無しさん:2007/08/07(火) 04:03:45
>>347
今みたいに、Java を勉強する過程で PC についての知識を深めるという荒業もある
じっくりやれば良いと思うぜー
350308:2007/08/07(火) 04:16:29
>>349
>>348
ありがとうございます。まだ基本的な知識が抜けているので自分で勉強しながらROMしようと思います。
質問できるレベルに達したらまた顔をだそうと思います。
351デフォルトの名無しさん:2007/08/07(火) 04:23:37
>>304
引数につけた final はメソッドを使う側からは見えないので、
完全にメソッドの実装側の都合となるためそれほど重要でない。

>全てに付けているとパラメータの部分が長くなってしまい見づらいといえば見づらいです。
ここ重要。使い捨てでない限り、ソースコードは人が読む文書。しかも、唯一完全な文書。

意図せず誤ってパラメータへの代入を防ぐメリットとのトレードオフだが、
それが一目で分からないような複雑なメソッドはむしろリファクタリングの対象と思われ。

不要派が多いんじゃないかな。自分も不要派
352351:2007/08/07(火) 04:42:09
補足。

引数に final をつけることにより、
ソースコードの読み手にその意図を伝える役割があるが、
そもそも、引数に代入を行うこと自体が混乱を招くことなので
通常やらない(むしろ、そのようなコードはリファクタリング対象)。

したがって、この意味でも、引数に final をつける意義は薄れている
というのが、不要派のおいらの個人的意見
353デフォルトの名無しさん:2007/08/07(火) 07:35:11
C++でもconstを引数に使うのはconst char *のようなケースだけだものね。
354デフォルトの名無しさん:2007/08/07(火) 07:44:14
いやC++のconst参照渡しは中身を書き換えないところまで保障するから別だとおもうが……
355デフォルトの名無しさん:2007/08/07(火) 08:09:04
char * const s といった使い方はまずしないということだろ。
javaでfinalにした場合はこの意味だから。
356デフォルトの名無しさん:2007/08/07(火) 09:32:08
>>352
引数に代入行うと混乱するぐらい長いメソッド自体の方をリファクタリング対象にした方が良いような。
短いメソッドなら引数に代入されても大して混乱しないし。
357デフォルトの名無しさん:2007/08/07(火) 09:52:57
>>356
長いメソッド云々の前に引数に代入すんな、って話だと思う
どっちも糞コードなのは間違いないが、長いメソッドは可読性が低いだけ、引数に再代入するってのはバグと言ってもいいだろう
358デフォルトの名無しさん:2007/08/07(火) 10:04:10
Javaにもいい加減constとfriendクラスが欲しいです
359デフォルトの名無しさん:2007/08/07(火) 10:16:01
>>357
なんで引数に代入しただけでバグになるんだ……

変更前の引数の値を期待してるところが残ってるのに、引数変更しちゃうと
バグの元になるってんならわからなくもないけど、短いメソッドなら修正容易だし。
360デフォルトの名無しさん:2007/08/07(火) 10:17:14
http://www.vipper.net/vip299169.jpg
この中で削除して良い物は在りますか?
361デフォルトの名無しさん:2007/08/07(火) 10:25:39
>>360
JRE が一つでもあればいいのなら、赤線の枠内は全部削除して良い。
J2RE5 が一つはあった方が良いなら、赤線の枠内は
J2SE Runtime Environment 5.0 update11 残して全部削除。
362デフォルトの名無しさん:2007/08/07(火) 10:37:28
>>359
限りなくバグに近いだろう、例外の握りつぶしとかと同じレベル
極端な話、引数は自然にfinalでもいいだろうと思う
363デフォルトの名無しさん:2007/08/07(火) 10:39:32
ついでに、6 の Update 2 があるんだから、
6 の Update 1 も削除していいんじゃない?
364デフォルトの名無しさん:2007/08/07(火) 10:40:02
理由も無しに「バグに近い」とか言われても。夏だなぁ、としか。
365デフォルトの名無しさん:2007/08/07(火) 10:50:36
理由も解らないなんて夏だな
366デフォルトの名無しさん:2007/08/07(火) 10:50:39
>>362にとってはバグなんだろ
そっとしといてやれ
367デフォルトの名無しさん:2007/08/07(火) 10:59:07
どっちでもいいんだけど、そもそもバグの定義ってなんだ?
368デフォルトの名無しさん:2007/08/07(火) 12:25:51
質問よろしいでしょうか。

ある文字列をキーに検索を行うプログラムを作っています。
その文字列のキーをワイルドカード(一文字マッチは"?"で行います)でも使用できるようにしたいと思い、文字列を末尾から"?"に置換するメソッドを作りました。

String value = "AAAAA";
int len = value.length();
for (int i = 0; i < len; i++) {
  String s = exec(value, len, i);
  // 検索処理
}



public String exec(String _s, int _len, int _i) throws Exception {
  StringBuffer sb = null;
  try {
    sb = new StringBuffer(_s.substring(0, _len - _i));
    while (sb.length() < _len) {
      sb.append("?");
    }
    return sb.toString();
  } catch(Exception e) {
    throw e;
  }
}
369デフォルトの名無しさん:2007/08/07(火) 12:26:05
自分の思った通りにならなくて駄々をこねる状態にさせるもの
370デフォルトの名無しさん:2007/08/07(火) 12:27:55
これでAAAAA, AAAA?, AAA??, AA???, A????という文字列から検索を行えますが、
このメソッドを以下のような文字列を返すメソッドにしたいと思います。


パラメータが"ABC"なら、(2 ** 文字列長)回のループで以下の文字列を順番に返す。

1回目:ABC
2回目:AB?
3回目:A?C
4回目:A??
5回目:?BC
6回目:?B?
7回目:??C
8回目:???

どなたかご教示頂けないでしょうか。
371デフォルトの名無しさん:2007/08/07(火) 12:35:51
>>370
32文字以下に限るけど、

2^n 回ループで、iが媒介変数だとして、
「iのmビット目が立っていたらm文字目を?に置き換える」という処理を
n回やればいいんでは。
372デフォルトの名無しさん:2007/08/07(火) 13:12:42
buildSearchKey とかが良いと思うんだ
373デフォルトの名無しさん:2007/08/07(火) 13:23:56
>>370
import java.math.BigInteger;
import java.util.*;
public class A implements Iterable<String> {
private String s;
public A(String s) { this.s = s; }
public Iterator<String> iterator() { return new B(); }
private class B implements Iterator<String> {
private BigInteger i = BigInteger.ZERO;
private final BigInteger m = BigInteger.valueOf(2).pow(s.length());
private final int len = s.length();
public boolean hasNext() { return i.compareTo(m) < 0; }
public String next() {
if (i.compareTo(m) >= 0) throw new NoSuchElementException();
StringBuilder sb = new StringBuilder(s);
for (int j = 0; j < len; j++) if (i.testBit(j)) sb.setCharAt(len - j - 1, '?');
i = i.add(BigInteger.ONE);
return sb.toString();
}
public void remove() { throw new UnsupportedOperationException(); }
}
}
374デフォルトの名無しさん:2007/08/07(火) 13:24:37
使い方はこんな感じで
import java.util.*;
public class C {
public static void main(String[] args) {
Iterator<String> iterator = new A("ABCD").iterator();
while (iterator.hasNext()) {
String s = iterator.next();
System.out.println(s);//本当はsを使って検索処理
}
}
}
375デフォルトの名無しさん:2007/08/07(火) 13:28:05
簡単に書くならこうでもいい
for (String s : new A("ABCD")) System.out.println(s);
376デフォルトの名無しさん:2007/08/07(火) 14:18:24
引数への再代入は否定せんが仮引数名から
(変数の役割が)意味が変わる再代入は反対だな。アレは書いた奴にしか読めん。

friend欲しいのは設計が悪い。
constはjavaでは無意味。
377デフォルトの名無しさん:2007/08/07(火) 14:34:18
constっぽいものはJSR-308のサンプルにある
@Readonlyが追加されたら近い事が出来るようになるかも?
378デフォルトの名無しさん:2007/08/07(火) 14:44:21
>@Readonlyが追加されたら近い事が出来るようになるかも?
generics組み合わせたりすると型名がやたら長くなるのはいただけないけど、
コーディングミスを考えるとやむを得ないか……
379368, 370:2007/08/07(火) 18:02:05
>ご回答下さった各位様
ありがとうございます。
少々違った形での実装となりそうですが、無事に進められそうです。

// 検索キーの桁数を考慮しないと酷い性能に……orz
380デフォルトの名無しさん:2007/08/07(火) 18:09:40
なんかよくわからんが、元の検索キーから正規表現を構築してそれで検索した方が簡単じゃない?
381デフォルトの名無しさん:2007/08/07(火) 19:42:29
集計やイテレータを担う変数など、変化することが前提であるもの以外は、
引数を含むローカル変数は基本的に再代入禁止にした方がよいし、そうすることが可能。

外科手術に例えると、高度な手術は可能な限り無菌状態を保つことで初めて可能になる
と、どこかのお偉いさんが言ってたヨ

また、このリファクタリングは、他のリファクタリングを行う際の前処理にもなる場合もある。
例えば、ローカル変数の内容をメソッドから取り出すようにリファクタリングする際、
内容がメソッドの場所によって変わってたら困る。
382デフォルトの名無しさん:2007/08/07(火) 20:34:27
明示的にコンストラクターを起動している間、インスタンス・フィールド name は参照できません


このエラーはどういうことでしょうか?
調べてもわからなかったです。すみません。
383デフォルトの名無しさん:2007/08/07(火) 20:49:06
スーパークラスのコンストラクタが終わるまでのあいだ this は使えない。
例えば

class A {
A(int x){}
}
class B extends A {
int x = 10;
B() {
super( this.x ); // ← これ
}
}
384デフォルトの名無しさん:2007/08/07(火) 21:34:25
「世界でいちばん簡単」なe本なのに…
50ページ目のコンパイルで躓いてます。
javacがなんかおかしいみたい。何故だろう?
385デフォルトの名無しさん:2007/08/07(火) 21:35:20
そんな本もってないからわからない。
くわしく
386デフォルトの名無しさん:2007/08/07(火) 21:40:22
最初の「プログラミングしてみる」
という項目で

//MyJava

class MyJava{
   public static void main(String args[]) {
  System.out.println("My Java Program");
}
}
と、テキストで打ちました。
で、コンパイルするんですが
387デフォルトの名無しさん:2007/08/07(火) 21:45:49
コマンドプロンプトで
「cd c:\MyJava」
「dir」
「javac MyJava.java」
と打つと

「'javac'は、内部コマンドまたは外部コマンド、操作可能な
プログラムまたはバッチファイルとして認識されていません」
と出てしまうのです。
388デフォルトの名無しさん:2007/08/07(火) 21:52:13
JDK をインストールしているかどうか、
インストールしているならそのインストール先を確認して、
そのインストール先の bin フォルダを環境変数 PATH に追加する。
・・・その手の設定方法って本に載ってない?
389デフォルトの名無しさん:2007/08/07(火) 21:54:41
>>388様、ありがとうございます。
最初に、JDKのインストールと、PATHの設定が載ってました。
それは本の通りに進んでいたのですが…
390デフォルトの名無しさん:2007/08/07(火) 21:56:13
質問させて下さい。
int型のデータ「0xC01A」からString型のデータ"\uC01A"に
変換したいのですが、どのようなやり方がありますでしょうか?
391デフォルトの名無しさん:2007/08/07(火) 21:59:19
>>389
コマンドプロンプトで PATH って打って、
JDK の bin フォルダがちゃんと追加されているかどうか確認する。
エクスプローラーでマイコンピュータから C: → Program Files → ... ってたどっていって、
本当にそのフォルダが存在していて中に javac があるかどうか確認する。
392デフォルトの名無しさん:2007/08/07(火) 22:00:02
>>391様、ありがとうございます。
早速やってみます。
393デフォルトの名無しさん:2007/08/07(火) 22:03:02
>>390
int x = 0xc01a;
String s = "" + (char)x;

""+ ってのがなんかイヤだったら、面倒いけど

String s = new String(new char[]{ (char)x });
394デフォルトの名無しさん:2007/08/07(火) 22:04:27
>>389
ttp://www.shuwasystem.co.jp/books/7980/0533-9/0533-9.html
正誤表出ているが、パスの設定を1.4のデフォルトでやったんだろう
395デフォルトの名無しさん:2007/08/07(火) 22:21:49
>>390
String str = Integer.toString(0xC01A);
396デフォルトの名無しさん:2007/08/07(火) 22:24:52
すまん、間違えた

String str = Character.toString((char)0xC01A);

だな
397デフォルトの名無しさん:2007/08/07(火) 22:27:56
>>391
C:\MyJava>path
PATH=C:WINDOWS\system32;C:WINDOWS;C:\WINDOWS\system32\Wbem;C:
\Program Files\pcbNavi\bin;C:\Program Files\Fujitsu\sa\dll;
c:\j2sdk_1.4.1_01\bin
と表示されました。
C: → Program Files →Java→の中にはjavacは無く、
C: → j2sdk1.4.1 01 →bin→javacとありました。

何か間違ったのでしょうか?

>>394様、ありがとうございます。
1.4.1 01を選んでダウンロードしたのですが…自信ないです。

398デフォルトの名無しさん:2007/08/07(火) 22:31:06
アンダーバーの有無をよく確認してみて。
PATH の中の j2sdk_1.4.1_01 実は j2sdk1.4.1_01 が正しいんじゃない?
399デフォルトの名無しさん:2007/08/07(火) 22:32:41
>>397
c:\j2sdk_1.4.1_01\bin\javac -version
ってコマンドプロンプトで打ち込んでみて
400デフォルトの名無しさん:2007/08/07(火) 22:35:39
どうでもいいが、pathに設定してもろくな事ないと思うが・・・
401デフォルトの名無しさん:2007/08/07(火) 22:39:51
>>390
new String(new int[] { 0xC01A }, 0, 1)
402デフォルトの名無しさん:2007/08/07(火) 22:40:39
>>390
String s = "\\u"+ String.format("%x", 0xC01A).toUpperCase();
403デフォルトの名無しさん:2007/08/07(火) 22:43:43
それなんか違うような・・・
ところで toUpperCase するなら %X でいいんじゃない?
404デフォルトの名無しさん:2007/08/07(火) 22:52:02
>>398様、ありがとうございます。
j2sdk1.4.1_01 では通りませんでした。
>>399様、やってみます。
405デフォルトの名無しさん:2007/08/07(火) 22:53:54
>>399様、「指定されたパスが見つかりません」となりました。
406デフォルトの名無しさん:2007/08/07(火) 22:57:53
>>397 には javac のあるフォルダ名が j2sdk1.4.1 01 って書いてあるけど、1.4.1 と 01 の間は空白?
そうだったら PATH もそのように
一字一句同じ名前を入れてください
407デフォルトの名無しさん:2007/08/07(火) 23:01:41
>>406様、すみません。_ありました。ここでの打ち間違いでした。
408デフォルトの名無しさん:2007/08/07(火) 23:07:13
じゃあ、 >>397 の PATH には ...fujitsu\sa\dll; と c:\j2sdk... の間に改行が入ってるように見えるけど、
本当に改行やら無駄な空白が入っているのなら、取り除いてみてください。
409デフォルトの名無しさん:2007/08/07(火) 23:18:09
>>408様、ありがとうございます。
もう一度やってみます。
410デフォルトの名無しさん:2007/08/07(火) 23:25:49
>>405
エスパーしてみる
DドライブにJDK入っているとかじゃない?

エクスプローラーからjavac.exeを選んで、コマンドプロンプトにドラック&ドロップしてみてくれ
そこで表示されたパスをここにココにコピる
411デフォルトの名無しさん:2007/08/07(火) 23:27:34
>>397
c:\j2sdk_1.4.1_01\bin
志村、sdkの後ろに_入ってるぞ
キーボードで入力するんじゃなくて、パスはコピー&ペースト汁
412デフォルトの名無しさん:2007/08/07(火) 23:53:39
>>409
エクスプローラでアドレスバーを表示するようにしてないの?
413デフォルトの名無しさん:2007/08/08(水) 01:05:36
皆様、ありがとうございました。
アンインストールしてもう一回始めからやり直してました。
そのおかげか、ソースコードを書き直したお陰か(本の文書の方では
『//MyJava』となってましたが、実際の画面を写した写真では『//MyJava.java』と)
PATHの方も、本を見るのではなく、>>411様の通りにコピペをしました。

何とか前進できました。
414デフォルトの名無しさん:2007/08/08(水) 01:09:45
まずはWindowsの使い方から始めるべきだな
415デフォルトの名無しさん:2007/08/08(水) 01:16:57
>>413
そんな違いよく見つけたね
でもコメントの違いはプログラムの動作に影響しない
416デフォルトの名無しさん:2007/08/08(水) 01:17:41
>>414様、ありがとうございます。
頑張ります。
PC自体初心者なのに、訓練学校に入ってしまい今、毎日が勉強です。
今年中にブロンズとSJC-Aを取得するように言われていて…
努力しかないですね。
417デフォルトの名無しさん:2007/08/08(水) 01:17:42
最近はコマンドプロンプトもbatもいらないからな
418デフォルトの名無しさん:2007/08/08(水) 01:54:40
>>384
かわいそうだが、その本は地雷だから。

きみはもうしばらくしたら

  本の通りにやったのですがエラーが出てしまいます。

  精度が落ちている可能性
  検出値: double
  期待値: float
  a = 2.0;
  エラー 1個

という質問をするであろう。

http://pc11.2ch.net/test/read.cgi/tech/1180419689/354-364

419デフォルトの名無しさん:2007/08/08(水) 07:12:47
独習が良いと聞き買ったが分厚いので持ち運びに不便であまり読まないwwwwwww
420デフォルトの名無しさん:2007/08/08(水) 13:13:50
質問させていただきます。
部分文字列"]"をマッチさせ、例外的に"\]"はマッチさせないような正規表現をJavaで書くのにはどうしたらよろしいでしょうか?
421デフォルトの名無しさん:2007/08/08(水) 13:18:30
(?<!\\)\]

ソース中に書くのなら \ はエスケープして "(?<\\\\)\\]"
422デフォルトの名無しさん:2007/08/08(水) 13:20:33
なんか間違えた。"(?<!\\\\)\\]"
423デフォルトの名無しさん:2007/08/08(水) 13:21:04
>>420
回答させていただきます。
(?!\)]
424デフォルトの名無しさん:2007/08/08(水) 13:22:35
質問です。初めてEJB3.0を使用してプログラムを作ろうと思っています。
DBはpostgresです。
それでEntityを作成しているのですが、postgresのinterval型での型にするにはjavaではどのクラスで定義すればいいでしょうか?
425423:2007/08/08(水) 13:24:31
先読みと後読みまちがえた。てへ。
426デフォルトの名無しさん:2007/08/08(水) 13:34:45
逆コンパイラってある?
427デフォルトの名無しさん:2007/08/08(水) 13:36:34
Jadでググれ
というかJava 逆コンパイラでぐぐれw
428デフォルトの名無しさん:2007/08/08(水) 13:45:11
ブラウザで使えるJAD
http://lab.moyo.biz/tools/jadweb/index.jsp
429420:2007/08/08(水) 13:46:50
回答ありがとうございました
430デフォルトの名無しさん:2007/08/08(水) 15:42:23
Javaというか、Eclipseの初心者です。
Eclipse---すばらしい開発環境だとは思うのですが、
なにかの拍子にクラスパスにあるリソース(Hibernate関連のXML文書とか)
を勝手に削除してしまうので困っています。
どうすればいいのでしょうか?
HibernateはHibernateで、リソースをクラスパスに置いておかないとだめ
みたいだし(そうでもないのかな? Hibernateも初心者なので)
431デフォルトの名無しさん:2007/08/08(水) 15:45:52
意味が解らないので、何をどうすると何が消えるのかを明確に
432デフォルトの名無しさん:2007/08/08(水) 16:02:51
>>430
eclipse 使ったこと無いけど、こんな感じの状況かな?
ttp://d.hatena.ne.jp/soutaro/20070615/1181867206
433430:2007/08/08(水) 16:06:48
前日、クラスパスのリソースを読み込んで、
正常な動作をしていたプログラムが、次の日、
Eclipseを立ち上げて動作させようとすると動かない
==>クラスパス内のフォルダにあったリソースが、
ごっそり消えている。あるいはフォルダごと消えている。
とか、あるいは、外部jarの変更等でプロジェクトが
再構築されたときとかも、同じようなことが起こります。
434430:2007/08/08(水) 16:08:47
>>432
ソースディレクトリには被害はないのですが。
でも、ギャーの雰囲気は似ている。
435デフォルトの名無しさん:2007/08/08(水) 16:20:46
>>430
そんな事は一度も起きた事ない。
インストールしているプラグインの何かが不具合起こしているんじゃないか?
列挙できる?
436430:2007/08/08(水) 16:42:56
Eclipse SDK バージョン: 3.2.0のデフォルト状態ですけど。
デフォルトでもあまりにも多すぎますが。
437デフォルトの名無しさん:2007/08/08(水) 16:49:09
output folder はどこに設定してる?
Project > Properties > Java Build Pathページ > Sourceタブ > Default output folder

そのクラスパスはどうやって設定してる?
438デフォルトの名無しさん:2007/08/08(水) 17:05:44
>>430
ビルドの時に、削除する。
というか、ant cleanをするようなイメージ。
クラスファイルの置き場は、動的に更新されるように思っておくといい。

なので必要なファイルは、クラスパスではなく
ソースディレクトリとして登録した場所の下に置けばいい。
439430:2007/08/08(水) 17:12:25
”ビルド・パスの構成”で設定しています。
WorkBench/build/classes
こんな感じです。ここに置いてある、*.class以外のファイルが被害に遭います。
主に被害に遭うのはclasses/Hibernateにあるxmlファイル群ですが、
たまに、classes/Hibernateがなくなったり、classes直下のディレクトリ以外の
ファイルも消えます。classes/Hibernateにあるxmlファイル群だけ消えてclasses直下
のファイルは残っていたり、現象はバラエティーがあります。
440デフォルトの名無しさん:2007/08/08(水) 17:17:09
>>430
出力先フォルダを指定した場合、そこにファイルを置いちゃダメ
ソースフォルダ配下に置いておくこと。
コンパイルと同様に出力先フォルダにコピーされる

javacとかでコンパイルした事ないのね、今の人って
ant使う場合でも、.javaはコンパイルして出力先フォルダにコピー
.java以外のファイルは出力先にそのままコピーって使うもの
出力先はそれらの作業を行う前にクリアする
だから、出力先にぽんとおいてはダメ
441430:2007/08/08(水) 17:20:17
>>440 にゃるほど&ありがとう。
ためしてみます。
442430:2007/08/08(水) 17:29:47
あはは、ようするに今までどおり手でコピーって使わねばなんのか。
(誤解してソースフォルダからリソースを持って行ってくれるのかと思ったよ。
よく考えたらそんなわけないですよね。)
でも、勝手に出力フォルダのファイルを消してしまうのが”仕様”だと分かって安心しました。
443デフォルトの名無しさん:2007/08/08(水) 17:40:19
え?ソースフォルダに置いといたら勝手にビルドフォルダにコピってくんない?
444デフォルトの名無しさん:2007/08/08(水) 17:45:47
ソースフォルダに置いたファイルが Package Explorer で見えてないのなら、右クリック → Refresh
それか、ファイルを Package Explorer にドラッグ&ドロップしても放り込める
445430:2007/08/08(水) 18:06:01
>>444
そうなのか! と思って勇んで右クリック → RefreshでPackage Explorer
にリソースが出現したので、やって見るとだめでした。
で、ふとみるとプロジェクトに赤で白抜きのバッテンが!
これって、ときどきなるいんだけど、コンパイルしなくなって
にっちもさっちもいかなくなることがあります。
(わけわからずにいろいろ触っているうちに直る)
お恥ずかしい話だが、プロジェクトの赤で白抜きのバッテンを解消する
方法をぜひ教えてください。
446デフォルトの名無しさん:2007/08/08(水) 18:19:23
Problems ビューになんか出てない?
そこにエラーメッセージの一覧が出てるはず。
そもそも Problems ビューが表示されてないのなら、Window > Show View > Other... > General > Problems

日本語だったら 「問題」 ビューという名前だったかなぁ。
メニュー名は適当に類推すれ。
447430:2007/08/08(水) 18:19:58
う゛ぁーん、プロジェクトの赤で白抜きのバッテンが解消されないうちに、
夏休みに突入です。みなさんどうもありがとう。
448デフォルトの名無しさん:2007/08/08(水) 19:33:01
PC初心者です
javaのアップデート来たんですけど更新しちゃっていいんですかね?
449デフォルトの名無しさん:2007/08/08(水) 19:35:35
更新するとPCの中身書き換えられるから危険だよ
450デフォルトの名無しさん:2007/08/08(水) 19:36:04
いいよ
451デフォルトの名無しさん:2007/08/08(水) 19:51:31
javaのアップデートはいいのだが、
googleツールバーをやたらインストールしようとするのはやめて欲しい。
452デフォルトの名無しさん:2007/08/08(水) 20:01:05
エクリプスでjava言語を勉強し始めた所なのですが
出だしのクラス、メソッド、フィールド、インスタンスの関係が
なかなか頭に入ってきません
そこで、住人の方の中でこれらの関係を理解しやすくする為に、アニメのタイトル、キャラ等に
当てはめて覚えた事がある方がいましたら、それを教えて頂けないでしょうか
私は今だと、もえたん、ぽてまよなんかは見てますので分かりやすいかも知れません。
よろしくお願いします
453デフォルトの名無しさん:2007/08/08(水) 20:04:07
マグロの1本釣りか?
454デフォルトの名無しさん:2007/08/08(水) 20:20:17
また豪快な…
455デフォルトの名無しさん:2007/08/08(水) 21:04:05
クラス=ゴースト
フィールド=ゴーストの個性
メソッド=ゴーストの能力
インスタンス=ゴーストダビングされた子供

俺は間違ってない。
456デフォルトの名無しさん:2007/08/08(水) 22:10:38
サーブレットとJSPつかってソフト組んでみようと今勉強中なんだがHP得た知識だと

一覧表を出力するとして

0.Beans(出力される1レコードのデータクラスを定義)
1.JSPで検索内容をサーブレットに対してポスト
2.サーブレットでDBにアクセスしてレコードごとのデータをBeansのインスタンスに入れてそれをコレクションか配列に格納
3.サーブレットから元の画面に戻りJSPで格納した値を表示する

こんな感じでいいのかな?
457デフォルトの名無しさん:2007/08/08(水) 22:17:54
>>452
エヴァくらいしか思いつかないが

クラス=レイの作り方
インスタンス=レイの作り方を基に作りだしたレイの実態
メソッド=ゲンドウの指示(たとえばレイを動かすとか)
フィールド・・・・って何のフィールドなんだ?w
458デフォルトの名無しさん:2007/08/08(水) 22:20:01
1のポストってのはリクエストって意味?
後、サーブレットから元の画面に戻りってのはフォワード処理ってのはOK?

概ね間違っていないと思うけど、サーブレットはHTTPリクエストとレスポンスの流れをちゃんと把握しておかないと意味が伝わりにくいぞ
1. サーブレットに対して検索条件をリクエスト
2. サーブレットでDBにアクセスし、Beanを格納したコレクションを作成。
 これはSessionか何かに保存
3. JSPにフォワードして、コレクションの中身を表示(レスポンス作成)
459デフォルトの名無しさん:2007/08/08(水) 22:22:54
>>457
ATフィールド?
460デフォルトの名無しさん:2007/08/08(水) 22:40:18
>>458
サンクス!
たしかにそう書くとわかりやすい きをつけるよ

>1のポストってのはリクエストって意味?
 そそ、ポストしてサーブレットでリクエストのデータを取得して〜 というイメージでした

>後、サーブレットから元の画面に戻りってのはフォワード処理ってのはOK?
フォワードはおk フォワードの引数に元のアドレスを渡してリクエストもとのアドレスに戻すイメージです

しかしASP.NETに頼ってたから普通にポストバックで処理するのに慣れてしまって流れがつかみにくいw
これからオープンソースは避けて通れないからどうしてもコツだけでもつかんどかないと・・・・
461デフォルトの名無しさん:2007/08/08(水) 22:52:29
>>457
わろたw
462デフォルトの名無しさん:2007/08/08(水) 23:21:36
>>455,>>457
これを参考にニヨニヨしながらがんばってみます
ありがとうございました
463デフォルトの名無しさん:2007/08/09(木) 00:34:38
そういやマギって前にNECが本当に出したよな。
464デフォルトの名無しさん:2007/08/09(木) 01:53:21
エヴァのスーパーコンピューター「MAGIシステム」は実在する
http://gigazine.net/index.php?/news/comments/20070804_magi_system/
465デフォルトの名無しさん:2007/08/09(木) 03:01:48
>>305-307,321,351-352
なるほど、やっぱりまちまちな部分なんですね。
プリミティブな型に付けるのはさておき、>>305さんもおっしゃるとおり
オブジェクト型に付けるのは個人的に少し違和感がありました。
臨機応変にやっていきたいと思います。

特に>>351さんのソースコードは人が読む文書というのは
当たり前のことなのに言われるとはっとしました。
改めて肝に銘じておきます。みなさんありがとうございました。
466デフォルトの名無しさん:2007/08/09(木) 12:19:17
>452

クラス : 萌え
メソッド : お話する、プニプニする、攻撃する、
フィールド : みみ、しっぽ、ほっぺ、おくち、各種装備
インスタンス : ぽてまよ(ぽてこ)、ぐちゅ子


Moe poteko = new Moe("ぽてまよ","俺の娘");
String str_pote = poteko.talk("おはよう、ぽてまよ");
System.io.println(str_pote);
Object obj = poteko.punipuni(Moe.HOPPE,10);
Sytem.io.println(obj.toString());

[実行結果]
ほに、ほにー
Exception : "ぽてまよ" omorasi Error!
 at Moe class

上記の場合、厳密に言うと抽象クラスが適当かもしれん。
467デフォルトの名無しさん:2007/08/09(木) 12:22:46
夏厨ヲタ自演....
468デフォルトの名無しさん:2007/08/09(木) 14:11:02
>>466
全然OOになってないだろ。
469デフォルトの名無しさん:2007/08/09(木) 17:09:08
インターフェース: ゲームキャラ
メソッド       : 小パンチ、中パンチ、大パンチ、小キック、中キック、大キック、ガード
クラス       : ケン、リュウ、春麗、ザンギエフ
ケンメソッド    : 昇竜拳、竜巻旋風脚、波動拳
インスタンス   : ケン1P、ケン2P、ザンギエフCP
470デフォルトの名無しさん:2007/08/09(木) 20:01:50
クラス : インターネット掲示板
メソッド : 落書き、煽り、中傷
フィールド : 板、スレッド、レス、Vipper
インスタンス : 2ch
471デフォルトの名無しさん:2007/08/09(木) 21:57:22
Exception in thread "main" java.lang.NoClassDefFoundError
って、何でしょうか?
472デフォルトの名無しさん:2007/08/09(木) 22:03:13
>>471
クラスファイルが見つかりません
473デフォルトの名無しさん:2007/08/09(木) 22:06:22
>>472
ありがとうございます。
474デフォルトの名無しさん:2007/08/09(木) 23:07:09
ぬるぽ = NullPointerException
と聞きましたが、
ガッ = ?なに?
475デフォルトの名無しさん:2007/08/09(木) 23:21:26
キャッチ!
476デフォルトの名無しさん:2007/08/09(木) 23:26:45
意味不明なこと発言してたらすみません。

あるSwingアプリケーションがあって、その中にA.classがあるのですが
これを別アプリケーションから呼び出したいと思ってます。
考えたのですが、Swingアプリの方でポート開放して要求を受け付けるようにすればA.classを実行することはできたのですが、
出来れば、別アプリから 直接A.classのメソッドを呼び出したりしたいのです。
Webサービスみたいなイメージでしょうか? スマートなやり方ありましたらヒントください。
できれば、設定ファイル等が増えて煩雑にならない方法がよいです。
477デフォルトの名無しさん:2007/08/09(木) 23:26:49
mame改造して俺mame作りたいんですがJAVAでもできますか?
C言語しかダメ?
478デフォルトの名無しさん:2007/08/09(木) 23:41:09
PC自体初心者ですが…
独学で今年中にSJC-Aを取得するようにと上司に言われました。
何ヶ月くらいで取れるものなんでしょう?
479デフォルトの名無しさん:2007/08/09(木) 23:48:55
>>478
これ?
http://suned.sun.co.jp/JPN/certification/sjcadetails.html
みっちり勉強すれば今年中にはとれるかもね
480デフォルトの名無しさん:2007/08/09(木) 23:59:17
>>479
ああ、これです。ありがとうございます。頑張ります。
481デフォルトの名無しさん:2007/08/10(金) 00:12:12
>>476
そのA.classをコピって自分のアプリの中に入れればいいんじゃない。
そういう問題でもないのかな。
482デフォルトの名無しさん:2007/08/10(金) 00:40:20
>>476
jar
483デフォルトの名無しさん:2007/08/10(金) 01:29:45
478さんへ
さしでがましいことをいわせていただきます
この資格確かにPGを長年勤めてきた人間には
難しくはないかもしれませんが、初心者が
いきなりjavaをやってこの資格を取るには結構
ハードルが高いのではないでしょうか?
しかもたぶんこの上司の方もこの資格のこと
あんまりわかってないのでは....
後、資格、資格という企業はブラックなところ
が多いので、気をつけてください。
勉強がんばってください。
484デフォルトの名無しさん:2007/08/10(金) 02:08:36
満員の通勤電車の往復時に、駅を乗り越すほど集中して毎日取り組むぐらいの
気力と体力があれば大丈夫だと思う
そうでなければ無理だと思う
485デフォルトの名無しさん:2007/08/10(金) 02:31:54
凄く初歩的な質問を失礼します。
実行するときにcmdでしますよね?
実行結果をノートパッド等に出力する方法はないですか?

使用用途はイメージとしては縦に1,2,3,4…998,999,1000と表示されるような
プログラムです。
cmdではスペースが足りなく、全て表示されないので困っています。(上でいうと実行後の結果で最初のほうの数字が表示されない)
宜しくお願いします。
486デフォルトの名無しさん:2007/08/10(金) 02:38:28
>>485
cmdのプロパティで画面バッファのサイズの高さを2000くらいに設定すれば縦に1000個くらい軽いよ
まあリダイレクトというキーワードでぐぐってみな
487デフォルトの名無しさん:2007/08/10(金) 03:11:13
486
ありがとうございます!
助かりました!
488デフォルトの名無しさん:2007/08/10(金) 04:25:05
>>487
まさか高さの設定の方で済ませたんじゃなかろな?
それでも構いはしないが……
notepadに直接出力ってわけではないが例えばFoo.classを実行するときに
java Foo > log.txt
ってやれば出力がlog.txtに書き込まれる
これをnotepadで開けば出力を見ることができる
既にlog.txtがあれば内容を書き潰すので追加していきたいなら
java Foo >> log.txt
こういうのをリダイレクトという
489デフォルトの名無しさん:2007/08/10(金) 05:15:35
>>476
そのSwingアプリケーションと別アプリケーションが同じ計算機内にあるのなら、
普通にメソッド呼び出しすればいい。
ただし、呼ばれる側のクラスやメソッドのアクセス修飾が呼び出し側から呼べるものである必要がある。
別パッケージで継承関係も無いクラスから呼び出すなら呼ばれる側はpublicでないとたぶんだめ。
呼び出し側をコンパイルや実行する際に、
呼ばれる側のクラスファイルがあるディレクトリなりjarファイルなりへクラスパスを通してやれば、
javacやjavaが探し出してくれる。
もし、呼ばれる側がさらに別のクラスに依存している場合は、そのクラスへもクラスパスを通してやる。
異なる計算機間(同一計算機内でもいい)での呼び出しをやるならRMIという技術があるが、
これを使う儀式を煩雑と思うか否かは人それぞれだと思う。
490デフォルトの名無しさん:2007/08/10(金) 06:07:39
java Foo > log.txt | type | more
って無理だっけ?ログのスクロールアウトをどうにかしたいだけでしょ?
491デフォルトの名無しさん:2007/08/10(金) 07:02:19
単に出力をページャに回すだけなら
java Foo | more
で済む
492デフォルトの名無しさん:2007/08/10(金) 07:07:16
あー
teeはwindowsでは標準装備でないと思うからファイルへ吐き出しつつページャにも回すのは駄目っぽい
もうjavaとは無関係の話だな
というか最初からか
493デフォルトの名無しさん:2007/08/10(金) 08:08:29
>>492
teeくらい自分で実装出来るだろ
494デフォルトの名無しさん:2007/08/10(金) 08:15:34
>>485が自分で実装できると思うか?
495デフォルトの名無しさん:2007/08/10(金) 11:35:25
javamailって最新のバージョンだと日本語をISO-2022-JPで送信するのに
あまり問題はないのかな。
javaのソースはUTF-8、クライアントから送られてくる情報もUTF-8だけれど。
496デフォルトの名無しさん:2007/08/10(金) 11:53:37
最近のwindowsって内部はunicodeで処理してるらしいけどメールを送るのに問題ないのかな?
って程度だ。問題があるとしても。
497デフォルトの名無しさん:2007/08/10(金) 12:12:12
このスレ的にteeをjavaで実装するのか?
専門の課題みたいでワロタw
498デフォルトの名無しさん:2007/08/10(金) 13:05:53
全くわからずここに来たんですが
2バイト文字使ったトリップ作成ソフト(トリッパーのような)を作るのは
可能かどうかだけでいいのでわかる人教えてください
499デフォルトの名無しさん:2007/08/10(金) 13:21:34
トリップしてる奴が来た。さすが夏だな。

トリップって一時的なIDみたいのを言ってるの?
別に2バイト文字使ったって良いだろうが、"吾糞触"とかへんなのになるんじゃねw
500 ◆wjrac0t9OY :2007/08/10(金) 13:37:42
いや・・・2バイトも変換されはするんですよ
ちなみにこれは #こういう感じ です
今あるフリーソフトだと[a-z][A-z][0-9][記号]なので
それを2バイト文字使って作ることも可能かどうかということなんですが・・・
501デフォルトの名無しさん:2007/08/10(金) 13:41:00
あえて1バイトと2バイトを区別する理由が分からない
502デフォルトの名無しさん:2007/08/10(金) 13:42:29
俺はそのアルゴリズム知らないけど、 498 が知ってるんなら、可能なんじゃない
503 ◆wjrac0t9OY :2007/08/10(金) 13:44:31
>>501
まぁ、理由は特にないです
作りたいけど可能かどうかの判断を聞いてみたかっただけなので
>>502
どうもありがとうございました
504デフォルトの名無しさん:2007/08/10(金) 14:07:43
可能か不可能かで言えば当然可能だろう。
505デフォルトの名無しさん:2007/08/10(金) 18:19:40
>>499
コイツ恥ずかしいなw
506デフォルトの名無しさん:2007/08/10(金) 20:42:16
Stringクラスの内部保持データのエンコーディングって何ですか?
調べたところ、java1.4だとUNICODE2.0 java1.5だとUNICODE3.0のようですが。
UTF-8とかUTF-16とは別物?
507デフォルトの名無しさん:2007/08/10(金) 21:37:19
別物。unicode表の値そのものをベタでメモリにもってるとおもうといい。
508デフォルトの名無しさん:2007/08/10(金) 23:37:08
UNICODE=charset
UTF=charencoding

この程度の事を知らんでプログラム組んでる奴が増えたな。
509476:2007/08/11(土) 01:00:41
>>476
A.classが実は、UIを操作するクラスなんですよ、つまりA.classがあるアプリの画面の動きを操作するので、
単にA.classをこぴぺするわけにもいかないのですorz
>>489
ありがとうございます。別Swingアプリ(別VM)で動いているのでやはりRMIなんでしょうか。。
他にJMXなるものの存在を知ったのですが、これでクラス操作はできないのかな??
最近のejbみたいにアノテーションで指定するやりかたとかないですよね?・
機能をみたす実装ならできるのですが、より簡単にしたいって思っちゃいまして^^;
510デフォルトの名無しさん:2007/08/11(土) 01:24:55
>>509
JMXはアプリケーションやJVMの監視、管理のための仕組みなので多分ちょっと用途が違う。
もちろん、別JVMの情報を受け取れるから、JMXを使って実現できない訳ではないと思うけど。
やるならAクラス側が別アプリを監視してUIを操作する方向になるのかも。意図と逆っぽい。
まあ、他所にあるメソッドを呼ぶのなら文字通りのRMIを使うのが素直ではないかなと思う。
実現の面倒さがあるのはセキュリティの問題もあるし仕方がないことかと。
511デフォルトの名無しさん:2007/08/11(土) 01:27:41
Robotでいいんじゃね?
512デフォルトの名無しさん:2007/08/11(土) 05:54:36
>>500
君の質問はとりぷのアルゴリズム知らない香具師のセリフだよ
513デフォルトの名無しさん:2007/08/11(土) 06:11:01
>>507
>>508
なるほど。回答ありがとございます。
まとめると、「unicode表」=「UNICOE(charset)」で
java1.5が管理している文字のメモリーサイズは、1文字当たり16bit〜21bitの可変長と言う認識で合ってますか?
514デフォルトの名無しさん:2007/08/11(土) 06:30:55
ひらがなは、あなたの頭で何ビット?
というくらい間違っている予感
515デフォルトの名無しさん:2007/08/11(土) 09:22:52
UTFって仕様上、最長8byteの可変長でUnicodeを表す仕様だったと思う。
んでたまたま、UTF-32までしか策定されてないだけだったはず。

>1文字当たり
文字じゃなくてコードポイントね。
文字セットの仕組みあたりから勉強した方が早いよ。
516デフォルトの名無しさん:2007/08/11(土) 16:50:39
互換性についての質問です。

Java SE 6でコンパイルしたバイトコードは、新たに追加されたクラスやメソッドを
利用していなければ旧JRE(1.3.1、1.4.2等)上で動作させることはできるのでしょうか。
517デフォルトの名無しさん:2007/08/11(土) 16:54:31
>>516
新しく追加されたクラスやメソッドを使っていないならば、旧バージョンでコンパイルすりゃいいだろ
一般的に上位互換はされる場合もあるが、下位互換は普通されない
518デフォルトの名無しさん:2007/08/11(土) 17:03:16
>>516
javac にオプション指定が必要。
-source 1.3 -target 1.3 とか。
519デフォルトの名無しさん:2007/08/11(土) 18:44:09
WinXP SP2です
swfプレイヤーのような物があるのか
また、exe化したりする方法があるのかは分かりませんが
Javaで作れた物をローカルで使用するにはどうすればよいのでしょうか
520デフォルトの名無しさん:2007/08/11(土) 18:46:44
>>515
内部メモリーの話してるんだから、
encodingは関係ないんじゃないですか?
521デフォルトの名無しさん:2007/08/11(土) 18:56:15
>>519
JREでぐぐれ
522デフォルトの名無しさん:2007/08/11(土) 21:30:12
たとえば
String[] testarray = {"A", "B", "C", "D"};
これだとtestarray[3]までしか宣言できませんが、
初期値としてtestarray[100]まで確保しつつ、初期値を
上のように代入するにはどうすればよいのでしょう。
523デフォルトの名無しさん:2007/08/11(土) 21:34:58
String[] testarray = {"A", "B", "C", "D", null, null, ……, null };
524デフォルトの名無しさん:2007/08/11(土) 21:40:25
>>522
それとは別に、サイズが100の配列を作っておいて、コピーするってのは?
525デフォルトの名無しさん:2007/08/11(土) 21:40:40
String[] testarray = new String[100];
String[] temp = {"A", "B", "C", "D"};
for (int i = 0; i < temp.length; i++) {
testarray[i] = temp[i];
}
526デフォルトの名無しさん:2007/08/11(土) 21:43:15
>>522
4以降がnullでいいならば、
String[] array = new String[100];
array[0] = "A";

もし、""とかで初期化したいならば
Arrays.fill(arrya, "")を使う

ただ、3つしか使わなくて可変な配列を使うってケースならばArrayList使え
527デフォルトの名無しさん:2007/08/11(土) 22:34:40
コンソールから入力した1人分の情報(学籍番号,氏名・・・)を基にして、(入力されるたびに)
インスタンス・オブジェクトを生成させるにはどうすればよいのでしょうか?
Cで言う、構造体みたいなものを作るのですか?

また、生成したインスタンス・オブジェクトは、配列でインスタンス管理テーブルのようなものをつくり
管理したいと思っています。
528デフォルトの名無しさん:2007/08/11(土) 22:41:22
>>527
Cの構造体→Javaクラス
配列→コレクションorマップ
529デフォルトの名無しさん:2007/08/11(土) 22:46:09
>>527
こんな感じ
class Person {
int studentNumber;
String name;
....
}
public class Main {
static void main(String[] args){
Scanner scanner = new Scanner(System.in);
List<Person> people = new ArrayList<People>();
for(;;){
Person person = new Person();
person.studentNumber = scanner.nextInt();
person.name = scanner.next();
...
people.add(person);
}
}
}
530522:2007/08/11(土) 23:12:18
>>523-526
あざーっす
参考になったっす
531デフォルトの名無しさん:2007/08/11(土) 23:24:41
あざーっす……。
532デフォルトの名無しさん:2007/08/11(土) 23:58:22
あざーっす
533デフォルトの名無しさん:2007/08/12(日) 00:20:49
other. 他人です。
534デフォルトの名無しさん:2007/08/12(日) 00:24:18
家庭教師のトライです
535デフォルトの名無しさん:2007/08/12(日) 01:25:23
よし、父ちゃんが問題だしたるわ
「いたちまさむね」
536デフォルトの名無しさん:2007/08/12(日) 06:09:04
伊達政宗
537デフォルトの名無しさん:2007/08/12(日) 06:12:12
じゃあ、にいちゃんも問題出したる
ふいんき<--なぜか変換されない(いまやったら連想変換で候補出たw)
538デフォルトの名無しさん:2007/08/12(日) 07:10:47
× other 他人
○ others 他人
539デフォルトの名無しさん:2007/08/12(日) 07:21:50
vistaの環境変数設定はどうすればいいですか?
540デフォルトの名無しさん:2007/08/12(日) 10:04:55
コントロール パネル →システムとメンテナンス →システム
→システムの詳細設定 →環境変数
541デフォルトの名無しさん:2007/08/12(日) 15:00:30
そのうち「自動的に設定しますか?」のウィンドウとか出そうだな。
542デフォルトの名無しさん:2007/08/12(日) 16:32:30
○ other (persons)
× others
○ the others
○ an other
543デフォルトの名無しさん:2007/08/12(日) 16:38:01
>>542
アホか
意味が変わっとるやんけ
544デフォルトの名無しさん:2007/08/12(日) 16:55:39
JMSを使うってことは、MQを使うということですか?
545デフォルトの名無しさん:2007/08/12(日) 19:16:10
Java1.5のQueueはJava.14ではどういうふうに代用するのでしょうか?
546デフォルトの名無しさん:2007/08/12(日) 19:45:44
Queueの実装も出来んのか。
しかも、ラップするだけQueueを実装できるように設計されてる。JCFで。
547デフォルトの名無しさん:2007/08/12(日) 19:59:01
アホか?
LinkedListをQueueとして使えばいいだろ
548デフォルトの名無しさん:2007/08/12(日) 20:48:50
AudioFormat af = new AudioFormat(44100, 16 /*1サンプルあたりのビット数*/ ,
  2 /*チャンネル数*/ ,
  true /* 符号付きかどうか */ ,
  true /* データはビッグエンディアンかどうか */);
AudioInputStream as = new AudioInputStream(new ByteArrayInputStream(data),af, data.length);
AudioSystem.write(as, AudioFileFormat.Type.WAVE, new File("sample.wav"));



こんな感じに書くと(データバッファは十分にあるものとする)、
ちゃんとオーディオデータが sample.wav に吐き出されるんですけど、
なぜかそのファイルは Winamp でしか開けないんです。
サウンドレコーダもメディアプレイヤーもヤマハのTWEも
「ファイルが壊れています」って返してくる。

なぜでしょうか?
549デフォルトの名無しさん:2007/08/12(日) 21:09:28
ビッグエンディアンだからじゃ?
550デフォルトの名無しさん:2007/08/12(日) 21:13:56
privateな内部クラスにpublicメソッドを書いているプログラムがありました。
どういう意味なのですか?
551デフォルトの名無しさん:2007/08/12(日) 21:15:33
意味なんかなくても親クラスで public のメソッドはサブクラスでは public にしなきゃいけないし、インタフェイスのメソッドも public にしなきゃいけない
552デフォルトの名無しさん:2007/08/12(日) 21:16:29
>>550
書いた人に聞いてください。
553デフォルトの名無しさん:2007/08/12(日) 21:24:08
>>550
メソッド全部がprivateなクラスってあるの?
554デフォルトの名無しさん:2007/08/12(日) 21:50:42
JavaでListenerを作れと先輩に言われました。
Listenerとは何ですか?オラクルのListenerならわかるんですが。
555デフォルトの名無しさん:2007/08/12(日) 21:55:41
>>554
リスナーは何かイベントが発生したときにその通知を受け取るためのインタフェイス。
コールバック関数みたいなもの。

http://ja.wikipedia.org/wiki/Observer_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
556デフォルトの名無しさん:2007/08/12(日) 21:58:29
何のリスナー作るんだYO
557デフォルトの名無しさん:2007/08/12(日) 22:09:39
ネットラジオのリスナー
558デフォルトの名無しさん:2007/08/12(日) 22:48:13
よく、〜なインターフェースが定義されているという表現をしますけど、
インターフェースって中身のないただのメソッドでしょ?
定義されていてどうなるわけなのですか?
559デフォルトの名無しさん:2007/08/12(日) 22:51:41
>>558
鍵穴を連想してみて欲しい。

子会社、関連会社の人が
「ふ〜ん、あれ合わせて作ればいいんだぁ」って考える。
560デフォルトの名無しさん:2007/08/12(日) 23:13:48
鍵穴はちょっとおかしいだろw
コンセントの形はどんなメーカーのどんな電化製品も一緒
そんな風に規格だけ用意して中身は勝手に作ってね、使う側はその規格使うから、ってのがインターフェイスの基本
561デフォルトの名無しさん:2007/08/12(日) 23:14:16
>>559
ちょっと違うだろwww
>>558
決めごとだよ。
例えば市販車は、ウィンカーがついてないとだめとか
いろいろ決めごとがある。「市販車である」ためには
その決めごとを守っている必要がある。
562デフォルトの名無しさん:2007/08/12(日) 23:16:49
>>558
実はインタフェースは必要ないもの。抽象クラスや実装クラスの中身がない空実装でも代用は可能。
でも、インタフェースなら一世代の継承ルールから開放されるし、コンパイル時に実装漏れを検出できる。

でも、やっぱり代用できるから、あまりいらない子。

563デフォルトの名無しさん:2007/08/12(日) 23:17:51
>>561
使う側がないと、決め事だけじゃインターフェイスとしての意味は薄くない?
564デフォルトの名無しさん:2007/08/12(日) 23:20:12
>>562
その話題は不毛だから止めとけ。
必要がないとなんて書くと荒れるぞ
565デフォルトの名無しさん:2007/08/12(日) 23:21:21
>>563
その場合は意味薄いね。

利用するクラスと利用されるクラスとインタフェースを同じ開発者が担当すると
まじイラネ。。
566デフォルトの名無しさん:2007/08/12(日) 23:21:53
むしろ抽象クラスが不要なもの。
具象クラスとインタフェイスだけでいい。
567566:2007/08/12(日) 23:22:50
>>564
ごめ・・・

566はナシで。
568デフォルトの名無しさん:2007/08/12(日) 23:23:57
>>559
「頭悪いな〜」と子会社から苦情がくるww
569デフォルトの名無しさん:2007/08/12(日) 23:27:24
>>559
作ったはいいが、警察に厄介になりそうだ
570デフォルトの名無しさん:2007/08/12(日) 23:53:27
Java5でAtmicLongとか追加されたけど、あれってvolatileをつけるのと一緒のことですか?
571デフォルトの名無しさん:2007/08/12(日) 23:57:05
たとえば、初めて載った○○車の自動車に
ペダルが3つ付いていればMT車なんだと想像がつく。
2つならAT車だ。これなら運転は出来そうだろ?

ペダルの先のエンジンのベルトがどうなってるか、とかは
利用者は意識する必要がない。
572デフォルトの名無しさん:2007/08/12(日) 23:59:47
>>570
一緒で済むならばAtomicXxは追加されないだろ
名前の通り、よく使われるアトミック操作を保証するオブジェクト
volatile int i = 0;
としておけば、
i++
は安全だとか思っているならば、並行処理の基本を学んで来い
573デフォルトの名無しさん:2007/08/13(月) 00:03:47
>>570
単純に set と get をするだけなら volatile と同等
それ以外の操作は同等でない

例えば

AtomicLong x;
long y = x.getAndIncrement();

はアトミックに取得・加算ができるが

volatile long x;
long y = x++;

は他のスレッドが割り込む可能性がある
574デフォルトの名無しさん:2007/08/13(月) 00:09:00
>>572
え?Javaをはじめて1年になるけど、安全だと思ってました。。。

synchronizedがあればAtomicはいらないということですか?
575デフォルトの名無しさん:2007/08/13(月) 00:12:38
>>574
それはそうだけど、synchronized は重い。 atomic の方が軽い。
パフォーマンスを気にしないなら、たしかに atomic も volatile も不要。 synchronized だけ使ってればいい。
576デフォルトの名無しさん:2007/08/13(月) 00:13:37
>>574
並行処理 アトミック Javaあたりでぐぐれ
577デフォルトの名無しさん:2007/08/13(月) 00:17:00
>>575
それはちょっと違うぞ
AtomicIntを使うと、ソースコードが非常にシンプルになるのが一番の利点
private final AtomicInteger aInt = new AtomicInteger(0);
としてしまえば、それだけでvolatileもsynchronizedも不要になり、同期化に関する色々な問題はAtomicIntegerにカプセル化される
そうすれば、後から怪しいメソッドを追加してしまい、同期化ポリシーが崩れることもない
578デフォルトの名無しさん:2007/08/13(月) 00:19:21
>>577
見た目シンプルになったって、atomic は synchronized よりはるかに扱いが難しいと思うのだけれど
579デフォルトの名無しさん:2007/08/13(月) 00:25:20
Atomicは圧かが難しいと思うが、AtomicIntegerの何が難しいんだ?
580デフォルトの名無しさん:2007/08/13(月) 00:55:36
あれ? synchronized より atomic のほうがパフォーマンス的に良いんだっけ?
581デフォルトの名無しさん:2007/08/13(月) 00:59:19
無意味といえばあれだ、中で何も処理しないセッターとゲッター。
publicでいいやんけ
582デフォルトの名無しさん:2007/08/13(月) 01:09:24
悪けりゃ、atomic が追加された意味がナッシング
583デフォルトの名無しさん:2007/08/13(月) 01:20:56
>>581
interface 実装してたりする場合あるし、継承先で振る舞い変わる可能性もある。

中で何も処理しないというだけじゃ無駄かどうかはわからん。
584デフォルトの名無しさん:2007/08/13(月) 01:22:43
新規に追加されたものの方がパフォーマンスがいいとは限らない
追加はパフォーマンスの向上のみを目的としているのではない
585デフォルトの名無しさん:2007/08/13(月) 01:25:03
それもそっか・・・
586デフォルトの名無しさん:2007/08/13(月) 11:24:10
携帯から失礼します、質問よろしいでしょうか。

DBに対してJDBCを用いてselect文を発行するストアドの呼び出しを行い、
取得した結果を二次元配列に格納しています。
検索対象としているテーブルのカラムはDATE型で、ResultSet#getString(int)を用いて取得しています。
なお、検索結果は常に1件となり、String[]にselect対象のカラムの値を入れて返す共通機能を使用するため、
カラムの値を取得するgetStringをgetDateなどに変更することはできず、
通常のSQLのように日付の取得フォーマットを変更するなどもできません。
DATE型のカラムに対してgetStringを行うと、以下のフォーマットの文字列が取得できる模様です。

yyyy-MM-dd hh:mm:ss.S

このフォーマットはJDBCドライバやDB、OSによって変わったりするものなのでしょうか。

環境:
 JDK1.5.0、Oracle10g、JDBCドライバclasses12.zip

どなたかご存知の方がいましたら、何とぞご教示お願い致します。
587デフォルトの名無しさん:2007/08/13(月) 16:00:16
>>586
JavaSEのResultSetのAPIドキュメントには何も決めごとが書かれていない。
ということは、ベンダ依存と考えておくのが安全。
588デフォルトの名無しさん:2007/08/14(火) 00:02:08
ConditionとかReentrantLockはどういったときに使うのですか?
589デフォルトの名無しさん:2007/08/14(火) 00:09:35
ReentrantLock -> メソッドのスコープとは無関係の範囲をロックしたいとき。

Condition -> 1個のロックに対して複数の wait/notify を扱いたいとき。
590デフォルトの名無しさん:2007/08/14(火) 00:24:35
>>588
synchronized と wait/notify で記述できないような複雑な並行処理を実装する時に使う
作者も不用意に使うとデッドロックするZEって言ってる
591デフォルトの名無しさん:2007/08/14(火) 06:34:08
可変長引数より配列を使う方がプログラムが見やすいと思うのですが、
僕の考えは間違っていますか?
592デフォルトの名無しさん:2007/08/14(火) 06:37:12
使い分ければOK
593デフォルトの名無しさん:2007/08/14(火) 11:07:08
長さが固定されている用途なら固定長が見やすい
長さが可変な用途なら可変長が自然
594デフォルトの名無しさん:2007/08/14(火) 11:33:11
>>591
どういう点で見やすいと思うのか、サンプルソースでも書け
595デフォルトの名無しさん:2007/08/14(火) 11:52:13
見にくいと思うのなら 591 が使わなければいいだけの話
596デフォルトの名無しさん:2007/08/14(火) 14:25:49
String配列はログに出す時めんどい。ArrayListやHashMapみたいなコレクションAPI
はtoStringでちょろっと出すことが出来る。まあ、そんなユーティリティクラス作っちゃえば
良いんだろうけどさ。
597デフォルトの名無しさん:2007/08/14(火) 14:33:30
っ Arrays#toString(Object[])
598デフォルトの名無しさん:2007/08/14(火) 19:01:05
Arraysは色々と便利なメソッド増えたよな
あまり知られていないようだが
599デフォルトの名無しさん:2007/08/14(火) 19:27:45
最近までC言語やってたんだけど質問。
C言語なんかはコンパイルしてできたexeをすぐクリックなんかで実行できるけど
javaはコンパイルしてできたクラスファイルをプロンプト上で>java HelloWorldって感じでしか実行できないんだろうか?
javaVM無いと動かないのはわかるがexe出力しないって違和感ありすぎる・・。
600デフォルトの名無しさん:2007/08/14(火) 19:38:33
違和感あるって言われてもVMを採用している言語は全てそうだし、スクリプト系言語も全てそうだぜ
関連付けされていてダブルクリックで起動する場合もあるが。
ダブルクリックで起動させる方法もあるけど、慣れろとしか言いようがないな
601デフォルトの名無しさん:2007/08/14(火) 19:45:29
>>599
環境がWindowsなら、
1.バッチファイルを作成してダブルクリック。
2.jarファイルを関連付けした後、jarファイルを作成してダブルクリック。
602デフォルトの名無しさん:2007/08/14(火) 19:45:29
class ファイルを jar に固めたあと exewrap とかで exe にすることはできる
gcj でネイティブコンパイルしてしまうという方法もないではない
603デフォルトの名無しさん:2007/08/14(火) 20:17:18
>>599
実行時オプションがいらないならjarに固める時
マニフェストにMain-Class:hoge追加
それ以外はOS毎にバッチ書く。引数渡せるようにして。

下手にexeでラップされると実行時引数渡せない場合があるので迷惑。
javaはそういう世界。
604デフォルトの名無しさん:2007/08/14(火) 20:28:42
599 は bat は許せるのかな。 jar は許せないのに
605デフォルトの名無しさん:2007/08/14(火) 22:08:15
いい加減みんな599を許してやれよ
exeが不自然じゃない世界ってのをまだ知らないだけなんだから
606デフォルトの名無しさん:2007/08/14(火) 22:38:33
exeが不自然じゃない世界 = exeが自然な世界?
607デフォルトの名無しさん:2007/08/14(火) 22:42:02
>>599
gcjならexe出力するからそれ使え
608デフォルトの名無しさん:2007/08/14(火) 22:42:28
その前に誰も599を許さないなんて言ってない希ガス
609デフォルトの名無しさん:2007/08/14(火) 22:46:47
>>599
exewrap
610デフォルトの名無しさん:2007/08/14(火) 23:14:05
sizeが0のArrayListはnullですか?
lengthが0のString配列はnullですか?
611デフォルトの名無しさん:2007/08/14(火) 23:16:51
>>610
> sizeが0のArrayListはnullですか?
no

> lengthが0のString配列はnullですか?
no
612デフォルトの名無しさん:2007/08/14(火) 23:22:14
じゃあ、なんなんですか!
613デフォルトの名無しさん:2007/08/14(火) 23:24:04
sizeが0のArrayListと、長さ0の String配列。
614デフォルトの名無しさん:2007/08/14(火) 23:25:05
なんでnullじゃないんですか、困ります!!
615デフォルトの名無しさん:2007/08/14(火) 23:27:09
>>614
まあまあ、落ち着いて。
何がnullだと、何をするのに困るのですか?
616デフォルトの名無しさん:2007/08/14(火) 23:31:27
>614
nullだと、もっと困るから。
617デフォルトの名無しさん:2007/08/14(火) 23:39:25
nullの方が困るんですね、仕方ありません…
618599:2007/08/14(火) 23:45:33
こんなにレスついてるとは思わんかった。
とりあえずgcjを調べてみる。
619デフォルトの名無しさん:2007/08/15(水) 01:29:31
いまどき実行がめんどくさいってだけでAOTに頼ると馬鹿見るよ。
JRE5,6が尋常じゃないほど早くなってるし、一般人には今のPCはオーバースペックだからjavaごとき負担にならんし。

JRE6はさすがにビビッタがレジスタの動的割り当てのおかげ?
620デフォルトの名無しさん:2007/08/15(水) 02:28:30
JavaはやはりまだJVM起動のフットプリントが負担かな?

mainメソッドに数10行のちょっとしたツールを作ったりしたときでも
JVM起動がかかるなぁ。.NET程では無いとは思うんだが
ちょっとストレス。
621デフォルトの名無しさん:2007/08/15(水) 02:56:08
ngen使えば.NETの方が有利。

起動に時間がかかるっても、問題になるのは初回起動ぐらい。
一見さんにはその一回が遅いって印象だけしか残らんのだろうけど。
622デフォルトの名無しさん:2007/08/15(水) 06:22:05
一つの関数から、複数の返り血を浴びさせるにはどうすれば良いのでしょうか
別の関数で同じ処理を何回もしてるのは非効率に思えます
623デフォルトの名無しさん:2007/08/15(水) 06:33:35
>>622
散弾銃かショットガンでも使えw言ってることわけわからん
624デフォルトの名無しさん:2007/08/15(水) 06:44:03
日本国内で違法にならない形で、一つのメソッドで、複数の返り値を取得する方法を教えてください

int, float method(int c){
int a; float b;
cつかって複雑な計算をうにゃうにゃ
結果は二つ
return a, b;
}

pote, mayo = method(123);

みたいにでけたらいいなと
そんな言語がありました
625デフォルトの名無しさん:2007/08/15(水) 06:51:19
ConditionとReentrantLockはどういったときに使うんですか?
ConditionのAPIドキュメントを見たけど、waitやnotityと同じ内容のメソッドしか持ってませんよね。
626デフォルトの名無しさん:2007/08/15(水) 07:31:47
>>624
原則として出来ない。

返り血が同じ人であるならば、配列にして返すのが1つの方法
public int[] hoge() {
  return new int[] { 1, 2};
}
返り血をデータクラスのフィールドに格納してデータクラスを返す方法
public Result hoge() {
   return new Result(1, 2.0);
}
返り血はvoidとし、そのクラスのフィールドに結果を格納する
結果はそれぞれのゲッターで取得
int resultA;
float resultB;
public Result hoge() {
   resultA = 1;
   resultB = 2.0;
}
627デフォルトの名無しさん:2007/08/15(水) 07:33:05
>>624
なんで違法とかw
返値にint,floatってすごいな。それをObjectにして、
返値はObjectのプロパティに設定して返してやればいいじゃん
628デフォルトの名無しさん:2007/08/15(水) 07:33:06
>>624
クラスを返せばいいだけ
629デフォルトの名無しさん:2007/08/15(水) 07:34:37
クラスのメンバをpublicにしちゃいけないとおじいちゃんが言ってた
630デフォルトの名無しさん:2007/08/15(水) 07:35:39
>>625
waitとnotifyでは実現できないもっと複雑な同期をさせたい時に使用する
言い方を変えれば、wait/notifyで実現できるならば使う必要はない
631626:2007/08/15(水) 07:36:25
訂正
返り血はvoidとし、そのクラスのフィールドに結果を格納する
結果はそれぞれのゲッターで取得
int resultA;
float resultB;
public void hoge() {
   resultA = 1;
   resultB = 2.0;
}
632デフォルトの名無しさん:2007/08/15(水) 07:37:03
っつーかちょっとしたことをサクサクっと書きたいのに
何でJavaだと前戯したり焦らしたり後戯までご丁寧に
やってやらんといかんのはなぜ?
633デフォルトの名無しさん:2007/08/15(水) 07:38:35
Javaだから
嫌ならばPythonとかRubyとかやればいい
634デフォルトの名無しさん:2007/08/15(水) 07:39:20
仕事で使う言語と趣味と布教で使う言語の違いだろ
635デフォルトの名無しさん:2007/08/15(水) 07:49:14
返り血って書いてるだけでスルー対象
636デフォルトの名無しさん:2007/08/15(水) 07:56:34
>>632
べつに普通にサクサク書けてますが?
環境がダメダメなんじゃないの?
637デフォルトの名無しさん:2007/08/15(水) 08:08:15
>>634
Rubyはオナニー用
638デフォルトの名無しさん:2007/08/15(水) 09:08:37
作成したら後は変更しないオブジェクトなんかはよくフィールドをpublic finalにしてコンストラクタのみで初期化してる
他にもこんなやついる?
639デフォルトの名無しさん:2007/08/15(水) 09:53:45
禿
640デフォルトの名無しさん:2007/08/15(水) 11:50:07
>>620
PC起動時にJVMも起動しておけばいいじゃん
1.4ならともかく
641デフォルトの名無しさん:2007/08/15(水) 14:29:50
javaでさくさく書きたいならまさにgroovyがあるだろ・・・。

rubyは別にpythonか関数型言語で同じ事出来るしなぁ。
ハスケルにもOpenGLポートとかSDLポートあるんだぜw
Windowプログラミング可能だw
642デフォルトの名無しさん:2007/08/15(水) 15:51:46
javaでサクサク書けないって、自分が無能っていってるだけじゃんw
643デフォルトの名無しさん:2007/08/15(水) 16:06:47
質問です。ある文字列nameが別の部分文字列kanziを含むかどうかを
PetternとMatcherで調べるつもりがうまくいきません。両方とも日本語文字列です。

Pattern pattern = Pattern.compile("(" + kanzi + ")+");
Matcher matcher = pattern.matcher(name);

のようにしているのですが、name == kanziでないとマッチしません。
当方正規表現もJAVAも初心者なのですが、どこが悪いのか教えてください。
よろしくお願いいたします。
644デフォルトの名無しさん:2007/08/15(水) 16:11:37
自己解決しました。
Mather.maches()ではなくfind()ですね。失礼しました
645デフォルトの名無しさん:2007/08/15(水) 16:12:34
その程度なら正規表現なんてコストの高いもん使わず、
総当たりで1文字づつ調べればいいんんじゃない?
646デフォルトの名無しさん:2007/08/15(水) 16:14:29
>>643
単に文字列中に別の文字列が含まれるかどうかならString#contains()で。
name.contains(kanzi)の真偽でチェック。
647デフォルトの名無しさん:2007/08/15(水) 16:37:26
>>643
正規表現を使うにしても文字列を含むかどうかを見るだけなんだから+を使う必要はない
それにkanziに正規表現のメタ文字が含まれていた場合
実行時エラーを起こしたり、マッチすべきものにマッチしない、またはその逆になったりする可能性がある
kanziをPatternにコンパイルする前にquoteすべき
Pattern pattern = Pattern.compile(Pattern.quote(kanzi));
648デフォルトの名無しさん:2007/08/15(水) 19:48:41
Pattern pattern = Pattern.compile("^(" + kanzi + ")+$");
Matcher matcher = pattern.matcher(name);
649デフォルトの名無しさん:2007/08/15(水) 19:49:19
Pattern pattern = Pattern.compile("^.*(" + kanzi + ")+.*$");
Matcher matcher = pattern.matcher(name);
650デフォルトの名無しさん:2007/08/16(木) 06:33:02
SpringのProxyFactoryBeanを使うことによって何かお得なことがあるんですか?
651デフォルトの名無しさん:2007/08/16(木) 11:26:55
相談があります。

独学で始めて2ヶ月経ちます。
クラス・コンストラクタ・メソッドをはじめ、ループや配列に関して理解できました。
この先ですが、それぞれの分野に分かれました。

アプレットやサーバーサイド、データベースなどの分野なのですが、
これから就職するにあたってどの方向に進むのがいいでしょうか。

あと1つ言語を習得したいと思っています。

現代での必要性や求職率、給与などを考慮して考えたいので、
よろしくお願いします。
652デフォルトの名無しさん:2007/08/16(木) 11:28:54
人生相談かよw
653デフォルトの名無しさん:2007/08/16(木) 12:30:02
一も二もなく英語でしょ>言語
654デフォルトの名無しさん:2007/08/16(木) 15:18:16
>>651
辰巳の方向へ。
655デフォルトの名無しさん:2007/08/16(木) 15:20:36
うむ、辰巳の方角が吉とでておる
656デフォルトの名無しさん:2007/08/16(木) 15:39:41
>>651
とりあえずCとC#やったら?
Javaと言語仕様が似てるからこの二つを学ぶには似てない一つの言語を学ぶくらい労力で済む
DBやるならSQLは必須
657デフォルトの名無しさん:2007/08/16(木) 17:57:04
>アプレットやサーバーサイド、データベースなどの分野なのですが、

全部やっとけ
658デフォルトの名無しさん:2007/08/16(木) 19:47:01
>>651
>>657 だいたいから選り好みしてる場合じゃないだろ
仕事でやるんだぞ。全部できた方がいいに決まってるじゃないか。

というかそれくらいの意気込みがなくて自分のテリトリを守るだけの
人材は高給では求められてませんよ。

あと一つの言語は>>653で間違いない。
英語ドキュメント避けては過ごせません。
659デフォルトの名無しさん:2007/08/16(木) 23:18:29
Javaをはじめて間もないのですが、下記の練習問題が分かりません。

以下のような Example クラスがあります。
@ isHalfSizeCharacter メソッドを作成して、sample フィールドを isHalfSizeCharacter メソッドを使用した
結果をコンソールに出力するようにしてください。
A isHalfSizeAlphaCharacter メソッドを作成して、sample フィールドを isHalfSizeAlphaCharacter メソッドを
使用した結果をコンソールに出力するようにしてください。

public class Example {
private static final String sample = "abcdefghijklmnopqrstuvwxyz1234567890";
     public static void main(String[] args) {
System.out.println("sample = " + sample)
System.out.println("@ 文字列 sample は全て半角文字です。");
System.out.println("@ 文字列 sample は全て半角文字ではありません。");
System.out.println("A 文字列 sample は全て半角英字です。");
System.out.println("A 文字列 sample は全て半角英字ではありません。");
}
// 引数 value が全て半角文字の場合、true を返します。
// 但し、引数 value が未設定の場合、false を返します。
private boolean isHalfSizeCharacter(String value) {
}
// 引数 value が全て半角英字の場合、true を返します。
// 但し、引数 value が未設定の場合、false を返します。
private boolean isHalfSizeAlphaCharacter(String value) {
}
}

どなたか答えてもらえる方はいませんか?
660デフォルトの名無しさん:2007/08/16(木) 23:29:53
>>659
練習問題なんだから、その前にヒントがあるんじゃないか?

方法を問わず解くことに意味があるのだろうか…
661デフォルトの名無しさん:2007/08/16(木) 23:39:15
宿題スレに移動するなら一言ことわってからにしてくれよ
662デフォルトの名無しさん:2007/08/16(木) 23:41:49
>>660
すみません。ごもっともな意見だと思います。
しかし、今日ずっと考えてもどう回答していいか分からずいます。

この練習問題は教材からではなく先輩に出題された問題なのでヒントもなくて・・・
回答ではなくても、何かヒントをいただければ助かります。
663デフォルトの名無しさん:2007/08/16(木) 23:44:00
>>661
すみません。マナー不足で同じことを違う板でも書き込みしてしまいました。
664デフォルトの名無しさん:2007/08/17(金) 00:01:51
とりあえず疑問点
・引数 value が未設定ってのはNULLでいいの?
・半角文字ってのは半角英数字って事?
665デフォルトの名無しさん:2007/08/17(金) 00:19:01
ありゃ、待ってたのにレスが来ないな。
日付が変わったからか、それとも別のトコで答えてもらったのかな(まあ、10分くらいで分る内容ではある)。
666デフォルトの名無しさん:2007/08/17(金) 00:25:40
>>664
>・引数 value が未設定ってのはNULLでいいの?
>・半角文字ってのは半角英数字って事?
引数に関しての質問は、私もよく分かりません。
半角文字に関しても、問題に半角文字と半角英字とあり私もちょっと分かりずらく
はっきり答えられません。
問題を見て感じたまま答えてもらえれば、かまいません。
違かったとしても答えへのヒントになりますので。
667デフォルトの名無しさん:2007/08/17(金) 00:29:35
>>665
返信送れてすみません。更新しないでレス見てしまっていたので。
668デフォルトの名無しさん:2007/08/17(金) 00:33:52
>>659
半角文字の定義をしてください。JIS規格では半角文字、全角文字は定義されていません。
Unicode でも U+FF00〜U+FFEF のHalfwidth and Fullwidth Forms
の区間以外は全角/半角の区別が付きません。

とか教師に言ってみると良いかも。ぶん殴られる可能性もあるけど。
669デフォルトの名無しさん:2007/08/17(金) 00:38:56
>>669
今回の問題では
半角文字は↓
abcdefghijklmnopqrstuvwxyz1234567890
全角文字は↓
abcdefghijklmnopqrstuvwxyz1234567890

の定義でかまいません。
670デフォルトの名無しさん:2007/08/17(金) 00:41:46
こんな感じ。
public class Example {
private static final String sample = "abcdefghijklmnopqrstuvwxyz1234567890";
public static void main(String[] args) {
System.out.println("sample = " + sample);
if(isHalfSizeCharacter(sample)){
System.out.println("@ 文字列 sample は全て半角文字です。");
}else{
System.out.println("@ 文字列 sample は全て半角文字ではありません。");
}
if(isHalfSizeAlphaCharacter(sample)){
System.out.println("A 文字列 sample は全て半角英字です。");
}else{
System.out.println("A 文字列 sample は全て半角英字ではありません。");
}
}
// 引数 value が全て半角文字の場合、true を返します。
// 但し、引数 value が未設定の場合、false を返します。
static private boolean isHalfSizeCharacter(String value) {
if(value==null) return false;
return value.matches("[a-zA-Z0-9]+");
}
// 引数 value が全て半角英字の場合、true を返します。
// 但し、引数 value が未設定の場合、false を返します。
static private boolean isHalfSizeAlphaCharacter(String value) {
if(value==null) return false;
return value.matches("[a-zA-Z]+");
}
}
671デフォルトの名無しさん:2007/08/17(金) 00:44:56
なんで1.5になってもStringクラスにisEmpty()がないんですか!
std::stringにもMFCのCStringにもC#のStringにもあるのにおかしいじゃないですか!
672デフォルトの名無しさん:2007/08/17(金) 00:46:33
>>670
こんな短時間で答えてくれてありがとうございます。
自分の未熟さを感じつつも、がんばります。
今日はこの回答を元にどうなってこうなったのかを教材を見ながら
考えたいと思います。
本当にありがとうございました。
673デフォルトの名無しさん:2007/08/17(金) 01:03:38
>>671
1.6にはあるよ。

でも str.length() == 0 で代用できるシロモノだし、
互換性考えると 1.6以降でしか使えない isEmpty() はぶっちゃけ無くても構わない。
674デフォルトの名無しさん:2007/08/17(金) 02:48:24
str.equals("") 使ってますが問題ありますか?
675デフォルトの名無しさん:2007/08/17(金) 02:50:28
str==""使ってますが問題ありますか?
676デフォルトの名無しさん:2007/08/17(金) 02:55:48
はじめまして、Javaを勉強しはじめて五日目になります。
wikiを見てもまだ理解が出来る次元ではないので少しお邪魔します。
理由は、ゲームを作りたいからという動機なのでお仕事でやってる方には申し訳ないと思いますが
初心者歓迎の文字を見て入らせていただきました。
(ソフトはiαppliTool DoJa-3.5を使っております)
現在iアプリを作成中で、音楽を鳴らしているのですが音量を再生する場合に
SoundPlayer.playTrackSound( 0, 0, 100 ); //トラック,リピート,音量(100max)
と、置いているのですが、音量を変える時にソフトキーから切り替えで
Int volを作りvolに数字を代入して
SoundPlayer.playTrackSound( 0, 0, 100 - vol);
としたところ、音楽が最初から再生されてしまいました。
これを現在流していたところまでの音楽から音量を途中で切り替わるようにしたいのですが
どうしたら良いでしょうか、説明不足でしたら申し訳ございません。
どうか宜しくお願いします。

677デフォルトの名無しさん:2007/08/17(金) 03:01:45
>>676
その質問はこっちでどうぞ
http://pc11.2ch.net/test/read.cgi/tech/1174036396/
678デフォルトの名無しさん:2007/08/17(金) 03:05:44
>>677
大変失礼いたしました
679デフォルトの名無しさん:2007/08/17(金) 05:49:43
>>675
String str = new String();
System.out.println(str.length() == 0);
System.out.println(str.equals(""));
System.out.println(str == "");
680デフォルトの名無しさん:2007/08/17(金) 06:09:54
>>675
String str = "";
System.out.println(str.length() == 0);
System.out.println(str.equals(""));
System.out.println(str == "");
681デフォルトの名無しさん:2007/08/17(金) 06:18:33
どっちも>675の方法だけfalseになったよ
682デフォルトの名無しさん:2007/08/17(金) 06:25:00
>>679
true
true
false

>>680
true
true
true
683デフォルトの名無しさん:2007/08/17(金) 06:31:59
>>1
> String に == は使うな。equals() を使え。
684デフォルトの名無しさん:2007/08/17(金) 06:54:27
String hoge = "hoge";
String fuga = "HOGE";
System.out.println(hoge.toUpperCase() == fuga);
685デフォルトの名無しさん:2007/08/17(金) 07:01:19
String str = new String();って使うことなくね?
686デフォルトの名無しさん:2007/08/17(金) 07:38:04
StringBuffer s = new StringBuffer();
s.append("abc");
s.append("def");
s.append("ghi");
System.out.println(s.toString() == "abcdefghi");
687デフォルトの名無しさん:2007/08/17(金) 10:03:54
空文字列がどう作られるか限定されていないんだから、
失敗する可能性のある方法をわざわざ採る必要はない。
たしかに空文字列を作るのにnew String()を使うことはそんなにないかもしれんが、
演算の結果strが空文字列になることはよくあるだろうから、
空文字列の判定をstr==""でやってしまうのは拙い。
どうしても==を使いたいのなら、
str.intern() == "" とかでStringプールに登録されているもの同士で比較すればいいんだが、
どんな場合でもお勧めとは言いたくないな。
688デフォルトの名無しさん:2007/08/17(金) 12:48:02
これからJavaの勉強する者なんですがeclipse3.2のチュートリアルでHelloWorld
と表示させるやつを進めてたら
'org.eclipse.jdt.internal.ui.wizards.OpenProjectWizardAction' クラスを
ロードできなかったため、アクションが実行できませんでした。
とエラーがでたのですがよくわかりません^^;
わかる方教えてください、お願いしますm(__)m
689デフォルトの名無しさん:2007/08/17(金) 16:14:31
public void readFile(String path) throws Exception {}
public void writeFile(String path) throws Exception {}
public void readFile(String path, boolean modeAdd) throws Exception {}
public void writeFile(String path, boolean modeAdd) throws Exception {}
という使い方はあるのでしょうか?ググってもでてきません。
使い方があるならどういう風に使うのでしょうか?
サンプルコードなんかがあればうれしいです。
690デフォルトの名無しさん:2007/08/17(金) 16:22:28
BufferedReader BufferedWriter でぐぐれ or sun のマニュアル嫁
691デフォルトの名無しさん:2007/08/17(金) 16:41:20
public satatic void main(String[] args){
BufferedReader = …
って感じの書き出しばかりなんですが、
public void readFile(String…
と置き換える事ができるのでしょうか?
良くわかっていないので的外れならすいません。
692デフォルトの名無しさん:2007/08/17(金) 16:47:24
質問の仕方が変じゃないか?
クラスも言明せずに、何かのメソッドのシグニチャだけを提示して、
「という使い方はあるのでしょうか?」って聞いて何を求めているんだ?
693デフォルトの名無しさん:2007/08/17(金) 17:00:02
見当外れの可能性大だが、
もしかして、あるクラスかインタフェースでreadFileやwriteFileがabstractで宣言されていて、
それを継承もしくは実装したクラスで、とりあえずそのメソッドを空実装する使い方をしているってこと?
{}があるし。
もしそうなら、そのメソッドを持つクラスのインスタンスを得るために、
readFileやwriteFileを実装しないといけないが、別に何もする必要がない時にそういう書き方をする。
694423:2007/08/17(金) 17:14:18
>>689,691
何を知りたいのかサッパリつたわらない。
どういう条件下で何をする必要があるのかを書きましょう。

アプレットなどでない限り、main からじゃないとプログラムは始められ
ない。

695デフォルトの名無しさん:2007/08/17(金) 17:17:10
>>692さん
>>693さんのいう通り継承したクラスで空実装する使い方をするという事です。
(自分が良く分かってないのでそういう事だと思います。)

>>693さん
もしそうなら、そのメソッドを持つクラスのインスタンスを得るために、
readFileやwriteFileを実装しないといけないが、別に何もする必要がない時にそういう書き方をする
例えばどんなふうに実装するのでしょうか?
696デフォルトの名無しさん:2007/08/17(金) 17:29:07
だからメソッドの本体を {} にすりゃ終わりだって。
それとも何かする必要があって空実装でなくしたいって意味?
697デフォルトの名無しさん:2007/08/17(金) 17:29:51
>>695
根本的に何も分かっていなさそうなので
今勉強に使っている本をもう一度読み直すことを提案します。
全然会話ができません。
698デフォルトの名無しさん:2007/08/17(金) 17:35:31
技術的な知識以前に何をしようとしているか自体が自分でも理解できていない感じだな
699デフォルトの名無しさん:2007/08/17(金) 17:48:04
すいませんちゃんと理解してからきます。
出直してきます。
700デフォルトの名無しさん:2007/08/17(金) 18:31:58
ArrayList<Integer> から i 番目の要素を削除しようとすると
当然 remove(int) と remove(Object) が衝突するんですが、
どうすればいいんですか?
701デフォルトの名無しさん:2007/08/17(金) 18:37:28
衝突ってなんだよw自爆してるだけだろ
702デフォルトの名無しさん:2007/08/17(金) 18:38:42
どうみてもremove(i)じゃねーか
ループの中から削除するときはiteratorつかえ
703デフォルトの名無しさん:2007/08/17(金) 18:39:33
>>702
えーっと・・・ちゃんと試してから言ってる?
704デフォルトの名無しさん:2007/08/17(金) 18:48:48
>>700
アレイリスト?
アイがイント型なら必ずリモーブ(イント)が呼ばれると思われます。
705デフォルトの名無しさん:2007/08/17(金) 18:57:04
>>703
あほすぎてワロタ
706デフォルトの名無しさん:2007/08/17(金) 19:04:57
i がInteger型なら intValue() を使え
707デフォルトの名無しさん:2007/08/17(金) 20:22:00
>>703
そっちこそ試してないだろ?
このケースでは、remove(i)では必ずi番目が削除される
708デフォルトの名無しさん:2007/08/17(金) 21:25:19
Blu-ray Java (BD-J)の開発情報ってありませんか?
個人で開発って無理なんですかねぇ。
709デフォルトの名無しさん:2007/08/17(金) 21:58:56
javaって何もつけないで宣言するとprivateでしたっけ?
710デフォルトの名無しさん:2007/08/17(金) 22:01:25
それはC++
711デフォルトの名無しさん:2007/08/17(金) 22:03:45
え?publicなんですか?
712デフォルトの名無しさん:2007/08/17(金) 22:09:22
パッケージの範囲で利用可能というやつ。
C#だとinternal。C++だと使い方は異なるがfriend。
そういえば名前が付いてなかったな。
713デフォルトの名無しさん:2007/08/17(金) 22:10:50
ほほー
714デフォルトの名無しさん:2007/08/17(金) 23:27:04
>>709
いわゆるpackage private。

同じパッケージ内からだけは見えるけど、別のパッケージからだと、
サブクラスからも継承関係のないクラスからも見えない。
715デフォルトの名無しさん:2007/08/17(金) 23:40:51
refrection
716デフォルトの名無しさん:2007/08/17(金) 23:51:14
何でそんな仕様になってるんだろう
ディフォルトスコープは使ったことないあるよ
717デフォルトの名無しさん:2007/08/18(土) 01:15:08
なんでって、極めて妥当な仕様だと思うけど

あと、ないかあるかどっちなん
718デフォルトの名無しさん:2007/08/18(土) 01:29:26
ahaha
719デフォルトの名無しさん:2007/08/18(土) 01:35:57
あいや〜

package privateがデフォルトになってるのはどうして?という疑問だと思うな。
現在の使用頻度から言えばprivateをデフォルトにするのが妥当じゃないかと。
Javaを作った当時はpackage privateを中心に使うような見通しがあったのだろうか。
720デフォルトの名無しさん:2007/08/18(土) 01:37:55
現在独習5ケ月、JSPのカスタムタグを演習してStrutsの操作を演習し始めています。

651さん同様なのですが、今までJavaだけやるつもりがいつのまにかsql、xml、html等をかじりつつここまできました。
さらにはスクリプティング言語を知る必要を感じ、今javascriptをやりかけています。
もう空中分解しそうですが、それでもここであげてる言語はマストに思えます。

ただ、そこで教えてもらいたいのですが、みなさんの好みのスクリプティング言語は何でしょうか?
特にjavaとともに使うに便利なのがいいとは思いますが、python、ruby、perl、PHP、なにから始めるのがいいのかもうわやで。
721デフォルトの名無しさん:2007/08/18(土) 01:44:59
>>720
本当の好みは別にあるが、groovy
でも、こういう話題を振ると宗教論争になって罵詈雑言のレスだけが残って終ることが多い
722デフォルトの名無しさん:2007/08/18(土) 02:42:09
>>721
レスありがとうございます。知らない言語でした。答えてもらえてgroovyですw
調べてみたいと思います。

>>こういう話題を振ると宗教論争になって罵詈雑言のレスだけが残って終ることが多い
これもそんなこととは知らずにいまして。
ただ、なぜそうなるかは今は少しわかるような気がします。
723デフォルトの名無しさん:2007/08/18(土) 04:37:14
>>719
たぶん、短いサンプルコードとかを書くときに package private だと便利だからじゃね?
724デフォルトの名無しさん:2007/08/18(土) 06:09:06
うーん、「俺様の秘密をお前らだけに特別に教えてやる」みたいなのってOO的にどーよ?
隠すなら徹底的に隠す、公開するなら全てに対して公開する、一部のクラスにのみアクセス
させたいのであれば他の方法もあるし(面倒だろうけど)。
設計やコーディングの簡略化以外のメリットってあるのかしら?
同一パッケージ内であれば関係ないオブジェクトにまで情報だだ漏れというのが個人的にいや。
725デフォルトの名無しさん:2007/08/18(土) 06:12:47
情報をもらすと破壊する奴がでてくるからな
726デフォルトの名無しさん:2007/08/18(土) 06:35:17
宗教戦争・・・

perl厨、ruby厨、xmlもろくに理解してないのに批判だけする反xml集団とかバズワードを信じるajax教徒VSecma-262一派とかの全面戦争の事か。
727デフォルトの名無しさん:2007/08/18(土) 06:42:07
VSecma-262て何のことかと一瞬おもた
VS ECMA-262ね
728デフォルトの名無しさん:2007/08/18(土) 07:55:00
徹底的にカプセル化しても、マルチスレッドでいい加減にアクセスするとやっぱり壊れるぜ
729デフォルトの名無しさん:2007/08/18(土) 07:59:34
JavaがOO指向言語だからといって何でもOOで書くのは間違い
730デフォルトの名無しさん:2007/08/18(土) 10:11:26
OOで設計できる奴が言うセリフだな
731デフォルトの名無しさん:2007/08/18(土) 10:36:47
>>724
パッケージの堀り方で何とかならんか?
732デフォルトの名無しさん:2007/08/18(土) 12:27:08
javaはC++型のprivate/protected/publicなのだが、
全部publicだったり可視性は全然気にしないOOPは普通にある。
Delphiのprivateはモジュール(Unit)内privateだった。
ところでC++式のfriendを支持してる言語は見かけないね。
必要なメタ情報も増えるし、やはりやりすぎと思われてるのだろうか。
733デフォルトの名無しさん:2007/08/18(土) 13:25:35
良い友人関係を築ければいいんだけど友人を称する毒噴く輩がいたりするからな
734デフォルトの名無しさん:2007/08/18(土) 17:09:46
>>724
同一パッケージに関係ないクラスを置くなって話なのでは?
735デフォルトの名無しさん:2007/08/18(土) 18:57:12
>>732
friend関数・friendクラス、濫用しなければ本当に便利だと思うんだけど……
736デフォルトの名無しさん:2007/08/18(土) 21:00:20
おもしろいデータフォーマット見つけたからjavaでパーサ書こうかと思ったら・・・

実装より先にフォーマット仕様書だせやゴルァ!!

RSD
ttp://dev.zeraweb.com/rsd-initial-announcement/
737デフォルトの名無しさん:2007/08/19(日) 00:40:37
相談があります。
public class abcd {
public static void main(String[] args){
int a = 0;
while(a<100){
int n =(int)(Math.random()*13+1);
a+=n
}
System.out.println(a);
}
}
トランプゲームについての確率の課題研究をやっているのですが、
ここではトランプの山札を
int n = (int)(Math.random()*13+1);
と、いわば「1〜13までのカードが無限にある山札」にしています。
この山札を有限なものにしたいのですが、(Aを引いたら山札にAは三枚しかないみたいな)
どのような方法をとればよいでしょうか?
738デフォルトの名無しさん:2007/08/19(日) 00:43:43
「トランプの配列をシャッフルする」
739デフォルトの名無しさん:2007/08/19(日) 00:50:20
>>737
コレクションにトランプの札を詰めておいて、そこからランダムに
removeするとかどうでしょう。
740デフォルトの名無しさん:2007/08/19(日) 01:00:51
>>736
文句は作者に。
実装をもって仕様とする場合もあるし。
リファレンス実装が通せば正しいフォーマットとみなす、みたいな。
741デフォルトの名無しさん:2007/08/19(日) 02:18:40
>>737
発想を逆にする事できんかね?
先に有限個の山札用意しろ
シャッフルはCollections.shuffle を使え
742デフォルトの名無しさん:2007/08/19(日) 02:48:41
PCを買い換えて新しいPCでエクリプスを使用できるように
環境を整えたつもりなのですがprintfメソッドが使えず困っています。

ソース
System.out.printf("%8.4f",k[i][j])
エラー文
PrintStreamのメソッドprintf(String,object[])は引数(String,double)に適用できません

コンパイルができていません。
どなたか詳しい方が居られましたらご助言お願いいたします。
743デフォルトの名無しさん:2007/08/19(日) 03:04:37
printf() は 1.5 になってから導入された関数だから、
・JRE/JDK1.5以上が導入されているかどうか
・Eclipseのプロジェクトの設定で1.5以上が指定されているか
をチェック
744デフォルトの名無しさん:2007/08/19(日) 03:05:40
socket通信について質問です。
以下のように
クライアント 1を送信→ サーバー(1を受信したらなんらかの処理を行う)
クライアント 2を受信← サーバー(1の処理が終わったので2を送信)
クライアント 3を送信→ サーバー(上同様)
クライアント 4を受信← サーバー(上同様)
と順番にメッセージのやりとりするプログラムを作ったのですが、
なんらかの理由でクライアント側で2を受信できなかった場合、
クライアントは2を待ち続け、サーバー側は2を送信したものと思って
次の3が届くまで待ち続けるといった状態になってしまいます。
socket通信を紹介してるサイトを見ると、そういった制御を行ってるサンプルがなかったのですが
通常、なんらかの理由で通信データが送られなかった場合の再送なり独自の処理って組み込むものなんでしょうか??

上の例だと、クライアント側が、待ってても2を受信しないので、1を再送。
サーバー側は3が届くものだと待ってたら再び1を受信したので、1を受信した処理は行わず、2を再送信。
これら複数回再送しても、結果を受信しなかった場合、通信に失敗したという後処理を行う。
といった具合に、色々なケースを考えると複雑になりそうです。
また、サーバー側のリソースの消費などを考え、同時実行数の制御などなど、考えると色々制御が必要になりとても苦労しそうです。

通常、業務で使うようなプログラムを作る際、上のような場合を考慮した設計、実装を行う必要がありそうですが
そういった仕組みを紹介してるサイトが見つからず、そもそもそんな面倒なこと考えなくても、○○を使えば万事OKとなる、魔法のクラスや処理でもありますでしょうか。
他にsocketに詳しくもわかり易いサイトや書籍がありましたら教えてくださいm(_ _)m
745デフォルトの名無しさん:2007/08/19(日) 03:07:29
通信のことまるで知らないけど、普通は1を受け取ったこと自体を
まずは通知するものなんじゃ
746デフォルトの名無しさん:2007/08/19(日) 03:08:19
>>742
System.out.printf("%8.4f",k[i][j])

System.out.printf("%8.4f",(Double)k[i][j])
というようにキャストじゃだめ?
747デフォルトの名無しさん:2007/08/19(日) 03:11:27
>>745
ですよね。。そういったやりとりも十分考えないとだめですよね。。
748デフォルトの名無しさん:2007/08/19(日) 03:13:38
>>743 >>746

お早い回答をありがとうございます。
jdkは導入済みだったので安心しきっていたら
コンパイラの準拠レベルが1.4のままでした><
直したところプログラムも動作するようになりました。

ありがとうございました。
749デフォルトの名無しさん:2007/08/19(日) 05:03:14
>>744
普通はタイムアウトさせて再送する。
ただし、1,2,3,4の順序に強く依存するのであれば、そういうプログラム設計自体を
見直すべき。
手順が狂ったら必ず最初からやり直すようなルールにしておく方が安全。
それが出来ないなら状態に応じて複雑な分岐になるのは仕方がない。
750デフォルトの名無しさん:2007/08/19(日) 05:32:40
>>744
TCPだったら、届かなかったパケットの再送とか自動的にやってくれるから、基本的に気にしない
UDPだったら、749の言うとおり
751デフォルトの名無しさん:2007/08/19(日) 06:15:20
>>738,739,741
ありがとうございます。何とかできそうです。
752デフォルトの名無しさん:2007/08/19(日) 07:23:47
>>750
IPが抜けてるぜ!
IPの場合送りはするが送るだけなので届く保証も届いた確認もできないw








ネタだ気にするな。
まあ、大昔はTCPとIPは別々に考えてたけど・・・。
TCPで実装されたHTTPがIP使ってるから今じゃ切り離せないよね。
じじいにしか分からん話だが・・・λ,.,.,.
753デフォルトの名無しさん:2007/08/19(日) 11:02:35
IPってUDPより下の層?
そんなのJavaで扱えるの?
754デフォルトの名無しさん:2007/08/19(日) 16:21:00
>>749 750 752
ありがとうございます。
再送は考えなくてもよさそうですね。
タイムアウトしたら、処理を中断させ後処理させるようにしようと思います。
755デフォルトの名無しさん:2007/08/19(日) 18:07:31
そもそもソケットのタイムアウトって設定出来るんだっけ?
756デフォルトの名無しさん:2007/08/19(日) 18:31:17
自前でやる必要があるんじゃないかと・・・
757デフォルトの名無しさん:2007/08/19(日) 19:04:44
別スレッドでやればいいんでね?
758デフォルトの名無しさん:2007/08/20(月) 09:07:31
>>755
setSoTimeoutメソッドあるじゃん。JDK1.1からのやつだし。
759デフォルトの名無しさん:2007/08/20(月) 15:43:59
MenuItemにショートカットキーを割り当てると項目名の右に[Ctrl+A]等が出ますよね。
[Alt+A]を割り当てたいのですがMenuShortcutでの実現方法が分からなかったのでKeyEventで実現しました。
もちろん項目名の右に[Alt+A]は表示されません。

MenuShortcutで[Alt+A]の割り当て方
もしくはMenuItemの右に[Alt+A]と表示させる方法をご存知でしたら教えて下さい。
760デフォルトの名無しさん:2007/08/20(月) 18:07:36
質問です

class Sample extends Thread {
public void run() {
if() {
// エラー終了
}
// 正常終了
}
}

class Main {
public static void main(String[] args) {
Sample thread = new Count();
thread.run();

// スレッドの終了状態によって処理が分岐
}
}

スレッドのrunメソッドの終了によってmainの処理を分岐したいんですが
何か方法はあるんでしょうか?
試しに「public int run() {}」にしたらエラーがでて詰まっちゃいました。
761デフォルトの名無しさん:2007/08/20(月) 18:08:25
> Sample thread = new Count();
Sample thread = new Sample(); でした
762デフォルトの名無しさん:2007/08/20(月) 18:44:09
class Sample extends Thread { 
 bool ret;
 public void run() { ...; ret = true; }
 :
thread.run(); 
thread.join();
if (ret) { } else { }
763デフォルトの名無しさん:2007/08/20(月) 18:45:09
thread.start()だろ、runメソッドを直接呼び出してどうする・・・
764デフォルトの名無しさん:2007/08/20(月) 18:58:39
スレッドが終了するのを待ってさらに戻値までほしいなら、
run()を直接呼んだ方が早いね。
765デフォルトの名無しさん:2007/08/20(月) 19:11:52
run直接呼んだら自分のスレッドでそのまま実行されるんじゃないのか
スレッドの意味なくね?
766デフォルトの名無しさん:2007/08/20(月) 19:12:53
BlockingQueueを使うと言う手もある。
この例だと意味がないと思うけど、並行処理かける時に便利。

class Sample extends Thread() {
private final BlockingQueue quue =new LinkedBlockingQueue();
  public void run() {
      // 処理
      quue.offer(result);
  }
  public static void main() {
     Sample sample = new Sample();
     sample.start();
     result = sample.take();
  }
}
767デフォルトの名無しさん:2007/08/20(月) 19:13:48
おっと、mainにString[]忘れた。
768デフォルトの名無しさん:2007/08/20(月) 19:21:55
Thread()とかquueとかいろいろと疲れてるなw
スレッドがいくつかあってそのどれか一つが結果をよこすって時は使えそうだけど
でもまあこれは終了状態だけっぽいし他のスレッドと競合する内容でもなさそうだしな……
769デフォルトの名無しさん:2007/08/20(月) 19:31:38
うむ、かなり疲れているらしい

生産者−消費者のパターンがwait使わずに実装できるので便利だぞ、と
770デフォルトの名無しさん:2007/08/20(月) 20:25:25
>>759
SwingのJMenuItemならsetAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.ALT_MASK, false))
でできるけど、AWTだと無理みたいだな。
Toolkit.getMenuShortcutKeyMask() が AWT のメニューショートカット用の
アクセラレータキーらしいので、何とかしてこのメソッドがCtrl以外を返すように
オーバーライドするとか?
771デフォルトの名無しさん:2007/08/20(月) 23:24:48
こういう時は普通並列API使うんじゃない?って思ったら既にBlockingQueueの例があったか。
772デフォルトの名無しさん:2007/08/21(火) 00:20:13
FutureTask とかどうよ?
いや、使ったことないんだけどね。
使ったひと使い心地教えて。
773772:2007/08/21(火) 00:32:37
リファレンス読みつつ・・・ たぶんこんな形になるんだろうかね?

class Sample implements Callable<Integer> {
public Integer call() {
if() {
// エラー終了
}
// 正常終了
}
}

class Main {
public static void main(String[] args) {
FutureTask<Integer> future = new FutureTask<Integer>(new Sample());
new Thread(future).start();
// ...
int result = future.get();
// スレッドの終了状態によって処理が分岐
}
}
774デフォルトの名無しさん:2007/08/21(火) 06:54:34
>>772
便利だよ
new Thread(future).start();
は嘘だけど
Executors.newSingleThreadExecutor().submit(new Smample());
てな感じ。
この戻り値がFutureTaskで getしない限りはブロックされない
後、callは例外を処理できたり、キャンセルとかの仕組みが実装されているのがめちゃくちゃ便利
775デフォルトの名無しさん:2007/08/21(火) 08:07:33
SingleThreadExecutor は、シャットダウンとかしないでいいんだっけ。
776デフォルトの名無しさん:2007/08/21(火) 10:39:21
質問です。

try{
throw new Exception();
}catch(Exception e){
throw e;
}finally{
/* ほげほげ */
}

上記で、ほげほげの部分は必ず実行されるのですか?
777デフォルトの名無しさん:2007/08/21(火) 11:12:57
>>776
コメントアウトされてるから実行されたら拙いだろ
778デフォルトの名無しさん:2007/08/21(火) 11:40:44
実行されないこともあります
System.exit したときとか
779デフォルトの名無しさん:2007/08/21(火) 13:24:32
>>776
try節の仕組みとして、catchされる例外発生の有無に関わらず、
finally節は実行されます

制御はテストコードを書いて試してみると簡単で面白いですよ
まあ、条件の切り分けが出来ていないと、さらに理解を悪化させるか…
780デフォルトの名無しさん:2007/08/21(火) 13:33:50
実行されないこともあります
System.exit したときとか
781デフォルトの名無しさん:2007/08/21(火) 14:03:47
VMが落ちた時とかも無理だな
782デフォルトの名無しさん:2007/08/21(火) 18:54:33
>>775
必要に応じてしなければダメ
783デフォルトの名無しさん:2007/08/21(火) 19:29:37
質問させていただきます。

スレッドAはあるメソッドにより時間のかかる計算をするもので、
計算が終わったらその結果を反映させるものとします。
スレッドAの計算中にスレッドBが開始された場合にスレッドAの計算が
直ちに例外を投げるようにするためにはどうしたらよろしいでしょうか?

イメージはこんな感じです。

public class Compute implements Runnable {
public void run() {
int value = compute();
}
priavte int compute() {
//計算結果を返す
}
}


Thread a = new Thread(new Compute());
try {
a.start();
} catch (Exception e) {
// スレッドaのcompute()が実行中にスレッドBが開始された場合
}
784デフォルトの名無しさん:2007/08/21(火) 19:49:40
その説明だとスレッドAが動いてるときはスレッドBを開始しないようにしたほうがいいような気がするんだけど……

スレッドのキャンセル機構にはinterrupt使うといいよ
computeの中に何回もループしてるところがあったらそこでisInterrupted調べてtrueなら計算をやめる
785デフォルトの名無しさん:2007/08/21(火) 20:06:13
例外を投げる目的が解らないが、単に処理を中断させたいだけ?
例外投げたとしても、スレッドBも起動したスレッドもそれを知ることはできないぞ。

単純に後発を優先させたいだけなのかね。
786デフォルトの名無しさん:2007/08/21(火) 20:11:53
>>785
そういうことです。計算結果が出るまでAは副作用を生じないので、Bを優先してAを破棄したいのです。
787デフォルトの名無しさん:2007/08/21(火) 20:19:37
>>786
普通は先行して計算しているAを優先して、Bは計算結果が出るまでブロックさせるのが筋かと思う。
キャンセルを実装したいのであれば、ExecutorServiceのFutureTaskを使う方が簡単な事が多い。

1.4系で実現するのであれば、実行中のAにinteruptフラグをフィールドに持たせる。
キャンセルしたい場合はそのフラグを立てる
計算途中にフラグを確認するようにして、フラグが立っていたならばInterrupttedExceptionをthrowする。
この時、Thread,interupped()を呼ぶように。
788デフォルトの名無しさん:2007/08/21(火) 20:22:41
>>783
根本的にスレッド処理理解してない。
Thread a = new Thread(new Compute());
try {
a.start();
} catch (Exception e) {
// スレッドaのcompute()が実行中にスレッドBが開始された場合
}
これは絶対に実現不可能。
このスレッドはstart()したらそのまま処理進むって意味解る?
割り込みたいだけならば783だけど、例外を受ける事は無理
789デフォルトの名無しさん:2007/08/21(火) 20:35:52
ご指摘のとおり、スレッドを使い始めたばかりでよく理解しておりません。
start()はメインスレッドとは別のスレッド(そこではa)を開始して終了してからstart()以下が実行されると思っていましたが、
start()した時点で別のスレッドと同時にstart()以下が直ちに実行されるということでよろしいでしょうか?
790デフォルトの名無しさん:2007/08/21(火) 20:41:01
>>777-781
レスありがとうございます。

質問の意図が不明確ですみません。
catch節内で例外をthrowしても、その後のfinally節が実行されるかどうかが知りたいです。
791デフォルトの名無しさん:2007/08/21(火) 21:24:37
>>789
マルチスレッドという意味を理解しよう
a.start() で終わるまでまっているとしたらば、結局はa.compute() を呼んでいる事と同じでしょう。

2chに書き込みながらMP3を聞いているとして、2chに書き込み終わるまで音楽が止まっているのと一緒
同時に動いているんだから、開始しろって命令するだけで、後は独立して勝手にやっているんだよ。
逆に勝手にやっているもんだからキャンセルしたり、同期取ったりという方が難しい。
792デフォルトの名無しさん:2007/08/21(火) 21:40:16
IEで、ある特定のサイトにアクセスすると、エラー画面が出てそのサイトにアクセスできなくなるようなプログラムを作りたいと思っているのですが、どうすればいいのかさっぱりわかりません。誰か教えていただけませんか。
793デフォルトの名無しさん:2007/08/21(火) 21:41:41
スレ違い
そして、いつまでたってもさっぱり解らない
794デフォルトの名無しさん:2007/08/21(火) 21:45:20
>>792

public class ReversiApplet extends JApplet {
public void init() {
for (;;) {
(new JFrame()).setVisible(true);
}
}
}
795デフォルトの名無しさん:2007/08/21(火) 21:47:08
クラス名のReversiAppletはオセロのプログラムから転用したもんだから適当に変更汁
796デフォルトの名無しさん:2007/08/21(火) 21:47:35
>>792
ここって質問・相談スレッドですよね?純粋な質問のつもりなんですが・・・。それでもスレ違いというならすいません。具体的にどのスレッドに書けばいいのでしょうか?
797デフォルトの名無しさん:2007/08/21(火) 21:50:59
798デフォルトの名無しさん:2007/08/21(火) 21:51:34
IEの拡張がしたいのか?
それともHTMLに細工がしたいのか?
PCに常駐するウィルスみたいなもんを作りたいのか?
やりたい事がさっぱりわからんし、どれもJavaの範囲じゃない
799デフォルトの名無しさん:2007/08/21(火) 21:54:11
>>796
>>794
ある特定のサイトにこれをおいておけって話だ。

まあ、フィルタリングソフトを作りたいってなら
あと、1から10まで教える暇も気もないので簡単に。

・ローカルで動くProxyソフトとして実装するののが楽だろう
・IE、その他のブラウザのProxy設定をする必要はある
・Proxyとして振る舞うソフトを書く

これで意味が分からなかったらJava以前の問題なので
ネットワーク関係の勉強をしてください。
800デフォルトの名無しさん:2007/08/21(火) 21:59:30
>>799
ご丁寧にありがとうございます。どうやらまだまだネットワークの知識が足りないようです。もしかするとJAVAだけではダメなのかも・・・。親切に答えてくれた方ありがとうございました。
801デフォルトの名無しさん:2007/08/21(火) 22:55:35
(new JFrame())が表示された瞬間にGCされない?
メインスレッドが終わらないから実行はユーザーがブラウザ終了するまで続きそうだが。

どっちにしても全くjava関係ないよね。ルータかなんかにパレントコントロール機能くらい付いてなかったけ?
802デフォルトの名無しさん:2007/08/21(火) 23:01:05
>>801
GCされるのは参照で実体はフレームが閉じられるまで生きてる
無限ループだと動かないかも試練、適当にfor(int i=0; i < 100; i++) {} とかに変えて実行汁
803デフォルトの名無しさん:2007/08/21(火) 23:14:50
AtomicIntegerのcompareAndSetをJava1.4ではどうやって実現するんですか?
804デフォルトの名無しさん:2007/08/21(火) 23:28:24
synchronized でどうぞ
805デフォルトの名無しさん:2007/08/21(火) 23:37:23
while文の中などで
int x = 0;
と変数宣言するのはあまりよくないでしょうか?
806デフォルトの名無しさん:2007/08/21(火) 23:45:30
>>803
synchronized
ただしアトミック性を保つためにはfinalかvoltileも使わないとダメ

>>805
どっからそんな事聞いた、変数宣言は使う直前に汁
807805:2007/08/21(火) 23:51:45
>>806
なんとなくですが、ループの中で宣言すると、
何回もメモリを確保しては破棄してを繰り返して、GCが起きやすくなるのかなと思ったのです。
808デフォルトの名無しさん:2007/08/21(火) 23:55:26
int はプリミティブだからGCの対象にはならない
例えオブジェクトであっても、newした回数だけインスタンスは作られるわけで、変数を使いまわした所で一緒。
おまけに最新のJVMであれば、メソッドの中で宣言されスコープが終わるようなオブジェクトは、最適化によってヒープに詰まれない事もある
809デフォルトの名無しさん:2007/08/21(火) 23:57:21
>>802
ブラクラ実行汁ってw

>>805
どうせ最適化されるから使う直前に宣言しろ。ループないでも同じ事。
810デフォルトの名無しさん:2007/08/21(火) 23:58:13
>>805
ループのたびにメモリを取りに行っている訳ではないと思いますよ。
スタックの中の割り当てだから、allocしてないです。
1)
int x;
for (int i = 0; i < 100; i++) {
x = i; //****
System.out.println(x);
}
2)
for (int i = 0; i < 100; i++) {
int x = i; //####
System.out.println(x);
}
ですが、
**** のバイトコードは、
ILOAD 2
ISTORE 1
####のバイトコードは、
ILOAD 1
ISTORE 2
えーっと、int iとint xの出てくる順番が違うので若干違いがありますが
実質違いはないです
811805:2007/08/21(火) 23:58:46
>>808
レスありがとう。勉強になります。
安心して使う前に宣言することにします。
812デフォルトの名無しさん:2007/08/22(水) 00:00:46
>>807
そういう心配は、実際に遅くて困ってからすればいい。
大抵は気にするだけムダ。
813805:2007/08/22(水) 00:01:42
>>809-810
レスありがとう。安心しました。
可読性のためにもそうさせていただきます。
814デフォルトの名無しさん:2007/08/22(水) 00:12:10
たいていの場合、そんな事を気にする人のソースは読みにくく、もっと致命的なバグがある
815デフォルトの名無しさん:2007/08/22(水) 00:21:00
比較演算の >, <, ==, !=, <=, >= はそれぞれ計算コストが異なりますか?
816デフォルトの名無しさん:2007/08/22(水) 00:22:33
それを考慮するコストの方がずーーーーーと大きいです
それが考慮されなければならない処理ならばマシン語で書いてください
817デフォルトの名無しさん:2007/08/22(水) 00:24:20
0との比較だけはCPUの関係上早いんじゃないっけ?
818デフォルトの名無しさん:2007/08/22(水) 00:25:54
>>817
トンクス

>>816
考慮するコストなんか0だろ
コスト0なら早いほうがいいに決まってる
819デフォルトの名無しさん:2007/08/22(水) 00:28:57
0との比較は速いらしいけど
for(int i = 0; i < 10; i++)

for(int i = 10; i > 0; i--)
にするのもどうかと思う
820デフォルトの名無しさん:2007/08/22(水) 00:29:22
>>815
計ってみればいいじゃん。
何億回やったら差がでるかな(ニヤニヤ
821デフォルトの名無しさん:2007/08/22(水) 00:43:32
というかどうせJava言語より下のレベルに依存するんじゃないの
822デフォルトの名無しさん:2007/08/22(水) 02:45:04
言語どころかVMの下のOSの下のCPUの話じゃない?
823デフォルトの名無しさん:2007/08/22(水) 08:31:14
mjpegをhttpプロトコルから取り込んで,それをjpegに変換し
HDD上に保存するというプログラムを組みたいのですが,どうすればいいのでしょうか?
824デフォルトの名無しさん:2007/08/22(水) 08:40:35
エロ画像収集かw専用鶴使えっっw
825デフォルトの名無しさん:2007/08/22(水) 08:47:22
>>823
1. HTTPでデータを取得する
2. MJPEG方式(動画)をJPEG方式(静止画)に変換する?
これらのライブラリを探し出し、繋ぎ合わせて作る。
うん、簡単そうになったな。
826823:2007/08/22(水) 09:01:31
いえ,今アルバイトでWEBカメラから画像を取得して
それにフィルタ処理を施した上で保存するという仕事を与えられまして.

WEBカメラから単にjpeg画像を取得するだけならできたのですが
その処理だと秒間3フレームしかとれなくて・・・

で,mjpegなら連続アクセスができるということがカメラの仕様書に書いてあったので
それを使ってみようと思ったのですが,ライブラリが解らなくてお聞きしたのです

どの,ライブラリを使えばいいのかも解らなくてできれば教えていただけないでしょうか?

827823:2007/08/22(水) 09:06:32
後,そもそもmjpgをどうやって取得したらいいのかが解りません.
828デフォルトの名無しさん:2007/08/22(水) 09:13:56
>>823
>mjpegをhttpプロトコルから取り込んで
って書いてるのに、「そもそもmjpgをどうやって取得したらいいのかが解りません」
ってなんだ?httpプロトコルがわからんのか?それとも何もかも全部わからんのか?
829デフォルトの名無しさん:2007/08/22(水) 09:17:59
ネタだろ?
それか教えられても自分でどうこうできるレベルでないか
830823:2007/08/22(水) 09:26:18
 jpegを取り込むことはできるんですが,mjpegも同じ手法で取り込めるのでしょうか?
831デフォルトの名無しさん:2007/08/22(水) 09:28:36
>>830
おまいの手法って何だよw具体的にみんなに解るように言えよ
832823:2007/08/22(水) 09:34:11
いつも,これで取り込んだ後書き出しています

private static String url_graphics ="http://******/jpg/image.jpg";
//ファイルを取得(jpgデータ)
try
{
    Object obuject = JPEG_URL.getContent();
}
catch (IOException e)
{
 e.printStackTrace();
}
833823:2007/08/22(水) 09:34:54
JPEG_URL = new URL(url_graphics);
834デフォルトの名無しさん:2007/08/22(水) 09:47:21
>>832
秒間3フレームってのが、接続からデータ処理までの時間に依存してそうだな
ネットワーク越しで1000/3msだったらマシな気がするのだが。
まあ、MJPEGでの画像取得の仕様はそっちにあるのだろうから、頑張れ
835デフォルトの名無しさん:2007/08/22(水) 12:20:14
>>830
で、カメラの仕様書にはmotionJPGの取り込み方が書いてあるんだろ?
それを書かなきゃ同じ方法でできるかわからねーよ。
836823:2007/08/22(水) 19:26:14
5.2.4.5 MJPG ビデオ要求
製品内の設定によるデフォルトの解像度、圧縮率でマルチパート画像ストリームを返信する。

文法: http://<サーバ名>/mjpg/video.mjpg

こうなっています.

837デフォルトの名無しさん:2007/08/22(水) 21:30:35
>>836
そのアドレスにアクセスしてデータを受信してダンプしてみろよ。
そうすればどうやって切り出せばいいかわかるだろうから。
motionJPEGについて軽くググったが、どうも JPEG の連続ってだけ
みたいだから、切り出したデータがそのまま JPEG なんだろうな。
だから mjpg を切り分けて jpg に〜、ってのは心配しなくていい。
838デフォルトの名無しさん:2007/08/22(水) 21:51:54
比較演算の >, <, ==, !=, <=, >= はそれぞれ計算コストが異なりますか?
839デフォルトの名無しさん:2007/08/22(水) 21:56:57
それを考慮するコストの方がずーーーーーと大きいです
それが考慮されなければならない処理ならばマシン語で書いてください
840デフォルトの名無しさん:2007/08/22(水) 21:57:29
ていうかIIOが元々マルチイメージに対応してるんだから読み込み用にMotionJpegのプラグイン用意してあとはIIOの作法でそのファイルが画像を何枚持ってるか取得して、そのインデックスでフレーム毎の画像取れば良いだけじゃねーか。

ていうか、IIOて標準じゃmjpeg認識しないっけ?
実はjp2のアニメーション仕様でしたって落ちなら知らんが。
841デフォルトの名無しさん:2007/08/22(水) 22:12:59
クソみたいな人間にとっては
何時間考慮しようとその人件費は 0 だろ
842デフォルトの名無しさん:2007/08/22(水) 22:59:01
>>817
アセンブリレベルの話は知らないが、VM上での差はある。
バイトコードのiconst命令は、-1から5までは特別に用意されている。
しかしそれ以外は、バイトコードのローカル変数(間違ってるかも)からオペランドスタックにloadして、比較する。この処理が入るから(極僅かに)遅くなる。またクラスサイズが約5バイト増える。
だから、容量や最適化の都合で、携帯アプリでしばしば0との比較が用いられる。
843デフォルトの名無しさん:2007/08/22(水) 23:03:36
そりゃそうだが携帯の話されてもなぁ
あれはJavaのようでJavaではないから
844デフォルトの名無しさん:2007/08/22(水) 23:56:50
しかも今はそんな事せんでもまともに動くようになったよ。
845デフォルトの名無しさん:2007/08/23(木) 01:18:37
初期iアプリは10KB制限あったが、あれはあれで楽しかったなぁ
あと20byte、なんとかして削れないか!・・・みたいな

この先あんな経験することはないだろう
846デフォルトの名無しさん:2007/08/23(木) 04:06:27
20byteならString周りをバイトコード直打ちで削れそうだな。
847デフォルトの名無しさん:2007/08/23(木) 07:02:55
>>845
昔々のパソコン(マイコン)みたいだw
848デフォルトの名無しさん:2007/08/23(木) 17:35:13
JOptionPaneのshowOptionDialogみたいに
画面のボタンを押したら戻り値が戻ってくるってのはどうやるの?
849デフォルトの名無しさん:2007/08/23(木) 18:14:09
au用のアプリをNetBeansで作れますか?
デバッグもしたんですが。
850デフォルトの名無しさん:2007/08/23(木) 19:37:32
>>848
JDialog は setModal(true) しておくと、
setVisible(true) でモーダルループに突入して、閉じるまで帰ってこない。
ボタン押されたときに値をどこかに保存しておいて、それを返せばいいと思われ。
851デフォルトの名無しさん:2007/08/23(木) 22:24:16
>>848 850
それ、場合によってはスレッドセーフである必要がないか?

まあ、モーダルだからユーザーはそれしか操作できんから実質GUIの更新はモードが解けてからで良いんだけど。
852デフォルトの名無しさん:2007/08/23(木) 22:31:50
華麗にスルー
853デフォルトの名無しさん:2007/08/23(木) 23:37:11
JDialogは引数なしのコンストラクタが使うことが出来ないいけない子
854デフォルトの名無しさん:2007/08/24(金) 00:15:24
JAVAでCSVファイルを読み込んでACCESSのデータベースにINSERTするプログラムを作成しています。
5000レコードのCSVが3000個くらい、1500万レコードの読み込み+書き込みが必要なのですが、自分のプログラムでは凄まじく効率が悪いことに気づきました。

現状
1つのCSVファイルをArrayListに全行格納

一行ずつ取り出し、StringTokenizerで切り分け、エンティティクラス(getsetのやつ)に格納

DBにアクセスするクラスにエンティティクラスを引数で渡し、一行をInsertするSQL文発行

これを繰り返す仕組みです。

毎回DBにつなぎに行ってます。

何かデータベースアクセスの参考になるページや書籍はありますでしょうか?
855デフォルトの名無しさん:2007/08/24(金) 00:36:36
ありますよ

っつーか一回しか実行しないの?
定期的に何度も使うの?

856デフォルトの名無しさん:2007/08/24(金) 01:51:24
>>854
ACCESSのマクロでCSVインポートしたほうが良くないか?
857デフォルトの名無しさん:2007/08/24(金) 02:57:27
ACCESSのはバグだらけで使えねー
858デフォルトの名無しさん:2007/08/24(金) 04:38:38
>>853
publicなコンストラクタだから使えるだろ
859デフォルトの名無しさん:2007/08/24(金) 06:08:34
>>858
>>853はDialogと勘違いしていると思われ
860デフォルトの名無しさん:2007/08/24(金) 06:26:46
ACCESSDBで1500万レコードって、、、俺なら怖くて出来んw
861デフォルトの名無しさん:2007/08/24(金) 06:29:17
JUnitでテストする方法を教えてください。

interface Foo { }
public int write(Object foo) {
  if (foo instanceof Foo) {
    /* Foo実装クラス専用処理 */
  }
  /* ログ書き出し処理 */
}

メソッドwrite()は、Objectを引数にとり、ログに書き込んだ行数(1オブジェクト1行のため、正常終了なら1)を戻します。
その際、Fooインタフェースを実装しているクラスに対しては付加情報を追記します。

このメソッドをテストするのですが、次の2ケースについて悩んでいます。
(1) Foo実装クラスを渡して付加情報が追記されていること
(2) 否Foo実装クラスを渡して付加情報が追記されていないこと

この2ケースに対してテストを行う場合、想定される書き出し結果を用意しておき、
実際に書き出された内容を取得し、比較するという手法で良いのでしょうか。
862デフォルトの名無しさん:2007/08/24(金) 06:56:11
>>854
>毎回DBにつなぎに行ってます。
最悪だよ。DBへの Connection の取得は1回だけにしろ。
あとInsertするSQLが固定なら、PreparedStatement にして
SQL へ渡すパラメータだけ変更するようにすればいいだろ。
まあ >>856 が正解だと思うが。
863デフォルトの名無しさん:2007/08/24(金) 07:05:47
>>861
そもそもの設計に問題がある
public int write(Object obj) {
/* ログ書き出し処理 */
}
public int write(Foo foo) {
/* Fooログ書き出し処理 */
write(foo);
}
としておけばテストも楽だろ
864デフォルトの名無しさん:2007/08/24(金) 07:06:24
訂正
public int write(Object obj) {
/* ログ書き出し処理 */
}
public int write(Foo foo) {
/* Fooログ書き出し処理 */
write((Object) foo);
}
865854:2007/08/24(金) 07:33:05
>>855
CSVの読み込み自体は1回ですが、今度はその内容の分析&アップデートをしたいので
効率を上げたいです。

>>856
その手段もあるのですね。
しかし、インポート以外の効率上げもしたいところなんです。

>>860
MySQLとかのほうが良いんですかね〜。
もうACCESS導入しちまったんで・・・w

>>864
PreparedStatementのパラメータ変更は採用してます。
DBコネクションはを1回に変更する方法が必要ですね。考えて見ます。
866デフォルトの名無しさん:2007/08/24(金) 07:44:41
片方のスレッドはキューにたまったSQL文を発行する
もう片方のスレッドはCSVを1行ずつ読み、splitしてSQL文をキューにためる

これじゃ駄目なの?
867デフォルトの名無しさん:2007/08/24(金) 07:56:04
>>859
うん、間違えたw
868デフォルトの名無しさん:2007/08/24(金) 07:58:23
>863-864
返信ありがとうございます。

おっしゃるように修正を加えた場合、どのようにテストが楽になるのでしょうか。
修正を行ってもアプローチは変わらないような気がします。

私の理解が足りず申し訳ございませんが、もう少し説明を加えていただけますでしょうか。
869デフォルトの名無しさん:2007/08/24(金) 08:16:05
>>865
毎回 Connection を取得するなら、
PreparedStatement の意味あまりないんでは?

取得方法を変えて、さらに addBatch/executeBatch を使うとさらに良いかも。
870デフォルトの名無しさん:2007/08/24(金) 08:48:47
>>868
マジレスすると、テストするなら
ログ書き出し部分を抽象化してスタブを用意するべき
871デフォルトの名無しさん:2007/08/24(金) 09:30:35
>>869
特殊文字のエスケープ考えなくていいってだけで意味はある
872デフォルトの名無しさん:2007/08/24(金) 09:54:45
Strutsアプリケーションでアプリケーションが起動されるときに1度だけ
したい処理があるのですがどこに書けばよいでしょうか?
873デフォルトの名無しさん:2007/08/24(金) 12:57:21
開祖はカリーム・アブドゥル・ジャバーですか?
874デフォルトの名無しさん:2007/08/24(金) 14:01:46
>>863
その設計のほうが問題だと思うが。
変数の型がObjectだったら、インスタンスがFooを実装していてもObject版が呼ばれてしまうぞ。

>>868
出力先のストリームを外部から交換できるようにしておき、テストコードからByteArrayOutputStream
でもセットしてやれば、あとはそれを読めばよい。
でも、そこまでコストをかけてテストをするべきかなぁ?
875デフォルトの名無しさん:2007/08/24(金) 15:29:45
【 課題 】Javaはエキスプレスエディチョンで使えますか?
【 形態 】エキスプレスエディチョン
【 GUI  】エキスプレスエディチョン
【 期限 】June
【 Ver  】(?_?)
【 用語 】エキスプレスエディチョンとは何か
【 補足 】エキスプレスエディチョンはJavaですか?
よろしくお願いします。
876デフォルトの名無しさん:2007/08/24(金) 16:28:58
ちがいます
877デフォルトの名無しさん:2007/08/24(金) 17:50:10
ResouceBundleを使用してメッセージを扱いたいのですが
例えば
hoge.hello={0} is pen.

などの場合{0}に値をいれて取得するにはどうしたらよいでしょうか?

defaultBundle.getString("hoge.hello");
ですと、値をセットして取り出すことができないようです。

よろしくお願いします。
878デフォルトの名無しさん:2007/08/24(金) 19:18:42
>>868
出力を止めればいい
文字列を取得して使う側で吐く方がテストは楽
879デフォルトの名無しさん:2007/08/24(金) 19:49:03
質問です。

Mainクラスの中で変数sを設定し、それを他のクラスで使うとすると、
その使いたいクラス内で、Main obj = new Main();
と書き、obj.sとすると、
そのMainクラス内で設定した数値となっているのでしょうか?

880デフォルトの名無しさん:2007/08/24(金) 19:50:38
はい
881デフォルトの名無しさん:2007/08/24(金) 19:53:17
>>880
ありがとうございました。
882デフォルトの名無しさん:2007/08/24(金) 20:21:27
>>877
MessageFormat.format(bundle.getString("hoge.hello"), "This");
883デフォルトの名無しさん:2007/08/24(金) 20:37:51
質問です。tomcat6とapache2.0 を使っています。
http://192.168.0.1:8080/myapp/ でjsp&Servletはうまくいくことが確認できました。
apacheと提携し http://192.168.0.1/myapp/ でうまくいくことも確認できました。

ここで、webapps/myappの場所を
/usr/local/tomcat/webapps/myapp から /home/my_account/webapps/myapp に変更し、
server.xmlを編集したところ、無事にアクセスできることには変わりありませんが、
JSPページのコード中、BufferedWriterによってファイルの保存やロードが出来なくなりました。
開こうとするとIOException例外が起き、getMessage()では、(No such file or directory)です。

変更する以前はファイル名を相対パスで指定すると、その基準がtomcat6フォルダだったと思うのですが、
変更後の場所が不明だったので、試しにPrintWriterで"test.txt"と相対パスでファイルを作ろうとしてみたのですが
実行すると何の例外も起きないのに、ファイルがどこにも作られていません。(検索しましたが該当せず)
いったいどうなってしまったのでしょうか?どなたか原因に心当たりのある方、教えてください。
884デフォルトの名無しさん:2007/08/24(金) 21:05:24
>>882
ありがとうございました。とても助かりました。
885865:2007/08/24(金) 21:56:31
>>866
スレッド化ですか!
敷居が高そうですが勉強してみます。

>>869
addBatch/executeBatch についても今後調べてみます。
ありがとうございました!
886デフォルトの名無しさん:2007/08/24(金) 22:02:38
ご返信ありがとうございます。

まだまだ勉強不足だとわかりましたので、しばらくROMに徹します。ありがとうございました。
887デフォルトの名無しさん:2007/08/24(金) 22:06:00
幾らROMに徹しても、自分でコード書かなきゃ勉強不足は解消しないぜ
888デフォルトの名無しさん:2007/08/24(金) 22:39:44
>>883の件ですが、相対パスの基準がtomcat/binになっていました、
ファイル名だけ指定すると、そこに保存されてしまいます(読み込みも)。

本来のようにtomcatフォルダが基準となるために、
どこの設定を間違っている可能性があるのでしょうか?
889デフォルトの名無しさん:2007/08/24(金) 23:56:48
質問です。
JComboBoxに関して、初期表示した選択肢を、特定のイベントで変更したいと思ってます。
ComboBoxModelを利用した実装を行っているのですが、Model自体は新しく作り直さずに、getSize等から特定のイベントの後には新しい値が取得できるようにしました。
ところが、コンボボックスには反映されないんです。
適当にクリックしてみると表示される事もあり、まったく認識していないわけではなささそうです。
ちなみに、変更後にはrepaint() は呼び出しています。
なにか情報あるでしょうか?
890デフォルトの名無しさん:2007/08/25(土) 00:02:56
ComboBoxModelを利用した実装っていう、その詳細によるが・・・
自分でモデルの実装を書いてるんなら、データが変更されたときにリスナに通知しなきゃだめだよ
891デフォルトの名無しさん:2007/08/25(土) 00:14:07
>>890
ちょうど自己解決しそうな所でした。
class MyPanel extends JPanel {
 String[] data;
 Model model = new Model() {
    getSize() { return data.length; }
 }
}
といった感じで記述するのはマズイんですね。
892デフォルトの名無しさん:2007/08/25(土) 00:14:20
>>889
> getSize等から特定のイベントの後には新しい値が取得できるように
サイズが同じだと更新されないとかいう落ちですか

repaint は、各paint系メソッドを上書きしていないのなら、関係ありません
Model の要素が更新された場合は fire系メソッドを呼び出し、通知する必要があります

JComboBoxで何が出来るのかわかるサイト…の一つ
ttp://www.javadrive.jp/tutorial/jcombobox/index.html
893デフォルトの名無しさん:2007/08/25(土) 02:49:40
>>888の件ですが、単に起動方法の問題でした。
今までstartup.shで直接起動していたのですが、
jsvcを使ってサービスで起動したところ、
今度は/(ルートディレクトリ)にファイルが作られ、関連とディレクトリになりました。

カレントディレクトリを変更する方法はないものですかね?
894デフォルトの名無しさん:2007/08/25(土) 03:37:47
助けてください
インターネットからJAVAをインストールしようとしたら
エラー「変換するときにエラーが発生しました。指定された変換のパスが有効であることを確認してください。
」とでます。

お願いします
895デフォルトの名無しさん:2007/08/25(土) 03:57:35
>>894
そういうネタは、エラーメッセージでぐーぐる先生にお聞きした方が早いですよ
ttp://www.google.co.jp/
896デフォルトの名無しさん:2007/08/25(土) 04:03:41
自己解決しました
897デフォルトの名無しさん:2007/08/25(土) 09:37:02
自己解決しますた
898デフォルトの名無しさん:2007/08/25(土) 10:12:59
自己解決しまんと
899デフォルトの名無しさん:2007/08/25(土) 10:21:47
JDBCにはADOみたいなレコードセットのAddNewはないですか?
INSERT文を発行しないとだめですか?
900デフォルトの名無しさん:2007/08/25(土) 10:30:11
自己解決しまうま
901デフォルトの名無しさん:2007/08/25(土) 10:37:06
自爆しました
902デフォルトの名無しさん:2007/08/25(土) 16:27:38
>>899
ResultSet.insertRow()でも使ってろ。
903デフォルトの名無しさん:2007/08/25(土) 20:54:13
java.util.Date と java.util.Calendar ってどう使い分けたらいいですか?
ドキュメントを読む限り、今後はできるだけ Calendar/GregorianCalendar を
使いましょうね、という話に取れるのですが、一方で JDBC の
getDate() や getTime() で得られるのは Date のサブクラスなので
コードをどう書くか迷っています。
DB から読み込んだ日付や日時を保持しようとするとき、
Date のままが望ましいのか、GregorianCalendar に変換して
保存するのが望ましいのか……
904デフォルトの名無しさん:2007/08/25(土) 21:09:15
javaのDOMはhttp経由でも取得できますか?

xml.load("http://hoge.jp")

のように
905デフォルトの名無しさん:2007/08/25(土) 21:09:33
保持するときは Date
操作するときは Calendar
って感じじゃない?
906デフォルトの名無しさん:2007/08/25(土) 21:21:52
>>903
時間を表したい時はDate
日時を表したい時はCalendar

DateはsetTimeで変更できるけど、基本的にはしないがベター
不変な時はDateで日付を扱ったり、計算処理などをしたい場合はCalendar
StringとStringBufferみたいな関係と考えちゃってもOK
907デフォルトの名無しさん:2007/08/25(土) 21:29:02
>>905-906
ありがとうございます。
行う処理はせいぜい比較ぐらいなので、基本的には Date で保持して、
必要なときのみ Calendar に変換する、といった感じで行こうと思います。

>StringとStringBufferみたいな関係
ものすごく納得できました。
908デフォルトの名無しさん:2007/08/25(土) 21:49:12
さらにこういうのが策定中らしい。また増えるのか・・
https://jsr-310.dev.java.net/nonav/javadoc/index.html
909デフォルトの名無しさん:2007/08/25(土) 22:20:40
>>906,907
>StringとStringBufferみたいな関係
ちょっと意味が違う気がする。

Date は日時を抽象的に表現するもの(国や文化に依存しない)、
Calendar は日時を暦として表現するもの(国や文化に依存する)、ではないかと。

システムの処理としては、入出力部分などでは必然的に年月日といった暦情報を扱うために
>操作するときは Calendar
保存する内容に各国の暦情報を含めるのは本質でないため、
>保持するときは Date
になるのではないかと思う。
910デフォルトの名無しさん:2007/08/25(土) 22:38:19
どこに着眼点を置くかであってどっちも正解だと思うよ
抽象化の観点から見れば909の言っている事は正しい
とはいえ、暦(=日付)の操作を行う場合はCalendarを使って、不変な「時」を表す時にはDateを使うってのも正しい
ソースは忘れたけど、setTimeは非推奨にするって議論もあるらしい
したところで、不変オブジェクトにするには手遅れだからってループだけど。

「考えちゃってもOK」とあるように、操作と不変データって切り分けで概ね問題ない
911デフォルトの名無しさん:2007/08/25(土) 22:58:15
>>908
増えるのか、というほど潤沢な環境では…>今の時間関係
912デフォルトの名無しさん:2007/08/25(土) 23:11:43
javaxパッケージだし使わなくともいいのでは?
concurrent系みたくjava.utilとかに食い込んできたら習得必須かもしれんけど
913デフォルトの名無しさん:2007/08/25(土) 23:15:55
>>910
Dateを不変で扱おうってコンセンサスのある場所では正解になるだろうけど、
Dateが不変ってのは、どこに行っても通用するわけじゃない。

一般的な説明としては >>909 のが良いだろうね。
914デフォルトの名無しさん:2007/08/25(土) 23:16:49
必ずしも使わなくても良いようなものなら
標準APIに入れる意味がないような
915デフォルトの名無しさん:2007/08/25(土) 23:21:33
その理屈だとJREのjavax.*全滅じゃん。
便利だから詰めこんどきましたってパッケージ群なのにw
916デフォルトの名無しさん:2007/08/25(土) 23:22:46
>>909 の言っている背景があるから、不変で扱おうって話だな
小難しい話をせずに固定値と計算を含めた変動値で使い分けろってのは楽な教え方なので俺も採用
917デフォルトの名無しさん:2007/08/25(土) 23:24:59
>>915
その理屈もおかしい。
便利さを求める時だけSwing使って、普段はAWT使うのか?
918デフォルトの名無しさん:2007/08/25(土) 23:47:21
>したところで、不変オブジェクトにするには手遅れだから

これがすべてだな。
System.DateTimeが恋しい・・・
919デフォルトの名無しさん:2007/08/25(土) 23:55:52
そもそもdeprecatedって非推奨なだけだから
それだけじゃ不変オブジェクトって保証ないし
920デフォルトの名無しさん:2007/08/26(日) 00:17:34
だから議論もループして、そのまま。
使う時は不変っぽく使ってね、という話なんだろう
921デフォルトの名無しさん:2007/08/26(日) 00:50:01
>>874の意味が分かりません
オーバーロードしたときに実行されるメソッドは、
引数の型が一致するものが複数あることになる場合は、
型が近いほうが選ばれるのではないのでしょうか?
922デフォルトの名無しさん:2007/08/26(日) 00:52:13
> 使う時は不変っぽく使ってね、という話なんだろう
オレがみた議論では、不変として使いたければ ImmutableDate を作れって話になってた。
923デフォルトの名無しさん:2007/08/26(日) 00:55:06
>>921
Foo foo = new Foo();
Object obj = foo;
write(obj);

で、呼ばれるのは write(Foo) か write(Object) かって話じゃね?
型は型でも、呼び出されるメソッドは静的型によって決定されるって話。
924デフォルトの名無しさん:2007/08/26(日) 00:56:04
>>922
同じ奴かな?
そんなことするくらいならばlong使うぜボケ、って感じでgdgd
925デフォルトの名無しさん:2007/08/26(日) 01:02:35
>>924
時間を持ってるって型情報を捨てて良いなら long 使えば?

そもそも不変でないクラスに関して、
後からしゃしゃり出てきて不変として使おうって言われてもな。
布教するつもりがあるなら説明ぐらいしっかりやった方がいいんじゃね?
926デフォルトの名無しさん:2007/08/26(日) 01:04:37
布教って何だ?
一般的に不変っぽく使うケースが多いってだけだろ
これだから(ry
927デフォルトの名無しさん:2007/08/26(日) 01:08:37
> 不変で扱おうって話だな
> 使う時は不変っぽく使ってね、という話なんだろう

……。布教してるようにしか見えないが。
928デフォルトの名無しさん:2007/08/26(日) 01:16:20
ログ出力制御部品クラスを作ろうとしてるんだけど。

業務要件があって
・サービスインした製品は運用時に必要な最低限のログが出力されて、デバッグ情報は出力させない。
・開発環境ではデバッグ情報と運用時に必要な最低限のログの両方を出力させる。

これをソースの修正や定義の書換えをせず、環境変数やディレクトリ構成もそのままで行いたいんだけど。
今考えてるのは共通ログ出力クラス<−運用ログ出力クラス<−デバッグ情報ログ出力クラス
って感じで継承したクラスを環境別に配布して順番にクラスファイルを調べてClassクラスのインスタンスを生成しようとしてます。

たとえば商用環境は共通ログ出力クラス・・ある、運用ログ出力クラス・・・ある、デバッグ情報ログ出力クラス・・・ない
運用ログ出力クラスが呼ばれる

開発環境は共通ログ出力クラス・・ある、運用ログ出力クラス・・・ある、デバッグ情報ログ出力クラス・・・ある
デバッグ情報ログ出力クラスが呼ばれる

って感じ。ちなみに共通ログ出力クラスには運用ログ出力メソッドもデバッグ情報ログ出力メソッドも空実装してあります。
log4jを使ったとしても変な弊害は起きないでしょうか?
似たようなもの作ったことある方アドバイスお願いします。
929デフォルトの名無しさん:2007/08/26(日) 01:18:57
UDPでログが飛ぶ問題は気にならない?
930デフォルトの名無しさん:2007/08/26(日) 01:21:04
>>928
log4.j使って「運用時にはINFO以上のログを出力しない」で要件を満たせない理由を述べてくれ

>>927
うざいからお前も消えろ
931デフォルトの名無しさん:2007/08/26(日) 01:44:47
>>930
業務要件といってるんだから、上のレベルで合意したってことでは?
契約済んでるなら、下っ端は仕様書どおりにつくるだけだから、そこに突っ込んでも
どうしようもないと思う。

>>928
ソースや定義ファイルの書き換えがダメなのに、ログモジュールの環境毎の差し替えは可能と
いうこと? 微妙な気がするけど。
それとも、モジュール追加が可能っていうなら、クラスローダ使ってクラスの動的ロードできるから
それでデバッグ用ログクラスがあればそれを使う。なければ運用ログクラスをインスタンス化する。
デバッグ用ログクラスは運用ログクラスを継承してて、共通のインタフェースをもってる。
アプリからはインタフェース経由でログ出力を行う。
でいけそうな気はする。
ただし、ソース修正や定義ファイルの書き換えはだめでもファイルの追加はありっていうなら、
モジュールでなくて、デバッグ用定義ファイルを1つ用意して、そのファイルがあれば、デバッグモード
に切り替わるのが手っ取り早いと思う。
932デフォルトの名無しさん:2007/08/26(日) 01:49:24
>>931
いや、業務要件にはどのように実装するかが書いてないので確認したまで。
log4jのメリットとか開発の経緯ってまさに>>928の業務要件を満たす事だと思うんだが...
933デフォルトの名無しさん:2007/08/26(日) 01:51:16
>>923
どゆこと><
fooはFoo型でobjはObject型の変数、参照するのは共にFoo型のインスタンスですよね?
write(obj)はwrite(Foo)が呼ばれるんじゃないの?
934デフォルトの名無しさん:2007/08/26(日) 01:56:06
>>933
オーバーロード時にどのメソッドが呼びされるかは、コンパイル時に決まってしまうと言う事。
ジェネリックスとか辺りとか型に関係する事は基本的に全てコンパイル時の話。
935デフォルトの名無しさん:2007/08/26(日) 01:58:44
つまりこの場合はobjの型がObjectなのでWrite(Object)が呼ばれるってことでしょうか?
936デフォルトの名無しさん:2007/08/26(日) 02:01:56
>>935
yes
937デフォルトの名無しさん:2007/08/26(日) 02:02:02
そうだけど、objの型って書くと誤解を生みそう
objは変数の型がObjectだから、コンパイラはhoge(Object obj)が最適と判断するって事。
逆にコレが出来ないと、Object obj  = new Foo() が絶対に hoge(Object obj)に実行させられなくなるじゃん(オーバーロード時)。
938デフォルトの名無しさん:2007/08/26(日) 02:19:59
オーバーライドされたメソッドの呼び出しには、実行時の型情報が使われるけど、
オーバーロードされたメソッドのどれを呼び出すかは、コンパイル時の静的な型情報で決まる。
939デフォルトの名無しさん:2007/08/26(日) 08:11:31
class A {
void foo(Object o) { System.out.println("A#foo(Object)"); }
void foo(B o) { System.out.println("A#foo(B)"); }
}
class B extends A {
void foo(Object o) { System.out.println("B#foo(Object)"); }
void foo(B o) { System.out.println("B#foo(B)"); }
}
のとき
A o = new B();
o.foo(o);
はB#foo(Object)になるってこと?
940デフォルトの名無しさん:2007/08/26(日) 09:47:25
それぐらい試すか言語仕様嫁。スレ汚すな。
941デフォルトの名無しさん:2007/08/26(日) 10:02:59
継承関係にあるクラスでオーバーライドするなってのは、Effective Javaにもあったと思うが。
942デフォルトの名無しさん:2007/08/26(日) 10:14:40
教えてください。

mail.jar activation.jarのCLASSPATHがどうしても通りません。
./bash_profileにクラスパスを設定したので、起動時にCLASSPATHが設定されるようにはなっているはずです。
実際に echo $CLASSPATH とすると、
/usr/java/jdk1.6.0_02/lib/mail.jar:/usr/java/jdk1.6.0_02/lib/activation.jar
と表示され、実際にその位置にそれらjarファイルはあります。

しかし、それらのクラスを使うJSPページにアクセスすると
Session cannot be resolved to a type
MimeMessage cannot be resolved to a type
InternetAddress cannot be resolved
などなどが出てしまうのです。

これについて考えられる原因があれば教えてください。
943デフォルトの名無しさん:2007/08/26(日) 10:16:50
試せは同意だが、スレは汚れてないと思う。

>>941
一般的には解り難いしアンチパターンだろうね
ま、printlnくらい仕様がはっきりしているならば問題ないけど
944デフォルトの名無しさん:2007/08/26(日) 10:20:54
>>942
多分、Tomcatとかのコンテナのクラスパスに通したんではない?
コンテナは複数のアプリケーションを管理するようになっているから、個々のアプリケーションで使用するjarはweb.xml等で個別に指定する
そうしないと、複数のアプリケーションで同じクラスだがバージョンが異なるクラスを使えなくなるから。
945デフォルトの名無しさん:2007/08/26(日) 10:23:04
>>943
println は親クラスで定義されたメソッドをオーバーライドしてるわけじゃないから問題ない
946デフォルトの名無しさん:2007/08/26(日) 10:23:39
オーバロードされたら混乱するのもわかるが
オーバライドもいけないん?
947デフォルトの名無しさん:2007/08/26(日) 10:23:49
オーバーライドじゃなくてオーバーロードな
948デフォルトの名無しさん:2007/08/26(日) 11:04:49
>>944
mail.jarとactivation.jar を試しにWEB-INF/libに入れてみたのですが、
状況は変わりませんでした。

WEB-INF/lib内のjarを参照させるとき、web.xmlに何か記述が必要なのでしょうか?
949デフォルトの名無しさん:2007/08/26(日) 11:09:07
WEB-INF/lib に配置するってのはお約束であって必須ではない
どんなコンテナ使っているのか解らないが、application.xml と web.xmlのどこかで設定するか、デフォルトの場所が決まっているはず
950デフォルトの名無しさん:2007/08/26(日) 11:29:15
>>944 >>949

$CATALINA_HOME/libにいれて再起動したところ直りましたorz
どうもありがとうございました
951デフォルトの名無しさん:2007/08/26(日) 11:43:44
>>950
どういう理由でうまく起動したのかおしえれw
サーブレット製品が同じjarを使ってたって事か?
952デフォルトの名無しさん:2007/08/26(日) 11:53:13
再起動してなかったんじゃ?
953デフォルトの名無しさん:2007/08/26(日) 12:08:30
CATALINA_HOME/lib にぶちこむと全部のWebアプリに適用されるから注意しろよ
まあ1個のコンテナで複数のWebアプリケーションを動かすケースは少ないけど

>>951
Tomcatの起動バッチのclasspathに指定していただけかと
954デフォルトの名無しさん:2007/08/26(日) 12:08:56
nCm(組み合わせ又は二項係数)を出そうとしているんですがlong型で
さえも入らない値を求める方法って何かありますか?
nが1000とかになると入りきらなくて求めることが不可能なんですが、もし分かる方いたら教えてください。
955デフォルトの名無しさん:2007/08/26(日) 12:13:51
java.math.BigInteger
956941:2007/08/26(日) 13:58:59
>>946
オーバーライドじゃなくって、オーバーロードだね。
今見て気がついたorz
957デフォルトの名無しさん:2007/08/26(日) 15:28:56
nが1000でもmが999とかなら入る
958デフォルトの名無しさん:2007/08/26(日) 16:36:38
apache tomcat 6 の設定について詳しい方いませんでしょうか。

webapps\cpsというコンテキストがあって、
conf\Catalina\localhost\cps.xmlにアクセスの際のパスの設定をしています。
中身は
<Context path="/hogehoge" docBase="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\cps"
reloadable="true" />
と言う感じです(これのみです)
しかしこのファイルを読んでいないのか、http://ドメイン:8080/cpsでしかアクセスできません
Engine や host の名前に間違いはないと思いますが、/hogehogeでアクセスさせるためどの設定が間違っているのか
心当たりのある方いらっしゃいまいたら教えてください。
959デフォルトの名無しさん:2007/08/26(日) 16:43:58
それはJavaの質問なのか?
960デフォルトの名無しさん:2007/08/26(日) 16:45:56
>>958
はて、tomcat5ならserver.xmlにも記述があったけどね。

tomcat6はわかんないなぁ
961デフォルトの名無しさん:2007/08/26(日) 17:03:35
>>904
javax.xml.parsers.DocumentBuilder.parse(String uri)
ってメソッドあるから、これに URL 渡せばうまくいくかも?
それでダメならこんな感じ?

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL("http://hoge.jp").openStream()));
962デフォルトの名無しさん:2007/08/26(日) 23:45:55
Font font=new Font("SansSerif",FONT.BOLD,24);
このフォントで日本語の文字を表示したらギザギザで見にくいのですが、どうにかならないでしょうか?
963デフォルトの名無しさん:2007/08/27(月) 00:03:52
エイリアスかけろ
964デフォルトの名無しさん:2007/08/27(月) 01:01:00
Cの初心者本を読んで次にJAVAに取り組もうかと思ってるんだけど
お奨めの参考書とかありますか?
965デフォルトの名無しさん:2007/08/27(月) 01:10:33
>>964
薦められる参考書はないが、俺が持ってるのは独習Java
みたところ最小限のことは乗ってるように思えるが、ぐぐれば十分な情報が得られそう

あとSunのページが大いに参考になるよ
http://java.sun.com/javase/ja/6/docs/ja/
966デフォルトの名無しさん:2007/08/27(月) 01:42:17
最近出た望羊氏の本試してみたら?
967デフォルトの名無しさん:2007/08/27(月) 02:45:39
>>962
先にエスパーしとくとJDKとJREのバージョン毎とJava2DかSwingかで違う。
968958 :2007/08/27(月) 09:21:40
958 の者です。
Server.xmlに記述したら無事動きました。
conf\[engine name]\[host name]\[context name].xml
じゃtomcat6ではだめなようです。
969デフォルトの名無しさん:2007/08/27(月) 11:25:29
>>968
いや、そんなことはない。
conf\[engine name]\[host name]\[context name].xmlでも動く。
一応バージョンを明記してくれ。

ひょっとして、コンテクストディスクリプタ(cps.xml)と、path属性(/hogehoge)と
Webアプリのフォルダ名(/cps)が違うのが原因じゃない?
970デフォルトの名無しさん:2007/08/27(月) 17:42:24
>>940こいつきちがい
971デフォルトの名無しさん:2007/08/27(月) 17:49:20
jar cvfm test.jar MANIFEST.MF *.class *.csv *.gif prop.properties
でjarファイル作ったんだけど、起動しても
ウィンドウが中途半端に出た状態でそれ以上に先に進めない...
972デフォルトの名無しさん:2007/08/27(月) 17:53:32
どっかでなんか例外が出てるんじゃないか
コマンドラインから起動してみたらログが出るかも

java -jar test.jar
973デフォルトの名無しさん:2007/08/27(月) 18:13:35
このソフトの起動方法教えてくださいませ。ttp://semacode.org/download/agree?dl_location=/download/toolkit/1.6/semacode_reader_se-1.6.zip

これまでに試したこと。
j2sdk1.4.2_15というものをインストール。
ソフトダウンロード後、WINRARで解凍。
.jarファイルをダブルクリック。起動せず。
マニュアル読んでコマンドプロンプトから入力、起動せず。

いろいろググったりしたのですが、さっぱりわかりませぬ。
どうか愚かな糞虫に救いの手を。お願いいたします。
974971:2007/08/27(月) 18:34:20
>>972
「ファイルが見つかりません」エラーが出ました
jarに含まれているんですが認識されないんでしょうか
975デフォルトの名無しさん:2007/08/27(月) 18:53:51
>>974
jarの中身は確認した?
976971:2007/08/27(月) 18:55:15
>>975
確認しました
ちゃんと含まれてます
977デフォルトの名無しさん:2007/08/27(月) 18:56:00
マニフェストファイルに指定したメインクラス名はあってる?
978デフォルトの名無しさん:2007/08/27(月) 18:57:23
jarに含まれてるのは、なんていうか、OSのファイルシステムでいう 「ファイル」 じゃないからな。

今まで
new FileInputStream("foo.csv")
とかで読み込んでいたのなら、代わりに
getClass().getResourceAsStream("foo.csv")
とすれば読める
979デフォルトの名無しさん:2007/08/27(月) 18:58:26
>>978
これくさいなwwwwwwww
980デフォルトの名無しさん:2007/08/27(月) 19:13:25
>>973
>マニュアル読んでコマンドプロンプトから入力、起動せず。

コマンドプロンプトから起動しようとして無口ってことはないだろう (あるかもしれんが)
エラーが出たのならその内容を書く
981デフォルトの名無しさん:2007/08/27(月) 19:36:07
>>980
レスありがとうごぜいます。
java -jar SEMACODE_BIN_DIR/semacode.jarと記述すると、

「Unable to access jarfile SEMACODE_BIN_DIR/semacode.jar」

アクセスできません。てとこでしょうか?こういうエラーが出ます。
解凍したフォルダはデスクトップに置いてあります。
982デフォルトの名無しさん:2007/08/27(月) 19:38:25
>>981
(;´д`)ゞ??????????
ごめんファイル配置と起動時のカレントディレクトリを教えて欲しい。
983デフォルトの名無しさん:2007/08/27(月) 19:51:32
>>982
ええと、これttp://semacode.org/download/agree?dl_location=/download/toolkit/1.6/semacode_reader_se-1.6.zip
を解凍すると、semacode_reader_se-1.6というフォルダの中に、「semacode_reader_se.jar」というファイルと、マニュアル類のdocフォルダがあります。
デスクトップで解凍したので、
位置はC:\Documents and Settings\ユーザ名\デスクトップ\semacode_reader_se-1.6\semacode_reader_se.jar
となってます。

これ、答えになってるんでしょうか?さっぱりわからなくて…すいませぬ…。
984デフォルトの名無しさん:2007/08/27(月) 20:10:32
>>981
マニュアルと同じ書き方の様ですが、
単に "SEMACODE_BIN_DIR" という名前のディレクトリが無いからでしょうか。

semacode.jar が存在するディレクトリでコマンドを実行する場合は
> java -jar semacode.jar と書くそうです。
985デフォルトの名無しさん:2007/08/27(月) 20:19:22
>>984
レスありがとうごぜいます。

semacode.jarというファイル自体が無いので、
「semacode_reader_se.jar」ファイルを「C:\Documents and Settings\ユーザ名」の直下に置き、

コマンドプロンプトで「java -jar semacode_reader_se.jar」と記述し実行したところ、


C:\Documents and Settings\ユーザ名>java -jar semacode_reader_se.jar
Error: Missing or wrong number of arguments
usage: semacode_read [-V] -f file
-V print version and exit
-f file the input image file to be read

と出ました!一歩前進しました!ありがとうごぜいます!
986デフォルトの名無しさん:2007/08/27(月) 20:24:29
java -jar semacode_reader_se.jar -f 1.jpg
これでいいんですね!!!!!!!!!!!
やったやった!!!画質悪いせいか読みこんでくんないけどやったどー!

ありがとうごぜいましただ。
987デフォルトの名無しさん:2007/08/27(月) 23:33:39
ある日とある日の差の日数を求める方法が知りたいです。
例えば
2001/01/01
2001/01/20
の差は20日といったような。

こういう計算をするにはどうすれば良いでしょうか。
988987:2007/08/27(月) 23:37:54
ごめんなさい。自己解決しました。
989デフォルトの名無しさん:2007/08/27(月) 23:54:50
5分以内に解決するなら先に調べようなw
990デフォルトの名無しさん:2007/08/28(火) 00:08:23
質問させてください。

String型の文字列8桁をDATE型のyyyyMMddのフォーマットに変換する方法なのですが、
自分でロジックを作らずに簡単にできるものってありますか?

調べたのですが、SimpleDateFormatのparseメソッドでDate型に直した後にFormatメソッドFomatを変える方法しかわからなかったです。

例えばString型の文字列 "20011213" をDATE型の 2001-12-13 に変換する方法です。
991誰か:2007/08/28(火) 00:15:23
あるサイトの紹介URLなんですけど、
357456→b13126b455
253398→7a4c395e79
この→は2つとも同じ変換をしたらしいのですが、何をしたのか分かる方いらっしゃいませんか??
992デフォルトの名無しさん:2007/08/28(火) 00:17:27
そのやり方で何か不満があるの?
文字列8桁のフォーマットに不備がない状況であれば、StringBuilderにつっこんで-をinsertすればいいんだろうけど。
そもそもDATE型ってなに?
993デフォルトの名無しさん:2007/08/28(火) 00:25:59
マルチすんなカス
994デフォルトの名無しさん:2007/08/28(火) 00:30:13
うへ…次スレ立ててきます。少々お待ちを
995994:2007/08/28(火) 00:32:50
【初心者】Java質問・相談スレッド105【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1188228705/
996デフォルトの名無しさん:2007/08/28(火) 00:32:59
>>995
どもども
997デフォルトの名無しさん:2007/08/28(火) 00:37:18
>>992
不満はないんですが、作ってみてSimpleDateFormatのインスタンスを2つ作らなければいけなかったので、
他に何か方法はあるかなぁと思いました。
Date型はjava.util.Dateの型です。説明不足すみません。
ありがとうございました!
998デフォルトの名無しさん:2007/08/28(火) 00:41:08
>>992
質問の人は>>997で納得してるようだが、
確かに仕様で決まってれば、insertでさくっと逝きますね。
(まったく…最近鱗が多すぎ
999デフォルトの名無しさん:2007/08/28(火) 00:57:37
>>997
DateFormatなんかstatic finalで作っておけばいいじゃん
1000デフォルトの名無しさん:2007/08/28(火) 01:11:22
埋めるついでに>>970にとうに終わった話話に単発レスでいきなりきちがいとか言いだすお前がきちがい


と釣られてみる俺。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。