★★Java質問・相談スレッド153★★

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

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

前スレッド
★★Java質問・相談スレッド152★★
http://toro.2ch.net/test/read.cgi/tech/1329715551/
2デフォルトの名無しさん:2012/04/15(日) 06:29:05.19
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing & JavaFX 10
http://toro.2ch.net/test/read.cgi/tech/1316592884/
■ SWT は --
Java 高速GUI SWT 3
http://hibari.2ch.net/test/read.cgi/tech/1164877399/

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part22
http://hibari.2ch.net/test/read.cgi/tech/1295766416/
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 9
http://hibari.2ch.net/test/read.cgi/tech/1249357352/
■ Androidアプリの作成は --
Androidプログラミング質問スレ Part20
http://toro.2ch.net/test/read.cgi/tech/1332229701/

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 71 ★★
http://hibari.2ch.net/test/read.cgi/tech/1309076891/

■ NetBeansに関する雑談は --
NetBeans Part6
http://hibari.2ch.net/test/read.cgi/tech/1273665879/
■ Eclipseに関する雑談は --
Eclipse統合M32【Java/C++/Ruby/Python/Perl】
http://toro.2ch.net/test/read.cgi/tech/1320318310/

**** 開発環境、実行環境は ****
■ Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
3デフォルトの名無しさん:2012/04/15(日) 21:25:43.42
>>1
乙です


Javaにおけるジェネリックスのメリットって、コンパイル時やIDE上でエラーチェックができることぐらいですか?
型推論のある言語だとそこから更に効果あるらしいんですけど・・・

MapとかListにジェネリックスを使うと見た目がかなりゴチャゴチャするので、
そのぐらいのメリットしかないなら、使いたくないんですが
4デフォルトの名無しさん:2012/04/15(日) 21:34:36.66
どうであれ、使わなければ関係ない
5デフォルトの名無しさん:2012/04/15(日) 22:27:24.72
実行時型検査のキャストでゴチャゴチャしたいか
コンパイル時型検査の型宣言でゴチャゴチャしたいかの二択だな。
6デフォルトの名無しさん:2012/04/16(月) 01:18:25.90
ちがうだろ
ライブラリ書く奴が苦労するか
ライブラリ使う奴が苦労するか
の違いだ
プロならどちらを選ぶかは自明
7デフォルトの名無しさん:2012/04/16(月) 10:00:27.13
型推論のある言語だとそこから更に効果あるらしいんですけど・

具体的に何ですか?
8デフォルトの名無しさん:2012/04/16(月) 13:46:01.50
javaを習得したいんだがおすすめの参考書ってある?
9デフォルトの名無しさん:2012/04/16(月) 13:51:56.15
>>8
The Java Programming Language
10質問です:2012/04/16(月) 14:07:55.80
JFrame を new して setVisible(true) する時は、
EventQueue.invokeLater() 使って EDT(Event Dispatch Thread) 側でやれって事のようですが、
java.awt.Frame の場合もそうするべきなのでしょうか?
ザックリとググッてみたのですが Swingネタばかりで…
一応、main() で古典的なべた書きパターンで作ってみて問題は今の所発生はしてないのですが。

エロい人、よろしくお願い致します。
11デフォルトの名無しさん:2012/04/16(月) 19:15:58.45
マルチスレッドにちょっぴり対応しているかもとかいう都合のいいことは考えない方が安全
12デフォルトの名無しさん:2012/04/16(月) 19:29:50.06
今から Java開発環境をつくるなら、Java/Eclipse の
バージョンの組み合わせは、どんなのがベストでしょうか?
13デフォルトの名無しさん:2012/04/16(月) 20:19:55.98
Javadocで、Listなら {@link List#size()} と書くように、
配列のlengthフィールドへのリンクを書きたいんだけど、どうすればいいですか?
14デフォルトの名無しさん:2012/04/16(月) 20:34:31.07
>>12
自分用・勉強用なら、Java7 + Eclipse 3.7.2(だっけ? Java7対応のやつ)。
ダイアモンド演算子とリソース解放付きtryがすさまじく便利。

業務用ならJava5じゃね?

業務用だと、いまだにJava1.4が主流だと聞いたけど、
1.4はジェネリクスがないから、コレクションがまともに使えなくて、
誰かがコレクション捨てて配列使って書き始めて、全体的にぐだぐだになる。

Java5でジェネリクス使って、生の配列を使わないように書くとすごく楽。


……と俺は思ってるんだけど、他の人の意見も聞きたい。
15デフォルトの名無しさん:2012/04/16(月) 21:14:51.33
16デフォルトの名無しさん:2012/04/16(月) 21:18:14.40
>>15
{@link}ってそーゆー使い方できたっけか?
17デフォルトの名無しさん:2012/04/16(月) 21:23:12.21
>>16
無理だったか。じゃ無理だわな。

それでも諦めないならHTML直書きするか、カスタムタグ定義してリンクに変換するか。
18デフォルトの名無しさん:2012/04/16(月) 21:44:18.92
>>15-17
ありがとう。
素直に書くことはできないっぽいですね。
お手数おかけしましたが、「配列長がxxのとき――」とベタ書きの文章で書くことにします。


というか、自分でも調べてたんだけど、
配列#length フィールドのJavadoc、というか定義文自体が存在しない?
そもそも 配列#length ってフィールドじゃないのか…?
19デフォルトの名無しさん:2012/04/16(月) 22:11:19.22
APIの一部じゃないのでAPI仕様というかjavadocには記述されてないだけ。
言語仕様には記述されてる。

あと言語仕様的にはフィールドだけど、
java.lang.reflect.Field で取ってこれない特別なフィールド。
20デフォルトの名無しさん:2012/04/16(月) 22:44:49.39
>>19
あー。「API」じゃないのか、言語仕様なのか…。
配列が特別扱いなせいで、色々なところで「配列用の特別なコード」が書かれてるんだよなぁ。
ジェネリックとも親和しないしなぁ…。

うまくAPIに織り込めなかったのかね。
それか、Javascriptみたいに「世界はすべて(連想)配列だ!」くらい割り切ってくれてたらなあ…。
21>>10:2012/04/16(月) 23:05:22.56
>>11
レスありがとうございます。
そうですね、結局の所、別スレッドと強調するのは必然でしょうしね…
22デフォルトの名無しさん:2012/04/16(月) 23:34:02.78
すいません
ライセンスの質問などはどこのスレッドでさせてもらえますか?
23デフォルトの名無しさん:2012/04/16(月) 23:40:35.49
2412:2012/04/16(月) 23:47:07.19
>>14 サンクス!

とりあえず、書籍の付録CDにあった Java5(TIGER) & Eclipse3.1.1
で、開発環境を作ってみます。
25デフォルトの名無しさん:2012/04/17(火) 00:27:46.22
なんでわざわざそんな古いEclipse使うの?
26デフォルトの名無しさん:2012/04/17(火) 01:29:31.75
Pleiadesでいいじゃんな。javaもとりあえず1.5-1.7が入ってるし、
アップデートによって、自分で入れ替えればいい。
27デフォルトの名無しさん:2012/04/17(火) 08:12:44.65
javaの入門書ってどれがおすすめ?
プログラミング経験はCをかじった程度
28デフォルトの名無しさん:2012/04/17(火) 08:31:42.55
どれでも読め。
どれを読んでもハズレ。
29デフォルトの名無しさん:2012/04/17(火) 10:25:15.10
>>23
ありがとうございます
30デフォルトの名無しさん:2012/04/17(火) 13:36:08.30
いえいえ
31デフォルトの名無しさん:2012/04/17(火) 14:34:08.47
Cの習熟度次第じゃないの?Cでバリバリソフト作れるぐらいならネット検索だけで十分だと思うけど。不安なら何か初心者向けの本一冊買ってあとは適時買い足せばいいと思う
32デフォルトの名無しさん:2012/04/17(火) 17:41:49.86
起動しているjavaの現在使用メモリ及びMAXメモリを確認する方法はあるでしょうか?
33デフォルトの名無しさん:2012/04/17(火) 17:58:55.74
内部からだったら java.lang.Runtime の maxMemory() freeMemory() あたり。
外部からなら jconsole みたいなモニタリングツール使えば。
34デフォルトの名無しさん:2012/04/17(火) 20:17:40.30
Beans bindingはこちらでいいですか?

MVC構築に使える無料のライブラリ
を探して見つけたのですが、オススメ
とかやめとけとか、皆さんの評価を
聞かせてください。
35デフォルトの名無しさん:2012/04/17(火) 20:21:09.38
>>31
thx
今日入門書買ってきた
がんばるよ
36デフォルトの名無しさん:2012/04/17(火) 23:01:13.74
37 ◆QZaw55cn4c :2012/04/17(火) 23:19:28.05
>>36
独習はおすすめしない。
38デフォルトの名無しさん:2012/04/17(火) 23:34:08.68
知ったか乙
39デフォルトの名無しさん:2012/04/17(火) 23:35:55.13
>>36
持ってるけど入門編でしょそれ
40 ◆QZaw55cn4c :2012/04/17(火) 23:37:41.83
>>38
背伸びして叩かれるのもときにはいいものだ。
で、独習のどこがいいの?読んだの?
41デフォルトの名無しさん:2012/04/17(火) 23:41:39.61
背伸びして叩かれてろw
42デフォルトの名無しさん:2012/04/18(水) 13:03:48.44
>>14
EOF過ぎたバージョンを業務で使うキチガイは流石にいないぞw
43デフォルトの名無しさん:2012/04/18(水) 13:04:10.21
EOLだw
44デフォルトの名無しさん:2012/04/18(水) 13:07:17.40
45デフォルトの名無しさん:2012/04/18(水) 13:11:02.26
1.4.2 for buisinessってもうサポートされないんだっけか?
46デフォルトの名無しさん:2012/04/18(水) 16:14:25.48
>>33
ありがとうございます。

外部からCtrl-Breakでスレッドダンプを出せとよしゃっと思いましたが、メモリは出ていないですね…
残念
47デフォルトの名無しさん:2012/04/19(木) 15:48:29.23
javaでプログラム作る場合、アプリケーションの共通設定やユーザの設定ってどこでやるように想定されてるんでしょうか?
マルチプラットフォームだから、ウィンドウズのレジストリは論外としても、環境変数も必ず共通で使えるわけじゃないですよね。
OSや環境に応じていちいち別処理にするんでしょうか? 結局環境依存のプログラムになるような。
48デフォルトの名無しさん:2012/04/19(木) 16:00:51.85
java.util.prefs.Preferences 使ってもいいし、
System.getProperty("user.home") に .aplicationName みたいな設定ファイル作ってもいいし。
49デフォルトの名無しさん:2012/04/19(木) 16:05:57.55
>System.getProperty("user.home") に .aplicationName みたいな設定ファイル

は初耳ですね。どこかに出典はあるんですか?
5047:2012/04/19(木) 16:25:00.27
>>48
ありがとうございます。
試してみます。
51デフォルトの名無しさん:2012/04/19(木) 16:28:48.94
>>49
*nixアプリの伝統的な設定保存方法の一つ。
.emacs とか .vi とか見たことあるでしょ。

*nixでjava.util.prefs.Preferences使うと、その方法使うんじゃなかったか?
52デフォルトの名無しさん:2012/04/19(木) 16:55:59.35
~/.emacs とか書いたほうがわかりやすいんじゃね?
53デフォルトの名無しさん:2012/04/19(木) 17:03:18.92
user.homeプロパティーは、linuxだと普通は~/ですけど、windowsでリアルだと普通はどこになるんですか?
54デフォルトの名無しさん:2012/04/19(木) 17:07:50.09
%USERPROFILE% じゃね?
55デフォルトの名無しさん:2012/04/19(木) 17:32:56.34
MacOSXは
~/Library/Application Support/
とかが一般的だったりする。

窓付きアプリはあまり~/直下にもの置かないような気がするな
56デフォルトの名無しさん:2012/04/19(木) 17:47:10.32
eclipseもnetbeansも~/.eclipse ~/.netbeansってディレクトリ掘るし、
jeditなんかも同じだな。

macではどうなるか知らんけど。
57デフォルトの名無しさん:2012/04/19(木) 17:54:52.64
既に設定ファイルにもus-ascii,88591だけでなく日本語など混在しているのでvi,emacsなどのレガシーはもう使ってません。
さらにx起動しないときの(tty)コンソールがbash --helpの時でも日本語表示できないので、vi,emacsを極める理由もありません。
58デフォルトの名無しさん:2012/04/19(木) 18:05:00.65
ISO8859_1と日本語って混在できたっけか?
59デフォルトの名無しさん:2012/04/19(木) 18:20:32.87
設定ファイルの説明部分に日本語でコメントを残しておくので、設定ファイルの種類は8859_1,utf8,eucjpなどが混在します。
prefsなら別ですが、home.userに置くような設定ファイルはテキストじゃなくてバイナリーと考えた方がいいんじゃないですかね。
60デフォルトの名無しさん:2012/04/19(木) 18:50:48.43
そんなもんディレクトリ作って別ファイルにしてもいいし、お好きなように。
61デフォルトの名無しさん:2012/04/19(木) 18:56:02.26
>>58
ISO2022JPならなんとかならん?

複数のファイルであっても複数の文字コード混在させないだろ、普通。
設定ファイルなんてユーザには直に弄らせないんだから統一するの楽だし。
62デフォルトの名無しさん:2012/04/19(木) 18:59:10.42
そろそろスレ違い
63デフォルトの名無しさん:2012/04/19(木) 20:18:30.09
JavaFx Scene BuilderのツールバーのEditが開かない。
64デフォルトの名無しさん:2012/04/19(木) 20:22:13.26
BASICはfor next や if文など、基本的なものはまぁまぁわかっているつもりなんですが、
javaをはじめるにあたって本か何かで身に着けたいと思います。
おすすめの本ありますか?
65デフォルトの名無しさん:2012/04/19(木) 20:28:39.15
66デフォルトの名無しさん:2012/04/19(木) 20:34:12.52
>>65
すみません  そちらにいきます
67デフォルトの名無しさん:2012/04/19(木) 21:12:31.12
Eclipseで実行やデバッグを押したら自動的に保存されるようにする設定のやり方を教えてくれ
68デフォルトの名無しさん:2012/04/19(木) 21:18:04.33
69デフォルトの名無しさん:2012/04/19(木) 21:22:32.22
自治厨の屁の役にも立たないレスで1レス消費するのもどうかと思うけどな
70デフォルトの名無しさん:2012/04/19(木) 21:25:06.06
そう思うならID表示に汁
71デフォルトの名無しさん:2012/04/19(木) 21:33:08.20
>>61
切り替え方式でも8859_1との混在は無理だろ
72デフォルトの名無しさん:2012/04/19(木) 21:40:57.74
wikipedia見てみたら2022-JP-2 (RFC1554 1993years)から混在できるって書いてあった。
73デフォルトの名無しさん:2012/04/19(木) 22:43:01.36
自治厨 = 中二
74デフォルトの名無しさん:2012/04/19(木) 23:29:37.84
↑自己紹介
75デフォルトの名無しさん:2012/04/19(木) 23:52:50.18
java自体の質問じゃないんですが、java総合スレってないんでしょうか?
76デフォルトの名無しさん:2012/04/20(金) 01:53:37.94
javaが見れないのでjavaをアンインストールして新しいのをインストールしようとして
コントロールパネルでJava(TM) 6 Update29をアンインストールしたところ
何故かJava(TM) 6 Update20 のアンインストールが始まった挙句
「この Windows インストーラ パッケージに問題があります」と出て行き詰ってしまいます
どなたか解決法を教えて頂けないでしょうか?
77デフォルトの名無しさん:2012/04/20(金) 02:52:28.27
Java(TM) 6 Update20を拾って来て
上書きインストールして
アンインストールする
78デフォルトの名無しさん:2012/04/20(金) 07:12:39.57
エラーメッセージでググればなんか出てきたよ

気のせいかMicrosoftInstaller(MSI)やInstallShieldのトラブルを目にするな最近。
検証不足のセキュリティソフトがなにかやらかしたのか
79デフォルトの名無しさん:2012/04/20(金) 09:41:05.64
やらかしたのは自分だろ
80デフォルトの名無しさん:2012/04/20(金) 11:20:43.41
馬鹿には無理
81デフォルトの名無しさん:2012/04/20(金) 14:53:45.95
だなw
82デフォルトの名無しさん:2012/04/20(金) 21:26:25.25
「馬鹿はjavaやれ」と言われこのスレでは「馬鹿には無理」といわれます><
83デフォルトの名無しさん:2012/04/20(金) 21:41:07.70
馬鹿はC#だろw
84デフォルトの名無しさん:2012/04/20(金) 22:09:03.09
C#も後出しだけあって、作りやすさは相当なもんだな
C#というよりVB#って感じだけど。
85デフォルトの名無しさん:2012/04/20(金) 22:56:52.73
javaしかできない馬鹿には無理
86デフォルトの名無しさん:2012/04/20(金) 23:00:14.30
馬鹿にはおっぱい言語を勧める
87デフォルトの名無しさん:2012/04/20(金) 23:03:12.85
おまえらどうせDBからデーター引っ張ってHTML出力する程度のプログラムしか書けないんだからjavaで十分じゃん
88デフォルトの名無しさん:2012/04/20(金) 23:04:58.75
と全角が申しております
89デフォルトの名無しさん:2012/04/20(金) 23:43:39.01
charの0の意味について質問します。
普段ならnullかどうかで分ける事を考える様な場所で、charを返すメソッドを使用して場合わけをしようと考えています。
そこで、charは0以上しか取らないことがわかったので、0を返したときに別の動きをするようにしようと考えた時に疑問がわきました。
普通のcharに0を代入するとどのような文字に対応しているのでしょうか?

char c = (char)0
if(c == ' ') { System..out.println("aa")}
System..out.println(String.valueof(c))

としても何も表示されず悩んでいます。教えていただけないでしょうか?
90デフォルトの名無しさん:2012/04/20(金) 23:51:47.70
Cでは0はナル文字(終端文字)
91デフォルトの名無しさん:2012/04/21(土) 00:00:07.07
馬鹿には無理
92デフォルトの名無しさん:2012/04/21(土) 05:59:14.73
馬鹿には無理
93デフォルトの名無しさん:2012/04/21(土) 11:08:40.72
>>89
>>90の言うとおり0はNULL文字で、改行コードやTabと同じ制御文字。
制御文字だから見えないし、エスケープシーケンス無しには書けない。

場合分けには、charの65535が不正な文字コードだから、これ使えば?
94デフォルトの名無しさん:2012/04/21(土) 12:06:53.36
>>89
> if(c == '') { System..out.println("aa")}
if(c == '\0') { System..out.println("aa")}

> System..out.println(String.valueof(c))
不可視文字の確認したいなら
System..out.printf("U+%04X%n", (int)c);
とかした方が。
95デフォルトの名無しさん:2012/04/21(土) 12:25:34.75
java1.7環境だと、実行可能jarは2バイト文字が含まれるディレクトリ配下だと起動できない
これって意図的なの?
9689:2012/04/21(土) 14:02:17.14
>>90>>93>>94
普通の文字ではなかったんですね。ありがとうございました。

場合わけには65535使いたいと思います!
97デフォルトの名無しさん:2012/04/21(土) 14:06:13.29
残業代が基本給を超えるって1日何時間残業してるんだ?
98デフォルトの名無しさん:2012/04/21(土) 15:08:16.80
javaの入門書でおすすめ教えてください。
プログラミングはcを少しかじったくらい。
99デフォルトの名無しさん:2012/04/21(土) 15:43:49.97
Cがわかってるなら「入門書」は必要ない
100デフォルトの名無しさん:2012/04/21(土) 20:34:03.44
少しかじったくらい
としか書いてないのに馬鹿は日本語も読めないのか
101デフォルトの名無しさん:2012/04/21(土) 20:39:15.69
何もわからんのに
かじったとか言う方が悪い
102デフォルトの名無しさん:2012/04/21(土) 21:06:45.55
>>100
Cをかじった程度ってことは、とりあえず文法や構造体、ポインタの扱い方は理解してて
ソースファイルの分割も出来るってことだろ
その程度も出来ないんだったら「まったくわかりません」って書いてくれないと
103デフォルトの名無しさん:2012/04/21(土) 21:27:37.12
>>102
禿同
104デフォルトの名無しさん:2012/04/21(土) 21:31:43.47
オレはかじったことあるっていう言葉に受ける印象は
配列が使えたり単純なソートができたり程度という感覚かな。

ちなみにお前ら的にjavaだとどの程度のレベルがかじったなの?
105デフォルトの名無しさん:2012/04/21(土) 21:41:49.15
解らないところが出てきたら
source読むようになるぐらい。
106デフォルトの名無しさん:2012/04/21(土) 21:44:54.65
ソートとか以前に
・nullと"null"の違い
・空文字列って?
は理解しといてもらいたいかな。
こんなことも知らない派遣クンとJava知らない主任が組んだら
あ〜ら最凶のプロジェクトに・・・
って事例が現在進行中。
107デフォルトの名無しさん:2012/04/21(土) 22:03:38.97
馬鹿には無理
108デフォルトの名無しさん:2012/04/21(土) 22:09:40.34
>>104
Javaに限らないけど、基本的なアルゴリズムとデータ構造を自分で実装できるレベルなら
かじったと言ってもいいんじゃね
109デフォルトの名無しさん:2012/04/21(土) 23:09:25.39
こんな糞スレで質問しようと思う馬鹿には無理
110デフォルトの名無しさん:2012/04/22(日) 00:26:22.82
for (::)
System.out.println("馬鹿");
111デフォルトの名無しさん:2012/04/22(日) 07:50:11.13
下級戦士はよく吠えるな
112デフォルトの名無しさん:2012/04/22(日) 08:29:18.08

           ∧_∧        >>107
    (( 〜/⌒<丶`Д´>  >>109
        (/ーし'ー-J       >>110
113デフォルトの名無しさん:2012/04/22(日) 10:23:06.27
馬鹿には無理
114デフォルトの名無しさん:2012/04/22(日) 13:02:50.58
〉〉98だけど説明不足でした
cは〉〉102の言うことは理解してるくらいのレベルです

115デフォルトの名無しさん:2012/04/22(日) 13:03:52.85
安価ミスったww
116デフォルトの名無しさん:2012/04/22(日) 13:40:08.80
なら、入門書なんか読んでもつまんねーよ。

「変数は箱です」からはじまって、うだうだやって、
ディレクトリの再帰検索やって終わり、で2000円。

解説サイト読んでから言語仕様読んで、
そしたら、Apache Commons Langあたりの適当なライブラリの
ソースコードDLして読めばいいよ。
117デフォルトの名無しさん:2012/04/22(日) 13:53:26.64
このスレ転載して、おすすめの本の広告つけようとしてるアフィサイトなんじゃね?
118ora!:2012/04/22(日) 13:57:42.66
>>76
[Windows ベースのコンピューターでプログラムをインストールまたはアンインストールする際の問題のトラブルシューティング方法]ってのは参考にならないかな?
http://support.microsoft.com/kb/2438651/ja
119ora!:2012/04/22(日) 15:03:03.94
>>98
[Java / プログラミングセミナー]はどうでしょう?
http://www.acroquest.co.jp/webworkshop/index.html
120ora!:2012/04/22(日) 15:26:55.65
>>98
[Javaチュートリアル]とか?
http://docs.oracle.com/cd/E26537_01/tutorial/index.html
121デフォルトの名無しさん:2012/04/22(日) 19:03:51.74
C言語でfwrite((char*)ptr,sizeof(double),1,fp)
で書きだしたバイナリの8バイトを
JavaでDataInputStream::readDoubleあるいはreadFloat
で読もうとしているのですが、成功しません。(ハードウェアは同じです)
・数値のフォーマットをあわせる
・ファイル末尾に改行がないと読み込みエラーが出る
の2点について、Java側で何とかしないといけないのですが、どのへんを調べれば分かりますか?
122デフォルトの名無しさん:2012/04/22(日) 19:30:41.31
>>121
エンディアン間違ってるだけなら、
value = in.readDouble();
value = Double.longBitsToDouble(Long.reverseBytes(Double.doubleToLongBits(value)));
で変換できる。最初から正しいエンディアンで読み込む方が楽だろうけど。
C言語のdoubleはフォーマットは処理系依存だったような気がするから、
そっちも調べてみるべきかも。NaNとか無限大も変換したいなら特に。

ファイル末尾に改行云々は何したいのかわからん。
改行を発見できないとエラーにするプログラムが書きたいのか、
意図しない「改行が発見できないよエラー」が出て困ってるのか。
123デフォルトの名無しさん:2012/04/22(日) 19:50:45.47
>>122
ありがとうございます!動きました。
エンディアンって、Cで単純なダンプをすると逆になってるってことですか?
これだとjavaに負荷がかかりそうですね。

java.io.EOFExceptionが最後にトラップされてるのですが、
すみません、改行かどうかは分かりません。
例外処理のしかたがよくわからないもので、とりあえず放置します。
124デフォルトの名無しさん:2012/04/22(日) 19:54:52.02
少し調べましたが、C側のエンディアンが環境依存なんですね。
こんな基本的なところでズレているとは・・・
125デフォルトの名無しさん:2012/04/22(日) 21:45:27.30
まさに馬鹿には無理w
126デフォルトの名無しさん:2012/04/22(日) 21:49:17.19
質問です。

HttpURLConnectionを使ったサイトの取得時に
InputStream、InputStreamReader、BufferedReaderを使って処理しているのですが
処理中にエラー(ネット接続が切れたor処理のバグ)が起きたときにきちんと閉じる処理をしようとしたら
閉じる処理自体にもtry-catchが必要とeclipseさんに言われてこんな感じになってしまいました。

try{
  処理省略
}catch(Exception e){
  httpURLConnection.disconnect();

  try {
    inputStream.close();
  } catch (Exception e2) {
  }

  try {
    inputStreamReader.close();
  } catch (Exception e3) {
  }

  try {
    bufferedReader.close();
  } catch (Exception e4) {
  }
}
自分でもおかしいと思うのですが閉じる処理は
httpURLConnection、inputStream、inputStreamReader、bufferedReader
のうちどれかだけをすればいいのでしょうか?やっぱり全部必要でしょうか?
127デフォルトの名無しさん:2012/04/22(日) 22:27:22.13
覚え始めなんだけれども
どんなものから作っていったらいい?
少しづつステップアップしていきたい
128デフォルトの名無しさん:2012/04/22(日) 22:27:56.63
>>126
jdk1.7以降がターゲットなら、素直に try with resources 使った方がいい。
try (InputStream in = connection.getInputStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//処理
}
みたいな奴。

1.6以前もターゲットの場合は、
public static void closeQuietly(Closeable c) {
try { c.close(); } catch (IOException e) { /*無視する*/ }
}
みたいなメソッド作っておいて呼ぶと、いくらかスッキリする。

あと、close は基本的に連鎖的に close するのでイチイチ全部呼ぶ必要はない。
どうしても close の連鎖が切れるのが心配なら
大元の(というか直接リソース握ってる)InputStream だけを close しときゃいい。
129デフォルトの名無しさん:2012/04/22(日) 23:17:24.31
>>127
どんなものを作りたいと思ってJavaを勉強しはじめたの?
130デフォルトの名無しさん:2012/04/22(日) 23:56:30.36
>>127
自分がよく使うソフトか、よく使う作業の補助になるようなので、出来るだけ小さいプログラムがいい。
毎日そのプログラムに触るぐらいじゃないと良くならないし、何度も作り直せるぐらい小さくないと、設計が上達しない。
131デフォルトの名無しさん:2012/04/23(月) 00:38:44.52
初心者は自分のレベルをまず説明しよう。

(他のプログラム言語はバリバリやってるけど)javaは初心者。
プログラム自体初心者。

まぁ、他の言語でも今まで作ってきたんならこんな質問はしないと思うけど、
そうすると別にjavaの質問ではないしな。
132デフォルトの名無しさん:2012/04/23(月) 02:36:25.90
<td class="abc" align="center">food</td>
のfood部分のみをJsoup取り出したいのですが...
どなたかご教授お願いします。
133デフォルトの名無しさん:2012/04/23(月) 09:33:32.53
小数点以下2桁までで切り捨てるにはどうすればいいでしょうか?
134デフォルトの名無しさん:2012/04/23(月) 13:43:37.88
135デフォルトの名無しさん:2012/04/23(月) 16:11:59.04
>>133
負の値や精度考慮しない手抜きでいいなら
value = Math.floor(value * 100) / 100;

自前部分のコード量減らしたいなら
BigDecimal val = new BigDecimal(value).setScale(2, BigDecimal.ROUND_DOWN);
136デフォルトの名無しさん:2012/04/23(月) 16:41:56.11
>>134
>>135
ありが10
137デフォルトの名無しさん:2012/04/23(月) 17:41:13.95
>>132
for (Element node : document.select("td.abc[align=center]")) {
System.out.println(node.ownText());
}
138デフォルトの名無しさん:2012/04/23(月) 20:07:39.92
>>129
最終的には簡単なゲーム
>>130
なるほど
ランチャーとかファイラーみたいなのつくってみます、何ヶ月かかるか分からんけど
139デフォルトの名無しさん:2012/04/23(月) 21:13:21.86
ゲームならそんなの作らずに「android ゲーム 作る」とかで検索して解説してあるとおりに適当に作ってみればいいよ
140デフォルトの名無しさん:2012/04/23(月) 23:18:59.76
質問です。
目的の実行結果のように,
・英語,数学,国語の各科目の試験受験者数をキーボード入力
・各科目の受験者の名前と点数をキーボード入力
・各科目の入力データ,平均点,最高点,最高点獲得者の出力
を行うソースファイルを作成してください.

目的の実行結果

C:\
[英語の受験者数を入力してください] > 2
[数学の受験者数を入力してください] > 2
[国語の受験者数を入力してください] > 4
[英語の1人目の受験者の名前を入力してください] > 鈴木
[鈴木さんの英語の点数を入力してください] > 95
[英語の2人目の受験者の名前を入力してください] > 三枝
[三枝さんの英語の点数を入力してください] > 80
[数学の1人目の受験者の名前を入力してください] > 西田
141デフォルトの名無しさん:2012/04/23(月) 23:19:21.45
続き
  [西田さんの数学の点数を入力してください] > 88
[数学の2人目の受験者の名前を入力してください] > 野田
[野田さんの数学の点数を入力してください] > 95
[国語の1人目の受験者の名前を入力してください] > 鈴木
[鈴木さんの国語の点数を入力してください] > 92
[国語の2人目の受験者の名前を入力してください] > 三枝
[三枝さんの国語の点数を入力してください] > 95
[国語の3人目の受験者の名前を入力してください] > 西田
[西田さんの国語の点数を入力してください] > 95
[国語の4人目の受験者の名前を入力してください] > 野田
[野田さんの国語の点数を入力してください] > 87
入力された試験結果は以下のとおりです
英語鈴木さん:95点三枝さん:80点
英語の平均点は87.5点です
英語の最高点は95点です
英語の最高点獲得者は鈴木さんです
数学西田さん:88点野田さん:95点
数学の平均点は91.5点です
数学の最高点は95点です
数学の最高点獲得者は野田さんです
国語鈴木さん:92点三枝さん:95点西田さん:95点野田さん:87点
国語の平均点は92.25点です
国語の最高点は95点です
国語の最高点獲得者は三枝さんと西田さんです
142デフォルトの名無しさん:2012/04/23(月) 23:23:17.34
凄い釣り師がキタ!
143デフォルトの名無しさん:2012/04/24(火) 00:01:08.84
>>137
助かりました、本当にありがとうございます。
144デフォルトの名無しさん:2012/04/24(火) 00:05:11.91
俺も>>127みたいな感じなんだけど、
minecraftのmodを作りたいという変な理由でjava勉強し始めたんだけど、

最初どういうふうに勉強して、どういうふうにプログラムを作っていけばいいのか教えて下さい。
145デフォルトの名無しさん:2012/04/24(火) 00:36:56.47
とりあえず文法を憶えたらググってMODの作り方を勉強
あとは他のMODのソースとかあればそれを参考にしたり試行錯誤で作っていく
146デフォルトの名無しさん:2012/04/24(火) 00:59:10.37
>>144
最初は他の言語の方がいいと思うけどね。
正直javaはあんまり言語仕様やとりまく環境としては良くないから。
147デフォルトの名無しさん:2012/04/24(火) 01:05:49.73
>>145
他のMODのソース見るのは勉強になりそうかな? やってみます。

>>146
学校ではBASICやってます。 java難しいです。
148デフォルトの名無しさん:2012/04/24(火) 01:29:22.11
環境とか言語仕様とか言ってたら、
なにも出来ないと思うけどな。
あ、だからなにも出来てないのか。
149デフォルトの名無しさん:2012/04/24(火) 01:54:57.18
>>140
Javaは始めて3日くらいだけど、こんなもんでいいのか?
http://pastebin.com/V1zMcE84

もっといい書き方誰か教えてください
150デフォルトの名無しさん:2012/04/24(火) 06:00:35.05
うざい
151デフォルトの名無しさん:2012/04/24(火) 13:54:18.80
パッケージ名なんですが、みなさんどんな感じでわけてます?
どんなに小規模のアプリケーションでも、
[自分のドメイン名].[アプリケーションの名前].[クラス]ってやってます?
それとも
[自分のドメイン名].[アプリケーションの名前のクラス]みたいにいきなり置いてます?
152デフォルトの名無しさん:2012/04/24(火) 14:10:56.76
「アプリケーションの名前」 っつーか、用途じゃね?
153デフォルトの名無しさん:2012/04/24(火) 14:11:30.22
クラスファイル1個ぐらいの小規模アプリだったらデフォルトパッケージに置いとく。
154デフォルトの名無しさん:2012/04/24(火) 14:15:42.24
>>152
あ、なんか書き方おかしかったですが、パッケージをそのアプリケーション専用の作るか、作らないかって質問でした。

>>153
ありがとうございます。
よく考えたら、全部が全部パッケージに分類しなくてもいいのか。
155デフォルトの名無しさん:2012/04/24(火) 16:57:24.35
誰か助けて・・・
156デフォルトの名無しさん:2012/04/24(火) 17:04:02.20
知らんがな
157デフォルトの名無しさん:2012/04/24(火) 18:53:41.48
漏れは自分のドメイン名は恥ずかしいので付けてない
158デフォルトの名無しさん:2012/04/24(火) 20:53:26.36
JarファイルA、B、Cが有ったとして、
AはX-1.0でないと動かない。
BはX-2.0で無いと動かない。
X-1.0とX-2.0の仕様は部分的に非互換で部分的に互換。
つまり似ている部分は有るが共存はできない。
こういう場合はどうすれば…
159デフォルトの名無しさん:2012/04/24(火) 20:54:00.95
○ JarファイルA、B、Xがが有ったとして、
160デフォルトの名無しさん:2012/04/24(火) 21:21:32.44
ggrks
161デフォルトの名無しさん:2012/04/24(火) 22:17:17.07
複数のXでAとBの開発・テストを平行して行いたいのならMaven覚えればいい

A,B両方を使うDがどっちのXを参照すべきかは他人に判断できない問題
162デフォルトの名無しさん:2012/04/24(火) 22:48:16.33
よくFactoryでもなければ、ClassでもないのにstaticでnewInstance();を定義しているクラスがありますが、
あれは何の意義があるんでしょうか?new Type();と比べ何のメリットがあるんでしょう?
163デフォルトの名無しさん:2012/04/24(火) 22:51:36.32
1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い
2 やってみたかっただけ
3 知能に問題がある人が書いた
164デフォルトの名無しさん:2012/04/25(水) 06:08:05.14
>>163
> 1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い
なら、コンストラクタ不可視にすんだろ。

> 2 やってみたかっただけ
> 3 知能に問題がある人が書いた
これはあるある

4 内部でうまいことキャッシュしてやるからnewInstance使え。キャッシュとか
   別にいらねーなら勝手にnewしろ。そのかわり自分で面倒見ろよ

大抵は3か4だろう。2は殴れ。3は殴るな後が怖い。
165デフォルトの名無しさん:2012/04/25(水) 06:52:14.81
死ねよ雑魚が
166デフォルトの名無しさん:2012/04/25(水) 08:52:47.69
自殺宣言?
167デフォルトの名無しさん:2012/04/25(水) 11:52:19.93
「自分は頭が良くて詳しいです」的な自己満足レスの典型だぞ。
相手は超初心者なんだからもう少し優しく教えてあげないと。
さもなくばスルーでOK
168デフォルトの名無しさん:2012/04/25(水) 12:08:04.14
>>162
staticファクトリーメソッドで調べてごらん
169デフォルトの名無しさん:2012/04/25(水) 12:50:03.47
断る
170デフォルトの名無しさん:2012/04/25(水) 14:15:45.83
あ゛?なめてんのか?
171デフォルトの名無しさん:2012/04/25(水) 14:58:43.99
>>162
シングルトン
インスタンスの数を常に1つにしたい場合に使う
172デフォルトの名無しさん:2012/04/25(水) 15:00:37.73
Java6u31の総称型の質問です。

class Foo<T extends Hoge> {
public int insert(List<T> entitylist) { /* ... */ }
public int insert(List<Long> primaryKeyList) { /* ... */ }
}

とあるとき、java.lang.LongはHogeのサブクラスではないのに同じメソッドイレイジャだとコンパイルエラーになります。
総称型のextendsによる限定は考慮されない仕様なのでしょうか。
173デフォルトの名無しさん:2012/04/25(水) 15:16:58.70
過去と互換性のあるレイヤではパラメタ型全部消えるのでerasure。
174デフォルトの名無しさん:2012/04/25(水) 16:18:00.39
コンパイルの過程で総称型の情報が消えてしまい、
List<Foo>もList<Baa>もただのListとなるから同じとみなされるわけですね。

erasureの動きが少し理解できました。
ありがとうございました。
175デフォルトの名無しさん:2012/04/25(水) 18:46:45.00
java6 update16ください
176デフォルトの名無しさん:2012/04/25(水) 19:27:17.23
>>171
シングルトンはnewInstance()なんて名前普通つかわんだろ
177ora!:2012/04/25(水) 19:52:13.02
>>175
[Java の旧バージョンと関連文書の入手先]
http://www.java.com/ja/download/faq/other_jreversions.xml
178デフォルトの名無しさん:2012/04/25(水) 20:07:39.23
>>167
死ねよ
179デフォルトの名無しさん:2012/04/26(木) 00:27:03.13
シングルトンはgetInstance()だな
>>162がよく見るソースコード見てみたいものだ
180デフォルトの名無しさん:2012/04/26(木) 00:37:19.91
5 今後プリミティブ型廃止の流れがきた際にnew演算子を使っていた不幸な人たちを少しでも減らしたい願いの表れ
181デフォルトの名無しさん:2012/04/26(木) 01:10:26.08
>>172
Javaの型パラメータは、コンパイル時に除去されてObject型になってしまうのだよ。
この性質のことをイレイジャという。
そんなわけで、おまえさんが例示した2つのメソッドは同じシグネチャになってしまいコンパイルエラーになるわけだ。
182デフォルトの名無しさん:2012/04/26(木) 02:14:23.87
抽象戦隊!イレイジャー!

よし覚えた。
183デフォルトの名無しさん:2012/04/26(木) 03:54:24.16
私的用プログラムを高速化したいので、javaからsse1,sse2(amd64)にアクセスしたいんですが、JNI,JNAを使ってCでブリッジを書かないとやっぱり無理でしょうか。
184デフォルトの名無しさん:2012/04/26(木) 12:32:33.55
わからない
俺にきくなよ
185デフォルトの名無しさん:2012/04/26(木) 13:07:39.15
知らないならレスしないでください
うざいだけです
186デフォルトの名無しさん:2012/04/26(木) 18:33:31.14
JNI,JNAを使ってCでブリッジを書けばsse1,sse2(amd64)にアクセスできますよ

187デフォルトの名無しさん:2012/04/26(木) 21:43:41.28
sseの高速化メリットよりメソッド呼び出すコストの方が高そうだな
188デフォルトの名無しさん:2012/04/26(木) 21:45:54.50
>>168
調べましたけど何でstaticなんでしょうね。
インスタンスメソッドにしたって大したコストにならないでしょうに。
189デフォルトの名無しさん:2012/04/26(木) 22:10:27.71
>>187
アーキテクチャにもよるけど、JNI1回で10-50msぐらいかかる。
SSE使うだけのジョークアプリになるね。
190デフォルトの名無しさん:2012/04/26(木) 22:27:00.05
だなw
191デフォルトの名無しさん:2012/04/26(木) 22:43:23.68
今のJVMって最適化オプションでSSE使ってくれるだろ
あくまで俺が使ったときの一例の話だけどgccの自動ベクトル化より速かった
192デフォルトの名無しさん:2012/04/27(金) 00:07:33.40
Romeを利用してRSSを配信したいのですが、enclosureタグが出力できません。

List<SyndEnclosure> enclist = new ArrayList<SyndEnclosure>();
SyndEnclosure enc = new SyndEnclosureImpl();

enc.setUrl(image_path.toString());
enc.setType("image/jpeg");
enc.setLength(image_file.length());
enclist.add(enc);
entry.setEnclosures(enclist);

どこか問題ありますでしょうか・・・
193デフォルトの名無しさん:2012/04/27(金) 00:08:54.32
sse(mmx),amd64は、java8で実装される予定のラムダとbulk dataを利用して使おうと考えてます。
java8からはmulticoreの活用はもちろん基本的に内部イテレータ仕様がメインになるようなので、java5 generics typeの時と同じく次回の改訂はjava languagesのパラダイムシフトになるかなと思います。
194デフォルトの名無しさん:2012/04/27(金) 00:39:51.99
意味がわからん
ラムダ使った並列化はMIMDだろ
195デフォルトの名無しさん:2012/04/27(金) 01:06:27.15
起動したクラスって取得できますか?
public class SuperClass{
public static void main(String[] args){
}
}

public class SubClass extends SuperClass{
}

こんな感じで、SubClassで起動した場合に
mainの中で起動したクラス(SubClass)を取得したいのです。
196デフォルトの名無しさん:2012/04/27(金) 06:51:13.43
>>193
        > 9年ぶりに言語仕様を改訂予定
http://ja.wikipedia.org/wiki/Java#Java_SE_8
197デフォルトの名無しさん:2012/04/27(金) 08:57:14.77
↓の状態で実行すると数字の重複をしてしまいます。
乱数の重複を防ぎたいのですがどうすれば良いですか?
ネットでいろいろな方法を調べたのですが、どれも上手くいきませんでした。

import lib.Input;

public class Sample1{
public static void main(String[] args){
int a = Input.getInt("何人に配りますか?(2〜5)");
for (int i=1;i<=a;i++){
System.out.println(i+"人目の手札は以下のとおりです.");
System.out.println(cards()+""+cards()+""+cards()+""+cards()+""+cards());
}
}
public static String cards(){
String[] a = {"ハート","クラブ","ダイヤ","スペード"};
int b= (int)((Math.random()*13)+1);
int c= (int)(Math.random()*4);
int c_b = (int)(Math.random()*53);
String d = a[c] + "の" + b +" ";
if(c_b==0){
d="ジョーカー";
}



return d;
}
}
198デフォルトの名無しさん:2012/04/27(金) 08:59:40.72
>>197
あらかじめ使えるカードの一覧を作っておいて使用済みのチェックを入れる。
199デフォルトの名無しさん:2012/04/27(金) 09:54:25.99
>>196
間違いだから削除した
200デフォルトの名無しさん:2012/04/27(金) 11:08:27.44
>>197
配列に52枚のカードを入れて、それをランダムにシャッフルして、先頭から順にめくっていく
201デフォルトの名無しさん:2012/04/27(金) 11:21:05.05
>>197
重複しない膨大な整数系列を高速省メモリで吐いてくれるアルゴリズムの
疑似乱数クラスは、探せばある。

トランプにはオーバースペックか。
202デフォルトの名無しさん:2012/04/27(金) 11:21:12.39
>>197
http://sasuke.main.jp/java.htmlに「トランプのシャッフル」ってのがある
203デフォルトの名無しさん:2012/04/27(金) 12:36:20.05
Javaを勉強し始めたばかりで用語について混乱しているので教えて下さい。

クラスをコントラクトすること=インスタンス化(クラス名 変数名=new クラス名();)
インスタンス化された変数をインスタンス
メソッドや変数をまとめて1つのクラスとして独立させることをカプセル化

このような解釈であってますでしょうか。。。
初歩的な質問で申し訳ないのですがサイトなどでの説明がわかりにくかったもので、
誤った理解をしていればご指摘頂ければ幸いです。
204デフォルトの名無しさん:2012/04/27(金) 14:36:48.75
>>203

【インスタンス化】
● クラスからオブジェクトを作ること。
● コンストラクタの呼び出しによって、メモリ上に、新たに生成される
    オブジェクト用のメモリの領域を確保すること。
【カプセル化】
● クラスの外部からはフィールドを直接操作できないようにして、必ずメソッドを
    経由してフィールドを間接的に操作するようにすること。
205デフォルトの名無しさん:2012/04/27(金) 16:13:09.20
Java7u4 Java6u32 リリース
206デフォルトの名無しさん:2012/04/27(金) 17:48:04.46
>>204
ありがとうございます、
207デフォルトの名無しさん:2012/04/27(金) 18:13:03.93
>>195
public class SuperClass {
static Class subclass=SuperClass.class;
public static void main(String[] args) {
System.out.println(subclass.getName());
}
}

public class SubClass extends SuperClass{
static {
subclass = SubClass.class;
}
}

もしくは
public class SuperClass {
public static void main(String[] args) {
todo(SuperClass.class);
}
public static void todo(Class subclass){
System.out.println(subclass.getName());
}
}

public class SubClass extends SuperClass {
public static void main(String[] args) {
todo(SubClass.class);
}
}
208デフォルトの名無しさん:2012/04/27(金) 18:46:54.53
>>206
いえいえ
209デフォルトの名無しさん:2012/04/27(金) 19:14:47.21
>>198
>>200
理論的には分かりやすい説明ですが、ググったりしたのですが具体的なやり方がぜんぜんわかりません。

210デフォルトの名無しさん:2012/04/27(金) 19:42:56.25
1.カードの枚数分の配列を作る。
2.乱数を2つ発生させて、2つの数字の指し示す配列の中身を入れ替える。
3.気が済むまで2を繰り返す。

とかなら簡単じゃないかな
211デフォルトの名無しさん:2012/04/27(金) 19:47:39.74
>>209
出来合いのなら→>>202のやつ
http://sasuke.main.jp/toranpu.html
212デフォルトの名無しさん:2012/04/27(金) 20:13:07.35
ArrayListに突っ込んでCollections#shuffle()を使えばいいんじゃね
213デフォルトの名無しさん:2012/04/27(金) 20:49:12.14
馬鹿には無理
214デフォルトの名無しさん:2012/04/27(金) 22:35:00.08
馬鹿にも限度があります><
215デフォルトの名無しさん:2012/04/28(土) 00:21:40.44
トランプの性質上、ジョーカーは例外として
同じものがないのだよ
java.utilで使えそうなインタフェースがSet

こんな感じで、作るものの本質を知ることからはじめるのがプログラミング
制御したい物をどのように組み立てるのか、よく考えるところからはじめよう

これは言語云々の話じゃないけど、心の片隅にでもとりあえず置いてほしい

フィールドとしてSet<Card> cardSet = new 何とかSet<Card>();
cardSetから取り出されたものもさらに別のSetにぶち込む
そのときにコレクション.ソート機能をつかってコンパレートする
イメージは伝わったかな
216デフォルトの名無しさん:2012/04/28(土) 00:27:37.12
ちなみにCardは
int number
enum Type {
スペード("スペードマーク")、ダイヤ("ダイヤ");
final String マーク;
Type (String マーク) {
初期化
}
}
必要があればenumコンストラクタのフィールドをどんどん追加すればいいのかな
enum内にstatic なメソッドも持たせられるのでいろいろ使い道があると思う
217デフォルトの名無しさん:2012/04/28(土) 00:34:03.06
Listを2つ用意(A,Bとする)してAに1〜52を格納,Bは空
0〜51の乱数を発生させ得られた数番目の要素をAから削除しBに追加
乱数の範囲を1減らして↑を繰り返す
218デフォルトの名無しさん:2012/04/28(土) 02:14:40.50
ふーん
219デフォルトの名無しさん:2012/04/28(土) 09:50:03.85
>>197
>>200の方法をとるのは後ろからになってるけどざっと実装してみた。参考にどうぞ。
import java.util.Random;
import java.util.Arrays;
public class RandomSet{
public static void main(String[] args){
//0 〜 LIMIT-1 の重複しないint配列を用意
int LIMIT = 52;
int[] rand = new int[LIMIT];
for(int i=0;i<LIMIT;i++){
rand[i] = i;
}
//配列をシャッフルする
Random r = new Random();
int temp = -1;
for(int i=LIMIT;i>0;i--){
int index = r.nextInt(i);
temp = rand[index];
rand[index] = rand[i-1];
rand[i-1] = temp;
}
//出力
System.out.println("0 〜 "+(LIMIT-1)+" までの重複しない乱数列");
for(int i=1;i<=LIMIT;i++){
System.out.printf("%3d",rand[i-1]);
if(i%10==0){
System.out.println();
}
}
System.out.println();
}
}
220デフォルトの名無しさん:2012/04/28(土) 09:59:28.02
なんだこの役に立たないサンプルは
221デフォルトの名無しさん:2012/04/28(土) 10:58:35.94
配列の添え字が0になるのがそんなに嫌か
222デフォルトの名無しさん:2012/04/28(土) 11:20:25.29
何言ってんだコイツw
223デフォルトの名無しさん:2012/04/28(土) 11:45:58.54
なにこのドヤ顔ww
224デフォルトの名無しさん:2012/04/28(土) 12:17:46.13
重複しない乱数をどうやって実装するかによって性格が分かりそうだなww
225デフォルトの名無しさん:2012/04/28(土) 12:36:48.51
意味不明
226デフォルトの名無しさん:2012/04/28(土) 13:20:59.29
あいかわらずアホなスレですな
227デフォルトの名無しさん:2012/04/28(土) 15:01:48.46
すみません、用語についての質問です。
セッター、ゲッターについては以下のような解釈であってますでしょうか。

セッター:異なるクラスのprivateな変数に対し値をセットするためのメソッド
ゲッター:異なるクラスのprivateな変数の値を取得するためのメソッド
228デフォルトの名無しさん:2012/04/28(土) 15:09:56.20
>>227
ゲッター:主人公側のロボット
セッター:敵のロボット、実は主人公のオヤジが乗ってた
229デフォルトの名無しさん:2012/04/28(土) 15:14:28.47
>>227  そう。

フィールド自身は private 宣言で、
フィールドアクセス用のメソッド は public 宣言だよ。
230デフォルトの名無しさん:2012/04/28(土) 15:19:59.70
>>229
必ずしもそうとは限らんけどな
Set/Getはprotectedかもしれないし、
Set/Getのあるクラス内にフィールドが存在しないかもしれない。
231デフォルトの名無しさん:2012/04/28(土) 15:23:33.56
>>229
ありがとうございます!
232デフォルトの名無しさん:2012/04/28(土) 15:23:33.56
屁理屈乙
233デフォルトの名無しさん:2012/04/28(土) 15:28:20.83
>>230
>Set/Getはprotectedかもしれない
例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?

>Set/Getのあるクラス内にフィールドが存在しないかもしれない
これについては良くわからないのですが、フィールドが存在しないクラスにSet/Getを用意する必要性が出てくることもあるということでしょうか>
234デフォルトの名無しさん:2012/04/28(土) 15:30:50.94
常に単純にフィールドの読み書きをするだけだったらpublicフィールドでいい。
わざわざメソッドを通すなんて面倒なことをするのは、
後で実装を変更するため。
直接フィールドを持たないような実装に変更することもありうる。
235デフォルトの名無しさん:2012/04/28(土) 15:35:09.45
例えば日時を管理するクラスに曜日フィールドはなくてもいいが、
日時から曜日を計算して返す曜日ゲッターがあってもいい。
236デフォルトの名無しさん:2012/04/28(土) 15:36:50.64
そうそう

>>233    >>230 の後半はカン違いと思われ…
237デフォルトの名無しさん:2012/04/28(土) 15:44:33.90
>>234
Set/Getがメソッドである本質は、物理的なコードの書き換えというより
継承での実行時書き換えのためだろ。

>>233
下についてだが、どこまで素人かしらんけど、
Javaがある程度解るならこんな感じ。
DelivedBはExampleBaseを使える様に
getValue()を用意してるけど、DelivedBとしては
100以外返す必要がないないんで、フィールドをもたない。

interface ExampleBase
{
   int getValue();
}
class DelivedA implements ExampleBase
{
   private int value;
   public int getValue()
   {
      return value;
   }
}
class DelivedB implements ExampleBase
{
   public int getValue()
   {
      return 100;
   }
}
238デフォルトの名無しさん:2012/04/28(土) 15:48:43.47
>>233
>例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
いや、アクセス権限は関係ないというはなし。別にprivateにしたってset〜()/get〜という形でメソッド定義してりゃ
セッター、ゲッターと呼ばれる。アクセッサーと呼ばれるかどうかは知らんけどな。
239デフォルトの名無しさん:2012/04/28(土) 16:07:23.94
皆さんたくさんのご意見ありがとうございます。
私はVC、VBの経験はありますがJAVA(オブジェクト指向)はまだ記述方法等を順に学んでいる段階のため理解が浅く、
ご教授頂いた内容を理解しきれない部分があります。

とりあえず今の段階ではset〜()、get〜()とネーミングされた、値を設定・取得するためのメソッドという理解に留めておこうと思います。
240デフォルトの名無しさん:2012/04/28(土) 16:11:27.67
>>239
蛇足だが、現実でVCの経験があると言うのは控えた方がいい。
VCでC言語をやっていたぐらいにしておかないと
ハイレベルな作業頼まれてトラブる事が有るぞ
241デフォルトの名無しさん:2012/04/28(土) 16:23:26.61
初心者にドヤ顔www
242デフォルトの名無しさん:2012/04/28(土) 16:24:51.27
そんなにマイクロソフトに染まっちゃているならいっそのことドットネットの方をやったらどうですか?
243デフォルトの名無しさん:2012/04/28(土) 16:37:35.10
だよなぁ
普通VCやってたって言ったら日本では最高レベルのプログラマの称号だし。
VCを本当にやってた人間ならJavaなんて学ぶことなく使えるし
244デフォルトの名無しさん:2012/04/28(土) 16:42:33.31
日本で最高に苦労していたプログラマって意味ですよね?
245デフォルトの名無しさん:2012/04/28(土) 16:46:59.66
C++つかってる様な仕事で締切りに追われて苦労してるようなとこあんの?
うちとか約1年ぐらい掛けてゆっくり1つの製品作ってたりするけど。
C++で製品開発はあっても、受注なんてほとんど無くね?
246デフォルトの名無しさん:2012/04/28(土) 16:48:27.94
VC++とC++(gcc)はまったく別物ですよ。
247デフォルトの名無しさん:2012/04/28(土) 16:52:37.34
>VC++とC++(gcc)
そもそも、この書き方がおかしい
Microsoft (R) C/C++ Optimizing Compilerとgccを比較してるのか?
統合開発環境全体とgccというコンパイラ比較してんのか?
248デフォルトの名無しさん:2012/04/28(土) 16:58:32.40
ツマラン
249デフォルトの名無しさん:2012/04/28(土) 16:58:51.29
>>245
C++ のベテランには、C$ は使うが Java は意地でも使わないって人もいるね。
250デフォルトの名無しさん:2012/04/28(土) 17:00:14.50
×  C$
○  C#
251デフォルトの名無しさん:2012/04/28(土) 17:03:22.49
ところでC++のベテランさんは得意のC++で何ができるんですか?
252デフォルトの名無しさん:2012/04/28(土) 17:03:36.69
ハンガーwwww どう見てもブーメランだろwwww
253デフォルトの名無しさん:2012/04/28(土) 17:03:53.43
MMDが作れる
254デフォルトの名無しさん:2012/04/28(土) 17:04:39.30
>>249
俺逆にC#の方をあんまり使わないわ
仕様が頻繁に変わる言語は追従するのが面倒といより、
今まで書いたコードがゴミになりそうで嫌。
そういういみで、PerlとかPHPも苦手。
使い捨て用にしか使わん。
255デフォルトの名無しさん:2012/04/28(土) 17:06:40.03
>>254
>仕様が頻繁に変わる言語

kwsk
256デフォルトの名無しさん:2012/04/28(土) 17:10:49.80
>>255
C#はC++が03から11になる間に4もバージョン上がったろ

ついでだがPerlは、Perl5からPerl6になって互換性なくなった
PHPはclassが予約語になった
257デフォルトの名無しさん:2012/04/28(土) 17:12:31.79
サンクス!
258デフォルトの名無しさん:2012/04/28(土) 17:17:31.11
どの言語でもだが予約語の追加は勘弁して欲しい
予約語ついかする言語とは深い付き合いしたくない
259デフォルトの名無しさん:2012/04/28(土) 17:32:13.51
>>256
javaだと2003あたりから2011(java7)まででいくつ上がったんでしたっけ?
260デフォルトの名無しさん:2012/04/28(土) 17:42:46.61
>>259
ライブラリや言語外はそれなりに更新されたけど、
言語自体はそんなに頻繁に更新されたか?
Java2からJava7の間で目立った変更があったのって
5のあたりぐらいじゃないか?
261デフォルトの名無しさん:2012/04/28(土) 17:45:24.57
実質は、1.2 〜 1.7 だし・・・
262デフォルトの名無しさん:2012/04/28(土) 17:49:45.25
推奨されないメソッドを使わなければそんなに困らないよね
263デフォルトの名無しさん:2012/04/28(土) 17:59:48.54
>>260
こんなチンコすれでドヤ顔なんかしてないで、もうちょっといろいろ勉強した方がいいと思いますよ。
264デフォルトの名無しさん:2012/04/28(土) 20:58:40.49
もうちょっといろいろ勉強した方がいいと思いますよ(ドヤ
265デフォルトの名無しさん:2012/04/28(土) 22:22:00.42
>>258
C#はコンテキストキーワード上等だからキーワード増えても予約語は増えず基本的に互換性は保たれる
Javaは予約語の追加をやった前例がある
266デフォルトの名無しさん:2012/04/28(土) 23:13:23.04
enumくらいだろ
267デフォルトの名無しさん:2012/04/28(土) 23:20:00.45
C++ のベテラン必死w
268デフォルトの名無しさん:2012/04/28(土) 23:21:18.63
assert
269デフォルトの名無しさん:2012/04/28(土) 23:27:20.34
enumとassertって実装前はconstと同じ予約じゃなかったんだっけ?
270デフォルトの名無しさん:2012/04/28(土) 23:35:36.89
>>269
うん違う
271デフォルトの名無しさん:2012/04/28(土) 23:37:34.41
新しいキーワードを無効にするコンパイラーオプションとかあったよな
新規追加だよ
272デフォルトの名無しさん:2012/04/28(土) 23:51:51.56
>>270
ありがと
273デフォルトの名無しさん:2012/04/28(土) 23:56:19.89
予約語なんてパッケージや名前空間に入れてしまえばいいのにな
どの言語もしないな

java.import java.import;
import java.int;
import java.class;
とか。

274デフォルトの名無しさん:2012/04/28(土) 23:58:00.33
assertが追加された予約語と感じる奴が
いったいどれだけいるのか
275デフォルトの名無しさん:2012/04/28(土) 23:59:32.37
名前空間とか考えず使えるから予約語なんだろ
276デフォルトの名無しさん:2012/04/29(日) 00:02:44.11
事実として予約語だからな
何と言おうが思いっきりbreaking changeだ
277デフォルトの名無しさん:2012/04/29(日) 00:04:28.54
>>275
別にそこに拘る必要ないだろ
予約語と表現するのが嫌なら別の名前でかまわないだろうし
278デフォルトの名無しさん:2012/04/29(日) 00:06:05.86
そういやキーワードという言い方があったな
279デフォルトの名無しさん:2012/04/29(日) 00:06:44.95
今日のキーワードは…
280デフォルトの名無しさん:2012/04/29(日) 00:10:24.73
予約語!
281デフォルトの名無しさん:2012/04/29(日) 00:10:50.81
おまえらassert使ってる?
282デフォルトの名無しさん:2012/04/29(日) 00:17:28.76
assertって何がしたかったんだろうな
融通利かなすぎだろ
結局のところ条件コンパイルなんだからC#のConditionalみたいなのにすればよかったのに
283 ◆QZaw55cn4c :2012/04/29(日) 00:24:31.72
>>282
アサーションを使わないというのは、ちょっと考えにくいのですけれどもね
284デフォルトの名無しさん:2012/04/29(日) 00:29:04.29
アサーションする=assert使う
とは限らないだろ
285デフォルトの名無しさん:2012/04/29(日) 00:31:18.92
開発環境やプロジェクトのポリシーと密接に関連してるからな
ライブラリでやるべきだった
286デフォルトの名無しさん:2012/04/29(日) 01:07:04.26
ライブラリじゃ不可能だから言語構文に入ったんでしょ
287デフォルトの名無しさん:2012/04/29(日) 01:11:35.59
いつか来た道
288デフォルトの名無しさん:2012/04/29(日) 01:11:52.28
enumの話しならともかく
assertはライブラリでも出来るだろ
289デフォルトの名無しさん:2012/04/29(日) 01:15:06.37
>>288
どうやって?
if文使ったりしたらデバッグモードじゃなくても判定が入るよ。
290デフォルトの名無しさん:2012/04/29(日) 01:28:44.92
>>273
javaだとannotationとして似たようなものは既に実装されています。
291デフォルトの名無しさん:2012/04/29(日) 01:30:47.88
浅学なおまえが思いつく程度に不十分な仕様なら、ネットにも大量に苦情が上がっている。
だから、おまえの不満はネットでは既に語り尽くされているか、全くの見当違いでしかない。
292デフォルトの名無しさん:2012/04/29(日) 01:34:07.54
苦情が上がらないだけなら
単に見向きもされてないだけの可能性もあるから
論理的な解釈とはいえないな
293デフォルトの名無しさん:2012/04/29(日) 01:35:05.85
294デフォルトの名無しさん:2012/04/29(日) 01:42:53.14
assertをlibraryって、えっと議論する必要あるの?
295デフォルトの名無しさん:2012/04/29(日) 01:44:06.30
馬鹿には無理
296デフォルトの名無しさん:2012/04/29(日) 01:49:43.09
意味はあるだろ
そもそも外す必要なんか出るのかっていう根本からして
297デフォルトの名無しさん:2012/04/29(日) 01:51:26.53
外す必要が無いならassertなんて要らないだろ
298デフォルトの名無しさん:2012/04/29(日) 01:52:04.11
C#はライブラリでやってるぞ
アノテーション使ってコンパイルオプションで外せるメソッドが定義できる
あれパクればいいんだよ
299デフォルトの名無しさん:2012/04/29(日) 01:57:07.57
assertだけ着脱できても正直小回り効かないよね
で、どうせ着脱しないしオーバロードたくさんある方が便利だよね
ってことでcommonsライブラリとかのassert使われちゃうっていう
300デフォルトの名無しさん:2012/04/29(日) 01:58:18.61
C#でDirectX(とOpenGLも)がまともに使えるならC#がいくらキモくてもまだ活路があるんです
301デフォルトの名無しさん:2012/04/29(日) 02:01:45.39
話それるがApache CommonsってJavaで書いててもC臭いから苦手。
302デフォルトの名無しさん:2012/04/29(日) 02:02:16.69
条件コンパイルは絶対やらないっていうんならそれを貫いてVMレベルで実装すればよかったのにな
あっさり覆して中途半端に条件コンパイルに手を出したからおかしくなった
どうせ条件コンパイルやるんならC#のようなやり方した方がずっと綺麗で有用
303デフォルトの名無しさん:2012/04/29(日) 02:04:03.57
commonsがC臭いってどの辺りだろ?
304デフォルトの名無しさん:2012/04/29(日) 02:13:19.25
java8でmodule仕様が入るので改善されますよ。
305デフォルトの名無しさん:2012/04/29(日) 02:24:14.37
>>303
Log4jやらCommons Validatorやら全般的に。
例えばLog4jならこんな感じ。メソッドでエラーレベルを変えてる。
Logger logger = Logger.getInstance(Sample.class.getName());
logger.info("This is info.");
logger.warn("This is warn.");
logger.error("This is error.");

メソッド固定なら、構造体と関数で書いたCのロガーと変わらないじゃん。
Javaでやるんだから、メソッドじゃなくオブジェクトでエラーレベルを変えてほしい。
オブジェクトを切り替えるだけでログレベルを一括で置き換えられるようになるでしょ。
Logger logger = InfoLogger.getInstance(Sample.class.getName());
logger.write("This is info.");
Logger logger = WarnLogger.getInstance(Sample.class.getName());
logger.write("This is warn.");
Logger logger = ErrorLogger.getInstance(Sample.class.getName());
logger.write("This is error.");

Validatorも似たような話で、mailValidate、tellValidateとかメソッドで別けるんじゃなく、
validateメソッドを持ったMailValidatorクラス、TellValidatorクラスという形で別ける方がJavaらしいと思う。
306デフォルトの名無しさん:2012/04/29(日) 02:27:06.43
でざぱた
307デフォルトの名無しさん:2012/04/29(日) 02:28:48.51
馬鹿には無理w
308デフォルトの名無しさん:2012/04/29(日) 02:30:58.56
>>305
Loggerが何を抽象化してるか考えると、そのままでいいと思う

sayHelloとsayGoodbyを持つPersonクラスの代わりに
HelloPersonとGoodbyPersonを用意しよう
っていう位には奇妙に感じるんだが。。
309デフォルトの名無しさん:2012/04/29(日) 02:32:05.40
javaではsingletonとstaticって相性が悪いんですか?
310デフォルトの名無しさん:2012/04/29(日) 02:33:05.73
>>308
ちょっと例が良くないなsayHello、sayGoodbyだったらhelloとgoodbyを引数に回すもの。
311デフォルトの名無しさん:2012/04/29(日) 02:33:36.16
>>305
Validatorはそうなってなかったっけ?
312デフォルトの名無しさん:2012/04/29(日) 02:35:29.38
>>310
sayHelloであってるよ
インスタンスが日本人なら「こんにちわ」
インスタンスがアメリカ人なら「やあマイキー」
ってら言わせるんだから
313デフォルトの名無しさん:2012/04/29(日) 02:36:02.80
>>308
java2d関係を使ったことがあるなら奇妙というほどでもない
314デフォルトの名無しさん:2012/04/29(日) 02:37:52.20
>>312
man.sey( new Hello() );
man.sey( new Goodby() );
これでも行けるでしょ。
315デフォルトの名無しさん:2012/04/29(日) 02:38:37.03
>>312
そこは"hello"と"goodbye"をキーにしてi18nだろjk…
316デフォルトの名無しさん:2012/04/29(日) 02:38:51.14
sayをうちまちがえたハズカチ
317デフォルトの名無しさん:2012/04/29(日) 02:41:31.22
>>314
それじゃ国際化するときに、HelloFactoryとGoodbyFactoryが必要になる
なにより凝集性がよろしくない
318デフォルトの名無しさん:2012/04/29(日) 02:41:52.09
>>315
ああいいね。
それ見てこんなの思い出したわ

man.say( Hello.getInstance() );
man.say( Goodby.getInstance() );

台詞が決まってるなら
man.say( Words.HELLO );
man.say( Words.GOODBY );
319デフォルトの名無しさん:2012/04/29(日) 02:42:54.68
>>317
台詞を言うのはmanのオブジェクトで、HelloやGoodbyは識別用だよ。
320デフォルトの名無しさん:2012/04/29(日) 02:45:38.80
>>315
そっちでもいいかも。
ただ、
声だすついでに身体バンバンたたいたり
ハグ♥ってしたりが表現できないよね

>>319
sayメソッドの中身が悲惨なことにならないか?
321デフォルトの名無しさん:2012/04/29(日) 02:51:50.76
バグ♥
322デフォルトの名無しさん:2012/04/29(日) 02:51:58.25
323デフォルトの名無しさん:2012/04/29(日) 02:54:49.41
定期的に脈絡なくC++にアンカー春奴は何かコンプレックスでもあるのかな?
324デフォルトの名無しさん:2012/04/29(日) 03:04:23.46
>HelloPersonとGoodbyPersonを用意しよう
別にこれもいいと思うけどね。sayで何を言うか本人しだいじゃん。
単にPersonでもsayHelloやsayGoodbyじゃなくて、say持たせて、
meet、breakupメソッドを用意し、meet、breakupどっちが呼ばれたかで
sayの挙動を変えて上げた方が取り回しが効いていいと思う。
さらにinterfaceにsayを持たせておけば、meet、breakupを持ってる事が必須じゃなくなるしね。
他のメソッドでsayの挙動を変えてあげてもいい。
325デフォルトの名無しさん:2012/04/29(日) 03:09:40.56
どうでもいいが要求次第
現実をシミュレートなんてしなくてええんやで
326デフォルトの名無しさん:2012/04/29(日) 03:13:25.84
>>324
interfaceにsayもたせたら、直接呼ばれちゃうぞ
327デフォルトの名無しさん:2012/04/29(日) 03:15:48.27
>>326
何か問題が有る?
328デフォルトの名無しさん:2012/04/29(日) 03:19:54.37
Interfaceの型でうけたら、meetとbreckupがよべない
個別の型でうけたら、meetとbreackupが呼べるかわりに、sayまでみえちゃう
sayが外に見えてる以上は自分の都合だけでは書き換えられない
つまりmeetとbreakupの取り回しがしにくい
329デフォルトの名無しさん:2012/04/29(日) 03:22:52.89
あぶすとらくと
330デフォルトの名無しさん:2012/04/29(日) 03:26:03.06
331デフォルトの名無しさん:2012/04/29(日) 03:29:40.47
public final void say(){
System.out.println("馬鹿には無理");
}
332デフォルトの名無しさん:2012/04/29(日) 03:30:13.42
Japanese japanese = new Japanese();
japanese.meet();

Irish irish = new Irish();
irish.breakup():

Person person;
person = japanese;
person.say();

person = irish;
person.say();

実用上こまりはしないと思うけど。
333デフォルトの名無しさん:2012/04/29(日) 03:39:29.36
ん?設計意図がわからん
breakup→sayの順で呼んで初めて話してくれるのか?
どうなんだろう
334デフォルトの名無しさん:2012/04/29(日) 03:42:45.53
>>333
そうよ。breakupを呼ばなくても何らかの振る舞いはするでしょうけど。
335デフォルトの名無しさん:2012/04/29(日) 04:26:13.71
Command japaneseSayHello = new JapaneseSayHello();
japaneseSayHello.execute();

( ・´ー・`)どや?
executeの実装だけ入れ替えれば何だって実行できる。
これがオブジェクト指向や!

などと使い方を想定せずに抽象化するのは
複雑さを助長するだけで百害あって一利なし
336デフォルトの名無しさん:2012/04/29(日) 04:29:09.69
>>331
System.setOut(new PrintStream(new ByteArrayOutputStream()) {
public void println(String x) {
System. console().printf("誰でもできるよ(^−^)" );
}
});
337デフォルトの名無しさん:2012/04/29(日) 05:10:41.89
ゆとり乙
338デフォルトの名無しさん:2012/04/29(日) 05:14:36.97
finalつけたのに残念だったね
339デフォルトの名無しさん:2012/04/29(日) 06:02:21.56
勉強になるわー
340デフォルトの名無しさん:2012/04/29(日) 06:45:05.55
ゆとり乙
341デフォルトの名無しさん:2012/04/29(日) 07:38:13.41
ゆとりにはjavaしか無理
342デフォルトの名無しさん:2012/04/29(日) 07:51:25.26
馬鹿がんがれ
343デフォルトの名無しさん:2012/04/29(日) 11:55:51.62
344デフォルトの名無しさん:2012/04/29(日) 13:30:35.64
JOptionPane.showMessageDialog(null, "\"馬鹿\"って言った奴が馬鹿", "", JOptionPane.ERROR_MESSAGE);
345デフォルトの名無しさん:2012/04/29(日) 13:42:43.77
>>335
ラムダとかそんな感じだよね。
用途は、使用する側次第。
346デフォルトの名無しさん:2012/04/29(日) 16:27:24.65
Project Lambdaって結局クロージャ使えるの?クロージャもどきなの?
347デフォルトの名無しさん:2012/04/29(日) 16:38:07.70
クロージャ使いたくなるのってほんとたまになんだよな
そのたまににできないと「糞がぁ」と思っちまうんだけど…
348デフォルトの名無しさん:2012/04/29(日) 17:28:17.58
クロージャもどきってなんね
349デフォルトの名無しさん:2012/04/29(日) 18:23:20.50
exceptionって
イグゼプション?
エグゼプション?
エクスセプション?
350デフォルトの名無しさん:2012/04/29(日) 18:28:07.67
いっくしょんぺ
351デフォルトの名無しさん:2012/04/29(日) 18:32:32.69
エクセプションっぽ
352デフォルトの名無しさん:2012/04/30(月) 00:21:26.63
いまゲームを作ってるのですが、
ちょっとうまくいかないことがありまして、、、
質問させていただきます。

x軸方向y軸方向にそれぞれ異なった速度を持ったイメージがあって
それが画面左から出現してきて右に消えていくというのを作りました。
これを無限に行いたく、配列を使ってやってみたのですが、
配列には限りがありますよね??うーん、、、うまくいきません。

どうにかうまくいく方法はないですかね??

353デフォルトの名無しさん:2012/04/30(月) 00:28:57.37
何がしたいのかよくわからんけど、右に消えていったイメージをまた左から出すようにすればいいんじゃないの?
354デフォルトの名無しさん:2012/04/30(月) 00:34:58.52
>>353
すいません、説明不足でした!

シューティングゲームで自分が打った弾がイメージに当たったら消える
といった風にやりたいのです!
355デフォルトの名無しさん:2012/04/30(月) 00:52:09.01
配列を使わずにArrayListなどを使いましょう
356デフォルトの名無しさん:2012/04/30(月) 00:55:55.20
なぜListなんだ
なぜ
357デフォルトの名無しさん:2012/04/30(月) 01:11:25.94
javaでopengl3(glsl3)以上とshade programmingを使いたいんですがどうすればいいのでしょうか?
358デフォルトの名無しさん:2012/04/30(月) 01:37:20.31
これからjavaを勉強するにあたりさ(他言語経験があり)あどうするかと調べたところ
javaサーブレットjavaアプレットやら色々あるようなんですが、
巷の業務系javaプログラマ募集の求人でjava出来る人ってのは
java = javaサーブレットって事で良いのでしょうか?

Java出来ますと言えば:Javaサーブレット?
業務系:Javaサーブレット?
Web系:Javaサーブレット&Android?

会計やら物流やらもJavaサーブレットによるWebアプリって事になるのでしょうか?
359デフォルトの名無しさん:2012/04/30(月) 01:40:17.82
>シューティングゲームで自分が打った弾がイメージに当たったら消える
>といった風にやりたいのです!
最終的にこれをしたいんだろうが・・・

>x軸方向y軸方向にそれぞれ異なった速度を持ったイメージがあって
>それが画面左から出現してきて右に消えていくというのを作りました。
ここは今理解できてる事だと解る

>これを無限に行いたく、配列を使ってやってみたのですが、
>配列には限りがありますよね??うーん、、、うまくいきません
でもこの一文で何がしたいのか解らん
玉を複数画面上に出したいが、配列に格納しきれないと言ってるのか?
ゲームなら普通上限決めて、一括で確保するぞ。
360デフォルトの名無しさん:2012/04/30(月) 01:42:31.17
土方さんはもっと簡単なマイクロソフト・ドットネットやウインドウズ・メトロを勉強した方がいいと思います。
361デフォルトの名無しさん:2012/04/30(月) 01:44:41.96
>>358
アプレットかサーブレットかと言えばサーブレット。
ただ、まんまサーブレット使うことは少ないと思うが。
あと、商用ならサービスとか、バッチ処理とか、
Webサーバー使わないものも結構有る。
最近の話かもしれないけど。
362デフォルトの名無しさん:2012/04/30(月) 01:53:34.09
>>359
伝わりにくくてすいません

永遠と画面左から敵が出続けるんです。
そいつらを画面手前にいる自機から発射される攻撃でやっつけ続けるというゲームです。
そして攻撃されなかった敵は画面右へと消えていきます。

無限とはいったものの
制限時間をつけるなり、敵から攻撃を受けてゲームオーバーにするなりしようとおもうんです。
敵の数だけ配列をつくると大変なことになるのではないかと、、、
363デフォルトの名無しさん:2012/04/30(月) 03:25:13.10
>>346
クロージャは使えない。ラムダ式は使える。

あくまでもSAMタイプのインタフェース(ひょっとしたら抽象クラスもOKかも)のインスタンスを作る時に
ラムダ式な書き方ができるようになるだけ。
相変わらず、親スコープの変数はfinalで読み込まないとイケない。

ちなみに文法はほぼC#のラムダ式だな。
364デフォルトの名無しさん:2012/04/30(月) 03:39:20.31
初心者なんだが、実際どんなのが作れるんだ?
目標を立てるのに知りたい。
365デフォルトの名無しさん:2012/04/30(月) 03:50:56.46
366デフォルトの名無しさん:2012/04/30(月) 04:18:30.23
Java+Swingによる2chブラウザ V2C_R50
http://anago.2ch.net/test/read.cgi/software/1334228672/
367デフォルトの名無しさん:2012/04/30(月) 04:23:19.11
日経ソフトウェア、アクセスランキング2012年04月28日
@ [1]JVM,API,言語仕様---Javaは三...
A [2]Java SE 7の新機能を読み解く
B [4]クロージャやモジュール機構など,Java ...
Java新時代へ

日経ソフトウェア
http://itpro.nikkeibp.co.jp/NSW/
368デフォルトの名無しさん:2012/04/30(月) 04:25:45.63
>>364
なんでもつくれます
369デフォルトの名無しさん:2012/04/30(月) 04:30:03.14
>>368
どこでもそう言われる。
具体的にどんなのだか教えてくれ
370デフォルトの名無しさん:2012/04/30(月) 04:37:51.19
>>367
そこ、登録しないと読めないし日経は有料サイトでウザいからリンク張るな
371デフォルトの名無しさん:2012/04/30(月) 04:40:07.24
itは読んでるとイラッとするからgoogle
検索でもblack listに入れてる。
372デフォルトの名無しさん:2012/04/30(月) 04:41:22.34
Java
 でちょっと前に話題になったARとか作れます.
 で作られたWebサーバとかめっちゃ使われてます.
 だけで作られたOSも、昔ちょっと話題になりました.
 はどこでも動きます.PCや携帯電話,Android,車載機器など.WindowsやLinux(組み込み系Linux),MacOSが動いていれば動かせます.もちろんWindowsで開発してMacで動かせます.
 は少し遅いです.遅い部分はJavaの利点から生まれるので,どうしても遅いと感じるならC畑へ行ってください.
 は様々なアドオンを自由に組み合わせられます.ちょっと複雑ですがパッケージやJNIを使えば何も恐れることはありません.Jnodeがそれを実証しています.
373デフォルトの名無しさん:2012/04/30(月) 04:47:25.30
>>372
ほうほう。
なかなか便利ですなぁ。
ありです。
374デフォルトの名無しさん:2012/04/30(月) 04:50:52.29
>櫻庭 祐一=Java in the Box 主筆
さんもitpro.nikkeibp.co.jp(日経)やatmarkit.co.jp(itmedia)に群がっているit土方相手にしないとやってけないなんて落ちたな
windows it土方に対してjavafxやswingなどjava se clientをいくら訴求しても理解できるはずないのにw
375デフォルトの名無しさん:2012/04/30(月) 05:01:48.65
>>372
昔のSUN vs MS訴訟の結果と同じで、AndroidはJavaではありません。
しかも旧SUN(Oracle)からJavaのライセンスも得てません。
376デフォルトの名無しさん:2012/04/30(月) 05:49:47.62
>>372
少し遅いとか妄想で語るな
377デフォルトの名無しさん:2012/04/30(月) 06:35:44.34
378デフォルトの名無しさん:2012/04/30(月) 07:41:47.15
[すこし遅い]んじゃなくて「とんでもなく遅い」な
SQLとなんかフレームワーク合わせただけのドカタ仕事なら問題にならないけど
379デフォルトの名無しさん:2012/04/30(月) 08:05:22.37
Javaは最速に近い
380デフォルトの名無しさん:2012/04/30(月) 08:08:57.54
問題にならないならそれでじゃないですか
381デフォルトの名無しさん:2012/04/30(月) 08:09:22.29
問題にならないならそれでいいじゃないですか
382デフォルトの名無しさん:2012/04/30(月) 08:24:23.71
遅いって何と比べてんだろ。
同等の機能を持った他の言語と比べないと意味ないよね。
マルチプラットフォームでOOPで、一定以上の普及率を持った
とんでもなく遅くはない言語知りたいな
383デフォルトの名無しさん:2012/04/30(月) 08:35:26.85
言語?
384デフォルトの名無しさん:2012/04/30(月) 09:13:07.19
AndroidはJavaではありません(キリッ
385デフォルトの名無しさん:2012/04/30(月) 09:18:23.23
386デフォルトの名無しさん:2012/04/30(月) 09:49:27.25
Java APIのサイトに繋がらないのは自分だけですか?
387デフォルトの名無しさん:2012/04/30(月) 09:58:16.11
あ、SE7のページなら繋がりました。お騒がせしました。
388デフォルトの名無しさん:2012/04/30(月) 10:01:12.20
Sunのページ死んでるのにGoogle先生いつまでも引用するんだぜ
ボケちゃったのかな・・・
389デフォルトの名無しさん:2012/04/30(月) 11:46:06.52
>>382
有名どころだとC++か
NativeClient上で動かすかVM上で動かすかで
パフォーマンスが結構変わるけど
390デフォルトの名無しさん:2012/04/30(月) 11:52:27.49
C++(RTTI付き)でコンパイルしたプログラムってそんなに早いんですか?
391デフォルトの名無しさん:2012/04/30(月) 11:56:20.59
ベンチマーク嫁
392デフォルトの名無しさん:2012/04/30(月) 12:00:46.62
RTTIはサイズが肥大するだけで速度関係ないだろ
速度的に言えば、SIMDが使えるのとハンドルを使わず直アクセスしてる点、
広域に最適化される点と、最初から最適化されてる分早い
仮想関数でJavaに負ける時もあるが、オブジェクトの実際の型が変わらないなら
親クラスで渡された時でも、派生クラスの持つ実際の関数をインライン展開する
コンパイラーが増えたんでそういうケースが問題になる事も減った。
393デフォルトの名無しさん:2012/04/30(月) 12:08:14.22
現実問題として、大規模で速度が必要だったり複雑な処理して重いプログラムはだいたいC++で作られてるだろ。
それが答えだ。
394デフォルトの名無しさん:2012/04/30(月) 12:12:52.44
ネイティブとの速度差の議論は、jvmではjitコンパイルを導入してc++にある程度追いつき、次にllvmのようなネイティブで利用可能なリソースに最適化したスマート・コンパイルがなされて、
今のjvm技術ではc++とほぼ同等、再コンパイルしてない古いc++プログラムなら追い越してるって聞いてますよ。
395デフォルトの名無しさん:2012/04/30(月) 12:15:20.82
396デフォルトの名無しさん:2012/04/30(月) 12:23:28.58
>>394
聞くのは勝手だが自分で試せ
あと、VMかNativeかは言語関係ない
VM用に吐いたバイナリーとネイティブ用に吐いたバイナリーを比較するなら
同じ言語で書いたVMコードと、ネイティブコードを比較しろ
397デフォルトの名無しさん:2012/04/30(月) 12:25:05.90
お前がなwww
398デフォルトの名無しさん:2012/04/30(月) 12:29:21.17
C++に取り付かれると人格だけじゃなく頭まで壊れちゃうって本当のことなんですかぁっ?!
399デフォルトの名無しさん:2012/04/30(月) 12:31:19.56
たぶんそうです
Javaも例外ではありません
400デフォルトの名無しさん:2012/04/30(月) 12:35:08.52
それならC#に行っちゃった人はどうですか?
C#はドットネット戦略の中心でありマイクロソフトの虎の子ですよ?!
401デフォルトの名無しさん:2012/04/30(月) 12:36:15.74
スレチ
402デフォルトの名無しさん:2012/04/30(月) 12:39:25.32
C++よりCの方が速えー速えー言うけど、実際はCの標準ライブラリと<algorithm>つかって
書いただけならC++の方が速いしな。型情報を元に最適化出来る場合は10倍以上速くなったりする。
実測有るのみだ。
403デフォルトの名無しさん:2012/04/30(月) 12:43:27.28
コンパイラーの出来しだいだな。
404デフォルトの名無しさん:2012/04/30(月) 12:45:13.16
ジャバでは、プログラムの速度がクリティカル・イシューな時はあまり使わず他の方法を検討します。
405デフォルトの名無しさん:2012/04/30(月) 12:52:21.44
だな
406デフォルトの名無しさん:2012/04/30(月) 14:24:11.23
こんなコードなんですけど
http://ja.pastebin.ca/2142153

public synchronized int getX() { return x; } の 「synchronized」 って必要なんですか?
407デフォルトの名無しさん:2012/04/30(月) 14:28:20.63
ないな。
それはともかく、ページの広告がウザすぎて開いた瞬間閉じようかと思った
408デフォルトの名無しさん:2012/04/30(月) 14:32:14.63
406
すんません、理由をそえておながいします
409デフォルトの名無しさん:2012/04/30(月) 14:45:13.66
まず必要な理由を言ってみてもらわないと
410デフォルトの名無しさん:2012/04/30(月) 14:45:56.95
排他掛けるなら座標クラスを扱ってる箇所に掛ける必要が有るだろ
x, yを返すだけってレベルじゃ要らん。xとyの2つの値を設定してるような
不可分な操作にはつける必要が有るけど。
411デフォルトの名無しさん:2012/04/30(月) 15:46:26.29
そのメソッドの処理中に他のスレッドから呼び出されたら困るならsynchronizedつければいい
>>406を見るとsetXY()している間にgetX()が呼べたりするから設計から間違ってる気がする
412デフォルトの名無しさん:2012/04/30(月) 15:50:48.28
呼べたりはしないでしょ
413デフォルトの名無しさん:2012/04/30(月) 16:53:14.10
synchronizedは異なるブロックでも同期するんだね
あまり使わないから知らなかった

でもgetX()してgetY()する前にsetXY()が呼ばれる可能性はあるね
414デフォルトの名無しさん:2012/04/30(月) 17:23:09.24
俺ならZahyoクラスにsynchronizedなんて付けない。
そのかわり同期はZahyoクラスを使う側に任せる。

synchronized(zahyo){
 zahyo.set(x,y);
}

synchronized(zahyo){
 x = zahyo.getX();
 y = zahyo.getY();
}
415デフォルトの名無しさん:2012/04/30(月) 17:33:16.09
みんなinterfaceってどう定義してんの?
自分はhoge1のように定義してるけど、皆さんの意見を聞いてみたいです。

interface test {
 public abstract void hoge1();
 public void hoge2();
 abstract void hoge3();
 void hoge4();
}
416デフォルトの名無しさん:2012/04/30(月) 17:35:58.76
hoge4
無駄なものを書く必要はない
417デフォルトの名無しさん:2012/04/30(月) 17:38:53.28
>>415
public abstract ここ非推奨な書き方だろ
418デフォルトの名無しさん:2012/04/30(月) 17:47:45.55
うむ
419デフォルトの名無しさん:2012/04/30(月) 19:43:41.75
>>415
一番上だな。
public abstract が暗黙かどうかいちいち頭切り替えて読み書きするの面倒だし。
420デフォルトの名無しさん:2012/04/30(月) 19:47:21.25
一番下に決まってるだろ
421デフォルトの名無しさん:2012/04/30(月) 20:11:25.51
句読点省略するような奴は省略するって事か。
422デフォルトの名無しさん:2012/04/30(月) 20:20:06.51
ちがうよ
推奨が一番下なんだよ
423デフォルトの名無しさん:2012/04/30(月) 20:24:32.67
コーディング規約による

とにかく書けるものは書け派(1)と書かなくても良いものは書くな派(2)にわかれる

駆け出しプログラマなら(1)の方が読みやすいかもしれない
それなりに訓練されたプログラマなら(1)は冗長で目障りだという
良く訓練されたプログラマなら(1)でも(2)でもどうでも良くなる
424デフォルトの名無しさん:2012/04/30(月) 20:33:23.91
そんなとこで個性化してガラパゴス化する意味なんてないぞw
ほら本家から引用だ

The Java Language Specification
Java SE 7 Edition
9.4. Abstract Method Declarations
It is permitted, but discouraged as a matter of style, to redundantly specify the public and/or abstract modifier for a method declared in an interface.
425デフォルトの名無しさん:2012/04/30(月) 20:46:38.46
 redundantly specify っちゅうこっちゃ!
426デフォルトの名無しさん:2012/04/30(月) 20:58:59.18
そんなに権威がありがたいならSunのコーディング規約に則って8タブ4インデントにしてろ
427デフォルトの名無しさん:2012/04/30(月) 21:06:40.58
googleさんのコード見たらhoge4だった
428デフォルトの名無しさん:2012/04/30(月) 21:10:36.06
エディタと勘違いしてるアホがいますなw
429デフォルトの名無しさん:2012/04/30(月) 21:11:00.74
public abstract
interfaceのこれってそのうち廃止になるんじゃないの?
430デフォルトの名無しさん:2012/04/30(月) 21:11:41.92
ピントずれた意見だな
431デフォルトの名無しさん:2012/04/30(月) 21:12:04.48
挟まったか
432デフォルトの名無しさん:2012/04/30(月) 21:15:08.69
>>429
廃止にメリットあんの?
433デフォルトの名無しさん:2012/04/30(月) 21:16:32.70
っ It is permitted, but …
434デフォルトの名無しさん:2012/04/30(月) 21:17:04.35
>>432
コンパイルプロセスの単純化
435デフォルトの名無しさん:2012/04/30(月) 21:17:38.40
>>434
他にないって事か。
436デフォルトの名無しさん:2012/04/30(月) 21:18:47.21
<div class="btns"><a href="#" class="button">Clear</a><a href="#" class="button" onClick="document.getElementById('form').submit()">送信</a></div>

上のタグでメールフォームの送信、クリアを作成しているが、#の位置には何を入れるとメールがWEB上から上手く送信できるようになるのでしょうか?

そもそもこのスレで良いのかも判らないですが…、お教えいただけると助かります。
437デフォルトの名無しさん:2012/04/30(月) 21:20:13.52
Javaスクリプトさんが現れました
438デフォルトの名無しさん:2012/04/30(月) 21:20:45.84
>>436
Web製作板へいけ
439デフォルトの名無しさん:2012/04/30(月) 21:21:08.43
>>435
ないよ。ただ他の言語じゃよくやってるじゃん。

interfaceで修飾子が無くなれば、interfaceブロックに入ってから
修飾子除去プロセスが不要になって若干速くなる。
あとコンパイラのinterfaceに対する特殊化部分も簡略化できるよね。
OpenJDK見ると無駄そうで仕方ない。
440デフォルトの名無しさん:2012/04/30(月) 21:22:31.30
>>432
小汚いコードを見なくて済むようになる
441デフォルトの名無しさん:2012/04/30(月) 22:03:29.69
>>439
普通にコンパイラ書いていれば、interfaceのメソッドに付けられる修飾子から
public と abstract のフラグを消すだけだから大した簡略化にはならないよ。
442デフォルトの名無しさん:2012/04/30(月) 22:06:42.79
interfaceのメソッドに付けられる修飾子にはアノテーションが残っているから
って付け忘れた。まぁ、わざわざ書かなくても判ると思うけど。
443デフォルトの名無しさん:2012/04/30(月) 22:07:39.74
OpenJDK見てみれば?
一部クラスと同じ処理呼び出してるけどアレ無駄だよ。
そのうえ、privateとか他のキーワードを弾く処理まで入ってんだから。
444デフォルトの名無しさん:2012/04/30(月) 22:11:59.93
それ単にリファクタリングした方がいいってだけじゃね?
ぶっちゃけ簡略化しても焼け石に水でしょ。
445デフォルトの名無しさん:2012/04/30(月) 22:14:22.93
そんなことよりSAMタイプについて語ろう
446デフォルトの名無しさん:2012/04/30(月) 22:18:31.13
そうは言っても残しておくメリットなんて全然ないし。
JBossみたいな新しくコンパイラ作る際に¥は、クラスと同じ修飾子処理の部分外して、
全部public abstract属性固定にし、
privateとかのキーワードチェックだけにできる理由じゃん。
447デフォルトの名無しさん:2012/04/30(月) 22:19:32.58
¥はうち間違い。無視して。
448デフォルトの名無しさん:2012/04/30(月) 22:25:11.18
>>446
普通のコンパイラは>>441-442だからどうでもいい。

互換性問題になるから残すメリットはある。
449デフォルトの名無しさん:2012/04/30(月) 22:32:00.20
自分の狭い用途や視野でしか見えないから
互換性なんて思いつかないんだろ。
450デフォルトの名無しさん:2012/04/30(月) 22:34:39.09
>>424
そもそも、これ何で非推奨にしたんだろ?

implements @protected InterfaceName とかすると
protectedなメソッドの実装義務が発生するとかやりたかったのだろうか?
やっぱり違うな。
451デフォルトの名無しさん:2012/04/30(月) 22:36:12.41
JLS2ndの時には既に非推奨だったな。
452デフォルトの名無しさん:2012/04/30(月) 22:37:24.91
JLS1stからすでに非推奨だったりする。
453デフォルトの名無しさん:2012/04/30(月) 22:48:00.72
>>448
だからもう非推奨なんだから無駄だし捨ててもいいんじゃねと言ってるだけ。
互換性なくなるのは解ってるよ。それでも既存のキーワードを廃止する言語はあるんだから。
454デフォルトの名無しさん:2012/04/30(月) 22:57:50.59
互換性を上回るメリットを提示できないと廃止は難しいんじゃね?
455デフォルトの名無しさん:2012/04/30(月) 23:14:22.82
>>453
非推奨って言っても全然守られてない非推奨だからなぁ。
JDKのソースにすら public つけてるコードが大量にあるし。
456デフォルトの名無しさん:2012/04/30(月) 23:41:56.42
新しく作るなら、だからJDKの古いこーは問題ない
457デフォルトの名無しさん:2012/04/30(月) 23:42:11.20
コードは
458デフォルトの名無しさん:2012/05/01(火) 00:20:59.51
>>406
http://www.javapractices.com/topic/TopicAction.do?Id=49

set が syhchronized なら 当然 get も synchronized でないといけない
459デフォルトの名無しさん:2012/05/01(火) 00:28:00.78
ダメな記事引用するな
460デフォルトの名無しさん:2012/05/01(火) 00:28:24.06
不可分じゃなけりゃ理屈上要らんけどな
461デフォルトの名無しさん:2012/05/01(火) 00:35:23.92
これ真似したらダメな悪例の典型だぞ
462デフォルトの名無しさん:2012/05/01(火) 02:16:15.54
406
すんません、なぜダメなのか理由をそえておながいします
463デフォルトの名無しさん:2012/05/01(火) 02:30:36.22
synchronizedは必要だぜ
マルチスレッド プログラミングの常識だろ
複数のコアをもつプロセッサでは、あるプロセッサが変更した値を
別のプロセッサからも見えるようにする必要があるわけ
javaではsynchronizedブロックがこの役割を果たしている
「java メモリーの可視性」 でググればたくさん出てくるぜ
464デフォルトの名無しさん:2012/05/01(火) 02:37:20.66
AtomicReference
465デフォルトの名無しさん:2012/05/01(火) 02:40:51.60
>>462
不可分操作でなく無駄だから
同期プリミティブを理解してないバカに見えるから
466デフォルトの名無しさん:2012/05/01(火) 02:56:00.41
ぬるぽ → ガッ ってあるじゃん
俺ついこないだまで「ガッ」ってようするにcatchすることだと思ってたんだけど
wikiみたら 「殴る」だったため」という説と「Javaの例外(エラー)なので見つけたら叩くのはあたりまえ」という説の2つが挙げられている
なんだとさ
みんな知ってた?
467デフォルトの名無しさん:2012/05/01(火) 03:41:42.34
>>466
ガッ!
468デフォルトの名無しさん:2012/05/01(火) 05:44:29.77
C++のベテランさん(unmaneged windows,linux,gnome,kde)たちはGUI Tool Kitは何使ってるのかはいくら調べても出てこないので、C++さんはモーダンなUser InterfaceつまりUI作ったことないしUXに関心もなければMVCなどGUI設計の方法論も知らないのかなって思ってます。
469デフォルトの名無しさん:2012/05/01(火) 06:13:39.78
ナニイッテンダ?
470デフォルトの名無しさん:2012/05/01(火) 06:35:39.20
最近C++のベテランさんがよく出没するのでTKは何使ってるのか聞いてみたかっただけです。
471デフォルトの名無しさん:2012/05/01(火) 07:15:35.60
自分のポンコツ脳だと理解できない事態なので助力をお願いしたいです。

hoge1.java
public class hoge1
main
String st = "hogehoge";
hoge2 hoge2 = new hoge2(st);
hoge2.run();

hoge2.java
public class hoge2 implements Runnable
BufferedReader reader;
public hoge2(String st)
reader = new BufferedReader(new StringReader(st));
try { System.out.println(reader.readLine()); } catch (IOException e) {}
public void run()
try { String line = reader.readLine();//lineがNullになる
System.out.println(reader.readLine()); } catch (IOException e) {}

runメソッドでlineにreaderを代入?したいのですが、nullになってしまいます。
hoge2メソッドの方でのSystem.out.println(reader.readLine())は
stの内容が出力されるので書き方はあっているような気がするのですがそれ以上の事が解りません。
恐らく無知故の基本的な間違いだと思うのですが、どうすればいいでしょうか。
472デフォルトの名無しさん:2012/05/01(火) 07:21:35.63
>>471
舌かんでしね
473デフォルトの名無しさん:2012/05/01(火) 07:34:11.39
だなw
474デフォルトの名無しさん:2012/05/01(火) 08:38:23.67
わざと読みにくいようにして貼り付けたのか?
BufferedReader#readLine()はそれが正しい動作だからちゃんと勉強しろ
475デフォルトの名無しさん:2012/05/01(火) 08:55:51.26
>>465
「なぜ無駄なのか」
そこがいちばん知りたいんです。
理由をおしえてくださいませんか。
476デフォルトの名無しさん:2012/05/01(火) 08:59:58.62
お金持ってないようなのでお断りします
477デフォルトの名無しさん:2012/05/01(火) 09:12:33.44
ホントは知らないんでしょw
478デフォルトの名無しさん:2012/05/01(火) 09:23:16.89
>>475
無駄じゃないよ。synchronized必要
setterにsynchronizedを付けるならgetterにも付けないと不釣合いだろ
カッコ悪いだろ

ここを嫁
http://gee.cs.oswego.edu/dl/cpj/jmm.html

final class VFloat {
  private float value;

 final synchronized void set(float f) { value = f; }
 final synchronized float get() { return value; }
}

上記getメソッドにsynchronizedが無い場合、setメソッドでセットされたはずのvalueの値が
別コアで実行される別スレッドから読み出せないことが有りうるんだよ
なぜなら、高度に最適化された優秀で賢いコンパイラは変数をメモリーではなく
CPUのレジスターに割り当てたりすることもあるからだ
synchronizedの入口と出口でマルチコアCPUのコア間の不整合が解消されるしくみだ
479デフォルトの名無しさん:2012/05/01(火) 09:30:28.34
synchronizedつけさえすればいいと思ってるのはアホ
480デフォルトの名無しさん:2012/05/01(火) 09:36:41.44
別コアとかレジスターとか、C++なら気にする必要はあるでしょうけど・・・
481デフォルトの名無しさん:2012/05/01(火) 09:46:42.75
>>475
なぜ必要なのか説明してみ
482デフォルトの名無しさん:2012/05/01(火) 09:48:21.77
>>471
最初のsystem.outをコメントアウトすればわかる
483デフォルトの名無しさん:2012/05/01(火) 11:38:51.38
>>471
なぜファイル名も書くのかwww
484デフォルトの名無しさん:2012/05/01(火) 11:49:12.15
>>478
かっこいいなぁ 俺英語読めん
synchronizedの使い方もよくわからん
いつまでたっても初心者から抜けれんわ
「synchronized」とか解説してる入門書なくない?
485デフォルトの名無しさん:2012/05/01(火) 11:55:48.41
>>484
結城本嫁
486デフォルトの名無しさん:2012/05/01(火) 11:57:55.80
>>485
ありがとうございましゅ
結城さんの本はデザインパターンの本しか持ってなくて
それも5パターンぐらいまでしかまだ理解できてないや……
知識レベルがカスなことは自覚してるんだが上達したいなー
487デフォルトの名無しさん:2012/05/01(火) 12:00:46.54
馬鹿には無理
488デフォルトの名無しさん:2012/05/01(火) 13:13:53.00
>>475
何度も言うがgetの中身が不可分操作じゃないからつける必要がない
つけてしまえば速度が下がる
>>475 の話は、そもそもvolatileつけてたら関係ない
JavaのvolatileはC++のvolatileと違ってアトミック性を保証するためのものだ
489デフォルトの名無しさん:2012/05/01(火) 13:31:36.73
× >>475 の話は、そもそもvolatileつけてたら関係ない
>>478 の話は、そもそもvolatileつけてたら関係ない

490デフォルトの名無しさん:2012/05/01(火) 15:46:10.43
『Java並行処理プログラミング』わかりやすいからら読んどけ
491デフォルトの名無しさん:2012/05/01(火) 16:15:43.10
volatileはアトミックじゃないぞ。xとyが関連するならvolatileじゃ足りん。
それよりZahyoにsynchronized付けるんじゃなくてZahyoを使う方にsynchronized付けたほうがいいんじゃないの?
492デフォルトの名無しさん:2012/05/01(火) 16:30:36.46
>>491
xかyいずれかのset/getでアトミックが保たれてるから、話の流れとしては間違ってないんだよ。
結局Zahyoを使う側で同期をとるってのが正解。
493デフォルトの名無しさん:2012/05/01(火) 16:41:37.32
不変クラスにしよう
494デフォルトの名無しさん:2012/05/01(火) 16:45:08.54
>>406は実行環境のver次第でJMMが変わるから環境書け。
古いJMMならvolatileをsynchronizedするのは正しい。
495デフォルトの名無しさん:2012/05/01(火) 16:50:06.99
お前ら、稀なケースばかり考えるんじゃなく常識の範囲で考えろよ。
相手はどう考えても初心者だぞ。古いVMつかってるかどうかとか考える必要ないだろ。
496デフォルトの名無しさん:2012/05/01(火) 16:58:20.23
俺はこのネタついては既にスルーしてるw
497デフォルトの名無しさん:2012/05/01(火) 16:59:32.24
どっちにしてもZahyoインスタンスがリオーダーされたら意味ないから使う方のソースも見てみないと
498デフォルトの名無しさん:2012/05/01(火) 17:03:11.27
499デフォルトの名無しさん:2012/05/01(火) 17:04:28.76
たしか使う方のソースも付いてた
500デフォルトの名無しさん:2012/05/01(火) 19:09:37.15
>>474>>482
半角スペース使ったため見難くなってしまって申し訳ないです。
bufferreader周りを勉強し直してみます。
ありがとうございました
501デフォルトの名無しさん:2012/05/01(火) 19:28:02.90
synchronizedを付けようがつけまいがどのみち間違っているから好きな方でどうぞ
502デフォルトの名無しさん:2012/05/01(火) 22:43:56.50
>>492>>493>>501で終了〜
503デフォルトの名無しさん:2012/05/02(水) 00:54:05.93
カバにはリーム―
504デフォルトの名無しさん:2012/05/02(水) 00:55:51.63
メソッドの頭にシンクロつけるようなソース書くケースってあるのかな?
少なくともセッターゲッターにシンクロ宣言はつけないと思える
これはロックオブジェクトの概念を知れば理解できる

使う側から見た視点でタイミングを考えるべきに同意
それと同期、平行この2語を真に理解することはとても大事だと思う。

くどいけど セッターゲッター両方にシンクロ宣言つけたら
そのインスタンスに同時操作しようとするスレッドが、順序のない行列作っていろいろ面倒なことになる
505デフォルトの名無しさん:2012/05/02(水) 01:02:33.45
java.util.concurrent この下にあるやつ
API眺めるだけで大体理解できると思うよ
506デフォルトの名無しさん:2012/05/02(水) 01:41:20.46
実際get/setみたいな粒度の同期化なんてほとんど意味無いよ
利用する側は大抵もっと大きい単位でロックする必要がある
507デフォルトの名無しさん:2012/05/02(水) 09:30:21.78
使う側で同期で答えでたやん
508デフォルトの名無しさん:2012/05/02(水) 11:04:09.57
スレッドAで
sync(o){
o.ijiiji
}

スレッドBで
o.ijiiji

ってするとスレッドAがoをいじいじしている間は
スレッドBはoをいじいじできないの?
509デフォルトの名無しさん:2012/05/02(水) 11:11:23.29
スレッドBの方で排他制御してないなら自由に触れる。
510デフォルトの名無しさん:2012/05/02(水) 14:52:58.95
なにかを自作しようと思うとほとんどサンプルコードの改変になって悩んでます
自分で作った気がしないのですが……
511デフォルトの名無しさん:2012/05/02(水) 15:02:48.96
サンプルコードの改変で作れるようなものなんて、今更君が作らなくても既に遥かに優れたものが世の中にある
っていうか、普通にPC使っててこういうのが欲しいと思ったときに
まだ誰もそれを作ってないなんてことはまずありえないから、はっきり言って時間の無駄
512デフォルトの名無しさん:2012/05/02(水) 15:06:15.34
そうですよね
ではプログラミングはどのように勉強していけばいいのでしょうか?
513デフォルトの名無しさん:2012/05/02(水) 15:20:45.67
趣味ならAndroidでもやれば
GUIなら.NETやC++の方がいいしちょっとした作業の自動化ならスクリプト言語の方がいい
514デフォルトの名無しさん:2012/05/02(水) 15:31:45.66
何言ってんだ、コイツw
515デフォルトの名無しさん:2012/05/02(水) 16:01:19.40
>>511
このいいかたでは、
サンプルコードの改変がダメのようにきこえてしまうが、

ライブラリをべんきょうするとき、サンプルがあればたすかるね
516デフォルトの名無しさん:2012/05/02(水) 16:01:42.73
スマホアプリいいよ
PCではサンプルコードの改変レベルの糞アプリでもスマホで出せば評価される
517デフォルトの名無しさん:2012/05/02(水) 16:54:11.08
こういうのが欲しい!と思って無かったから作った人がここに
518デフォルトの名無しさん:2012/05/02(水) 17:47:33.65
public class Tc {
public Tc() {
}
}

Tc tc1; //@

クラスについて初歩的な質問なんですが
こういうふうにクラス宣言して主クラスの最初で@のように定義すると通るのですが
他の場所 onCreate()内 等で@の定義をすると
’ローカル変数 tc1 は読み取られません’とEclipseに怒られてしまい実際実行されません。
その他の場所で@の定義をするにはどうすればいいですか?
519デフォルトの名無しさん:2012/05/02(水) 17:54:52.81
それは意味ないローカル変数を宣言した時に出る
520デフォルトの名無しさん:2012/05/02(水) 18:10:35.41
>>518
言語仕様的なエラーじゃなくて、
プログラムミスの可能性が高いから警告にしたりエラーにしたりできるようになってる。

Window->Preferences->Java->Compiler->Errors/Warnings->Unnecessary code->Value of local variable isnot used
Project->Properties->Java Compiler->Errors/Warnings->Unnecessary code->Value of local variable isnot used
を ignore にすれば警告かエラーは消える。上はワークスペース全体の設定で下はプロジェクト固有の設定。
ignore にするのは推奨しないけど。
521デフォルトの名無しさん:2012/05/02(水) 18:27:02.03
>>518
ローカル変数を宣言しても、それを使っていなければ宣言した意味がないので、親切にも注意してくれているんだ
ちゃんと使えば文句言われない
522518:2012/05/02(水) 18:33:02.52
ローカル変数でなく class と宣言してるはずなんですが。

あと上の記述だとスルーだけになるのですが

Tc tc1 = new Tc();

こう書くとエラーになってしまいます。
これはどういうことでしょうか?
523デフォルトの名無しさん:2012/05/02(水) 18:35:25.86
だから、そのローカル変数 tc1 を、使ってないだろう?
524デフォルトの名無しさん:2012/05/02(水) 18:38:25.42
ああ、最初にグローバルで@の記述を必ずやらないと
途中から書いてもクラスとみなされないということですかね。
public 書いてるからどこからでも参照できると思ってました。
525デフォルトの名無しさん:2012/05/02(水) 18:42:43.93
あとローカル変数ならば
Tc tc1;
じゃなくて
int tc1;
とかじゃないでしょうか?

コンパイラはそういう判断かと思ったんですが。
526デフォルトの名無しさん:2012/05/02(水) 18:43:42.30
classを囲う{}の外に書いたら怒られるのは当たり前
527デフォルトの名無しさん:2012/05/02(水) 18:47:10.73
>>525
それは変数の型が違うだけだ (プリミティブ型 or クラス型)
ローカル変数かクラス変数かインスタンス変数かという変数の種類は変わらない
528デフォルトの名無しさん:2012/05/02(水) 18:50:07.46
変数とスコープを勉強しなおしてこい
529デフォルトの名無しさん:2012/05/02(水) 18:55:31.98
>>526
class内のmainで定義すればいいですかね。やってみます。
530518:2012/05/02(水) 19:07:06.63
ここまでで冒頭でやればいいとわかったのですが
最初にグローバルにクラス作るのでなく
途中から自由にクラスインスタンス作ったり外したりする方法はないのでしょうか?
531デフォルトの名無しさん:2012/05/02(水) 19:12:27.46
Tc tc1 = null;
tc1 = new Tc();
tc1 = null;
とか
532デフォルトの名無しさん:2012/05/02(水) 19:25:51.30
>>531
やってみます。
533デフォルトの名無しさん:2012/05/02(水) 21:55:11.42
Javaを初めて勉強するのにお勧めの教本とかってありますか?
プログラミング未経験です
534デフォルトの名無しさん:2012/05/02(水) 21:56:04.90
今までファイル読み込みが面倒なのでファイルをクラスに変換するマクロで、
クラス内にファイルの内容を直接埋め込んでいたのですが、
今日、少し大きなファイルを埋め込んでみたところ。
「static イニシャライザーのコードが 65535 バイトの制限を超えています」
まさかJava自体にこんな制限があったなんて…orz
うわーどうしよう。
535デフォルトの名無しさん:2012/05/02(水) 21:59:32.35
コード自動生成してるんなら適当にメソッド分けるようにすればいいだけじゃね
536デフォルトの名無しさん:2012/05/02(水) 22:21:38.06
もしものすごく膨大な定数を使いたかったら、ファイルにまとめて読み込まなければならないってこと?
537デフォルトの名無しさん:2012/05/02(水) 22:26:39.16
今はどんな言語でも、膨大な定数を自前で保持しないだろ。
昔はBASICのDATAにマシンコード持たせてたけどさ。
538デフォルトの名無しさん:2012/05/02(水) 22:30:58.27
ロードに時間かかるしなあ
Javaじゃ用途的にあんまり問題にならないだろうけど
クライアントアプリだととりあえず起動してなんか表示してからロードするほうが
ストレスを感じさせにくい
539534:2012/05/02(水) 22:37:53.08
画像ファイルをクラスにするくらい分けないと思ったのですが…。
とりあえずメソッドを分割してみます。お騒がせしました。
540デフォルトの名無しさん:2012/05/02(水) 22:49:17.75
ファイル添付できない上にコード量の制限があるBTSにバグ報告するとき
gzip + base64 で文字列化とかはやったな。
541デフォルトの名無しさん:2012/05/03(木) 08:12:49.48
日経ソフトウェア買って読んでみたら半分いや5分の1ぐらいしか理解できなかった
みんなこんな本ふむふむと読んで活用できるんでしょ? 尊敬させていただきます
入門書のあとみんなどうやって成長していってるの? 
542デフォルトの名無しさん:2012/05/03(木) 08:30:12.61
あなたのレベルではまだ早いってことですよ。
そのレベルで紙情報に対して毎月1000円だすつもりなら、オール日本語アイテー情報紙のPCfan(マイナビ)がいいんじゃないですか。
543デフォルトの名無しさん:2012/05/03(木) 08:44:39.91
レベルにあってないことがわかりました 自分では活用できそうにありません
1000円は勉強代ですね
ただPCfanはさすがに読んでてもつまらんです それにあれ休刊になったんじゃ?
544デフォルトの名無しさん:2012/05/03(木) 09:05:36.23
1000円の勉強代金を支払えば即すべてのスキルが得られるわけではありません。
545デフォルトの名無しさん:2012/05/03(木) 09:17:42.67
ゆとり(笑)
546デフォルトの名無しさん:2012/05/03(木) 11:44:25.74
日経ソフトウェアって、そもそも技術者が読むよーなのだっけ?
技術者じゃない人が読んで、理解した気になるための雑誌じゃなかった?
547デフォルトの名無しさん:2012/05/03(木) 11:45:24.94
あほやな
自分よりレベルの高い本を買ってわからなくても適当に読んでれば
知らないうちにレベルアップしてるのに
自分と同レベルの情報見ててどうすんだよw
548デフォルトの名無しさん:2012/05/03(木) 11:52:10.90
ステマ乙
549 ◆QZaw55cn4c :2012/05/03(木) 12:08:18.68
550デフォルトの名無しさん:2012/05/03(木) 12:11:57.82
間違って日経NETWORKというのを定期購読してしまって
なんとなく眺めてたらいつのまにかネスペが取得できてしまった。
ネスペ取得者にはこういう人が多い。
551デフォルトの名無しさん:2012/05/03(木) 13:34:59.55
日経ソフトウェアは中学生くらいが読むもんだけど本当に初歩の初歩から書いてあるから専門外の言語の雰囲気掴むにはいいよ。
552デフォルトの名無しさん:2012/05/03(木) 14:03:32.98
コードが書いてある雑誌って減っちゃったからなー
特にJavaとか紙面に乗せると文字数食うせいで
解説とかめちゃくちゃはしょってあるから分かりにくいとは思う
553デフォルトの名無しさん:2012/05/03(木) 14:11:53.12
分厚い技術書も大概だろ
コードで水増ししまくって内容がほとんどない
554デフォルトの名無しさん:2012/05/03(木) 14:13:15.63
内容がないよう・・・ぷぷっ
555デフォルトの名無しさん:2012/05/03(木) 14:34:30.52
日本の本はそうだな。海外のはコードはwebかCDに収めて解説がずらずらと書いてあって1000Pとかある
556デフォルトの名無しさん:2012/05/03(木) 16:13:49.99
日本語では簡潔に説明できることが英語では単語でものすごく水増しされたような文章になるからね。
557デフォルトの名無しさん:2012/05/03(木) 16:15:07.48
英語の本読んだことねーなら無理するな
558デフォルトの名無しさん:2012/05/03(木) 16:27:25.03
どうでもいい質問すみません
クラスの変数とメソッドの引数が同じ意味の場合、どう書き分けたら便利でしょう?
たとえば

class Human{
 int weight_1;

 public setTall(int weight_2){
  weight_1 = weight_2;
 }
 その他メソッド色々
}

というクラスを作ると、eclipseだとHuman#setTall()を呼び出すときの自動補完で
 human.setTall(weight_2)
と勝手にweight_2も含めて入力してくれるので、引数を一般的な単語にしたいんですが
そうするとクラスの変数をそうじゃない名前にしなきゃいけなくて
今度はHumanクラスを書く際にその変数名が面倒になってしまいます。

ネットを検索するとm_weightとかmWeightとか_Weightにするといいというのもありますが
それだとHumanクラスを書く際に補完機能が使いづらくなってしまいます
(たとえばm_tallとm_weightがあると、mで補完させると両方引っかかってしまう)
559デフォルトの名無しさん:2012/05/03(木) 16:31:51.10
>>558
this
あと、クラスの変数じゃないから。オレオレ定義で呼ぶな
560デフォルトの名無しさん:2012/05/03(木) 16:33:00.25
public setTall(int weight){
 this.weight = weight;
}
でいいじゃない
561デフォルトの名無しさん:2012/05/03(木) 18:57:25.02
フィールドを"_"で始まる名前にしておけばローカル変数と混同しなくて便利なのに
562デフォルトの名無しさん:2012/05/03(木) 19:42:58.87
スレッドをローカル変数だけに持ったままメソッドを抜けたらバグってワロタw
563デフォルトの名無しさん:2012/05/03(木) 19:59:06.56
日本語でおk
564デフォルトの名無しさん:2012/05/03(木) 22:15:25.77
テキストボックス(textBox)に値が入力されたらボタン(searchButton)を有効にする
ということをしたくて以下のように書いてみました。

this.textBox.addChangeHandler(new ChangeHandler(){
@Override
public void onChange(ChangeEvent event) {
if(!textBox.getValue().equals("")){
searchButton.setEnabled(true);
}
else{
searchButton.setEnabled(false);
}
}
});
これでも動作することはするのですが、テキストボックスからフォーカスを外さないとイベントが発生しません。
そうではなくテキストボックス入力中にボタンの有効・無効切り替えをできるようにしたいです。
KeyDownハンドラを使おうかとも思いましたが、一番キレイに実装するにはどうすればいいでしょうか?
565デフォルトの名無しさん:2012/05/03(木) 22:25:28.27
そんなサンプルそこらに落ちてるだろ。あほか
566デフォルトの名無しさん:2012/05/03(木) 23:58:30.87
チョンうぜぇ
567デフォルトの名無しさん:2012/05/04(金) 05:16:24.46
private static final なメンバは普通実行時に変わらないけど
GWTとかでJSからオブジェクトを受け取る場合は変える事も出来るんだろうか?
568567:2012/05/04(金) 05:26:05.20
transientとfinalのキーワードを持つフィールドは送受信されない。

という記述が見つかった。
finalなフィールドを外部から書き換える事は出来ないようだ
569デフォルトの名無しさん:2012/05/04(金) 09:53:52.99
ヒント: const
570デフォルトの名無しさん:2012/05/04(金) 12:32:44.07
Stringをbyte配列に変換するときに、
下記のように文字コードが指定できますが、
>byte charArray[] = target.getBytes("MS932");

byteって1バイトなので、文字コード指定したところで帰ってくる配列って変わらないんじゃないですか?
intなら各文字コードのマルチバイト文字の区切りで切り取るとかもできそうですが。

shift-jis読み取りのために一応つけてるんですが、これって意味がありますか?
571デフォルトの名無しさん:2012/05/04(金) 12:34:37.79
データ列だからバイト配列なだけだ
1byte=1文字ではない
572デフォルトの名無しさん:2012/05/04(金) 12:42:13.46
>>570
String s = "あ";
byte[] a = s.getBytes("MS932");
byte[] b = s.getBytes("EUC-JP");
byte[] c = s.getBytes("UTF-8");
System.out.println(Arrays.toString(a)); // → [-126, -96]
System.out.println(Arrays.toString(b)); // → [-92, -94]
System.out.println(Arrays.toString(c)); // → [-29, -127, -126]
指定した文字コードによって返ってくる配列ちゃんと変わるぞ
573デフォルトの名無しさん:2012/05/04(金) 13:10:10.71
>>572
サンクスです。ファイルから読み込んだ場合と混同してました。
そうか、Stringから変換した場合、内部で文字コード変換が走るんですね、納得です。
574デフォルトの名無しさん:2012/05/04(金) 13:12:16.67
たぶんわかってないなこれ
575デフォルトの名無しさん:2012/05/05(土) 09:09:01.77
質問です。インターネットアクセスするコードの
01 URL url = new URL("http://〜〜〜〜");
02 HttpURLConnection connection = (HttpURLConnection)url.openConnection();  ※throws IOException
03 InputStream is = conn.getInputStream();      ※throws IOException
04 InputStreamReader isr = new InputStreamReader(is, "MS932");  ※throws UnsupportedEncodingException
05 BufferedReader br = new BufferedReader(isr);
06 String s = br.readLine();                   ※throws IOException
07 conn.disconnect();
08 br.close();         ※throws IOException
という流れで

(1)
03のconn.getInputStream()にてIOExceptionが投げられた場合、conn.disconnect()の必要はありますか?

(2)
06のbr.readLine()にてIOExceptionが投げられた場合、
(A)conn.disconnect()の必要はありますか?
(B)br.close()の必要はありますか?


(1)はHttpURLConnectionのメソッドがエラー出してるんだしdisconnectされてて当然だろうと思うし
(2)はBufferedReaderのメソッドがエラー出してるんだしcloseされてて当然だろうと思ってしまいます。
特に(2)で仮にbr.closeしようと思ったらIOExceptionのcatch中さらにIOExceptionのcatchをするわけで
すごく変なコードになる気がします。
576デフォルトの名無しさん:2012/05/05(土) 10:26:12.67
disconnect はそもそもまったく呼ばなくてもいいものなので必要あるかといわれればない
close は呼ぶべき
例外は回復不能なエラーばかりとは限らないから自動的に close されたりはしない・・・例えば SocketTimeoutException とか
変なコードは Java 7 からの新しい try-with-resources を使えば解決
577デフォルトの名無しさん:2012/05/05(土) 11:12:45.03
全部をcatchせずにcloseするか判断するところまでthrowして、
そこでcatchしたらfinally内でcloseの方がすっきりしそう。
ライブラリやAPIの類が例外だしたらインスタンスの再利用はできないことが多いしw
578デフォルトの名無しさん:2012/05/05(土) 12:46:42.40
>>576->>577
ありがとうございます

作ってるアプリのいくつかの機能で共通点が多かったので
サブルーチンのようなprivateメソッドを作って
メソッド1〜3はできるだけシンプルになるようA〜D内で完結させようとしてたんですが
アドバイス読んで、まとめて受けるようにしてみました。

昔ちょっとC言語で遊んだだけだったので「例外出さずにfalseやnullで返してくれたら楽なのに」って思ってたんだけど
逆にそうされたらそこで毎回チェックしてクローズ処理しなきゃいけないわけで、まとめて受けられる例外の方が便利ですよね
でもgotoっぽい性質もあって怖そうですね

クラス修正前{
 機能1(){A;C;}
 機能2(){A;B;}

 private サブルーチンA(){処理、例外処理}
 private サブルーチンB(){処理、例外処理}
 private サブルーチンC(){処理、例外処理}



クラス修正後{
 機能1(){try{ A;C; }catch(){ どこかでエラー発生 }finally{ クローズ処理 } }
 機能2(){try{ A;B; }catch(){ どこかでエラー発生 }finally{ クローズ処理 } }

 private サブルーチンA()throw e{処理}
 private サブルーチンB()throw e{処理}
 private サブルーチンC()throw e{処理}
 private クローズ処理(){try{close()}catch{}}
579デフォルトの名無しさん:2012/05/05(土) 13:00:59.04
>>578
キャッチなしのtry{}finally{}を一つ入れるとキレイになりそう。
580デフォルトの名無しさん:2012/05/06(日) 14:10:27.96
JDK 1.7 がインストールできません。
@Windows7(x64) Ultimate
jdk-7u4-windows-x64.exe をD/L してダブルクリックしても
インストーラのダイアログが表示されません。
jdk-6u31-windows-x64.exe だと、問題なくインストールされます。
jre-7u4-windows-x64.exe をインストールしてパスを通したりしてますが
状況は変わりません。

どなたかお助けを。
581デフォルトの名無しさん:2012/05/06(日) 14:16:48.07
もう一回ダウンロード
582デフォルトの名無しさん:2012/05/06(日) 14:31:40.15
>>581
ありがとうございます。
ダウンロードし直してみましたが、ダメでした。
※1回目と2回目のファイルは同一でした。

困りました。
583デフォルトの名無しさん:2012/05/06(日) 15:38:53.68
あきらめないで!
584デフォルトの名無しさん:2012/05/06(日) 18:05:42.44
質問です。以下の文をもっとスマートに書く方法ってありますか?
swich文のcaseごとに同じメソッドを重複して書くのがちょっと微妙な気がするのです。

private void doWork(int stage) {
switch (stage) {
case 0 :
break;
case 1 :
method_1();
break;
case 2 :
method_1();
method_2();
break;
case 3 :
method_1();
method_2();
method_3();
break;
case 4 :
method_1();
method_2();
method_4();
break;
default :
break;
}
}
585デフォルトの名無しさん:2012/05/06(日) 18:12:30.28
>>584
なんか設計からして変な気がする。

のはさておき、重複して書くのは常に悪というわけではない。
読み易さのためなら有る程度の重複は許される。
スマートってのは読み易いということだ。
君がこれからやろうとしている事はコードゴルフの類いなので、
僕のスマートの定義ではこれ以上のスマートな書き方は無い。

むしろ設計を見直す。
586デフォルトの名無しさん:2012/05/06(日) 18:13:48.87
他に思いついたのは以下ですが、これも微妙な気がして。

private void doWork(int stage) {
if (stage == 0) break;
if (stage > 0) method_1();
if (stage > 1) method_2();
if (stage == 3) method_3();
if (stage == 4) method_4();
}
587デフォルトの名無しさん:2012/05/06(日) 18:17:13.52
>>585
設計が変ですかね。確かに読みやすい気はしますが
記述的に無駄が多い気がして。
588デフォルトの名無しさん:2012/05/06(日) 18:22:36.42
ほうら、スマートだろう?

private void doWork(int stage) throws Exception {
 getClass().getMethod("method_" + stage).invoke(this);
}
589デフォルトの名無しさん:2012/05/06(日) 18:47:58.16
>>588
うーん、見た目スマートですけど
コレジャナイ感がします。
設計が変というのはint stageごとにmethod()作れってことですかね
590デフォルトの名無しさん:2012/05/06(日) 18:49:39.21
>>586 の方が良いだろ。

あと、ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!
private void doWork(int stage) {
  switch (stage) {
    case 0 :
      break;
    case 1 :
      method_1();
      break;
    case 2 :
      method_1();
      method_2();
      break;
    case 3 :
      method_1();
      method_2();
      method_3();
      break;
    case 4 :
      method_1();
      method_2();
      method_4();
      break;
    default :
      break;
  }
}
591デフォルトの名無しさん:2012/05/06(日) 19:00:54.25
頭の中でのイメージは、代入させるint stageの値によって
doWork()内での処理ブロックの通過のさせ方を変えるような書き方をしたいんです。
たとえば、stageに4が代入されれば、method_1()を通過、method_2()を通過、
method_3()を飛ばしてmethod_4()を通過という処理をさせたいんですが、
これを視覚的にわかりやすく書けないものかとおもいまして。
592デフォルトの名無しさん:2012/05/06(日) 19:36:16.90
ステートマシンだろ?
どうせ複雑になったらわかんなくなるからステートマシン図をちゃんと描いて保存しておいて
ソースの見やすさなんて無視でいいよ
593 ◆b.MfON/oOo :2012/05/06(日) 19:39:51.48
>>591 どぅ?

private void doWork(int stage) {
  if (stage == 0) break;
  if (stage > 0) method_1();
  if (stage > 1) method_2();
  if (stage >= 3){
    if (stage == 3) {
      method_3();
    } else {
      method_4();
    }
  }
}
594デフォルトの名無しさん:2012/05/06(日) 19:42:31.76
int[] t = { 0, 1, 3, 7, 11 };
int x = t[stage];
if ((x & 1) != 0) method_1();
if ((x & 2) != 0) method_2();
if ((x & 4) != 0) method_3();
if ((x & 8) != 0) method_4();
595デフォルトの名無しさん:2012/05/06(日) 19:54:54.81
>>588>>584>>590>>586>>593 >> >>594

メンテする視点で考えんと
596デフォルトの名無しさん:2012/05/06(日) 19:56:45.23
ナに言ってんだかw
597デフォルトの名無しさん:2012/05/06(日) 19:58:06.49
Javaは>>594みたいなことをする言語じゃないなとは思った。
598デフォルトの名無しさん:2012/05/06(日) 20:03:19.01
>>592
画像のレイヤー表示的なことをしたいんです。でも同じようなもんですよね。

>>593
ああ、これは見やすいかもです。

>>594
う、頭から煙が。苦手な分野です。


またひとつ思いつきましたけど、いけてない気がします。
private void doWork(boolean flag_1, boolean flag_2, boolean flag_3, boolean flag_4) {
  if (flag_1) method_1();
  if (flag_2) method_2();
  if (flag_3) method_3();
  if (flag_4) method_4();
}
599デフォルトの名無しさん:2012/05/06(日) 20:06:38.47
そんなんならbooleanの配列でいいじゃん
600デフォルトの名無しさん:2012/05/06(日) 20:11:31.57
>あと、ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!

なんで?
601デフォルトの名無しさん:2012/05/06(日) 20:26:47.18
>>599
こうですか?わかりません。

private static boolean[][] stage =
  { //mth1 //mth2 //mth3 //mth4
    { false, false, false, false },//stage 0
    { true, false, false, false },//stage 1
    { true, true, false, false },//stage 2
    { true, true, true, false },//stage 3
    { true, true, false, true } //stage 4
  };

private void doWork(boolean[] flag_) {
  if (flag_[0]) method_1();
  if (flag_[1]) method_2();
  if (flag_[2]) method_3();
  if (flag_[3]) method_4();
}
602デフォルトの名無しさん:2012/05/06(日) 20:32:18.63
クズコード化プロジェクト?
603デフォルトの名無しさん:2012/05/06(日) 20:35:27.09
>>602
ああ、、そんな気がしてきましたorz
604デフォルトの名無しさん:2012/05/06(日) 20:36:03.79
どんな案が出てきたところで>>584がメモリを少々食いつつも
もっとも高速で実行できるということで良いですか?
605デフォルトの名無しさん:2012/05/06(日) 20:43:03.77
高速?
求めてたのはスマートな書き方じゃなかった?
606デフォルトの名無しさん:2012/05/06(日) 20:46:17.41
そうだな。
コードゴルフではなく、>>591 は 「視覚的にわかりやすく書けないものか」 と言っている。
607デフォルトの名無しさん:2012/05/06(日) 20:48:38.93
>>604は私ではないですが、
見た目重複が少なく、視覚的にわかりやすい書き方を求めてます。
かつ、できれば処理的にも軽いほうがいいです。
608デフォルトの名無しさん:2012/05/06(日) 20:50:03.22
馬鹿には無理
609デフォルトの名無しさん:2012/05/06(日) 20:57:16.37
>>608
そうでしょうか。
では>>585でFAということにしようと思います。
お付き合いありがとうございました。
610デフォルトの名無しさん:2012/05/06(日) 20:57:23.54
\u3010 の形式を普通の文字にしたいのですが、
どうやるのが一般的なんでしょうか?
\u除いてparseIntで文字コードに変換まではできたのですが、
そこからStringに戻すとこで躓いてます。
そもそもそんなめんどくさいことしなくても、
一発で変換できるような関数があるのでしょうか?
611デフォルトの名無しさん:2012/05/06(日) 20:58:40.74
>>590の条件はともかくステートマシンならこんな感じで作るわ

// State間の情報は、Contextのオブジェクトで管理
Context context = new Context();
Stage1 stage1 = new Stage1( context );
Stage2 stage2 = new Stage2( context );
Stage3 stage3 = new Stage3( context );

// 各Stateが、doを実行した際返すStateを指定する。
// 例えば、doの結果が成功した場合の次のStateは、SuccessStateで指定し、
// doの結果がゲームオーバーした場合の次のStateは、GameOverStateで指定する。
stage1.setSuccessState( stage2 );
stage1.setGameOverState( stage3 ):
// クラスによってどんなset〜Stateを持ってるかはバラバラ。この場合だと、実行完了後に必ずstate1に戻る
stage2.setNextState( state1 );
stage3.setNextState( state1 );

// ステートの実行は、こんなループやら、イベントを使って実行する。
State state = stage1;
while( null != state )
{
  state = state.do();
}
612デフォルトの名無しさん:2012/05/06(日) 21:04:53.37
そういや、doって予約語だったな。うかつだった。
613デフォルトの名無しさん:2012/05/06(日) 22:04:28.04
ステートをオブジェクトとして扱う必要あるか?
それならもうストラテジーやコマンド使って設計したほうが綺麗だと思う。

ていうかなんのコードだっけ?ゲーム?
614デフォルトの名無しさん:2012/05/06(日) 22:09:09.66
オブジェクトにする理由はこんな感じか
1.ステートの中にもステートが存在するし、ステート自体にも固有状態が存在する。
2.典型的なステートの再利用が可能になる。また、クラス追加による拡張が可能になる。
あと、基本構造はコマンドパターンだな。
615デフォルトの名無しさん:2012/05/06(日) 22:18:01.48
>>613
匿名クラスが追加されてからは、メソッド内に
処理を埋め込めたりするんで記述がやや楽。

private State state1;
private State state2;
private State state3;

state1 = new State{ public State action(){ return state2; } };
state2 = new State{ public State action(){ return state3; } };
state3 = new State{ public State action(){ return state1; } };

616デフォルトの名無しさん:2012/05/06(日) 23:04:25.02
何が求められているコードなのかにもよる
メモリなのか速度なのか
617デフォルトの名無しさん:2012/05/06(日) 23:06:29.55
そういうのはコードそのものの美しさなんかより文書や図と機械的に対応してるほうが重要だと思う
618デフォルトの名無しさん:2012/05/06(日) 23:09:07.43
>>616
パフォーマンスなんて作ってからでいいだろ
619デフォルトの名無しさん:2012/05/06(日) 23:12:37.75
(ノ∀`) アチャー
620デフォルトの名無しさん:2012/05/06(日) 23:20:56.91
>>618
それはSI屋の発想な気がする。
621デフォルトの名無しさん:2012/05/06(日) 23:21:14.06
え?
622デフォルトの名無しさん:2012/05/06(日) 23:25:22.54
パフォーマンスなんて作ってからでいい (キリッ
623デフォルトの名無しさん:2012/05/06(日) 23:34:08.56
>>619=622 ?

>>620
do you know "premature optimization is the root of all evil" ?
624デフォルトの名無しさん:2012/05/06(日) 23:50:00.61
>>623
一年生かなんかだろ。そういう時期もあるさ
625デフォルトの名無しさん:2012/05/06(日) 23:51:37.98
>>601



private void doWork(int stage) {
boolean[][] flag_ = {
{ false, false, false, false },
{ true, false, false, false },
{ true, true, false, false },
{ true, true, true, false },
{ true, true, false, true }
};
if (flag_[stage][0]) method_1();
if (flag_[stage][1]) method_2();
if (flag_[stage][2]) method_3();
if (flag_[stage][3]) method_4();
}



>>594
626デフォルトの名無しさん:2012/05/06(日) 23:53:54.24
>>624
無駄に速度に拘ってプログラム完成させられないやつって初心者〜中級者に多いよな
627デフォルトの名無しさん:2012/05/06(日) 23:55:44.05
ありがちだわな
628デフォルトの名無しさん:2012/05/07(月) 00:00:49.77
パフォーマンス改善しました!
→ほとんど誰も使わない機能でした

パフォーマンス改善しました!
→計画が変わってリリースされませんでした

パフォーマンス改善しました!
→「どの位速くなったの?」「さあ、わかりません」
629デフォルトの名無しさん:2012/05/07(月) 00:01:48.02
パフォーマンス改善しました!
→コードが汚すぎてメンテ出来ません
630デフォルトの名無しさん:2012/05/07(月) 00:06:01.55
プログラミング言語 Java のコンセプトを考えれば分かる罠
631デフォルトの名無しさん:2012/05/07(月) 00:12:22.11
最初から最適化意識しなきゃならん状況ならC++つかうわな
サーバーサイドだってサーブレットなんて使わずfcgi使うだろうし
632デフォルトの名無しさん:2012/05/07(月) 00:17:35.13
速度にこだわるならjava使うのやめましょう
633デフォルトの名無しさん:2012/05/07(月) 00:19:33.84
Javaは充分速いだろ
たしかに最速じゃないけど確実に上位だ。
634デフォルトの名無しさん:2012/05/07(月) 00:27:31.79
言語レベルの問題じゃなくて、ライブラリモデル(アルゴリズム)の問題なんだけどな
C++と大体似たコード書いて、newとか動的確保を最小限に抑えれば、C++に近い速度は出る
ただ、普通に使うとStringを始めライブラリがnewした領域に値をコピーするスタイルを取ってるもんで、
文字列やコンテナの一部をイテレーターで保持しとけばいいだけというケースでは大きく速度を引き離される

極力無駄なコピーを減らせばいいが、そんな事をすればJavaの標準ライブラリが逆に足かせになってしまう

635デフォルトの名無しさん:2012/05/07(月) 00:41:59.70
private <A, B, java.lang.String> void test(List<java.lang.String> l){

}

なんでメソッドの定義でだけjava.lang.Stringって書けないんですか?
引数のList<java.lang.String>はエラーが出ません

private <A, B, String extends java.lang.String> void test(List<String> l){

}

とかしておけばいいんですか?
636デフォルトの名無しさん:2012/05/07(月) 01:57:26.50
型パラメータにクラス使われたらワケワカメだろ
637デフォルトの名無しさん:2012/05/07(月) 04:36:35.47
ステートマシンの実装ならinvokeDynamic使うのもいいぜ
638デフォルトの名無しさん:2012/05/07(月) 15:45:18.41
Forte for Java ってどうなったんですか?
フリーの統合開発環境でこれDLしなさいと言われたのですが、名称が変わったのでしょうか?
639638:2012/05/07(月) 15:47:16.93
ちなみにWindows7 Enterprise 32ビット版です
他にお勧めなのとかあったら教えてください
640デフォルトの名無しさん:2012/05/07(月) 15:55:30.44
他にじゃなくてeclipse一択
641デフォルトの名無しさん:2012/05/07(月) 17:27:13.20
642デフォルトの名無しさん:2012/05/07(月) 17:37:30.95
Javaでエンジニアやってる派遣です。
某自動車メーカーに派遣切りされて生きていく希望がありません。
派遣会社からも全然新しい配属先を紹介していただけません。
どうすればいいでしょうか?
643デフォルトの名無しさん:2012/05/07(月) 17:46:40.52
さあ
おれに質問されてもなあ…
644デフォルトの名無しさん:2012/05/07(月) 17:49:30.47
いたちがい
645デフォルトの名無しさん:2012/05/07(月) 17:58:02.04
>>640
NetBeansもあるだろ。
ま、ここで質問する奴にはEclipseの方が向いてそうだからいいけど。
646デフォルトの名無しさん:2012/05/07(月) 18:28:31.53
>>643,644
質問じゃなくて相談してるのです!スレタイに相談ってかいてあるじゃないですか!
647デフォルトの名無しさん:2012/05/07(月) 18:28:55.41
>>640>>641
ありがとうございました
648デフォルトの名無しさん:2012/05/07(月) 19:23:55.74
ttp://sunjava.seesaa.net/category/3648259-1.html
ここを参考に勉強中なのですが以下のようなエラーが出て行き詰っています。
自分なりにぐぐってみたりはしてるのですが解決策が見つからず困っています。
AccessのODBCドライバが32bitしかないようでしたので、odbcad32.exeからデータソースは登録されています。
どなたかご助言を頂けないでしょうか。
別スレで質問したのですがこちらのスレの方が適切だと思いましたので、改めて宜しくお願いします。

環境:Win7 64bit Java SE6
エラー内容:[Microsoft][ODBC Driver Manager] 指定された DSNには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています
649デフォルトの名無しさん:2012/05/07(月) 19:54:23.55
ウインドーズ環境なのでマイクロソフトの有料サポートに電話をすれば解決します。
650デフォルトの名無しさん:2012/05/07(月) 20:20:59.41
口周りは青くて顎鬚は濃かったよ
651デフォルトの名無しさん:2012/05/07(月) 20:29:46.67
Windows2000のマシンにJava runtimeを入れたいのですが、Version 6 Update 32 は
サポート対象から外れたのか、インストールに失敗してしまいます。
Version6 の最初の方のUpdateはインストール出来たと思うのですが、Windows2000を
サポートしている最後のJava runtimeのUpdateは何でしょうか?
652デフォルトの名無しさん:2012/05/07(月) 20:49:19.61
Windows 2000マシンは結局ウインドーズ環境ですよね?
マイクロソフトのジャバ部門に電話して有料サポートを受けましたか?
653デフォルトの名無しさん:2012/05/07(月) 21:26:13.26
>>651
javaSE6リリースノート-サポート対象のシステム構成[http://java.sun.com/javase/ja/6/webnotes/install/system-configurations.html]を見ると、Windows2000SP3とSP4でサポート対象になってるみたいですよ。
654デフォルトの名無しさん:2012/05/07(月) 21:47:23.98
>>651
ここから前のバージョンへ遡って実際にいれて試したらどうですか?
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
655デフォルトの名無しさん:2012/05/07(月) 23:49:02.49
初心者ですが、失礼します。
データベースからデータ読み込むためにSQL文で
select*from テーブル名 where 主キーの列名 ? and ?;
として、バインド変数の?の部分には主キーの最初の行の値と最後の値を
入れて、すべての行を順に取り出すことは可能ですか?
可能だとしたら、どのように?の値を設定すればよいのでしょうか?
最初の行と最後の行が特定できる状況で、その値をそのまま指定するのはなしで
お願いします。
656デフォルトの名無しさん:2012/05/07(月) 23:51:50.90
select * from テーブル名 where 主キー between ? and ? order by 主キー
こんな感じ?
657デフォルトの名無しさん:2012/05/07(月) 23:52:28.73
PreparedStatementでググれ
最近これ使ってるの見ないけど
658デフォルトの名無しさん:2012/05/07(月) 23:58:20.06
テーブル内のすべての行を条件無しで取りたいっていう意味なら
select * from テーブル名
だけでおk
659デフォルトの名無しさん:2012/05/08(火) 00:04:07.71
質問嫁
660デフォルトの名無しさん:2012/05/08(火) 00:07:18.24
>>658
select*fromテーブル名
だと、一気にすべての行が取り出されるということはないでしょうか?
1行ずつ取り出すたびに処理を行ってから次の行という感じで回したいのですが・・・。

条件を指定する例や挿入の例はググると多いのですが、無条件の例が見当たりません。
最初の行と最後の行の値を(変数のような方法?で)指定できないでしょうか?
661デフォルトの名無しさん:2012/05/08(火) 00:13:00.57
whereで全範囲を指定しても同じだぞ
だって意味的に同じだし
662デフォルトの名無しさん:2012/05/08(火) 01:02:08.13
どんなググり方したのかお兄さんに教えてごらん
663デフォルトの名無しさん:2012/05/08(火) 01:21:37.45
なるほど。
言われてみれば意味的には同じですね…。
手元にデータないんで明日試してみます!
>>662
バインド変数 条件値 パラメータ 値の設定 PreparedStatement.set
などでググってたんですけど力及ばずでした。
664デフォルトの名無しさん:2012/05/08(火) 10:57:26.80
GoogleによるJava著作権侵害裁判、ほぼOracleの勝ちが確定、崖っぷちAndroid、どうするコマンド?
http://engawa.2ch.net/test/read.cgi/poverty/1336439613/
665デフォルトの名無しさん:2012/05/08(火) 11:18:31.35
グーグルが関わって作ったサービス(グーグルアプリ)って結構終了しちゃったよね。
ワールドワイドで優秀なプログラマー集めていた割には、三年以上持ちこたえてるサービスってグーグルマップかユーチューブとか買収したのだけになっちゃったね。
666デフォルトの名無しさん:2012/05/08(火) 11:21:43.94
j++(だったか?)が駄目ならandroidも当然駄目でしょ
667デフォルトの名無しさん:2012/05/08(火) 11:47:41.06
いろいろな意味でグーグルはそのうちフェイスブックに買収されるんじゃないのかなぁ。
せっかく手に入れたのにモトローラーどうするんだろう・・・
668デフォルトの名無しさん:2012/05/08(火) 12:13:04.82
Dalvik仮想マシン(VM)も Java も改変しちゃったらアウトだろw
669デフォルトの名無しさん:2012/05/08(火) 12:23:26.90
>>664
そのすれ、ソニー(psp, ps vita, ps3(mono))のステマがいるみたいだけど、最近のソニーの開発部門はc# monoのマーケチングに力入れることにしたの?
670デフォルトの名無しさん:2012/05/08(火) 16:05:09.80
ちゃんと金払ってJVM版のAndroid作ればいいんじゃね。
Googleにその金があるか分からんけど
671デフォルトの名無しさん:2012/05/08(火) 16:19:41.76
document.write('<param name="movie" value="index.swf' + n + '" />');

きれいなスライドショーサイトのソースを見たらこうなってたんですが
index.swf' + n + '" 'ってどういう意味ですか
672デフォルトの名無しさん:2012/05/08(火) 17:01:31.32
WindowsでSwingでマウスを使ったゲームを作りたいのですが、
マウスカーソルを指定位置に移動させるにはどうすればいいでしょうか?
673デフォルトの名無しさん:2012/05/08(火) 17:15:51.48
java.awt.Robotクラスを調べろ
674デフォルトの名無しさん:2012/05/08(火) 17:17:19.50
>>671
それjavascript
しかも、nはソース書いた奴に聞け。
675デフォルトの名無しさん:2012/05/08(火) 18:28:10.63
そうですか
ありがとうございます
676デフォルトの名無しさん:2012/05/08(火) 19:01:03.17
>>669
vita以降の開発環境がmonoで対応プラットフォームがvitaとPlayStation Suiteだから営業が頑張ってるんだよ。
PSSはせっかくdalvik捨てたのにH/W制限して遅いしAPIもUIもAndroidと大差ないよ。
mono自体HotSpot比べられるもんじゃないし。あとマルチバイト文字通らない。

vitaの市販ゲームはC#ネイティブだから別の話だけど。
677デフォルトの名無しさん:2012/05/08(火) 19:13:25.05
ていうかAIPが問題なんじゃなくてVMに互換性がないことが問題なのになんでoracleはそこ主張しないんだ。
678デフォルトの名無しさん:2012/05/08(火) 19:18:30.08
使用料をケチるより、もっとあくどいコト考えてそうだな  > Google
679デフォルトの名無しさん:2012/05/08(火) 19:35:33.91
>>678
そのすれにポツンと書いてあるからもう知ってる人多いんじゃないの?
680デフォルトの名無しさん:2012/05/08(火) 19:47:43.94
>>679
kwsk
681デフォルトの名無しさん:2012/05/08(火) 19:51:24.26
>>677
APIに著作権があるかとかのこと?
というかそれ、知らない人向けのIT,WEB技術系向けのネタだし、もっと騒いでもらって新聞やテレビなど一般人向けでもっともっと取り上げられて
「オラクル」「ジャバ」の商標とか(クライアント・グーイ向け)プラットフォームを一般人に広く公知できれば十分○○のもとがとれる。
682デフォルトの名無しさん:2012/05/08(火) 20:05:35.36
>>680
    Google 「API は著作権保護対象ではない」
                ↓
         「Google製の Java互換言語!」  と主張できて、Google(゚д゚)ウマー!!
683デフォルトの名無しさん:2012/05/08(火) 20:13:37.31
J++ってのは、++がさらに増えてJ#に進化して今じゃ.NETの一つなんですよね?
684デフォルトの名無しさん:2012/05/08(火) 20:28:24.53
>>681
oracle:APIはプロプラエタリでsunから買ったからgoogleが侵害してる。
google:javaの商標や権利は買い取ったけどAPI買ったわけじゃないだろ。
googleの証人sunの元CEO:javaはオープンソースだからAPIはプロプラエタリじゃない。GPLコードだ。
oracle:TimSort.javaの配列の範囲チェックする9行が一致してる。特許侵害だ。
Timsort書いた人:PythonのTimSort移植してOpenJDKに寄与した後にandroidに関わったから範囲チェックも似てるかもしれない
oracle:ほら認めたぞ。金払え。
googleの弁護士:特許侵害だとするAPI作ったのはJCPだけどJCPはどこにも対価要求してないよね?

8週間かけてこういう事やってる。
685デフォルトの名無しさん:2012/05/08(火) 20:36:43.83
>>683
J++が進化したのはC#
J#は独自拡張の多いJ++とは全く違って.NET上にほぼ純粋なJavaを実装したもの
686デフォルトの名無しさん:2012/05/08(火) 21:24:43.62
>>684
DOCOMO(テレホン大手), SONY(コンテンツ大手), IBM(インテグレート大手)などは、サン(元オラクル)にジャバのライセンスを支払ってるけど、グーグル(広告大手)は支払ってないでしょ。それについて両者は何ていってるの?
687デフォルトの名無しさん:2012/05/08(火) 21:37:44.30
>>684
APIを実装したライブラリなら著作権が働くのは解るが、
API自体に著作権って効果あったのか?
Wineとか、GPLによるAPI実装がマズくならね?
688デフォルトの名無しさん:2012/05/08(火) 22:43:58.27
>>655
「すべての行を順に取り出すこと」をしたいなら
ttp://idocsq.net/page/428 とか?
689デフォルトの名無しさん:2012/05/08(火) 22:45:46.06
>>686
元々javaの商標を商用利用して実行環境提供する時に商標使う金と互換テスト用のTCK使用料があって、
商業として実行環境に対しjavaの名とコーヒカップとDuke使うのに金払う必要があったんであってjavaの実装と
Dukeはオープン化したから実装使うことに問題はないしsunは有料サポートと組み込みに載せることで収益化してたから
Sunがjava持ってた頃は何も言わなかった。

そもそもandroid自体harmonyベースだしdalvik VMは仕様も実装も自前でコードはApacheとGPLでカーネルはlinuxだから問題ないんだけど、
goslingが言語はjavaでもTCK通ってないから実行環境に互換性がなくてSEもMEも動かないことに怒ってたくらい。

これがoracleはライセンス料をスルーする手段だと主張したけど、googleは自分たちがjavaを持つ手段を模索してandroid買収したから
ライセンス云々のためじゃない。(gPhoneにjava載せるためにクリーン実装してライセンス料払うか考えたけど丁度androidがあった)
oracleはJavaFX phoneがコケたから特許を主張して金取ろうとしてるだけだと平行線。(当時はNokiaがトップでnokia端末にFX載せてた)
だからgoogleがフェアユースかどうかがまだ決まってない。

それに加えてoracleはjavaを買い取った時に全てを買い取ったからAPIも含まれて、それは特許に守られてるから金払えと主張してる。
それに対してAPIはoracleが持ってる特許に含まれないとgoogleが主張して平行線。
今の論点はオープンソースコードがプロプラエタリで独占的で特許も発生するか揉めてるところ。

そこでドキュメンテーションにコピーライトが書いてあるからAPIも特許に含まれると主張してるのがoracleなんだけど、
仕様と実装を挿げ替えてるわけだから論点が噛み合ってないまま持ち越し。

>>687
んでこれを踏まえてAPIは特許で守られてるのか陪審員が決めかねてるからそれをこれから決める。
要するにOSI認証ライセンスが特許で覆されるかどうかの争いになってるからいま騒ぎになってる。

javaのAPI使って実装されてるJVM言語が全部ダメにからそっち界外じゃ脅威だよ。OpenJDKのクラスパス例外も根本から破堤する。
googleが負けたらOSI認証ライセンスが役に立たなくなるからWineとか訴えられて全部ダメになる可能性もあってそっち方面も騒いでるよ。
690デフォルトの名無しさん:2012/05/08(火) 22:49:41.02
改行ヘタ杉
691デフォルトの名無しさん:2012/05/08(火) 22:56:11.48
javaが本当に出始めたときに心配したことが、まさに今問題になってるってことか。
692195:2012/05/08(火) 23:06:06.64
>>207
ありがとうございます。!
staticブロックは目からうろこでした。
693デフォルトの名無しさん:2012/05/08(火) 23:12:15.82
いえいえ
694デフォルトの名無しさん:2012/05/08(火) 23:14:23.02
>>673
ありがとうございます。
FPSみたいなもの作っているのですが、もしかしてJavaには無いんじゃないかとヒヤヒヤしてました。
695デフォルトの名無しさん:2012/05/08(火) 23:34:51.71
>>689
著作権と特許権は別物ですよ。
とくに創作・著作物についての権利と侵害のクレームのための権原は、特許権と違ってどこかに申請してレジストするようなものではありません。
長文をグダグダ書いてみても、法律をしっかりと勉強したこともない一般人と同じくあなた自身もよく分かってないようなので、このネタを追いかけるとしてもこれ以上の議論に踏み込むのはあなたの知的レベルじゃちょっと難しいんじゃないですかね。
696デフォルトの名無しさん:2012/05/08(火) 23:38:50.86
この一連の訴訟と
APIは特許じゃないのが業界の共通認識
って話がどう関わってるか今ひとつわからん。
そんなんをOracleが訴えても負けるの明らかだろうから
本質はもっと別のところにあるんだよね?

697デフォルトの名無しさん:2012/05/09(水) 00:03:35.94
グダグダそのまま行くとグーグル弁護団の術中にまんまとはまっちゃうと思いますよ。
698デフォルトの名無しさん:2012/05/09(水) 00:55:37.49
>>696
著作権侵害の方は一部認められたけど特許侵害が認められなくて応戦してるってのもあるんじゃないの?
API仕様が技術盗用と言ってるから特許ってことにしたいんだろうし7件特許侵害で攻めるところを2件で攻めることになったし。

その共通認識に関わる裁判で著作権で喧嘩売ったことはあっても特許で喧嘩売ったことはなかったからネタにされてるのもあると思う。
699デフォルトの名無しさん:2012/05/09(水) 08:17:37.44
GoogleとOracleがいつまでも喧嘩していると、
Java以外の陣営に塩送っているようなもんだと思うけど…
どっちも協力しようなんて気はないんだろうな。
700デフォルトの名無しさん:2012/05/09(水) 08:38:50.92
>>699
Oracleも十分儲かってるのに、ちょいとがめつい感じするな。
701デフォルトの名無しさん:2012/05/09(水) 11:24:42.11
>>693
またお前か
702デフォルトの名無しさん:2012/05/09(水) 11:39:54.78
PC等 [プログラム]
        【License】ライセンス総合【利用許諾】
http://toro.2ch.net/test/read.cgi/tech/1266247461/
703デフォルトの名無しさん:2012/05/09(水) 21:02:38.73
質問。packageは、開いているか閉じているか?
どっちよ?

・開いている・・・既存のpackageにいくらでもclassやらinterfaceを追加してよい
・閉じている・・・一度リリースしたpackageには何も追加してはいけない

どっちでとらえるかによってpackageスコープの意味が変わるよねぇ。
704デフォルトの名無しさん:2012/05/09(水) 21:05:13.31
誤解を招きそうなので訂正

・開いている・・・既存のpackageにいくらでもclassやらinterfaceを追加してよい
・閉じている・・・既存のpackageには何も追加してはいけない
705デフォルトの名無しさん:2012/05/09(水) 22:09:30.86
packageにクラス追加していいか否か決めるのはJARファイル提供者でなかったっけ。
確かMANIFESTファイルで指定する。

それとは別の倫理的な面で、package利用のライセンスの確認は必要。
706デフォルトの名無しさん:2012/05/09(水) 22:17:22.94
「既存のpackage」 って言ってるのに・・・
707デフォルトの名無しさん:2012/05/09(水) 23:54:49.64
既存パッケージのJARファイルのManifestにシールが張ってなければ、
既存のパッケージの名前空間にあとからユニットテストクラスとか追加し放題だったような
708デフォルトの名無しさん:2012/05/10(木) 00:37:06.77
最近勉強始めて、やさしいJava3版が中古で売ってたんで買おうと思うんですが、あんまり古い教材だとよろしくないですか?
709デフォルトの名無しさん:2012/05/10(木) 01:03:24.38
入門書なら古い新しいはどうでもいいだろ
知識がつけばググって最新版の機能を補完できるようになる
それより、入門書としてまともかどうかが大事
最新でも嘘だらけのクソ本じゃ意味ない
むしろJavaが無名だった頃の方がしっかりしてる事もある
当時のパイオニアが書いてるからな
710デフォルトの名無しさん:2012/05/10(木) 01:13:29.18
>>707
シール機能があること初めて知った。
なるほどね。逆を言えば、シールしてなければ追加しても構わない
という意思表示もできるわけか。(シール使ってる人ほとんど居なそうだけど)
社内で複数jar作る場合とか、分散可能なパッケージか
分散しちゃいけないパッケージかって管理できるわけだ。
711デフォルトの名無しさん:2012/05/10(木) 01:25:29.57
>>709
ありがとうございます!
712デフォルトの名無しさん:2012/05/10(木) 07:30:44.63
>>710
泥棒に入られたくないために鍵があるのか、
なら鍵がかかっていなければ泥棒されてもいいって意思表示なんだな。

飛躍してね?
713デフォルトの名無しさん:2012/05/10(木) 07:59:16.63
native2asciiの質問なんですが、あれってサロゲート領域の文字に対して何か
気をつけることってありましたっけ?

中国のU+21300の文字をUTF-8で埋め込んでnative2asciiすると\ud844\udf00と処理
されて、サロゲートに変換しているようなんですが
これにnative2ascii -reverseをすると、そのまま\ud844\udf00が返ってきてしまいます。
714デフォルトの名無しさん:2012/05/10(木) 08:01:32.29
そもそも、自分のパッケージじゃないのに追加する意味がわからん。
715デフォルトの名無しさん:2012/05/10(木) 11:43:41.13
ウェブサイトに掲載されているプログラムで解らないことがあるのですが、ここで質問してもいいですか?
716デフォルトの名無しさん:2012/05/10(木) 11:44:50.22
まかせろ
717デフォルトの名無しさん:2012/05/10(木) 13:32:05.40
簡単なことなら誰かが答えてくれる
難しいことはスルーされる
718715:2012/05/10(木) 14:27:58.12
class Kanzen
{
  public static void main(String args[])
  { int n;
    for(n=2; n<1000; n++)
      if (Test(n)) ・・・@
        System.out.println("完全数 : " + n);
  }

  static boolean Test(int n)・・・A
  { int i,k;
    for(k=0,i=n/2; i>0; i--)
      if (n%i==0) k+= i;
     if (n==k) return true;・・・B
     return false; ・・・C
     //else return false;
  }
}

プログラム超初心者です。
2〜1000までの完全数を計算するプログラムで
計算内容は理解できるのですが、プログラムの構造と流れが理解できません。

@〜Cがどういった役割をするのかと処理の流れを教えてください。
719デフォルトの名無しさん:2012/05/10(木) 14:39:31.93
関数とかメソッドでググれ
どうでもいいけどC脳すぎるだろあんまり当てにしないほうがいいぞそれ
Cにしたってkをforの中で初期化する意味がわからん
720デフォルトの名無しさん:2012/05/10(木) 15:02:15.09
s=0;
for(k=0; k<10; ++k) s+=k+1;
assert s==55;

最新のjdk(java7)の言語機能や提供ライブラリを使っても、1から10までの和(有限個数のsum)はこの古典的なfor loopの方法しかないのでしょうか?
721デフォルトの名無しさん:2012/05/10(木) 15:11:52.73
小学校か中学校、
最悪でも高校では数列の和について何か習うんじゃね?
722デフォルトの名無しさん:2012/05/10(木) 15:16:34.63
完全数ってなんだ?
723デフォルトの名無しさん:2012/05/10(木) 15:31:56.52
公式が使えるならわざわざプログラムなんかしません。
本当は内積(級数)や加算集合、外部イテレーションの論点なんですけど簡単に書きすぎたので逆に何の分からないですね。
本当はfuncの定義は任意で、例えば簡単にx+1とすると1..10の和と同等ですが。

func=(int x)->x+1;
s=0;
for (k=0; k<10; ++k) s+=func(k);
assert s==55;

最新のjdk(java7)の言語機能や提供ライブラリを使っても、1から10までの和(有限個数のsum)はこの古典的なfor loopの方法しかないのでしょうか?
724デフォルトの名無しさん:2012/05/10(木) 15:36:32.97
>自然数nの約数の和S(n)が2nとなるとき、nは完全数であるといわれる。たとえば、6や28は完全数である。なぜなら
>
> 2・6=1+2+3+6
>
> 2・28=1+2+4+7+14+28
>
>だからである。S(n)が2nより大きいときは過剰数、S(n)がnより小さいときは不足数とよばれる。
725デフォルトの名無しさん:2012/05/10(木) 15:38:22.12
>>723
"珠玉のプログラミング"と言う本の最初のエピソードを読め。
726デフォルトの名無しさん:2012/05/10(木) 15:47:30.17
Programming Pearls, Second Edition by Jon Bentley.
Addison-Wesley, Inc., 2000.

[new] What's new on this web site?
From The Book
Table of Contents
Preface
Part I: Preliminaries
Column 1: Cracking the Oyster
Column 2: Aha! Algorithms [Sketch]
Column 4: Writing Correct Programs [Sketch]
Column 5: A Small Matter of Programming [Sketch]
Part II: Performance
Column 7: The Back of the Envelope
Column 8: Algorithm Design Techniques [Sketch]
Part III: The Product
Column 14: Heaps [Sketch]
Column 15: Strings of Pearls
Epilog to the First Edition
Epilog to the Second Edition
Appendix 2: An Estimation Quiz
Appendix 3: Cost Models for Time and Space
Appendix 4: Rules for Code Tuning
Solutions for Column 1 Column 5 Column 7 Column 15
Index
727デフォルトの名無しさん:2012/05/10(木) 18:54:37.05
日本でアルゴの第一人者(著名人)の一人言えば奥村先生だから、奥村先生あたりがこういうたぐいのムック本やアルゴ・チップス記事や連載コラムを執筆してくると、日本語のままで安心して知識を吸収できるんだけどな。
読者が現場やプロレベルだと、新聞・雑誌コラム感覚で書いてみても数学の月刊誌とちがってわざわざ毎月お金だしてまで情報を得ようと思わないから、広告付きブログとか、書籍・ムック本しかないんじゃないかな。
著名カリスマな「フォトショップ達人が伝授する○○」のテクニック本みたいなのとおなじ。
それよりも、奥村先生のJavaによるアルゴは本がボロボロになるほど読んだので、次というか続編はJavaによるパラレルアルゴの現代的計算方法とトポロジーやグラフ・多重化など比較的新しいデータ紹介や海外論文手法(辞典)をそろそろ読んでみたいなあなんて思います。
728デフォルトの名無しさん:2012/05/10(木) 19:22:37.61
>>722
奥村先生。2chで宣伝してないで仕事してください
729デフォルトの名無しさん:2012/05/10(木) 22:30:19.97
>>712
他人のパッケージに追加って話じゃなくて、
俺のシールしてないパッケージは拡張していいよって
自分で拡張許可を示すのに使えるって言ってるの

>>714
赤の他人じゃなくて、社内とか自分一人とかの範囲の話。
配布するとき、自分が持ってるライブラリをフルセットで
配布する理由じゃなく、必要な分だけ小分けして配布するじゃん。
その時、jar毎にパッケージが閉じてたら、同じパッケージにあるべき
クラスやインターフェースを別のパッケージに置かなきゃいけないでしょ。
例えば、Model用のパッケージを用意するとして、
com.example.x.model、com.example.y.modelとjar毎に分けるより
Modelは全部com.example.modelの下に配置した方が
パッケージスコープも生かせるし便利でしょ。
730デフォルトの名無しさん:2012/05/10(木) 22:50:31.23
>>718
わかりづらいのは括弧を使わない書き方だからなのかと思って、冗長かもしれないけど中括弧と適宜追加した。
計算内容は理解できるってことだからコメントもいらなさそうだけど書いといた。
入門編がクリア出来ればいつの間にかサクサクできるようになってるさ。

ttp://ideone.com/9O3pd
731デフォルトの名無しさん:2012/05/11(金) 00:02:48.36
>>730
質問者ではないのですがhttp://ideone.com/9O3pdを見させてもらいました。
なるほどと思いました。
初心者にも優しい方がいて嬉しいです。
732デフォルトの名無しさん:2012/05/11(金) 00:24:10.34
>>730
マイクロソフトでびんぐれば誰でも六十秒以内に答えにたどりつけるので、あなた自身がコーディングやアップロードなどそういうどうでもいいことに六十秒以上の時間を掛けることは親切というよりもむしろ余計なお世話だと思いますよ。
733デフォルトの名無しさん:2012/05/11(金) 12:22:11.36
2chコピペブログ管理人が集まるスレ26
http://toro.2ch.net/test/read.cgi/blog/1329800848/
734デフォルトの名無しさん:2012/05/11(金) 13:55:58.00
PatternとMatcherの動作についてわからないことがあるので質問させてください

public static void main(String[] args) {
  Pattern pattern = Pattern.compile("^・");
  Matcher matcher;
matcher = pattern.matcher("・あ");
boolean m = matcher.matches();
System.out.println(m);
}

これでfalseが出力されるのは何故なんでしょうか?
735デフォルトの名無しさん:2012/05/11(金) 13:58:00.22
自己解決しました
736デフォルトの名無しさん:2012/05/11(金) 13:59:27.58
素直に思いやりの心を尊しと思う
737デフォルトの名無しさん:2012/05/11(金) 14:43:58.53
素直に馬鹿だと思う
738デフォルトの名無しさん:2012/05/11(金) 19:04:50.67
hoge.paint(g)
このhoge.ってとこの仕組み等が詳しく知りたいんだけど何て単語でググればいいですか?
739デフォルトの名無しさん:2012/05/11(金) 19:22:27.61
ドット演算子?
740デフォルトの名無しさん:2012/05/11(金) 19:42:37.58
ありがとう
741デフォルトの名無しさん:2012/05/11(金) 20:00:45.56
クラスの実体とクラスメソッドの呼び出しを接続してるんじゃね?
742デフォルトの名無しさん:2012/05/11(金) 22:08:54.48
>>740
いえいえ
お礼なんていらないよ
743デフォルトの名無しさん:2012/05/11(金) 23:05:57.41
またお前か
744デフォルトの名無しさん:2012/05/11(金) 23:19:45.58
言語仕様にしか書いてない
745デフォルトの名無しさん:2012/05/12(土) 03:10:42.66
ねえねえ
/* ~ */と/** ~ **/の違いってなんじゃらほい?
746デフォルトの名無しさん:2012/05/12(土) 03:25:23.05
javadoc でぐぐれ
747デフォルトの名無しさん:2012/05/12(土) 03:35:44.32
おお、ありがと。
記号でぐぐっても出ないしどうしたもんかと思ってたが名称あったのね
748デフォルトの名無しさん:2012/05/12(土) 04:21:32.99
HashMapを使っていて、その変数からgetした情報を別のクラスに引数で渡したとき、別クラス内で値を変更すると、元のHashMap変数の中も変わるのは仕様なんですしょうか?

たとえば、
static HashMap<String, String> test = new HashMap<String, String>();
test.put("AA", "BBB");
としたとき、
static void func(String line)という関数を作って、func(test.get("AA"))と引数に渡したとき
func()の中でごちゃごちゃline変数をいじっても、あくまでfuncの中でしか関係ないはずなんですが、

調べてみると、ポインタが渡ってるようで元のtest.get("AA")の値が変わっています。
String hoge = test.get("AA");としてfunc(hoge)にしても同様に元のhashMap内の変数が書き換わります。

func内でごにょごにょしても、オリジナルに影響を与えないようにするのにどのような解決策がありますか?
749748:2012/05/12(土) 04:35:45.68
いま簡単なサンプルでテストしてみたら、オリジナルの変数に変更はなかった…
勘違いだったんでしょうか…
原因はどこに…
750748:2012/05/12(土) 05:30:29.39
原因がちょっとわかりました
使っていたのが、HashMap<String, String[]>だったのが原因のようで、String[]配列を関数に渡すと、そのままポインタが渡されるようです。
なので、関数のなかでごにょごにょしたやつが、そのまま反映されると…

関数の中の処理の影響を受けないスマートな方法はありますか?
一応、別の変数配列を用意して1つずつごりごりコピーするのが有効みたいですが、もうちょっとなにかスマートな方法があれば
ご教示ください。

ごりごりパターン
String[] test = {"AA", "BB"};
String[] test2 = new String[test.length];
for (int c = 0; c < test2.length; ++c) {
 test2[c] = test[c];
}
751デフォルトの名無しさん:2012/05/12(土) 07:14:06.24
もし配列を使うなら、根本的にスマートな方法はない。
改善するなら、for文で1つずつコピーするんじゃなく、
System.arraycopyメソッドでまとめてコピーした方が(たいていは)速い、って程度。

例えばStringクラスは、内部ではchar配列で文字列を保持してる。

で、文字列をchar配列で取得するメソッドtoCharArray()を実行すると、
内部配列をそのまま返すのではなく、新しい配列を作ってコピーして返す。
内部配列をいじくられたら困るから。


あと、配列の代わりにListを使うと、少しだけスマートになる、かも。
752デフォルトの名無しさん:2012/05/12(土) 08:06:23.91
>>750
Arrays.copyOf(map.get("key")) でも (String[])map.get("key").clone() でも好きなの使え。

Listにしても基本は同じ。
影響受けたくないなら関数内でコピー作るとかしないとダメ。
753デフォルトの名無しさん:2012/05/12(土) 10:19:05.82
>>752読んで、>>751に書いた文章も読み直して思ったんだけど、
こんなこといちいち気にしてるのって、Javaだけだよね。

CもLL系も参照ダダ漏れだけど、普通に動いてるよね。
754748:2012/05/12(土) 10:29:35.90
ありがとうございます。
教えてもらった内容を元に、極力影響を受けない実装に変更しようと思います。
おかしくなる原因がわかっただけでもよかった…
755デフォルトの名無しさん:2012/05/12(土) 10:30:21.54
>>753
そりゃお前が同じような処理をCやLL系で書いたことないだけだろ。
同じ問題は普通に起こる。
756デフォルトの名無しさん:2012/05/12(土) 11:43:37.08
>>755
Java → 書き換え可能な実装をしてしまった悪いライブラリ
C系やLL系 → 悪い呼び出し元が勝手に書き換えてしまった

極端かもしれないが、同じ問題が起こったときにどう考えるかが違う。

Stringみたいなクリティカルなクラスではやめて欲しいが、
Javaでも普通のライブラリなら、「書き換えてはいけない」と
一筆ドキュメント書くだけでも、別にいいんじゃないかと。
757デフォルトの名無しさん:2012/05/12(土) 12:21:29.29
http://ap.atmarkit.co.jp/bbs/core/fjava/22704

この原因って分かる人居ますか?
このトピックの投稿者ではないです。

何でCHAR型使うんだというお話はナシでお願いします。
(歴史的経緯ゆえ変えられない。)
758デフォルトの名無しさん:2012/05/12(土) 14:40:26.10
印刷で質問です。
テキストを複数のページにまたがる形で
印刷するサンプルを探しています。
出来れば、2頁縮小のレイアウトにしたい
です。
JFrameにJTextAreaを2つ置いて、テキスト
を流し込むイメージです。

参考になるリンクを教えてください。
759デフォルトの名無しさん:2012/05/12(土) 15:00:16.15
>>757
そういう実装に依存したトリックはやめて、
カラム幅に足りないぶん空白を追加して検索すればいいだけじゃない
760デフォルトの名無しさん:2012/05/12(土) 15:05:01.90
JTextAreaを独自にカスタマイズして自分UI Componentを作るって道もある
761デフォルトの名無しさん:2012/05/12(土) 18:27:39.12
>>759
カラムのサイズを持たなきゃいけないからパス。
762デフォルトの名無しさん:2012/05/12(土) 19:29:34.03
>>758
単一JTextAreaにGraphics2D渡して
クリップずらしながら「さあ描け」を二回繰り返せば、
二段分のイメージが取れるんじゃないかな。
763デフォルトの名無しさん:2012/05/12(土) 22:15:06.76
おまえらの意見なんてどうでもいいから早く参考になるリンクはれや
764758:2012/05/12(土) 22:46:24.02
ヒントを参考にググったところ次のページを見つけられました。
http://sanjaal.com/java/160/java-file/how-to-print-a-text-file-in-java/
とりあえずやってみます。ありがとうございました。
765デフォルトの名無しさん:2012/05/12(土) 23:16:09.01
いえいえ、お礼は結構です
766デフォルトの名無しさん:2012/05/12(土) 23:23:14.03
またお前かw
767デフォルトの名無しさん:2012/05/13(日) 00:51:30.48
私は、Strutsが出る直前あたりまでJavaでWebアプリを書いていて、
それから最近まではWebと無関係のものばかり作っていた者です。
(当時は、コントローラはHttpServletを拡張、ビューはJSPで、
モデルはJDBCを直に包んでBeanを出し入れするクラスを作ったり、でした)

そんな私が久々にWebアプリを作りたいと思っているのですが、
今だとどんなフレームワークの組み合わせを使うのが定番なんでしょうか?
768767:2012/05/13(日) 02:15:48.66
自分で調べた時の単なる印象ですが、Struts 2やSpringが定番なんですかねぇ。
最近はSwingをよく使っていたので、個人的にはWicketが気になりますが。
769デフォルトの名無しさん:2012/05/13(日) 02:15:58.50
バッファリーダーとライターの対象?にストリング型を設定したいんだけど、
ライター側ってどうすればいいの?
全然解らない。

最初からストリングに書き込んでストリングから読み取れよって言われたらその通りなんだけども。

String str="";
BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream( str.getBytes() )));

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new ByteArrayOutputStream() ));
770デフォルトの名無しさん:2012/05/13(日) 02:16:54.51
servletからsessionへsetして、JSPからgetしようとしてもnullが返ります。
サーブレット内でsetしたものをgetするときちんと入ってるんですが。
keyの下記間違いはありません。

環境は

SE6
tomcat7
chrome IE9

になります。
どなたかご教示お願いします。

771767:2012/05/13(日) 02:25:15.51
772767:2012/05/13(日) 02:27:37.46
>>769
Readerの方も、これを使うのが手軽なのでは。
http://java.sun.com/javase/ja/6/docs/ja/api/java/io/StringReader.html
773デフォルトの名無しさん:2012/05/13(日) 07:54:05.66
effective java みたいなjavaプログラマのバイブルを教えてくれ
774デフォルトの名無しさん:2012/05/13(日) 09:27:36.43
>>773

       ∧__∧
       (`・ω・´)  知らん
      .ノ^ yヽ、
      ヽ,,ノ==l ノ
       /  l |
"""~""""""~"""~"""~""~"""~
775767:2012/05/13(日) 13:35:17.71
少しずつだけど、分かってきたかも。
HttpServletとコマンドパターンで書いていた部分はStruts 2で置き換え、
JDBCで直接SQLを発行せずにJPA準拠のO/Rマッピング (Hibernate等) を使用する、
SpringはDIコンテナの一種でGoogle Guiceのように各部品をつなぐ役割、
といったところかな?
776デフォルトの名無しさん:2012/05/13(日) 14:25:35.86
>>759
OraclePrepareStatementを使いたいのよ。
これ使えばCHAR型での比較の挙動がsql*plusと同じになるから。
777デフォルトの名無しさん:2012/05/13(日) 17:14:00.09
O/Rマッピングとかやめとけ
778Jolly Rogers ◆0tkoCr0voc :2012/05/13(日) 23:54:37.75
>757
 Oracle 側での定義と、SQL でどう書いてるか分からんとなんとも。
 参考 URL の通りだとすると、
・ORACLE は CHAR(n) で定義している(半角空白で後ろが埋まる、固定長文字列型)
・だから iBATIS は「Oracle の定義を考慮して」 String 型(文字列型)のパラメータを受け付ける
つもりで準備してる
・なのに char (文字型)渡されたってキャストできないんじゃゴルァ

ってなってるように思えるけど。
※だから「後ろに必要分だけ空白をつけた文字列」にしてあれば動いてるんじゃないのかね

 少なくとも iBATIS が渡すパラメータは char じゃなくて String でないと駄目じゃないか?
 で String だと CHAR との比較は失敗する(後ろの空白が不一致になるから)ので、どうしても
というなら >759 か、あるいは遅くなるの承知で trim(列名) = #parameter# にするか。
779デフォルトの名無しさん:2012/05/14(月) 14:17:14.18
>>778
「『後ろに必要分だけ空白をつけた文字列』にしてあれば動いてる」のは
>・ORACLE は CHAR(n) で定義している(半角空白で後ろが埋まる、固定長文字列型)
>・だから iBATIS は「Oracle の定義を考慮して」 String 型(文字列型)のパラメータを受け付ける

が理由だと思うけど、

>・なのに char (文字型)渡されたってキャストできないんじゃゴルァ
は違う気がする。

似たようなのを作ってデバッグしたが、
setter.getPreparedStatement()をキャストしているところでExceptionを出してるから
要は$Proxyが何でPrepareStatement以外の実装クラスにダウンキャストできないんだよ。
というところっぽい。

$Proxyの中はPreparedStatementLogProxyでさらにその要素を見ていくとOracleのクラスが出てきた。
780デフォルトの名無しさん:2012/05/14(月) 17:11:13.31
ちゃんと最後まで調べてから書き込んでくださいね^^
781デフォルトの名無しさん:2012/05/14(月) 19:10:24.19
>>780
後になってわかることもあるだろうから、
何が「最後」なのかはわからんよ。
782デフォルトの名無しさん:2012/05/14(月) 19:51:45.66
セキュリティとかAjaxとかStrutsとか色々多すぎてやってられないんですけど
もう、やめてもいいっすかね?
783デフォルトの名無しさん:2012/05/14(月) 20:05:23.03
AjaxってJavaなんですか?
784デフォルトの名無しさん:2012/05/14(月) 20:06:30.12
いいえ、それはトムです。
785デフォルトの名無しさん:2012/05/14(月) 20:06:57.94
ですよね。
786デフォルトの名無しさん:2012/05/14(月) 20:27:18.45
JSONICやGSONを使ってJSON→OBJECTを格納するとき、
下記のようなtypeによってtextが変わってしまうデータが返される場合、
応答の格納をひとつのクラスで両パターンに対応させることは可能ですか。
可能な場合、textをクラスとしてどう記述すればよいか教えてください。

■パターンA
{"data":{
"type" : "a",
"text" : "hoge"
}}

■パターンB
{"data":{
"type" : "b",
"text" : [ { "name" : "bbb", "value" : "ccc" } ]
}}

※どっちが返るかわからない。
787デフォルトの名無しさん:2012/05/14(月) 21:52:59.72
rhino埋め込んでJSONをMapとして返したほうが楽そう
788デフォルトの名無しさん:2012/05/14(月) 22:23:52.58
教えてください。
応答文字列のチェックで
while(sum(pHand,pn)<21){
String s = "n";
if(s!=null && s.equals("n")){
break;
}else{
pHand[pn++]=nextCard();
show();
}
}
と言う様に書いた場合、if文の条件式は
変数sがnullかつnじゃ無い場合(yやその他の文字が入っている場合)はbreak
そうじゃ無い場合?はelse以下の処理を行うという事でしょうか?

自分でも何言っているのか分からないのですが、参考書の回答が
上記のようになっているのですが、イマイチ処理の意味が分からず・・・。
789デフォルトの名無しさん:2012/05/14(月) 22:31:24.21
>変数sがnullかつnじゃ無い場合(yやその他の文字が入っている場合)はbreak
790デフォルトの名無しさん:2012/05/14(月) 22:38:01.25
>>789
逆だと(s==null&&"n")になる訳ではないのですか?
まぁ==にするとエラーになってしまうのですが・・・。
それから、nullかつnって言うのもよく分かりません・・・。
791デフォルトの名無しさん:2012/05/14(月) 22:53:39.47
sがnullではなく"n"のときbreakだ
s==null&&"n"だと絶対に成り立たないだろ
792デフォルトの名無しさん:2012/05/15(火) 00:49:25.72
s.equals("n") でヌルポガッ発生するのを防ぐために
先に s!=null でnullじゃないことを確認してるだけ
793デフォルトの名無しさん:2012/05/15(火) 01:42:06.34
あほな質問する人は読んでる本もアホですね
794デフォルトの名無しさん:2012/05/15(火) 14:26:18.09
Ajaxもサーバーの処理部分はJavaだょ。
795デフォルトの名無しさん:2012/05/15(火) 14:33:42.31
あほな質問する人は、難しい本読んでも理解できなぃょ☆
796デフォルトの名無しさん:2012/05/15(火) 15:00:22.35
質問です。

public enum Test {
   A(B), // フィールドは定義前には参照できません
   B(C), // フィールドは定義前には参照できません
   C(A);

   private final Test next;
   private Test(Test2 next) {
       this.next = next;
   }
}

静的フィールドを定義前に循環的に参照したいんですけど、
これはできないんでしょうか?
797デフォルトの名無しさん:2012/05/15(火) 15:02:22.27
間違えました。
>    private Test(Test2 next) {
ではなくて、
   private Test(Test next) {
でした。
798デフォルトの名無しさん:2012/05/15(火) 15:06:43.08
インスタンスを作るにはコンストラクタを呼ばないといけない
コンストラクタを呼ぶにはインスタンスを渡さないといけない
どうしろというのか
799デフォルトの名無しさん:2012/05/15(火) 15:13:31.11
っ クラス
800デフォルトの名無しさん:2012/05/15(火) 15:43:25.19
Javaをeclipseを使って参考書に沿って勉強していて、今はクラスについて勉強中です。
サンプルコードを入力していたら、クラスは『既に定義されています』と表示されて実行できません。
このあと何度もサンプルコードに出てくるクラス名なので名前をその都度変えたくないのですが、同じクラス名を使ってコードを作成していける方法はありませんか?
回答よろしくお願いします。
801デフォルトの名無しさん:2012/05/15(火) 15:48:42.92
IBMのJAVA向け有料サポートに電話して聞いてください。
802デフォルトの名無しさん:2012/05/15(火) 16:03:54.60
>>798
特に具体的な目的はないんですが、
メソッドが循環的に呼び出せるんだから、
静的フィールドもどうにかならないかなと思いまして…。

>>799
public class Test {
   private final Test next;
   private Test(Test next) { this.next = next; }
   public static void main(String[] args) throws Exception {
       Test a, b, c;
       /*
       a = new Test(
           b = new Test(
               c = new Test(
                   a))); // 変数aが初期化(ry
       */
       a = new Test(
           b = new Test(
               c = new Test(
                   null)));
       Test.class.getDeclaredField("next").set(c, a); // Can not set final field
   }
}

クラスで無理矢理挿れようとしたら動的に怒られました
803デフォルトの名無しさん:2012/05/15(火) 16:37:08.95
>>800
すでに作った同じ名前のものを消せば
804デフォルトの名無しさん:2012/05/15(火) 18:58:20.15
>>800
プロジェクトがちがえばいいのではないでしょうか?
ttp://www.javadrive.jp/eclipse3/project/
805デフォルトの名無しさん:2012/05/15(火) 19:21:47.32
>>804
サンプルコードを作る度に新しいプロジェクトを作るということですか?
806デフォルトの名無しさん:2012/05/15(火) 19:49:32.47
>>805
はい

別プロジェクトならクラス名同じでもEclipseに怒られない

ソースファイル打ち直さなくてもドラッグ&ドロップでプロジェクトまたいでコピーするとかできます
807デフォルトの名無しさん:2012/05/15(火) 19:58:31.93
同一プロジェクトでやるならパッケージ変えるとか
ttp://www.atmarkit.co.jp/fjava/rensai4/java5eclipse10/java5eclipse10_1.html
808デフォルトの名無しさん:2012/05/15(火) 20:15:30.70
>>806>>807
なるほど。そうしてみます。
教科書見ながら勉強するときは普通みんなそうやってやるもんなんですか?
809デフォルトの名無しさん:2012/05/15(火) 20:35:07.19
米国務省「韓国に戦術核必要なし」 下院可決受け

アメリカの下院軍事委員会が先週、北朝鮮の脅威に備えるため、韓国などを
念頭に戦術核兵器を配備すべきとした法案を可決しましたが、国務省は「必要ない」と明確に否定しました。
ヌーランド報道官:「我々は核のない朝鮮半島を支持していて、その方針を変えない。
戦術核兵器を韓国に置く必要はないし、配備する計画も意図もない」
ヌーランド報道官は、オバマ政権が一貫して目指す核のない朝鮮半島の方針に変わりはないと強調しました。
TV朝日 (05/15 12:35)
http://www.tv-asahi.co.jp/ann/news/web/html/220515020.html

日米同盟強化へ 米は9条改憲歓迎 「反対まったくない」

憲法第9条に基づき、日本は集団的自衛権を行使できないとの解釈が
日米同盟強化への大きな障害になるとする認識はいま米側で広範に強まり、
米国では、現在党派を問わず反対はなく、むしろ暗に歓迎するという姿勢が大勢となった。
92年にはヘリテージ財団が「米国は非公式に日本に改憲を促すべきだ」とする政策提言を発表した。
先代ブッシュ大統領も公式会見で、日本が改憲を求めるならば問題はないと言明した。
民主党リベラル派のトム・ラントス下院外交委員長は「日本が安全保障でも大国にふさわしい役割を
果たすために憲法を改正しようとすることを強く支持する」と述べた。

東京都の石原慎太郎知事が16日にワシントンでの討論会で憲法破棄を提唱したとき、
米側の討論者のリチャード・ローレス元国防副次官は「日本の憲法は確かに米軍占領時代の遺物であり、
日本はそれを変える権利も自由も有している」と述べ、日本の憲法改正にいまの米側には抵抗がないことを明示した。
sankei.jp.msn.com/politics/news/120425/plc12042507090004-n1.htm

米国から提唱する「日本の核武装」
日本が唯一の核兵器被爆国として過去、自国の核武装に強く抵抗する理由は明白だったが、常軌を逸した隣国が
核兵器保有を公式宣言するに至った今、再考が必要になった
sankei.jp.msn.com/politics/news/111009/plc11100920310007-n3.htm
810デフォルトの名無しさん:2012/05/15(火) 20:45:02.96
>>808
うん
811デフォルトの名無しさん:2012/05/15(火) 20:51:40.65
なんでCalandarやDateはnew でインスタンスを作れなくしたの?
812デフォルトの名無しさん:2012/05/15(火) 21:38:36.81
サブクラスのインスタンスを返して動作をいろいろ変えるため
813デフォルトの名無しさん:2012/05/15(火) 21:38:53.30
どこで質問すれば良いかわからなくて、とりあえずこちらで質問してみます。
Javaを使って、PDFファイルの中のrotateの値を取得するにはどのような方法があるでしょうか?
814デフォルトの名無しさん:2012/05/15(火) 21:45:29.15
>>812
それちょっと違くないか?
815デフォルトの名無しさん:2012/05/15(火) 22:14:38.05
そういやGregorianCalendarと普通のCalendarの主な違いって何?
816デフォルトの名無しさん:2012/05/15(火) 22:17:38.18
普通のカレンダーって何だよ
817デフォルトの名無しさん:2012/05/15(火) 22:20:45.57
>>815
Calendarは抽象クラスだ
818デフォルトの名無しさん:2012/05/15(火) 22:52:46.89
>>796
nextは初期化の時に渡さずインスタンスを作った後で渡す
819デフォルトの名無しさん:2012/05/15(火) 23:05:13.04
ヒント: メモリ領域の確保
820デフォルトの名無しさん:2012/05/15(火) 23:22:01.12
javaの環境導入してプログラムも実行もできるんだけど
コマンドプロンプト管理者実行でしか出来ない。なぜだ。
821デフォルトの名無しさん:2012/05/15(火) 23:26:55.90
自分の権限がないところにインストールしたかインストールした時に管理者権限で実行したからだろ
822デフォルトの名無しさん:2012/05/15(火) 23:31:02.82
ノートパソコンなんだけど自分のアカウントでOS開いてるってのも
関係あるかな?
コマンドプロンプトでcd:\で移動しても見つからないってなる。
何度もパス設定したのに。
823デフォルトの名無しさん:2012/05/15(火) 23:34:02.15
ヒント: メモリ領域の確保
824デフォルトの名無しさん:2012/05/15(火) 23:47:50.40
>>811

Calendar.getInstanceとの違いは、「new GregorianCalendarでは常にGregorianCalendarインスタンスが得られるが、Calendar.getInstanceではそうとは限らない」という点です。
ttp://allabout.co.jp/gm/gc/80723/2/
825デフォルトの名無しさん:2012/05/16(水) 00:04:30.50
JapaneseImperialCalendar とかな
ロケールによってデフォルトのカレンダが変わる
826デフォルトの名無しさん:2012/05/16(水) 01:30:38.66
あれ太陰太陽暦の明治5年12月3日が扱えないから太陽暦の明治6年1月1日が西暦1868年1月1日になるバグとかERAの定数が参照できないバグ直ったっけ?
827デフォルトの名無しさん:2012/05/16(水) 06:09:48.30
>>824
ありがとう、本気でありがとう
828デフォルトの名無しさん:2012/05/16(水) 06:13:15.02
>>814
何が違うんだ?
staticでnesInstance定義してる類は、ロケールや
プロパティを参照して環境にあった実際のクラスをロードする。
そうで無いものがあるか?

>違くない
どうでもいいが、これって栃木近辺の方言だっけ?
最近静岡出身の人も使う人が増えた気がする
829デフォルトの名無しさん:2012/05/16(水) 14:19:10.78
>>828
ヒント: メモリ領域の確保
830デフォルトの名無しさん:2012/05/16(水) 19:15:23.49
GregorianCalendarは思いっきり大量にメモリリークしてるわけだけど。
JapaneseImperialCalendarはどうなのさ。
831デフォルトの名無しさん:2012/05/16(水) 19:38:05.72
>>829
意味が解らん。サブクラスを通常のnewするんじゃなく
HeapAllocしたメモリーをラップしたインスタンスでも返すんかい。
832デフォルトの名無しさん:2012/05/16(水) 21:11:52.54
全角文字を数字のコード化(unicode?)するのはこれでできました。
int d="あ".charAt(0);
逆にこの数値から全角文字に戻すにはどうすればいいですか?
ファイルを通す手段は使いたくないです。
833デフォルトの名無しさん:2012/05/16(水) 21:26:33.75
charにキャストするだけ
834デフォルトの名無しさん:2012/05/16(水) 21:33:04.99
おおそれでいいんですか
できました。
835デフォルトの名無しさん:2012/05/16(水) 22:59:22.61
サーブレットから↓のようなコードでPostgresqlに接続しようとしてるんだけど、

Class.forName("org.postgresql.Driver");
DriverManager.getConnection("jdbc:postgresql://localhost:5432/sampledb","postgres","postgres");

↓こんなエラーがでて接続できません。

SEVERE: Servlet.service() for servlet [S_Top] in context with path [/sample] threw exception [null] with root cause
java.security.AccessControlException: access denied (java.util.PropertyPermission file.encoding read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at com.mysql.jdbc.StringUtils.<clinit>(StringUtils.java:70)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:286)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at D_Manager.getConnection(D_Manager.java:17)
at S_Top.doGet(S_Top.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

同じコードをmainから流すと普通に接続できます。
このスタックトレースの意味がわかる人いませんか?
836デフォルトの名無しさん:2012/05/16(水) 23:04:29.40
>>835
ヒント: メモリ領域の確保
837デフォルトの名無しさん:2012/05/16(水) 23:04:43.14
サーバはtomcat7.0です。宜しくお願いします。
838デフォルトの名無しさん:2012/05/16(水) 23:06:14.11
>>836
うお、即答すごい。ありがとうございます。
839デフォルトの名無しさん:2012/05/16(水) 23:06:47.79
チョンうぜぇ
840デフォルトの名無しさん:2012/05/16(水) 23:12:10.03
>>838
いえいえ
841デフォルトの名無しさん:2012/05/16(水) 23:20:42.70
あーこれはひどいなー
842デフォルトの名無しさん:2012/05/16(水) 23:34:44.73
>>836
ぼくちんも困ってたんですぅ^^
でもたかりました^^
843デフォルトの名無しさん:2012/05/16(水) 23:56:56.51
844デフォルトの名無しさん:2012/05/17(木) 00:16:01.16
>>837
こちらこそ宜しくお願いします
845デフォルトの名無しさん:2012/05/17(木) 01:15:43.47
メモリ領域の確保って何ですか?
846デフォルトの名無しさん:2012/05/17(木) 11:01:20.91
ここで質問しなくてすむようにJava初心者におすすめの教本を教えてください
847デフォルトの名無しさん:2012/05/17(木) 13:33:02.24
初心者でもう2,3冊参考書終わらしたんだけどあんまり頭に入ってこない
もっと同じ本を何度も繰り返した方がいいんですか?
848デフォルトの名無しさん:2012/05/17(木) 13:43:48.11
頭に入ってないなら、読んどいたら?
流し見したって価値がないだろ。
849デフォルトの名無しさん:2012/05/17(木) 14:02:45.03
>>848
章ごとには理解してるはずなんだけど、また違う章で同じ様なコードが来ると忘れてるんです
850デフォルトの名無しさん:2012/05/17(木) 14:23:17.66
はずなんてしらねー
暗記しろとは言わないまでも、学習中の教科書くらい、用件がどのあたりに書かれているか覚えるまで読め。
851デフォルトの名無しさん:2012/05/17(木) 15:06:55.56
10日で覚える系のものを2冊買ったけ全然書けない
852デフォルトの名無しさん:2012/05/17(木) 15:34:46.86
馬鹿には無理。というか馬鹿すぎます
853デフォルトの名無しさん:2012/05/17(木) 15:47:18.46
>>851
自分の作りたいやつににているもしくは必要な機能ににているサンプルを修正していったら?
854デフォルトの名無しさん:2012/05/17(木) 17:36:41.41
>>851
そういう人は、本より講座受ける方がいいかも。
855デフォルトの名無しさん:2012/05/17(木) 20:35:36.35
javaで使えるまともに更新されてる3Dのapiって無いでしょうか?
java3dもjoglもまともに更新してなさそうなんです。。
856デフォルトの名無しさん:2012/05/17(木) 21:46:51.58
swingでお勧めの本ないですか?
857デフォルトの名無しさん:2012/05/17(木) 22:33:52.11
>>855
5/2にjogl 2.0rc8が出たばっかだが?
858デフォルトの名無しさん:2012/05/17(木) 22:51:13.82
>>857
ごめんちょっと前に見たときには全然更新してなかったんだ。。。
すんませんでした
859デフォルトの名無しさん:2012/05/17(木) 23:02:29.17
リリースは何ヶ月もかかるに決まってるだろ。リポジトリは1日間隔で動きぱなしだ。
860デフォルトの名無しさん:2012/05/17(木) 23:23:48.01
まともに更新してないってどういう意味なんだろうな。
861デフォルトの名無しさん:2012/05/18(金) 02:25:04.33
>>850
今まで勉強してた なんか燃えてきた
ありがとうございます
862デフォルトの名無しさん:2012/05/18(金) 02:51:34.74
データベースから値を取得する際なんですが、ResultSetで値を得るとして
それを例えば変数aに代入した場合、ResultSet.nextでResultSetが次の値を
読み込むと変数aの値はどうなるのでしょうか?
代入した際の値がそのまま保持されるのか、ResultSet.nextによって得られた
次の値が保持されるのか、どちらになりますか?
863デフォルトの名無しさん:2012/05/18(金) 04:45:21.83
>>861
いえいえ
864デフォルトの名無しさん:2012/05/18(金) 05:48:20.95
>>862
やってみそ
すぐわかっから
865デフォルトの名無しさん:2012/05/18(金) 07:03:35.54
JSPでBeanを使おうとしたところ、

未定義の型:String
useBeanのクラス属性 String の値が無効です

とエラーが出ます。どこを間違っているでしょうか?

JSPファイルは以下の3行のみです。
--------------
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.lang.String" %>
<jsp:useBean id="test" scope="request" class="String" />
866デフォルトの名無しさん:2012/05/18(金) 07:46:59.52
わかりません
867865:2012/05/18(金) 07:53:15.09
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.lang.*" %>
<jsp:useBean id="test" scope="request" class="java.lang.String" />
----------------------
pageEncoding指定が抜けていたようです。
さらにStringをパッケージ名から完全指定しました。
class="java.lang.String"
と記述すれば実行できました。
class="String"
と記述した場合はあいかわらずエラーですが。
868デフォルトの名無しさん:2012/05/18(金) 08:01:04.65
>>867
生成されたソース見れば、なぜエラーになるのか理解できると思うよ。
869デフォルトの名無しさん:2012/05/18(金) 09:59:30.82
870デフォルトの名無しさん:2012/05/18(金) 14:46:47.82
rails serverと入力してもwebrick立ち上がらないのですが、どうしたらいいですか。
こういう出力がでます。(抜粋)

C:\xampp\rails-apps>rails server
Usage:
rails new APP_PATH [options]

Options:
-r, [--ruby=PATH] # Path to the Ruby binary of your choice
871デフォルトの名無しさん:2012/05/18(金) 15:13:28.65
スレタイみろや
872デフォルトの名無しさん:2012/05/18(金) 16:30:26.00
jruby ralisの話なんです(><;)
873デフォルトの名無しさん:2012/05/18(金) 17:16:44.08
スレタイミロ
874デフォルトの名無しさん:2012/05/18(金) 17:27:42.71
xamppは使うなっ!!!!!!!!!!!!!!!
875デフォルトの名無しさん:2012/05/18(金) 17:39:35.17
SpringMVC内での処理なんですが、
実験的に手動でリクエストごとにHttpServletRequestからセッションを取得し、
そこからsession idを得て、標準出力にloggerで出すだけの
logger.info(request.getSession().getId());

こんなロジックで値を確認してみたのですが、ブラウザからアクセスがあるたびに
IDが変わってしまいます。
HTTPはステートレスなのは解ってるつもりなので、それはそうだと思うのですが、
ブラウザを終了しない限り、セッションタイムアウトするまでは同じIDを持ち回るというのは
どういう仕組みになるんでしょうか?
876デフォルトの名無しさん:2012/05/18(金) 17:43:10.40
わかりません
877デフォルトの名無しさん:2012/05/18(金) 17:51:58.58
Cookie禁止にしてるとか
878デフォルトの名無しさん:2012/05/18(金) 18:13:05.88
875ですが、web.xmlの
<session-config>の中に、<cookie-config>をいろいろ設定していたのが
悪さをしていたようです。
試しに<session-config>の中は<session-timeout>だけにしてみたら
ちゃんとIDが固定されるようになりました。
ありがとうございました。
879デフォルトの名無しさん:2012/05/19(土) 00:51:04.07
javaアプレットでゲームを作ろうとしています
128*96の画像ファイルを32*32に分割して2次元配列に入れようとしているのですが
Nullがでてしまいうまくいきません
どうかご助力お願いします
import java.awt.Container;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;
import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JApplet;import javax.swing.JLabel;
public class aaa extends JApplet {
private void DivideImage(File f, JLabel lb[][]) {
int Highnum, Widthnum;// 縦分割,横分割の個数
ImageIcon imgic[][];
int KPixel = 32;// KPixelは画像の縦横のピクセル
try { BufferedImage bimg = ImageIO.read(f);
Highnum = bimg.getHeight() / KPixel; Widthnum = bimg.getWidth() / KPixel;
imgic = new ImageIcon[Highnum][Widthnum]; lb = new JLabel[Highnum][Widthnum];

// 以下分割して配列にいれる
for (int i = 0; i < Highnum; i++) {
for (int j = 0; j < Widthnum; j++) {
imgic[i][j] = new ImageIcon(bimg.getSubimage(j * KPixel, i
* KPixel, KPixel, KPixel));
lb[i][j] = new JLabel(imgic[i][j]);
}
}
} catch (IOException ex) {ex.printStackTrace();}
}
private JLabel Kyara[][];
public void init() {
Container cnt = getContentPane();
File f = new File("画像.png");
DivideImage(f, Kyara); cnt.add(Kyara[0][0]);
}
}
880デフォルトの名無しさん:2012/05/19(土) 03:43:51.88
Kyaraに何も代入してないからnull
881デフォルトの名無しさん:2012/05/19(土) 09:57:15.61
879です
KyaraにはDivideImageメソッドを適用して画像を入れているつもりなのですが、
メソッド内では代入できないのでしょうか?
882デフォルトの名無しさん:2012/05/19(土) 11:44:32.58
できますよ。VMのバグかもしれませんね
883デフォルトの名無しさん:2012/05/19(土) 12:10:37.55
junitでweb連携のテストケースを実行する時、これまでは開発PCにWEBサーバを立ちあげてやってたんだけど
テストケースの実行中にwebページの内容を変更するという事がやりたくなった。
(これまでは手動でページを編集していた)
JVM自体を覆えるweb環境のモックオブジェクトを作れれば可能だろうけど、
(こういうURLにアクセスされたらこういうページを返す、というような事をテストケース中で定義したい)
そういう方法はあるんだろうか
884デフォルトの名無しさん:2012/05/19(土) 13:01:03.01
日本語でおk
885デフォルトの名無しさん:2012/05/19(土) 13:11:49.48
>>884
こういうURLにアクセスされたらこういうページを返す、というような事をテストケース中で定義したい
886デフォルトの名無しさん:2012/05/19(土) 14:52:28.47
HttpUnitでなんとかならんの?
887デフォルトの名無しさん:2012/05/19(土) 15:03:13.91
ScalaとJavaってどっち先に覚えたほうがいいの?
ScalaやるならJavaからはじめたほうがいいの?
888デフォルトの名無しさん:2012/05/19(土) 15:09:01.86
ScalaはライブラリをJavaに頼りっきりだからJavaが分からないと全く使い物にならない
ScalaはJava(言語)使いたくないけどJava(プラットフォーム)使わないと仕方がない人のためのもので、
関数型やりたいだけだったら他のにすればいいのに
889デフォルトの名無しさん:2012/05/19(土) 15:54:56.01
879です
Kyaraの配列の要素数を前もって
private JLabel Kyara[][] = new JLabel[4][3];
としておけばうまくいきました
メソッド中で配列の要素数を宣言したのがまずかったのかもしれません
ありがとうございました
890デフォルトの名無しさん:2012/05/19(土) 16:01:37.28
初めに文字を入力しtxtの中の文字と一行ずつ比較し一致したものがあればそれを表示、
無ければ入力した文字をtxtに追記というプログラムを作りたいのですが比較、追記のプログラムを別々に作ることはできたのですが合わせるとうまくいきません。
if文で判定はできないのでしょうか?
891デフォルトの名無しさん:2012/05/19(土) 16:11:20.92
馬鹿には無理
892デフォルトの名無しさん:2012/05/19(土) 16:24:41.98
合わせるとうまくいかないのなら、別々に処理すればいいじゃないの。
まあ、file ioだかnioがまずいんだろうけど
893デフォルトの名無しさん:2012/05/19(土) 16:43:41.40
単に使い方間違ってるだけだな。
894uy:2012/05/19(土) 17:02:25.44
>>888
嘘だらけ
895デフォルトの名無しさん:2012/05/19(土) 17:03:05.43
今から勉強する場合1.6と1.7どっちがいいでしょうか?
896デフォルトの名無しさん:2012/05/19(土) 17:07:20.63
仕事とかで1.6使う予定があるなら1.6メイン、
そうでなければ1.7メインで。
897デフォルトの名無しさん:2012/05/19(土) 17:08:29.61
>>895
1.7一択
898デフォルトの名無しさん:2012/05/19(土) 17:10:06.18
>>894
javaのライブラリに頼らないとテキストファイルの操作すらまともにできない言語w
899デフォルトの名無しさん:2012/05/19(土) 17:21:20.10
>>892
>>893
ありがとうざいます!
別々に処理してみます
900デフォルトの名無しさん:2012/05/19(土) 17:50:37.94
javaの起動時に-Dfoo=barとするとプロパティがシステムプロパティにセットされるけど、
これが沢山になると面倒なのでファイルから読み込ませたいんだけど、
Propertiesクラス使って読み込むコードを自分で実装しなきゃだめ?
901デフォルトの名無しさん:2012/05/19(土) 19:36:25.38
glassfishとtomcatの違いは何ですか?
902デフォルトの名無しさん:2012/05/19(土) 19:45:38.33
>>901
grassfishはEJBがつかえるよ。TomcatはJSP/サーブレットまで
903デフォルトの名無しさん:2012/05/19(土) 19:50:50.30
えん
904デフォルトの名無しさん:2012/05/19(土) 19:51:21.46
がわ?
905デフォルトの名無しさん:2012/05/19(土) 19:51:46.24
>>900
実装したくないならしないほうがいいですよ
906デフォルトの名無しさん:2012/05/19(土) 19:53:32.12
>>905
カスかてめぇコラぁ
907デフォルトの名無しさん:2012/05/19(土) 20:05:23.30
手元に1.6で動くBeansBindingなデスクトップアプリがあるのですが、
1.7でもbeansbindingは動くでしょうか?

908デフォルトの名無しさん:2012/05/19(土) 20:08:25.70
ためせ
909デフォルトの名無しさん:2012/05/19(土) 20:14:18.47
ことわる
910デフォルトの名無しさん:2012/05/19(土) 20:18:24.17
〜終了〜
911デフォルトの名無しさん:2012/05/19(土) 22:03:02.92
http://japan.donga.com/srv/service.php3?bicode=020000&biid=2012051904228

米国が韓国から輸入する一部の貝類の流通や小売を禁止させた。韓国は米国向けに
年間2300万ドル(約270億ウォン)分の貝類を輸出している。牡蠣の輸出割合が最も
多く、牡蠣産業界の被害が懸念される。

●米「韓国産牡蠣からノロウイルス検出」
18日、米食品医薬局(FDA)は、「韓国から輸入する貝類の流通を、全国的に禁止する一方、
近いうちに、リコール措置を下す予定だ」とし、消費者らに対し、摂取しないよう呼びかけた。
これに先立って、1日は、貝類を扱う業者らの輸出資格を取り消した。
FDAは、韓国産貝類は、養殖して採取した地域の水や土地が汚染し、食中毒の発生原因
であるノロウイルスが、貝類を通じて人間に移る危険性があると指摘した。ノロウイルスとは
、吐き気や嘔吐、下痢、胃の痙攣を誘発する食中毒菌だ。
米国では昨年末、韓国産牡蠣を食べた1?2人の消費者が、ノロウイルス症状を見せた。
米政府は今年3月に訪韓し、米輸出向け牡蠣を養殖する慶?南道(キョンサンナムド)の統營
(トンヨン)・巨濟(コジェ)地域を調査し、検査の結果、ノロウイルスが検出されたと発表した。
農林水産食品部(農食品部)は、統營・巨濟の牡蠣養殖場などに対するノロウイルス安全
計画をまとめ、米側に伝える一方、ノロウイルスを除去し、近いうちに輸入再開できるよう
努力すると明らかにした。
912デフォルトの名無しさん:2012/05/19(土) 22:30:45.40
913デフォルトの名無しさん:2012/05/19(土) 22:43:04.04
鯖がどこにあろうとバイナリは同じだぞ
914デフォルトの名無しさん:2012/05/19(土) 22:55:06.33
大したアクセスがあるわけでもないWebアプリなんすが
5時間に一回くらいFull GCがおきてるんですけど、この程度なら普通すか?
そもそもミッションクリティカルじゃない場合でもFull GCって絶対おきないようにするんもんすか?

とくにサーバーに負荷がかかっているわけでもなすけど
ネットで調べたところ、Full GCの間は処理がとまってしまうと書いてあったので
ちょっとビビッてます。
915デフォルトの名無しさん:2012/05/19(土) 22:56:59.60
企業でJavaでwebサイトを構築する場合
JSPとサーブレットどっちが主流でしょうか?
916デフォルトの名無しさん:2012/05/19(土) 22:58:20.61
>>915
画面表示はJSP、ビジネスロジックはサーブレットという感じでどっちも使うよ
917デフォルトの名無しさん:2012/05/19(土) 23:00:22.91
なるほど、両方覚えておきます
918デフォルトの名無しさん:2012/05/19(土) 23:23:01.78
最近はJSP使わなくなった。
画面表示はHTML+jQueryで、Apacheかnginxに任せる。
ビジネスロジックはServlet+Springで、TomcatかJetty。
画面とロジックはajax通信でJSONによる表示情報のやりとりのみの疎結合。
ビジネスロジック出来て無くても、ロジックが返すはずのモックオブジェクトを
ローカルにJSONで置けるから、Webデザイナーとプログラマの作業分担もやりやすい。

JSP使うと、作業分担もしにくいしデザインも入れ込みにくい。
おまけにロジック絡まない画面まで全部アプリケーションサーバを通すから
Webサーバ無しでいいっちゃいいけど、高負荷時とかで問題が起きたときに切り分けしづらい。
919デフォルトの名無しさん:2012/05/20(日) 00:41:39.78
ドカタ仕事すなあ
920デフォルトの名無しさん:2012/05/20(日) 00:55:01.97
>>912
現在時点ではJava日本版のサイトから辿ってもそのサイトへ誘導されますね
ttp://www.oracle.com/technetwork/jp/java/index.html
921デフォルトの名無しさん:2012/05/20(日) 01:00:57.83
ご親切にも日本語で
「Java SE ダウンロードの最新版は、こちら(USサイト)からダウンロードをお願いします。」
って書いてあるよ。
922デフォルトの名無しさん:2012/05/20(日) 01:38:52.42
890です。
テキストから行ごとに読み込み完全に一致したものを表示でindexOfを使っていたのですが
これだと順番がバラバラでも表示されてしまうことに気が付きequalsを使ったのですが表示され無くなってしまいました。
原因がわからないのですが…
923デフォルトの名無しさん:2012/05/20(日) 01:43:00.92
ソースも貼らずに原因が〜とか言われてもな
924デフォルトの名無しさん:2012/05/20(日) 01:49:26.81
>>923 お願いします

import java.io.*;

class hikaku {
public static void main(String[] args) {
try {
InputStreamReader is = new InputStreamReader(System.in);

System.out.print("PleaseInputNumber → ");

int str = is.read();
BufferedReader br = new BufferedReader(new FileReader("./InputNumber.txt"));
String line=null;
while ((line = br.readLine()) != null) {
if(line.equals(str))
System.out.println(str);
}
br.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
925デフォルトの名無しさん:2012/05/20(日) 02:43:31.24
一致してないからだろ
926デフォルトの名無しさん:2012/05/20(日) 02:45:49.54
>>924
> InputStreamReader is = new InputStreamReader(System.in);
> int str = is.read();



BufferedReader is = new BufferedReader(
  new InputStreamReader(System.in));
String str = is.readLine();


>>590の「ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!」を守れ
あと、もっと試行錯誤しろ
927924:2012/05/20(日) 02:46:26.15
何が一致していないのでしょうか?
テキストの中に 111 とあってこのプログラムで 111と入力しても表示されないのですが…
928924:2012/05/20(日) 02:48:57.40
>>926
ありがとうございます!
すいませんやるの忘れてました…
本当にありがとうございます
929デフォルトの名無しさん:2012/05/20(日) 04:15:24.02
いえいえ、お礼はいりませんよ
930デフォルトの名無しさん:2012/05/20(日) 04:26:42.95
俺にお礼汁
931デフォルトの名無しさん:2012/05/20(日) 07:18:38.15
『朝鮮総連』は色々な企業のホームページからホストコンピューターに進入し、自分達が隠したプログラミングを引き出す…他人の会社のサーバーに『挺陝馗操作』や『改竄red-hat』のクラッカープログラム保管場所にしている。
札幌市立啓北商業高校の野島(横濱)えり Microsoft USA co.tp.
弖十=TEN10(teto)=優多野手頭=野慈蚕=帝跿(徒)=衛鴉朧 笑狸乃雉匯
932デフォルトの名無しさん:2012/05/20(日) 09:59:17.75
何で1.7を勧めるの?
933デフォルトの名無しさん:2012/05/20(日) 11:08:56.62
1.6 はあと半年で End of Life だから
http://www.oracle.com/technetwork/java/eol-135779.html
934デフォルトの名無しさん:2012/05/20(日) 11:31:11.08
>>924
String型とint型を比較して一致するわけないだろ
935デフォルトの名無しさん:2012/05/20(日) 14:50:47.87

___________
|| // //         |
||    / ̄ ̄ ̄ ̄\. |    /  ̄ ̄ ̄ \
||   (  人____) |   (         )
||    |ミ/  ー◎-◎-)|   (ヽミ        i
||   (6    ゜(_ _) )|.  ( 6)        !
||  __| ∴ ノ  3  )|  (∴ \____ノ__
|| (_/.\_____ノ |   .>>929(っ___□__)
|| / (   ))    ))ヽ|   (    ))    |三|  ヾ
936デフォルトの名無しさん:2012/05/20(日) 19:44:14.35
なんでMySQLは文字列型をint型に勝手に変換するんだろうな

これバグ埋もれないか?
937デフォルトの名無しさん:2012/05/20(日) 20:55:08.45
Java 1.3 + Swing

目的:ボタンを常に無効にしたい。


PropertyChangeイベントで、

JButton button = (JButton)propertyChangeEvent.getSource();
button.setEnabled(false);

にしてみたら、ボタンのプロパティ値はfalseだけど、ボタンは押せるおかしな状態になってしまいました。
プロパティが変更される直前にイベントが発生して、変更をキャンセルするようなことはできないのでしょうか?
938 ◆KsOyY8CYMo :2012/05/20(日) 21:15:15.88
っ JRE のバージョン
939デフォルトの名無しさん:2012/05/20(日) 23:38:13.94
jcursesで日本語が途中でぶった切れるのはなんでだろう
940デフォルトの名無しさん:2012/05/21(月) 01:18:51.76
>>937
1.3・・・
常に無効にしたいなら無効なボタンの画像にしちゃえば?
もしくは表示が普通でも良いならリスナー側でreturnするとか
941デフォルトの名無しさん:2012/05/21(月) 02:55:39.10
微妙にスレチな気もしますが、
javax.cryptoパッケージを使った暗号化・復号化と、
同じ結果を得られるJavaScriptの暗号化復号化ライブラリがあれば
教えて下さい。

https://code.google.com/p/crypto-js/
これは試してみたのですが、AES、DESなどで暗号化結果が合わないようでした。
942デフォルトの名無しさん:2012/05/21(月) 03:13:12.02
javax.cryptoの方では何を指定したの
943デフォルトの名無しさん:2012/05/21(月) 11:53:11.33
これからJavaの勉強をはじめます
ある程度何でも作れるようになるまで何年かかりましたか?
944デフォルトの名無しさん:2012/05/21(月) 12:00:11.15
1年もあればできるようになるよ
945デフォルトの名無しさん:2012/05/21(月) 15:02:42.16
まあDBからデーター引っ張ってHTML表示するくらいしかできないんですけどね
946デフォルトの名無しさん:2012/05/21(月) 15:18:53.24
すみません、コンストラクタに関してなんですが、インスタンス生成時に実行されると書いてあるんですけど、これで実行されないのはなぜですか?

testrun.java
class testrun{
public static void main(String[] args){
   new sleeptest();
}
}

sleeptest.java
class sleeptest{
void sleeptest(){
Runtime rt = Runtime.getRuntime();
try{
rt.exec("sleep 30");
}
catch(Exception ex){
System.exit(1);
}
}
}


下記の様にすると実行できはしたのですが、気になっています。
testrun.java
class testrun{
public static void main(String[] args){
sleeptest st = new sleeptest();
st.sleeptest();
}
}
947デフォルトの名無しさん:2012/05/21(月) 15:20:27.51
948デフォルトの名無しさん:2012/05/21(月) 15:29:34.15
>>946
> void sleeptest(){
sleeptest() {

voidをつけるとコンストラクタ定義ではなくメソッド定義になる。
sleeptestは明示的にコンストラクタが定義されていないので
引数なしで何もしないコンストラクタが暗黙に追加される。
949デフォルトの名無しさん:2012/05/21(月) 15:29:46.38
>>946
> void sleeptest(){

void が付いてるから、それはコンストラクタじゃなくメソッドになる
コンストラクタは戻り値 void ではなく、何も書かないんだ
950デフォルトの名無しさん:2012/05/21(月) 15:30:33.84
Javaの世界で最近熱いネタってなに?
951デフォルトの名無しさん:2012/05/21(月) 15:31:24.41
ダルビッシュはJavaじゃない!
952デフォルトの名無しさん:2012/05/21(月) 15:31:52.45
Java One
953デフォルトの名無しさん:2012/05/21(月) 15:49:39.15
>>948
>>949

ありがとうございます、voidはずしたらなりました!
returnしなければいいのかと思ってました。
954デフォルトの名無しさん:2012/05/21(月) 15:51:27.20
>>950
Javaの代替
955デフォルトの名無しさん:2012/05/21(月) 19:16:12.08
文字列の結合で、

String s1 = "ABC";
String s2 = "DEF";
String added = s1 + s2;

とやるより、
StringBuilder bf = new StringBuilder();
bf.add("ABC");
bf.add("DEF");
String added = bf.toString();

とやるべきだと聞きますが、前者のStringオブジェクトどうしの
結合はなぜ推奨されないのでしょうか?
956 ◆/ulyJObsG6 :2012/05/21(月) 19:28:51.12
ヒント:メモリ消費量
957デフォルトの名無しさん:2012/05/21(月) 19:35:44.33
>>955
s1、s2が必要でないなら、
String added = "ABC" + "DEF";
が良い。
StringBuilder使うよりも。
958デフォルトの名無しさん:2012/05/21(月) 19:41:27.49
なんで?
959デフォルトの名無しさん:2012/05/21(月) 19:42:25.33
>>956>>957
ありがとうございました。勉強になりました。
大量にオブジェクト作って、メモリ消費量も確認してみたいと思います。
960デフォルトの名無しさん:2012/05/21(月) 20:02:57.05
どうせコンパイラが勝手にstringbuilder作ってくれるんだから
ループでnewしたりする事さえ注意すれば何してもいいじゃん
961デフォルトの名無しさん:2012/05/21(月) 20:43:57.00
>>955
その例だと変わらんよ
962デフォルトの名無しさん:2012/05/21(月) 21:02:11.58
( ´,_ゝ`) プッ
963デフォルトの名無しさん:2012/05/21(月) 22:41:55.52
屁すんなよ
964デフォルトの名無しさん:2012/05/21(月) 23:07:50.28
お前がなw
965デフォルトの名無しさん:2012/05/21(月) 23:08:50.91
こういうコード片を見たんですが、この初期化方法?の名前とどのようなときに使われるのかを教えてください。

List<String> fooList = new ArrayList<String>() {
 {
  add("foo");
  add("baa");
  add("hoge");
 }
};


966デフォルトの名無しさん:2012/05/21(月) 23:14:57.81
無名クラスの変な使い方。普通はイベントリスナを実装するときによく使われる。
いちいちクラスが生成されて、たかがコレクションの初期化に使うには激しく無駄の多いやり方なので真似しないほうがいいよ
967デフォルトの名無しさん:2012/05/21(月) 23:53:29.64
>>966
レスありがとうございました。無名クラスについて調べてみます。
インタフェースをその場で実装するようなのは見たことがあったんですけど、
具象クラスでこういうのは初めて見たので助かりました。
968デフォルトの名無しさん:2012/05/22(火) 00:02:34.67
>>959
メモリー消費はあんまり関係ない
処理速度の問題

for(;;) string = string + "文字";
ループでこういう書き方したとき、変数stringに
格納した文字列は毎回解放される。
また、stringの内容は+演算子によって生成された
メモリー領域に毎回コピーされる
例えばコピーが行われる内容はこんな感じ。

1回目: 文字
2回目: 文字文字
3回目: 文字文字文字
このコピーが凄く無駄。StringBuilderだと、コピーせず内部で
リストに繋いでたりするからループ中でコピーする文字列はこんな感じになる
1回目: 文字
2回目: 文字
3回目: 文字

969デフォルトの名無しさん:2012/05/22(火) 00:03:39.38
>>966
最適化で消えるだろ
970デフォルトの名無しさん:2012/05/22(火) 00:27:35.24
>>965
double brace initialization
バッドノウハウだから使うな。メリットゼロ
971デフォルトの名無しさん:2012/05/22(火) 00:29:04.13
カーリー抜けた
まいいや
972デフォルトの名無しさん:2012/05/22(火) 00:40:31.94
>>970
読みやすいというメリットは明らかだがデメリットがあんま解からんな
速度カリカリにチューンしなきゃならんのならマズイのは解るが
起動しっぱなしのアプリで高頻度で呼ばない処理なら
大したデメリットないじゃん。
973デフォルトの名無しさん:2012/05/22(火) 00:56:21.76
new ArrayList(Arrays.asList(とかでいいだろ
さすがにあんまり多用してたらメモリ食うしロードも遅くなるぞ
974デフォルトの名無しさん:2012/05/22(火) 01:07:59.78
俺は使わんけど是非皆さんには多用してほしい
975デフォルトの名無しさん:2012/05/22(火) 01:10:42.65
>>972
なんで動くか理解したか?
理解できればあり得ないって気づくよ
976デフォルトの名無しさん:2012/05/22(火) 01:21:30.62
>>975
staticフィールドの初期化で動いてんだろ
コンストラクターより前に動くはずだから危険な気がするが
みなさんにはぜひおすすめしたい
977デフォルトの名無しさん:2012/05/22(火) 01:23:05.30
>>976
ちがう。javapの結果ちら見して答えちゃだめよ。
978デフォルトの名無しさん:2012/05/22(火) 01:25:33.62
>>977
ふと疑問に思ったんだがあのコード実行中に一回しか動かなくね?
979デフォルトの名無しさん:2012/05/22(火) 01:28:17.23
初学者→半日立っても何故動くか説明出来ないまま
中級者→どっかの解答みて小一時間かけて漸く説明出来るようになる
上級者→コード整形とかしてるうちに、あ、あれ使ってたのかよ!とわかる。で、待てよ・・・と検討に入る。

だいたいこんな感じになると思う。
何で動くか理解出来る奴少な杉!な時点でもうないよね
980デフォルトの名無しさん:2012/05/22(火) 01:28:52.44
>>978
うん。一回だね。
981デフォルトの名無しさん:2012/05/22(火) 05:17:02.39
うん
982デフォルトの名無しさん:2012/05/22(火) 06:15:18.72
stringsの操作は実行前にmemcpyされてるみたいだからメモリ喰うのは変わらんな。
その辺はアセンブラから来るともどかしい。

梅。
983デフォルトの名無しさん:2012/05/22(火) 06:23:40.24
Java    メモリのクラスター
C/C++  メモリの数珠繋ぎ、下手したらこま切れw
984デフォルトの名無しさん:2012/05/22(火) 07:14:55.09
うむ
985デフォルトの名無しさん:2012/05/22(火) 07:55:21.38
ちゃんとmmu載ってるなら大した問題じゃないな。
os上でアプリ何度か起動する時点で、アプリに割り当てられてるメモリは細切れなんだし。
986デフォルトの名無しさん:2012/05/22(火) 08:00:46.99
実行時じゃなくって、プログラム作ってる時のイメージじゃね?>>985
987デフォルトの名無しさん:2012/05/22(火) 09:26:47.32
>>970
名称ありがとうございます。おかげさまで関連情報をいろいろと見つけることができました。
中括弧が二重になっているからdouble braceってわかりやすいですね。

これは無名内部クラスの作成と非staticな初期化ブロックの組み合わせで実現しているようです。
確かに普通のクラスでこれを使うのはやりすぎな感じがしますし、getClass()しても無名クラスが返ってくるしでイマイチな感じでした。
static finalで参照専用なCollections.unmodifiableListあたりのの初期化なら使えそうな感じがします。
# コンパイルすると無名クラスファイルができてしまうのはご愛嬌?

今回は一つのちょっと風変わりなコード片からいろいろと学べて良かったです。
ご回答くださったみなさま本当にありがとうございました。
988デフォルトの名無しさん:2012/05/22(火) 13:09:25.87
>>987
いえいえ
989デフォルトの名無しさん:2012/05/22(火) 13:11:40.22
ちょっと困っているので質問させて下さい。

1) ZIPファイル解凍(中に複数のテキストファイルあり)
2) 解凍した複数のテキストファイルを読込みながらDBへINSERT

するjavaプログラムがあるのですが、
ほとんどの場合、正常に動作し、中のテキストファイルが全てDBに取り込まれるのですが、
まったく同じZIPを相手にしているのに、時たま1、2ファイル抜け落ちてしまうことがあります。

ただしその場合でもプログラムは正常終了しています。
ログを仕込んで調査した結果、
1)はちゃんと全ファイル解凍しに行っています。
2)も1)で対象になった全ファイル読込み対象にしに行っています。
なのに1、2ファイル抜け落ちてしまうことがあるのです。

なので、考えられるのは、1)でZIPを解凍する際、
1-1) ZIPファイルのエントリリスト取得(java.util.zip.ZipEntry)
1-2) 1-1)のリストのファイルをBufferedInputStream#readで読込み
1-3) 1-2)をFileOutputStream#writeで解凍先へ書込み
のうち、1-3)のFileOutputStream#writeが非同期になっている(書込み完了を待っていない)
もしくはOSの遅延書込みが原因かと思っています。

javaで書込み完了を待つ、もしくはOSの遅延書込みを待つ等の制御は可能なのでしょうか?
または別の原因でしょうか?
このあたりに詳しい方、アドバイスお願いします!m(_ _)m

ちなみにOSはWindowsXPで、Java1.4.2です。
ソースが必要でしたら晒すことも可能です!
990デフォルトの名無しさん:2012/05/22(火) 14:18:50.88
下のような場合thisがイベントリスナーであってますか?またイベントリスナーとは何なのかというのが調べても今一わかりません。
初歩的な質問ですがわかりやすくご教授頂けないでしょうか。。

btn1.addActionListener(this);
991デフォルトの名無しさん:2012/05/22(火) 14:26:11.06
event listener とは、 event を listen する人だ!
this が何かのイベントを listen したいなら、 this をイベントリスナーにする
992デフォルトの名無しさん:2012/05/22(火) 14:28:45.19
わかりません
993デフォルトの名無しさん:2012/05/22(火) 14:29:36.46
>>990
thisである自分自身にActionListenerがimplementsされてれば有ってるよ
リスナーはイベントが起きたときの処理を記載したクラス
イベントが起きるとリスナーの中の決まったメソッドを実行してくれる
994990:2012/05/22(火) 14:45:40.15
レス下さった方々ありがとうございます。
btn1.addActionListener(this);を記載したのと同じクラス内にはactionPerformed(ActionEvent e)というメソッドがあります。
btn1がクリックされるなどのイベントが発生した場合に、actionPerformedが呼び出され処理をしますってことでしょうか?
例えばActionListenerがimplementsされた他のクラスで処理させる場合にはどのように記述されるのでしょうか。
995デフォルトの名無しさん:2012/05/22(火) 14:49:57.19
JavaをElipse使って書いてるのですが、例えば知り合いなどのJava環境のない人にプログラムを渡してそっちで実行するにはどうすればいいでしょうか?
将来的にはプログラムの配布とかをしたいので気になりました。
996デフォルトの名無しさん:2012/05/22(火) 14:51:20.15
JARにする
お願いしますJRE入れてくださいって土下座するになるけどなw
それが嫌なら.NETにしとくのが吉
997デフォルトの名無しさん:2012/05/22(火) 14:54:31.00
>>996
linuxだったらどーするんだ?
998デフォルトの名無しさん:2012/05/22(火) 14:56:22.45
>>987
Arrays.asList
999デフォルトの名無しさん:2012/05/22(火) 14:59:53.10
>>995
Doppio VM とか言ってみるテスト
1000デフォルトの名無しさん:2012/05/22(火) 15:03:50.50
test
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。