【初心者】Java質問・相談スレッド112【大歓迎】at TECH
【初心者】Java質問・相談スレッド112【大歓迎】 - 暇つぶし2ch175:デフォルトの名無しさん
08/02/12 23:55:03
>>169は管理職で残業代出る後輩のが手取りは多い、とか。

176:デフォルトの名無しさん
08/02/12 23:59:00
>>175
それはありそうだな
生産性が低ければそれだけ残業するしな


177:デフォルトの名無しさん
08/02/13 00:12:03
30過ぎて月給25万の俺を慰めてくれよ

178:デフォルトの名無しさん
08/02/13 00:39:15
愚痴るならマ板池

179:デフォルトの名無しさん
08/02/13 00:56:10
25万ももらえば十分だろ
贅沢言ってんじゃねえよカス

180:デフォルトの名無しさん
08/02/13 00:57:54
import,例外処理は省略します
public class ComServer{
private ServerSocket sock; private Socket client;
public final static int portNo = 10500; private BufferedWriter writer;
private BufferedReader reader; private String msg = null;
ComServer() init();
void init(){
if(sock == null){
sock = new ServerSocket(ComServer.portNo,1);
client = sock.accept();
client.setKeepAlive(false);
System.out.println("Client connected");
}
if(reader == null) reader = new BufferedReader( new InputStreamReader(client.getInputStream()));}
String receive(){
if(reader == null)init();
String msg = null;
msg = reader.readLine();
return msg;
}
class s extends Thread {
private BufferedWriter writer;
private String msg;
s(String masg)this.msg = masg;
if(writer == null) writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
public void run(){
writer.write(msg,0,msg.length());
writer.flush();
}}}
すいません。たぶん根本的な間違いとおもいますがエラーがでてコンパイルできないです
申し訳ないですがバグを見つけてもらえないでしょうか?おねがいします. 環境はeclipse3.3.1.1 jre1.6.0_03です

181:デフォルトの名無しさん
08/02/13 01:11:43
いやだ。

182:デフォルトの名無しさん
08/02/13 01:13:59
>>180
エラーどこ、main どこ。クラスの先頭は大文字で。
eclipse ならエラーの対処方法も出るでしょうに。

183:デフォルトの名無しさん
08/02/13 01:14:28
>>180
問題点の候補はコンパイラが見つけて教えてくれてるだろ
エラーメッセージを読んで理解しろ

184:デフォルトの名無しさん
08/02/13 02:23:07
reader = new BufferedReader(new FileReader("./hoge"));
で実行ファイルと同じディレクトリのファイルを読み込むGUIアプリを作っているのですが、
実行ファイルが置いてあるディレクトリとは別のディレクトリのファイル(例えばデスクトップ)を引数に
そのアプリを立ち上げると
カレントディレクトリが
C:\Program Files\Common Files\System\MAPI\1041\nt\
と、よくわからないディレクトリになります。
何ででしょうか?

改善するためには、実行ファイルが置いてあるディレクトリを基点に
ファイルを読み込むようにすればいいと思うのですが
そのディレクトリを取得する方法がわかりません。
どうすればよいでしょうか?

185:デフォルトの名無しさん
08/02/13 02:31:52
そんな方法はない。
固定ファイルならリソース使え。設定ファイルなら Preferences 使え。

186:デフォルトの名無しさん
08/02/13 10:35:03
java.class.pathをとって、自分で探索していけば分かるかもしれない。

187:デフォルトの名無しさん
08/02/13 11:28:43
>>180
さらっと見ただけだが、

>ComServer() init();

こんな構文ないだろう

188:デフォルトの名無しさん
08/02/13 11:40:54
>>180
コンパイル出来ないのはバグじゃない。
なんでもバグで片付けようとするなよ馬鹿。

189:デフォルトの名無しさん
08/02/13 12:05:05
>>184
Mainクラスにmain()があるとして、

URL url = (new Main()).getClass().getResource("Main.class");
String dir = url.toString();

みたいなかんじでどう?
jarから起動のときはそこからちょっと処理しないといけないけど

190:デフォルトの名無しさん
08/02/13 12:27:21
Graphicsを画像保存したいのですが
GraphicsオブジェクトからImageオブジェクトに変換できますか?


191:デフォルトの名無しさん
08/02/13 13:20:15
>>190
BufferedImageに描画するようにして、それを保存したらどうよ?

192:デフォルトの名無しさん
08/02/13 13:20:21
>>190
BufferedImage image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
好きなように g に描く
g.dispose();
image げっと!

193:デフォルトの名無しさん
08/02/13 20:09:53
明解Javaとかいう本、糞すぎる
前半はいいとして後半がめちゃくちゃ
結城さんのプログラミングレッスンのほうがはるかに信頼できるわ

194:デフォルトの名無しさん
08/02/13 20:12:10
悪かったな。じゃあおまえが書けよ。

195:デフォルトの名無しさん
08/02/13 20:59:44
例外オブジェクトって何ですか

196:デフォルトの名無しさん
08/02/13 21:00:30
明解Javaって糞本なのか?
持ってないから解らんがw

197:デフォルトの名無しさん
08/02/13 21:09:19
Java SE なんてどの本も同じだろw
つーかネットの連載とかで十分だし
本を糞と評価する奴が頭悪いだけって方が多いよな

198:デフォルトの名無しさん
08/02/13 21:10:38
TeX で組んでない技術本は総じて糞。

199:デフォルトの名無しさん
08/02/13 21:11:39
オライリは頑張って買ったw
英語版はつらいから日本語版待ってOrz..

200:デフォルトの名無しさん
08/02/13 22:11:16
いみふ

201:デフォルトの名無しさん
08/02/14 00:20:11
oh jesus
my jesus
I pleded my heart

202:デフォルトの名無しさん
08/02/14 00:20:46
>>197
おまえ生意気だな
口の利き方に気をつけろよ
誰に話してると思ってんだ?
知らぬが仏とはいうがたいがいにしとけよ

203:デフォルトの名無しさん
08/02/14 01:40:52
byte[] b;
int i;

//DoJa5.1がコンパイルエラー
try {
byte[] b = new byte[1000];
i = b.length;
} catch(Exception e) {
System.out.println("" + i + e);
}

//DoJa5.1がコンパイル成功
try {
byte[] b = new byte[1000];
i = b.length;
i = 5; //なぜこれを書くとコンパイルが成功するんですか?
} catch(Exception e) {
System.out.println("" + i + e);
}

204:デフォルトの名無しさん
08/02/14 01:55:04
て言うかそもそも b を二回定義してるのがおかしい気が…

205:デフォルトの名無しさん
08/02/14 02:10:55
>>195
検索で大体意味はつかめると思うのだが…

まぁ、言語規定によると「オブジェクトは、クラスのインスタンス又は配列」とある。
当てはめると、「例外クラスのインスタンス又は例外配列」ということになる。

そもそも、オブジェクトを配列の意味で使ってる文は少ないし、
例外は配列としないことが普通だろう。として限定すると、前者の意だろう。

>>203
エラー詳細も張らずに質問とな?

206:デフォルトの名無しさん
08/02/14 02:17:23
>>203
try節の中でbを二重定義しているのはおいておいて、
i=5;をそこに書いてもコンパイルに成功しない気が。
上が失敗するのはi=b.length;を評価する前に例外が発生して、
catch節に飛んでしまう可能性があるから、
その場合はiが初期化されていないのでコンパイルエラーを起こす。
int i;の段階でint i=0;とかで初期化すればエラーは出ないはず。
動作として正しいかどうかは別として。

207:デフォルトの名無しさん
08/02/14 03:40:30
>>204,>>206
2重定義でした。ありがとうございました。

208:デフォルトの名無しさん
08/02/14 03:44:59
そっちかよw
でもiの未初期化でもエラーが起こらなかった?

209: ◆xkgLgN/H4.
08/02/14 10:24:06
Sun認定Javaプログラマの試験対策問題集で納得できない部分があったので
質問させてください。

----------

問:アサーションの使用方法として適切なものを選びなさい。

【A】
public void method(int data) {
  assert data < 0: "dataが負数";
}

【B】文法間違いなので割愛

【C】
public void method(int data) {
  assert check(data): "checkメソッドがfalseを返した";
}
private boolean check(int data) {
  if (data < 0) {return false;}
  return true;
}

続く...

210:209 ◆xkgLgN/H4.
08/02/14 10:25:50
...続き

【D】
public void method(int data) {
  boolean checked = check(data);
  assert checked: "checkメソッドがfalseを返した"
}
private boolean check(int data) {
  if (data < 0) {return false;}
  return true;
}

正解は【D】なのですが、その解説が

【A】publicなメソッドの引数チェックをアサーションで行うのは不適切
【C】デバッグ時のみ使用し本番では使用しなくなるアサーションで
   メソッドの呼び出しを行うのは不適切
【D】内容は【C】と同じだが、メソッドの戻り値を変数へ格納し、その変数を
   アサーションでチェックしているので適切

というものでした。
【C】も【D】も「publicなメソッドの引数チェックをアサーションで行うのは不適切」に
該当する感じがして納得できないのですが、どう考えるべきですか?

また、【C】の解説が言わんとすることは、
アサーション有効時と無効時で呼び出されるメソッドが違う等の条件の違いがあっては
デバッグ作業として良くない
ということでOKですか?

よろしくお願いします。


211:209 ◆xkgLgN/H4.
08/02/14 10:31:18
訂正
【D】のassert行の末尾にセミコロンが抜けてました。
本来はセミコロンは付いています。

212:デフォルトの名無しさん
08/02/14 10:44:59
Eclipseで製作したプロジェクトをjarファイルにエクスポートする際、
ImgaIconに使った画像や、プラグインとして使用したjarファイルが
含まれずに生成されてしまいます。どうすればよいでしょうか?


213:デフォルトの名無しさん
08/02/14 10:50:09
>>210
しょせん試験なんてそんなもの。
問題作ったやつがアホだったんだろう。

214:デフォルトの名無しさん
08/02/14 10:54:36
>>209
あら、俺は【C】で書いてるよ・・・。

215:デフォルトの名無しさん
08/02/14 10:54:40
long a,b;

aとbを比較したいのですが、a<bではダメなのですか??

216:デフォルトの名無しさん
08/02/14 10:55:33
>>212
jarにエクスポートするとき、含めるファイルと含めないファイルを選択できると思うが
含めたい画像ファイルやjarファイルにチェックマークを付ければいいんでないか

217:デフォルトの名無しさん
08/02/14 10:56:05
>>215
a<bでいいよ

218:デフォルトの名無しさん
08/02/14 11:00:01
>>216
その際、srcフォルダの.javaにはチェックボックスが現れるのですが、
画像やプラグインには現れませんでした
別に設定すべき箇所があるのでしょうか?

219:デフォルトの名無しさん
08/02/14 11:00:32
>>217
それですると
Exception in thread "main" java.io.IOException: Bad file descriptor
でてくるんですけど・・・。

220:デフォルトの名無しさん
08/02/14 11:05:23
>>219
long値a,bの比較は a < b の形式で問題ない。
その周辺のコードが悪いんだろうよ。

221:デフォルトの名無しさん
08/02/14 11:06:37
>>219
longの比較でIOExceptionが出るわけないだろうと思うが・・・
スタックトレースは?

222:デフォルトの名無しさん
08/02/14 11:13:12
>>220.221
すいません、正確には
RandomAccessFile bin1 = new RandomAccessFile(new File(FileName1),"r");
RandomAccessFile bin2 = new RandomAccessFile(new File(FileName2),"r");

if(bin1.length()>=bin2.length())
c=bin2.length();
if(bin1.length()<bin2.length())
c=bin1.length();
としており、long型のcに短い方のファイルサイズをいれたいのです。。
この部分に問題があるのは確かなのですが・・。


223:デフォルトの名無しさん
08/02/14 11:32:53
>>218
ビルドパスに入ってるjarファイルは出ないみたいだけど、画像はなんだろう・・?
ところで、jarにjarを含めても読み込めないよ
そういう場合はFatJarプラグインを使うといいかもしんない

224:デフォルトの名無しさん
08/02/14 12:01:55
jconsoleのリモート接続ができないのですがどんな理由が考えられますでしょうか?
接続対象の環境は
Windows2003
Java HotSpot(TM) Server VM バージョン 10.0-b19
VM引数として
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
を設定しています。
接続元からportqryコマンドで8888がLISTENING状態になっているのは確認済みです。

225:デフォルトの名無しさん
08/02/14 12:49:51
>>209
CとDとの違いは、Assertionを有効にしない実行時にcheckメソッドが通るか否かという点は理解できているな?

これは試験用のサンプルだからわかりにくいけど、
int result = dao.update(entity);
assert result == 1;
というサンプルならばCはNGでDがOKと解るだろう。
わざわざcheckというメソッドで引数をチェックさせているのは意地悪な引っ掛けだね。

226:デフォルトの名無しさん
08/02/14 12:55:32
>>225
俺は、A を却下してる時点で、C や D も却下されるべきだと思うな。
assertion 使わずに、変な引数にもちゃんと対応しろって言ってるように見えるのに、
C と D のどちらもそのガイドラインに沿っていない。

227:225
08/02/14 12:56:28
追記
>213
アホはお前。
「アサーションの使用方法として適切なもの」であるから、CDは「publicメソッドで引数チェックのやり方は不適切」だがアサーションの使用方法に関してはDが正しい。

228:デフォルトの名無しさん
08/02/14 12:58:14
>>222
その先何をやるのかわからないけど、必要なければ RandomAccessFile を使わない方が無難。
native なメソッドで追跡不能。例えば、ファイル長なら File.length でも可。

229:デフォルトの名無しさん
08/02/14 13:10:20
int型配列の最大要素数はどんだけ?

230:デフォルトの名無しさん
08/02/14 13:21:33
>>229
言語規定によると…
> 配列は,int値によってインデクス付けしなくてはならない。
で、int型の最大値 (Integer.MAX_VALUE) は 2,147,483,647 なので、要素数はその -1 まで。

231:230
08/02/14 13:27:25
自己レス。
要素数が最大値でインデクス値が最大値-1。かな…
まぁ、確保した時点で普通は OutOfMemoryError かと。

232:デフォルトの名無しさん
08/02/14 13:32:03
>>230
ありがとうございます。十分な量です。

233:デフォルトの名無しさん
08/02/14 14:24:53
Jakarta Projectスレがなくなっていたのでスレを立てた

Apache Jakarta Project関連統合【Java】
スレリンク(tech板)

234:デフォルトの名無しさん
08/02/14 16:12:12
質問です。

現在、mainクラスのガベージコレクションを、
多重継承されたインスタンスからコントロールしています。

ただ、Heap領域にアクセスする場合について、
そのコレクションフレームワークからマルチスレッド化させると、
ローカルにremoveしようとしても同期的な排他制御が取れません。
やはりラッパークラスのプリミティブ型は、エレメントのイテレータもhasNext()メソッドもどきで
volatile修飾子のシリアライゼーションをさせるのが絶対条件なのでしょうか。

ちなみに、もしコマンドライン引数によってJava.langのStringBufferまでimportしたとしても、
SetインターフェースのisEmptyメソッドにするとなぜかStackOverflowErrorの例外が発生します。
staticなyield()メソッドを汎用させるため、
throwsで例外ハンドラをコンストラクタなアサーションをしているのですが・・・。

C言語が腐るほど考えたのですが、
バイナリでのファイル操作がなかなかまとまらないため質問した次第ですので、
どうかお答えお願いします。

235:デフォルトの名無しさん
08/02/14 16:15:02
不覚にも吹いたw
プログラミングを何も知らない初心者が見たら、
めちゃくちゃ高度なことに見えるんだろうなぁ

236:デフォルトの名無しさん
08/02/14 16:22:04
未消化な単語ばかり並べてるけど、まあ初心者板なのだから。
やりたいことを自分の言葉やコードで示せば回答もあると思うよ。

237:デフォルトの名無しさん
08/02/14 16:32:42
スイーツ(笑)

238:デフォルトの名無しさん
08/02/14 16:33:08
>>234
まず、「てにをは」だけでも見直してみたらどうか?

239:デフォルトの名無しさん
08/02/14 16:36:31
まるで自動生成したかのような意味の通らなさだ

240:デフォルトの名無しさん
08/02/14 16:38:26
釣られてみる。
多重継承 :無理
GCのコントロール:原則としてできない
Heap領域にアクセス:??
ローカルにremove:??
ダメだ、突っ込みようもないわ

241:デフォルトの名無しさん
08/02/14 18:22:37
JLabelのpaintComponent(Graphics g)をオーバーライドして、
中でg.draw(new Line2D.Double(x, y))

とやると直線が引けました。
この直線を半透明にグラデーションさせたいのですが、どのようにするのがよいでしょうか?


242:デフォルトの名無しさん
08/02/14 18:29:49
AGGへのラッパーを書く。

243:デフォルトの名無しさん
08/02/14 19:22:35
>>222
小さいほうの値を選ぶだけなら static long Math.min(long, long) を。(if文を消せる。

244:デフォルトの名無しさん
08/02/14 19:56:19
>>241
GradientPaint と AlphaComposite を調べろ

245:241
08/02/14 20:19:12
ありがとうございます。
とりあえず直線はおいておくことにして、任意のShapeについて半透明グラデーション
させられるかを考えることにしました。

AlphaCompositeを利用すると一様にアルファ値が適用されてしまうようです(当たり前ですね)。
これを徐々に変化させるような処理というのはどういうプロセスになるのでしょうか・・・

かなり考えたのですが、すみません、ヒントいただけませんか?

246:デフォルトの名無しさん
08/02/14 20:30:35
少し描画して変更して、また少し描画する、あとは適当なタイミングになるように工夫して繰り返せ

247:デフォルトの名無しさん
08/02/14 20:48:02
ああ、少しずつ描画すればいいわけですね。
このY座標までは0.6fで、次からはもっと薄く・・・とか。
ありがとうございます。

しかし、タイミングって関係あるんでしょうか?
ひょっとして「徐々に」というのが時間的に捉えられてたとか・・・
すみません。これは距離的にということでした。

248:デフォルトの名無しさん
08/02/14 21:12:25
GradientPaintとか

249:デフォルトの名無しさん
08/02/14 22:41:53
速度が与えられれば時間的≒距離的だろう。
中学生レベルの理科か算数の話じゃねーか

250:デフォルトの名無しさん
08/02/14 23:09:02
>>244のヒントであとは自力でできないようなら他のことを教えられてもできそうにない
あきらめたほうがいい

251:デフォルトの名無しさん
08/02/14 23:31:23
いや、速度とか言ってるけど何か動かすような話じゃないと思うよ。
要するに図形を半透明にグラデーションさせたいわけだろ?
領域の面積で考えれば済む話じゃないか。しかももう判りかけてるみたいだし。

>>249,250はもうちょっと考えた方がいい。

252:デフォルトの名無しさん
08/02/15 00:14:39
「釣られて見る」 と宣言すればネタに無粋な突っ込みして許されるってもんでもないぞ。

253:デフォルトの名無しさん
08/02/15 00:25:57
すいません、質問です。
ゲームを作っているのですが、方向キーを押したときに画像が
切り替わるようにするにはどうしたら良いでしょうか。
歩いているように見せたいんです。
現在、方向キーを押すと画像が動くようにはできています。
分かりにくかったらすいません。

254:デフォルトの名無しさん
08/02/15 00:29:46
10個以上も上のやつのネタに突っ込みするんだからレス番ぐらいつけなきゃ無粋なんじゃ?

255:デフォルトの名無しさん
08/02/15 00:33:10
>>253
普通に描画するだけなんじゃ?
ていうか質問の件よりは動かすほうが難しいと思うんだが

256:デフォルトの名無しさん
08/02/15 00:33:24
ふと思ったんだが
やっぱり、strutsよりJSFの方が良くないか?

257:デフォルトの名無しさん
08/02/15 00:34:11
Struts が良いものと思ってる奴なんて居るのか?

258:デフォルトの名無しさん
08/02/15 01:14:43
>>255
キャラが左右に滑るだけでまだ手足が動かないということなんじゃ?

259:253
08/02/15 01:23:33
>>258
そういうことです。いいクラスライブラリがあるのでしょうか?

260:デフォルトの名無しさん
08/02/15 01:36:05
JSF って JSTL と何か違うの?

261:デフォルトの名無しさん
08/02/15 01:36:47
>>259
座標を適当な数で割った余りによってキャラを切り替えていくというのは?

262:デフォルトの名無しさん
08/02/15 01:37:17
何を考える余地があるんだ?
ちょっと考えたほうがいいのは241だろ
アルファ値込みでグラデーション設定したGradientPaintをsetPaintで設定したグラフィックコンテクストを使って
drawなりdrawLineなりで直線引けば終わりじゃないか
>>244でGradientPaintってヒントが与えられてるのに
AlphaCompositeで一様にしかアルファを設定できないって言ってるやつが変

263:デフォルトの名無しさん
08/02/15 01:44:13
GradientPaintで力不足ならAPIドキュメントでGradientPaint周りをぶらつけばLinearGradientPaintとかにも行き当たる

264:195
08/02/15 01:47:42
>>205

激しく遅レスでごめんなさい。

言葉足らずだった、というか話が長くなる予定だったので最初は簡単に意向と思ったというか。

Java(というかJVM?)でも、普通にメソッドを呼び出すと引数とかリターンアドレスとか
ローカル変数とかをスタックに積んでいくんだと思うんですよ。

でも呼び出し先で「例外」投げると呼んだメソッドへのリターンではなくって、
メソッド呼び出しを含むtry節に対応したcatchのところに(しかも例外の種類にあったcatchのところ)へ
一足飛びに戻ってくるわけですね。

そしてそこでキャッチした例外のインスタンスには、
そこから上のスタックがごそっと詰まっているように見えるわけです。

そんなこんなで、tryを実行するとJVMがどっかにcatchのアドレスと例外の型を保存していて、
呼び出し先のどこかで「例外を投げる」を行うと、スタックをこれまたどこかに保存したうえで、
もともと保存してあったcatchのアドレスにまで一足飛びにジャンプして、というのを考えると、
それというのはGotoなんかよりよっぽどたち悪くないか、なんて思ったりするんですけど、
それでも例外は使うな、なんて話は別に聞かないですし、そんなもんかとも思うんですが、
例外処理書くときにもやもやするのは確かなのです。

そういう例外処理機構がくわしくわかるようなWebとかないでしょうか。

265:デフォルトの名無しさん
08/02/15 01:49:02
名前空間付きの XML (DOM) に対して:

<foo xmlns:xsi="URLリンク(www.w3.org)"
  xmlns="URLリンク(foo-uri)<) foo.xsd">
<bar>...</bar>


XPath でノードを参照してみたんですけどノードと一致しません。

NodeList nl = (NodeList)xpath.evaluate("/foo/bar", doc, XPathConstants.NODESET);
// nl.getLength() == 0 になる

XML から名前空間の指定を取り除くと一致するため、検索時にパスの名前空間が考慮されてない
動きだと思うのですが、XPath に名前空間を意識させるにはどうすれば良いでしょうか?

DOM を構築するときにファクトリへ setNamespaceAware(true) は行っています。

266:デフォルトの名無しさん
08/02/15 01:49:30
>>256
Feedaのほうがいい

267:デフォルトの名無しさん
08/02/15 02:01:33
先ほどスレ立てるまでもない質問スレで質問させてもらったんですが、板違いってことで
こちらで再度質問させてくださいまし。

一昨日からずっとこの問題を考えているのですが、基礎知識があまりに不足していて全くわからないで困っています。
プログラムに詳しい方いましたら長いですが完全解答を導き出していただけませんでしょうか?
以下に掲げたおこずかい帳プログラムの説明を書きなさい。ただし、書き方は次の例
を参考にすること。<form name=f><input type=text name=i value=""><input type=button value="偶奇判定" onClick="check()"></form><script>function chech()
{var a=Number(document.f.i.value);a=a+1;if(evenp(a)) alert("偶数");else alert("奇数");}function evenp(a){return a%2==0}</script>
【説明例】formタグとinputタグによって、画面にテキスト文字表示窓と偶奇判定用のボタンを表示。この際、ボタンをクリックした時、関数check()を呼び出すように設定する。
関数checkは、テキスト文字窓から入力された値(document.f.i.value)を関数Numberによって数値に変換し、これを変数aに代入する。ついで、aの値を1増やし、関数evenpによって変数aの
値が偶数か、奇数か判別し、偶数の時は"偶数"、奇数の時は"奇数"とalertウィンドウに表示する。関数evenpは、与えられた値(a)が偶数かどうか判別(aを2で割った余りが0かどうかで判定)し、結果(trueかfalse)を返す。


268:デフォルトの名無しさん
08/02/15 02:12:47
何だこれ?
読む気しねえ

269:デフォルトの名無しさん
08/02/15 02:13:55
>>267
板違い
Web 作成板池

270:265
08/02/15 02:40:39
XPath の表記に接頭辞付けて、その接頭辞に対する URI (XML のと同じ URI) を返す
NamespaceContext サブクラス作らなきゃいけないみたいですね。

271:デフォルトの名無しさん
08/02/15 03:14:39
>>267
板違いって言われてなお同じ板の別スレに投げるとは
web制作板へ行ってもそのままじゃ誰も読んでくれんぞ
あっちの板で質問するときはせめて改行を入れろ
長くなるようならうpろだにあげろ

272:デフォルトの名無しさん
08/02/15 03:42:55
>>264
お察しの通り、例外が発生した際の手順は見かけ以上に多く、議論の的になります。
例外を使う場面に関する検索キーワードとしては「java 例外 コスト」などでしょうか。

条件分岐目的で例外を発生させる書き方は、好まれていないように思えます。
instanceof とキャストと例外の話も面白い。

273:デフォルトの名無しさん
08/02/15 05:59:57
httpclientを使用してログインが必要なサイトにアクセスしたはいいものの
リダイレクトされて、html情報を取得できません。。。

ググってもリダイレクト先のURLを取得する方法がわかりませんー!
どなたかご存じありませんか><

274:デフォルトの名無しさん
08/02/15 06:04:52
Location ヘッダを取れ。
つかリダイレクトを自動処理する設定くらいないのか。

275:209 ◆xkgLgN/H4.
08/02/15 09:06:24
>>213-214,225-227
レスありがとうございました。
メソッドの事後条件チェックにアサーションを使用した例と
考えることにします。
引数チェックに見えるのが腑に落ちないですが、
そこは問題作成者の思いやりが足りなかったと思うことにします。

276:デフォルトの名無しさん
08/02/15 11:39:42
>>264
処理の重さが気になるって話なら、実際に例外が発生しない限りほとんどノーコストなんだし、
実際に例外が発生した場合にコストが高いのは、まぁエラー発生時のみだからと割り切る。

gotoっぽくてイヤって話なら、returnでエラーコード返す処理を連ねてくのに比べればマシかと。

277:デフォルトの名無しさん
08/02/15 12:30:20
paint(Graphics g)やupdate(Graphics g)のgの部分を他のクラスから使う方法はありますか?

今はエラーを表示するだけなのに、

paint(Graphics g){
 test(g);
}

test(Graphics g){
 ………
 tset_error(g);
}

test_error(Graphics g){
 g..drawString("エラーがでたよ",0,0);
}

こんな感じの入れ子が数段連なってます。
なんだかガベージコレクトも頻発してるみたいなのでGraphics gを無くしたいのです。

278:デフォルトの名無しさん
08/02/15 12:33:26
根本的な使い方が間違っていると思われ

279:デフォルトの名無しさん
08/02/15 12:38:47
エラーに限らずほとんどのクラスにGraphicsが付いてるんですよ。
なんとかしたいでつ(>_<)

280:デフォルトの名無しさん
08/02/15 12:52:03
作ったやつに氏ねと言ってくれ

281:デフォルトの名無しさん
08/02/15 12:57:06
>>277
設計を見直すべきかと
paintの中で描画以外の処理をやってないか?
paintでは描画に集中し、ほかの事はやらない

設計に問題がないのなら、gを渡すのは仕方ない
あとガベージコレクションはgを渡してるのとはおそらく関係ない

282:デフォルトの名無しさん
08/02/15 13:11:25
>>281
Graphicsの入れ子はガベージコレクト的に問題ないと言うことですね。それを聞いて安心しました。
ということはImageや整数配列の入れ子が問題なのかな。

Cみたいな参照変数になってるのか、なってないのかがよく分からなくて。

283:デフォルトの名無しさん
08/02/15 13:22:23
Javaには参照渡ししかない。

284:デフォルトの名無しさん
08/02/15 13:22:26
直線のデータをdに入れます。
dは配列です。1次元目が開始位置、2次元目が終端です。
1次元目、2次元目がそれぞれx,yの座標を持っているので、
int d[][]型です。
int d[][] = new int[2][2];
配列dのメモリ確保はこれでよいですか?
C言語のようにd = new int[2]を実行してから、2次元目はforで回しながら
newしなくてはならないのでしょうか?

285:デフォルトの名無しさん
08/02/15 13:23:32
ごめん、うそついた。
Javaの変数は、オブジェクトについてはすべて参照。
引数はすべて値渡しだが、オブジェクト自身を渡すことはできない。

286:デフォルトの名無しさん
08/02/15 13:26:54
>>284 URLリンク(www.javaroad.jp)

287:デフォルトの名無しさん
08/02/15 13:52:34
>>285
試してみたら、Imageはコピーでした。Graphicsは参照。
全部試してみればよかったんだね。

288:デフォルトの名無しさん
08/02/15 15:39:04
java3級 落ちてきたオイラに一言。

289:デフォルトの名無しさん
08/02/15 15:46:37
java3級ってなに?

290:デフォルトの名無しさん
08/02/15 16:12:36
サーティファイか

291:デフォルトの名無しさん
08/02/15 17:14:19
propertiesファイルで

firstname = taro
lastname = yamada
fullname = ${lastname} ${firstname}

みたいなことって無理ですか?

292:デフォルトの名無しさん
08/02/15 17:44:10
>>234
なんか、完ぺき主義者みたいだな。
ところどころで主語や目的語が抜けて凄いな。
何を多重継承したのかわからんし、何をどのようにコントロールしているのかもわからない。
5W1Hがなっていないというか。

293:デフォルトの名無しさん
08/02/15 18:17:48
>291
無理

294:デフォルトの名無しさん
08/02/15 20:22:43
anko1;;あんこ
anko2;;あんこ2

このような形式の辞書ファイル(100MB)を
ランダムアクセスファイルで分割してメモリに読み込み
検索する辞書検索プログラムを作っているのですが
検索はできるのですが、かなり時間がかかり困っております

ハッシュ系のコレクションフレームワークを使えとヒントをもらったのですが
100MBのデータをハッシュ化すると当然メモリがたりなくなりました

大量のデータをハッシュで高速に検索する方法をおしえていただけないでしょうか





295:デフォルトの名無しさん
08/02/15 20:28:00
>>292
KY

296:デフォルトの名無しさん
08/02/15 20:31:16
>>294
メモリ増設
てか、ヒープを256MBくらいにすればいいだろ

297:デフォルトの名無しさん
08/02/15 20:34:56
>>294
普通にデータベース使え。
それが嫌ならその辞書ファイルにインデックスでも付けろよ。

298:デフォルトの名無しさん
08/02/15 20:49:22
SAX パーサに Schema やなんかの Validator が設定できないみたいなんすけど
解析しながら ヴァリデーション ができるようには作れないんでしょうか。

299:デフォルトの名無しさん
08/02/15 21:29:55
>>294
他の人も書いてるけど、
普通にJavaDBでEmbeddedでやれば何も考えずに楽勝だと思うんだけど。

辞書ファイルがテキスト形式絶対でも
nioだったらヒープ外にバッファが取られるから
それほど遅くならんと思うがなぁ。
コマンドライン引数指定はしないとまずいし、今やってないかもしれないしなぁ、
どの程度のレスポンスで遅いって言ってるか解らないし。

300:デフォルトの名無しさん
08/02/15 23:46:17
アプリの中のデフォルトフォントを設定したい。
Label l = new Label("");
l.setFont(f);
をいちいちインスタンスごとにやるのではなくて、main()が始まったらすぐに
デフォルトフォントを設定して、Label l = new Label("");した時点で
そのフォントが適用されているようにはできませんか?

301:デフォルトの名無しさん
08/02/15 23:49:50
Labelをextendsしたらあかんの?
自前の俺Label作ったらええやん

302:デフォルトの名無しさん
08/02/15 23:52:16
>>300
Javadocには親のフォントを継承するかのように書いてあるから、
FrameにsetFontすればいいんじゃなかろうか

303:デフォルトの名無しさん
08/02/15 23:52:59
Javaのソースコードを構文解析木に変換したいです。
たとえば
a = max(b,c/2);
だったら
  =
/ \
a   max
   / \
  b    /
     / \
    c    2
のような木を得たいです。出力のフォーマットはどのようなものでも構いません。
何かご存知の方いらっしゃいましたらよろしくお願いします。

304:デフォルトの名無しさん
08/02/15 23:56:01
JavaCCでググれ。

BNFが有るのが前提だったら楽。

305:デフォルトの名無しさん
08/02/16 00:34:55
>>301
Label.setFont()がありましたが、setDefaultFont()で解決しました。

306:デフォルトの名無しさん
08/02/16 00:50:02
>>302
ありがとうございます。あきらめました。
public class OrigApp extends IApplication {
 public OrigPanel oPanel;
 public void start() {
  oPanel = new OrigPanel();
  oPanel.setFont(Font.getFont(Font.FACE_SYSTEM | Font.SIZE_SMALL | Font.STYLE_PLAIN));
  Display.setCurrent(oPanel);

307:デフォルトの名無しさん
08/02/16 00:52:49
↑import com.nttdocomo.ui.Font;
が無いとFontのシンボルが解決でないというコンパイルエラーです。
Fontというクラス名が衝突しているのですか?

308:デフォルトの名無しさん
08/02/16 00:55:39
iアプリかよ・・・・・。

>>307
いみがわからん。
インポートしちゃいかんの???

309:デフォルトの名無しさん
08/02/16 00:59:36
>>308
import com.nttdocomo.ui.*
こう書けばFontが使えると思っていましたが、
>>306のソースでは
import com.nttdocomo.ui.Font;
でなくてはコンパイルできない理由が分かりません。

310:デフォルトの名無しさん
08/02/16 01:09:57
なるほど。
じゃぁ、Fontというクラス名の衝突という認識で正しい。

import java.awt.*;
とかやってないかい?
そこのFontクラスがある。

つーか普通Fontっていうとjava.awt.Fontだとおもうんだが。

まぁ、ソースに明示的に
oPanel.setFont(com.nttdocomo.ui.Font.getFont(com.nttdocomo.ui.Font.FACE_SYSTEM | com.nttdocomo.ui.Font.SIZE_SMALL | com.nttdocomo.ui.Font.STYLE_PLAIN));
って書いてもいいけどなw

ま、Eclipseとか使えってことだ。

311:デフォルトの名無しさん
08/02/16 01:17:23
java初心者です
Cだとif文で~のときは変数○に値□を入れて
ーのときは変数○に値△をいれる

ってのができるのにjavaはスコープの関係上それができません><
一体どうやってやるんですか??

312:デフォルトの名無しさん
08/02/16 01:18:04
>>310
import java.awt.Font;は、携帯用のコンパイラだからエラーでしたが
クラス名の衝突なんでしょうね。?
Eclipse使ってないことまでバレちゃうんだな。
Eclipse使えと言われているんだが。

313:デフォルトの名無しさん
08/02/16 01:20:36
>>311
何を言っているんだ C のスコープも同じだろ (最近の ANSI C/C++ は違うのか?)。

String ○ = null;
if(~){
 ○ = "□";
} else if(ー){
 ○ = "△";
}

314:デフォルトの名無しさん
08/02/16 01:21:09
>>311
おそらくキャストが間違っている

315:デフォルトの名無しさん
08/02/16 01:22:04
>>311
おそらく再起動したら直る

316:デフォルトの名無しさん
08/02/16 01:23:22
>>311
おそらく激しく勘違い

317:デフォルトの名無しさん
08/02/16 01:25:15
>>312
あーごめん。
おれiアプリとか書いたこと無いから「クラス名の衝突」に関してはウソかもシレン。

IDE使ってないのが解るのは
import java.awt.*;
とかでアスタリスクを使ってるから。
Eclipseだったら使ってるクラスのみをインポートするし
作法的にも衝突が起きないように省略するとかしない。

スタティックインポートとかつかえんよね?iアプリだと。

コンパイルする前からエラー教えてくれるし、俺は初心者であっても使うべきだと思う。
今ならEclipseじゃなくてNetBeansでもいいとおもう。



318:デフォルトの名無しさん
08/02/16 01:26:58
なんか日本語むちゃくちゃだなorz.

まだ会社なんだ・・・・・許してくれ。

319:311
08/02/16 01:28:52
初期化してなかっただけでした\(^o^)/

320:デフォルトの名無しさん
08/02/16 01:37:47
>>317
スタティックインポートって聞いたことがありません。
まだインポがうまく使いこなせていませんが、
「Java謎+落とし穴徹底解明」を読んで、クラス名の衝突なのでは、と思いました。

321:デフォルトの名無しさん
08/02/16 01:45:24
Java5から導入されたんだが、
クラス名から書かなくてもメンバを参照できるってだけ。
この場合だと

import static com.nttdocomo.ui.Font.FACE_SYSTEM

って宣言しておけば
Font.getFont(FACE_SYSTEM ・・・
って書けるってだけ。
あんまり便利でもないし、積極的に使う場面でもないな。

322:デフォルトの名無しさん
08/02/16 03:18:28
<? extends Hoge> と <? super Hoge> とかってどう違うの?

323:デフォルトの名無しさん
08/02/16 03:20:57
Hogeのサブクラスに限定するか、Hogeのスーパークラスに限定するかの違い

324:デフォルトの名無しさん
08/02/16 03:23:09
<? extends T> Tの派生クラスだったらなんでもいい
<? super T> Tのスーパクラスだったらなんでもいい

325:デフォルトの名無しさん
08/02/16 03:58:46
class A{}
class B extends A{}
class C extends B{}

とした場合、

List<? extends B> には B, C が入れられ
List<? super B> には A, B (Object も) が入れられる

って事で良いの? スーパークラスに限定が必要性ってどういう状況で出るんだろ。

326:デフォルトの名無しさん
08/02/16 04:04:25
別にクラスだけじゃなくて、インターフェースも指定できるから、
状況的にはあるとおもうが。

327:デフォルトの名無しさん
08/02/16 04:08:26
ん? ゲネリクス の型チェックってコンパイル時の静的な奴だから
<? super B> としても A にキャストした C のオブジェクトは OK になっちゃうんじゃないの?

328:デフォルトの名無しさん
08/02/16 04:15:07
>>325
たとえば、java.util.Collections#copyとか。
<? extends T>なListの要素を<? super T>なListにコピーするメソッド。
Tのサブクラスが入ったListはTのスーパークラスを入れられるListにコピー可能。

329:デフォルトの名無しさん
08/02/16 04:35:17
List<? extends B> bext1 = new ArrayList<A>(); // エラー
List<? extends B> bext2 = new ArrayList<B>();
List<? extends B> bext3 = new ArrayList<C>();
List<? super B> bsup1 = new ArrayList<A>();
List<? super B> bsup2 = new ArrayList<B>();
List<? super B> bsup3 = new ArrayList<C>(); // エラー

↑これはまぁ分かりますと。

List<? extends B> bext = new ArrayList<C>();
bext.add(new A()); // エラー
bext.add(new B()); // エラー
bext.add(new C()); // エラー

↑何で全滅やねん!

List<? super B> bsup = new ArrayList<A>();
bsup.add(new A()); // エラー
bsup.add(new B());
bsup.add(new C());

↑B のスーパークラスってのは代入の時のみで、
実際に適用するオブジェクトの型を上位に限定するんじゃないのか。

330:デフォルトの名無しさん
08/02/16 04:47:20
>>329
>List<? extends B> bext

List<? extends B> ってことは、たとえば List<D> だったら
add の引数は D でなければならないわけで、
その場合は A も B も C も add 出来ないことになる。
? が確定しない限り、安易に add 出来ない。

>List<? super B> bsup = new ArrayList<A>(); 

こっちは、? が D ではありえない。List<Object> か List<A> か List<B> しかない。
List<B> かもしれないことを考えると、A は add できない。
B だったら、List<Object> でも List<A> でも List<B> でも OK だ。

331:デフォルトの名無しさん
08/02/16 05:06:04
>>330
前半、全て NG なら何のためにそういった書き方が出来るんでしょうか?
さらに別に参照を受け渡すためか class D extends C{} を作って
List<D> dlist = bext; とかしてみましたがエラーでした。

後半、言語設計する側の理屈で言えばそうですね。使う側の立場で宣言だけ見ると
B のスーパークラスだけ add できるリストなのかと思ってしまいそうですが。

何でこうゲネリックウsって消化悪いんでしょうか。誰ですか設計したのは。

332:デフォルトの名無しさん
08/02/16 06:07:25
>>330
なるほど。ありがとうございます。(質問者じゃないけれど)
かなり理解が進みました。

// 代入文を見ると、ついつい右辺の型で考えてしまうのよね…

333:デフォルトの名無しさん
08/02/16 10:25:49
独習Javaをやっているんですが、
本が厚すぎてコードを打っているうちにパタンと閉じてしまいます。
何かいい方法はありませんか?

334:デフォルトの名無しさん
08/02/16 10:33:37
板違い

335:デフォルトの名無しさん
08/02/16 10:55:08
章ごとに小分けして製本する。

336:デフォルトの名無しさん
08/02/16 10:57:36
>>333
独習Javaをやらない。

337:デフォルトの名無しさん
08/02/16 11:01:09
>>333
お買い上げありがとうございます。
URLリンク(www.amazon.co.jp)

ワニクリップか洗濯バサミか何かでもいいけど。

338:デフォルトの名無しさん
08/02/16 11:25:58
独習Java読んでみたけどあれはひどいね。
J2SE5.0対応を謳ってるくせに、
実際は1.3以前の内容しか載ってない。
例えば、キーワードにassertやenumが無かったり。
よくあんな本が売れるもんだ。

339:333
08/02/16 11:26:25
>>337
今、購入しました。
商品が届くまでは本に「やさしいJAVA」を乗せておくことにします。

340:333
08/02/16 11:34:57
>>338
それを聞くとモチベーション下がるなぁ。まだ第2章だっていうのに。
このスレには独習にお世話になった人はどのくらいいるのだろうか。

341:デフォルトの名無しさん
08/02/16 11:48:09

お世話になったよ。
5.0は対応しているだけで、5.0用ってわけじゃないからなぁ。
1.4系を独習するという事で割り切れば今でも良本。

そもそも5.0系でまともな入門本ってあるかい?

342:デフォルトの名無しさん
08/02/16 12:09:23
>>331
Java言語仕様一通り読んだけど、Genericsまわりははっきり言ってわけわからん。
つか、理解を完全に放棄したw
何らかの数学的背景があって、その範疇で整合性を取っているような感じだったが……。


343:デフォルトの名無しさん
08/02/16 12:18:37
>>341
assertが載ってないから1.3系だよ。
1.4系の独習なら、他にもっといい本があるだろう。
5.0系の入門書は知らないけど、
1.4系なら結城さんの本とかいいんじゃないの?
5.0に対応してたかも知れないし。

344:デフォルトの名無しさん
08/02/16 12:22:00
java(TM)plug-inの致命的エラー

XP IE7 導入

JAVAの再インストール
すべてやってもエラーでみれません
対処方法教えていただけませんか?

345:デフォルトの名無しさん
08/02/16 12:31:02
>>331
>前半、全て NG なら何のためにそういった書き方が出来るんでしょうか? 

それは、get の方を考えてみればわかる。
List<? extends B> の場合、保持してる要素は少なくとも B か
そのサブクラスであることがわかってるから、get は B を返すことができる。
List<? super B> の場合、List<Object> という可能性があるから、
get は Object でしか返せない。

>List<D> dlist = bext;

それは無理。
bext は List<A> かもしれないし。
List<D> の get は D を返すわけだから、A とか入ってたら困るだろう。

346:デフォルトの名無しさん
08/02/16 12:39:20
javaVM1.2以降の時だけGraphics2Dを使いたいのですが、
バージョンをチェックして振り分けてもMSjava1.1だとランタイムエラーになってしまいます。
SUNjava1.1はキチンと振り分けられて動いています。

これって対処できますか?

347:デフォルトの名無しさん
08/02/16 12:39:26
理由を聞けばもっともだとは思うが、あんだけ時間かけといて何でこんなgdgdなんだろうか。
まぁ誰の声が一番でかいかを争ってたんだろうというのは想像に難くないけど。

348:346
08/02/16 12:55:07
具体的にはClassNotFoundExceptionが出ます。
if文で1.1以下の時だけそのクラスを使わない処理にしたら、
sun-java1.1はエラーを吐かなくなりましたが、
ms-java1.1はエラーで止まってしまいます。


349:hage
08/02/16 12:57:37
質問です。(コードは以下に連投します)
キャンバス上に JComboBox を混ぜたプログラムを作ってるのですが、
マウスドラッグ中に JComboBox がちらついてしまうのが嫌なのですが、
なんとかなりませんでしょうか?
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{
private Image offs; private JComboBox cb; private Point mp;
public Test(){ init(); }
private void init(){
Container c = getContentPane();
c.setPreferredSize(new Dimension(300, 300));
c.setLayout(null); // レイアウト無し

// JComboBox の設定
String[] ss = {"hage", "hige", "huge", "hege", "hoge"};
cb = new JComboBox(ss); c.add(cb); cb.setBounds(30, 30, 100, 20);

pack(); repaint(); setResizable(false); setVisible(true);

// ドラッグで再描画
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent me){
offs = null; mp = me.getPoint(); repaint();
}
});
}

350:hage
08/02/16 13:00:11
public void paint(Graphics g){
if (offs == null){
offs = createImage(getWidth(), getHeight());
Graphics g2 = offs.getGraphics();
g2.setColor(Color.BLUE);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.RED);
if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4);
cb.repaint();
}
g.drawImage(offs, 0, 0, null);
}

public static void main(String[] args){ new Test(); }
}


351:デフォルトの名無しさん
08/02/16 13:01:23
>>346
Graphics2D を使う部分だけ別のクラスに分けておいて、通常のクラス名で new する代わりに
Class#forName でロードして Class#newInstance でインスタンス化すれば大丈夫かと思うが、、、
(Graphics2D を使うクラスの名前は Class#forName の引数以外には一切書かない)
そんな昔の、切り捨てたら?

352:デフォルトの名無しさん
08/02/16 13:12:32
>>349
とりあえず、JFrameに直接描くな。
JComponentを派生して自前のキャンバスクラスを作り、そのpaintComponentで描け。

353:hage
08/02/16 13:19:04
すいません。書き直しました。本来のプログラムのほうも、構成はこんな感じになっています。
(以下、連投)
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{
public static void main(String[] args){ new Test(); }
public Test(){ init(); }
private void init(){
MyCanvas canvas = new MyCanvas();
getContentPane().add(canvas);
pack(); repaint(); setResizable(false); setVisible(true);
}
}

354:hage
08/02/16 13:22:11
class MyCanvas extends JComponent{
private Image offs; private JComboBox cb; private Point mp;
public MyCanvas(){ init(); }
private void init(){
this.setPreferredSize(new Dimension(300, 300));
this.setLayout(null); // レイアウト無し
String[] ss = {"hage", "hige", "huge", "hege", "hoge"}; // JComboBox の設定
cb = new JComboBox(ss); this.add(cb); cb.setBounds(30, 30, 100, 20);
// ドラッグで再描画
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent me){
offs = null; mp = me.getPoint(); repaint();}});
}
public void paint(Graphics g){
if (offs == null){
offs = createImage(getWidth(), getHeight()); Graphics g2 = offs.getGraphics();
g2.setColor(Color.BLUE); g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.RED);
if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4);
}
g.drawImage(offs, 0, 0, null);
cb.repaint();
}
}
と、途中で気づいたのですが、 paint を paintComponent にすると治りました・・・
paintComponent というのをはじめて知りました orz
勉強になりました。ありがとうございました

355:デフォルトの名無しさん
08/02/16 13:22:14
>>351
Java 系のグループじゃそう言われてるけどなぁ、先日ニュース系の板から秘密で誘導して
統計とって見たら一番多かった Java 6 に続いて 5.0 と MS JVM 1.1 がほぼ同じだったよ。
もっとも、入れてもない奴がダントツだったけど。

356:デフォルトの名無しさん
08/02/16 14:52:42
>>351
ありがとうございました。でもさっぱりわかりません。

>>355
ライバルが1.1サポートなんですよ(^^;

どうやらクラスローダーの挙動が違うのが原因なのかな。

357:デフォルトの名無しさん
08/02/16 15:03:36
xmlをhttpでpostするサンプルをください!

358:デフォルトの名無しさん
08/02/16 15:56:33
本みながらやってるんだけど
Iteratorとかvectorに<E>みたいなのをつけろって
eclipseでやると注意されるのですが
そこにIteretorでStringをあつかうとき<String>みたいに
やったら動きました。
本には書いてないので<>がなにかわかりません。
本だとIteratorでObjectにして好きなクラスを返すみたいになってるけど、
それはできないんですか?

359:デフォルトの名無しさん
08/02/16 16:06:35
5.0で導入されたジェネリクス。
本に従ってやるならば、Eclipseでコンパイラレベルを1.4に汁

360:デフォルトの名無しさん
08/02/16 16:37:08
正規表現で
hoge[0]=○○
という文字列を検索したいのですが
半角[]をどうやって表現すればいいのかわかりません><

361:デフォルトの名無しさん
08/02/16 16:45:53
>>355
URLリンク(www.adobe.com)

Flashのアドビの発表でjavaの普及率が84.6%ってなってるけど?
これだけあれば個人的には十分。

2ちゃんねらは過去にFlashのリンクを何度も踏まされてるから
インストール率が高いとかかも。

362:デフォルトの名無しさん
08/02/16 16:57:59
>>350
正規表現としては\でエスケープすればOK
Javaの文字列としては・・・
\\[で[にマッチするということになるな

363:デフォルトの名無しさん
08/02/16 17:33:57
>>356
ClassNotFoundが出たら1.1だと判断すれば?

で、>>351が言うように、1.1に存在しないクラスを直接参照しないようにする。

364:デフォルトの名無しさん
08/02/16 17:40:55
>>362
ありがとうございます!
てっきり\ひとつだけだと思ってました><;

365:デフォルトの名無しさん
08/02/16 17:59:34
Derbyの使い方について教えてください

366:デフォルトの名無しさん
08/02/16 18:23:57
>>365
このスレでDerbyの使い方講座を開講しろっていうのか?
Apacheのページへ行ってDerbyのドキュメントを読め。webで検索しろ。
ここで質問するならもっと質問を具体的にして絞り込め。

367:デフォルトの名無しさん
08/02/16 18:35:23
>>365
(1) derby.jarファイルにクラスパスを通す
(2) Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); を呼ぶ
(3) DriverManager.getConnection("jdbc:derby:test;create=true") で Connection を取得する
(4) 好きなSQL文を実行する
(5) Connection を閉じる
(6) DriverManager.getConnection("jdbc:derby:;shutdown=true"); を呼んでシャットダウンする

368:デフォルトの名無しさん
08/02/16 20:40:35
>>331
T な変数には、<? extends T> なものを代入できるし、
<? super T> な変数には、Tはものを代入できるので、
返値に対してコバリアント的にしたい場合は、extends にして
引数に対してコバリアント的にしたい場合は、super にする

369:デフォルトの名無しさん
08/02/16 21:27:43
制御文について質問なのですが
if(a||b||c&&d)というのはaもしくはbまたはcかつdがtrueの時if文を実行ですよね?
ではif(a||b&&c||d)というのはaもしくはbがtrueかつcまたはdがtrueの時if文を実行。
ということで良いんですか?この仮定が合ってるとすると条件式の順番にも気をつけなくてはいけませんよね?

370:デフォルトの名無しさん
08/02/16 21:28:43
>>356
ClassNotFoundException は、それを実行しようとしているかどうかに関わらず
それが分かったらいつVMが投げても構わないって仕様じゃなかったっけ。

それぞれの実装を別のクラスローダで読み込むのがいいんじゃまいか

371:デフォルトの名無しさん
08/02/16 21:35:42
>>369
日本語でおk

372:デフォルトの名無しさん
08/02/16 21:47:12
>>369
Java とは関係なさそうだけど。
* と + に優先順位があるのと同じ。
a || b || c && d => a || b || (c && d)
a || b && c || d => a || (b && c) || d

373:369
08/02/16 21:51:17
今一良く分かりませんorzここから先はGoogle先生に聞いてみます。
ありがとうございました。

374:デフォルトの名無しさん
08/02/16 22:34:42
>369
もう少し解りやすく、他人に伝わるよう書く努力が欲しい。

if(a||b||c&&d)というのは、『a』もしくは『b』または『cかつd』のいずれかがtrueの時にif文を実行ですよね?
ではif(a||b&&c||d)というのは、『aもしくはbがtrue』かつ『cまたはdがtrue』の時if文を実行。
ということで良いんですか?

質問はこういう意味? なら>>372
ググるときは、『Java』、『演算子』、『優先順位』でOK。

375:デフォルトの名無しさん
08/02/16 22:45:04
古いデータと新しいデータを比較するプログラムを作ってます
データを取得してテキスト形式で保存→新たに取得して比較→二日以上たったデータは削除
という感じなのですが、二日たったことを判断するのはどういう風にすればいいのか悩みます。。
ちなみにデータ取得時の日時は年/月/日/時/分まで保存してます

簡単に日にちで比較すると31日とか30日の判断もあるし、うるう年とかもあるので悩んでます><
いいアイディアはないでしょうか?


376:375
08/02/16 22:50:32
良い方法をひらめきました!
どうもすいませんでした><;

377:デフォルトの名無しさん
08/02/16 23:15:14
ひらめいたならいいけど、そういうのはミリ秒で保存しといた方が良いよー

378:デフォルトの名無しさん
08/02/17 00:07:31
>>361
そんないつの時期に取ったか分からん統計出されても知らんがな。 Win に MSJVM が
デフォルトインストールだった時代や JavaScript のアプレット enable フラグだけ見てたら
それくらい行くだろうね。少なくとも 30 秒以上滞在してアプレットが起動しない環境は
倍以上居る。

379:デフォルトの名無しさん
08/02/17 00:35:10
HashMapのKeyと値にそれぞれ変数から代入したんですが保存されないみたいなんです
上記の方法で次々に値を代入していくにはどうすればいいですか?

380:デフォルトの名無しさん
08/02/17 00:41:28
>>379
HashMapにaddするときに使ってる変数を変に使いまわしていないか?
HashMapに代入されるのは結局の所は参照なので参照先を書き換えると変わるぞ

381:デフォルトの名無しさん
08/02/17 00:55:40
>>380
ありがとうございます
参照先が変わってるのかなあ
やろうとしていることは HTMLで入力した値を
サーブレットに渡してintにランダム変数を入れて
それをhashmapのkeyにして値も代入
一回目はうまくいくんですけど二回目以降に値が
リセットされてしまいます

382:デフォルトの名無しさん
08/02/17 01:04:26
>>381
…?
HashMap のインスタンスが毎回生成されてる、なんてオチは無いデスヨね

383:デフォルトの名無しさん
08/02/17 01:12:22
>>382
た、たぶんそれです
ありがとうございますOrz
もう少しがんばってみます

384:デフォルトの名無しさん
08/02/17 01:15:16
サーブレットとか知る前にやることがある気がするんだが。

385:デフォルトの名無しさん
08/02/17 01:18:07
自分でもまったくそう思いまする

386:デフォルトの名無しさん
08/02/17 11:15:50
手元の W-ZERO3 に JBlend が乗ってるんで暇つぶしに何か作れないかと思ったんだけど
いかんせん組み込みっぽいのはやったことがなくて。MIDP 2.0? とやらに対応させれば
良いんでしょうか? それとも専用の SDK でも買わなければけいないんでしょうか?
携帯の開発情報はそこそこありますがそれと同じと思って良いんでしょうか。

387:デフォルトの名無しさん
08/02/17 11:21:17
「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
PATHの設定がどうしても出来ないためこれが出てしまっていると思うんですが、
>>1に書かれているURLが消えているのか飛べないです。
他に本も色々なサイトも見ましたが分かりません。
どこか分かりやすく説明しているところは無いでしょうか?

388:デフォルトの名無しさん
08/02/17 11:28:48
URLリンク(www.google.co.jp)

389:デフォルトの名無しさん
08/02/17 11:44:22
ありがとうございます。
しかしやはりどうも落としたバージョン(jdk-6-doc-ja)
だと上手くいかないようなので、申し訳ないのですが、質問を変えます。
改めてj2sdkを落としたいんですが、場所がどこなのか分かりません。
Javaの公式サイトから探しましたが、日本語に変換しても
別のページに飛ぶとまたすぐ英語になってしまうので、読めませんし訳が分かりません。
具体的なURLを直接教えて下さると大変助かります

390:デフォルトの名無しさん
08/02/17 11:45:34
> jdk-6-doc-ja

コーヒー返せwww

391:デフォルトの名無しさん
08/02/17 11:47:56
やはり何かおかしかったですかねw
やたら重いんで何かおかしいと思ったんですが。
でも英語だらけで分からないんですよ、ほんと。
国際派じゃないとこれから生きていけそうもないな

392:デフォルトの名無しさん
08/02/17 11:54:44
doc

document

393:デフォルトの名無しさん
08/02/17 11:55:53
国際派じゃなくても>>388見れば普通は何が言いたいか解る

ググれカス

394:387
08/02/17 11:56:23
困ったな…調べてみてはいるんですが、どうもありそうにないですね。
ほんとに日本語でおkという感じなんですが…読めない。
やさしいJAVA2版に書かれていたURLも消えているようですし、
今の主流はもうj2sdkじゃないんでしょうか?

395:デフォルトの名無しさん
08/02/17 11:58:13
>>389
確かにJDKとは書いてありますが、ドキュメントの方を取得されたようで。

Java SE Downloads
URLリンク(java.sun.com)

リンク先には、JDK, J2EE, NetBeans, JRE と並んでいますが、
それぞれの説明を読む等で適切なものを選んでインストールしてください。

>>391
ま、ゆっくりやってくださいな。好きこそ物の上手なれとも言いますし。
アルファベットが読めないとか辞書を触ると目が見えなくなるとか言う人なら
更に教育を受けるか、病院に行った方が良いと思いますが。

396:387
08/02/17 11:58:16
やっと見つかった…検索の仕方がまずかったみたいです。
お騒がせしました

397:387
08/02/17 12:00:23
>>395
ご立派な嫌味をどうもw
知識が豊富で羨ましいです

398:デフォルトの名無しさん
08/02/17 12:01:48
本当ご立派な

399:デフォルトの名無しさん
08/02/17 12:06:24
>>397は人格に問題ありすぎだな。
あんなに懇切丁寧なレスを嫌味だなんて。

というか、有用な情報を見いだす目が著しく欠如しているってことか。

JDK落とすだけでこれだから、この先は想像を絶するいばらの道が待っていることだろう。


400:デフォルトの名無しさん
08/02/17 12:13:34
初心者相手にいちいち優位に立とうとするなよ。

401:デフォルトの名無しさん
08/02/17 12:43:04
Java初心者ってか対人関係初心者だけどなw

402:デフォルトの名無しさん
08/02/17 12:47:28
おまいも十分そう見えるが。

403:デフォルトの名無しさん
08/02/17 12:57:40
>>402
>>387本人乙。

404:デフォルトの名無しさん
08/02/17 13:14:00
そう思いたいのですね。

405:デフォルトの名無しさん
08/02/17 13:36:39
そのほうが面白いし。

406:デフォルトの名無しさん
08/02/17 13:37:24
そうか。

407:デフォルトの名無しさん
08/02/17 13:48:17
うん。

408:デフォルトの名無しさん
08/02/17 13:53:49
こ。

409:デフォルトの名無しさん
08/02/17 15:16:04
ころころうんこ

410:デフォルトの名無しさん
08/02/17 15:17:25
食物繊維取れ

411:デフォルトの名無しさん
08/02/17 15:39:49
普通にSunのページわかりにくい

412:デフォルトの名無しさん
08/02/17 15:46:13
非開発者向けではどう見てもないよな。
母さんにあそこから最新の JRE 落として入れろとはとても言えない。

413:デフォルトの名無しさん
08/02/17 16:01:35
ほんと、SUNにはもっと普及率を上げるための努力をしてもらいたい。
まずはインストールをもっと簡単にして。

414:デフォルトの名無しさん
08/02/17 16:50:00
>>1 のリンク死んでるな。というかサーバが停止してるようだが。

415:デフォルトの名無しさん
08/02/17 17:55:48
>>412
もっともです。テンプレっぽいのに追加で。

**** 開発環境が必要の場合は ****
>>5

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
URLリンク(www.java.com)

416:デフォルトの名無しさん
08/02/17 17:59:58
ム板なんだし JRE の落とし方はどうでも良くない?
かえって混乱すると思う。

417:369
08/02/17 18:54:29
なるほど!何とか理解できました。>374 さん thx

418:デフォルトの名無しさん
08/02/17 18:59:59
>>416
ところがEclipseを使うのにJDKは不要だ罠

新人研修等ではじめからEclipseでスタートする場合、
JDKを入れたことがないという人も出てきそうなご時世だね。

419:デフォルトの名無しさん
08/02/17 20:16:41
Arrays.sortを使って数値の配列をソートしたんですが
これってソート後の配列の添え字情報とかも取得できないんですか??

たとえば
ソート前
a[0]= 2
a[1]= 1
a[2]= 3
 ↓ ソート
ソート後
a[1]= 1
a[0]= 2
a[2]= 3

の[1],[0],[2]の情報を取得したいですー!何か方法ありませんかー!

420:デフォルトの名無しさん
08/02/17 20:25:55
その添え字情報を何に使うんだ?
ただ単に安定なソートがしたい、ってだけなら、

List<Integer> lst = Arrays.asList(2, 1, 3);
Collections.sort(lst);

でOKじゃない?

421:デフォルトの名無しさん
08/02/17 20:35:50
class Hoge { public int ソート前のインデックス; public int 値; }
こういうラッパーをかぶせてからソートすればいいんじゃね

422:デフォルトの名無しさん
08/02/17 21:09:07
>>419
一番高速なのは、quicksortのコードを自分でいじって実装することかな。
値をスワップするところで、添え字もスワップすればいい

423:419
08/02/17 21:09:52
>>420,421
返答ありがとうございます

hoge[0] = 3423
hoge[1] = 4123
hoge[2] = 4142

a[0]= 2
a[1]= 1
a[2]= 3

みたいにhogeにID、aに値を保存していて、それぞれ添え字で=を確認してたんです
(つまり添え字が0ならID;3423→2みたいにです)
あとaには同じ値がたくさんはいっているのでソート後に値で確認もできないんです。。。

もしかして他にいい保存方法あったりしますかね^^;

424:デフォルトの名無しさん
08/02/17 21:10:48
>>422
やっぱ自分で実装するのが一番早いですかね?。。

425:デフォルトの名無しさん
08/02/17 21:16:03
クラス使えよ
class IDAndValue { int id; int value; }
ソートはComparatorを自分で実装すればいいだけ

426:デフォルトの名無しさん
08/02/17 21:21:10
>>425
ありがとうございます
やってみます!

427:デフォルトの名無しさん
08/02/17 21:27:25
Comparableでもいいよ

428:デフォルトの名無しさん
08/02/17 22:31:34
ファイルを後ろから読み込むにはどうすればいいのでしょうか?
BufferedReaderのreadLineのように一行ずつ読み込めるものがあると良いのですが、、、

429:デフォルトの名無しさん
08/02/17 22:45:34
そんなに大きくないならListに全部読み込んで、後ろから取り出せば?

430:デフォルトの名無しさん
08/02/17 22:45:43
多分だけど、どうしてそれがしたいかを説明すると
よりハッピーになると思う

431:デフォルトの名無しさん
08/02/17 23:05:38
>>378
>>361のページに↓のようにいつ統計を採ったのかを書いてある
Millward Brown survey, conducted December 2007.
See Methodology Section for details on the Millward Brown study.

432:デフォルトの名無しさん
08/02/17 23:24:14
public ShortTimer t;
t.start();
これでタイマーが開始しましたが、再びここで
t.start();
すると実行時エラーになります。
そこで t が t.start(); されているかを知る方法を教えてください。

433:デフォルトの名無しさん
08/02/18 00:01:19
>>432
>>2 Good Luck!

434:デフォルトの名無しさん
08/02/18 01:07:55
428です。
後ろに行くほど新しい情報が書いてあるログファイルなので後ろから読み込めたらいいなと。
容量はそれほど大きくもないのですが、、、

435:デフォルトの名無しさん
08/02/18 02:22:54
>>434
それは tail コマンドと同じ機能っぽい印象を受けました。

そして、あまりに便利なコマンドだから、かっこいいことをしてるハズだ
と、そう思って検索してみました。すると…

勘違いしていました。tail.c
URLリンク(programamemo2.blogspot.com)

バッファサイズ決めて、(最初はファイル長を割って余った分だけ)ファイルから読み込んで
改行文字数を数えて、必要数たまったら、そのバイトから最後まで出力っぽい感じ。
ファイルが更新された時の処理も、そのブログ記事にあるとおりで、なんともはや…

436:デフォルトの名無しさん
08/02/18 02:36:16
んなもん tail の動き見てりゃ 1 秒ごとに監視してるだけくらい想像付くべ。
ファイルのケツから数kB~数十kB ごとに読み込んで行数カウント、必要行数に
達したらそこから開始位置まで出力、達しなければその前のブロックを評価が定番。

437:デフォルトの名無しさん
08/02/18 08:34:15
class Test {
int sum(int[] date){
int r=0;
int i;
for(i=0; i<date.length; i++)
r += date[i];
return r;
}
}

public class sample34{
public static void main(String[] args) {
Test test =new Test();
int[] date1 = new int[]{1,2,3,4,5};
int result;
result=test.sum(date1);
System.out.println(result);
}
}
これで15が返ってくる理由教えてください。
私の考えはsum(int[] date)ここに{1,2,3,4,5}を入れるわけですよね?
でdate.lengthとなっているから、その個数5だと思うんですけど
すいません意味不明で・・・

438:デフォルトの名無しさん
08/02/18 08:54:32
配列のインデックスは0から始まる

439:デフォルトの名無しさん
08/02/18 09:21:12
>>437
配列型の変数 date の length は int型で、この場合の値は 5 です。よって
L5: i が 5 未満の場合、L6 へ進む。そうでなければL7へ進む。
L6: r と date[i] を加算し、r にその結果を入れる。(i に 1 加える。L5へ進む。)
L7: r を返す。
// 何をしてるかと言えば、配列の各要素の値を加算した値を返してるだけ。

よって、Test のインスタンスメソッド sum(int[]) に
date1 を入れて実行すると 15 が返される。
// 各要素の値、1 から 5 までを加算した値

後は手元の本などで for文の仕組みを調べ直してください。

蛇足。制御文 if, else, for, while, do-while の "{ }" を省略した場合、
直後の1文が制御対象になりますが、見易さや事故防止等の為、
省略しないことをお勧めします。

440:デフォルトの名無しさん
08/02/18 09:26:03
data.length
  Σ data[i]
  i=0

441:デフォルトの名無しさん
08/02/18 09:36:09
ありがとうございます。分かりました!!!
これからも勉強頑張っていきます!

442:デフォルトの名無しさん
08/02/18 13:40:38
TreeMapでデータをソートしたのですが
Entryで得たvalueとkeyをStringにキャストしてInteger.parseIntをつかってから
int型にしてint型変数に格納しようとするとkeyだけキャストできないというエラーが出てしまいます

原因がわかりませんー・・・

443:デフォルトの名無しさん
08/02/18 14:01:46
OSのタイムゾーン設定では日本時間なのに
JavaのデフォルトタイムゾーンがGMTになっています。
デフォルトのタイムゾーンってどこをいじれば変更できるのでしょうか?
環境はJava1.6.0_04 Windows 2003 です。

444:デフォルトの名無しさん
08/02/18 14:06:03
>>442
コードを見せてみれ
エラーメッセージも正確に

445:デフォルトの名無しさん
08/02/18 14:07:15
>>442
キャストできないエラーというのは、「Stringにキャストして」の部分なのでしょうか?
1.5以降ならジェネリクスをお勧めします。

原因としては TreeMap に格納する際に何型を使ったのか、が怪しいところです。

446:442
08/02/18 14:14:34
public class Sort {
public Sortdata sort(Difference dif){
int i = 0;
String change_sm = null;
String change_play = null;
Sortdata data = new Sortdata();
NumericComparator c = new NumericComparator();
TreeMap map = new TreeMap(c);
while(i < dif.number){
change_sm = Integer.toString(dif.sm[i]);
map.put(new Integer(dif.replay[i]), change_sm);
i++;
}
Set s = map.entrySet();
i = 0;
Iterator it=s.iterator();
while(it.hasNext()){
Map.Entry e = (Map.Entry) it.next();
change_sm = (String) e.getValue();
change_play =(String) e.getKey(); //getKeyだけキャストがおかしいというエラーがでる
data.sm[i] = Integer.parseInt(change_sm);
data.replay[i] = Integer.parseInt(change_play);
System.out.println(data.sm[i]+":"+data.replay[i]);
i++;
}
return data; }
class NumericComparator implements Comparator {
public int compare(Object o1, Object o2) {
int result=((Integer)o1).compareTo((Integer)o2);
if(result==0) result=1;
return result;
} } }

447:442
08/02/18 14:16:22
すいません初心者でコピペで作ったようなプログラムなのでどこを載せればいいのかわかりませんでしたTT
エラーは

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at Sort.sort(Sort.java:34)

行は書き込むときに編集してしまったので違うかもです
change_play =(String) e.getKey(); //getKeyだけキャストがおかしいというエラーがでる
とりあえず↑を指してます

448:デフォルトの名無しさん
08/02/18 14:21:41
そらだめだよ。
Integerで格納したんだから、Stringにはキャスト出来ない。

449:デフォルトの名無しさん
08/02/18 14:24:24
>>446
Mapにputするときはkeyの部分をInteger型で入れている。
Integer型なのにString型へキャストしようとするからエラーになる。

450:デフォルトの名無しさん
08/02/18 14:31:02
>>446
重ねてJ2SE1.5(5.0)以降ならジェネリクスをお勧めします。
ついでに autoboxing も機能するので更に見やすくなります。

> map.put(new Integer(dif.replay[i]), change_sm);
key が Integer, value が String。そりゃ key でキャストエラーになります。

以下蛇足。
・変数は使う直前で宣言すること。
・元が int型なら Integer だけにしておけば良いのに。
・初期化、比較、更新があるなら while ではなく for を使うように。
・ついでに初期化部で int i = 0; で宣言すること。(添え字の使いまわしは厳禁)

451:デフォルトの名無しさん
08/02/18 14:36:27
みなさんありがとうございます!
ジェネリスクも試してみようと思います><

452:デフォルトの名無しさん
08/02/18 14:37:10
>>443
set | find "TZ"
結果はカラ?

453:443
08/02/18 14:45:46
>>452
レスありがとうございます。
TZ=JST
とでます。

454:デフォルトの名無しさん
08/02/18 15:37:48
ネイティブインターフェイスの使い方を教えてください

455:デフォルトの名無しさん
08/02/18 15:42:34
>ネイティブインターフェイス
JNIのこと?

456:デフォルトの名無しさん
08/02/18 15:55:04
はい

457:デフォルトの名無しさん
08/02/18 15:59:29
>>454
これでも読んどけ
URLリンク(java.sun.com)

458:デフォルトの名無しさん
08/02/18 16:05:55
dllの作り方教えてください

459:デフォルトの名無しさん
08/02/18 16:10:42
それはJavaじゃないよ

460:デフォルトの名無しさん
08/02/18 16:11:22
わからない問題があったので教えてください

public class Test extends Thread{
private int i, j;
public synchronized void run(){
for(int count = 0; count < 2; count++){
i++; j++;
System.out.print("i=" + i + " : j=" + j + " ");
}
}

public static void main(String[] args){
new Test().start();
new Test().start();
}
}

A. i=1:j=1 i=1:j=1 i=2:j=2 i=2:j=2
B. i=1:j=1 i=2:j=2 i=1:j=1 i=2:j=2
C. iとjの値は出力されるが表示順は一意ではない

Testクラスは二つでき、runメソッドはそれぞれで動くため
AにもBにもなりえる(実際は何回やってもBになるが)と思ってCにしたんですけど答えはBでした
Aにはならないんでしょうか?

解説には「run()メソッドをsynchronized指定しているためrun()メソッド実行中は
他に制御が移ることなく処理されます」とあります



461:デフォルトの名無しさん
08/02/18 16:20:05
答はCであってます。
printの後ろに、
try { Thread.sleep(1000); } catch (InterruptedException e) {}
を追加して実行してみてください。

462:デフォルトの名無しさん
08/02/18 16:29:21
たぶんスレッドでの(i=1:j=1 i=2:j=2)の組の出力は保証されるということなのだろうけど、
どっちのスレッドかわからんよな、これ。
Aは間違い。でも、結果的に出力は必ずBになるなw

463:デフォルトの名無しさん
08/02/18 16:31:40
えー、保証すらされないだろ

464:デフォルトの名無しさん
08/02/18 16:33:05
>>461-462
ありがとうございます
安心しました

465:デフォルトの名無しさん
08/02/18 16:51:26
フルパスからファイル名を取り出す関数とかあれば
教えてください。
WinAPIのGetFullPathName()のようなやつがあれば・・・

466:デフォルトの名無しさん
08/02/18 16:53:02
File#getName()

467:デフォルトの名無しさん
08/02/18 16:54:52
>>466
快速的回答謝謝。

468:デフォルトの名無しさん
08/02/18 16:58:18
wikiのリンク切れてる・・・
だれか原因わかる人います?

469:デフォルトの名無しさん
08/02/18 17:05:24
リンク切れてるっつーか、ホスティングしてる wikiroom が
最近落ちまくり & ほったらかし & メール送っても無応答状態らしい。

470:デフォルトの名無しさん
08/02/18 17:07:32
>>469レスサンクス!

まじか…javacの設定方法探そうと思ったのに…

471:デフォルトの名無しさん
08/02/18 18:15:45
lass Test {
int m;
int n;

Test(int i,int j) {
m=i;
n=j;
}

Test(Test testC) {
m= testC.m;
n= testC.n;
}

int sum(int i,int j){
return m + n + i + j;
}
}
public class sample38{
public static void main(String[] args);
Test test = new Test(10, 5);
test.m++;
test.n++;
Test test2 = new Test(test);
System.out.println(test2.sum(2, 3));
}
}
このプログラムの中の
Test(Test testC) {
m= testC.m;
n= testC.n;
がある意味がよくわかりません。テキストを読んでいてもよく分からないので教えてください。

472:デフォルトの名無しさん
08/02/18 18:20:34
いわゆるコピーコンストラクタってやつ

473:デフォルトの名無しさん
08/02/18 18:25:06
コンストラクタのオーバーロードじゃね

474:デフォルトの名無しさん
08/02/18 18:27:44
Java 的には clone() だな。

475:デフォルトの名無しさん
08/02/18 18:33:51
JNIはどうすんの

476:デフォルトの名無しさん
08/02/18 18:35:42
>>471です。処理はどんな手順で進んでいくのですか?

477:デフォルトの名無しさん
08/02/18 18:58:35
どこまでわかるのか書け

478:デフォルトの名無しさん
08/02/18 19:08:06
オブジェクトはフィールド、メソッド、クラス、を持つとよく聞きますが、実際にオブジェクトを生成する際、フィールド以外の物も新たに作るのでしょうか?
それとも状態を持つのはフィールドだけなのでメモリにはフィールドのみを生成するのでしょうか?

479:デフォルトの名無しさん
08/02/18 19:13:44
フィールドのみと考えていい

480:デフォルトの名無しさん
08/02/18 19:13:48
クラスとメソッドはほぼ一体。最初にクラスを参照したときにメモリ上に現れ static 宣言
されたフィールドとメソッドを持つ。非 static フィールドはインスタンスごとに作成される。

481:デフォルトの名無しさん
08/02/18 19:16:33
>>479,>>480
素早く分かりやすい回答ありがとうございました。
ずっと気になっていたことだったので本当にすっきりしました。

482:デフォルトの名無しさん
08/02/18 19:23:08
>>477
Test test = new Test(10,5);
これを上の
Test(int i,int j) {
m=i;
n=j;
に入れて、つぎにmとnに1を足すまでは分かる。

Test(Test testC) {
m= testC.m;
n= testC.n;
これどんな処理してるん?


483:デフォルトの名無しさん
08/02/18 19:28:09
testCに渡された既存のTestオブジェクトの中身を
新しく作ろうとしてるTestオブジェクトにコピーしてる

484:デフォルトの名無しさん
08/02/18 19:35:35
Javaのコントロールパネルの出し方教えてくれ
どこにもなくて困ってる

485:デフォルトの名無しさん
08/02/18 19:36:35
test

486:デフォルトの名無しさん
08/02/18 19:37:48
どういうときにコピーコンストラクタは使うの?

487:デフォルトの名無しさん
08/02/18 20:09:37
オブジェクトをコピーしたいとき

488:デフォルトの名無しさん
08/02/18 20:14:13
必要なクラスやライブラリが増えるとクラスパスの設定が面倒になりますが、
自分が書いたソースのクラスファイルを格納してるフォルダに全て突っ込んじゃえばいいと思うんですが、
この考え方は間違ってますか?
例えばDBのJDBCドライバを使うにはCLASSPASSに追加するかtomcatのcommon/binに入れたりするけど
前者の場合、無関係なプログラムにも影響を及ぼすし、後者の場合はコンテナを変えたらまた作業が増える。
自分が作ってるサーブレットのクラスファイルを保存してる場所にJDBCドライバを入れちゃえば全て解決な気がする。

489:デフォルトの名無しさん
08/02/18 20:23:03
Javaのアルゴリズム本はどれがオススメですか?

490:デフォルトの名無しさん
08/02/18 21:36:42
>488
間違ってる
クラスが増えれば増えるほどクラスパスの設定の方が、クラスの競合とかの考慮より楽になる
そんなことよりIDE使っているなら面倒な作業にはならんだろ

491:デフォルトの名無しさん
08/02/18 21:41:45
プリミティブ型も実はクラスある?
判別のために例外的に形だけあるってことかな
int.classやらがあって驚いたわ。

492:デフォルトの名無しさん
08/02/18 21:47:16
Integer.TYPE

493:デフォルトの名無しさん
08/02/18 23:14:44
bolean b;
b=true;
?ここを教えてください。
(b==false)が新になる。

bolean b;
b=false;
?ここを教えてください。
(b==true)が新になる。

494:デフォルトの名無しさん
08/02/18 23:17:06
b=!b;

495:デフォルトの名無しさん
08/02/18 23:24:17
boolean

496:デフォルトの名無しさん
08/02/19 03:06:22
>>491
プリミティブ型はあくまでプリミティブ型で、そのクラスといったものはない。
あるのは、プリミティブ型を表すClassクラスのインスタンスで、各ラッパークラスで定義されている。
例えば、リフレクションAPIでメソッドの引数の型を指定する時などに使ったりする。

497:デフォルトの名無しさん
08/02/19 03:18:57
初心者用スレとはいえ質が低過ぎる
答える気すら起きん

498:デフォルトの名無しさん
08/02/19 08:17:12
画像ファイルを手動で振り分ける簡単なソフトを書いた。
表示して、設定してあるフォルダに振り分けるだけの簡単なソフトだ。
とりあえず、予定の作業は出来るようになった。

だが、アニメーションGIFの再生がおかしいことに気づいた。
「透過色」というのが上手く扱えていないようだ。

Toolkit.getDefaultToolkit().getImage("hoge.gif");で入手したImageを
JPanelから導出したクラスのpaint(Graphics g)でdrawImageにかけているだけなのだが、
何か足りないようだ。

足りない部分は簡単に補える?
それとも、意外に面倒?

499:デフォルトの名無しさん
08/02/19 08:29:49
ペイントコンポーネンツ

500:デフォルトの名無しさん
08/02/19 12:26:35
JSFの使い方を教えてください

501:デフォルトの名無しさん
08/02/19 13:44:08
>>500
URLリンク(ja.wikipedia.org)(%E6%88%A6%E9%97%98%E6%A9%9F)

502:デフォルトの名無しさん
08/02/19 15:50:00
すみませんが、質問です。

クラス継承についてですが、親クラス、子クラスに共通して、同名のパブリッ
クなインスタンス変数があり、その初期値は親と子で違うとします。

子クラスのインスタンスを作り、それを親クラスの型の変数に代入した場合、
その変数のインスタンス変数には、親の価が入っています。

public class Parent {
public String hoge = "親";
}

public class Child extends Parent {
public String hoge = "子";
}

Parent x = new Child();
System.out.println(x.hoge); // => 親
System.out.println((new Child()).hoge); // => 子

要するに、パブリックなインスタンス変数は、子によってオーバライドできな
いのです。メソッドと違って。

どうしてこれは、こういう言語仕様になっているのでしょうか?
メソッドのようにオーバライドできてもいいと私は思うのですが。


503:デフォルトの名無しさん
08/02/19 16:18:57
どうしてだろう・・・

Parent[] xArray = { new Child01(), new Child02(), new Child03()}
for( Parent x : xArray ) System.out.println(x.hoge);

みたいに同じ変数名にアクセスして子独自の値が取れたら便利そうだよね。

504:デフォルトの名無しさん
08/02/19 16:21:48
実装は面倒だし(というか汚くなる)、効率の問題もある。
何より、変数をそんなに便利(に見える)にしてしまったら、
マルチスレッドとか大変になる。
オブジェクト指向の原則も何もあったもんじゃなくなるだろうが。

505:デフォルトの名無しさん
08/02/19 16:24:14
>>502
子の方に新しいhogeを定義しなきゃいいんじゃ?

public class Parent {
public String hoge = "親";
}
public class Child extends Parent {
public Child(){ hoge ="子"; }
}
Parent x = new Child();
System.out.println(x.hoge); // => 子

506:デフォルトの名無しさん
08/02/19 16:24:37
フィールドの隠蔽は普通に出来てるんだから面倒も効率も関係ないだろ。

507:デフォルトの名無しさん
08/02/19 16:25:24
Javaはフィールドは静的解決だからだろ

以上

508:デフォルトの名無しさん
08/02/19 16:28:02
>>502
言語規定には、「フィールドアクセスのために動的に表検索する必要がないので
Javaは素直な実装でも効率が良い。遅延束縛と上書きはインスタンスメソッドが
使用されるときだけJavaで利用可能となる。」とある。
URLリンク(www.y-adagio.com)

509:デフォルトの名無しさん
08/02/19 16:29:50
付いていけん
馬鹿にも分かるように誰か説明してくれよ

510:デフォルトの名無しさん
08/02/19 16:31:04
フィールドは静的に(つまりコンパイル時に)解決できるから効率いいよね、ってこと。
>>506は何か勘違いしているから無視してOK

511:デフォルトの名無しさん
08/02/19 16:32:28
スレッドとか関係ねーじゃん。

512:デフォルトの名無しさん
08/02/19 16:34:33
フィールドアクセスにはsynchronizedで制限かけられないだろーが

513:デフォルトの名無しさん
08/02/19 16:36:19
つまり静的解決にすれば効率いいけど柔軟性に欠ける
動的にすれば柔軟性は上がるが実行時の効率が落ちる
そこでバランス取ってメソッドだけ動的にしたってこと?

514:デフォルトの名無しさん
08/02/19 16:37:23
フィールドを動的解決するとどんないいことがあるのか例を教えてくれ

515:デフォルトの名無しさん
08/02/19 16:38:39
まともな人と、ちょっと鈍い人と、どうしようもない馬鹿がいるっぽい

516:デフォルトの名無しさん
08/02/19 16:38:57
>>514
答:全部メソッドでできるので不要

517:デフォルトの名無しさん
08/02/19 16:40:31
何か主張があるようだが強烈な表現力のなさで何を言いたいのかさっぱりわからん。
「フィールドアクセス」 は行為であって主体じゃないから synchronized でモニタ取れるわけないだろ。
this かそれに順ずるインスタンスに synchronized かけろよ。

518:デフォルトの名無しさん
08/02/19 16:44:34
Hoge hoge = new Piyo();
synchronized (hoge) {
hoge.x = "";
}
いちいちクライアントサイドでこんなことしたく無いだろ?ってことが言いたかったんだが

519:デフォルトの名無しさん
08/02/19 16:47:53
>>518
それ hoge.x が Piyo のフィールドかスーパークラスのフィールドかは全く関係なくね? って事。
synchronized(hoge.x) とした時にどっちのモニター取ってるか分からなくなるというならともかく。

520:デフォルトの名無しさん
08/02/19 16:50:39
>>514
悪いことの方は、以下の場合コンパイルエラーを出さないといけなくなる。

class S { int x = 0; int z() { return x; } }
class T extends S { String x = "1"; }

521:デフォルトの名無しさん
08/02/19 16:52:26
それは関係ないけど、フィールドアクセスが動的だと、
何も考えずに使ってしまうようなやつが絶対いるだろ?
で、518のように書くやつなんているのか、と考えたときに、
いないだろうな、と。

522:デフォルトの名無しさん
08/02/19 16:58:11
フィールドがサブクラスから書き換えられないのって
単純に、フィールドはなるべく隠蔽されるべきって考え方からだと思ってたけど違うの?

523:デフォルトの名無しさん
08/02/19 17:00:49
書き換えられるよ、finalとかprivateじゃなければ

524:デフォルトの名無しさん
08/02/19 17:02:02
書き換えってオーバーライドのことね

525:デフォルトの名無しさん
08/02/19 17:04:11
親のフィールドをそのまま継承してるだけと、オーバーライドするのと、どう違うのか説明すれ

526:デフォルトの名無しさん
08/02/19 17:10:17
>>522
それは新しい話題? カプセル化の話?

上書き(override, オーバーライド)は動的処理。
仮にフィールドの動的処理が可能なら、カプセル化は簡単に崩壊する。
// メソッドを上書きせずに、フィールドだけ上書きすればよい。

527:デフォルトの名無しさん
08/02/19 17:13:37
privateメソッドがオーバーライドできないのと同じように、
privateフィールドもオーバーライドできなければ、別にカプセル化は壊れない
オーバーライドしたいのはprotectedとかpublicだけだろ?
隠蔽だかカプセル化だかとは別問題かと

528:デフォルトの名無しさん
08/02/19 17:24:14
誰が正しいことを言ってるのかカオスだわ。と言いつつ私は526だったり。
言語規定を貼る作業に戻りますm(_ _)m

529:デフォルトの名無しさん
08/02/19 17:32:47
さっぱりわからん
誰かねんどろいどに例えてくれ

530:デフォルトの名無しさん
08/02/19 17:34:36
状況が逆なら逆で適当に自分流の解釈始めるだけだから、
決めの問題的な話題なんてどうでも良いんじゃないのか。

531:502
08/02/19 18:38:57
どうやら収束したようなので、お礼を言わせていただきます。皆さん、ありが
とうございました。

意外に思うかもしれませんが、自分は最初の質問以外、一件も書き込んでいま
せん。自分の分からない点は全部、他の人がツッコんでくれました。このスレ
は時々利用させていただいてますが、こんなのは初めてです。

レスの全部が理解できたとは言えませんが、大変勉強になりました。

532:デフォルトの名無しさん
08/02/19 19:06:45
>>486
Javaによるアルゴリズム事典
おすすめ

533:デフォルトの名無しさん
08/02/19 21:35:53
開発ではeclipse使ってるんですが、
わざわざeclipse立ち上げるまでもないちょっとしたファイルを作ったり編集したりするためのエディタが欲しいです。
具体的には、html、java、jsp、ビルドxml、単なるテキスト文…こういったファイルを編集します。
メモ帳ではあまりにも使いづらいので他を探してるのですがオススメのものは無いでしょうか

534:デフォルトの名無しさん
08/02/19 21:53:56
豊丸

535:デフォルトの名無しさん
08/02/19 22:00:01
サクラエディタ

536:デフォルトの名無しさん
08/02/19 22:14:30
>>533
eclipseを立ち上げっぱなしにしておけばいいのでは?

537:デフォルトの名無しさん
08/02/19 22:14:58
vim だな。

538:デフォルトの名無しさん
08/02/19 22:33:13
Mule。
馴れれば結構使える(と思う)けど馴れるまでが大変(だろうな)

539:デフォルトの名無しさん
08/02/19 22:34:12
eclipseのエディタ機能だけ使うことが出来る?
わざわざプロジェクトとか作らないで

540:デフォルトの名無しさん
08/02/19 22:38:44
>>538
× Mule
○ Meadow


541:デフォルトの名無しさん
08/02/19 22:40:44
viとかvimって極度に嫌ってる人がいるよね
史上最悪のエディタだとか

542:デフォルトの名無しさん
08/02/19 22:42:03
んなこと言ってる時点で Sun の Java 使う資格はない。

543:デフォルトの名無しさん
08/02/19 22:42:55
史上最悪のコードというのなら分かるが
エディタとしては中毒性が高い。

544:デフォルトの名無しさん
08/02/19 23:08:38
viとvimって何が違うの?

545:デフォルトの名無しさん
08/02/19 23:13:26
機能差が歴然。

546:デフォルトの名無しさん
08/02/19 23:22:55
eclipseの補完機能が優秀過ぎるから他のどのエディタ使っても物足りなく感じる

547:デフォルトの名無しさん
08/02/19 23:29:55
お尋ねします。
SortedSetを使い、ソートさせ、表示にはtoStingを使っているのですが、"[""]"の表示が出てしまいます。このカッコを表示させない方法はありますか?
もしくは、違った方法でソートの結果を出力させられるのでしょうか?
教えていただける方、よろしくお願いします。

548:デフォルトの名無しさん
08/02/19 23:32:43
set.toString().substring(1, set.toString().length() - 1)

549:デフォルトの名無しさん
08/02/19 23:44:12
>>548さん、早速ありがとうございます。
最後にもう1つだけ質問ですが、2つの結果を出す際に、1つ目の結果と2つ目の結果の間の","を消す方法はあるのでしょうか?
たびたび申し訳ありませんがよろしくお願いします。

550:デフォルトの名無しさん
08/02/19 23:45:14
set.toString().substring(1, set.toString().length() - 1).replaceFirst(",", "")

551:デフォルトの名無しさん
08/02/20 01:52:59
>>539
Remote System Explorerプラグイン入れれば、ローカルや、Telnet、FTP、SSH経由で
ファイルシステムにアクセスできる。

>>547
toStringはデバッグ出力などで使うものであって、
特定の書式にしたいのなら、自力で出力すべき。

552:539
08/02/20 12:32:29
>>551
ありがとうございます!まさに探してた機能でした。

553:デフォルトの名無しさん
08/02/20 13:12:04
tomcatの起動について質問です。
現在linuxにtomcatを入れて開発を行っているのですが自動起動に失敗してしまいます。OS起動後に直接起動スクリプトを実行すると正常に起動します。

環境とバージョン
CentOS5.1 32bit/jdk6/tomcat6
ログには以下のような出力があります。
文字制限に引っかかるため一部省略します。
--
2008/02/20 11:47:00 org.apache.catalina.connector.Connector pause
致命的: プロトコルハンドラの一時停止に失敗しました
java.net.SocketException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:209)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:486)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:283)
at org.apache.jk.server.JkMain.pause(JkMain.java:681)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
2008/02/20 11:47:01 org.apache.catalina.core.StandardService stop
情報: サービス Catalina を停止します
以下試したこと。
・自動起動を一番最後に持って行った(rc3.d/S99tomcat)
・F/Wの自動起動を停止
どなたか解決策をご存じの方がいたら教えてください。

554:デフォルトの名無しさん
08/02/20 13:14:38
eth0 起動してんのかよ。

555:デフォルトの名無しさん
08/02/20 13:31:36
>>554
eth0にグローバル、eth1にローカルを設定しています。

また、iptablesにてグローバルは25番のみIN/OUTを許可、ローカルは全て許可に設定しています。
iptablesの自動起動も止めてみたのですが、解決しませんでした。

556:デフォルトの名無しさん
08/02/20 19:00:05
アプレットに関する質問です。
アプレットを使って画像を表示させたいのですが、
アプレットビューアを起動するコマンドを打つと上手く表示されるのですが
html形式のファイルを直接開くと画像が切れて表示されてしまいます。
htmlファイルを直接開いたときに画像が切れないように表示させるには
どうすればいいでしょうか?
よろしくお願いします。

557:553
08/02/20 19:11:40
自己解決しました。
環境変数がちゃんと読めていなかったようです。

558:デフォルトの名無しさん
08/02/20 20:17:04
マイナスをプラスに反転させたいのですがどのように書けばいいのでしょう?
例えば-5を5にしたいです。
どなたかおたすけを・・・


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch