【初心者】Java質問・相談スレッド117【歓迎】at TECH
【初心者】Java質問・相談スレッド117【歓迎】 - 暇つぶし2ch262:デフォルトの名無しさん
08/07/15 14:11:35
コマンドを標準出力に出力しないオプション付けて実行
nullにリダイレクトw

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

275:デフォルトの名無しさん
08/07/15 23:37:04
質問させて下さい。

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

276:デフォルトの名無しさん
08/07/15 23:46:22
NIOでバイト単位で扱うとか

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

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

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

280:250
08/07/16 09:23:50
>>250です。
>>246>>247様、どうもありがとうございました。

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

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

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



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

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

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

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

286:デフォルトの名無しさん
08/07/16 14:17:38
コストが掛かるがこんなん使うとか

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

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

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

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

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

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

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

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

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

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

291:デフォルトの名無しさん
08/07/16 15:46:42
>>281
J2EEは今はJava EEという名前
Java EEでさがせ

Java SEの近くにある

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

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

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

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

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

295:デフォルトの名無しさん
08/07/16 22:15:05
ごめんなさい
第1引数を4以上にすると出ます

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

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

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

298:デフォルトの名無しさん
08/07/16 22:31:07
普通にスタックオーバーフローだわ・・

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

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

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

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

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

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

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

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

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

306:305
08/07/17 10:09:05
アンカミス
293 → >>303

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

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

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

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

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

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

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

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


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

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






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

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

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

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

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

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

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


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

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

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

は実装の不備だろう

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



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

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

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

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

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

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

URLリンク(localhost)ユーザーID

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

345:デフォルトの名無しさん
08/07/18 20:25:26
>>344
宿題スレに行け。

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

378:デフォルトの名無しさん
08/07/19 19:59:46
>>373
なにを保持するんだ。

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

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

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

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

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

軽く死ねるな

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



411:デフォルトの名無しさん
08/07/20 21:57:24
総当たりで調べてもいいんじゃない?

412:デフォルトの名無しさん
08/07/20 22:16:30
>>411
さきほどいろいろと調べて入れてみました

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

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


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

その } は { の間違いでは

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

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

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

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

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

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


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

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

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

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


421:デフォルトの名無しさん
08/07/21 00:04:33
>>394,408
Math#nextUp

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

422:デフォルトの名無しさん
08/07/21 00:17:39
形態素解析エンジンsenを使いたくて
URLリンク(www.esco-sb.jp)
ここを見ながらインストールしたのですが、System.setPropertyの使い方が分からずつまずいています。

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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


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

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

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

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

try{

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

}

}catch(NumberFormatException e){

goToBed()

}


えいっ!

437:436
08/07/21 17:55:47
ぐは。。。ぬるぽか。寝るわ。

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

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

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

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

442:426
08/07/21 21:18:27
>>441
祝日って何?

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

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

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

445:デフォルトの名無しさん
08/07/22 00:49:47
URLリンク(wiki.game-develop.com)


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

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

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

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

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

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

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

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

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

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

452:デフォルトの名無しさん
08/07/22 17:52:49
super の呼び出しはコンストラクタの先頭文にする

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

public DigitalWorldClock(String str) 
{ 
 super(hoge1(str), hoge2(str)); 
}
private static String hoge1() {
 int index = str.lastIndexOf(','); 
 return str.substring(0, index); 
} 
private static float hoge2() {
 int index = str.lastIndexOf(','); 
 return Float.parseFloat(str.substring(index+1)); 
} 


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

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

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

456:デフォルトの名無しさん
08/07/22 19:21:48
インポート部分を書け

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

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

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

458:kokoro
08/07/22 20:00:59
はじめまして。java初めてなんです。

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

お願いします。

459:デフォルトの名無しさん
08/07/22 20:08:10
丸投げはここじゃねーよ

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

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

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


463:デフォルトの名無しさん
08/07/22 21:00:22
>>451

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

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


464:463
08/07/22 21:16:33
コンストラクタが衝突してた 南無

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

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

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

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

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

470:455
08/07/22 22:25:01
>>469
URLリンク(rg550.hp.infoseek.co.jp)
↑のclass DigitalWorldClock extends AbstractWorldClockの
private DigitalWorldClock(String c, float o) { super(c,o); }

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

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

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

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

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

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

475:デフォルトの名無しさん
08/07/22 22:44:49
結論、講師が屑

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

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

AbstractClockは
URLリンク(rg550.hp.infoseek.co.jp)
ですが・・・



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

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

public DigitalWorldClock createInstance(String str)

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

479:デフォルトの名無しさん
08/07/22 23:53:39
abstract教えてんのかファクトリメソッド教えてんのか分からんな。

480:455
08/07/22 23:57:15
>>478
ありがとうございます
Float.parseFloatは、ほかの課題からそのまま使ったのでそのままにしてました

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

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

というエラーと、

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

でいいじゃん

491:デフォルトの名無しさん
08/07/23 07:53:34
JavaCC

492:デフォルトの名無しさん
08/07/23 10:06:00
URLリンク(www.google.co.jp)

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

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

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

495:デフォルトの名無しさん
08/07/23 12:52:39
オブジェクトヘッダの推定量なら、ちょっと古いけど
URLリンク(groups.yahoo.co.jp)
あたりが参考になるかも?

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

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


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

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

Requirements for Writing Java API Specifications
URLリンク(java.sun.com)

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

くらいじゃね

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

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

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

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

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

504:デフォルトの名無しさん
08/07/23 23:29:24
>503
ありがとうございます!!
解決しました。

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

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

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

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

isNumberは自作ですね。

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

508:501
08/07/23 23:46:52
さっきの続きですが、

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

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

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

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


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

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

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

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

515:508
08/07/23 23:56:33
具体例をあげると、

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

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


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


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



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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

529:デフォルトの名無しさん
08/07/24 08:10:49
そういう時に例外使うんじゃないの?

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


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

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

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

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

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

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

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

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



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

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


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

541:デフォルトの名無しさん
08/07/24 23:07:52
定期的に上がるネタだな

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

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

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

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

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

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

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

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

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


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

548:デフォルトの名無しさん
08/07/25 15:04:15
モデル

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

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

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

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

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

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

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

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

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

558:デフォルトの名無しさん
08/07/26 12:35:48
javamailでhotmailへ送信ができません。

Properties props = System.getProperties();
// SMTPサーバーのアドレスを指定
props.put("mail.host","hotmail.com");
Session session=Session.getDefaultInstance(props,null);
MimeMessage mimeMessage=new MimeMessage(session);
// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom(new InternetAddress("asde@hotmail.com","七誌","iso-2022-jp"));
// 送信先メールアドレスを指定
mimeMessage.setRecipients(Message.RecipientType.TO,"hogehoge@hotmail.com");
// メールのタイトルを指定
mimeMessage.setSubject("Hello World JavaMail","iso-2022-jp");
// メールの内容を指定
mimeMessage.setText("testtest","iso-2022-jp");
// メールの形式を指定
mimeMessage.setHeader("Content-Type","text/html");
// 送信日付を指定
mimeMessage.setSentDate(Calendar.getInstance().getTime());
// 送信します
Transport.send(mimeMessage);

ご教授お願いします

559:デフォルトの名無しさん
08/07/26 14:19:32
stacktraceでおk

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

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

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

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

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

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

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

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

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

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

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

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

URLリンク(www.ibm.com)
URLリンク(www.ibm.com)

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

571:kptdEsCUpYdeJPfdZFS
08/07/27 00:52:28
hQS1UB <a href="URLリンク(ejrfsnyjpyid.com)">ejrfsnyjpyid</a>, [url=URLリンク(fyhfhnswsdjf.com) [link=URLリンク(mevudxopwjek.com) URLリンク(jwqpsqacgcmw.com)

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


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


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

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

URLリンク(www.nextindex.net)
StringをvalueOf()でInteger型にして、
Integer型からparseInt()でint型にする


576:デフォルトの名無しさん
08/07/27 02:13:13
File#renameTo

577:デフォルトの名無しさん
08/07/27 02:18:06
>>574

import java.io.*;

public class TestRenameToDir{

public static void main(String[] args)throws IOException{
File f = new File("a\\");
f.renameTo(new File("b\\"));
}

}

こんな感じで書いてみたけど、フォルダ"a"の中身は移動してくれません・・

578:デフォルトの名無しさん
08/07/27 02:28:24
>>575
Integer#parseInt(String) で String から int に出来るだろw
あと、Integer から int は parseInt() ではなく intValue()

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

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

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

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

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

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

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

584:デフォルトの名無しさん
08/07/27 11:56:25
>>577
「ファイルの」移動だと言っとろーが。
a\c.txt
b\
で a の中身を b に移動させたいのなら
new File("a\\c.txt").renameTo(new File("b\\c.txt"));
にしないといけないんじゃないか。

585:デフォルトの名無しさん
08/07/27 11:59:20
おまいら、今日は日曜なのに仕事してんの?

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

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

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

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

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

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

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

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

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

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

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

なぜお勧めできないの?


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

すいません。

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

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

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

SUN教科書Javaプログラマ(SJC-P) (SUN教科書)
URLリンク(www.amazon.co.jp)

JavaプログラマのためのUML
URLリンク(www.amazon.co.jp)


どちらもAmazonの評価は極めて低いようだ・・・

まあいろいろな人の意見を参考にしてくだされ

605:デフォルトの名無しさん
08/07/27 13:41:34
今まで質問してる人と別人ですけど
俺も本で勉強してて「10日で覚えるJAVA入門」と
「トレーニグドリルJAVA」と「JAVA入門の入門」を買って
基礎の基礎から勉強したいから読んでるんですけど
挙げられた本買ってこようと思います

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

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

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

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

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

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

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

612:デフォルトの名無しさん
08/07/27 17:58:36
URLリンク(item.rakuten.co.jp)
これ使ってるよ

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

614:デフォルトの名無しさん
08/07/27 18:17:16
ディレクトリの移動ってったって、
HDD上での位置は変わらないけど、
そこにどういうパスでアクセスするかって
だけの話だからなぁ。

パス情報を変えればいいだけの話。

615:デフォルトの名無しさん
08/07/27 18:26:35
こんなかんじで、ディレクトリ下のファイル一覧を作成しないと、ディレクトリ単位の移動はできない?

import java.io.*;

public class FileTest{

static FileWriter fw ;

public static void main(String[] args)throws IOException{
System.out.println("どのディレクトリのファイル一覧を作成しますか? Directory?");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
fw = new FileWriter("list.txt");
File f = new File(br.readLine());
File files[]= f.listFiles();
fileShow(files);
fw.close();
}

public static void fileShow(File files[]){
for (int i=0;i<files.length;i++){
if (files[i].isFile()){
try{
fw.write(files[i].getAbsolutePath()+"\n");
}catch(IOException e){System.out.println("書き込みエラーです");}
}
else if(files[i].isDirectory()){fileShow(getDirectory(files[i]));}
}
}


public static File[] getDirectory(File file){ return file.listFiles(); }
}

616:デフォルトの名無しさん
08/07/27 19:00:25
>>615
ディレクトリ自体のリネームはこんなじゃね?
new File("hoge\\").renameTo(new File("hogehoge\\"));


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

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

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

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

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

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

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

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

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

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

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

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

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


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