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


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

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



1 名前:デフォルトの名無しさん [2007/07/27(金) 08:46:32 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

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

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

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

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

次スレは>>980あたりで。

133 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 13:50:35 ]
>>132
なんだ、足し算教えろっていってるのか?

137 名前:デフォルトの名無しさん [2007/08/02(木) 13:51:45 ]
>>132
文字同士の連結
文字通りの足し算だね

138 名前:質問です mailto:sage [2007/08/02(木) 13:52:10 BE:31739876-2BP(6)]
>>133
おおお、詳しくありがとうございます(ノ∀`)
参考になりました

139 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 13:57:15 ]
さすがに千葉工業大学だなw
つりもレベル低いや

140 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:23:37 ]
よくわかったね

141 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:20:10 ]
よくわかるも何も自己紹介してるじゃん



142 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:23:20 ]
Be付けて恥さらし(笑)

143 名前:質問です mailto:sage [2007/08/02(木) 21:35:16 BE:7557252-2BP(6)]
>>142
ニセ者をニセ物と見抜けないおまいも(略

144 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:44:49 ]
やってることが恥晒しってことだろ

145 名前:デフォルトの名無しさん [2007/08/03(金) 10:03:28 ]
JTextAreaで表示するテキストの行間の間隔を変えたいのですが、それっぽい設定が見つかりませんorz
どこをいじれば良いのでしょうか・・

146 名前:145 mailto:sage [2007/08/03(金) 12:02:22 ]
自己解決しました。

147 名前:デフォルトの名無しさん [2007/08/03(金) 12:32:27 ]
してないです。

148 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 13:07:38 ]
test

149 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 14:32:02 ]
_found_error の error_frag が指す先を別のオブジェクトに変えても、
readFromData の error_frag が指す先は変わらないから。

151 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 14:38:54 ]
考えてみれば
error_frag = Boolean.valueOf(true);
ではerror_fragの実体の指す先が変わってしまいますよね、失礼しました。

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

どうもありがとうございます。

153 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 15:10:46 ]
連絡がありません。いいかげんな対応をされては困ります。あと一週間以内に何も連絡が無い場合、
落札者都合で削除すると同時に悪い評価が付きます。

154 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 15:42:52 ]
ServerSocket.accept()や、BufferedReader.readLine()のような
入力がある、終わるまで待機するような方法を探しているのですが、スレッドを使って値を

155 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 15:45:24 ]
途中で書き込んでしまったorz
ServerSocket.accept()や、BufferedReader.readLine()のような
入力がある、終わるまで待機するような方法を探しているのですが、スレッドを使って値を
監視する、以外に方法はないでしょうか?なんかこれだとCPUの無駄遣いのような気がしますし
もっと効率のいい方法がないかなと。


156 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 16:05:35 ]
何を待ちたいのかわからないが、
自スレッドを Object#wait で寝かせて、他のスレッドから #notify もしくは #notifyAll で起こすことはできる

157 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 16:09:32 ]
それか、複数のソケットを同時に待ちたいってことなら、Selector を使うと幸せかもしれない。
ぜんぜん違う話なら、もっとくわしく・・・

158 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 18:22:06 ]
初期状態の時にJListが描画(表示)されません。
中央の"set"の下らへんをクリックするとJListが初めて描画される感じです。
これを簡単に解決したいんですが、どうしたらいいでしょうか?
やはり、上の描画部分はCanvasで下はボタン等のパネルにすべきでしょうか?

up.spawn.jp/file/up39072.txt

159 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 18:22:51 ]
すいません、"set"じゃなくて"m"です。とりあえず中央のボタンの下らへんにJListがあります。

160 名前:デフォルトの名無しさん [2007/08/03(金) 19:00:50 ]
thread内でDBにSELECTしたりINERTしたりする時ってデッドロックって起きる?
同じテーブルの同じレコードに同時にINSERTしたりしたら起きるんかな?

161 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:01:20 ]
>>159
まあ、SwingというかAWTから勉強した方が良い。



162 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:12:21 ]
>>158
とりあえず super.paint(g);

レイアウトマネージャとか、AWTとSwingを混ぜるなとか、色々あるけど、まぁね。がんばれ。。

163 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:18:01 ]
そもそもprintConponent()な。

164 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:20:08 ]
paintComponentじゃね?

165 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:25:51 ]
>>157
Jinputを使ってgamepadからの入力を受け付けるんですけど
Jinputだといわゆるイベント(keyEvent)とかを発行しないんです。
だから現状はいつボタンが押されたか常にスレッドで〜msごとに
どのボタンが押されてるかチェックしてるんですが、
もっと効率よくイベント発行するタイミング(ボタンおされた時)を調べるにはどうしたらいいかなと。


166 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:33:16 ]
jinputなんか知りまへん・・・と言いたいが、そのうち自分も使いたくなるかもしれないから調べてみる。

・・・・・・
だめっぽいね。 一定時間ごとに poll するしかなさそうです。
よく考えたら DirectInput も joyGetPos も自分で取りに行くしかないっけか。。。
結論 → むり

167 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 09:28:53 ]
ソースコード上に書いたクラスのフィールドやメソッドの順番って、
コンパイル後やHotSpotコンパイラがネイティブコンパイルした後も維持されますか?
どのVMならというのではなくて、言語仕様としてどうなのかなと。

168 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 10:37:28 ]
ソースの字面出現順にメモリにアラインメントされるかってこと?

それなんて構造体?

javaはレジスタすら動的に配置して定期的にメモリ内容かわってるのに。
ていうか配列すら最適化のために連続しておかれる保証はないのに。


169 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 11:24:42 ]
>>155
Swingとかでの話か?
1文字入力がある度に、KeyEventListenerで拾って処理するってのが定石
お前さんが思うほど不可はかからない
もしくは、フォーカスが外れたタイミングで処理する

CUIとかでの話であれば、System.in.read() 等はブロックする筈

170 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:03:26 ]
>>168
> 配列すら最適化のために連続しておかれる保証はない
まじでか。まあデカイ配列で落ちられても困るから有りだけど。



172 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:34:34 ]
>>170
(1)の方法で勧められない理由は何か説明できる?
説明できないならば、(1)の方法でも何も問題ない。

(2)は結局はImplがどれかを知らなければならないので(1)と何も変わらない
(3)はいわゆるFactoryクラスを作るパターンだが、Implを状況に応じて使い分ける必要がないならばただのオナヌー

173 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:42:55 ]
(2)は後のリファクタリングを意識した冗長設計だな。
シングルトンにしたほうが都合が良いなら、内部でそうすればいいし、
DBAHelperImplに致命的なバグがあり、
工数的に他所のDAOをラップして返した方が都合が良い場合もある。

174 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:49:43 ]
>>167
フィールドは並び替えられているという話を読んだ覚えがある。
char a;
int b;
char c;
みたいなのを順番どおり並べると隙間が出来て無駄なんで
int b;
char a;
char c;
に並び替えて隙間を詰める。

175 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:17:36 ]
低レイヤーの話をするのは無意味。Cじゃないし。

176 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:23:32 ]
>>171
javaの配列が短形でなくて良いのはどうせ最適化されて実行時に都合の良いように再配置され凸凹になるから。

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

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

だからjavaの配列は順次アクセスが早いとは限らない。


177 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:27:36 ]
まあこのくらいの問題なら自分でアラインするより
よっぽどスマートなメモリの使い方する(文字列以外)から気にしたら負け。


178 名前:デフォルトの名無しさん [2007/08/04(土) 14:58:42 ]
javaで構造体(みたいなもの)を定義してその中のある要素でソートするにはどうしたらいいですか?
たとえば
名前、身長、体重のデータからなる構造体を身長の高い順から表示するようなプログラムを作りたいんですが。

179 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:30:54 ]
compareTo

180 名前:デフォルトの名無しさん [2007/08/04(土) 15:31:04 ]
OSのシステム言語を英語にするとコンソールの日本語が文字化けしてしまうのですが
システム言語に関係なく日本語を文字化けさせないためには、どのようにすればよいのでしょうか?

ロケールなどを設定してもダメでした…

181 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:32:07 ]
仕様です



182 名前:170 mailto:sage [2007/08/04(土) 15:45:23 ]
お答えありがとうございます。
現時点では(1)を否定する理由が思いつかないため、(1)でいこうと思います。

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

このように理解したのですが、これで問題ないでしょうか。

183 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:14:53 ]
>>184
ソートしてからなら1次でしょ。
StringはComparable<String>を実装してますよん。

186 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:17:15 ]
コピーしてマージソートしてから1週舐めるなら
文字列の種類が少ない場合に遅くなるかもしれんけどね。

187 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:26:02 ]
TreeSetじゃだめなん?

189 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:27:08 ]
あーSetはだめだった。

190 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:40:40 ]
>>187の方法でやったことあるけど十分早かったような

191 名前:デフォルトの名無しさん [2007/08/04(土) 18:41:43 ]
いま軽くコレクションクラスでソートしてみたら恐ろしく簡単にソートできたので
>>185様の案で行くことにしました。ありがとうございました。



192 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:52:16 ]
ソートする必要なければ TreeMap/TreeSet よりか HashMap/HashSet のが速いよ
Tree の利点はキーが常にソート順を維持されてるところ
Hash は順序不定

193 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:58:05 ]
それじゃ187様の方法で行きます。ありがとうございました

194 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:12:46 ]
ところでListの配列をHashMapに変換または簡単に作成する方法ある?

195 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:32:16 ]
キーはいかがなさいますの?

196 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:44:35 ]
やっぱソートして比較することにした

197 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:50:02 ]
Stringのマイクロベンチマークは、String.equalsが落とし穴になるよな。
例えば定数をコンソールやテキストから入力するなら、s1 == s2 で true になることは無い。
静的にデータを持つならnew String(CONST_STR)みたいにしとくことが必要になる。

こういう正しいテストデータ作成用のライブラリってない?

198 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:53:25 ]
>>197
何がやりたいか分からん

199 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:54:20 ]
マイクロベンチマークがしたい。

200 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:01:55 ]
>>180
コンソール側のページコードでどうにかならない?

201 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:02:07 ]
>new String(CONST_STR)みたいにしとくことが必要

ここがわからない。

>正しいテストデータ

ここもわからない。



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

言語仕様がわからないなら介入しなくていいから。

203 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:05:37 ]
equalsつかえよ

204 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:08:27 ]
迷惑だからキミは絡まないで。

205 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:08:54 ]
とりあえず>>197はアホ

206 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:10:20 ]
String.equalsの仕様を知らない馬鹿がなんか邪魔してくる・・・

207 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:43:25 ]
オブジェクトが一致する場合と一致しない場合で、equals が true になる場合の計算コストが違うことをいってるわけ?
トーシロの俺には何がなんだか(´・ω・`)

208 名前:197 mailto:sage [2007/08/04(土) 20:46:30 ]
事故解決しますた

209 名前:208 mailto:sage [2007/08/04(土) 20:48:48 ]
誤爆です><

210 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:57:44 ]
     /ニYニヽ
    /( ゚ )( ゚ )ヽ
   /::::⌒`´⌒::::\   でっていうwwwwwwww
  | ,-)___(-、|
  | l   |-┬-|  l |
   \   `ー'´   /


211 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 21:55:52 ]
存在個数なら、ListなめてMapにカウント突っ込んでいけばいいんじゃないの?



212 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:36:53 ]
パフォーマンスの問題は、実際にパフォーマンス上の問題が起きてボトルネックが発見できた場合に対処すればいい。
机上の空論でのパフォーマンス対処ほど無駄なものはない

213 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:40:59 ]
 /i /{/'⌒'}  }}Y/ / ,r-、ヽ,  /
 ノ、|、ヾ_,,ノ  ノ ノ{ ヾ {^')) }フ/ /          _/
   \ヽ、    彡'`、、  'ー' ノ //",,゙ """ /    ヽ 理  議  そ
 ヽ-、ミ‐-、、 、,r=‐'¬ー=、、,-‐'_ ヽ、    /ノ     /  解  論  の
 ミ/   ~          ̄ノ /\   /彡 ""  |/   で   し  な
  /   ,'    u ∪   ! ヽ  | i、゙ー''"彡     /|   き  て  め
  、、∪ / ノ /  _,,,...-‐‐ニ=,ノ,,/ ヽ、,,_ \   ,イ / |   な  い  方
  ニ、=!, l_. レr=-ニ二、,,,.-'"    ー、==-ヽ'"/ / ヽ   い  る  を
  、(・,)>ノ⌒  ∠,(・,)_く  ゙`   ヽ゚ノ`ー=、_ /// ∠  の  こ
    ̄/""゙   ヽ ̄ ̄  \ヽ      ̄ ̄ //   ノ  か  と
  u 〈  、     u   (ヽ          //     ̄ノ ?  も
    ヽ -'   lj     >、       //  /    ̄ヽ、
    /ヽー‐ 、      /'"´ 'i     //  /       ∨ヽ/
    ^゙"⌒ヾ、     ,i|  ,"__}    //  /  /
    ー-  -      ヽ_人`'′ //  /  /
               / i'゙' /-─‐‐''/_/_
   、         _/-‐ヽ、___,,,, -‐‐  ̄
   ー-、、,,__,-‐'//ノゝノ ノ  ヽ\

214 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:45:30 ]
>問題が起きてボトルネックが発見できた場合に対処すればいい

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

>机上の空論でのパフォーマンス対処ほど無駄なものはない
何千件とデータ回す場合を考えたら目に見えて明らかなんだが頭大丈夫かお前?

215 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:00:33 ]
それは凄い動体視力

216 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:20:25 ]
>>214
マジレスしとけば、数千件程度でパフォーマンスに影響出るって何時の世代のマシンだよw
数千回DBアクセスでもすんの?
数千回IOでもすんの?

217 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:24:49 ]
じゃあ数百万件に変更な。これでいいか?

218 名前:デフォルトの名無しさん [2007/08/04(土) 23:27:47 ]
>>217
素直にDB使え

219 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:36:24 ]
>>217
そりゃアルゴリズムか設計に問題あるだろ

220 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:57:17 ]
最初からカウントしてたら誰も質問しねぇわなww
オナニーコードもほどほどにな



222 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 00:40:17 ]
どういうふうに変換したいのよ。

どういうふうでもいいなら、これでどう↓
long x = 0;
byte[] b = new byte[8];
new DataOutputStream(new ByteArrayOutputStream(b)).writeLong(x);

226 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 00:42:33 ]
>>223
long l = 1000;
byte b = (byte) l;
という形でダウンキャストを行う
そうすれば、上位ビットを無視するので、最下位のバイトが格納される。

上位バイトの取得は、ビットシフトを使えばOK

227 名前:デフォルトの名無しさん [2007/08/05(日) 00:42:42 ]

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

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

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

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

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

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

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

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

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

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

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

とっと死に晒せや糞ニート天皇が

228 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:07:06 ]
初心者じゃないんだけど、axisとかlog4jとか使ってるフリーのJavaライブラリを
複数使ってるとjarの中にあるクラスがバージョン違いで実行エラーになるんだけど
どうしたらいいんだろう。

実行中にロードされたクラスファイル全部を見直して、モジュールの競合を解決してくれたり
何がいけないのかを判断してくれるツールないかなー?


231 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:12:54 ]
>>230
・競合ライブラリを最新のものに統一する。動かない部分は自前で修正
・それかクラスローダを分ける



232 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:14:47 ]
>>231
クラスローダを分けるとClassクラスとかでインスタンス生成するとき面倒じゃない?
競合ライブラリを最新のものにして、古いメソッドや仕様変更したAPI使ってたら、アウトだし。


233 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:18:44 ]
初心者じゃないって前振りはいったいなんだったのだろうか。

234 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:26:58 ]
できるでしょ。

>a.getList.add(hoge1);

a.getList().add(hoge1);

236 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:29:07 ]
uho-勘違いしていました
お恥ずかしい(-_-)

>>235
回答ありがとうございました

237 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:33:58 ]
複数のスレッドから操作されるフィールドcountに
volatlieを付けるとする。どの程度保障されるもの?

while (count < 0) {

}
public void setCount() {
    this.count = count;
}


238 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:35:06 ]
仮引数書き忘れた。。。

239 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:44:20 ]
そんな意味不明なコード片じゃ何が言いたいのかわからん。

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

・・・ていう話? それとも volatile の正確な定義が知りたいのん?

240 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:45:56 ]
Java の volatile はいい加減な実装になってる可能性がある、
って話を見たことがあるんだけど、今でもそうなの?

241 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:55:30 ]
可能性の話をされてもなぁ。
1.4 以前と 5.0 以降で volatile の仕様が変わったという話はある。
少なくとも 5.0 以降は仕様どおり実装されてんじゃない? Sun の VM では。
でなきゃ、java.util.concurrent.* あたりが今ごろ異常動作しまくりのはず。

詳しい話はこのへんでもどうぞ↓
www-06.ibm.com/jp/developerworks/java/040416/j_j-jtp02244.html
www-06.ibm.com/jp/developerworks/java/040514/j_j-jtp03304.html
www-06.ibm.com/jp/developerworks/java/library/j-jtp06197.shtml



242 名前:223 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 04:02:50 ]
Java内部がビッグエンディアンというか、
Data*StreamやデフォルトのByteBufferがそう補正してるってのが正しい?

244 名前:デフォルトの名無しさん [2007/08/05(日) 04:09:43 ]
正しくない。
というか意味がわからん



245 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 04:40:07 ]
意味が分からないなら書くな。てかJavaDocに載ってる。

246 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 05:17:10 ]
最近byteとintの単項数値昇格ネタ増えたな。
俺自身バイト指向でデータ扱うことが減ったのですっかり忘れてた。
"& 0xFF"で下位bitのみとれって話だよね。


247 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:05:18 ]
Jakarta CommomsのHttpClientについてのいいページない?
ググったけど、情報量が足りないページばかり。

248 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:22:41 ]
>>247
情報量って。。。本家にいくらでもあるだろ

249 名前:デフォルトの名無しさん [2007/08/05(日) 09:27:21 ]
ファイルの入出力をしているのですが、

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

という用に行いたいのですがどの様にしたら良いでしょうか?
教えてください。

250 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 09:50:44 ]
>>249
どのJAVAの入門書でもサンプルコードが載ってるだろ
ググれば山ほどあるだろ

251 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:27:43 ]
>>242
時代の流れだな
Javaでバイトを意識してデータを扱うケースは稀だし、知らない技術者も多い



252 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:02:22 ]
String型変数に入っている(2バイト)文字の文字列を
漢字、ひらがな、カタカナ、その他記号などといった種類別に分割するということを

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

Javaで(効率よく)やるにはどのようにしたらよいでしょうか?
(というか、文字種別をどうやって判断したらよいでしょうか?)
文字コードによる問題などもありますか?


253 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:07:50 ]
ひらがなとカタカナは順序どおり並んでるらしいからif thenでやるのが簡単っぽいけど

254 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:10:03 ]
漢字・ひらがななら3バイトだと思うのは置いといて、
自然言語解析するか単純にテキストそう舐めして用意しといた単語リストと照らすか。
日本語はRPNなのでry

言い出したら切りがないな。


255 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:12:39 ]
UFT-16なんだから、全部2バイトだろ

256 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:14:09 ]
volatlieの件だけど、1.5ならいけそうです。
ありがとう、検証してみます。
1〜400のスレッドから操作を受けてるみたい

257 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:36:33 ]
>>256
1.5ならば、AtomicIntegerの使用を検討してみたら?
アトミックな操作が簡単に出来る

ただ、そもそもスレッド周りの勉強をした上でスレッドに手を出した方がいい

258 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:39:45 ]
>>252
効率よくやる方法はかなり難しいのではないか?
英語のように単語間がスペースで区切られているなら楽だろうが・・・

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

下手に文字コードを数値で表現した所で、バグは増えても実行性能は大してかわらなそ

259 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:40:16 ]
スレッドに手を出さなきゃスレッドの勉強なんぞできないだろ
このスレの自称中級者どもはうざいのばっかだな・・・

260 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:51:02 ]
お前は新しい技術をコピペでもして使ってから勉強するのか?
動けばいいという低レベルなマの典型だな

261 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:56:40 ]
お前のコードはバグだらけなんだろうな。
普通は模範的なコードを見て覚えるもんだ。



262 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:58:18 ]
模範的なコードを意味も含めて理解することが勉強ではないのか?w

263 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:59:59 ]
>>262
お前自身が何も理解してなさそうだな。この流れをみるに。

264 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:02:00 ]
>260の頭が悪いということは解った

265 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:02:53 ]
初学者がvolatileって単語にたどり着いてる時点でGoサインはでてるだろ
いじって覚える絶好のころあいだと思うのだが違うのか?

266 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:27:56 ]
別の人がさわらないプログラムだからと言って、クラス変数を全てpublicにしたら怒られそうですが。

public class Hogegege
{
  private String name__;

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

っていうように、クラス変数を要求されたときに
新たに生成したものを返して絶対に変更できないようにした方がいいんでしょうか?
それとも単に return name__; でOK?

267 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:32:10 ]
String は元から絶対に変更できないから単に return でOK。
変更できるようなオブジェクト (普通の配列とか) は clone した方がいいこともある。

268 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:40:46 ]
StringやIntegerなどは不変クラスと呼ばれる値オブジェクトとして理想的な構造を持ってる。

例えばOSごとの改行コードを返すクラスがあるとして、
それがchar[]で返されるものなら、それは return clCode.clone(); とかすべき。
コレクションならCollections.unmodifiable系メソッドでラップするのもよし。

269 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:52:08 ]
要求された側が何をしたいかにもよる
要求された側も何をさせてOKかを考える
その上で生で公開させてもいいし、防御的にコピーを返してもいい
結局は要求次第だが、なるべくは防御的にするのがセオリー

Stringに関しては>267,268の説明の通り
たが、char[]をコピーするか否かは要件次第なので、一概にコピーするべきとは言えない

271 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:41:35 ]
変なのが騒いでるが
だれか満を持してネタ投下した>>255に突っ込んでやれよw

UTF系は固定長じゃないぞ。



272 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 16:15:11 ]
UTF-32は固定長だが、UTFじゃなかったのか。

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

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

UTFは元来可変長で表すもの。

274 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 17:13:49 ]
サロゲートがそもそも後付けだろ

275 名前:132 mailto:sage [2007/08/05(日) 17:31:38 ]
連結って意味だったんですね^^;
謎が解けましたorz

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

276 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 17:48:43 ]
サロゲートが後付けって言うかUnicode作り出した段階で
すでに16bitじゃ足りないのは分かってたけどそれに対処したのが遅れただけ。
実装側の互換性の問題とかがあったから。

277 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:08:47 ]
>>277
nextInt()は32ビット乱数のはずだから負数も取った気がした。
0と自然数だけ欲しければnextInt(26)ってやれば0〜25をとるよ。

279 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:23:18 ]
アンカーミスった
>>278 >>280
思い通りの動作が出来ました、どうもありがとうございますm(_ _)m




282 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 19:52:27 ]
>>276
サロゲートペアはUnicode誕生から5年後に導入されたんだが。
適当なこと書かないでおくれよw

283 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 21:45:02 ]
小生、Eclipseを使って開発しているのですが
本日「BufferUnderflowException」なるものが発生しました。
ググってみたところ「相対「get」操作がソースバッファのリミットに達したときスローされる、チェックされない例外です。」
との記述があったのですがよく意味がわかりませんでした。
ここでいうソースバッファのリミットとはコンパイラーのメモリのことを指しているのでしょうか?
もしメモリ関連のサイズのことを指しているのでしたらどこで設定できるのかどなたか教えていただけないでしょうか?
ちなみにEclipseの設定→Java→インストール済みのJREに指定しているのは最新のJRE1.6.0です。

284 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 21:53:47 ]
いや。
java.nio.ByteBufferあたりのクラスのget系メソッドでサイズをオーバーして読み込んでしまった意味。
配列で範囲外のインデックスを使ったっていうのに近い。 単にプログラミングミス。

285 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:04:45 ]
>>283
相対操作はpositionが読み込んだ値のバイト数分先に進むんだよ。
あと何バイト読み込めるかはremainingで確認できる。

構造体チックに各メンバ変数の並びを仮定して使うなら、0, 4, 8みたく
プリミティブごとのバイト数を足して絶対アクセスすればいい。

286 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:10:18 ]
プログラムミスだなんて・・・・そんな・・・
実績のある会社が提供してる有料のライブラリーに含まれるメソッドを使ってたんだけど
使い方がわるかったのかなぁ・・・あーもう嫌ぽ

287 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:20:12 ]
すいません、javaである処理を実行すると
コンソールの初めあたりに以下のようなエラーメッセージが出て
VM?ごと処理落ちしてしまいます。
しかもこれは必ずは発生するというわけではなくて不定期に出てしまいます。
不定期ですが処理を繰り返しているとすぐ発生する感じです。
JREのランタイムも最新のものを指定いるのですが相変わらず発生します。
どなたかわかる方がいらっしゃいましたら教えてください
「An unexpected error has been detected by Java Runtime Environment」

288 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:29:50 ]
エラーログ嫁

289 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:39:56 ]
申し訳ありません。エラーログ?を読んでもさっぱりわかりませんでした。
通常のログとは違ってこの処理落ちの場合にのみ生成されるログをのことだと思いますが
なんか「Thread」「Process」「System」といった感じにわけられて情報を
ダンプしているような感じに見受けられましたがエラー原因となるような記述は
書かれているのかいないのかサパーリでした。なにか読み方があるのでしたら教えてください

290 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:03:08 ]
forum.java.sun.com/thread.jspa?threadID=777177
こういう感じのやつか?

最初のほうの#がついた行をうpしてみ

291 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:27:01 ]
あぁそれですわ。でもログは職場のマスィーンにあるので今うpできんのです申し訳ないです



292 名前:デフォルトの名無しさん [2007/08/06(月) 00:13:57 ]
>>286
ソースコード読んでみろ
実績のある会社ならばソースコードくらい提供できる
出来ないとか抜かすならば金払う必要なし
逆コンパイルしてバグ見つけて訴訟もおk

293 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:42:55 ]
>>287
それってJavaからネイティブモジュール読み込んでます?*.dllファイルとか?
それだともしかしたら、PCの相性が悪いだけかもしれません。
自分もJNIを用いたプログラムでブルースクリーン出した事がある。しかも不定期。。



294 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 01:06:59 ]
ネイティブ使用ならVM引数にXcheck:jniをつけてみる
しかし>>287のよーな現象に陥ったことがない為役にたつかはわかんない。

295 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 01:15:05 ]
>>286
まぁその会社のサポート窓口に訊いてみれば?
使い方の問題にせよバグにせよ、なんらかの返答はあるでしょ。

296 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 01:16:58 ]
JDI でオブジェクト生成を監視するのってどうすれば良いとおもう?

297 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 03:02:37 ]
>>282
お前は日本語理解しような。

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

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

固定長なのはUCS-2ですよw

298 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 08:10:39 ]
UCS-2 UCS-4 っていうのは文字集合であってエンコーディングじゃないんでは?

299 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 01:52:40 ]
>>304
プロジェクトで決められてたら、それに従えばいい。そうでなければ好きにすれば良い。

経験的には手作業で final 付けてると、そのうち嫌気がさして止める。

308 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:06:45 ]
一番最初にやるHelloWorldなんですけどテキストに書いて
それをコンパイルしようとしたんですけど
「javacは内部コマンドまたは外部コマンド、操作可能なプログラム
またはバッチファイルとして認識されていません」となってしまいます。
どうしたらコンパイルできるようになりますか?


309 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:08:35 ]
環境変数でググれ

310 名前:デフォルトの名無しさん [2007/08/07(火) 02:10:14 ]
>>306
final付けなくてはエラーになると本気で思っているならば勉強不足
それは匿名クラスなどに参照を渡しているからだろう

311 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:10:26 ]
環境変数PATHを設定する



312 名前:308 mailto:sage [2007/08/07(火) 02:23:25 ]
とりあえずみんなが指摘してくれた通り環境変数見てみたんだけど多分あってると思う。
;C:\Program Files\Java\jdk1,5,0\binをpathに加えればいいんだよね?

313 名前:デフォルトの名無しさん mailto:sage [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", "");
}
}


314 名前:308 mailto:sage [2007/08/07(火) 02:26:07 ]
やっぱり駄目だ・・・誰か助けてくれ

315 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:27:05 ]
カンマとピリオド再確認

316 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:33:38 ]
あと、本当に 1.5.0 かどうかも。
実は 1.6.0 をインストールしてましたとか。

317 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:50:20 ]
>>312
> ;C:\Program Files\Java\jdk1,5,0\binをpathに加えればいいんだよね?
を加えちゃいかん
;"C:\Program Files\Java\jdk1,5,0\bin"
空白文字の扱いを知らんのか

319 名前:318 mailto:sage [2007/08/07(火) 02:52:26 ]
しかもピリオドでなくてカンマやんw
;"C:\Program Files\Java\jdk1.5.0\bin"

320 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:53:01 ]
>>312
pathに加えた手順を説明してみて

321 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:01:01 ]
java的にはfinalな引数を導入したのは内部クラスから参照するためって事を知ってる前提で話してるんだよね?

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

自分からfinal付ける明白な理由もなさそうだし。



322 名前:308 mailto:sage [2007/08/07(火) 03:04:37 ]
駄目だ・・・何でできないんだ?とりあえず315さんにいわれたようにカンマとピリオドはおk
そして318さんに言われたとおりに;"C:\Program Files\Java\jdk1.5.0\binってPathのあとに
つけて今にいたりました>>320


323 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:08:53 ]
PATHをマイコンピュータのプロパティから変更してるなら、
プロパティをOK押して閉じてからコマンドプロンプトをいったん閉じて開きなおす。

324 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:10:35 ]
そもそもC:\Program Files\Java\jdk1.5.0\binってフォルダの中にjavac.exeがあるのかね?

325 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:13:11 ]
>>322
ちなみにうちの環境だと
C:\Program Files (x86)\Java\jdk1.5.0_01\bin
にjavac.exeはある

326 名前:308 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:28:25 ]
>>326
それは関係無い

コマンドプロンプトから
"C:\Program Files\Java\jdk1.5.0\bin\javac.exe" -version
って入れて Enter 押して結果を教えなさい

328 名前:308 mailto:sage [2007/08/07(火) 03:31:03 ]
指定されたパスが見つかりませんたって出ました

329 名前:デフォルトの名無しさん [2007/08/07(火) 03:31:06 ]
ClassPath通してる?

330 名前:308 mailto:sage [2007/08/07(火) 03:33:52 ]
よくわからない

331 名前:デフォルトの名無しさん [2007/08/07(火) 03:33:54 ]
C:\Program Files\Java\jdk1.5.0\libの中の
jarファイルにクラスパス通してないんじゃないの?



332 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:34:39 ]
>>328
マイコンピュータ開いてCドライブ開いて・・・って辿っていってjavac.exeのあるフォルダ確認して。
Windowsの種類やJDKのバージョンによってこのフォルダのパスは変わるから。

333 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:35:11 ]
よく釣りに付き合ってますねー
肝心なとこスルーして答えてないしメチャクチャ釣り臭いんですけど

334 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:36:37 ]
>>333は教えることもスルーすることもできないゴミ

335 名前:デフォルトの名無しさん mailto:sage [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 ]
釣りだべ

337 名前:308 mailto:sage [2007/08/07(火) 03:45:11 ]
ごめん釣りじゃなくて本当にわかんないんだよ・・・喧嘩しないでくれ
>>332よくわからない調べ方が。>>335も調べ方がわからない。本当にすまん。初心者なんだ。


338 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:51:11 ]
もうjavac.exeをハードディスクの中で検索したら?

340 名前:308 mailto:sage [2007/08/07(火) 03:55:34 ]
1○
2○
すまんもうこれ以上わからん・・・


341 名前:308 mailto:sage [2007/08/07(火) 03:56:15 ]
>>339
ごめん。どうすればいいですか?



342 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:56:28 ]
実はJDKをインストールしていませんでしたというオチ?

343 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:57:58 ]
>>340
じゃあJDKをインストールしてないんじゃないの?
これはPCに元から入ってるものじゃないよ
どこからダウンロードした?
そもそもダウンロードすらしてない?

344 名前:308 mailto:sage [2007/08/07(火) 03:58:09 ]
いや本についてる奴インストールしたと思う。

345 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:58:13 ]
>>341
たぶんね、まじめな話パソコンに慣れてからのほうが良いと思うんだ。
門前払いする気は無いんだけど、PC の知識はどうしても必要になるから、今のままだと今後さらに悩むことになる。

とりあえず寝れ。寝て起きてまた考えろ。

346 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:59:20 ]
>>341
HDD内のファイル検索すらしたことが無いのか?
プログラミングはかなり時期尚早だよ。

347 名前:308 mailto:sage [2007/08/07(火) 04:01:15 ]
>>345
なんかみんなの話聞いてたら確かに自分は早すぎるなと思ったわ・・・_| ̄|○
とりあえず今日はもう一回インストールしてみて寝ます。ありがとうございました。


348 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 04:03:34 ]
>>347
インストールの途中で出てくる説明はよく読んでね
特にインストール先のフォルダを指定するところがあるだろうからそこはメモしておくといい

349 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 04:03:45 ]
>>347
今みたいに、Java を勉強する過程で PC についての知識を深めるという荒業もある
じっくりやれば良いと思うぜー

350 名前:308 mailto:sage [2007/08/07(火) 04:16:29 ]
>>349
>>348
ありがとうございます。まだ基本的な知識が抜けているので自分で勉強しながらROMしようと思います。
質問できるレベルに達したらまた顔をだそうと思います。

351 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 04:23:37 ]
>>304
引数につけた final はメソッドを使う側からは見えないので、
完全にメソッドの実装側の都合となるためそれほど重要でない。

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

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

不要派が多いんじゃないかな。自分も不要派



352 名前:351 mailto:sage [2007/08/07(火) 04:42:09 ]
補足。

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

したがって、この意味でも、引数に final をつける意義は薄れている
というのが、不要派のおいらの個人的意見

353 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:35:11 ]
C++でもconstを引数に使うのはconst char *のようなケースだけだものね。

354 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:44:14 ]
いやC++のconst参照渡しは中身を書き換えないところまで保障するから別だとおもうが……

355 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 08:09:04 ]
char * const s といった使い方はまずしないということだろ。
javaでfinalにした場合はこの意味だから。

356 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 09:32:08 ]
>>352
引数に代入行うと混乱するぐらい長いメソッド自体の方をリファクタリング対象にした方が良いような。
短いメソッドなら引数に代入されても大して混乱しないし。

357 名前:デフォルトの名無しさん [2007/08/07(火) 09:52:57 ]
>>356
長いメソッド云々の前に引数に代入すんな、って話だと思う
どっちも糞コードなのは間違いないが、長いメソッドは可読性が低いだけ、引数に再代入するってのはバグと言ってもいいだろう

358 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:04:10 ]
Javaにもいい加減constとfriendクラスが欲しいです

359 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:16:01 ]
>>357
なんで引数に代入しただけでバグになるんだ……

変更前の引数の値を期待してるところが残ってるのに、引数変更しちゃうと
バグの元になるってんならわからなくもないけど、短いメソッドなら修正容易だし。

360 名前:デフォルトの名無しさん [2007/08/07(火) 10:17:14 ]
www.vipper.net/vip299169.jpg
この中で削除して良い物は在りますか?

361 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:39:32 ]
ついでに、6 の Update 2 があるんだから、
6 の Update 1 も削除していいんじゃない?

364 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:40:02 ]
理由も無しに「バグに近い」とか言われても。夏だなぁ、としか。

365 名前:デフォルトの名無しさん [2007/08/07(火) 10:50:36 ]
理由も解らないなんて夏だな

366 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:50:39 ]
>>362にとってはバグなんだろ
そっとしといてやれ

367 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:59:07 ]
どっちでもいいんだけど、そもそもバグの定義ってなんだ?

368 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 12:26:05 ]
自分の思った通りにならなくて駄々をこねる状態にさせるもの

370 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 12:35:51 ]
>>370
32文字以下に限るけど、

2^n 回ループで、iが媒介変数だとして、
「iのmビット目が立っていたらm文字目を?に置き換える」という処理を
n回やればいいんでは。




372 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 13:12:42 ]
buildSearchKey とかが良いと思うんだ

373 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 13:28:05 ]
簡単に書くならこうでもいい
for (String s : new A("ABCD")) System.out.println(s);

376 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 14:18:24 ]
引数への再代入は否定せんが仮引数名から
(変数の役割が)意味が変わる再代入は反対だな。アレは書いた奴にしか読めん。

friend欲しいのは設計が悪い。
constはjavaでは無意味。

377 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 14:34:18 ]
constっぽいものはJSR-308のサンプルにある
@Readonlyが追加されたら近い事が出来るようになるかも?

378 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 14:44:21 ]
>@Readonlyが追加されたら近い事が出来るようになるかも?
generics組み合わせたりすると型名がやたら長くなるのはいただけないけど、
コーディングミスを考えるとやむを得ないか……

379 名前:368, 370 mailto:sage [2007/08/07(火) 18:02:05 ]
>ご回答下さった各位様
ありがとうございます。
少々違った形での実装となりそうですが、無事に進められそうです。

// 検索キーの桁数を考慮しないと酷い性能に……orz

380 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:09:40 ]
なんかよくわからんが、元の検索キーから正規表現を構築してそれで検索した方が簡単じゃない?

381 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 19:42:29 ]
集計やイテレータを担う変数など、変化することが前提であるもの以外は、
引数を含むローカル変数は基本的に再代入禁止にした方がよいし、そうすることが可能。

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

また、このリファクタリングは、他のリファクタリングを行う際の前処理にもなる場合もある。
例えば、ローカル変数の内容をメソッドから取り出すようにリファクタリングする際、
内容がメソッドの場所によって変わってたら困る。



382 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:34:27 ]
明示的にコンストラクターを起動している間、インスタンス・フィールド name は参照できません


このエラーはどういうことでしょうか?
調べてもわからなかったです。すみません。

383 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:59:19 ]
>>389
コマンドプロンプトで PATH って打って、
JDK の bin フォルダがちゃんと追加されているかどうか確認する。
エクスプローラーでマイコンピュータから C: → Program Files → ... ってたどっていって、
本当にそのフォルダが存在していて中に javac があるかどうか確認する。



392 名前:デフォルトの名無しさん [2007/08/07(火) 22:00:02 ]
>>391様、ありがとうございます。
早速やってみます。

393 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:03:02 ]
>>390
int x = 0xc01a;
String s = "" + (char)x;

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

String s = new String(new char[]{ (char)x });

394 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:04:27 ]
>>389
ttp://www.shuwasystem.co.jp/books/7980/0533-9/0533-9.html
正誤表出ているが、パスの設定を1.4のデフォルトでやったんだろう

395 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:21:49 ]
>>390
String str = Integer.toString(0xC01A);

396 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:31:06 ]
アンダーバーの有無をよく確認してみて。
PATH の中の j2sdk_1.4.1_01 実は j2sdk1.4.1_01 が正しいんじゃない?

399 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:32:41 ]
>>397
c:\j2sdk_1.4.1_01\bin\javac -version
ってコマンドプロンプトで打ち込んでみて

400 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:35:39 ]
どうでもいいが、pathに設定してもろくな事ないと思うが・・・

401 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:39:51 ]
>>390
new String(new int[] { 0xC01A }, 0, 1)



402 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:40:39 ]
>>390
String s = "\\u"+ String.format("%x", 0xC01A).toUpperCase();

403 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:07:13 ]
じゃあ、 >>397 の PATH には ...fujitsu\sa\dll; と c:\j2sdk... の間に改行が入ってるように見えるけど、
本当に改行やら無駄な空白が入っているのなら、取り除いてみてください。

409 名前:デフォルトの名無しさん [2007/08/07(火) 23:18:09 ]
>>408様、ありがとうございます。
もう一度やってみます。

410 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:25:49 ]
>>405
エスパーしてみる
DドライブにJDK入っているとかじゃない?

エクスプローラーからjavac.exeを選んで、コマンドプロンプトにドラック&ドロップしてみてくれ
そこで表示されたパスをここにココにコピる

411 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:27:34 ]
>>397
c:\j2sdk_1.4.1_01\bin
志村、sdkの後ろに_入ってるぞ
キーボードで入力するんじゃなくて、パスはコピー&ペースト汁



412 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:53:39 ]
>>409
エクスプローラでアドレスバーを表示するようにしてないの?

413 名前:デフォルトの名無しさん [2007/08/08(水) 01:05:36 ]
皆様、ありがとうございました。
アンインストールしてもう一回始めからやり直してました。
そのおかげか、ソースコードを書き直したお陰か(本の文書の方では
『//MyJava』となってましたが、実際の画面を写した写真では『//MyJava.java』と)
PATHの方も、本を見るのではなく、>>411様の通りにコピペをしました。

何とか前進できました。

414 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:09:45 ]
まずはWindowsの使い方から始めるべきだな

415 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:16:57 ]
>>413
そんな違いよく見つけたね
でもコメントの違いはプログラムの動作に影響しない

416 名前:デフォルトの名無しさん [2007/08/08(水) 01:17:41 ]
>>414様、ありがとうございます。
頑張ります。
PC自体初心者なのに、訓練学校に入ってしまい今、毎日が勉強です。
今年中にブロンズとSJC-Aを取得するように言われていて…
努力しかないですね。

417 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:17:42 ]
最近はコマンドプロンプトもbatもいらないからな

418 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:54:40 ]
>>384
かわいそうだが、その本は地雷だから。

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

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

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

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

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



419 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 07:12:47 ]
独習が良いと聞き買ったが分厚いので持ち運びに不便であまり読まないwwwwwww






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<116KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef