★★Java質問・相談スレッド142★★
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/11/19(金) 03:05:30JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/ [板をp2で開く]
Webプログラミング http://pc11.2ch.net/php/ [板をp2で開く]
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド141★★
(p)http://hibari.2ch.net/test/read.cgi/tech/1286354820/
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
(p)http://www.wikiroom.com/java/
0175デフォルトの名無しさん
2010/12/07(火) 18:15:070176デフォルトの名無しさん
2010/12/07(火) 18:17:590177デフォルトの名無しさん
2010/12/07(火) 18:19:14VectorとLinkedListとかArrayListじゃなくて???
順序無いのがSetとでも答えれば満足?
0178デフォルトの名無しさん
2010/12/07(火) 18:22:17LinkedList 配列を扱います。挿入・削除が高速です。
Vector 配列を扱います。パフォーマンスが悪いため現在ではあまり推奨されない古いクラスです。
Set系 HashSet 値の重複を許さない順不同の要素集合を扱います。
TreeSet 値の重複を許さないソートされたの要素集合を扱います。
Map系 HashMap キーと値の組からなる要素の集合を扱います。
TreeMap キーと値の組からなる要素の集合を扱います。キーでソートされています。
0179デフォルトの名無しさん
2010/12/07(火) 22:09:43ウィルス入ったりします?
0180デフォルトの名無しさん
2010/12/07(火) 22:29:250181デフォルトの名無しさん
2010/12/07(火) 23:01:04やっぱテキストエディタ使ったほうがいいな
Eclipseアンインストールするか・・・
0182デフォルトの名無しさん
2010/12/07(火) 23:07:240183デフォルトの名無しさん
2010/12/07(火) 23:52:060184デフォルトの名無しさん
2010/12/08(水) 06:57:22Tomcatみたいにクライアントからの問い合わせを受け付けるようなデーモンを作りたいのですが
Webコンテナ(というかサーバ)を建てるよりもっとコンパクトな方法はないのん・・?と思いまして。
もちろん、いちいちJVMを立ち上げるような作りなら実装は簡単なのですが。
0185デフォルトの名無しさん
2010/12/08(水) 08:47:220186デフォルトの名無しさん
2010/12/08(水) 17:48:15したいのですがどうやればいいのでしょうか。
0187デフォルトの名無しさん
2010/12/08(水) 17:53:540188デフォルトの名無しさん
2010/12/09(木) 00:13:110189デフォルトの名無しさん
2010/12/09(木) 11:32:31どういうものがあるでしょうか?
自分で考えたのは
関数の最初と最後で
System.gc()をして空きメモリをログファイルに出力する
っていうのを全関数に埋め込んで
ログをチェックするっていうのなんですが
どうでしょうか?
0190デフォルトの名無しさん
2010/12/09(木) 11:47:330191デフォルトの名無しさん
2010/12/09(木) 13:06:27でpから標準出力のストリーム取得してるんだけど、
どうもコマンドのプロセスが途中で止まってる。
バッファがいっぱいになるとバッファ空くまで待っちゃうから
別プロセスで取得するってのはわかるんだけど、
ほんとにそこまでしなきゃ駄目なの?
コマンド渡せば終了コードも標準出力も簡単に返してくれるような
お手軽ライブラリは公開されてないですかね?
0192デフォルトの名無しさん
2010/12/09(木) 13:20:29数行で済むようなコードだと思いますが
「ほんとにそこまでしなきゃ」っていうほどのことではないかと
0193デフォルトの名無しさん
2010/12/09(木) 15:42:500194デフォルトの名無しさん
2010/12/09(木) 17:32:380195デフォルトの名無しさん
2010/12/09(木) 18:16:11Javascriptは正直初めてですが、ググりながら以下の様にしたのですが
Firefox ですと最初の画像が表示されたまま次へ移動しません。またIE8
だと最初の画像すら表示しません。どなたか回答をお願い申し上げます。
表示したい画像はhtmlと同じフォルダにあるimg01.gif〜img16.gifです。
<html>
<head>
<script language="JavaScript"><!--
num = 0;
function change()
{
num++;
num %= 16;
document.MyIMG.src = "img0"+num+".gif;
}
// --></script>
</head>
<body>
<a href="javaScript:change()">
<img src="img01.gif" name="img" border="0"><br>
</a>
</body>
</html>
0196デフォルトの名無しさん
2010/12/09(木) 18:18:050197デフォルトの名無しさん
2010/12/09(木) 18:37:35num++;
num %= 16;
document.MyIMGsrc="img0"+num+".gif";
}
最後にダブルクォーテーションが抜けてる
FFは勝手に補正読みする
スレ違い死ね
0198デフォルトの名無しさん
2010/12/09(木) 19:02:32pの標準エラー出力がパンクしてるんじゃないか?
ProcessBuilder使えば標準出力と標準エラー出力をひとつにまとめられたはず。
0199デフォルトの名無しさん
2010/12/09(木) 19:29:38pの標準エラー出力がパンクしてるんじゃないか?
0200デフォルトの名無しさん
2010/12/09(木) 19:58:340201デフォルトの名無しさん
2010/12/09(木) 20:25:15public class ProcessRunner {
public static String execute(String cmd) throws IOException, InterruptedException {
Process proc = Runtime.getRuntime().exec(cmd);
InputStream stdout = proc.getInputStream();
InputStream stderr = proc.getErrorStream();
byte[] iobuf = new byte[1024];
ByteArrayOutputStream bout = new ByteArrayOutputStream(8192);
while ( isAlive(proc) ) {
if ( stdout.available() != 0 ) {
int len = stdout.read(iobuf);
if ( len == -1 ) break;
bout.write(iobuf, 0, len);
}else if ( stderr.available() > 0 ) {
stderr.read(iobuf);
}else {
Thread.sleep(15L);
}
}
return new String(bout.toByteArray());
}
private static boolean isAlive(Process proc) {
try {
proc.exitValue();
}catch ( IllegalThreadStateException e ) { return true; }
return false;
}
}
0202デフォルトの名無しさん
2010/12/09(木) 21:39:542010年抱かれたい男GP優勝!!!アッーーー!
0203デフォルトの名無しさん
2010/12/09(木) 21:42:19エラーは全く出てないはず...
仮に出ててもちょろのはず...
0204デフォルトの名無しさん
2010/12/09(木) 22:57:400205デフォルトの名無しさん
2010/12/09(木) 23:02:030206デフォルトの名無しさん
2010/12/09(木) 23:07:350207デフォルトの名無しさん
2010/12/10(金) 05:20:400208デフォルトの名無しさん
2010/12/10(金) 05:53:33呼ぶコマンド自体は"dir"だけみたいなものなので、
仮にエラー出ても数文字...とりあえず試しはします。
あざす!
0209デフォルトの名無しさん
2010/12/10(金) 08:54:06なんかデプロイがファイルコピーだけで済むのって
魅力的なんですが。
0210デフォルトの名無しさん
2010/12/10(金) 10:56:55趣味でやる個人サイトなら好きにすればいいんじゃね。
俺が客なら納品物がそれだったら二度と連絡よこすなって言うけど。
0211デフォルトの名無しさん
2010/12/10(金) 11:02:03画面文言を1文字直すだけでも全ロジックの試験エビデンス要求して虐めてみるのも面白いかもなw
0212デフォルトの名無しさん
2010/12/10(金) 11:04:39でもそれってその分の費用貰いますよ
0213デフォルトの名無しさん
2010/12/10(金) 11:16:52契約内容によるだろ。
0214デフォルトの名無しさん
2010/12/10(金) 11:55:210215191
2010/12/10(金) 13:01:15while ( isAlive(proc) ) {
だとタイミング悪いと最後が切れちゃうようなので、
while ( isAlive(proc) || stdout.available() != 0 ) {
にして使わせていただくお。
本当にありが�d(癶∀癶✿)
0216191
2010/12/10(金) 14:31:45eclipseからTomcat起動だとイケるんだけどな。
サービス起動してるTomcatにデプロイした場合は駄目。
同様にバッファ空き待ちで待ち続けてる。
そういえば最初もそうだったな...。
Tomcat側のconfの違いだろうけど本番用confイジるわけにはいかない環境だから、
やっぱThread継承するなりして別プロセスから吸い出してあげないと駄目。
標準出力抜くだけなのにめんどいなぁ。
0217デフォルトの名無しさん
2010/12/10(金) 16:54:53javaではポインタ渡しがないので、ある関数に渡した引数を
関数側で変更する方法として参照渡しがありますよね
これは自前のクラスや配列なら、ポインタと同様に使えるのですが
どうやらIntegerなどのプリミティブのラッパー系はimmutableのため
使えないようです。(ちょっとここもあいまい)
でも実際に
boolean func1(Integer a){
a = 0;
}
boolean func2(Integer a,Integer b){
a = 1;
b = 10;
}
のように戻り値としてbooleanで統一、引数側でなんとかしたい
場合があると思います。
このような場合、javaではどのように書けばよいのでしょうか?
Integerを自作のMyIntegerクラスなどに変えて呼び出し先変更用の
クラスを引数として渡す、ということは考えたのですが、
演算子のオーバーロードもできないし、いろいろ不都合もあるので
どうしようか悩んでます。
0218デフォルトの名無しさん
2010/12/10(金) 17:01:180219デフォルトの名無しさん
2010/12/10(金) 17:04:18C#ならありますが、、、
0220デフォルトの名無しさん
2010/12/10(金) 17:11:560221デフォルトの名無しさん
2010/12/10(金) 17:12:100222デフォルトの名無しさん
2010/12/10(金) 17:16:33いじっても、呼び出し元の変数は変わりませんよね
コーディング構想をそもそも代えないとダメなのかな?
0223デフォルトの名無しさん
2010/12/10(金) 17:27:500224デフォルトの名無しさん
2010/12/10(金) 17:37:530225デフォルトの名無しさん
2010/12/10(金) 17:49:55int[]渡すとか。
0226デフォルトの名無しさん
2010/12/10(金) 17:51:290227デフォルトの名無しさん
2010/12/10(金) 18:13:240228デフォルトの名無しさん
2010/12/10(金) 18:16:54一部の特殊なクラス(Integerとか)を除いては、
内部的にはポインタ渡しと同様だが。
0229デフォルトの名無しさん
2010/12/10(金) 19:35:16Javaではプリミティブ型は値渡し、それ以外(何かのクラスのインスタンス)
はポインタの値渡し。引数で受け取ったオブジェクトが持っている、
内部状態を更新するメソッドを呼ぶと、呼び出し元から見えるオブジェクトの
内容が変わるが、「引数 = new なんとか();」のように変数が参照している。
ちなみにJavaでは配列は全部クラスと一種とみなされる。だからbyte[]もchar[]も
オブジェクトであり、メソッドの引数に渡した瞬間に、配列のコピーが作られる
わけではない。
オブジェクトを摩り替えても呼び出し元に作用しない。
0230デフォルトの名無しさん
2010/12/10(金) 19:36:530231デフォルトの名無しさん
2010/12/10(金) 19:39:180232デフォルトの名無しさん
2010/12/10(金) 19:41:51おまえはじゃ無理
0233デフォルトの名無しさん
2010/12/10(金) 19:43:48訂正。
「引数 = new なんとか();」のように変数が参照しているオブジェクトを別のインスタンス
に向けても、呼び出し元が参照しているオブジェクトのインスタンスは昔のまま。
したがって、
public static void main(String[] args) {
java.lang.Integer ival = new Integer(1);
sub1(ival);
System.out.println(ival.toString());
}
private static void sub1(Integer anValue) {
anValue = new Integer(2);
}
上のコードを実行すると、コンソールに「1」が表示される。引数で受け取った
anValueが参照していたIntegerのインスタンスは、sub1メソッド内では新しい「2」オブジェクトを
参照するように摩り替わっているが、だからといって呼び出し元が参照していた「1」が「2」を
参照するように書き換わるわけではない。
0234デフォルトの名無しさん
2010/12/10(金) 19:43:55javalangならそれで依存はないけど、c99的にはツッコミどころが多分にある
0235デフォルトの名無しさん
2010/12/10(金) 19:44:49javalangならそれで異論はないけど、c99的にはツッコミどころが多分にある。
0236デフォルトの名無しさん
2010/12/10(金) 19:46:45次に、更新可能なオブジェクトのメンバーを変更するケース。
public static void main(String[] args) {
java.util.ArrayList<Integer> list = new java.util.ArrayList<Integer>();
list.add(Integer.valueOf(1));
list.add(Integer.valueOf(2));
sub2(list);
for ( int i = 0; i < list.size(); i++ ) { System.out.println(list.get(i)); }
}
private static void sub2(java.util.ArrayList<Integer> list) {
list.add(Integer.valueOf(3));
}
上のコードを実行すると、「1\n2\n3\n」が表示される。引数で受け取った
listの参照に対して「3」という値を持つIntegerを追加したのでこのようになる。
さらにおまけで、sub2を次のように書き換えると、「1\n2\n」と表示される。
private static void sub2(java.util.ArrayList<Integer> list) {
list = new java.util.ArrayList<Integer>(); // <=この行追加。
list.add(Integer.valueOf(3));
}
0237デフォルトの名無しさん
2010/12/10(金) 19:50:020238デフォルトの名無しさん
2010/12/10(金) 19:50:08int a,b
}
かint[]で良いだろ
0239デフォルトの名無しさん
2010/12/10(金) 23:33:17先ほどpleiadesを導入したんですがホバーが英語のままで日本語化できません
googleで解決法を検索し、試して見たのですが解決できず未だにホバーは英語のままです
日本語化する方法があったら教えてください
0240デフォルトの名無しさん
2010/12/11(土) 08:44:58結局、
MyInteger {
public int value;
}
にしました。
他のオブジェクト同様にIntegerとかに更新メソッドつけてくれれば良い話なんですが、
なんでimmutableなクラス仕様があるのかな?
0241デフォルトの名無しさん
2010/12/11(土) 08:48:020242デフォルトの名無しさん
2010/12/11(土) 08:56:32理解が浅いと何をやってみても今回のように何も出来ない。
0243デフォルトの名無しさん
2010/12/11(土) 09:10:20お前みたいに返り値boolean固定するアホが出ないようにだろうw
0244デフォルトの名無しさん
2010/12/11(土) 09:16:010245デフォルトの名無しさん
2010/12/11(土) 09:57:410246デフォルトの名無しさん
2010/12/11(土) 11:34:31似たような関数群だからなるべく似たような使い方に
統一したかったんだよね
>242さん
よかったらどんな対処があるか教えてください
0247デフォルトの名無しさん
2010/12/11(土) 11:57:470248デフォルトの名無しさん
2010/12/11(土) 12:04:13MyInteger持ってこられたらレビューでフルボッコにするよねwww
0249デフォルトの名無しさん
2010/12/11(土) 12:19:50でどんな改善案になるの?
戻り値毎にクラス作るのもめんどくさいし
関数10個あって、それぞれの関数で戻したい値が1個〜10個、
んな場合の設計ってどうします?
戻り値用クラス10個作って、null or クラスで返す?
0250デフォルトの名無しさん
2010/12/11(土) 12:29:02248ではないが、ケースによるが配列やコレクションをつかうんじゃね?
というかstaticメソッドとも限らないわけで設計がまずいんじゃね?
設計もまずくないならメソッド毎の戻り値のクラス作ればいいんじゃね?
0251デフォルトの名無しさん
2010/12/11(土) 12:31:300252デフォルトの名無しさん
2010/12/11(土) 12:33:310253デフォルトの名無しさん
2010/12/11(土) 12:39:400254デフォルトの名無しさん
2010/12/11(土) 12:52:32(つд⊂)ゴシゴシ
引数10個のメソッドを作るように読めるぞw
0255デフォルトの名無しさん
2010/12/11(土) 12:54:570256デフォルトの名無しさん
2010/12/11(土) 12:57:420257デフォルトの名無しさん
2010/12/11(土) 13:26:230258デフォルトの名無しさん
2010/12/11(土) 13:30:570259デフォルトの名無しさん
2010/12/11(土) 14:56:270260デフォルトの名無しさん
2010/12/11(土) 18:09:58Mergedoc使え
Mergedoc でjava 付属のsrc.zipを日本語化して
それを使うようにする
0261デフォルトの名無しさん
2010/12/11(土) 18:43:42BigDecimal bi = new BigDecimal("0.00392156862745098");
System.out.println(bi);
System.out.println("切り捨て:" + bi.setScale(3, RoundingMode.FLOOR));
double result = bi.setScale(3, RoundingMode.FLOOR).doubleValue();
System.out.println(result);
としたところ
0.00392156862745098
切り捨て:0.003
0.0030
となってしまいます
望みの結果としてはresultが小数第3位までの「0.003」となって欲しいのですが、
少数第4位の「0」が余計です
改善方法または原因はなんでしょうか?
0262デフォルトの名無しさん
2010/12/11(土) 19:16:20doubleValue で double 値に変換する場合、その BigDecimal の値が double として正確に表現できなければ、最も近い double の値になる
つまり近似値でしかない (しょせん double は誤差を含む型だから、小数を正確に表現できるとは思わない方がいい)
正確に第4位切り捨ての値で扱いたければ最初から最後まで BigDecimal のまま扱う
double にした時点で誤差が生じる可能性があるのだから、いったん double にしてから文字列にしたって当然誤差を含むので、
誤差のない文字列を得たいなら BigDecimal から直接 String に変換する
0263デフォルトの名無しさん
2010/12/11(土) 23:01:36例が悪いですね、すみません
さすがに10個は厳しいですね
どんな理由でも6個くらいが許容限界かな
0264デフォルトの名無しさん
2010/12/11(土) 23:17:13もう来るな死ねよ
0265デフォルトの名無しさん
2010/12/12(日) 01:55:31答えは自明。
暇だからヒントをあげるとね「戻り値には意味があり、型はそれを使うべくして使う」ということ。
じゃあ、MyIntegerの意味はなんだろう、そしてその型を使う理由はなんだろう。
それはシステムのコンポーネントとして存在すべくして存在するのではなく、
「よくわかんないから作ってみた自作Integer」というだけのシステムとして無意味なものだね。
> 関数10個あって、それぞれの関数で戻したい値が1個〜10個、
> んな場合の設計ってどうします?
> 戻り値用クラス10個作って、null or クラスで返す?
オブジェクトにできないほど関連性の薄いまとまってないデータを10個も受け渡すという事が、
そもそもメソッド分けすらまともにできてない何よりの証拠だね。
上記のケースを例に出してくるあたり、どんなレベルかは察しがついちゃう。
一律booleanで返したいってきっと正常/異常を結果で返したいんだろうけど、
だとしたら、そうする必然性(設計思想)はなんだろう?
適切な例外を投げるでは何故だめなのか?
そういうそもそもの部分を考えもしないで「でどんな改善案になるの?」とか言っちゃうからまともに相手にされないの。
といわれても考えようとしない教えて君なら、凡庸な1年目の新人さん未満だな。
以上、もうレスはいらないよ。
0266デフォルトの名無しさん
2010/12/12(日) 01:58:47は
「パラメータには
に読み替えてくれwww
飲み過ぎワロタww
0267デフォルトの名無しさん
2010/12/12(日) 02:29:15引数が16個以上必要なメソッドとか平気で作るけど、君はクラス設計をしたこともないしそういう世界も知らないでしょう?
0268デフォルトの名無しさん
2010/12/12(日) 02:36:06Graphics.drawImageなんか要求している引数個数は多いけどまったくに適切な設計のメソッドだなあと思うよ。
0269デフォルトの名無しさん
2010/12/12(日) 02:36:21引数9個のメソッド作っちまった
あやうく10個に達するところだった
あぶねーあぶねー
なんか、配列渡すのに開始位置と長さもセットにしなきゃいけないのがここ最近の俺の引数増を招く主な原因だな・・・
これは言語仕様が悪いよな
そうだ俺は悪くない
0270デフォルトの名無しさん
2010/12/12(日) 05:31:57あなたのつくるメソッドは、intやStringの引数がとても多そう
0271デフォルトの名無しさん
2010/12/12(日) 06:10:370272デフォルトの名無しさん
2010/12/12(日) 07:45:410273デフォルトの名無しさん
2010/12/12(日) 07:54:38なぜいまだに世の中のJavaで書かれたソフトウェアの多くがint型を使っているのでしょうか?
intとIntegerで性能差も無視できるレベルだと思いますが。
0274デフォルトの名無しさん
2010/12/12(日) 07:56:30■ このスレッドは過去ログ倉庫に格納されています