【初心者】Java質問・相談スレッド109【大歓迎】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/11/25(日) 12:36:51JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド108【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1194442749/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
次スレは>>980あたりで。
0002デフォルトの名無しさん
2007/11/25(日) 12:44:50ぐぐって仕様っぽいのを見たけど書いてないし、ひょっとしてないのかな?
-Xmx512Mを指定したいんだけどどう書いたらいいかご存じだったら教えて下さい
0003デフォルトの名無しさん
2007/11/25(日) 12:48:49無理。
Jarのマニフェストファイルに記述された内容は【Runtime起動後、アプリ軌道前に適用される】んだから、渡せる方がおかしいだろ?
起動用のbatファイルを提供するのが一般的。
どうしてもダメならばJava内でRuntime.exec() あたりを使い、別のVMを起動する(この時に-Xmx512M等を指定する)
0004デフォルトの名無しさん
2007/11/25(日) 12:49:210005デフォルトの名無しさん
2007/11/25(日) 13:17:460006デフォルトの名無しさん
2007/11/25(日) 14:07:39Thx
>どうしてもダメならばJava内でRuntime.exec() あたりを使い、別のVMを起動する(この時に-Xmx512M等を指定する)
これでいってみます。
>渡せる方がおかしいだろ?
そうかも知れませんが、(Winでは)ダブルクリックで起動出来ることを謳っているわけですし
内部的に上記のようなことをしてくれる仕様があってももよさげに感じます
0007デフォルトの名無しさん
2007/11/25(日) 14:43:55ダブルクリックで起動は、Windowsの機能であるから、
その機能で補完するのが筋ではないか?
0008デフォルトの名無しさん
2007/11/25(日) 14:47:330009デフォルトの名無しさん
2007/11/25(日) 15:01:16周期的な動作でなんか違うと思いスレッドを用いたアニメーションしたいなと考えているのですが
そこらへん解説してるサイトとかありませんか?
それらしい単語でググっても見つからなくて困ってます。
0010デフォルトの名無しさん
2007/11/25(日) 15:27:17winなら、exewrapを使うとか
VMの引数も指定できたはず
0011デフォルトの名無しさん
2007/11/25(日) 15:28:37Swing アニメーション でググれ
0012デフォルトの名無しさん
2007/11/25(日) 15:45:48ダブルクリックで起動できないの?逐一java Hoge?それともbatファイルみたいなの書くのかな。
0013デフォルトの名無しさん
2007/11/25(日) 15:49:300014デフォルトの名無しさん
2007/11/25(日) 15:55:47CUIからどうやってダブルクリックするの?
0015デフォルトの名無しさん
2007/11/25(日) 15:58:010016デフォルトの名無しさん
2007/11/25(日) 16:04:56CUIのようにダブルクリックというインターフェイスがない事もあるわけで、>7の言うようにOSの機能で補完するのが筋ってこと
0017デフォルトの名無しさん
2007/11/25(日) 16:05:12かまととぶった嫌味ったらしいレスにわけだが反論・・・・!・!?
この何百回繰り返されたかも分からないやりとり・・!!
お前らこそム板住人の・・鏡・・だ!!
0018デフォルトの名無しさん
2007/11/25(日) 16:09:450019デフォルトの名無しさん
2007/11/25(日) 16:13:310020デフォルトの名無しさん
2007/11/25(日) 16:14:530021デフォルトの名無しさん
2007/11/25(日) 16:21:580022デフォルトの名無しさん
2007/11/25(日) 16:52:20○ファイルの関連付けが出来るGUIを持つOSでは
0023デフォルトの名無しさん
2007/11/25(日) 16:57:39static <T> T as( Object o ) {
return (T) o;
}
というコードの動きがよく解りません。
Tという総称型にキャストし、<T>が戻り値の型となることは解るんですが、<T>の後ろのTが何を意味しているんでしょうか?
0024デフォルトの名無しさん
2007/11/25(日) 17:09:140025デフォルトの名無しさん
2007/11/25(日) 17:10:350026デフォルトの名無しさん
2007/11/25(日) 17:14:43a行b列から、c行d列までの文字列を読み取る処理をしたいんです。
readLine()とread()を使って実装するしかないでしょうか…?
よろしくお願いします。
0027デフォルトの名無しさん
2007/11/25(日) 17:16:45逆でしたか・・orz
<T>がどんなおまじないなのかが知りたいんですけど、教えていただけませんか?
0028デフォルトの名無しさん
2007/11/25(日) 17:21:08単に
static T as( Object o ) {
return (T) o;
}
って書いたら、T が何のことかわからんだろ
クラス T が見つかりませんってエラーになる
0029デフォルトの名無しさん
2007/11/25(日) 17:21:41Q. 標準API で一番楽な方法は?
A. BufferedReader.readLine() 使え
Q. 行文字列作るオーバーヘッドが気になります
A. FileChannel でバッファに読み込んで先頭から改行の数数えれ
0030デフォルトの名無しさん
2007/11/25(日) 17:39:25データベースに接続しますよね?そのConnectionのインスタンスでStatement
のインスタンスを作るわけですが、これに使用限度あります?
(例えば一度Statementインスタンス作ってから同じインスタンスで2度execute
メソッド実行するとそのインスタンスは無効になるとか・・・)
0031デフォルトの名無しさん
2007/11/25(日) 17:42:33closeするまでは有効じゃね?
とはいっても一般的にはトランザクション単位で破棄して作り直すか、その辺はフレームワークに任せてしまうだろ
0032デフォルトの名無しさん
2007/11/25(日) 17:44:17128 回以上実行すると 1 回例外になっただけでゲームオーバーになるから注意しろ。
0033デフォルトの名無しさん
2007/11/25(日) 17:52:220034デフォルトの名無しさん
2007/11/25(日) 18:00:13ありがとうございます。FileChannnelで実装してみようと思います。
しかしやはり改行を数えるしかないのですね…
0035デフォルトの名無しさん
2007/11/25(日) 18:03:270036デフォルトの名無しさん
2007/11/25(日) 18:08:200037デフォルトの名無しさん
2007/11/25(日) 18:34:43<title>think a style :: 8.5</title>
<link rel="stylesheet" href="script/css.css" type="text/css">
<script src="script/java2.js" type="text/javascript"></script>
</head>
<body onLoad="MM_preloadImages('image/bbs_ura.gif','image/about_ura.gif','image/top_ura.gif','image/bookmark_ura.gif')">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="417" align="center" valign="top" bgcolor="#EFEFEF"><img src="image/diary_top_aug.gif" alt="AUGUST" width="417" height="80"><br>
<table width="384" border="0" cellpadding="2" cellspacing="0">
このソースってどうなんですかね。古いページのソースなんですが・・・。
ばれると嫌なので所どろ削ってありますけど何かあるでしょうか?
0038デフォルトの名無しさん
2007/11/25(日) 18:35:520039デフォルトの名無しさん
2007/11/25(日) 18:35:580040デフォルトの名無しさん
2007/11/25(日) 18:36:54Javaと何か関係があるのか?
0041デフォルトの名無しさん
2007/11/25(日) 18:46:29javaをかじった人が作ったのかどうかがよく分からないんですけど。
0042デフォルトの名無しさん
2007/11/25(日) 19:01:37どうなんだ?って何を突っ込んでもらいたんだ
0043デフォルトの名無しさん
2007/11/25(日) 19:11:550044デフォルトの名無しさん
2007/11/25(日) 19:23:38htmlからどうやってjavaするの?
0045デフォルトの名無しさん
2007/11/25(日) 19:39:160046デフォルトの名無しさん
2007/11/25(日) 20:21:29どうすれが出来るでしょうか。
0047デフォルトの名無しさん
2007/11/25(日) 20:23:170048デフォルトの名無しさん
2007/11/25(日) 20:29:390049デフォルトの名無しさん
2007/11/25(日) 22:09:37クラスAをインスタンス化して、 aa = new A();
クラスAのインスタンスを引数にクラスBのメソッドinBを呼び出し、 B.inb(aa);
クラスBのメソッドinb内でクラスAの変数int hoge[i][j];を
A.hoge[i][j]のように使うと.シンボルが解決できないとエラーが出ます。
クラスAの変数int ohen;をA.ohenとするとエラーがでません。
なぜこうなるか教えてください。
0050デフォルトの名無しさん
2007/11/25(日) 22:12:24apidocで探しても、getpassと同じような機能のメソッドを持つクラスが見当たりません。
0051デフォルトの名無しさん
2007/11/25(日) 22:18:460052デフォルトの名無しさん
2007/11/25(日) 22:24:20そのA.hoge[i][j]は
クラス変数ですか?
それともインスタンス変数ですか?
A.hoge[i][j]でOKなら前者
aa.hoge[i][j]でNGなので前者w
A.ohenでも同じかな?
005349
2007/11/25(日) 22:24:51A.ohenじゃなくてaa.ohenでした。
0054デフォルトの名無しさん
2007/11/25(日) 22:35:03ソース示せ
解決できない理由はスペルミスからアクセス修飾子まで色々ある
Aの変数int hoge[][] の部分だけでもコピペしてくれ。
ついでに言えば、int[][] hoge と書こうな
0055デフォルトの名無しさん
2007/11/25(日) 22:50:00java.io.Console#readPassword
0056デフォルトの名無しさん
2007/11/25(日) 22:55:16主要 AS で 6.0 対応してるのってもうあんのかな。
0057デフォルトの名無しさん
2007/11/25(日) 22:59:00問題は7への移行タイミングだな、5と6はそこまで大きく変らないが7でまた大幅に変るらしい
ASってアプリケーションサーバーの事か?
005849
2007/11/25(日) 23:46:40部分的に抜き出したものです。
class A{
A(){
int[][] hoge = {{ 0,0}, {-12, -15}, { -1, -3} };
int ohen = 1;
}
}
class B{
static int inB(A aa){
int ae = aa.hoge[1][1]; // aa.hogeをA.hogeにしてもエラー
int ao = aa.ohen; // 同様
return ae;
}
}
class Main{
static void main(){
int b;
A aa = new A();
b = B.inB(aa);
System.out.println(b);
}
}
コンパイルできませんでした。シンボルesbd1、ohenが解決できません。
初歩的なことが分かってなくてエラー出してる気がしますが、よろしくお願いします。
0059デフォルトの名無しさん
2007/11/25(日) 23:50:27最初にローカル変数・インスタンス変数・クラス変数の違いを勉強してください
てか、クラスの基礎の部分すっとばしいてコンパイルできねぇじゃねえよw
0060デフォルトの名無しさん
2007/11/25(日) 23:51:02Aクラスのコンストラクタで何をかいてるの
入門書にあるクラスの章から勉強しなおしっ
0061デフォルトの名無しさん
2007/11/26(月) 00:05:21006249
2007/11/26(月) 00:13:20ありがとうございました。
0063デフォルトの名無しさん
2007/11/26(月) 00:15:50当たり前だが↓みたいなのはダメだった
class test1{
public static void main(String args[]){
System.out.println("class test1{
public static void main(String args[]){
System.out.println("Hello World!");
}
}");
}
}
0064デフォルトの名無しさん
2007/11/26(月) 00:20:59"public static void main(String args[]){"+…
みたいに繋げば
0065デフォルトの名無しさん
2007/11/26(月) 00:21:38ソースファイルをFileReaderで読むくらいじゃね?
0066デフォルトの名無しさん
2007/11/26(月) 00:23:13何になるんでしょうか?インターフェイスのインスタンス?
インターフェイスのインスタンスを引数に持つメソッドがあったりするんだけど
そのインスタンスを渡されてどういう用途にするのかわからない…
これが委譲ってこと?
0067デフォルトの名無しさん
2007/11/26(月) 00:31:45一言で言えば、変数の型は抽象的な型でおkという事
山田さんってインスタンスは、日本人型でもOKだし、人間型でもOK、でも猫型には入らない
インターフェイスはインスタンスを生成できない
でも、型としては有効。
ただそれだけ。
インターフェイス型を引数に持つってことは、インターフェイスで定義されたことを満たしていればどんな変数でもOKという事だ。
引数がListであれば、ArrayListのインスタンスを渡しても、LinkedListのインスタンスを渡しても動作が保証される。
だが、ArrayList型を引数として指定されていると、LinkedListは渡せない。
0068デフォルトの名無しさん
2007/11/26(月) 00:43:14test1.class と test1.java を同じディレクトリに置いておいて
Reader in = new InputStreamReader(test1.class.getResourceAsStream(test1.class.getPackage().getName() + "/test1.java"));
0069デフォルトの名無しさん
2007/11/26(月) 00:57:16型というのは、のぞき窓のようなもの。実体は生成されたときのまま。
型に入れられた実体は、型の部分だけ見えるようになっている。
委譲というのは、継承ではなく、求める機能を持つ実体を、メンバとして保持し、
必要に応じて、それを参照するようにメソッドを実装すること。
二度手間のように思えるかもしれないが、継承では得られない利点があるため、
広く利用されている手法。
0070デフォルトの名無しさん
2007/11/26(月) 01:07:55>>69
ありがとうございます。ずいぶん視界が開けた感じがしました。
メソッドの引数にinterfaceがある場合、それを受けたインスタンスには
そのinterfaceの実装がある、ということになりますか?
0071デフォルトの名無しさん
2007/11/26(月) 01:35:46メソッドの引数にあるインターフェイスとクラスの違う点は無い。(通常は無いはず。ごめんよ)
どちらも、その実装か、それ自身もしくは継承された"クラスの実体"を求めている。
メソッド実装側で仕様として決められて、そのとおり実装されている場合は、
引数で指定された型のサブクラスにキャストされ、それらのメンバが利用されることもある。
0072デフォルトの名無しさん
2007/11/26(月) 02:03:56ttp://www.cs.princeton.edu/introcs/76computability/Quine.java.html
0073デフォルトの名無しさん
2007/11/26(月) 02:15:13ははぁ、なるほど、わかってきました。
これは一種のキャストっぽいイメージなんですかね。
あるオブジェクトに対してinterfaceを渡す事で、それ自身、もしくはその親に
定義されたメソッドと指定型のクラスを保持する、みたいな。
この辺のお話をもとに自分でinterfaceとclassつくって実験してみます。
ありがとうございました。
0074デフォルトの名無しさん
2007/11/26(月) 03:44:53インターフェースに基づいて自動で付けてくれるし、それが変わったら直列化された
データに互換性がないってのは分かるけど、わざわざプログラマに互換性を選択する
余地を残したのは
・メソッド名やパラメータが変わったりメソッドの追加/削除はあったけど内部フィールドは
変わっておらず、直列化されたデータに互換性があると保障できるとき。
・内部フィールドは変わってないけどそこに持つデータの定義が変わったから以前に直列化
されたデータが使えなくなったとき。
を考慮したって事? クラスに修正が入ったのに直列化されたデータに互換性があるなんてどうやって
保障するんだろ。世の serialVersionUID は全て直列化の仕様を理解してる人が付けてるんだろうか。
0075デフォルトの名無しさん
2007/11/26(月) 08:31:11フィールドが追加になったり意味や有効な値が変わったりした場合は
readResolveで対応するとかして以前と互換性がありますよと
プログラマがそれを保証できる場合に以前と同じserialVersionUIDを付ける
わざわざ対応する必要もないようなささいな修正(バグfixとか?)や
単なる機能(メソッド)追加の場合もあるし
そのたびにいちいち以前のデータを読み込めなくなってたら永続化になんか使えない
0076デフォルトの名無しさん
2007/11/26(月) 09:27:450077デフォルトの名無しさん
2007/11/26(月) 09:29:43クラスAのフィールドにBのコレクションを用意しますよね…?
そのフィールドがnullで初期化され、オブジェクトが割り当てられる
保証が必ずしもないときは、クラスAの利用側(仮にクラスC)は
毎回nullチェックすることになると思うんですが、煩わしいです。
こういう場合にもNullオブジェクトを使ってもいいんでしょうか?
--
class A {
public java.util.Vector<B> vector = null;
}
class B {
}
class C {
public static void main(String args[]) {
A hoge = new A();
if(hoge.vector != null)
<なんらかの処理>
}
}
0078デフォルトの名無しさん
2007/11/26(月) 09:49:30vectorがnullでないことが自然なのなら、
Aのコンストラクタでvectorをnull以外に初期化しておけばいい。
vectorがnullであっても構わないのなら、
nullチェックの煩わしさを避けるのにnullオブジェクトパターンを使う手もある。
でも、そもそもvectorフィールドがpublicになって外部に見えているのが問題な気がする。
vectorに何かの処理を行うのはAにやらせるべきだと思う。
その何かをやらせるメソッドでnullチェックをやればnullチェックが分散することもないし、
nullの時にvectorlazy initializeするとかの処理もひとつにまとめられる。
読み取り専用でvectorを外部で使いたいのならvectorのコピーを外部に出せばいい。
0079デフォルトの名無しさん
2007/11/26(月) 09:51:03vectorをlazy
0080デフォルトの名無しさん
2007/11/26(月) 10:07:51>vectorに何かの処理を行うのはAにやらせるべきだと思う。
なるほど。それだと利用側がVectorを知ってる必要もなくなるんですね。
addやremoveなどの公開メソッドをAに置いて、それが呼ばれたら
nullチェックしたあとにvector本来のメソッドに委譲するように書いてみます。
レスありがとうございました。
0081デフォルトの名無しさん
2007/11/26(月) 10:08:24そのアクセス修飾だと、他から null を代入出来てしまうので
仮にNullオブジェクトを使っても nullチェックを無くすことができない。
あくまでも、アクセス制御を完璧にした上で、null値の替わりに用いる。
nullチェックを減らすこと等を目的としている。
0082デフォルトの名無しさん
2007/11/26(月) 10:42:34>仮にNullオブジェクトを使っても nullチェックを無くすことができない。
実際はpublicではなかったのですが、アクセッサを通してそのまま
Vectorのインスタンスを返したり代入できたりしていたので仰る通りの問題が…。
勉強になります。レスありがとうございました。
コレクションをフィールドに持つクラスは、コレクションに対する外部からの
アクセスを許さずに、コレクションが提供するメソッドを全てラップすべきなのですね。
0083デフォルトの名無しさん
2007/11/26(月) 12:25:210084デフォルトの名無しさん
2007/11/26(月) 13:24:41躓きました。
<% ソース %>のスクリプトレットが2箇所あります。JSPのソースの上のほうと下のほうにあるんですが、
上のスクリプトレット内で宣言・使用した変数を下のスクリプトレット内で使用したいとおもい使用したんですが
エラーになります。
自分でしらべたところ、<%! 各宣言 %>とすればどこのスクリプトレット内でも使用できるそうですが、
これはサーブレットでのグローバル領域での変数宣言と同じで各ユーザーから使われてしまうものとおもわれます。
サーブレットでのdoGet()内と同様に各ユーザー別々に使用できる(スレッドセーフな?)使い方をしたいんです。
どうすればいいでしょうか?ご教授願います。一応次のレスにソースも載せます。
008584
2007/11/26(月) 13:28:20<%--
<%
String flag = request.getParameter("flag");
if(flag.equals("true")) {
String numberStr = request.getParameter("number");
String error = null;
int number;
if(numberStr==null || numberStr.length()==0) {
error = "なにか入れてね";
}
if(error == null) {
try {
number = Integer.parseInt(numberStr);
if(number<0 || number>9) {
error = "0〜9までの数字を入れてね";
}
} catch(NumberFormatException e) {
error = "数字を入れてください";
}
}
}
%>
--%>
<HTML>
<BODY>
008684
2007/11/26(月) 13:29:320〜9の数字を入れてください
<FORM ACTION="../servlet/reqattr.GuessServlet">
<INPUT TYPE="TEXT" NAME="number">
<INPUT TYPE="SUBMIT" VALUE="送信">
</FORM>
<%--
<%
if(flag.equals("true")) {
if(error==null) {
out.println("はずれ。数字 = " + String.valueOf(number));
} else {
out.println(error);
}
}
%>
--%>
</BODY>
</HTML>
下のスクリプトレット内でerror変数とnumber変数がエラーを起こしますので
コメントアウトしています。
0087デフォルトの名無しさん
2007/11/26(月) 13:58:44スレが違っていたらすいません
このサイトを参考にして ttp://www.thinkit.co.jp/free/article/0606/13/3/
eclipse+ibatis+abator+DB2で実行しようと思ったのですが、以下のエラーが出てうまくいきません
Table configuration with catalog null, schema public, and table SHAIN did not resolve to any tables
どなたかよろしくお願いします
0088デフォルトの名無しさん
2007/11/26(月) 13:59:33私はJSPはまったくやらないが、本で勉強してるレベルなのに、
いきなり知らない文法を試そうとするのかな。
やりたいことが載ってる別の本を用意したほうが勉強になると思うのだが。
0089デフォルトの名無しさん
2007/11/26(月) 14:06:29これがコンパイル通らない理由が分からないのかな?
if(num < 0) {
String msg = "error";
}
System.out.println(msg);
0090デフォルトの名無しさん
2007/11/26(月) 14:48:460091デフォルトの名無しさん
2007/11/26(月) 15:04:210092デフォルトの名無しさん
2007/11/26(月) 16:41:05でもさー、これがこうだったら、あれがこれでもできるんじゃね?
って勘でいろいろ試さない?俺はいろいろ試していいと思うんだけどなー
0093デフォルトの名無しさん
2007/11/26(月) 16:41:51自分のライブラリも増えないだろ
0094デフォルトの名無しさん
2007/11/26(月) 16:52:560095デフォルトの名無しさん
2007/11/26(月) 17:09:32いきなりサンプルから始まる本の方が悪いだろ
009684
2007/11/26(月) 17:15:01>>89さんのおっしゃるとおり、ifブロックの中で宣言してました。。
ですから、ただ単にifブロック外で使えないという単純なミスでした。
なんというか、お粗末な結末で大変申し訳なくおもっております。
考えて労力を使ってくださった方々、たいへんありがとうございました。
0097デフォルトの名無しさん
2007/11/26(月) 21:49:24private static final Properties property = new Properties();
static {
initialize();
}
public static void initialize(){
prpper.clear();
for(Enumration e = Property File.getKeys();e.hasmoreElements();){
String Property = (String)e.nextElements();
property.put(PropertyKey,Property_File.getString(PropertyKey));
System.out.println("変数名="+PropertyKey);
System.out.println("内容="+Property_File.getString(PropertyKey));
}
}
0098デフォルトの名無しさん
2007/11/26(月) 21:51:58Forループを抜けた後にファイルの内容を変数ごとに個別に出力させるにはどうすればよいかいいですか?
//ad.propertiesファイル
ad.pathname1=c:AAA/BBB/CCC;
ad.pathname2 =c:DDD/EEE/FFF;
ad.pathname3=c:GGG/HHH/III;
上記のプロパティファイルの内容を個別に出力させたいです。
0099デフォルトの名無しさん
2007/11/26(月) 22:33:02forループ抜けた後に…云々というのは、ループ外で定義した変数に
読み込んだ「ファイルの内容」を保持しておけば良いんじゃないの?
あとは日本語が理解できないのでパス
0100デフォルトの名無しさん
2007/11/26(月) 22:46:09for文を抜けた後の処理にfor文内で読み込んだファイルのパスをpathname1、2、3と個別に出力させたいのですが、
わかりますでしょうか?
0101デフォルトの名無しさん
2007/11/26(月) 22:54:45「ファイルのパス」「個別に出力」等の単語が指し示すモノ・状態が分からない。
java.util.List<String> list = new java.util.ArrayList<String>(); // ループ外で定義した変数
for (...) { list.add( Property_File.getString(PropertyKey) ); } // 読み込んだ「ファイルの内容」を保持
...Arrays.toString(list)...等、希望の出力書式と出力先に。
0102デフォルトの名無しさん
2007/11/26(月) 23:12:390103デフォルトの名無しさん
2007/11/26(月) 23:16:01失礼しました、ad.propertiesファイル にあるpathname1、pathname2、pathname3
の内容を出力させたいです。
0104デフォルトの名無しさん
2007/11/26(月) 23:18:10日本語でおk
0105デフォルトの名無しさん
2007/11/26(月) 23:27:35http://www.nicovideo.jp/watch/sm1493205
はっきりいって糞暴力動画
これでいいのか?ニコニコ動画!??
0106デフォルトの名無しさん
2007/11/26(月) 23:29:25三回目なのでそろそろ当たりを引きたいのだが…私、ESPレベル低いから
「ad.propertiesファイル」に記述されている3つのファイルパスを取得、
それらのパスが示すファイルデータを、何らかに表示したい。
ということかしら。
で、File(String) に突っ込んで、StreamかReaderで普通に読み込めば良いんじゃない?
0107デフォルトの名無しさん
2007/11/27(火) 00:17:37解釈有難う御座います、その通りです。pathname1等には、
デスクトップに貼り付けてあるファイルまでのパスが記入してあり、pathname1に入っているファイルパスにアクセスログ等を記述するようにしたいです。
わかりますでしょうか?
0108デフォルトの名無しさん
2007/11/27(火) 00:21:180109デフォルトの名無しさん
2007/11/27(火) 00:22:27バッチからjavaプログラムを起動するときに、MySQLに接続するjarファイルが上手く使えないです。
エクリプス上では上手く接続できます。
(実行>起動構成の実行>クラスパス>ユーザーエントリー>プロジェクト名>外部JARの追加 にて設定)
このエクリプスの起動オプションと同じようなものをバッチに付け加えれば上手くいくかなと思いますが、そこが上手くいかないのです。
現状では、
java -classpath . -jar "C:\Program Files\Java\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar" プロジェクト名.hoge
で起動すると
Failed to load Main-Class manifest attribute from・・・
のエラーが出ます。
また、-jar 以下のオプションを外して実行すると
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver・・・
のエラーが出ます。
ちなみに、echo %classpath%をしてもクラスパスは通っています。
詳しいかた、よろしくお願いいたします。
0110デフォルトの名無しさん
2007/11/27(火) 00:22:460111デフォルトの名無しさん
2007/11/27(火) 00:23:08「やっぱり日本語で(ry 」とはどういうことでしょうか?
0112109
2007/11/27(火) 00:27:57System.getProperty("java.class.path") ;
の一行を加えても変化なしでした。
また、Failed to load Main-Class manifest attribute from・・・
ではjarファイルの中にメインクラスがねーよというエラーと推測しますが
では何故エクリプス上では問題なく動く(DBの中身の出力可)のかが分かりません・・・
0113デフォルトの名無しさん
2007/11/27(火) 00:35:14それは java コマンドの -jar オプションの書式と jar ファイルの仕様に適合してないから。ではないか
> google "Main-Class manifest attribute"
ttp://www.tohoho-web.com/java/other.htm
// Eclipse は色々補完してくれるから、動作検証をするにはそれなりにEclipse自体への理解が必要。
0114109
2007/11/27(火) 00:42:28ありがとうございます!
そのページは見たつもりでしたが、見落としがありました。
クラスパスを2個以上設定し、区切るときはセミコロンで区切れば良かったのですね。
java -classpath .;"C:\Program Files\Java\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar" プロジェクト名.hoge
これで実行成功しました!
0115デフォルトの名無しさん
2007/11/27(火) 01:05:180116デフォルトの名無しさん
2007/11/27(火) 01:11:52どのあたりが気になるところなのだろう。
0117デフォルトの名無しさん
2007/11/27(火) 10:06:52http://niben.jp/02topics/2007/070327.html
[抗議内容]
女性専用休憩室 http://niben.jp/02topics/2007/070327.html はいったいそういうつもりなのか?
このような男性差別は憲法14条に違反し、不法行為となる。
第二東京弁護士会が昨今問題となっているかかる男性差別を行うのはどういうつもりなのか?
[返答]
ご意見拝見しました。当会では司法改革の一環として女性における司法アクセス障害の解消のために男女共同参画に取り組んでおります。
そして、男女共同参画を促進するための積極的是正措置を憲法第14条の性差別禁止に反するものではなく、
むしろ憲法第14条に定めた男女平等を積極的に実現するためのものと考えております。
政府も女性差別撤廃条約の批准を行い、国内的には男女共同参画社会基本法を制定し、
基本法では積極的是正措置についても検討すべきことを定めています。
当会の女性専用室は、これまでの会員室は男性会員の利用者がほとんどであり女性会員が使いづらいという問題点を是正し、
会館において仕事の合間に産前産後の場合をはじめとして休憩を取ることができるようにした積極的是正措置にあたるものです。
その広さも会館のごく一部を女性専用としており男性会員の利益を著しく損なうものとはいえない範囲で設置しました。
ご参考までに、東京弁護士会では会館建設時から女性会員室をゆったりと設けております。
何とぞご理解賜りますようお願い申し上げます。
0118デフォルトの名無しさん
2007/11/27(火) 13:48:03BufferedReader br = new BufferedReader(isr);
String strLine, source = "";
while((strLine = br.readLine()) != null){
source += strLine + "\n";
}
開いているファイルのサイズは170KBで、このコードを実行しきるのに5秒以上掛かります。
速度を改善する方法があれば教えてください。よろしくお願いします。
0119デフォルトの名無しさん
2007/11/27(火) 13:52:130120デフォルトの名無しさん
2007/11/27(火) 13:58:04String + Stringをするたびに新しいStringインスタンスを生成するため、
Stringの加算はコストが高くつく。
StringBuilderかStringBufferを使ってappendしていき、
最後にStringに変換する。
例えば、
BufferedReader br = new BufferedReader(isr);
String strLine;
StringBuilder sb = new StringBuilder();
while((strLine = br.readLine()) != null){
sb.append(strLine);
sb.append('\n');
}
String source = sb.toString();
あとは、ストリームの正体によるけどストリーム自体が遅いとか。
0121デフォルトの名無しさん
2007/11/27(火) 13:59:04Rubyで言う、Enumerable#each_with_index のような機能は、Javaではどうやっ
て実現したらよいでしょうか?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Enumerable#each_with_index
作るのは難しくありませんが、標準的な手法があるなら、それを利用したいの
です。
0122デフォルトの名無しさん
2007/11/27(火) 14:01:16後、ループ内での String の連結は StringBuilder にしたほうが…
一応メモリーと複製速度が増える要因ではあるが…170kB程度じゃなぁ
0123デフォルトの名無しさん
2007/11/27(火) 14:06:46わざわざ1行ずつに分解したのを改行付加しながら連結って、すごく無駄のような
改行コードを統一したいとかなのかな
0124デフォルトの名無しさん
2007/11/27(火) 14:06:55ないので、for(int i=0; i<size; i++)でまわすか、カウンタ変数使うか好きなほうをどうぞ
独自のIteratorでも作成すれば可能だけど、可読性損なうから意味無し
RubyはRuby、JavaはJava。
0125デフォルトの名無しさん
2007/11/27(火) 14:07:59特に標準的なものはない
0126デフォルトの名無しさん
2007/11/27(火) 14:09:24Java5以降の拡張for文では、: の右辺にイテレータを取ることはできません。
java.lang.Iterableインターフェースを実装したクラスのインスタンスのみが
受け取れます。
既存のライブラリにあるAClass(修正できない)に、イテレータを返すメソッ
ドAClass#iterator()があるのですが、このAClassはIterableインターフェー
スを実装していないので、拡張for文で利用することはできません。
どうするのが一番良いでしょうか?Iterable<T>を実装したアダプタクラスを
作るのが良いのかなと思いますが、もっと良い方法があるなら知りたいです。
0127デフォルトの名無しさん
2007/11/27(火) 14:14:14iterator()が返すIteratorを使って普通のfor文なりwhile文なりを書くのではだめなの?
0128デフォルトの名無しさん
2007/11/27(火) 14:16:13ありがとうございます!
>>120>>122さんの言うようにやってみたら劇的に改善しました!
>>123
恥ずかしながらこれ以外の読み込み方法が分かりません。
皆様のおかげで速度改善が出来ました。ありがとうございました。
0129デフォルトの名無しさん
2007/11/27(火) 14:22:21アダプタでいいんじゃないかな
class AClassAdapter implements Iterable<?> {
private AClass a;
public AClassAdapter(AClass a){this.a=a;}
public Iterator<?> iterator(){ return a.iterator(); }
}
AClass a = ...;
for (Object o : new AClassAdapter(a)) {
...
}
継承できるなら
class IterableAClass extends AClass implements Iterable<?> {
}
でも俺なら単純に
for (Iterator<?> i = a.iterator(); i.hasNext(); ) {
...
}
と書く
0130デフォルトの名無しさん
2007/11/27(火) 14:25:42単にテキストファイルをそのまま読み込んで全体を文字列にしたいだけなら、
行単位で読み込むのでなく、
char配列を引数に取るreadメソッドがあるので、
これを使ってもっと大きな単位で読み込んで、
最後にchar配列をStringにすればいい。
極端なことをするなら、char配列をファイルの文字数分用意して一気読みをする。
0131デフォルトの名無しさん
2007/11/27(火) 14:28:16そのような名前の付け方の規則がよくわからないのでおしえてください。
どうしてもわかりません。よろしくおねがいします。
0132デフォルトの名無しさん
2007/11/27(火) 14:31:12別にgetとかsetだけじゃなくて、メソッド名は全部、先頭は小文字
0133デフォルトの名無しさん
2007/11/27(火) 14:33:20いちおうJavaの言語仕様で名前付け規約が定められている。
ttp://java.sun.com/docs/books/jls/third_edition/html/names.html#6.8.4
Javaで分からないことがあればまず言語仕様を見よう。
0134デフォルトの名無しさん
2007/11/27(火) 14:52:40例えばINTERRUPT_MODEって定数があったら
"INTERRUPT_MODE"って言う文字列を
INTERRUPT_MODEにする方法みたいなやつです。
0135デフォルトの名無しさん
2007/11/27(火) 14:57:06String s = "INTERRUPT_MODE";
Mode mode = Mode.valueOf(s);
0137デフォルトの名無しさん
2007/11/27(火) 15:10:06君だけが勝手に大文字で始めると他の人が混乱するから
>>134
Enumでもいいけど、static final String MODE = "MODE";じゃ駄目なのかい?
0138デフォルトの名無しさん
2007/11/27(火) 15:12:33AClassが対応するまで拡張for文を使わないが正しい
0139デフォルトの名無しさん
2007/11/27(火) 15:12:46それでOKでした。
有難うございます。
0140デフォルトの名無しさん
2007/11/27(火) 15:29:56[1] 授業単元:プログラム言語2
[2] 問題文:課題A で作成したプログラムを以下のように修正する.
* gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される.
* gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される.
* gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される
#include <stdio.h>
#include <stdlib.h>
#define a 5
#define TAX(x,y) (x+y)*a/100
#define PRICE(x,y) (x+y)+(x+y)*a/100
int main(void)
{
int x,y;
printf("tax of x+y %d \n", TAX(x,y));
scanf("%d",&x);
printf("lnput an integer y:");
scanf("%d",&x);
printf("tax of x+y: %d \n",);
printf("price of x+y %d \n", PRICE(x,y));
return0;
}
[3] 環境
[3.1] OS: (Linux/)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: ([2007年11月28日まで]
[5] その他の制限: (Cプリプロセッサぐらいまで)
課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。
貼りつけたプログラムは、課題Aが完成したものです。
0141デフォルトの名無しさん
2007/11/27(火) 15:34:02すみませんでした。
0142デフォルトの名無しさん
2007/11/27(火) 15:37:57普段はC:\Program Files以下にjdkをインストールするのですが、
今回外付けのHD上にインストールしてみました。
インストール先dirは「E:\10_ProgramFiles」以下で、
パスも「E:\10_ProgramFiles\Java\jdk1.5.0_14\bin」に通しました。
で、ここからが問題なのですが、コマンドプロンプトで
「java」コマンドは認識されるのですが「javac」コマンドが認識されません。
メッセージはお約束の
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
です。
「javac」ではなく、フルパスで
「E:\10_ProgramFiles\Java\jdk1.5.0_14\bin\javac」と打つと認識されます。
同じようなことでお悩みになった経験のある方いらっしゃいませんか?
0143デフォルトの名無しさん
2007/11/27(火) 15:42:31って何のためにエンコーディング設定してるの?フォーム情報をShift_JISで送れって言う命令?
これ指定してもutf-8とかでページが表示されることあるんだけど。だとしたら、ページの
エンコードを指定してるわけじゃないよね。ページのエンコ指定ならhtmlのmetaタグで指定すればいいわけだし。
0144デフォルトの名無しさん
2007/11/27(火) 15:47:58単純にパスが通ってません。
java.exeは実行できるのは、単にwindowsのシステムフォルダにjava.exeがコピーされているからです。
パスの指定でJAVA_HOMEとかを使ってませんか?
0145デフォルトの名無しさん
2007/11/27(火) 15:50:16HttpResponseのヘッダ情報じゃね?
実際のエンコとHTMLmetaのエンコ指定とヘッダと混在するのがカオス
0146デフォルトの名無しさん
2007/11/27(火) 15:54:00142です。
一発で解決しました。
ありがとうございます!
0147143
2007/11/27(火) 16:12:270148126
2007/11/27(火) 16:49:38そうなのですか…。どうも従来のfor文が冗長に見えて仕方が無いのですが、
それをそのまま使うべきなのかもしれません。ありがとうございました。
0149デフォルトの名無しさん
2007/11/27(火) 20:48:180150デフォルトの名無しさん
2007/11/27(火) 21:22:54質問の意図が分からない
0151デフォルトの名無しさん
2007/11/27(火) 21:31:41そりゃインスタンスが別なら軽症関係にあろうがなかろうが別々の領域に確保されるよ。
0152デフォルトの名無しさん
2007/11/27(火) 21:42:08サブクラスをnewするとスーパーとサブで2こ出来るよね
0153デフォルトの名無しさん
2007/11/27(火) 21:45:24できねーよ。同じインスタンスだろーが。
0154デフォルトの名無しさん
2007/11/27(火) 21:51:20変数ごとにメモリは別の領域に確保される
インスタンスごとにグループ化はされている。
あとはどんな型で見るかによって見える範囲が違う
0155デフォルトの名無しさん
2007/11/27(火) 21:54:420156デフォルトの名無しさん
2007/11/27(火) 22:04:44その確保の順番がスーパークラスからって話で何か問題ある?
0157デフォルトの名無しさん
2007/11/27(火) 22:04:56new A() とすれば A に必要な領域がスーパークラス分も含めて確保される (VMの実装によるが
その領域は連続している)。
0158デフォルトの名無しさん
2007/11/27(火) 22:12:37でも、初期化はスーパクラスから
0159デフォルトの名無しさん
2007/11/27(火) 22:14:230160デフォルトの名無しさん
2007/11/27(火) 22:16:45privateフィールドには super 付けてもアクセスできない。
0161デフォルトの名無しさん
2007/11/27(火) 22:21:38superを付けるのは、同じ名前のメソッドやフィールドがあった場合に、コンパイラに対してどのメソッド(フィールド)を使うかを明示する為でしかない。
0162デフォルトの名無しさん
2007/11/27(火) 22:29:410163デフォルトの名無しさん
2007/11/27(火) 22:36:49154のがわかりやすかった。全部入ってる下からグループ化されるし。
0164デフォルトの名無しさん
2007/11/27(火) 22:44:12JavaVM仕様
概念的なものであれば、言語仕様でも充分に書いてある
0165デフォルトの名無しさん
2007/11/27(火) 22:45:39分岐を使わずB、Cで処理を分ける方法ってありませんか?
A、B、Cともに生成は別ライブラリなので弄れないです。
0166デフォルトの名無しさん
2007/11/27(火) 22:46:06ないと思うけど。実装依存な部分の話だし。
0167デフォルトの名無しさん
2007/11/27(火) 22:47:57そりゃポリモーフィズムのことをいってんのか?
文脈からすると、A,B,Cのクラスは全部固定に聞こえる。
もしその前提で行くとなると、instanceofで分岐するしかないと思うんだが・・・。
0168デフォルトの名無しさん
2007/11/27(火) 22:51:17ジェネリックとかでできないかなぁと思ったんですが。
0169デフォルトの名無しさん
2007/11/27(火) 22:51:17サブクラスで挙動変えるのは A, B, C のクラス設計変えないと無理。
もし A がインターフェースなら動的プロキシ使え。
0170デフォルトの名無しさん
2007/11/27(火) 22:54:13Javaは継承での仕分けしかサポートしてないからね……
場合によってはVisitorパターンで代用できるが、それを使わずに設計されたライブラリに対しては無力
結局instanceofで手動分岐するしかない。
0171デフォルトの名無しさん
2007/11/27(火) 22:56:51最初から分ける処理の部分を分離できるように設計されてなきゃ
0172デフォルトの名無しさん
2007/11/27(火) 22:56:53GenericはErasureだから実行時はないものとされるよ。
だから分岐には使えないと……
Classオブジェクトを同時に渡して手動キャストみたいな荒業は出来るがあんまり意味ないか。
>>169
>動的プロキシ
その発想があったか
0173デフォルトの名無しさん
2007/11/27(火) 23:01:29ああ、それなら関数のオーバーロード使えばできるよ(たぶん見にくいけど)
一つの関数の名前でA,B,Cそれぞれのクラスについて定義すればいい。
ただし、このメソッドはクラスのインスタンスの型ではなく、変数の型に合わせて呼ばれるから、
クラスAの変数にクラスBのインスタンスを入れたとしても、
void func(A a){〜}
void func(B b){〜}
A b_as_a = new B();
func(b_as_a); //<-呼ばれるのは上
となる。インスタンスの型によって処理を変えたいなら、ポリモーフィズムか前述のinstanceofしかない。
0174デフォルトの名無しさん
2007/11/27(火) 23:02:530175デフォルトの名無しさん
2007/11/27(火) 23:12:37オーバーロードとオーバーライドの違いで苦戦する未来が見えた
0176デフォルトの名無しさん
2007/11/27(火) 23:25:230177デフォルトの名無しさん
2007/11/27(火) 23:27:540178デフォルトの名無しさん
2007/11/28(水) 00:01:27名前はJapaにしようか
0179デフォルトの名無しさん
2007/11/28(水) 00:03:28NihongoDeOK をつくってくれ
0180デフォルトの名無しさん
2007/11/28(水) 00:03:360181デフォルトの名無しさん
2007/11/28(水) 00:14:56いちいち 0xFF でマスクするの面倒だし、なんかそこだけ気持ち悪ぃ。
byte → 8bit 符号なし (0〜255) → バイナリデータに使用
tiny → 8bit 符号付 (-128〜127) → 整数値として使用
0182デフォルトの名無しさん
2007/11/28(水) 00:20:03データ型の要素はすべて直行してるのに、いちいち固有の名前が与えられてるのが不自然なんだよ。
整数型も浮動小数点型も符号のあり/なしと使用バイト数を自由に決められる型にすればいい。
Integer<false, 4> みたいな感じで。もしくはさらに拡大してVar<Numeric.Integer, false, 4>みたいにして全部の型を定義すれば
全部の問題が片付く。頻繁に使うタイプは標準ライブラリで先に定義し解けばいい。
まあ、今のJava言語の使用では到底不可能だけどな。
0183デフォルトの名無しさん
2007/11/28(水) 00:21:590184デフォルトの名無しさん
2007/11/28(水) 00:26:49コプロってもう死語か?
0185デフォルトの名無しさん
2007/11/28(水) 00:33:01(先に断っておく、マジレスしてすまん)
コプロってコプロセッサのことであってる?GPUみたいなもんだと解釈していいんだろうが、
それならGPUの指定する型に合わせたサイズと型をライブラリで指定すればいい。
実際、DirectXは標準のD3DXMatrix型じゃなくとも、byte[8]の構造体で処理できる。
0186デフォルトの名無しさん
2007/11/28(水) 00:40:53なんでCにはなかったんだろう。
0187デフォルトの名無しさん
2007/11/28(水) 00:42:20FPU の事。今はもう CPU にビルトイン状態になっているが、IEEE 754 規格に合わない
浮動小数点形式なんか採用したら FPU 殺してるも同然。
0188デフォルトの名無しさん
2007/11/28(水) 00:43:560189デフォルトの名無しさん
2007/11/28(水) 00:51:44そうだったのか。それなら、最低限FPUでサポートされる型を標準としてライブラリで定義したらいいんでない?
それとも、FPUで扱えない型があるだけでプログラム全体のスピードが落ちるんだろうか。
0190デフォルトの名無しさん
2007/11/28(水) 00:57:25外部から呼び出す、見たいな事をやってるコードをよく見るんですけど
あんなことして遅くならないのですか?
0191デフォルトの名無しさん
2007/11/28(水) 01:02:12Java VM は C で書かれてるから Java プログラムで double や float 使わなければ問題はないが、
シミュレーションや数値解析、グラフィック処理やり始めたら他言語にめちゃくちゃ水を空けられる結果になると思う。
ハードウェア未対応な動きをさせる方を BigDecimal のようにライブラリ提供すべきでは。
0192デフォルトの名無しさん
2007/11/28(水) 01:02:56そうしない方が速いと思う理由は何ですか?
0193デフォルトの名無しさん
2007/11/28(水) 01:05:26どのくらい遅くなるんだい?
1ミリ秒以上の差が出るならば次から考慮するよ
0194デフォルトの名無しさん
2007/11/28(水) 01:21:13まあ、現状で特定のサイズ/型に特化したオペレーションがCPU周辺にあるんだから、そうするのが妥当なんだろうけど。
でもそうなると、結局PCの環境によってdoubleやintのサイズが違うとかいう馬鹿なことが起こっちゃう。(Cだけか?
・・・とはいうものの、有効な対策があるわけでもないし、しょうがないのかなあ。
0195デフォルトの名無しさん
2007/11/28(水) 01:25:42インスタンス参照してクラス解決してから呼び出すよりは速い。
0196デフォルトの名無しさん
2007/11/28(水) 01:28:53亀レスだが、Commons Collectionsってのがあって内部イテレータ用のインタフェースが用意されている。
また、JDK1.7ではクロージャが追加されるとの話もある。
0197デフォルトの名無しさん
2007/11/28(水) 01:30:10static自体が実行速度が速いんじゃなかったかな?
0198190
2007/11/28(水) 01:50:33privateメソッドよりpublicメソッドのほうが遅いってことは、globalに近い
別のクラスのメソッドなんてさらに遅いのではないかと思ったりしたわけです・・・
0199デフォルトの名無しさん
2007/11/28(水) 01:54:57C で int のサイズが違うのは 「2 バイト以上 (でその環境でもっとも効率の良い幅)」 という
最低限の保障しか規定していないから仕方がない (double って IEEE 754 準拠だったと
思うけど幅変えられたか?)。あっちは実行効率重視なんだし。
0200デフォルトの名無しさん
2007/11/28(水) 01:57:28伝聞を元に推測を展開するより、まずはその手で試してみたほうが良いと思う。
プロマネ志望とかなら良いんだけど。
0201デフォルトの名無しさん
2007/11/28(水) 02:06:04> privateメソッドよりpublicメソッドのほうが遅いってことは
そもそも、この部分の根拠は?
0202デフォルトの名無しさん
2007/11/28(水) 02:06:12C / C++ / Java での差はかなりあるよ
0203デフォルトの名無しさん
2007/11/28(水) 02:08:11Ruby みたいに動的に探しに行く言語なら遅くなるかも知れないけど
Java はコンパイルしてしまえば同じ(コンパイル時に見えるか見えないかの違いだけ)
0204デフォルトの名無しさん
2007/11/28(水) 02:15:09いやまぁ private は継承の影響を一切うけないから静的で
public は動的ってのはあるから、同じじゃない。
「動的」っても Ruby の動的ってのとは程度が違うけど。
でもまぁ、JITがインライン展開するかの判断には private か public かよりも
メソッド自体の長さとか、使用するスタックサイズとかの方が重要っぽいし、
private だから速いってのは final すれば速くなるって都市伝説と同レベルだと思うぞ。
0205デフォルトの名無しさん
2007/11/28(水) 02:24:100206デフォルトの名無しさん
2007/11/28(水) 02:25:25staticついてなけりゃだけどな。
private/publicでinvokespecial/invokevirtualの差がつくのは。
0207デフォルトの名無しさん
2007/11/28(水) 03:05:10しなきゃならない仕様だっけ? PostgreSQL 8.2 だと下のが全件検索になってしまうんだが。
PreparedStatement stmt = con.prepareStatement("SELECT * FROM FOO WHERE NAME LIKE ? || '%'");
stmt.setString(1, "%");
0208デフォルトの名無しさん
2007/11/28(水) 06:31:160209デフォルトの名無しさん
2007/11/28(水) 09:14:030210デフォルトの名無しさん
2007/11/28(水) 09:15:330211デフォルトの名無しさん
2007/11/28(水) 11:19:080212デフォルトの名無しさん
2007/11/28(水) 15:59:37思うんですけど、その後どうなったかご存知ですか?
0213デフォルトの名無しさん
2007/11/28(水) 16:44:51ん?Apache Geronimoのことか?
http://geronimo.apache.org/
0214デフォルトの名無しさん
2007/11/28(水) 17:13:40よろしくお願いします。
import java.util.Comparator;
class A {
public static final Comparator<A> COMPARATOR = new Comp();
private static class Comp implements Comparator<A> {
public int comparator(A d1, A d2) {
----------------------
}
}
}
0215デフォルトの名無しさん
2007/11/28(水) 17:15:240216デフォルトの名無しさん
2007/11/28(水) 17:21:57Aというクラスがある
Aのstaticな内部クラスとして、Compがある
CompはAクラスのComparatorを実装している
Aクラスには静的変数(定数)としてCompが定義されている
という意味だ。
0217デフォルトの名無しさん
2007/11/28(水) 17:28:13そのCompクラスはAの中でしか使わないからAの中で定義されてる
>public static final Comparator<A> COMPARATOR = new Comp();
は、毎回Compクラスのインスタンスを作らなくてすむようにするためのおまじない
0218デフォルトの名無しさん
2007/11/28(水) 17:30:08たとえば複素数の比較に『絶対値で比較』『実数部で比較』みたいな複数の比較演算を用意できる。
しかもインスタンスさえあればprivateなフィールドやメソッドにも触れるので実装を隠蔽したままメソッドを書ける。
0220デフォルトの名無しさん
2007/11/28(水) 19:09:35計算時に同期処理をしていませんが、何故問題が起きないのでしょうか。
また、それで問題にならないのにconcurrent.utilの
AtomicIntegerが用意されたのはどんな理由からでしょうか。
0221デフォルトの名無しさん
2007/11/28(水) 19:20:05String#hashCode()は、何回計算しても毎回同じ結果にしかならないので、同期してなくても問題ない
あるスレッドが計算完了した結果が他のスレッドに伝わってなくても、
再計算することになるので効率は悪いが、計算結果はいつも一緒
AtomicInteger は、そういう単純なケースじゃ済まないときのため
0222デフォルトの名無しさん
2007/11/28(水) 19:25:11他のスレッドから見えるのは、初期値のゼロか、最終結果かの2択しかない。
別のスレッドが計算した結果がまだ自分のスレッドには見えてなければ、再計算。
別スレッドの方が先に計算完了しても、そのフィールドには結局同じ値しか書き込まれないので、混乱はまったくない。
0223デフォルトの名無しさん
2007/11/28(水) 20:42:51getやset単体ではvolatileつけるだけでスレッドセーフになるのに『getして+1してsetする』という
お決まりの動作は手動でsynchronizedしないとスレッドセーフになってなかったから出てきた。
AtomicIntegerを使えば、システム側がその『getして+1してsetする』みたいな単位で
メモリの処理をやってくれるからsynchronizedしなくても自動的にスレッドセーフになるような、まぁそういうもの。
0224デフォルトの名無しさん
2007/11/28(水) 20:46:02質問があるので書き込みさせていただきます。
現在アプリケーションを作成していて、AWT/Swing/SWTが混在しています。
元がSWTなんですが、Swingで作っているパネルをSWTと連携させるためにSWT_AWTを利用して
SWTに貼っています。
Swingのpanelは連携するときにAWTのFrameになるため、3つが混在している状態になります。
ここで本題なのですが、Swingのpanel部分にスクロールバーをつけることになりました。
普通ならSwingなのでJScrollPaneを利用したらいいのはわかるのですが、AWTのFrameが挟まれているため上手く出来ません。
対処方法などはあるのでしょうか?
0225デフォルトの名無しさん
2007/11/28(水) 20:56:290226デフォルトの名無しさん
2007/11/28(水) 21:11:41すみません。
Skype apiを利用しているため、SWTありきなんです。
0227デフォルトの名無しさん
2007/11/28(水) 21:12:130228デフォルトの名無しさん
2007/11/28(水) 21:15:240229デフォルトの名無しさん
2007/11/28(水) 22:05:02その発想はなかったわ。
というかSWTはネイティブ依存しすぎてるからAWTより混ぜるな危険なんじゃない?
というかSWT使うならAWT/Swing要らんだろ。
0230デフォルトの名無しさん
2007/11/28(水) 22:40:26いや、マジでちゃんぽんはろくなことないぜ
0231デフォルトの名無しさん
2007/11/28(水) 22:55:49似通ったAPIを3種も混ぜるとかちょっとありえない。
awtにFileChooserが登場したら、それだけは使うかもだけど。
0232デフォルトの名無しさん
2007/11/28(水) 22:57:050233デフォルトの名無しさん
2007/11/28(水) 23:07:51プログラマ → SWT 分かんねー、必要最小限にとどめたい
というありがちな構造なのでは。サーバサイドの業務システムでもよくあるし。
Wrapper や Facade で何重にも包んだクラスたちが脳裏に浮かびます。
0234デフォルトの名無しさん
2007/11/28(水) 23:11:31もっとカオスなコードだと思われ
0235デフォルトの名無しさん
2007/11/28(水) 23:18:22何で POI の JAR が入ってるかさっぱり分かんないけどとりあえず現状維持みたいな。
0236デフォルトの名無しさん
2007/11/28(水) 23:20:49SunもIBMもExpert Groupだったはずだが、可決後もさっぱり音沙汰ないね。
0237デフォルトの名無しさん
2007/11/28(水) 23:49:51ありがとうございます!↓のような感じで出来ました。
{char source[] = new char[4096];
int len;
while((len = br.read(source)) != -1){
sb.append(source, 0, len);
}}
改行文字をわざわざ付けなくても良くなったのでスッキリしました。ありがとうございました。
0238デフォルトの名無しさん
2007/11/29(木) 00:23:13が、昔あったCommonsの頃にあったクラスがなくなってしまったようで、途方にくれています。
解決策ありましたらばご教授願います。
0239デフォルトの名無しさん
2007/11/29(木) 00:34:430240デフォルトの名無しさん
2007/11/29(木) 00:46:36ttp://commons.jakarta.jp/httpclient/
以上。後は日本語でおk(ry
0241デフォルトの名無しさん
2007/11/29(木) 01:47:090242デフォルトの名無しさん
2007/11/29(木) 01:48:260243デフォルトの名無しさん
2007/11/29(木) 07:25:43/ ´_ゝ`)すいません、ちょっとテストしますよ・・・
| /
| /| |
// | |
U .U
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello, world!");
}
}
0244おしえて君
2007/11/29(木) 07:32:16例えば
System.out.println
Systemはクラス
outはフィールド(java.io.PrintStreamのインスタンス)
printlnはメソッドですが
このように
A.B.C
の形をしたものというのは、クラス、フィールド、メソッドと思っていいのでしょうか?
また、outはフィールドだけど、java.io.PrintStreamのインスタンスというような使い方
はjavaで何か特別な方法として名前がつけられてるんでしょうか?
(継承、インタフェース、みたいな名前がつけられてる?)
質問がわかりにくいかもしれませんがお願いします
0245デフォルトの名無しさん
2007/11/29(木) 09:07:46> の形をしたものというのは、クラス、フィールド、メソッドと思っていいのでしょうか?
よくありません。
> また、outはフィールドだけど、java.io.PrintStreamのインスタンスというような使い方
> はjavaで何か特別な方法として名前がつけられてるんでしょうか?
特別な方法ではありません。
0246デフォルトの名無しさん
2007/11/29(木) 09:18:10staticの付いているフィールドはインスタンス化しないでも使えます。
定数にメソッドが付いているって感じです。以下、サンプル。
import java.io.*;
class MySystem
{
static int HOGEGE = 12345;
static PrintStream out;
static {
try {
out = new PrintStream
(new FileOutputStream("output.txt", true), true);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class HelloWorld
{
public static void main(String[] args)
{
for (int i = 0; i < 10; i++) {
MySystem.out.println(i + " " +
MySystem.HOGEGE + " " +
"Hello, world!");
}
}
}
0247デフォルトの名無しさん
2007/11/29(木) 09:29:27Javaの場合は命名ルールに従っていれば簡単に見分けが付く
最後に()がついている単語はメソッド
付いていない場合、大文字から始まればクラス名、小文字から始まれば変数名(ローカル変数orインスタンス変数orクラス変数)。
System.out.println() である場合、
Systemはクラス名。
outはフィールドになるが、クラスに紐付いているのでクラス変数と判断できる
println()はメソッドであるから、outの型(クラス)のメソッドと判断できる
0248デフォルトの名無しさん
2007/11/29(木) 09:45:01コマンドを使ったらいいですか?
0249デフォルトの名無しさん
2007/11/29(木) 09:49:06単に処理を止めるだけなら Thread.sleep()
0250デフォルトの名無しさん
2007/11/29(木) 10:04:59ありがとうございます
0251デフォルトの名無しさん
2007/11/29(木) 10:08:04ScheduledExecutor使え
0252デフォルトの名無しさん
2007/11/29(木) 10:10:39最近は普通のインスタンスみたいに先頭小文字方式にするようになったの?SystemクラスしかりColorクラスしかり。
0253デフォルトの名無しさん
2007/11/29(木) 10:15:070254デフォルトの名無しさん
2007/11/29(木) 10:15:30最近つってどちらも JDK 0.9 の時代からそうなんだが。
0255デフォルトの名無しさん
2007/11/29(木) 10:18:19どこの共通認識だよw
public static finalだったら大文字&アンダースコア単語区切りだろうけど。
0257デフォルトの名無しさん
2007/11/29(木) 10:33:37System.out の事だろう
outはいまさらOUTに変更できないから仕方なし
ColorはredとREDの両方が定義されているので後者を使うほうがベターかね
0258デフォルトの名無しさん
2007/11/29(木) 10:45:19だってそれ定数じゃないしwww
0259デフォルトの名無しさん
2007/11/29(木) 10:56:32Struts勉強したいんだけど、だいぶ前に買ったStrutsの本で大丈夫かな?Struts1.1ってかいてあるけど。
Struts2系は本がないんで、とりあえずStruts1.2くらいの知識をつけたいんだけどさ。
だめかな?やっぱり。
0260デフォルトの名無しさん
2007/11/29(木) 11:01:190261デフォルトの名無しさん
2007/11/29(木) 11:04:20小さいwebサイトをstrutsを使って作るとか言ってるマネージャーがいたら、
俺はそいつを信用しなくなるぜ。
スポーツハンティングに出かけると言って、戦車で出かけるようなもんじゃないか?
0262デフォルトの名無しさん
2007/11/29(木) 11:04:335年にもならないかな4年位かな。まだ、Strutsとか出始めたばかりで
Web+DBPressもNo.4からNo.12くらいまで買ってたよ。
T●Sでやってたもん。
0263デフォルトの名無しさん
2007/11/29(木) 11:06:15そんなことはいいけど、Struts1.1でもいいか教えてよ。
0264デフォルトの名無しさん
2007/11/29(木) 11:13:01世の中には髪のとがった上司が多いのですよ。
phpぐらいでいいような気がするけどね。普通なら。
0265デフォルトの名無しさん
2007/11/29(木) 11:27:56Hashtable<String, Integer> table = new Hashtable<String, Integer>();
table.put(byteFrequency1[j-1],1);
このように変数と変数を引数にとるとエラーでます。。。だめなんですかね??
0266デフォルトの名無しさん
2007/11/29(木) 11:32:22hashMap.put("key1", 1);
hashMap.put("key2", new Integer(2));
hashMap.put(obj.toString(), 3);
hashMap.put(obj.toString(), new Integer(4));
0267デフォルトの名無しさん
2007/11/29(木) 11:34:35Webアプリケーションのテンプレート(ひな形)が用意されてるだけってだけじゃん。
慣れていれば、小さいアプリにだって使うよ。
Validatorとか画面遷移とか自分たちで作ってバグ仕込んでたらバカみたいだし。
あるものは使う。車輪の再発明はしない。
0268デフォルトの名無しさん
2007/11/29(木) 11:36:43ここがやばそうな気がする。
何が入っているのかは知らんけど。
0269デフォルトの名無しさん
2007/11/29(木) 11:37:29どんなエラーだい?
byteFrequency[j-1]というのは String ?
0270デフォルトの名無しさん
2007/11/29(木) 11:42:41慣れていればでしょ?
昔、覚えさせられたんだけど、新しいところは誰も使えないからなぁ。
sevletとかjspを知っているのなら、1日で使えるようになると思うけど、
1からやるのはあまり宜しくない気がする。
java使えるだけの人なら、1週間ぐらいは拘束されるんじゃない?
まぁ、俺はロジック担当なんであまり詳しいことは知らん。
何回か使ったことがあるという程度の知識なんで、間違ったことを言っていたらスマソ
0271デフォルトの名無しさん
2007/11/29(木) 11:45:14ループを使ってるのなら、
チェックのために、一度
byteFrequency1[j-1]
を出力させてみたら?
たぶん、nullとかが混じってるんじゃない?
0272デフォルトの名無しさん
2007/11/29(木) 11:49:470273デフォルトの名無しさん
2007/11/29(木) 12:59:02エラー内容は
test.java:39: シンボルを見つけられません。
シンボル: メソッド put(int,int)
場所 : java.util.Hashtable<java.lang.String,java.lang.Integer> の クラス
table.put(byteFrequency1[j-1],1);
^
エラー 1 個
です。byteFrequency1[j-1] には0〜255の数値がはいっているんですが・・・。
hashmapとhashtableは何が違うんですかね??
0274デフォルトの名無しさん
2007/11/29(木) 13:01:19str = byteFrequency1[j-1];
これがコンパイル通るかどうか解るか?
0275デフォルトの名無しさん
2007/11/29(木) 13:02:35設定する方法はないでしょうか?
初回アクセス時が遅いので困っています。
0276デフォルトの名無しさん
2007/11/29(木) 13:10:14コンパイル通りません。
0277デフォルトの名無しさん
2007/11/29(木) 13:42:56int⇒int のマップをしたいのに、なんで Hashtable<String,Integer> なんだい。
0278デフォルトの名無しさん
2007/11/29(木) 14:21:13Hashtable<Integer,Integer>にしたらコンパイル通りました。
みなさんありがとうございます。
0279デフォルトの名無しさん
2007/11/29(木) 14:50:34今
InputStream bin1= new FileInputStream(new File(FileName1));
ループ
Value[i++]=bin1.read();
で、1バイトずつの読み込みはうまくいっているんですが・・。
InputStream bin1= new FileInputStream(new File(FileName1));
byte[] data = new byte[16];
ループ
Value[i++]=bin1.read(data);
ではだめなのでしょうか??
0280デフォルトの名無しさん
2007/11/29(木) 14:59:47そのValueは何よ?
0281デフォルトの名無しさん
2007/11/29(木) 15:03:34すいません。Valueはint型の配列です。
0282デフォルトの名無しさん
2007/11/29(木) 15:06:13どうすればよいのでしょうか?
Caused by: javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
javax.mail.SendFailedException: 550 5.7.1 <[email protected]>... Relaying denied. IP name lookup failed [xxxx.xxxx.xxxx.xxxx]
at javax.mail.Transport.send0(Transport.java:219)
0283デフォルトの名無しさん
2007/11/29(木) 15:16:5816バイトずつ読み込むのに、4バイトしかないint型に格納しようっていう、その時点で疑問に思わない時点で問題
0284デフォルトの名無しさん
2007/11/29(木) 15:20:14A1|public class Oya {
A2| protected int v1;
A3| public Oya () {
A4| v1 = 10;
A5| }
A6| public void printValue() {
A7| System.out.println("v1=" + v1);
A8| }
A9|}
B1|public class Ko extends Oya {
B2| public Ko () {
B3| }
B4|}
C1|public class Main {
C2| public static void main(String[] args) {
C3| Ko ko = new Ko();
C4| ko.printValue();
C5| }
C6|}
実行すると v1=10 となるですが、これがよくわかりません。
私は以下のように考えていました。
・Koのスーパークラスの Oya のインスタンス変数v1が、int なので 0 で初期化される
・Oyaの引数なしコンストラクタ内では、v1 に 10 を代入しているが、
Ko の引数なしコンストラクタが呼ばれていて、Oya の引数なしコンストラクタを
オーバーライドしているので、v1 は 0 のままのはず
・printValue() では、v1=0 が表示されるはず
サブクラスで引数なしコンストラクタを定義していて、そのなかで super() を書かなくても、スーパークラスの引数なしコンストラクタが呼ばれるのでしょうか?
0285デフォルトの名無しさん
2007/11/29(木) 15:26:13そういう事。
コンストラクタの1行目にsuper(xx)が明示されていない場合、暗黙的にsuper()が実行される。
ためしに、Oyaクラスのコンストラクタに引数を追加してみよう
Koのコンパイル通らなくなる。
0286デフォルトの名無しさん
2007/11/29(木) 15:30:41それぞれのクラスに定義されるので、staticメソッドに近い存在。
でも、引数が異なる場合はコンストラクタのオーバーロードと呼ぶ
0287284
2007/11/29(木) 15:38:02>>285 やってみました。コンパイルできなくなりました。
1行目に super() を書くかどうかで挙動が変わるのか・・・・
>>286
> ちなみに、コンストラクタはメソッドではないので、オーバーライドじゃない(できない)。
なるほど。オーバーライドという考えを捨てないとだめか。
Oya に String name という属性を追加して、 public Oya (String name) { this.name = name; }
という引数アリコンストラクタを定義し、Ko では引数ありコンストラクタを定義しないでおいて、
>>284 の C3行目で
Ko ko = new Ko("tarou");
とやっても、コンパイルエラーがでる(Ko に引数ありコンストラクタがないといわれる)のが
わかりました。
# やるまえは、Oya の引数ありコンストラクタの振る舞いが継承されると思っていた。
0288デフォルトの名無しさん
2007/11/29(木) 15:57:45普通のjavacであれば、javaのプロセスに対してSIGQUIT(kill -3)を
送ってやれば標準出力にダンプが出るのは解ったのですが、
CentOS5のjavacは GCJ(GNU Compiler for the Java?) とかいう
シロモノらしく、SIGQUITしてもダンプが出力されません。
GCJでスレッドダンプを出力する方法をご存知のエロい方
いらっしゃいましたらぜひご教示ください m(__)m
いま、涙目でGCJのドキュメントを読んでいるのですが…
ポインタだけでもいいのでなにとぞよろしくお願いします。
0289デフォルトの名無しさん
2007/11/29(木) 16:02:51そこにも問題があるかもしれないが、仕様を読め。戻り値のところを特に。
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/io/InputStream.html
0290デフォルトの名無しさん
2007/11/29(木) 16:03:560291288
2007/11/29(木) 16:13:01スレッドダンプが見たいのはコンソールアプリではなくTomcat上の
プロセスなんです。あとバージョン1.4.2ってのもあって
JConsoleは使えなさそうです。
情報不足でした、ごめんなさい。ご返答ありがとうございました。
0292デフォルトの名無しさん
2007/11/29(木) 16:24:52「SendFailedException invalid address」でぐぐると良いかもしんない
0293デフォルトの名無しさん
2007/11/29(木) 16:29:55GDB とか…?
ttp://www.gnu.org/software/gdb/
ttp://www.gnu.org/software/gcc/java/gdb.html
0294288
2007/11/29(木) 16:57:55なるほど。gdbで稼働中のjavaプロセスをアタッチして、signal 3すれば
よさそうな気がしてきました!
java専用サーバってことでgdb入ってなかったので、まずはそこから… orz
レスありがとうございましたー
0295デフォルトの名無しさん
2007/11/29(木) 17:21:56ユーザが gdb 入れてもいいレン鯖なら、gcjじゃなくて本物の java 入れたほうが早くないか?
0296デフォルトの名無しさん
2007/11/29(木) 17:22:18・既存のコードにあまり改変を加えなくて済む
・いつからいつまでどのスレッドがアクティブ・wait状態だったかが一目でわかる
理想はこんな感じ
-----------------------------------------------> time
Thread1 +++++++++++++-----------++++++++++++
Thread2 ++++++++++
Thread3 +---------------+++++++++++++++++
・・・
Threadn +++++++++
(+:active, -:wait)
0297デフォルトの名無しさん
2007/11/29(木) 17:24:45引数が四個と2個のコンストラクターしかないのに
引数3こで呼び出していました。
これはどういう意味ですか?
0298デフォルトの名無しさん
2007/11/29(木) 17:35:28無料じゃ見たことないな
>>297
可変引数じゃね?
てか、ソース書けよ
0299デフォルトの名無しさん
2007/11/29(木) 17:43:34public TimerCallback (TimerObserver g, Object o){
setCallback(g,o);
}
public TimerCallback (int iv, int flg, TimerObserver g, Object o){
setCallback(iv,flg,g,o);
}
↑コンストラクタ
これを使う奴
↓
TimerCallback c1= new TimerCallback(interval, Timercallback.ONESHOT, this );
0300デフォルトの名無しさん
2007/11/29(木) 17:46:43お前が何か見落としてるか、本が間違ってるか
無いものは呼べない
0301デフォルトの名無しさん
2007/11/29(木) 17:53:25この本はとても途中から解りにくくて難しいので初心者にはお勧めしません。
いまは他の本を買えばよかったと思ってます。
0302デフォルトの名無しさん
2007/11/29(木) 18:34:10クラスの修正があって、その前後で仕様が変わってるとか…
>>301
ナムナム(−人
ttp://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-1106-1
> 対象読者:中級者
0303デフォルトの名無しさん
2007/11/29(木) 19:39:58正誤表すらない本だけどなw
0304おしえて君
2007/11/29(木) 20:29:31ありがとうございます
調べているとたしかにA.B.Cの形で、クラス.クラス.フィールドというのがありました
>>246
ありがとうございます
たしかにstaticのついたクラスはインスタンス化せずに呼べましたね
見落としてました
>>247
ありがとうございます
まずは、命名ルールから見るのが良さそうですね
A.B.Cなんていう形から見るもんじゃありませんでしたね…
0305デフォルトの名無しさん
2007/11/29(木) 21:04:58javaプログラムから任意のディレクトリに指定した名前のファイルを生成してそこに書き込み、っていうのはどうやるんですかね?
ただ単に出力しても「ファイルがない」ってエラーになりますよね
0306デフォルトの名無しさん
2007/11/29(木) 21:13:24任意ディレクトリの存在チェック、作成も忘れずに〜
0307デフォルトの名無しさん
2007/11/29(木) 21:29:07これだと
警告:[unchecked] raw 型 java.util.LinkedList のメンバ
としての add(E) への無検査呼び出しです。
とでてしまうので2.0対応に書き換えたいのですが
ListedList<int> foo[] = new ListedList<int>();
ではコンパイルが通りませんしぐぐっても1時配列の例しかのってませんでした。
やりたいことはArrayそれぞれの中にLinkedListを格納する操作です
0308デフォルトの名無しさん
2007/11/29(木) 21:29:20俺も変わらないレベルの初心者だけど
if(!file.exists()){
if(!file.getParentFile().exitsts()){
file.getParentFile().mkdirs();
}
file.createNewFile();
}
こんな感じ?
0309途中でEnter押しちゃった
2007/11/29(木) 21:30:210310デフォルトの名無しさん
2007/11/29(木) 21:31:13>>307=309 です
0311デフォルトの名無しさん
2007/11/29(木) 21:34:59@SuppressWarnings("unchecked") を付ける
あと、<int> じゃなくて <Integer> な
0312デフォルトの名無しさん
2007/11/29(木) 21:36:45ならないよ
ディレクトリさえ存在してれば、ただ単に出力すればファイルが出来る
ディレクトリが存在してなかったら、ディレクトリは作る必要がある
0313デフォルトの名無しさん
2007/11/29(木) 21:45:57http://jakarta.apache.org/httpcomponents/
HttpEntityを生成するところなのですが、リクエストは投げられるもののサーバーで解析に失敗するようです。
なにかヒントはないでしょうか?
File file = new File(imageUrl.toURI());
String boundary = "aab03x";
int length = (int) file.length();
byte[] bytes = new byte[length];
FileInputStream input = new FileInputStream(file);
if( input.read(bytes) != length) {
throw new IOException("Cant read:" + file);
}
String boundaryLine = "--" + boundary + "\r\n";
String boundaryEnd = "\r\n--" + boundary + "--";
StringBuilder data = new StringBuilder();
data.append(boundaryLine);
data.append("content-disposition: form-data; name=").append(file.getName()).append("\r\n");
data.append("content-type: image/jpeg\r\n");
data.append("\r\n");
0314デフォルトの名無しさん
2007/11/29(木) 21:49:09ByteArrayOutputStream out = new ByteArrayOutputStream(length + charBytes.length + boundaryLine.length());
out.write(charBytes, 0, charBytes.length);
out.write(bytes, 0, bytes.length);
out.write(boundaryEnd.getBytes(), 0, boundaryEnd.length());
ByteArrayEntity entity = new ByteArrayEntity(out.toByteArray());
entity.setContentType("multipart/form-data; boundary=" + boundary);
out.close();
input.close();
アップロード先はアップローダーなので、詳しいエラーは不明です。
レスポンスはINTERNAL SERVER EROOR
0315デフォルトの名無しさん
2007/11/29(木) 21:49:192.0対応って?C#2.0を言ってる?Javaは5からなんだけど。
0316デフォルトの名無しさん
2007/11/29(木) 22:04:53パケットキャプチャしてIEでアップロードしたときと
同じになるように調整したらうまくいくよ。
0317デフォルトの名無しさん
2007/11/29(木) 22:15:11こんなのあったお
http://d.hatena.ne.jp/nacookan/20071109/1194588900
0318121
2007/11/29(木) 23:23:39> >>121
> 亀レスだが、Commons Collectionsってのがあって内部イテレータ用のインタフェースが用意されている。
こちらも遅レスですが、org.apache.commons.collections.functors 関連のこ
とでしょうか?ぜんぜん知りませんでした。
http://commons.apache.org/collections/api-release/org/apache/commons/collections/functors/package-summary.html
なんだかSTLみたいですね。Javaで擬似クロージャが使えて、関数的プログラ
ミングができるとは、ありがたいことです。
> また、JDK1.7ではクロージャが追加されるとの話もある。
こちらは聞いたことがありました。
「ついにJavaにもクロージャ? - James Gosling氏らJDK7へ導入提案」
http://journal.mycom.co.jp/articles/2006/08/23/java7closuer/
James Gosling: The Black Hole Theory of Design
http://www.rubyist.net/~matz/20060914.html#p01
0319デフォルトの名無しさん
2007/11/29(木) 23:32:05プロジェクトを定期的にjarにしてバックアップをとってるんですけど、
jarファイル同士を比較して、差異のあるクラスを出してくれるようなソフトってありませんか?
ソースまで復元して差異を見れるとより良いんですが。
0320デフォルトの名無しさん
2007/11/29(木) 23:36:06逆コンパイルならjadを呼び出せば可能だし。
0321デフォルトの名無しさん
2007/11/29(木) 23:46:040322デフォルトの名無しさん
2007/11/29(木) 23:46:36SVNなりバージョン管理ツール導入した方が楽だし早い
0323デフォルトの名無しさん
2007/11/29(木) 23:54:01できれば新しい書き方に対応させたく思います
>>315
1.4の次だから脳内でかってに2.0にされてました…. orz
0324デフォルトの名無しさん
2007/11/29(木) 23:54:30Eclipse の比較は Jar や ZIP の中を見てくれる。それにしても CVS で管理してなきゃ
ローカルヒストリーでだけだが。
0325デフォルトの名無しさん
2007/11/29(木) 23:57:26http://codezine.jp/a/article/aid/1866.aspx?p=3
デモを動かそうと思ったのですが、JMS(java system application server?)の
設定方法が分かりません。
JMSトピックの送り先 というのはどこで設定するのでしょうか?
0326デフォルトの名無しさん
2007/11/29(木) 23:58:30っつっても、Genericな配列を作ることはできないので、@SuppressWarnings を付けるしかないんだよ。
0327デフォルトの名無しさん
2007/11/30(金) 00:03:220328デフォルトの名無しさん
2007/11/30(金) 00:11:39座標は分かってるものとして、赤、緑、青の値をそれぞれint型にして取得する、というものです。
よろしくお願いします。
0329デフォルトの名無しさん
2007/11/30(金) 00:13:17add を呼べないだろ。
0330デフォルトの名無しさん
2007/11/30(金) 00:15:12PixelGrabberのJavadocに書いてあるサンプルを見れば出来ると思うが
0331デフォルトの名無しさん
2007/11/30(金) 00:34:40そうなんですか。まだ難しいことはできないので
今回は素直に警告抑止しておきます
0332デフォルトの名無しさん
2007/11/30(金) 00:53:07まぁリストのリストで 2 次元, 3 次元実現すりゃ良いじゃん。
ArrayList ならどうせ配列の Wrapper なんだし。
List<List<Integer>> hoge = new ArrayList<List<Integer>>();
0333デフォルトの名無しさん
2007/11/30(金) 01:42:42型チェックが必要な時ってどうしてる?
0334デフォルトの名無しさん
2007/11/30(金) 01:44:49どーにかして Class<T> c を渡して c.isInstance(obj)
0335デフォルトの名無しさん
2007/11/30(金) 02:12:150336デフォルトの名無しさん
2007/11/30(金) 02:49:51try {
T t = (T) obj;
} catch (ClassCastException e) {
e.printStackTrace();
// ハズレの処理
}
0337デフォルトの名無しさん
2007/11/30(金) 03:02:46嘘を教えないように。(T)obj は無検査キャストだから
あんまし意味の無いコードになる。Tの範囲にもよるけど。
0338デフォルトの名無しさん
2007/11/30(金) 03:09:54こういった問題を解いているのですが、以下のコードを改造してトーラスに光を当てたいです。
これのトーラス1に光源を当てる場合はどういう風に改造すれば良いのでしょうか?
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29894
0339デフォルトの名無しさん
2007/11/30(金) 12:45:12サブクラス共通のスタティックフィールドになるんですか?
0340デフォルトの名無しさん
2007/11/30(金) 12:56:59根本的な部分で誤解していると思うが、共通のスタティックフィールドという概念はない。
スーパークラスにあるstaticフィールドに対してて、サブクラスから「スーパークラス名.」を省略して使うことができる。
privateで宣言しているならば使えないけどな。
なので、共通とか云々の問題じゃなくて見えるかどうかの問題。
Aのstaticフィールドhogeはどんな場合でも1つしかない
0341デフォルトの名無しさん
2007/11/30(金) 13:06:59私の不勉強で恐縮ですが、できましたら、
意味の無いコードになる例を挙げていただけませんか?
0342デフォルトの名無しさん
2007/11/30(金) 13:14:43型チェックが必要な場面ってどんな場面だ?
型チェックが必要ないようにジェネリクスを使うんじゃないの?
0343デフォルトの名無しさん
2007/11/30(金) 13:27:55引数が同じ奴がよびだされるんですか?
スーパクラスにサブクラスのコンストラクタと引数が違うコンストラクタしかないときは
何もよびだされませんか?
0344デフォルトの名無しさん
2007/11/30(金) 13:33:53自分で実際にやってみれば解決する問題だろアホかこいつwww
もしかして、それも出来ないとか?
0345デフォルトの名無しさん
2007/11/30(金) 13:37:03引数の無いやつが呼び出される
引数の無いコンストラクタが無い場合はエラー
0346デフォルトの名無しさん
2007/11/30(金) 13:41:06実際にやってみればわかる
ClassCastExceptionは起きない
public class Test<T> {
public static void main(String[] args) {
new Test<String>().foo(new Integer(1));
}
void foo(Object o) {
T t = (T) o;
}
}
0347デフォルトの名無しさん
2007/11/30(金) 13:48:44引数のないスーパークラスのコンストラクターに何もして貰いたくない場合
はサブクラスはどうしたらいいですか?
0348デフォルトの名無しさん
2007/11/30(金) 13:58:16スーパークラスを作る人に、コンストラクタで何もしないように頼む
0349デフォルトの名無しさん
2007/11/30(金) 13:59:29ありがとうございます。確認しました。
お騒がせしてすみませんでした。
// 余計な戻り値を付けて、さらにその型に代入していたからなんて....アハハハ_no
0350デフォルトの名無しさん
2007/11/30(金) 14:08:23昨夜からの一連を読んでて思った。
0351デフォルトの名無しさん
2007/11/30(金) 14:34:560352デフォルトの名無しさん
2007/11/30(金) 14:39:340353デフォルトの名無しさん
2007/11/30(金) 14:41:35あいうえお順
0354デフォルトの名無しさん
2007/11/30(金) 14:50:28が良い順番だとは思えないw
0355デフォルトの名無しさん
2007/11/30(金) 15:01:44それぞれに別々の数で初期化する方法と
全部に同じ数で初期化する方法ありますか?
0356デフォルトの名無しさん
2007/11/30(金) 15:33:42RuntimeMXBean の getUptime() の差を使えば良いですか?
0357デフォルトの名無しさん
2007/11/30(金) 15:39:22別々の数で初期化する方法
x = 1;
y = 2;
z = 3;
同じ数で初期化する方法
x = 1;
y = 1;
z = 1;
0358デフォルトの名無しさん
2007/11/30(金) 15:40:070359デフォルトの名無しさん
2007/11/30(金) 16:24:22こんな場面.
public T<T> getInstance(Class<?> clazz) {
return (T) containor.getInstance(clazz);
}
このままだと、未検査キャストでWaring出るだろ?
Anotationで黙らせてもいいけど、型チェック可能ならしたい所。
0360デフォルトの名無しさん
2007/11/30(金) 16:49:58public T<T> getInstance(Class<T> clazz) {
? return clazz.cast(containor.getInstance(clazz));
}
Java5以上ならこれでいけね?
0361デフォルトの名無しさん
2007/11/30(金) 16:55:48thx!
そんなメソッドが追加されていたとは気がつかなかったぜ
0362デフォルトの名無しさん
2007/11/30(金) 18:10:50空かどうかは ${empty col} でできるのは分かったんですけど。
0363デフォルトの名無しさん
2007/11/30(金) 18:13:43http://sports11.2ch.net/test/read.cgi/offmatrix/1196265306/
外国人参政権がなぜいけないか
http://jp.youtube.com/watch?v=reIRrRDzFxE
【政治】 「放置すると、日韓関係にヒビ」 外国人参政権付与、成立への流れ加速も…公明に各党同調、自民反対派は沈黙、首相次第か★20
http://news22.2ch.net/test/read.cgi/newsplus/1196405135/
この法案が成立したオランダじゃ、永住イスラム人がどんどん増え
そのせいで今もどんどん文化と国そのものがぶち壊されちまってる。
そして、オランダ以外のこの法案が成立した国々でも全く同じことが起こってる。
永住外国人にはかなりありがたい法律だけど、国民にとっちゃ百害あって一利なし。
そ ん な 悪 法 が 日 本 で も 成 立 し よ う と し て る ん だ。
こんな大事になのに、マスコミは沈黙を決め込んでいる。
だから 俺らの力で何がなんでも阻止しなきゃならない。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
このコピペをみた奴はMixiや自分のブログにこのことについて記事を書いてほしい。
どんな簡単な記事でもいい。アドレスを貼るだけでもいい。
もしくは、このコピペをどっかに投下するのでもいい。
とにかくどんな方法でもいいから、できるだけ多くの人にこのことを伝えてほしい。
お願いだ。今回は冗談抜きで日本の未来が危ない。
0364デフォルトの名無しさん
2007/11/30(金) 18:47:51べつに問題ないだろ
Java的には
0365デフォルトの名無しさん
2007/11/30(金) 19:00:48普通ですか?
0366デフォルトの名無しさん
2007/11/30(金) 19:06:14実生活のないお前には何も関係ないだろ。もうそろそろお母ちゃんが
ご飯もってくる時間じゃねwww。
0367デフォルトの名無しさん
2007/11/30(金) 19:15:500368デフォルトの名無しさん
2007/11/30(金) 23:12:01のようにスーパークラスAにクラス変数を作って
Bをサブクラスとすると
A a=new B();
でインスタンスをつくってaのiを調べると0になってます。
どうしても解りません教えてくださいよろしくお願いします。
0369デフォルトの名無しさん
2007/11/30(金) 23:21:090370デフォルトの名無しさん
2007/12/01(土) 00:40:32この本の演習がわかんなくてイライラして苦しんでます。。
「要素型がint型である配列を作り、全要素を1〜10の乱数で埋め尽くすプログラム」
は作成できたんですが、その次の
「このプログラムを異なる要素が同じ値を持たないように改良しなさい。」
という方ができません。。。
どういうふうに考えたらいいんでしょうか?
よかったらどなたかご教授御願いしますm(_ _)m
0371デフォルトの名無しさん
2007/12/01(土) 00:47:25どういう所まで勉強しているのか解らないので回答が難しいが、配列でそれをやるのは面倒だと思う(特に改良だと)
配列が10で1〜10の乱数であると仮定しておく。
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(適当な回数) {
// ランダムでi番目とj番目をスワップ
}
が一番簡単な方法かと思うぞ
強引にやるならば、確定した所まで重複チェックして、重複していたら乱数を入れなおす・・・ってのも出来るけど、激しくバカらしい
0372デフォルトの名無しさん
2007/12/01(土) 00:49:43いわゆるトランプのシャッフルに近いわけで、それをプログラムでどう書くか考えるべし。
・・・・問題悪いね、それ
0373デフォルトの名無しさん
2007/12/01(土) 00:52:55補足というか重要なヒント
・重複しないように乱数を発生する ⇒ 難しい
・重複しない整数を作成 ⇒ 簡単
・整数をランダムに入れ替える ⇒ 簡単
プログラムを学んでいく課程で重要なのはいかに簡単な処理に分解できるかってコト
0374デフォルトの名無しさん
2007/12/01(土) 00:54:12配列のサイズが11以上なら不可能乙wって書いた人を煽ってみるとか。
0〜9じゃないなら hit & brow(というゲームがある)の演習でもないしな。
0375デフォルトの名無しさん
2007/12/01(土) 00:57:49>>372 サマ
>>373 サマ
>>374 サマ
迅速な回答ありがとうございます!
そういう考えは思い浮かびませんでした(汗)
再び試行錯誤してみます。
0376デフォルトの名無しさん
2007/12/01(土) 01:15:520377デフォルトの名無しさん
2007/12/01(土) 01:18:290378デフォルトの名無しさん
2007/12/01(土) 01:24:32迷惑なのは百も承知です。これが一番最後の宿題なのですが、
まったくできないので…。やり方だけでも教えて戴けるとありがたいです。
0379デフォルトの名無しさん
2007/12/01(土) 01:27:140380デフォルトの名無しさん
2007/12/01(土) 01:30:120381デフォルトの名無しさん
2007/12/01(土) 01:37:14簡単だが、繰り返し回数に関わらず一様な期待値で順列が発生しない
0382デフォルトの名無しさん
2007/12/01(土) 01:43:33課題スレで待っておけ 土曜だし暇な人がやってくれるだろ
てか、質問あるんならどこが分からないかだけでも書けよ
0383デフォルトの名無しさん
2007/12/01(土) 01:46:47アドバイスしていただいてからだいぶかかりましたが
やっとできましたっ!(><)
また一つ勉強になりました。
ほんとにありがとうございましたm(_ _)m
0384デフォルトの名無しさん
2007/12/01(土) 01:53:45orz
>>380
本気で泣きそうです。
>>382
レスありがとうございます。
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/106.java
光源とテクスチャを設定したみたのですが、トーラスに反映されません。
どうやったら光源とテクスチャがトーラスに反映されるのでしょうか?
0385デフォルトの名無しさん
2007/12/01(土) 02:08:17だがちょっと待って欲しい。
ArrayListに突っ込むのなら、Collections.shuffleを使うべきではなかろうか?
0386デフォルトの名無しさん
2007/12/01(土) 02:10:34じゃあ
Collections.shuffle(Arrays.asList(array));
で完了じゃね
0387デフォルトの名無しさん
2007/12/01(土) 02:18:46今プログラムしていてコメント付けようと思ってどうせならJavadoc対応にしようと
思ったんですが、javadocのコメントって/** 〜 */じゃないですか。
でも、/** 〜 */って自分的にあんまり使いたくないんですよ。
理由としては、使わなくなったメソッドやクラスをコメントアウトするときに
/* 〜 */ を使うので、javadocのコメントがあると邪魔になるし
見た目も***アスターが並んでなんか見難いという感じがします。
基本//の方が見やすいしメソッドとかも頭に一行コメントつければ
だいたい事足りますし。
自分はエクリプスとかいう高度なエディタは重くて使ってないので
そういう専門のエディタなら賢くやってくれるかもしれませんが、
今のエディタも軽くて気に入っているので手放せません。
0388デフォルトの名無しさん
2007/12/01(土) 02:19:53そういうわけで、ここからが本題ですが、
新しいコメントタグを考えてみました。
クラスとかメソッドの先頭コメントは
//@
// コメント
// @author 俺
// @version 1.0
///
public class XXX ・・・
//@ 一行コメント
private int iXXX;
↓ フィルタ
/**
* コメント
* @author 俺
* @version 1.0
*/
public class XXX ・・・
/*** 一行コメント */
private int iXXX;
こんな具合に変換されるようにしたらいいんじゃないかなと思っています。
というわけで、こんなことしてる人他にいますか?
もっといい方法があったら教えてください。
0389デフォルトの名無しさん
2007/12/01(土) 02:24:12ええい。適当に気になるところを。
Shape3D(Geometry geometry) ではなく、
Shape3D(Geometry geometry, Appearance appearance) ではない?
その appearance に setTexture(texture2d) しておかなくてもいいの?
とかとか
斜め読みの参考先。
たのしいJava 3D
ttp://www.javaopen.org/j3dbook/text/
Java3DTips
ttp://www.antun.net/tips/java3d/
0390デフォルトの名無しさん
2007/12/01(土) 02:28:36doxygenを使うといいんじゃない?
///でコメント書けた気がする
0391デフォルトの名無しさん
2007/12/01(土) 02:42:440392デフォルトの名無しさん
2007/12/01(土) 04:00:27レス、ありがとうございます。ただ、サラっと書かれても何をどういじれば良いのか分かりません…orz
0393デフォルトの名無しさん
2007/12/01(土) 05:02:44ありがとうございます。
自分としては簡単なロジックなんてフィルタ作った方が楽な気がしました。
>>391
意味がわからなかったんで、javadocのオプションかソースの改造でもするのか
と思って探しちゃいましたよw
どうやらフィルタの実装の話みたいですね。
そうですね、javaで作ろうかとも思いましたが
バッチでもできるかもしれませんね。
ただバッチはあまり詳しくないのでjavaフィルタ書いてみます。
ありがとうございました。
0394デフォルトの名無しさん
2007/12/01(土) 07:36:55自己レスです
@もうざかったんで>>390 の///を参考にして
/// コメント
// @author 俺
// @version 1.0
public class XXX ・・・
/// 一行コメント
private int iXXX;
なのを変換するようにしました。
本当にありがとうございました。
0395デフォルトの名無しさん
2007/12/01(土) 08:20:07便利そうでいいね。その書式をeclipseなんかでも使えればいいんだけど、さすがに無理か。
0396デフォルトの名無しさん
2007/12/01(土) 09:31:52ぶっちゃけ好みで一般的に定められたフォーマットを崩されるのは迷惑極まりない
個人的に作っているソースで誰も見ないというなら勝手にやって構わないが
他人が読む可能性があるならばヤメレ
>理由としては、使わなくなったメソッドやクラスをコメントアウトするときに
>/* 〜 */ を使うので、javadocのコメントがあると邪魔になるし
消せ。
コメントアウトの用途で/* */を使う方が邪魔
0397デフォルトの名無しさん
2007/12/01(土) 09:32:24大まかでいいので解説を加えてください。
私はjavaを始めたばかりでほとんどわかりません。
当然自分でも調べてみますがどうかおねがいします。
ttp://www.uploda.org/uporg1137622.zip.html
0398デフォルトの名無しさん
2007/12/01(土) 09:42:46ガソリンを保存するタンク、タンクを持つ自動車およびガソリンスタンドを表すプログラム
0399デフォルトの名無しさん
2007/12/01(土) 14:51:32> 使わなくなったメソッドやクラスをコメントアウトするとき
/* 〜 */ を使うと
System.out.println("*/");
なんて処理が途中にあったときにエラーになるじゃないか。
全部 // にしとけばそういう問題はないが。
0400デフォルトの名無しさん
2007/12/01(土) 14:53:090401デフォルトの名無しさん
2007/12/01(土) 15:05:28"*\/"って。
0402デフォルトの名無しさん
2007/12/01(土) 18:15:48テクスチャを反映させたいだけなら、
TexCoordGeneration texGen = new TexCoordGeneration();
texGen.setPlaneS( new Vector4f( 1.0f, 0.0f, 0.0f, 0.0f ) );
texGen.setPlaneT( new Vector4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
Appearance app = new Appearance();
TextureAttributes textureAttributes = new TextureAttributes();
textureAttributes.setTextureMode( TextureAttributes.REPLACE );
app.setTextureAttributes( textureAttributes );
app.setTexCoordGeneration(texGen);
app.setTexture( texture1 );
--
roll.addChild(new Shape3D(new Torus2()));
↓
roll.addChild(new Shape3D(new Torus2(), app));
でも課題の内容からすると、
TexCoordGenerationは使わないで、Torus2クラスの中で自前計算しろってことですな。
続く。
0403デフォルトの名無しさん
2007/12/01(土) 18:22:28//TexCoordGeneration texGen = new TexCoordGeneration();
//texGen.setPlaneS( new Vector4f( 1.0f, 0.0f, 0.0f, 0.0f ) );
//texGen.setPlaneT( new Vector4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
//app.setTexCoordGeneration(texGen);
Torus2クラスの中の修正
super(Torus.NUM_POINTS * 2, GeometryArray.COORDINATES | GeometryArray.COLOR_3, Torus.NUM_POINTS * 3 * 2);
↓
super(Torus.NUM_POINTS * 2, GeometryArray.COORDINATES | GeometryArray.COLOR_3 | GeometryArray.TEXTURE_COORDINATE_2, Torus.NUM_POINTS * 3 * 2);
以下を追加
float[] tex = new float[Torus.NUM_POINTS * 3 * 2];
for (int j = 0, count = 0, count2 = 0; j < Torus.NUM_POINTS_OUTER; j++) {
↓
for (int j = 0, count = 0, count2 = 0, count3 = 0; j < Torus.NUM_POINTS_OUTER; j++) {
ループの中に追加
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
tex[count3++] = ほげほげ
setColorIndices(0, ind)の下の追加
setTextureCoordinate(0, 0, tex);
setTextureCoordinateIndices(0, 0, ind);
ほげほげの部分は自前計算。どうマッピングするかの座標を計算するだけー。
0404デフォルトの名無しさん
2007/12/01(土) 18:22:360405デフォルトの名無しさん
2007/12/01(土) 18:43:43自分で宿題やりたいけど色々解らないので教えてもらいたい人は
こっちでお願い
0406デフォルトの名無しさん
2007/12/01(土) 18:45:380407デフォルトの名無しさん
2007/12/01(土) 18:48:130408デフォルトの名無しさん
2007/12/01(土) 22:16:250409デフォルトの名無しさん
2007/12/01(土) 22:55:07お題をだしてくれて添削してくれるスレないかな?
0410デフォルトの名無しさん
2007/12/01(土) 23:08:36だけどデザパタを適用するにはある程度の規模でないと意味がないから、長いソース読んでくれる暇人がいるかどうかはシラネ
お題はどんな感じがいいのか、あと>409のスペックを書いておくべし
0411デフォルトの名無しさん
2007/12/01(土) 23:22:53「【GoF】デザインパターン 6
http://pc11.2ch.net/test/read.cgi/tech/1141846078/
0412デフォルトの名無しさん
2007/12/02(日) 00:06:12Javaで実装したいならばこのスレでいいと思うが?
デザパタスレに特定の言語の実装を持ち込まれても困る
0413デフォルトの名無しさん
2007/12/02(日) 00:37:33丸投げ推奨なのは課題文の話。
ただでさえ屑講師の意味不明な課題なのに
それを生徒がさらに意味不明な解釈して何したいかさっぱり分からなくなることの防止策。
それを全部他人がやってくれると勘違いしたバカが現れるだけ。
要するに宿題スレどんだけエスパーそろってんだよ!ってことだ。
0414デフォルトの名無しさん
2007/12/02(日) 00:48:50そのエスパー能力も大切。
0415デフォルトの名無しさん
2007/12/02(日) 01:40:110416デフォルトの名無しさん
2007/12/02(日) 01:54:200417デフォルトの名無しさん
2007/12/02(日) 01:57:35なるほど!ありがとうございました!
0418デフォルトの名無しさん
2007/12/02(日) 02:02:020419デフォルトの名無しさん
2007/12/02(日) 03:15:570420デフォルトの名無しさん
2007/12/02(日) 03:19:00すでにソースコードは公開されてるだろ。かってに落としてきて見れ。
0421デフォルトの名無しさん
2007/12/02(日) 03:57:300422デフォルトの名無しさん
2007/12/02(日) 08:06:050423デフォルトの名無しさん
2007/12/02(日) 09:06:48その関数内では配列の値を変えたくありません。
そこ以外では変更を行います
呼び出された関数内でだけ
変更できないようにするには
どうすれば良いでしょうか?
コピーを渡すのは処理速度が落ちるので
それ以外でお願いします
今のところの対処法は
関数のコメントに
//引数の値変えるな!
と書いてるだけです
0424デフォルトの名無しさん
2007/12/02(日) 09:20:45基本的に、今のところ無理。
将来的には @ReadOnly ってアノテーション付いてたら変更不可能にするみたいな事も検討中らしい。
プリミティブ型の配列じゃないなら java.util.Collections#unmodifiableList(List) 使えって感じだけど、
プリミティブ型の配列だと java.util.List で代用するのは、ちときつい。
手間かけてもいいなら @ReadOnlyArray みたいなカスタムアノテーションと、
カスタムアノテーション付きの配列を変更したらコンパイルエラー出すような APT を自作して
ビルド時に必ずAPTチェックにかける、とかすればチェックできるけど。
0425デフォルトの名無しさん
2007/12/02(日) 09:22:00vine4.0 vi編集環境で両方文字コードをEUC_jpにして
System.out.println("ああ");
を表示するだけのプログラムをコンパイルすると
HelloWorld.java:3: ')' expected
System.out.println("ああ");
^
HelloWorld.java:3: ';' expected
System.out.println("ああ");
というコンパイルエラーがでてしまいます。
ShiftJISにしても同じ現象になってしまうの
ですが、何が原因なのでしょうか?
0426デフォルトの名無しさん
2007/12/02(日) 10:47:13業務でjava使ってて2年になります。
レベルとしては入門書を卒業してつぎのステップに進みたいところです。
ソースの可視性、メモリ効率の向上、クラス間の依存度が低いコーディングができるようになりたいとデザパタ勉強してみたいと思いました。
webアプリを開発しておりました(servlet,jsp,EJB)。
0427デフォルトの名無しさん
2007/12/02(日) 11:05:22あるディレクトリのなかにあるファイル名を取得するメソッドがあるじゃないですか?
File dir = new File("ディレクトリのパス");
String[] fnames = dir.list();
これって日本語のディレクトリやファイル名も普通に扱えますか?
与えるディレクトリが半角スペースやら日本語を使っていたり、
中のファイルも日本語になっています。
昨日試したら、nullが帰ってきていたんで、ちょっと困っています。
ディレクトリ数もファイル数も数千なので、自力で変更は辛い。
あと、DBにデータも残すので、限りなくオリジナルに近い形がいいです。
これに、パスを加えて、ファイルをフェッチしていくのがプログラムの目的です。
実行環境
Mac OSX
Eclipse 3.3
Java 5.0
よろしくお願いします。
0428デフォルトの名無しさん
2007/12/02(日) 11:36:34Servlettを作るときって、1つのJSPファイルに1つのServletを用意するものなんですか?
複数のJSPファイルからきたリクエストを1つのServletで対応するクラスへ切り分ける
典型的な手法でもあるのでしょうか?
0429デフォルトの名無しさん
2007/12/02(日) 11:37:28デザインパターンを適用する場合、
・ソースの可視性 パターンを知らない人(例:上司)にとっては読みにくくなる
・メモリ効率の向上 一概に向上するとは言えず、むしろパフォーマンスは低下する
・クラス間の依存度 低くなる
もし、ソースの可視性を高めたいコトが一番であれば、パターンよりもリファクタリングの勉強をする方がいい。
リファクタリングとパターンは色々と繋がる部分もあるので、パターンの習得にも役に立つしな。
自分が教育の中でパターンに触らせる題材として使うのは、CSVファイルの入出力APIの作成、SwingでのGUI作成って所。
0430デフォルトの名無しさん
2007/12/02(日) 11:43:52ちゃんと勉強している人の質問で感動した!
異なる処理(リクエスト)毎に別のServletを用意するってのはServletの設計思想にはあっていた。
でも、疑問に思うように無駄が多いと、先人達は思ったわけだ。
そこで生まれたのがStrutsとかのフレームワーク。
Strutsなどに代表されるフレームワークの場合、リクエストを処理するSevletは原則として1つしかない。
全てのリクエストは、そのServletのdoGetに渡され、前処理を行った後に、実際に処理を行うクラス(Action)クラスが呼び出される
(呼び分ける方法はパラメータだったり、URLの末尾だったり)
細かい差はあるものの、今日あるWebアプリケーションフレームワークはほとんどこの仕組みをとっているので、典型的な手法といえる
0431デフォルトの名無しさん
2007/12/02(日) 11:46:58使えるはず
Macの構成は良く解らんけど、Windowsで言うところのC://(ルート)直下に「ほげほげ」ってディレクトリつくり、ルートのlist()で出てくるか確認してみてくれ。
0432デフォルトの名無しさん
2007/12/02(日) 11:51:17コンパイルはjavacかい?
日本語無しでコンパイルは通るか?
最近使用していないから忘れ気味だけど、デフォルトはOS依存の文字コードでソースを読み込むはず。
異なるならば、-encodingオプションを指定する。
ダメならUTF-8にしてみれ。
0433428
2007/12/02(日) 11:53:13即レスありがとうございました。m(_ _)m
0434デフォルトの名無しさん
2007/12/02(日) 11:58:10そうですか。
やっぱりプログラムのバグですかね?
ディレクトリのパスが間違っていれば、上のFileのところでエラーがでると思うんです。
今自宅なので、後で試してみます。
とりあえず、日本語を使えそうだということを聞いて安心しました。
ありがとうございました。
0435デフォルトの名無しさん
2007/12/02(日) 12:00:42>ディレクトリのパスが間違っていれば、上のFileのところでエラーがでる
出ません。
エラーになったら、新しいファイル作れませんからw
0436デフォルトの名無しさん
2007/12/02(日) 12:07:37依存性が低いクラス設計ができるようになることが一番です。
実際にどのようにデザパタを適用できるのかを勉強したくてカキコ。
適用した簡単なをもの作ってみたいなと思いました。
0437デフォルトの名無しさん
2007/12/02(日) 12:09:54!!
そういえばそうですね。
IO系とは違いますもんねwww
意外と初歩的なところで引っかかっていたみたいなんで、
とりあえずテスト用のプログラムをきちんと作ることにします。
先ほどのコードの上に、パスがディレクトリかどうか調べる文を追加するべきですね。
いやはや、本当にありがとうございます。
0438デフォルトの名無しさん
2007/12/02(日) 12:14:00> >>425
> コンパイルはjavacかい?
> 日本語無しでコンパイルは通るか?
> 最近使用していないから忘れ気味だけど、デフォルトはOS依存の文字コードでソースを読み込むはず。
> 異なるならば、-encodingオプションを指定する。
> ダメならUTF-8にしてみれ。
ご指導ありがとうございました。
日本語無しなどコンパイルは通ります。(コンパイラはjavacです。)
encodingオプションをUTF8,UTF16,EUC,EUCJP,SJIS等のメジャーなもの
で試して見ましたがやはり同じコンパイルエラーが出ます。。。
0439デフォルトの名無しさん
2007/12/02(日) 12:20:39なるほど、ありがとうございます
しばらく現状維持でどうしても必要だと思ったときは
その案をもう一度思い出させてもらうことにします
0440デフォルトの名無しさん
2007/12/02(日) 12:24:11ああ、IO系ってのは
この場合、ファイルの読み込み書き込みのことです。
紛らわしかったですね。
0441デフォルトの名無しさん
2007/12/02(日) 12:24:40fseek(fp,0,SEEK_SET)のような処理をしたいのですが。
よろしくお願いします。
0442デフォルトの名無しさん
2007/12/02(日) 12:28:42MacのJavaはなんか変な問題があったように思う
こっち見てみるといいかも
http://pc11.2ch.net/test/read.cgi/mac/1138543708/
0443デフォルトの名無しさん
2007/12/02(日) 12:30:20markとresetを使うか、開き直す
0444デフォルトの名無しさん
2007/12/02(日) 12:34:42Swingで書いてみるとよろし。
・親フレームに子フレームを2つ以上用意する(入力エリア+表示エリア)
・子フレームで起きたイベントは子フレームで処理せずに親フレームに通知する(ここでMediatorパターンを使う)
・親フレームで処理したイベントはデータに反映されるが、子フレームの更新はデータに登録したリスナー経由で行う(Obseverパターン)
簡単な為、入力フレームはボタン1つ、表示フレームはラベル1つでやってみるといい。ボタンを押すと表示が+1されるみたいな
0445デフォルトの名無しさん
2007/12/02(日) 12:36:52用途的にStreamは一方向に読むもの
ランダムアクセスしたいならば、RandomAccessを使え
0446デフォルトの名無しさん
2007/12/02(日) 14:32:22ありがとうございます。
いろいろやってみます。
0447デフォルトの名無しさん
2007/12/02(日) 18:22:53JNLPでデスクトップにショートカットアイコンを作成し、
そのアイコンに何らかのファイル(何でもいい)をドラッグアンドドロップすると、
「このアプリケーションは起動できません」「詳細」「了解」というダイアログが表示される。
ここで「詳細」ボタンを押すと、次のような情報が表示される。
※C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt をドラッグアンドドロップした場合。
InvalidArgumentException[ 無効な引数が指定されました: {C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt, C:\Users\hoge\AppData\Local\Temp\javaws12 }]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
で、問題なのは、この後。
ここで「了解」」を押すと、ドラッグアンドドロップしたファイルが、
いきなり削除されてしまうのです。
1.6.0_03, Vista,XP,UbuntuLinuxのいずれにおいても再現しました。
0448デフォルトの名無しさん
2007/12/02(日) 18:25:10が、実際に入ってみると周りはPC詳しい&プログラミング言語の経験のある人ばかり。
Javaのクラスを取っているけれど、俺は簡単な宿題をクリアするにも最低1-2時間はかかる。
単純に数値を入力してください→課題に沿った計算→結果を出力 といったここの住民ならば
5分-10分程度で終わる課題をだ。一緒にクラスを取っている人も同じくらいのスピードで終わらせて、
こんなの簡単すぎるよなw と笑っている始末。どうにか最初のJavaクラスは単位を貰えそうだけど、
次に取るクラスが不安でならない。いったいどうすればプログラミングが得意になるんだろうか…。
どうすればクラスメートやここの住民みたいに最速でどんな風に組めば良いかというアイデアをたたき出せるようになるんだろうか。
0449デフォルトの名無しさん
2007/12/02(日) 18:34:02回答にはなってないけど、情報科は地頭スペックによってやる内容が違うだけで
Fラン大とかは関係ないと思われる。大学のレベルを超えた凄み(留年率)がある。
0450デフォルトの名無しさん
2007/12/02(日) 18:37:272.フローチャートをイメージする。
3.そのイメージをコードに落とす。
このサイクルが重要。コードを弄りまくらないと2が身につかないこともあるけど、
Javaのような言語は大抵、文章がそのままコードに落ちるから直ぐ慣れるよ。
0451デフォルトの名無しさん
2007/12/02(日) 18:46:10周りの経験者もはじめのうちは1-2時間悩みながらコーディングしてきたんだ
プログラミングに慣れるまではそれが普通。
初期はとにかくコードを書くしかない。
あとは知っているパターンをどう組み合わせるか、って作業になる。
Javaだったら俺は独習Javaをやれと思う。
問題量とサンプルが糞多いけど、サンプルを全部打ち込んで、問題も全部解いてみる。
軽く3ヶ月はかかると思うが、終わったときには周りのクラスメートと同じレベルに立っていると思う
演習問題の添削とかならばこのスレに投下すれば住民も協力してくれるぜ
0452デフォルトの名無しさん
2007/12/02(日) 18:52:04慣れだよ、慣れ
何度も繰り返し練習して量をこなすことで、やり方が身に付く
0453デフォルトの名無しさん
2007/12/02(日) 19:06:52みんな最初はそんなもん。
情報科は商業・工業高校出身の人が多いから慣れてる人が多いだけ。
だから1,2年の講義は基本的なものが多く、工業高校出身の人には物足りなく感じるんだろう。
(プログラムが書けても、問題解決能力がなければプログラムに落とし込む事すらできないわけで)
(プログラムの前にアルゴリズムやスタックマシンがなんぞやってところを勉強すべきだと思ってるけど、)
プログラミングの上達のコツは、
作ったプログラムを改造して、その変更によってどう動作が変わったかを把握すること、
コピペはしないこと
かな・・。
0454デフォルトの名無しさん
2007/12/02(日) 19:09:58本気でプログラミング力を付けたいなら、SICPとCTMCPを読むことをお勧めする
0455デフォルトの名無しさん
2007/12/02(日) 19:15:02あれは飽きずにプログラムを楽しむには良い教材。
0456448
2007/12/02(日) 19:33:38授業内容や課題が分からないとき、クラスメートに聞いたら
「お前、こんなのもわからねえの?」と言われたり、
「基本情報技術者試験を来年受けてみようと思うんだけど」と言ったら
「高校の時に取ったぜw 持ってないの? 少し勉強すればバカでも受かるぜ」と言われる始末。
サーセン 普通科高校文系出身が情報科に進んでサーセン でもパソコン好きだったんだ。
>>449
きっと俺はFランでも毎日がいっぱいいっぱい。文系の友達が合コン行くんだって時も課題やってた。
>>450
そういう考え方はなかった。未熟すぐる。
>>451
独習JavaをAmazonで見たらレビューが最悪だったんだけど、俺でも大丈夫なんだろうか。
>>452
独習Javaというやつを買ってやってみようかな。学校で使ってる教科書はやさしいJavaという本なんだけど、
書いている内容のレベルと課題のレベルがあってない。もはや、講義ですら使っていない。
0457448
2007/12/02(日) 19:37:39たしかに商業高校の情報処理科出身が多い。みんな簿記、シスアドなどの資格を持ってる。
高校では情報処理科のエリートとして推薦で大学に来た人ばかり。
俺は英検2級と漢字検定2級しか持ってない。情報とまったく関係ない。
アルゴリズムやスタックマシンなど本当の計算機科学の分野は未知の世界。
>>454
ググったらMITで使う教科書という事で萎えた。
これを履修するMITの1年生ってうちの大学の4年と比べても完全体セルとヤムチャ位のレベル差があるのでは。
>>455
アカデミック版でも3万以上するんだけど…
0458デフォルトの名無しさん
2007/12/02(日) 19:43:21インターフェースとその実装クラスに関することです。
ArrayListを使う場合、↓のように宣言する事が多いけど、これはListであればArrayListだろうがLinkedListだろうが良い場合ですよね。
List list = new ArrayList();
たとえばArrayListにしかないtrimToSize()を使いたい場合は上記の場合ダウンキャストしないといけないから、↓のように書くと思います。
ArrayList list = new ArrayList();
JDBCでMySQLに接続したい時は、
registDriverなりClass.forName()すればDriverManagerのgetConnectionがMySQLのJDBCの実装クラスを返してくれるけど、
java.sql.*に定義されているインターフェースのみで操作できますよね。
com.mysql.jdbc.Connection、com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
みたいに実装クラスをソース上に記述して使用するメリットとデメリットを教えていただけませんか?
com.mysql.jdbc.*にしかないメソッドを使いたい場合は前述のArrayList.trimToSize()みたいになるから理解できるのですが、
最適化のために使うと教えられました。
どういう最適化がなされるのでしょうか。識者の方々ご教授くださいm(。_。)m
0459デフォルトの名無しさん
2007/12/02(日) 19:48:32ここでいう最適化っていうのは、
標準的でないが実装に依存した、よりパフォーマンスの良いメソッドが呼び出せる
ということじゃないかと、エスパーしてみる
0460デフォルトの名無しさん
2007/12/02(日) 19:58:57プログラム関係の資格?は、法的に有利にならないのであまりクリティカルじゃない
それに、良かれ悪しかれ、プログラム関係の知識は、すぐ陳腐化する
プログラムの勉強は書く前にまず読めと思う
読んだ本より書いた本が多いなどという人でなければ
0461デフォルトの名無しさん
2007/12/02(日) 20:00:19回答ありがとうございます。
でもそれはArrayList.trimToSize()と同意ですよね・・。
他にいったい何があるのか・・。
0462デフォルトの名無しさん
2007/12/02(日) 20:00:46色々と誤解してんな。
>ArrayListを使う場合、↓のように宣言する事が多いけど、これはListであればArrayListだろうがLinkedListだろうが良い場合ですよね。
>List list = new ArrayList();
これは間違いというか、使い方を間違えている。
例えばあるクラスのprivateフィールドでListを持ちたいのであれば、ArrayListのままで何も問題ない。
Listとして利用しなければならないとしたならば、それはクラスの外。
つまり、
public ArrayList getList()
と宣言するよりも
public List getList()
と宣言する方が、クラスの内部を変更(ArrayListをLinkedList等)にするなどの変更が容易に出来る(外のクラスに影響がない)
内部的にはListに制限したところでメリットは少ない。
JDBCDriverの場合もそういうこと。
0463デフォルトの名無しさん
2007/12/02(日) 20:03:23どっちのクラスのメソッドを呼ぶか渡されたインスタンスの型を見るまで判らないので、
その分のコストがかかるし、どっちを呼ぶかわからない以上
最適化して無駄な処理を消し飛ばしてしまうわけにもいかない
呼びうるメソッドが唯一に絞られる場合は、devirtualizationしてインライン展開してエスケープ解析して
ヒープオブジェクトをスタック上に割り当てたりとかsynchronizedを省略したりとか色々最適化が効くかもしれない
でもJDBCだったら、そんな些細な最適化よりもデータベースにアクセスするコストの方が巨大なので、
気にしても意味ないと思う
0464デフォルトの名無しさん
2007/12/02(日) 20:19:19なるほど、外部への影響を無くすためですね。
つまりJDBCの場合も、
MySQLに接続する場合はその内部はcom.mysql.jdbc.*のクラスをバリバリ使っていても、
insertData(int data1, int data2)
みたいになっていれば内部で↓のようになっていても、そんな気にするなって事で良いですか(クラス名は適当です)
MySQLPreparedStatement pst = conn.preparedStatement("***");
pst.setData(1, new MySqlData(data1, TYPE_INT));
pst.setData(2, new MySqlData(data2, TYPE_INT));
これをOracleに接続する事になった場合は
OraclePreparedStatement pst = conn.preparedStatement("***");
pst.setData(1, new Datum(data1, INT));
pst.setData(2, new Datum(data2, INT));
と変更しても使う側は気にしないで良いと。
どこを外部とするかによると思いますが。
0465デフォルトの名無しさん
2007/12/02(日) 20:25:45そういう事。
内部では専用のメソッドを幾ら使おうが、外部提供されているインターフェイスの振る舞いが変わらない限りはOKってのがポイント。
どこを外部とするかってのはまさにインターフェイスで決まっているし、これは有識者が議論して落とし所を決めているわけだ。
実プロジェクトではまともにインターフェイスをきらずに丸投げするから火を噴くんだけどねw
0466デフォルトの名無しさん
2007/12/02(日) 20:34:14実行時に検索処理みたいなものが走ってしまうのですか?
実行時には変数にインスタンスが割り当てられる時点でインターフェースの情報は使われないものだと思ってました・・・orz
もっとVMの動作を勉強すべきですね・・。
>>465
OracleやMySQL, PostgreSQLに接続する事が決まっているのに、
ResultSetを扱う共通ユーティリティ的なクラスがOracle依存バリバリに実装進められてるのは、
火を噴く前兆ですかね(;−;?
0467デフォルトの名無しさん
2007/12/02(日) 20:39:34好ましくはないけど、Oracle以外のDBは考慮しないで、かつバージョンアップもしないという状況なら問題はない。
他のDBに接続する可能性が0.01%でもあるならば今からでも方針を変えるべき
0468デフォルトの名無しさん
2007/12/02(日) 21:02:010469デフォルトの名無しさん
2007/12/02(日) 21:07:180470デフォルトの名無しさん
2007/12/02(日) 21:31:35バージョンアップの可能性もあるし、他のDBにも接続します・・。
>>468 >>469
共通ユーティリティ的なものが自前O/Rマップもどきになってます。
リフレクションバリバリで。
0471デフォルトの名無しさん
2007/12/02(日) 22:09:500472デフォルトの名無しさん
2007/12/02(日) 22:33:410473デフォルトの名無しさん
2007/12/02(日) 22:57:48Aの符号を反転させるにはどのような文にしたらいいですか?
0474デフォルトの名無しさん
2007/12/02(日) 22:59:120475デフォルトの名無しさん
2007/12/02(日) 23:01:340476デフォルトの名無しさん
2007/12/02(日) 23:02:410477デフォルトの名無しさん
2007/12/02(日) 23:02:58わかりにくくしてしまってすみません
0478デフォルトの名無しさん
2007/12/02(日) 23:06:23t=2〜4、6〜8、10〜12、(以降無限に続く)の時
速度vの符号を反転させるにはどのような文にしたらいいですか?
0479デフォルトの名無しさん
2007/12/02(日) 23:09:53だれか黒魔術でエスパーを召喚してくれ。
0480デフォルトの名無しさん
2007/12/02(日) 23:12:080481デフォルトの名無しさん
2007/12/02(日) 23:13:200482デフォルトの名無しさん
2007/12/02(日) 23:16:52{
v2 = v;
}
else
{
v2 = -v;
}
まあ、内容は分からんけどこんな感じか
0483デフォルトの名無しさん
2007/12/02(日) 23:17:570484デフォルトの名無しさん
2007/12/02(日) 23:25:26ifの条件がわからないんです
0485デフォルトの名無しさん
2007/12/02(日) 23:31:27482見た?
0486デフォルトの名無しさん
2007/12/02(日) 23:35:14tが2から4、6から8…の間の速度の符号を反転したいんです
0487デフォルトの名無しさん
2007/12/02(日) 23:37:400488デフォルトの名無しさん
2007/12/02(日) 23:39:580489デフォルトの名無しさん
2007/12/02(日) 23:40:440490デフォルトの名無しさん
2007/12/02(日) 23:44:280491デフォルトの名無しさん
2007/12/02(日) 23:53:000492デフォルトの名無しさん
2007/12/03(月) 00:14:22分野にもよるけど、ある程度まで行くとプログラムの壁より英語の壁にぶちあたると思うw
君が言う推薦で来たエリート様の半分以上は英語で躓く事になるよ。
普通科と工業科じゃ英語の下地が違うからな・・。
英検2級って事は、技術書レベルの英語ならスラスラ読めちゃうな。
0493デフォルトの名無しさん
2007/12/03(月) 07:49:060494デフォルトの名無しさん
2007/12/03(月) 10:40:520495デフォルトの名無しさん
2007/12/03(月) 11:15:14ファイルから文字列を読み込みハッシュテーブルを作っていきたいのですが
例えば
ファイル abcdea
というファイルを読み込んだとき普通なら
a=1 b=2 c=3 d=4 e=5 a=6 というテーブルができるのですが、これを
a=1,6 b=2 c=3 d=4 e=5 といったように同じ文字列が出てきた場合はキーを追
加するといったようにしたいのですがどのクラスを使うのが望ましいでしょうか?
0496デフォルトの名無しさん
2007/12/03(月) 11:15:45ファイルから文字列を読み込みハッシュテーブルを作っていきたいのですが
例えば
ファイル abcdea
というファイルを読み込んだとき普通なら
a=1 b=2 c=3 d=4 e=5 a=6 というテーブルができるのですが、これを
a=1,6 b=2 c=3 d=4 e=5 といったように同じ文字列が出てきた場合はキーを追
加するといったようにしたいのですがどのクラスを使うのが望ましいでしょうか?
0497デフォルトの名無しさん
2007/12/03(月) 11:17:000498デフォルトの名無しさん
2007/12/03(月) 11:25:54とりあえず。つ Map<String, List<Integer>>
0499デフォルトの名無しさん
2007/12/03(月) 12:04:13byte[] buf = new byte[256];
とか宣言したときに、あるメソッドにbuf[127]からを渡したいのです。
0500499
2007/12/03(月) 12:10:560501デフォルトの名無しさん
2007/12/03(月) 12:18:31わずか6分で完結してワロタが、良ければ後続のためにも解決策を書いておいてはくれまいか。
初質スレでは同じ質問が何度も繰り返すことは日常茶飯事だから、それだけで無駄な質問がなくなる。
0502デフォルトの名無しさん
2007/12/03(月) 12:21:460503499
2007/12/03(月) 12:37:39初歩的すぎて恥ずかしい限りですが、後続のために…
Cのように配列の途中からをhoge(&array[127]);のようにポインタで渡すのはJavaでは無理で、
hoge(array,127);などのように参照位置も渡さなきゃいけないようでした。
参考URL
http://sp.cis.iwate-u.ac.jp/pub/java/
0504デフォルトの名無しさん
2007/12/03(月) 13:46:02やさしいjavaは地雷
0505デフォルトの名無しさん
2007/12/03(月) 15:05:23java.util.Arrays#copyOfRange
offsetを引数に渡すと渡されたほうは範囲チェックとか必要になってマンドクセ
最初から処理範囲だけに絞り込んで渡せば、メソッド側は最初から最後まで処理すれば済むのでシンプル
ただし、privateメソッドに渡すのならばoffsetでも問題無
0506デフォルトの名無しさん
2007/12/03(月) 15:16:49総コード量は増えるわメモリフラグメント作るわ使う手間増えるわの
糞ライブラリでも作る気か。
0507デフォルトの名無しさん
2007/12/03(月) 15:44:15総コード量 → 変わらない
メモリ → 効率は悪くなるが、それで?ってレベル。フラグメントってのは意味不明。
使う側の手間 → 使われる側の手間も考えればどっちもどっち
0508デフォルトの名無しさん
2007/12/03(月) 16:09:250509デフォルトの名無しさん
2007/12/03(月) 16:27:030510デフォルトの名無しさん
2007/12/03(月) 16:27:49増加するという事も分からんのか。
呼び出し前にオフセットと長さを指定するコードは減らないし、
メモリ効率悪いし、デメリットだけでその設計を採用する価値がまったく見いだせない。
0511デフォルトの名無しさん
2007/12/03(月) 19:11:26ものすごく速いタイミングで2つのイベントが発生した場合でも、
実際に発生した順序でイベントが処理されることは保証されていますか?
0512デフォルトの名無しさん
2007/12/03(月) 19:27:550513デフォルトの名無しさん
2007/12/03(月) 20:00:110514デフォルトの名無しさん
2007/12/03(月) 20:09:33>>511
イベントの発生にバグを仕込まない限り、Swingは保証される。
AWTはシラネ
0515デフォルトの名無しさん
2007/12/03(月) 21:15:59import クラス と記入すると
new宣言 しなくてもimportしたクラスのメソッドを呼べるようになりますが、
他にも何かメリットはあるのでしょうか?又、なぜnewを使わずにimportクラスを使うのでしょうか?
0516デフォルトの名無しさん
2007/12/03(月) 21:18:18コードを具体的に書いてくれ
0517デフォルトの名無しさん
2007/12/03(月) 21:18:36new宣言しなくても・・・?
staticメソッドは呼び出せるようになる、というかそのクラスを参照できるようになるけどインスタンスメソッドなら当然newせないかんよ
なにか勘違いしているのでは・・?
0518デフォルトの名無しさん
2007/12/03(月) 21:25:40Gaibu gai = new Gaibu と宣言しGaibuクラスのメソッドを利用しますが、
import Gaibuと記入すればnew宣言しなくても Gaibuクラスのメソッドが使えるようになるのではないのですか?
0519デフォルトの名無しさん
2007/12/03(月) 21:28:50知識が足らなすぎる
0520デフォルトの名無しさん
2007/12/03(月) 21:30:030521デフォルトの名無しさん
2007/12/03(月) 21:30:07どんな参考書でどんな勉強してきたのか知らないが、staticメソッドとインスタンスメソッドの違い、それからパッケージの意味とimportの使い方を勉強しなおせ
0522デフォルトの名無しさん
2007/12/03(月) 21:30:49多分、import書かなくても動くんじゃね?
0523デフォルトの名無しさん
2007/12/03(月) 22:10:35違いがいまいち分かりません。
全部servletに書いたら駄目なんすか?
0524デフォルトの名無しさん
2007/12/03(月) 22:15:18staticメソッドなら、impoetの有無にかかわらずnewしないで呼べる。
インスタンスメソッドなら、importの有無にかかわらずnewしないと呼べない。
いずれにせよ、importとnewとは関係ない。
0525デフォルトの名無しさん
2007/12/03(月) 22:17:29規模による
一般論としては、パラメータの解析やどのロジックを実行するかまでをServletが責任を持ち、業務ロジックは分離するのが良いとされている。
言い換えればHttpRequestに関連する部分はServletで処理し、業務ロジッククラスはServletに依存しないようにすると依存性が低くなる。
結果としてテストがやりやすいなどのメリットがある
0526デフォルトの名無しさん
2007/12/03(月) 22:21:22aspx.cs → Servlet
.cs(自作クラス) → Bean
って感じ?
0527デフォルトの名無しさん
2007/12/03(月) 22:32:01JSPに何でもかんでも書いちゃう時代もあったけど、8年くらい前の話。
JavaはMVC3層モデルからJ2EE5層モデルと層分けの定義がいろいろあるけど
最初はXML+XSLTをイメージするのが簡単で分かりやすいかと個人的に思う。
0528デフォルトの名無しさん
2007/12/03(月) 23:30:43singletonってコンストラクタが使えないジャン。
代わりに、
getInstanceに引数をつけてやれば、コンストラクタみたいに使えるね。
なんで今まで気づかなかったんだろう。
わざわざセッターメソッドを用意していたwww
0529デフォルトの名無しさん
2007/12/03(月) 23:37:35publicクラスかprivateクラス以外は作ったこと無いわ。
0530デフォルトの名無しさん
2007/12/03(月) 23:38:28わざわざgetInstanceでフィールドに代入する意義がないか。
renewField(引数)とかを作ったほうが感覚的にわかりやすいね。
セッターでフィールドを初期化するってのはちょっと違和感がある。
0531デフォルトの名無しさん
2007/12/04(火) 00:10:05間違ってるだろうとは思わないのかね。
0532デフォルトの名無しさん
2007/12/04(火) 00:11:04と言って全くこの分野にはシロートなのですが、何から始めたら良いでしょうか?
叩かれることを覚悟で2chで質問させて頂きました。
0533デフォルトの名無しさん
2007/12/04(火) 00:17:19いや、別にム板は別に誰彼かまわず叩くような板ではないが、経理用のソフトを一から作るのか?
簡単なものならExcelのVBスクリプトを使えばいいと思うが、それ以上は専門のソフトウェアを使った方がいいと思うぞ。
経理なんてクリティカルな分野なんだから、バグが怖いし、何より手作りでは市販ほどのクオリティはできにくい。
それに、自作のソフトではデータや処理に一般性がなくて、情報を同僚なんかと共有しにくいしな。
悪いこといわないから、ソフトウェア板で該当ソフトを探したほうがいい。
0534デフォルトの名無しさん
2007/12/04(火) 00:19:09JavaのAPIドキュメントを読んで使えるようになることだな。
経理ならまずはjava.math.BigDecimalあたりか。
0535デフォルトの名無しさん
2007/12/04(火) 00:24:03128bit以上いけるならExcelを進めるわな
0536デフォルトの名無しさん
2007/12/04(火) 00:31:03まともにJavaアプリケーション開発してる人に質問(Javaじゃなくてもいいかもしれないが)
パッケージ名に gui とつけるのは、普通ですか?
それともguiとなるクラス群ををパッケージにまとめるというのは、設計段階で間違ってますか?
0537デフォルトの名無しさん
2007/12/04(火) 00:34:43問題はguiパッケージに何を詰めるかだと思うが?
0538デフォルトの名無しさん
2007/12/04(火) 00:37:37staticとpublic/privateは別の話だろう
static(内部)クラスは、公開クラスとするほどではなく、あるクラスの内部でのみ使われる場合に使う。
staticでない内部クラスとの使い分けは、そのクラスのインスタンスが、外側のクラスのインスタンスと紐づいているかどうか。
例えばあるクラスの中でのみ使うComparatorの実装クラスであれば、内部フィールドを参照するならば非static、参照せずある条件を持つならばstaticとする(例えばの話)
0539デフォルトの名無しさん
2007/12/04(火) 00:39:51ソフトウェア産業の丸投げ体質を知った上で、優秀な中小企業を見つけ、直接発注する能力を養う事からはじめよう
うちらは開発のプロ、>523は経理のプロ、無理に自分で作るのは辞めたほうがいい。
開発側にどうやったら作りたいものが伝わるかを学ぶ方が建設的
0540デフォルトの名無しさん
2007/12/04(火) 00:55:16同じ業務プログラムをバッチから呼び出したい場合とか考えてみよう。
>>532
「経営数値を分析・管理」ってどういうこと?
生データは別に会計ソフトがあって、それをいじくっていろいろやりたいとか?
Javaはそういう分野には、あまり向いていないと思う。
0541デフォルトの名無しさん
2007/12/04(火) 01:14:52Java でファイルへ I/O って面倒だなぁ。どの言語でもそうだ
と言われるとそうかもしれんが、C++ の方が楽に感じる。
簡単なことなら Ruby とかがいいと思うなぁ。
0542デフォルトの名無しさん
2007/12/04(火) 02:18:46まぁ、マシなほうだとは思うよ。
Loggerとかを使えばテスト用のは簡単に作れるし、
普通のならライブラリを作っちゃえば?
むしろ、面倒なのは文字列処理とかじゃないかと思うけどね。
メソッドは多いから自由性は高いんだけど、
パーサとかはえらい作るのが面倒だ。
0543デフォルトの名無しさん
2007/12/04(火) 02:39:290544デフォルトの名無しさん
2007/12/04(火) 11:16:270545デフォルトの名無しさん
2007/12/04(火) 13:38:19まずは基本的な経理ソフトにアクセスできるインターフェース作りから始めるのが無難でしょう
大量のデータの処理をソフト側に任せ経営管理機能に特化したほうが楽でしょう
データの互換性が何より重要になります
現在のところ経理ソフト自体の完成度は高くその機能を超えるのはなかなか難しいと思います
また処理データをOfficeなどのソフトで処理できるようにする事も大事です
POIを見るといいでしょう
またOOOなどのソフトを介してアウトプット用のデータを作る事も出来ます
表計算ソフトなどでのグラフ化や
役員会議でのパワーポイントでのプレゼン形式の報告など
に使えるようにする事が大事です
グラフをカスタマイズして画像として資料に貼り付けるのであればJFreeChartがお勧めです
とはいえ
資金繰り等の基本的機能はソフトについてるはずなのでそのデータをもとに更に加工
するといった手順になるのではないでしょうか
経理ソフトそのものを再構築するのであればJDBCは必須ですしjava.netのネットワーク機能も必須です
売り物にするつもりであれば全銀データアクセスは無くてはならないものです
0546デフォルトの名無しさん
2007/12/04(火) 15:44:54コンパイラの手抜きと違うんですか。
0547デフォルトの名無しさん
2007/12/04(火) 15:50:31C言語の影響じゃねーの?
0548デフォルトの名無しさん
2007/12/04(火) 16:07:260549デフォルトの名無しさん
2007/12/04(火) 16:25:11すればいいじゃん
0550デフォルトの名無しさん
2007/12/04(火) 17:03:18分かるように解説をお願いしますだ_no
0551デフォルトの名無しさん
2007/12/04(火) 17:38:48させようとして、コンパイルしたらdoubleには対応していないと出ました。
どうすれば小数を表示できますか。お願いします。
0552デフォルトの名無しさん
2007/12/04(火) 17:44:290553デフォルトの名無しさん
2007/12/04(火) 17:48:48ttp://v2c.xrea.com/
改造しているのはこれで、あとはコンパイルするだけなのに何故かエラーで手詰まり。
デコンパイルしたものをすぐに再コンパイルし直してもエラーになるから改変ミスではないはずだし……
ほんと何が原因なんだろう……
0554デフォルトの名無しさん
2007/12/04(火) 17:53:09label が java.awt.Label だとすると setText(String)
// 他のクラスでも一般的に setText の引数は String だが。
double に String は含まれないのでコンパイルできない。
簡易メソッドでよければ、Double.toString(double)
他は>>552 やら、1.5以降なら String.format(String, Object) やら…
0555デフォルトの名無しさん
2007/12/04(火) 17:53:210556デフォルトの名無しさん
2007/12/04(火) 18:03:420557デフォルトの名無しさん
2007/12/04(火) 18:03:51jadがデコンパイルに失敗してコンパイルできないソースを吐いてしまうことはよくある
0558デフォルトの名無しさん
2007/12/04(火) 18:05:50そんなあなたにはCの流儀なんか微塵も混じってないHaskellやLispがおすすめ
0559デフォルトの名無しさん
2007/12/04(火) 18:48:23JDK 1.4 コンパイラで作ったクラスファイルあたりからまともに再コンパイルできるようなコードは吐かないよ。
1.1 でコンパイルしたのは綺麗に出るんだけど。
あれは改変するためのツールじゃなくて分析するためのツール。
0560デフォルトの名無しさん
2007/12/04(火) 18:53:15あと ""+x とかもあるな…
0561デフォルトの名無しさん
2007/12/04(火) 19:40:23javaはソース復元できるってのはもう大昔の話。
0562デフォルトの名無しさん
2007/12/04(火) 19:41:00Javaで処理をするということを目指しています.
以下のプログラムをそのまま実行したんですが,ある程度以上出力が続いた後,
必ずプログラムが途中で固まってしまいます(強制終了するわけでも
エラーを吐くわけでもなく,実行中のままlineに値が入らなくなる).
外部プログラムの出す出力がある一定以上になったときに必ず固まるので
メモリか何かの問題かと思って,
1.Eclipse起動オプションに-vmargs -Xms256M -Xmx512Mと指定
2.Eclipse上で,実行するプログラムのVM引数にも同じように-Xms256M -Xmx512M指定
して実行したんですが,やはり同じところで固まりました.
どなたか打開策を教えていただけませんでしょうか?
よろしくお願いします.
ProcessBuilder pBuilder = new ProcessBuilder(gaibuProgramCmd);
Process p = pBuilder.start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null){
System.out.println(line);
}
0563デフォルトの名無しさん
2007/12/04(火) 19:46:300564デフォルトの名無しさん
2007/12/04(火) 19:48:57最適化が凄まじくなったつーより、
jadがアップデート止めてて1.4以降に対応しきれてないって感じのような。
0565デフォルトの名無しさん
2007/12/04(火) 19:56:31ありがとう。
分析の為のツールか……
900ほどあるクラスの内から一つをデコンパイルして、数行書き換えるだけなのに。
まさかそんな落とし穴があったなんて……
0566デフォルトの名無しさん
2007/12/04(火) 20:55:17(そのうち RPC になる予定なので)、全てのメソッドの先頭で権限チェックするの面倒なんで
アノテーション使って宣言形式でやろうと思うんだけど、こういう使い方ってあり?
@Administrator
public void removeUser(int userId){...}
// 呼び出し側 (このメソッド内でアノテーション見て権限チェック)
RPC.call("removeUser", 100);
0567デフォルトの名無しさん
2007/12/04(火) 20:56:33標準エラー出力が満杯になって詰まった可能性は?
0568デフォルトの名無しさん
2007/12/04(火) 21:00:22権限チェック面倒ったって、メソッドの先頭で
checkAdminPrivilege();
とか一行呼ぶだけで済むようにしとけば、大して変わらんと思うのだが…
まぁアノテーションでもいいと思うけど
0569562
2007/12/04(火) 21:04:04ありがとうございます!
アドバイスを頂いたときにはたと思い至り,
以下のように「pBuilder.redirectErrorStream(true);」を追加すると
正常に動作するようになりました!!!
標準エラー出力が満杯になるということがあるんですね・・.
本当にありがとうございました.
ProcessBuilder pBuilder = new ProcessBuilder(gaibuProgramCmd);
pBuilder.redirectErrorStream(true);
Process p = pBuilder.start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null){
System.out.println(line);
}
0570デフォルトの名無しさん
2007/12/04(火) 21:16:49将来的にインターフェースにして、動的プロキシ使って RPC 呼び出す構成にしたいので
宣言でやるのが変じゃないかがキモなのですよ。
0571デフォルトの名無しさん
2007/12/04(火) 21:23:060572デフォルトの名無しさん
2007/12/04(火) 21:28:02なんとなくどこかにセキュリティホールが開きそうな気がするのが気になるけど、
大丈夫なら、別にアノテーションいいと思うよ
自分も変な使い方しようとしたことあるし・・・
interface MyProtocol {
@Message(id = 3, priority = LOW)
void hogehoge();
}
とか
0573デフォルトの名無しさん
2007/12/04(火) 21:39:57宣言さえ適切なら抜けはなく、宣言しか見ない呼び出し側にも明確かと。
今の頭の中の最終形はこんな感じか。
public interface RemoteServer{
@Permission(role = User.ADMIN)
public String deleteUser(int id);
@Permission(role = User.SYSTEM)
public void executeBatch();
}
public class RemoteServerInvocationHandler extends InvocationHandler{
public Object invoke(Object proxy, Method method, Object[] args) throws Exception{
// メソッドのアノテーションを調べて実行権限確認
// メソッド名に基づく RPC 呼び出し
}
}
0574デフォルトの名無しさん
2007/12/04(火) 21:41:16あとログイン済み確認とアカウントのロール割り当てはチェックは、どのみちせなかん。
0575デフォルトの名無しさん
2007/12/04(火) 21:42:270576デフォルトの名無しさん
2007/12/04(火) 21:58:38明確になるので意外と良いかもしれん。JDK 1.4 以来ずっと 「アノテーション
なんてどこで使いようがあるんだよ」 と思ってたが、やっと一つ見つけたわw
アスペクト指向チックな設計してるところでは使いようによっては便利なのかな。
0577デフォルトの名無しさん
2007/12/04(火) 22:07:110578デフォルトの名無しさん
2007/12/04(火) 22:35:42RMI 実装が動的プロキシ使ってくれればスタブもスケルトンも不要だと思うんだけど。
0579デフォルトの名無しさん
2007/12/04(火) 22:48:170580デフォルトの名無しさん
2007/12/04(火) 23:01:25ただのオーバーヘッドでしかないな。まぁ大半は客騙してオーバースペックの
ハード売る口実に使ってるだけなんだが。
0581デフォルトの名無しさん
2007/12/04(火) 23:09:50WebServiceはRESTのせいで何かHTTPで使えれば何でもそうみたいに聞こえる。
0582デフォルトの名無しさん
2007/12/04(火) 23:20:48中心付近では余裕で現役だったりする。Web サービスなんかバッチ処理 (非 Java)
からアプリケーションの機能呼び出す時くらいにしか使ってないがな。
0583デフォルトの名無しさん
2007/12/04(火) 23:26:36今は動的プロキシで自動生成してくれるので不要
0584デフォルトの名無しさん
2007/12/05(水) 00:47:55String.replaceAll("foo", "\\\\var");としてもだめでした。
どうすればいいでしょうか?
0585デフォルトの名無しさん
2007/12/05(水) 01:00:51ドキュメント嫁と言おうとしたが1.4のドキュメントには書かれてないな。
1.6のドキュメントより。
> 置換文字列内でバックスラッシュ (\) とドル記号 ($) を使用すると、
> それをリテラル置換文字列として処理した場合とは結果が異なる場合があります。
> Matcher.replaceAll を参照してください。
> 必要に応じて、Matcher.quoteReplacement(java.lang.String) を使用して、
> これらの文字に特別な意味を持たせないようにしてください。
0586デフォルトの名無しさん
2007/12/05(水) 01:10:351.4の場合どうすれば良いかわからん。
0587584
2007/12/05(水) 02:01:54ご説明ありがとうございます。quoteReplacement…あまり聞きなれないメソッドですね。
別の環境で試したらString.replaceAll("foo", "\\\\var");でうまくいきました。
うまくいかなかった環境とはリビジョンが異なるのでよくわかりませんが
もう一度試してみようかと思います。
ちなみに、うまくいったのはJDK1.4.2_16とJDK1.5.0_12です。(1.5は動作をみるために)
うまくいかなかった(と思う)環境はJDK1.4.2_13使ってました。
1.4のリリースノートに関連するキーワードがないので違いはないと思えますが…?
再度試してだめだったら、Matcherであれこれ試してみようかと思います。
0588デフォルトの名無しさん
2007/12/05(水) 03:21:18このプログラムってどういった処理で実行結果が出てるんでしょうか?
0589デフォルトの名無しさん
2007/12/05(水) 04:05:02読んで字のごとく。
この程度のソース読めないなら諦めろ。
pencilCase.hasNext()
pencilCase.next()
pencil.getName()
この3つの実装をトレースしてみれ。
0590デフォルトの名無しさん
2007/12/05(水) 05:29:580591デフォルトの名無しさん
2007/12/05(水) 07:40:02コレクションも複製しようと思ったらまた抑止しなきゃいけないニカ?
public Object clone(){
try{
Node<?> node = (Node<?>)super.clone();
node.subnode = new ArrayList<T>(this.subnode); // 型のフイッチ
return node;
} catch(CloneNotSupportedException ex){
throw new IllegalStateException();
}
}
0592デフォルトの名無しさん
2007/12/05(水) 11:12:01copyやらduplicateやら名前をclone以外にして複製メソッドを作り直す、とか
0593デフォルトの名無しさん
2007/12/05(水) 11:24:57でも super.clone() 呼んだ時点で (Node<?>) にキャストしなきゃいけないから同じだよなぁ。
うーんちょっと凝ろうとするとダマシダマシ地獄にはまるな、ジェネリクス。
標準のコレクションみたいに 「何でも入るバケツに制限つける」 程度の用途に抑えておいたほうがいいのか。
0594デフォルトの名無しさん
2007/12/05(水) 11:34:02// interface Node extends Clonable
protected Object clone() {
Node<?> result= (Node<?>) super.clone();
result.children = new ArrayList<Node>();
for(Node child; node.getChildren()) {
result.add((Node) child.clone());
}
return result;
}
0595デフォルトの名無しさん
2007/12/05(水) 11:34:08親クラスが変更不可なら、うーん…設計ミス?(ぉ
0596デフォルトの名無しさん
2007/12/05(水) 12:22:55どうせSuppressWarnings付けるんなら、super.clone()をNode<T>で受け取るべきだと思う
public Node<T> clone(){
try {
@SuppressWarnings("unchecked")
Node<T> node = (Node<T>)super.clone();
...
}
0597デフォルトの名無しさん
2007/12/05(水) 16:22:51private exception Foo;
このパッケージ内のクラスを呼び出しているのですが、Foo が発生しています。
Foo を catch する方法はありますか?
0598デフォルトの名無しさん
2007/12/05(水) 16:45:20外に投げる例外でprivateとかバグだろ・・・
回避策はcatch(Exception e) のみ
規約で禁止されていたら乙
0599デフォルトの名無しさん
2007/12/05(水) 16:48:10String test ="全角スペースとかOS依存の文字を使ったパス";
File file = new File(test);
try {
desktop.open(file);
} catch (IOException exception) {
exception.printStackTrace();
}
何か文字化けしてしまってうまくできません。どうやって文字エンコーディングとか設定してうまくできますか?
0600デフォルトの名無しさん
2007/12/05(水) 16:49:45プログラム内で以下のように記述してコンパイルしたら
static int[] pos = new int[8];
static void print() {
for(int i=0; i<8; i++) {
System.out.printf("%2d", pos[i]);
}
}
次のようなメッセージがでました
The method printf(String, int) is undefined
for the type PrintStream
どのように対処すればいいのですか?
0601デフォルトの名無しさん
2007/12/05(水) 16:51:42以下を書いてくれ
実行環境のOS
読み込みファイルの文字コード
読み込むファイルの具体的なパス
Javaのバージョン
0602デフォルトの名無しさん
2007/12/05(水) 16:53:12javac -version でバージョン報告よろ
0603デフォルトの名無しさん
2007/12/05(水) 17:04:11このソースは質問のところを適当に簡略化して書いただけなんですけど、
実行環境のOS windowsXPとか
読み込みファイルの文字コード たぶんXPなんでMS932?(System.getProperty("file.encoding")て取得してみた)
読み込むファイルの具体的なパス C:/Get Wild.mp3(真ん中のスペースを全角にしてみた)
Javaのバージョン jdk1.6.0_02
Failed to open file:/C:/Get%E3%80%80Wild.mp3. Error message: 指定されたパスが見つかりません。
完全に文字化けしてる…
0604デフォルトの名無しさん
2007/12/05(水) 17:16:240605デフォルトの名無しさん
2007/12/05(水) 17:16:50何時からmp3がテキストファイルになったんだ?
0606599
2007/12/05(水) 17:28:49テキスト??
SE 6で追加されたDesktopのopenを使ってファイルを実行しただけですが。
ちゃんとしたパスならmp3に関連付けられたアプリケーションが起動してmp3を再生します…
0607デフォルトの名無しさん
2007/12/05(水) 17:39:560608デフォルトの名無しさん
2007/12/05(水) 17:40:24おまいが「どうやって文字エンコーディングとか設定して」と聞いているんじゃねーかw
0609デフォルトの名無しさん
2007/12/05(水) 17:41:04ショートカット変わった?
0610デフォルトの名無しさん
2007/12/05(水) 17:46:09使用できない文字だろうな
Fileクラスはマルチバイト対応だが、内部的にURIに変換されているからアスキー変換されているっぽい
file://〜 でアクセスできるファイルでないと開けないということ
0611デフォルトの名無しさん
2007/12/05(水) 18:00:12セッション情報は共有してるんでしょうか?
具体的には、
1.ページAから別ウィンドウでページBを開く
2.ページBからHttpSessionに情報セット
3.ページBを閉じる
4.ページAから別ウィンドウでページCを開く
5.ページCから2でセットした情報を読み込む
という処理は可能でしょうか?
0612デフォルトの名無しさん
2007/12/05(水) 18:03:22多分できる
0613599
2007/12/05(水) 18:04:16599のソースでちゃんとしたパスなら動くからおk
>>608
化けてるから文字コードかと思って…
>>610
そういうことですか…
ファイルのパスを取得→テキストとかに保存→(数日後)→テキストからパスをロード→実行
ってかんじの機能を持ったアプリだからこれができないと…
何かいい方法ないっすかねぇ
0614デフォルトの名無しさん
2007/12/05(水) 18:05:50http://internet.watch.impress.co.jp/www/article/970827/navjava.htm
0615デフォルトの名無しさん
2007/12/05(水) 18:07:41アプリフォルダにコピーしとけば?
やってみないとわからないけど、一度Fileインスタンス生成して、toURL().toURI() でURIを作る。
で、URIが有効ならば、URIからFileを生成すればどうだ?
0616デフォルトの名無しさん
2007/12/05(水) 18:15:43ん?FileってURIだっけURLじゃなかった?
0617デフォルトの名無しさん
2007/12/05(水) 18:33:010618デフォルトの名無しさん
2007/12/05(水) 18:33:21思ったのですが、コマンドプロンプトが、デフォルトで
C:\Document and Setting\???
から始まるようになっていたのですが、これを直す方法はありますか?
後、無理にC直下から起動する必要はありますか?
0619デフォルトの名無しさん
2007/12/05(水) 18:35:30コンパイルの際にフルパス入力しろ
0620599
2007/12/05(水) 18:53:44File file = null;
JFileChooser filechooser = new JFileChooser();;
int selected = filechooser.showOpenDialog(null);
if (selected == JFileChooser.APPROVE_OPTION) {
// 選択されたファイルを得る
file = filechooser.getSelectedFile();
}
try {
desktop.open(file);
} catch (IOException exception) {
exception.printStackTrace();
}
上のソースで全角スペース使ったファイルをファイルチューザーで選んでも
Failed to open file:/C:/Get%E3%80%80Wild.mp3. Error message: 指定されたパスが見つかりません。
at sun.awt.windows.WDesktopPeer.ShellExecute(WDesktopPeer.java:59)
at sun.awt.windows.WDesktopPeer.open(WDesktopPeer.java:36)
at java.awt.Desktop.open(Desktop.java:254)
at test.Main.main(Main.java:26)
これは困った…どうやらopen自体が全角スペースとかのパスが想定されてないみたいだ…
これはDesktopのソースを見てオーバーライドするしかない?
>>617
最近プログラミング始めた素人です…
0621デフォルトの名無しさん
2007/12/05(水) 20:01:47確認。問題があるのは sun の WDesktopPeer であって、Desktop 自体は関係なし。
試しに、全角空白を含む存在しないファイルを指定すると、Desktop 内で例外になる。
その場合、全角空白はエスケープされていない。
他の多バイト文字は大丈夫そう(一文字は確認)なのに。
ちなみに File.exists でも問題なし。URI にするのも効果なし。さてはて…
0622デフォルトの名無しさん
2007/12/05(水) 21:25:49発生場所の行番号も同じなのだが、これじゃね?
http://bugs.sun.com/view_bug.do?bug_id=6599987
0623デフォルトの名無しさん
2007/12/05(水) 21:37:100624デフォルトの名無しさん
2007/12/05(水) 21:38:160625デフォルトの名無しさん
2007/12/05(水) 21:40:43元々全然する気ねーみたいだけど。
てか日本語ファイル名には対応している。Shift_JIS や任意のエンコーディングに対応していないだけ。
0626599
2007/12/05(水) 22:12:30エラー出るのはたぶん全角スペースだけだな
>>622
場所は一緒だけど何か違う。
そのやつはファイル名はマルチバイトじゃないし、
別にmp3ファイルじゃなくても、パスにともかく全角スペースでエラーでるし…
流石に俺が該当箇所のソース見てみてもどこがおかしいかワカンネ
0627デフォルトの名無しさん
2007/12/06(木) 02:06:40テクスチャとして張れる画像は(2のn乗)×(2のn乗)ピクセルでなければ
ならない、と調べたら出たのですが、これ以外の大きさの画像を貼り付ける
手段はないでしょうか?
0628デフォルトの名無しさん
2007/12/06(木) 04:45:16いくらでもある
0629デフォルトの名無しさん
2007/12/06(木) 06:08:44DirectXしかしらんが、そのサイズはサーフェスのサイズではないのか?
もし本当に2のn乗サイズしか無理でも、2のn乗サイズに足りない面積を適当な色でパディングして、
テクスチャを設定するときにUV座標をいじればいい。
0630デフォルトの名無しさん
2007/12/06(木) 13:45:05(?:.|\n)*では遅い上に簡単にスタックオーバーフローしてしまう。
alternationがこの欠点を持つことはsun確認済で直すつもりもないらしい。
(?:.*\n?)*とかかなあ。
0631デフォルトの名無しさん
2007/12/06(木) 13:48:240632デフォルトの名無しさん
2007/12/06(木) 14:01:500633デフォルトの名無しさん
2007/12/06(木) 15:53:25フラグを渡すのが面倒なら(?s:.*)みたいに正規表現に埋め込むのも
0634デフォルトの名無しさん
2007/12/06(木) 16:00:10ありがとうございます。
ところが実際貼り付けようとしたらコンパイルは通るのですが
実行で躓きます。
texFile = new java.net.URL(getCodeBase().toString() +"画像ファイル");
でぬるぽが出てgetCodeBase(Unknown Source)
となります。何が悪いのでしょうか?
0635デフォルトの名無しさん
2007/12/06(木) 16:05:160636デフォルトの名無しさん
2007/12/06(木) 16:26:570637デフォルトの名無しさん
2007/12/06(木) 16:38:37それアプレット?
どこで実行してる?initの中?
たぶんJava3D関係ない
0638デフォルトの名無しさん
2007/12/06(木) 17:35:21これって毎回読みにいくっぽいのですが、
初期設定みたいなものにはできないのでしょうか?
0639デフォルトの名無しさん
2007/12/06(木) 17:39:320640デフォルトの名無しさん
2007/12/06(木) 17:47:27JVMの設定にしたいのではなく、とあるプロジェクトではこのlog4j.xmlを使うという形にしたいのです。
0641デフォルトの名無しさん
2007/12/06(木) 18:18:04インスタンス.メソッド(引数)は、
補語.動詞.(目的語)と読み替えられると思います。
(murata.set(hat)で村田に帽子を被せる等)
インスタンスに一連の動作を行わせるのメソッドの名前を今までplay()としていました。
しかし上の例に当てはめると「インスタンスに一連の動作を行う」と、おかしな文章になってしまいます。
「行う」ではなく「行わせる」という意味にメソッド名を変えたいのですが、
この場合どういうメソッド名にすれば良いでしょうか?
0642デフォルトの名無しさん
2007/12/06(木) 18:22:30クラス名・変数名に迷ったら書き込むスレ
http://pc11.2ch.net/test/read.cgi/tech/1191250784/l50
0643デフォルトの名無しさん
2007/12/06(木) 18:26:34だと思う
murata.putOn(theHat); -> 村田が帽子をかぶる
murata.play(); -> 村田が遊ぶ
#村田って誰よw
0644デフォルトの名無しさん
2007/12/06(木) 18:28:24メソッドの呼び出しはインスタンスに何かを行わせるというより、
インスタンスが何かを行うきっかけを与えるってイメージの方が良いかも。
呼び出し側で行わせるんじゃなくて、インスタンスが自分で行うって感じ。
0645デフォルトの名無しさん
2007/12/06(木) 18:30:50murata.execute(sequence)とかじゃね?
0646デフォルトの名無しさん
2007/12/06(木) 18:31:00目的語.他動詞(副詞節)
こうじゃね?
0647デフォルトの名無しさん
2007/12/06(木) 18:46:57クヌースにでも教えてもらえ
0648デフォルトの名無しさん
2007/12/06(木) 19:35:01意味わからん
実行時に指定してもらえばいいだろ
0649デフォルトの名無しさん
2007/12/06(木) 19:59:25オブジェクト指向MLでそんな話題が前にありました。
http://www.ogis-ri.co.jp/otc/hiroba/MailingList/digest/index.html
2000.07 「メソッドの名付け方」が参考になるかもしれません。
#でも、たしか結論は出ていなかったような・・・。
0650デフォルトの名無しさん
2007/12/06(木) 20:18:13が存在するか否かのチェックってできますか?
0651デフォルトの名無しさん
2007/12/06(木) 20:28:37FTP 的には cd や ls を試してエラーにならないかどうかでしか判断できない。
0652デフォルトの名無しさん
2007/12/07(金) 00:51:45ダウンロードし、同時にDBにダウンロード済みのフラグを立てて画面を再表示して
ダウンロードしたデータが一覧から消えるということを行いたいのですが、上手く
いきません。(レスポンス先をCSVファイルにしている為、画面更新ができない)
どなたか、同じような経験をしてこう解決したという方いましたらご教授の程宜しくお願いします。
0653デフォルトの名無しさん
2007/12/07(金) 01:24:330654デフォルトの名無しさん
2007/12/07(金) 01:24:420655デフォルトの名無しさん
2007/12/07(金) 01:34:58<form> に target="_blank" 付けるなり JavaScript で別ウィンドウ出すなりして CVS ダウンロードのリクエストを送信。
元の画面は JavaScript で 1 秒後にでもリロード。
0656デフォルトの名無しさん
2007/12/07(金) 03:46:24今double型を整数部と小数部に分けて考えています。
整数部はlong型にいれビット演算してdouble型に戻し、
小数部はMath.pow(2,63)をかけてlong型に入れビット演算してMath.pow(2,-63)をかけてdouble型に戻す作業をしようとしています。
しかし、こんなやり方ではビット演算とは関係がないところでに重くなってしまいます。
どうしたらよいのでしょうか?
0657デフォルトの名無しさん
2007/12/07(金) 08:05:39どういうことでしょうか?
0658デフォルトの名無しさん
2007/12/07(金) 08:17:49javaアプリケーションの間違いじゃね?
いらない形もあるよ。
コマンドプロンプトから
java クラスファイル
で実行するなら、そのクラス内にはmain必要。
0659デフォルトの名無しさん
2007/12/07(金) 08:24:44レスありがとうございます!
携帯用の2ちゃんブラウザのa2Bてアプリのソースみてました
main()いらないのもあんですね
ありがとうございました
0660デフォルトの名無しさん
2007/12/07(金) 08:25:54ちょwおまwww
>>657
書いたコード中にmainがあるとは限らない。
MIDPアプリの場合は、ランタイム(JVMなど)上にさらに
MIDPアプリを動かすための枠組み・仕組みがあって
そこからMIDPアプリが呼ばれるようになっている。
その枠組み・仕組みの中にはJVMから呼ばれるmain()メソッドがあるよ。
0661デフォルトの名無しさん
2007/12/07(金) 09:28:02doubleのビット演算を行う目的は?
なにがどのくらい重くなるの?
0662デフォルトの名無しさん
2007/12/07(金) 09:29:382. byte[] data = new byte[16];
3. is.read(data); // 16バイトのバイトデータを配列dataに読み込む
上記のdataを一次元配列にいれるためには配列の型は何にすればいいのでしょうか?
0663デフォルトの名無しさん
2007/12/07(金) 09:56:46健忘症が激しいようで。自分でやってるのに気がつかないとは…
まあ、byte[] の配列を作ればいいんじゃないの?
data を使いまわすなら、複製しないとダメだけどな。
0664デフォルトの名無しさん
2007/12/07(金) 10:26:36だけど、読込バイト数をファイルサイズから計算して配列サイズを求める必要がある。
どっちかといえば、ArrayList<byte[]> のが良いかと思われ
0665デフォルトの名無しさん
2007/12/07(金) 11:17:51その解析処理では、いくつか閾値を設けなければならなくて、
その閾値の設定をどこからでも参照できるようにしたいのです。
(その参照元は、値の設定を行うビューや実際に解析を行うクラスなどです)
こういったグローバルな設定項目をJavaで定義するにはどうすればいいのでしょうか?
0666デフォルトの名無しさん
2007/12/07(金) 11:21:090667デフォルトの名無しさん
2007/12/07(金) 11:26:33わかってるとは思うが、それでもお節介に言ってしまうと、mainは複数含まれてもいい。
実行時にどのバイトコードに含まれるmainを実行するのか指定するので、
デバッグ用mainとリリース用mainとか使い分けることも出来る。
0668デフォルトの名無しさん
2007/12/07(金) 11:30:21質問者の頭の中ではプログラム=クラスだと思うから1つで正しいと思われ
0669デフォルトの名無しさん
2007/12/07(金) 11:50:520670デフォルトの名無しさん
2007/12/07(金) 11:52:40>doubleのビット演算を行う目的は?
理由1:
作っているアルゴリズムと速度比較するために遺伝的アルゴリズムを作ろうとしています。
この2つのアルゴリズムの初期化方法と評価方法をまったく同じにするために先に作ったアルゴリズムのdouble型に統一しようとしているため。
理由2:
遺伝的アルゴリズムの交叉、突然変異の計算部分をビット演算するため。
>なにがどのくらい重くなるの?
Math.pow()の部分だけでほとんどの計算時間を費やします。
0671デフォルトの名無しさん
2007/12/07(金) 11:59:39ありがとうございます。3つとも調べてみました。
定数ユーティリティはクラスメンバを直接読み書きさせるもの、
Monostateは定数ユーティリティにアクセッサを追加したもの、
Singletonはインスタンスメンバを持たせてインスタンスが1つしか存在しないようにしたもの、
という理解で間違ってないでしょうか。
ただ、これらの使い分けは一般にどうされてるんでしょうか…?
0672デフォルトの名無しさん
2007/12/07(金) 12:05:12Double.doubleToRawLongBitsでdoubleのビットパターンが得られるので、
自力でそれを仮数部と指数部と符号に分解して、演算後また合成して、
Double.longBitsToDoubleでdoubleに戻す…とか
0673デフォルトの名無しさん
2007/12/07(金) 12:16:20apacheにライブラリがある
其れを使えば簡単に出来るしファイルを扱うようにFTPを操作できる
0674デフォルトの名無しさん
2007/12/07(金) 12:30:32どんなアルゴリズムでもそうだが、Math.powとアルゴリズムの計算量のバランスがおかしいので、その方法では速度比較できない。
doubleで軽いビット演算を行うのは難しいってのは明らかだろ?
つまり、やろうとしていること自体に無理がある。
自力でビット演算したところで、その処理が重い事は変わらないので比較する前の話
0675デフォルトの名無しさん
2007/12/07(金) 12:48:32速度比較と書いてしまいましたが・・・収束速度比較の間違いです。ごめんなさい。
どちらのアルゴリズムがより少ない評価回数でより良い値に収束できるのかを調べようとしています。
>>672
ありがとうございます。
早速試してみます。
0676デフォルトの名無しさん
2007/12/07(金) 12:58:34おまえとは話してるレイヤーが違う。
0677デフォルトの名無しさん
2007/12/07(金) 13:03:200678テスト ◆tr.t4dJfuU
2007/12/07(金) 13:09:190679デフォルトの名無しさん
2007/12/07(金) 13:33:550680デフォルトの名無しさん
2007/12/07(金) 14:26:06同じだよ
難しく考えすぎてるだけ
その分ソースも難解になるぞ
0681デフォルトの名無しさん
2007/12/07(金) 14:39:15プロトコル上の制約と既成ライブラリの有無がどうやったら同じレイヤーの話に思えるのか…
ソース? レイヤーの切り分けも出来ない素人が何言ってんだ。
0682デフォルトの名無しさん
2007/12/07(金) 16:03:18マルチスレッド的にまずいですよね?
0683デフォルトの名無しさん
2007/12/07(金) 16:03:21残念だけど貴方のレイヤーは私のレイヤーに包含されている
0684デフォルトの名無しさん
2007/12/07(金) 16:11:27それは 「cd やら ls やらで調べる手間は既成のライブラリ使えば楽」 ってだけ。
包含? 馬鹿ですか?
0685デフォルトの名無しさん
2007/12/07(金) 16:18:170686デフォルトの名無しさん
2007/12/07(金) 18:18:19誰の目にも明らかに包含されてる
0687デフォルトの名無しさん
2007/12/07(金) 18:27:330688デフォルトの名無しさん
2007/12/07(金) 18:40:43どなたか教えていただけませんか?
0689デフォルトの名無しさん
2007/12/07(金) 18:55:020690デフォルトの名無しさん
2007/12/07(金) 19:00:33その画像を表示してるコンポーネントにaddMouseListener
0691デフォルトの名無しさん
2007/12/07(金) 19:19:510692デフォルトの名無しさん
2007/12/07(金) 19:21:080693デフォルトの名無しさん
2007/12/07(金) 19:29:07解答ありがとうございます。
先にImage imgを宣言しており、MouseActionクラスで処理してるとして
public void paint(Graphics g){
g.drawImage(img, x, y, this);
addMouseListener(new MouseAction()):
}
という感じでよろしいでしょうか?
また、img1,img2というように、画像が複数あった場合の方法も教えていただきたいです。
度々申し訳ありません、よろしくおねがいします。
0694デフォルトの名無しさん
2007/12/07(金) 19:31:420695デフォルトの名無しさん
2007/12/07(金) 19:38:53paintのたびに毎回やる必要は無い
コンストラクタで一度やっておけば後はずっとイベントが来る
画像の数も関係ない
MouseListenerは画像ではなくコンポーネントに設定するものだから
0696デフォルトの名無しさん
2007/12/07(金) 19:53:57つまり、
ConstName(){
//画像取得
img1 = getToolkit().getImage("img1.gif");
img2 = getToolkit().getImage("img2.gif");
addMouseListener(new MouseAction());
}
という感じでよろしいんですか?
あと、書き忘れていたんですが、img1とimg2のクリック検知を区別したいのですが…
これは処理しているMouseActionクラス(MouseAdapter継承)で行うんでしょうか。
0697デフォルトの名無しさん
2007/12/07(金) 19:56:02if文で場合分けすればいい
0698デフォルトの名無しさん
2007/12/07(金) 20:25:34説明不足でした。
img1とimg2は同時に表示されているんですが…
できれば例を示していただきたいです。
何度も申し訳ないです、よろしくお願いします。
0699デフォルトの名無しさん
2007/12/07(金) 21:00:12GUI以前の問題。基本的なロジックに対する理解がなってない。if,for,whileからやり直せ。
0700デフォルトの名無しさん
2007/12/07(金) 21:07:57// これらは回答が必要な質問ではない
AWTのイベントモデルは理解していますか?
MouseEvent は見ましたか?
座標の概念は分かりますか?
0701デフォルトの名無しさん
2007/12/07(金) 21:29:52ここに載っている2.6準備の「Project X」を試してみたいのですが、
xml.jarの場所がわからないのでご存じの方がいたらお願いします。
0702デフォルトの名無しさん
2007/12/07(金) 21:34:58つまり座標取得を使って画像の範囲内の座標のクリックを検知する、
ということでよろしいのでしょうか?
何か勘違いをしていたみたいです。
ご迷惑をおかけしました。
0703管&;理&;人
2007/12/07(金) 21:43:170704デフォルトの名無しさん
2007/12/07(金) 22:13:10JAVAで双方向での通信までの部分を実現するにはどういったパッケージやクラスが必要になるでしょうか
0705デフォルトの名無しさん
2007/12/07(金) 22:28:00<%@ taglib prefix="foge" uri="/WEB-INF/tld/foge.tld" %>
とか直接 uri に場所指定するのも仕様的に良いんだっけ?
0706デフォルトの名無しさん
2007/12/07(金) 22:29:07java.io.InputStream
java.io.OutputStream
java.net.Socket
java.net.ServerSocket
0707デフォルトの名無しさん
2007/12/07(金) 22:43:34Servlet2.3からはOK。
0708デフォルトの名無しさん
2007/12/07(金) 23:10:02Servlet 2.3 って事は JSP 1.2, J2EE 1.3 (2001年頃) か。
だいぶ古い知識引きずってたのかな。どうもありがとう。
0709デフォルトの名無しさん
2007/12/07(金) 23:49:230710デフォルトの名無しさん
2007/12/07(金) 23:59:58<input type="checkbox" value=取得した値>
みたいなことがしたいのです。
0711デフォルトの名無しさん
2007/12/08(土) 00:02:560712デフォルトの名無しさん
2007/12/08(土) 02:16:05こういうやつです→ttp://uproda.2ch-library.com/src/lib000995.jpg.shtml
Listのコンストラクタを new List(parent,SWT.CHECK | SWT.BORDER); のように
スタイルにSWT.CHECKを含めてもチェックボックスが付いてくれません(Treeだとこれで付くのですが)。
どのように実装すればいいのでしょうか。お願いいたします。
0713デフォルトの名無しさん
2007/12/08(土) 06:49:42org.eclipse.swt.widget.ListのAPI読むと、
Only one of the styles SINGLE, and MULTI may be specified.
ってあります。SWT.CHECKは無効ですよ。
そういうのはJFace使わないと無理では。
0714デフォルトの名無しさん
2007/12/08(土) 10:11:430715デフォルトの名無しさん
2007/12/08(土) 12:34:220716デフォルトの名無しさん
2007/12/08(土) 13:38:090717デフォルトの名無しさん
2007/12/08(土) 13:46:11セキュリティファイル(名前忘れた)をいじれば、ローカルファイルにだってアクセスできちゃうんだから
0718デフォルトの名無しさん
2007/12/08(土) 15:05:380719デフォルトの名無しさん
2007/12/08(土) 15:21:090720デフォルトの名無しさん
2007/12/08(土) 15:32:40プロパティウィンドウに関連付けるために作られたんだよな
0721デフォルトの名無しさん
2007/12/08(土) 15:34:550722デフォルトの名無しさん
2007/12/08(土) 15:38:42JPanelとKeyListenrを継承したクラスを作り
同クラスのmain()からJFrameを生成、そのフレームに同クラスを配置しました。
その際、コンストラクタから自クラスをKeyListenerとして指定したのですが
キーボード入力を受け付けません。
一旦、staticなクラス内インスタンスとして生成してからだと受け付けるのですが
原理というか、なぜそのようなことが起こるのかがわからないので
どなたか分かる方、教えていただけないでしょうか。
0723デフォルトの名無しさん
2007/12/08(土) 15:47:090724デフォルトの名無しさん
2007/12/08(土) 15:54:230725デフォルトの名無しさん
2007/12/08(土) 16:31:50違いが出るのは、違う作りにしたから…
Listener を配置したのは、JPanel なのか、JFrame なのか…
「staticな"クラス内インスタンス"として生成」とは
何をしたことになるのか、はたまた何もしていないのか…
キーボード入力はフォーカスの問題だったりすることが多いような…
0726デフォルトの名無しさん
2007/12/08(土) 17:27:19関係ないかも知れないけど
コンストラクタ内で自インスタンスをリスナー登録するのは避けたほうがいい
0727722
2007/12/08(土) 18:17:54Listenerを配置したのはJPanelです。
this.addKeyListener(this);
としました。
フォーカスはtrueにしてあります。
状況しだいで反応があったので、フォーカスは問題ないと思います。
>「staticな"クラス内インスタンス"として生成」とは
>何をしたことになるのか、はたまた何もしていないのか…
問題のクラスの中に、自分のインスタンスを持たせて、
main()でその中に自分のインスタンスを入れました。
なんで動いたのかとか、何やってるのかは自分でもわかってません。^^;
まあ、だから困ってるわけですが。
>>726
避けたほうがいい理由を教えてもらえませんか?
0728デフォルトの名無しさん
2007/12/08(土) 19:06:55javaでメモ帳打ちをしろということになるのでしょうか?
0729デフォルトの名無しさん
2007/12/08(土) 19:40:43Eclipse
0730デフォルトの名無しさん
2007/12/08(土) 20:22:09いきなり皮肉ってるwwww病気かwww
0731デフォルトの名無しさん
2007/12/08(土) 21:07:02状況しだいで反応があった、というのがミソなんじゃないのかな
公開できる部分で問題になりそうな変えた部分を貼ってみれば、誰かが分かるかも
あと、726 じゃないが…
コンストラクタを通りきってない=生成未完了のインスタンスを
別のインスタンスに渡すなってやつですな。
想定外の事が起きる可能性を増やすことになるから。
0732デフォルトの名無しさん
2007/12/09(日) 00:57:54と思ってたんだけどあってますか? どうもそのように動いてくれないんですけど。
<jsp:useBean id="product" class="java.util.HashMap" />
<c:set target="product" property="name" value="インスタントラーメン" />
javax.servlet.jsp.JspTagException: Invalid property in <set>: "name"
at org.apache.taglibs.standard.tag.common.core.SetSupport.doEndTag(SetSupport.java:160)
at org.apache.jsp.tag.web.references.tagfile.writeProduct_tag._jspx_meth_c_005fset_005f0(writeProduct_tag.java:106)
at org.apache.jsp.tag.web.references.tagfile.writeProduct_tag.doTag(writeProduct_tag.java:70)
…
property="price" にするとメッセージが 「Invalid property in <set>: "price"」 になるので
<c:set> で例外が発生していることは間違いないと思います。あと <jsp:useBean> を
<% pageContext.setAttribute("product", new HashMap()); %> に変えても同じでした。
何か間違っているのでしょうか。
0733デフォルトの名無しさん
2007/12/09(日) 01:21:44<c:set target="${product}" property="name" value="インスタントラーメン" />
0734デフォルトの名無しさん
2007/12/09(日) 19:52:52文字化けを直したいのですが、どうやればいいのかわかりません。
おしえてくれませんか?
//Sample.java
class Sample{
public static void main(String args[]){
System.out.println("こんにちわ");
}
}
javac Sample.java
java Sample
?????
0735デフォルトの名無しさん
2007/12/09(日) 19:56:180736デフォルトの名無しさん
2007/12/09(日) 19:57:49class Sample{
public static void main(String args[]){
System.out.println("\u3053\u3093\u306b\u3061\u308f");
}
}
0737デフォルトの名無しさん
2007/12/09(日) 20:01:43と、出ました。
0738デフォルトの名無しさん
2007/12/09(日) 20:03:470739デフォルトの名無しさん
2007/12/09(日) 20:04:500740デフォルトの名無しさん
2007/12/09(日) 20:19:510741740
2007/12/09(日) 20:20:210742デフォルトの名無しさん
2007/12/09(日) 20:24:09すみませんでした。
javac は、打ってません。
実行から、javaアプリケーションを押してます。
0743デフォルトの名無しさん
2007/12/09(日) 20:27:080744デフォルトの名無しさん
2007/12/09(日) 20:28:47public static void main(String args[]){
System.out.println(System.getProperty("java.runtime.version"));
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("os.version"));
System.out.println(System.getProperty("os.arch"));
System.out.println(System.getProperty("file.encoding"));
}
}
とりあえず↑の実行結果を貼れ。
0745デフォルトの名無しさん
2007/12/09(日) 20:32:12INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Dec 9, 2007 8:30:57 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Dec 9, 2007 8:30:57 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 818 ms
Dec 9, 2007 8:30:57 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Dec 9, 2007 8:30:57 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
Dec 9, 2007 8:30:58 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 9, 2007 8:30:58 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 9, 2007 8:30:58 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Dec 9, 2007 8:30:58 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Dec 9, 2007 8:30:58 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/40 config=null
Dec 9, 2007 8:30:58 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1382 ms
と、でました。
0746デフォルトの名無しさん
2007/12/09(日) 20:36:310747デフォルトの名無しさん
2007/12/09(日) 20:42:06まだやる気があるなら、>>744 を
0748デフォルトの名無しさん
2007/12/09(日) 20:49:150749デフォルトの名無しさん
2007/12/09(日) 20:58:12Mac OS X
10.4.11
i386
MacRoman
なんか、変わりました。
0750デフォルトの名無しさん
2007/12/09(日) 21:00:380751デフォルトの名無しさん
2007/12/09(日) 22:17:12日曜の夜には居なさそう。
0752749
2007/12/09(日) 22:24:050753749
2007/12/09(日) 22:28:29public static void main(String args[]){
System.out.println("Hello World!");
System.out.println("こんにちわ");
}
}
だと、
Hello World!
?????
と、なってしまいます。
0754デフォルトの名無しさん
2007/12/09(日) 22:35:00単純な話として、文字セットの選択ミス。
eclipse でのテキスト保存に使ってる文字セットが MacRoman で、
日本語を扱えないから、MacJapanese か、Unicode系に変更する必要がある
どうだろうか
0755デフォルトの名無しさん
2007/12/09(日) 22:36:55class Sample{
public static void main(String args[]) throws IOException{
System.out.write("こんにちわ\n\n".getBytes("MacRoman"));
System.out.write("こんにちわ\n\n".getBytes("MS932"));
System.out.write("こんにちわ\n\n".getBytes("EUC-JP"));
System.out.write("こんにちわ\n\n".getBytes("UTF-8"));
System.out.write("こんにちわ\n\n".getBytes("Unicode"));
}
}
↑ちょっとこれの実行結果を貼ってくれ
0757749
2007/12/09(日) 22:44:50?±???…????
§?§?§?§?§?
????????´??°???
??S0?0k0a0?0
と、なりました。><
0758デフォルトの名無しさん
2007/12/09(日) 22:47:49いいでしょうか。
0759デフォルトの名無しさん
2007/12/09(日) 22:56:540760デフォルトの名無しさん
2007/12/09(日) 23:06:00ならないのです。
0761デフォルトの名無しさん
2007/12/09(日) 23:07:02分かったが、コンソールを表示している JVM がMacRoman (≒ISO-8859-1?) にでもなってるのか。
-vmargs -Dfile.encoding=MacJapanese (≒Shift_JIS?) オプション付けて Eclipse 起動してみ
と言いたいが Mac はどうなってるのか分からんw
0762デフォルトの名無しさん
2007/12/09(日) 23:09:25システム構成や使えるプロトコルも明かさないで答えられるわけないだろ。
おまいの財布に近藤さんが入ってるかなんて誰も確認できないのと同じ。
0763749
2007/12/09(日) 23:24:44Applications/eclipse/eclipse.app/Contents/MacOS$ls
eclipse
eclipse.ini
######ファイル名:eclipse.ini#####
-showsplash
org.eclipse.platform
-vmargs
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Xms40m
-Xmx256m
-XX:PermSize=40m
-XX:MaxPermSize=256m
-javaagent:/Applications/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=no.mnemonic
-Dorg.eclipse.swt.internal.carbon.smallFonts
GUIで、eclipse.appをダブルクリックしたら、eclipse3.3が起動します。
なにか、わかりましたら、おしえてください。><
0764デフォルトの名無しさん
2007/12/09(日) 23:35:340765デフォルトの名無しさん
2007/12/09(日) 23:37:50IBM の developerworks なわけだが。
ttp://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-osxjava/index.html#d
Eclipseでは保存するソースファイルの文字セットをプロジェクトやファイル等、個別に指定することが出来る。
まあ、ぶっちゃけ、UTF-8 に設定して、コンパイルでも UTF-8 を指定して使ってみてはいかがかな、と。
0766749
2007/12/09(日) 23:43:47どうもありがとうございます。
参考にします。
>>761のオプションを頼りにしたら、出来ました。
eclipse.iniファイルに、-Dfile.encoding=UTF-8を付け加えて、eclipse3.3を再起動させて、>>755を実行させたら、以下のように表示しました。
?????
????????
?????d?
こんにちわ
??S0?0k0a0?0
明日、月曜日なのに、本当にご協力ありがとうございました。
0767749
2007/12/10(月) 00:08:49import java.io.*;
class Sample{
public static void main(String args[]) throws IOException{
System.out.write("こんにちわ\n\n".getBytes("MacRoman"));
System.out.write("こんにちわ\n\n".getBytes("MS932"));
System.out.write("こんにちわ\n\n".getBytes("EUC-JP"));
System.out.write("こんにちわ\n\n".getBytes("UTF-8"));
System.out.write("こんにちわ\n\n".getBytes("Unicode"));
System.out.println(System.getProperty("java.runtime.version"));
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("os.version"));
System.out.println(System.getProperty("os.arch"));
System.out.println(System.getProperty("file.encoding"));
System.out.println("Hello World!");
System.out.println("こんにちわ");
}
}
?????
????????
?????d?
こんにちわ
??S0?0k0a0?0
1.5.0_07-164
Mac OS X
10.4.11
i386
MacRoman
Hello World!
?????
0768デフォルトの名無しさん
2007/12/10(月) 00:10:05今日も格闘中
0769デフォルトの名無しさん
2007/12/10(月) 00:15:09明日も机上の空論
0770デフォルトの名無しさん
2007/12/10(月) 00:19:56さっきのは Eclipse ワークベンチの文字コードで、あんたが今動かしたプログラムの文字コードは
まだ MacRoman のままなんだわ。
[実行]-[実行ダイアログを開く]-[Javaアプリケーション]-[Sample](多分)-[引数]-[VM引数] に
-Dfile.encoding=UTF-8
と入れてみ。
0771749
2007/12/10(月) 00:31:21おお!できました。
ありがとうございます。
これって、実行時に毎回入力しないといけないっぽいですね・・・。
一度設定して実行で、普通に表示する方法って無いですかね?
0772デフォルトの名無しさん
2007/12/10(月) 00:38:42Mac 環境は分からん。Unix 系だからシェルの環境変数 LANG か
LC_CTYPE を ja_JP.UTF-8 に設定するんじゃないのか。Mac 関連板で聞け。
0773749
2007/12/10(月) 00:48:53LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL="ja_JP.UTF-8"
こうなっています。
0774Round Trip
2007/12/10(月) 11:37:21>>731様、アドバイスありがとうございます。
返答が遅くなって申し訳ありません。
いろいろと試してみた結果、よくわかりません…。
コンストラクタ内で同クラスを、Listener登録と同時にスレッド化しているのですが
その際の処理順序によって動作の如何が変化します。
setFocusable(true)とスレッドの生成の後、スレッド開始前にaddKeyListener(this)をした場合は
keyListenerが動作します。
またこの場合でも、コンパイル→実行(キー反応なし)→コンパイル→実行(キー反応あり)
という手順を踏まないと、正常に動作しません。
何がなんだかわからないのですが、
原因や対処法など、何かわかる方が居られましたら
アドバイスをお願いします。
0775デフォルトの名無しさん
2007/12/10(月) 11:40:180776デフォルトの名無しさん
2007/12/10(月) 11:52:27public class TestPanel extends JPanel implements KeyListener {
TestPanel() {
}
public void keyTyped(KeyEvent e) {
System.err.println(e);
}
public void keyPressed(KeyEvent e) {
System.err.println(e);
}
public void keyReleased(KeyEvent e) {
System.err.println(e);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TestPanel panel = new TestPanel();
panel.addKeyListener(panel);
panel.setFocusable(true);
JFrame frame = new JFrame();
frame.add(panel);
frame.setSize(100, 100);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
0777デフォルトの名無しさん
2007/12/10(月) 12:08:10確かにソース示せ、ですが…複合要因かなぁ
Swing継承クラスのコンストラクタ内でスレッド化…なんて、怖い単語が見えてますし
0778デフォルトの名無しさん
2007/12/10(月) 12:42:49int read(byte[] b, int off, int len)を使うと入力ストリームの位置がlenバイトづつ
進んでしまうので入力ストリーム位置を初期化したいのですがどうしたらよいですか?
例
abcdefg から3バイトづつ読み込むとき
1 abc
2 bcd
3 cde
.
.
.
としたいです。。。
0779デフォルトの名無しさん
2007/12/10(月) 12:52:23while(true) {
byte[] bytes = new bytes[3];
int length = rad.read(bytes, offset, bytes.length);
if(length == -1) break;
}
0780デフォルトの名無しさん
2007/12/10(月) 13:02:37文字列処理はある程度 1-4 kBぐらい? 一括読みしてから作業しようぜ。
入出力は重めの処理だぞう。まぁ気にならないと思うけど。
読み込み位置を変更する seek が標準APIで出来るのは、>>779のだけだっけね。
0781Round Trip
2007/12/10(月) 13:20:33なぜか動いてしまってありゃぁ…?
もうちょっとソースを見直してみることにします。
素のままでは貼る勇気がでません。
>>777
Swing継承クラスのコンストラクタ内でスレッド化って
何が怖いのでしょうか。
良ければ教えてください。
0782デフォルトの名無しさん
2007/12/10(月) 13:24:37戻したい量にあわせて適切にバッファサイズを指定して作成したプッシュバック可能なストリームで
入力ストリームをラップしてやればできなくもないけどまとめて読んで処理したほうがたぶんいいよ
0783デフォルトの名無しさん
2007/12/10(月) 13:31:57何の為にスレッドを作っているのか想像もつかないのが怖いんだよ
ソース張らないならば誰もおまえさんのソースの問題点を指摘できないぜ
つまり、おまえさんは学べないって事。
0784デフォルトの名無しさん
2007/12/10(月) 13:37:21使えそうなフリーのライブラリはありますか
0785デフォルトの名無しさん
2007/12/10(月) 13:40:310786Round Trip
2007/12/10(月) 14:43:57お説ごもっともです。
ソースを以下に添付します。
よろしくお願いします。
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.event.*;
import javax.swing.*;
public class DynamicPanel extends JPanel implements Runnable,KeyListener{
//----------クラス定数----------
public static final int DEFAULT_WIDTH = 500;
public static final int DEFAULT_HEIGHT = 400;
public static final int DEFAULT_WAIT = 50;
//----------クラス変数----------
private int waitSec;
private Thread mainLoop;
//----------コンストラクタ----------
public DynamicPanel(){
setPreferredSize(new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT));
this.waitSec = DEFAULT_WAIT;
this.commonInit();
}
続きます。
0787Round Trip
2007/12/10(月) 14:44:40private void commonInit(){
this.setFocusable(true);
this.addKeyListener(this);
mainLoop=new Thread(this);
mainLoop.start();
}
//メインループ
public void run(){
while(true){
runInterface();
repaint();
try{
Thread.sleep(waitSec);
}catch(Exception e){
e.printStackTrace();
}
}
}
//描画処理
public void paintComponent(Graphics g){
super.paintComponent(g);
paintInterface(g);
}
続きます。
0788Round Trip
2007/12/10(月) 14:46:12//状態遷移
protected void runInterface(){}
//実行する描画処理
protected void paintInterface(Graphics g){}
//----------キー入力----------
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
System.out.println("Get Key:" + e.getKeyCode());
}
//----------メイン----------
public static void main(String args[]){
Window win = new Window();
DynamicPanel dp = new DynamicPanel();
win.setPanel(dp);
System.out.println("main end");
}
}
class Window extends JFrame{
public Window(){
setTitle("Default");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void setPanel(JPanel panel){
Container contentPane=getContentPane();
contentPane.add(panel);
pack();
}
}
以上です。
0789デフォルトの名無しさん
2007/12/10(月) 15:04:16http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/package-summary.html#threading
想像でしかないが、キーイベントを受け取って、その値を描画するようなプログラムなのか?
そうだとしたら、キーを受け取ったイベント処理で再描画させればいい(ただし、EDTを考慮する)
ポーリング(Thread等で定期的になにか実行する)する必要があるのかい?
前のレスでも出ているが、addKeyListenerはサンプルソースを参考にnewが終わった後にやるべき。
Threadを作るのも同じようにnewの後の方が危険が少ない
0790デフォルトの名無しさん
2007/12/10(月) 15:49:13// テキストの出力
$p->setfont($font, 24.0); // フォント及びサイズを指定
$p->set_text_pos(100, 700); // テキストの位置を指定
$p->show("ハローワールド!"); // テキストを出力
$p->continue_text("(ようこそPDFlibの世界へ)"); // 次行に出力
上記のようにテキストを出力しているのですが
このテキストを半透明で出力することはできるでしょうか?
ソースはJavaでなくて申し訳ありません。
0791デフォルトの名無しさん
2007/12/10(月) 15:50:25参考になりました。ありがとうございます。
0792Round Trip
2007/12/10(月) 16:00:13Swing自体がイベント消化用のThreadを持っているから
スレッドセーフではない、という事でしょうか…?
自分のプログラムは、ウィンドウ表示の際の横着用です。
継承して、runInterface()とpaintInterface()をオーバーライドすれば
とりあえずウィンドウが表示されて、キーボード操作を受け付ける、という。
KeyListenerにある処理は試験用のもので、
本当は内部変数などにキーボードの入力状態を保存し、上記の関数内で使用するつもりでした。
あと、addKeyListener()をnew終了後にするということですが、
試しても結果に変化が見られなかったので、ほったらかしです。
現状の問題とは直接関連が無いようなので、あえて触らないでいます。
0793デフォルトの名無しさん
2007/12/10(月) 16:13:30int型の配列に今要素として
a[0]=1 a[1]=2 a[2]=3 a[3]=4
がはいっているとして、これをひとつの要素1234にするにはどうすればいいですか?
0794デフォルトの名無しさん
2007/12/10(月) 16:21:29その方針はバケツでウランと一緒だ
今まで上手くいってるから今後も上手くいくと勘違いしている
0795デフォルトの名無しさん
2007/12/10(月) 16:30:14ひとつの要素にするってのが、
10進数でa[0]を1000の位、a[1]を100の位、a[2]を10の位、a[3]を1の位とする整数値を求めるって意味なら、
int b = 0;
for (int i = 0; i < 4; i++) {
b *= 10;
b += a[i];
}
繋いで一つの文字列にするって意味なら、
String b = "" + a[0] + a[1] + a[2] + a[3];
とでもすれば?
0796デフォルトの名無しさん
2007/12/10(月) 16:31:15int result = a[0]*1000 + a[1]*100 + a[2]*10 + a[3]
0797デフォルトの名無しさん
2007/12/10(月) 16:41:02認識する対象の情報は必要ないと思いますが
0798デフォルトの名無しさん
2007/12/10(月) 16:47:34もしかして人の顔を認識するアルゴリズムで道路の端を認識して自動走行できると思ってる?
0799デフォルトの名無しさん
2007/12/10(月) 16:49:03画像認識は良くわからないけど、一般名詞ぽいし、別に具体的な例を挙げなくても、
どういう認識したいかによって色々あるんじゃないのかな
0800デフォルトの名無しさん
2007/12/10(月) 16:49:320801デフォルトの名無しさん
2007/12/10(月) 16:55:30それとも知らないだけ?
0802Round Trip
2007/12/10(月) 16:55:39>バケツウラン
う。
Listener処理の結果を他のスレッドに持ち出すのはそんなに危険なのですか?
それとも、コーディングが面倒という理由だけで継承を使うことでしょうか。
そこまで言われる危険性が理解できないのですが、
どこの処理を指しておられるのでしょうか。
なにしろ、我流なもので…。
ご指導お願いします。
0803デフォルトの名無しさん
2007/12/10(月) 17:12:33不完全な状態のインスタンスの参照を他へ渡した場合、頻繁に問題が顕在化するってことはないんじゃないかな。
>>792が試したようにたいてい上手く動いているように見えるし、問題にならないことも多い。
でも、それはたまたま上手く動いたと考えて、潜在的に問題になる可能性があって、それを自分が知っているのなら、
避けられるのなら避けておいた方がのちのちためになると思うよ。
スレッドに関しては、Swingはまさにスレッドセーフではないので、
気をつけてコーディングしないと思ってもみない挙動を引き起こす。
0804デフォルトの名無しさん
2007/12/10(月) 17:18:150805デフォルトの名無しさん
2007/12/10(月) 17:24:130806デフォルトの名無しさん
2007/12/10(月) 17:26:150807デフォルトの名無しさん
2007/12/10(月) 17:34:39どうにも、Swingの表面だけ使って自作のウィンドウシステムを作ろうとしているように見えてしかたない
802が実現したいと思っていることは多分、Swingを素直に使うだけで簡単に実現できるはず
0808デフォルトの名無しさん
2007/12/10(月) 17:40:40初心者が混乱するからやめた方がいいよ
0809Round Trip
2007/12/10(月) 17:58:03ああ、既存の問題点の放置は良くないということですか。
了解しました。以後、気をつけます。
>>807
仰るとおり、自分用のウィンドウシステムそのものです。
情報源が主にネットの入門サイトなのです。
以前、ろくでもない入門書を掴まされて以来
相当のことがないとその手の本は買う気になれないのです。
なので、良い本があれば教えていただけませんか?
0810デフォルトの名無しさん
2007/12/10(月) 18:14:58寄せ集めで作ったにしちゃまぁまぁだが、問題起きたときに出る情報が少なすぎ。
プロダクトとして成り立ってはいるが、中身はまだまとまりきれてない、WebSphere なら
2.x か 3 前半くらいを使ってる気分。
0811デフォルトの名無しさん
2007/12/10(月) 19:45:35使いまくりになるのは仕方がないと思ってあきらめるしかないの?
0812デフォルトの名無しさん
2007/12/10(月) 20:05:260813デフォルトの名無しさん
2007/12/10(月) 20:37:00言語規定的にはどのようなことが起こるかは規定されているが、
組み合わせ爆発で、人の想像できる範疇じゃない。
実質的に、それは何が起こっても不思議じゃないプログラムとなる。
0814デフォルトの名無しさん
2007/12/10(月) 21:03:23あんたがたプログラマーの作る奴はいつも暴走する
0815デフォルトの名無しさん
2007/12/10(月) 21:57:54まるで自分がプログラマーじゃないような言いぐさだな。
マルチスレッドは、根本的に言語の構造がシングルスレッドを前提としてるから混乱する。
どこぞでマルチスレッド用の言語を開発してたが、それだけでなくプログラミングスタイルそのものを変えないと、
本質的には解決せんだろう。
0816デフォルトの名無しさん
2007/12/10(月) 22:04:44プログラミングスタイル云々を変えてもここが直るかどうかは疑問かも。
0817デフォルトの名無しさん
2007/12/10(月) 22:46:27NoCLassDefinitionで動きません。
java -classpath jarのパス;jarのパス2
とパスを通しているのですが、何か他に考えられる原因はあるでしょうか?
0818デフォルトの名無しさん
2007/12/10(月) 22:47:290819デフォルトの名無しさん
2007/12/10(月) 22:48:530820デフォルトの名無しさん
2007/12/10(月) 22:51:190821デフォルトの名無しさん
2007/12/10(月) 22:53:150822デフォルトの名無しさん
2007/12/10(月) 23:24:160823デフォルトの名無しさん
2007/12/10(月) 23:29:100824デフォルトの名無しさん
2007/12/10(月) 23:36:42クラスパス(?)から読み込みたいです。
どうやったらいいでしょうか?
やりたいこと:
{prj_top}/src/jp/co/.../hoge/HogeTest.java
{prj_top}/src/jp/co/.../hoge/HogeTestData.txt
みたいなファイル管理構成にしていて、Eclipseでビルドすれば、それぞれ以下に配置される。
{prj_top}/classes/jp/co/.../hoge/HogeTest.class
{prj_top}/classes/jp/co/.../hoge/HogeTestData.txt
もちろん {prj_top}/classes には CLASSPATH が通っている。
HogeTest.class のなかから HogeTestData.txt を、最終的には java.io.File で読み込みたい。
(最終的に String 型の変数で、物理パスが取れるのでもかまわないです)
{prj_top}は、開発者によってディレクトリが違うので、HogeTest.class のなかで物理パスは指定できない。
ようするに JUnit で、開発者が誰でもコードを変えずにテストが動くようにしたいです。
URL url = new URL("file:./jp/co/...hoge/HOgeTestData.txt");
File file = new File(url.getFile());
String path = file.getPath()
みたいなことをやってみましたが、変数 path の中身は
.\jp\co\...hoge\HogeTestData.txt
みたいになってしまい、困っています。
0825デフォルトの名無しさん
2007/12/10(月) 23:38:36特にテクスチャを正確に表現出来ればいいのですが。
0826デフォルトの名無しさん
2007/12/10(月) 23:42:170827デフォルトの名無しさん
2007/12/10(月) 23:49:03ClassLoader#getResourceAsStream
Class#getPackage
String#replaceAll
この辺を javadoc で引けば分かると思うよ
0828デフォルトの名無しさん
2007/12/10(月) 23:52:09エディタで保存すれば java という形式で保存できます。
コンパイルすれば class という形式で保存できます。
jar コマンドを使えば jar という形式で保存できます。
0829デフォルトの名無しさん
2007/12/11(火) 00:06:02失礼。具体的に言えばVRMLのような形式で、ということです。
0830デフォルトの名無しさん
2007/12/11(火) 00:09:530831デフォルトの名無しさん
2007/12/11(火) 00:15:33<%
Cookie cookies[]=request.getCookies();
request.setCharacterEncoding(Windows-31J);
String str=null;
if(cookies!=null)
{
for(int i=0;i<cookies.length;i++)
{
if(cookies[i].getName().equals(omit))
{
str=URLDecoder.decode(cookies[i].getValue(),Windows-31J);
}
%>
このstrを表示しようとすると、常にnullになってしまいます。
0832デフォルトの名無しさん
2007/12/11(火) 00:18:24Cookie newCookie=new Cookie(omit,URLEncoder.encode(id,Windows-31J));
newCookie.setMaxAge(60); response.addCookie(newCookie);
です。実際にC:\Documents and Settings\USER\Cookies
を見ると、そのクッキーのファイルは生成されているようなのですが、
何が問題なのでしょうか?
0833デフォルトの名無しさん
2007/12/11(火) 00:25:59実際はちゃんと"omit"とか"Windows-31J"になってます。
0834デフォルトの名無しさん
2007/12/11(火) 00:36:330835デフォルトの名無しさん
2007/12/11(火) 00:57:35動的にテクスチャを張り替えるにはどうしたらいいですか?
どなたか教えてください><
0836デフォルトの名無しさん
2007/12/11(火) 01:00:070837デフォルトの名無しさん
2007/12/11(火) 03:37:29class FOR{
public static void main(String args[]){
for(int=0;i<10;i++){
System.out.println(i);
System.out.println(i+"FOR"); //この行を、このfor文の中で、一回だけ表示させることはできますか?
}
}
}
0838デフォルトの名無しさん
2007/12/11(火) 03:49:17System.out.println(i + " FOR");
}
0839デフォルトの名無しさん
2007/12/11(火) 04:31:19なるほど。。。
if文使えば良いんですね。
ありがとうございます。
もし、このような場合、どうやればいいですか?
//FOR.java
class Sample2{
public static void main(String args[]){
String[] str1="H e l l o W o r l d ! H e l l J a v a !".split(" ");
for(int i=0;i<str1.length;i++){
String[] str2=str1[i].split("!");
for(int j=0;j<str2.length;j++){
if(j==0){
System.out.println(str2[j]+"FOR");//この行が繰り返し表示されるのですが、1回だけ表示させたいです。
}
System.out.println(str2[j]);
}
}
}
}
0840デフォルトの名無しさん
2007/12/11(火) 04:35:33クラスファイル名間違えました。
正
class FOR{
誤
class Sample2{
0841デフォルトの名無しさん
2007/12/11(火) 04:37:25フラグ使えばいいだろ。
bool msg = true;
while ( ... ) {
if (msg) { System.out.println("msg"); msg = false; }
}
0842デフォルトの名無しさん
2007/12/11(火) 04:56:47if(i == 0 && j == 0){
System.out.println(str2[j] + "FOR");
}
0843デフォルトの名無しさん
2007/12/11(火) 04:57:15あ、なるほど。
なんとか出来そうです。
ありがとうございます。
0844デフォルトの名無しさん
2007/12/11(火) 04:59:58うぉおおおおお
すげええ
これはシンプルwww
0845デフォルトの名無しさん
2007/12/11(火) 06:31:31修正は簡単だが嫌がらせ的だな。
0846デフォルトの名無しさん
2007/12/11(火) 10:48:32バイナリでファイルに書き込むにはどうしたらいいですかね?
byte型だと、-0x80〜0x7Fしか直接格納できないし、
intの下位8ビットを使いたいけど、8ビット分だけをファイルに
書く方法がわからん。。。
0847デフォルトの名無しさん
2007/12/11(火) 10:57:190848デフォルトの名無しさん
2007/12/11(火) 11:04:07java.io.OutputStream の write(int)
0849デフォルトの名無しさん
2007/12/11(火) 11:10:54�d!試してみます。
0850849
2007/12/11(火) 11:16:08これをファイルに書き込んだら、
0x00, 0x7F, 0x80, 0xFF
となったので、実現したかったことができそうです。
重ねてありが�d!
0851デフォルトの名無しさん
2007/12/11(火) 11:24:110852デフォルトの名無しさん
2007/12/11(火) 11:30:29Java の char は何bit型だ〜
てか、文字セットが絡んできて純粋な数値演算だけじゃ出力できないじゃん
0853デフォルトの名無しさん
2007/12/11(火) 11:31:39ここJavaのスレだった
C#と間違えていたよん・・・・
0854デフォルトの名無しさん
2007/12/11(火) 12:05:58new Locale("mn", "mn").getDisplayName() で 「Mongolian (Mongolia)」 が返ってくるのは何で?
0855デフォルトの名無しさん
2007/12/11(火) 12:08:520856デフォルトの名無しさん
2007/12/11(火) 14:07:15piyo array[] = Arrays.asList(hoge.get().toArray(new piyo[0]));
みたいなことをしないとダメですか? もっと手軽な方法はありますでしょうか?
0857デフォルトの名無しさん
2007/12/11(火) 14:16:44hoge.get() が返すインスタンスによる。
実は piyo[] を返してるけど、過去のAPIとの互換性で型が Object[] になってるだけとかなら
piyo[] array = (piyo[])hoge.get(); できるし。
インスタンスが Object[] だと、新しく piyo[] 作ってそっちにコピーするしかない。
0858デフォルトの名無しさん
2007/12/11(火) 14:35:31ありがとうございます。
hoge.get()が返す実際のインスタンスはpiyo[]のはずなんですが
仰るようにキャストをしてみるとどうもClassCastExceptionが発生してしまいます…。
自分のキャスト理解が浅いせいですが、時間も無いので、リスト化したあと配列に変換する形にしておきます。
なおhoge,get()とはorg.eclipse.jface.viewers.CheckboxTableViewer.getCheckedElements()
を指していました。
0859デフォルトの名無しさん
2007/12/11(火) 15:10:580860デフォルトの名無しさん
2007/12/11(火) 15:25:050861デフォルトの名無しさん
2007/12/11(火) 15:36:29ああ、最初は良くやるのよね。これできるだろうみたいな。
まぁ Collection.toArray もあることだし。
ちなみに、それの引数の配列は長さが足りてないと、
新しい配列を、リフレクションを使って、生成し直すので注意。
0862デフォルトの名無しさん
2007/12/11(火) 16:28:34個々の要素の型じゃなくて、配列の型の話だぜ。>>859 も言ってるけど。
String typename = hoge.get().getClass().getName(); して
typename が "[Ljava.lang.Object;" だったら配列は
Object[] のインスタンスであって piyo[] のインスタンスではない。
0863デフォルトの名無しさん
2007/12/11(火) 16:39:59ありがとうございます。
配列型には型階層がなくてそれぞれが独立した型と思ったほうがいいんですね。
なおgetClass()してみたところ、型の名前は全てpiyoになってました。
>>860
ご指摘ありがとうございます。
>>861
ありがとうございます。
Object obj[] = hoge.get();
piyo array[] = Arrays.asList(obj).toArray(new piyo[obj.length]);
としてみます。
0864デフォルトの名無しさん
2007/12/11(火) 16:49:46> なおgetClass()してみたところ、型の名前は全てpiyoになってました。
それは操作間違って個々の要素の型を取ってるか、
Object[] に(piyo[]じゃなくて)piyo型のインスタンスをつっこめるJava以外の言語使ってるかどっちかだな。
0865デフォルトの名無しさん
2007/12/11(火) 17:02:23Can I find a job? Can I make money tonight? I am neet long long time
就職ていう言葉なんて 知らなかったよね
Can I find a job? Can I make money tonight? I am neet long long time
一人きりだね 今夜もまた2ちゃんできるよね
Lalala... Lalala... Lalala... Lalala...
永く…永く… いつまでも雇っていてくれるどこかを
探して見つけてクビになってまた探して
頑張った勇気出した でも時におそろしい ブラックもあった詐欺にもあった
どうしようもない風に吹かれて
0866デフォルトの名無しさん
2007/12/11(火) 17:03:41すみません、仰るとおり個々の要素の型を取ってました…。
配列型をgetClass()してみたところ[Ljava.lang.Object;でした。
ある配列型を別の配列型に"キャスト"するのは不可能なんですね。勉強になりました。
0867デフォルトの名無しさん
2007/12/11(火) 17:14:20> ある配列型を別の配列型に"キャスト"するのは不可能なんですね。
//こっちはできる。
Object[] array = new String[0];
String[] strArray = (String[])array;
//これはできない。
Object[] array = new Object[0];
String[] strArray = (String[])array; //コンパイルは通るけど実行時に ClassCastException になるはず
で、今回は下の方だったから無理なだけ。
0868850
2007/12/11(火) 17:16:03こんなコードになりますた。
int[] src = { 0x00, 0x01, 0x7E, 0x7F, 0x80, 0x81, 0xFE, 0xFF };
FileChannel ch = new FileOutputStream(new File("C:/test.bin")).getChannel();
byte[] datas = new byte[src.length];
for (int i = 0; i < src.length; i++) {
datas[i] = src[i] < 0x80 ? (byte) (src[i]) : (byte) (src[i] - 0x100);
}
ByteBuffer buff = ByteBuffer.allocateDirect(datas.length);
buff.put(datas).rewind();
ch.write(buff);
ch.close();
ファイルをバイナリエディタで開いたら、ちゃんと目的のバイト列で書かれれました。
0869デフォルトの名無しさん
2007/12/11(火) 17:29:37「datas[i] = (byte)src[i];」で動くんでは。
んで、「data」は非可算名詞なので、datas にはならない。
0870デフォルトの名無しさん
2007/12/11(火) 17:45:530871デフォルトの名無しさん
2007/12/11(火) 17:50:56動きますた!ありが�d!
ちょっと複雑に考えすぎた。。。orz
0872デフォルトの名無しさん
2007/12/11(火) 18:09:48たしかdatusだっけ?TOEICの問題ででた気がする。
0873デフォルトの名無しさん
2007/12/11(火) 18:10:520874デフォルトの名無しさん
2007/12/11(火) 18:41:090875デフォルトの名無しさん
2007/12/11(火) 18:45:160876デフォルトの名無しさん
2007/12/11(火) 18:55:17その中で七並べを作っています。
テーブルクラスにあるテーブルに置かれたカードを見るというメソッドについてこう実装しました。
フィールドを返すだけです。
public Card[][] getCards()
{
return table_;
}
しかしこれだとtable_の内容が変更される場合があるので、
以下のようにコピーして返すよう改良しました。
public Card[][] getCards()
{
Card[][] table = new Card[Card.SUIT_NUM][Card.CARD_NUM];
for (int suit = 0; suit < Card.Suit_NUM; suit++) {
System.arraycopy(table_[suit], 0, table[suit], 0, Card.CARD_NUM);
}
return table;
}
その後のコラムにこのような事が書いてあります。
>実はこの方法も実はあまり良い方法とはいえない事があります。
>この方法ではgetCardsメソッドを呼び出すたびに新たな配列のコピーが生成されます。
>本書で扱っているような七並べレベルのプログラムでは何の問題もありませんが
>サーバサイドで24時間にわたって動き続けなければならないアプリケーションでは
>GCでシステムが一時的に停止して致命的な問題を引き起こしてしまうこともあるのです。
>不用なコピーを作らないようにする方法としては、table_に対する読み取りアク
>セスのみを提供するインターフェースを返すといった方法が挙げられます。
この「table_に対する読み取りアクセスのみを提供するインターフェース」
というのが想像ができません。
実装するとしたら具体的にどういったコードになるんでしょうか?
簡単なコードを示して貰えれば嬉しいです。
0877デフォルトの名無しさん
2007/12/11(火) 19:05:38public void getCards(Card[][] table_out)
{
for (int suit = 0; suit < Card.Suit_NUM; suit++)
{
System.arraycopy(table_[suit], 0, table_out[suit], 0, Card.CARD_NUM);
}
}
0878デフォルトの名無しさん
2007/12/11(火) 19:11:43この程度の本見れば分かる事聞いてるようじゃ他の言語にした方がいいんじゃないの?
0879876
2007/12/11(火) 19:41:57今と同じ方法のようですが、それで不用なコピーが作られないようになるのでしょうか。
上手くいえないのですが、どのようなインターフェースを作って
それをどう使えば良いのか分かりません。
0880デフォルトの名無しさん
2007/12/11(火) 20:08:55インターフェイスじゃないけど。
java.util.List<Card> table;
public java.util.List<Card> getCards(){ return java.util.Collections.unmodifiableList(table); }
0881デフォルトの名無しさん
2007/12/11(火) 20:27:39だろ、ふつう
0882876
2007/12/11(火) 20:35:15ほ〜、便利な物があるんですね。
レスありがとうございました。
インターフェースで実現するとしたら、どういった感じになるんでしょうか。
0883デフォルトの名無しさん
2007/12/11(火) 20:38:30マーキング以上の役割(実行に影響する役割)を持ちますが、どのように実装されているのか興味があります。
しかし、どのクラスが実装しているか見当がつかないため、参考にするためのサンプルを見つけることができません。
どなたかご存知の方、教えていただけないでしょうか?
0884デフォルトの名無しさん
2007/12/11(火) 20:47:00「コンパイルエラーを出す処理」 は Java コンパイラがやってるだけで Override アノーテーションに
実装されているわけではない。アノーテーションはマーキングのみで、それを認識するプログラムが
何かアクションをする。java.lang.Override, java.lang.annotation.* でも見て見れ。
0885デフォルトの名無しさん
2007/12/11(火) 20:50:18http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/apt/index.html
0886デフォルトの名無しさん
2007/12/11(火) 20:54:29便乗して聞きたいんだけど apt って具体的に何をするためのツールなの?
0887デフォルトの名無しさん
2007/12/11(火) 21:06:58APTはソースに書かれてるアノテーションを処理する。
自分で作った com.sun.mirror.apt.AnnotationProcessorFactory の実装クラスの名前を渡してやると、
それを使ってアノテーションを解釈&処理してくれる。
肝心の処理は自分で書かないとだめだけど、ソースの読み込みとかはAPTがやってくれる。
カスタムドックレットを書いて javadoc 使うのと似たような感じ。
JDK6以上使えるなら javac と javax.annotation.processing と Tree API 使うほうが融通が利くけど。
0888デフォルトの名無しさん
2007/12/11(火) 21:11:43thank you
「ソースを自動生成」 厨に見つからないようにしておこう。
0889デフォルトの名無しさん
2007/12/11(火) 21:15:000890889
2007/12/11(火) 21:29:01別の質問をさせて下さい
0891デフォルトの名無しさん
2007/12/11(火) 21:31:44それを認識するプログラムのほうがどうなってるのかを知りたいんです。
コンパイラ以外にはないんでしょうか。
>>885
ありがとうございます。眺めてみます。
0892デフォルトの名無しさん
2007/12/11(火) 21:33:53java.lang.Class や java.lang.reflect.Method 調べれ。
0893889
2007/12/11(火) 21:36:14Membersというイテラブルなクラスを作ってそのインスタンスをメンバー変数にするのがいいのか、
List変数にMemberクラスを押し込んで、それをgetMembers()で取得するほうがいいのか
どちらが理想的な設計ですか?
Memberコレクションを取得するとき多少処理が必要なのでクラスを作ったほうがいいとは
思うのですが、getMembers()の部分に書いても何とかなる量なので迷ってます
0894デフォルトの名無しさん
2007/12/11(火) 21:39:080895889
2007/12/11(火) 21:44:04そうですか・・・、わかりました。
ありがとうございます。
0896デフォルトの名無しさん
2007/12/11(火) 21:53:13ある例外を処理したいのですがそのメソッド1に複数の例外が発生しており
Exceptionで処理しております。そのメソッド1はclose()しなければいけないので
必ずtry〜fanallyで囲みたいのです。かつそのメソッド1からの例外に特殊処理したい。
そのような状況になったのでtryで囲みつつ、throwしたのですが例外が発生したとき
メソッド1の呼び出しもとにはその例外がthrowされるのでしょうか?
0897デフォルトの名無しさん
2007/12/11(火) 21:59:500898デフォルトの名無しさん
2007/12/11(火) 22:02:11close()したあとリスローすれば?
0899デフォルトの名無しさん
2007/12/12(水) 05:29:460900デフォルトの名無しさん
2007/12/12(水) 05:33:45結果はどうでも良い照会や更新やるため?
0901デフォルトの名無しさん
2007/12/12(水) 09:28:47>>896
Exceptionで処理(throws? catch?)スンナ
0902デフォルトの名無しさん
2007/12/12(水) 11:30:34状況が複雑なことと、エスパーが必要であることは関係ないぞ
ほとんどはプログラムよりも日本語の問題だから。
> tryで囲みつつ、throwした
これは>>898 の再スローのことかね…で、それに続く、
> その例外
これはどの例外のことかね。最初の「ある例外」のことなのか…
throwした、という部分のことなのか…
まぁ、例外というのは、一度 catch されたらそこでお仕舞い。
JDK1.4 からは、再スローする際に、必要なら原因例外を保持させることもできる。
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/Throwable.html
0903デフォルトの名無しさん
2007/12/12(水) 12:24:16偉そうに嘘書くな
try {
hoge();
} catch(HogeException e) {
handleException(e);
throw e;
}
0904デフォルトの名無しさん
2007/12/12(水) 12:35:28> ある例外を処理したいのですがそのメソッド1に複数の例外が発生しており
> Exceptionで処理しております。
メソッド1の中で AException, BException, ... の例外処理を記述しています。
> そのメソッド1はclose()しなければいけないので必ずtry〜fanallyで囲みたいのです。
> かつそのメソッド1からの例外に特殊処理したい。
public void メソッド1(){
try{
...
} catch(AException ex){
ex.特殊処理(); // あるいは単に 特殊処理()
} finally {
this.close()
}
}
のように書かなければ行けない。
> そのような状況になったのでtryで囲みつつ、throwしたのですが例外が発生したとき
> メソッド1の呼び出しもとにはその例外がthrowされるのでしょうか?
} catch(AException ex){
ex.特殊処理(); // あるいは単に 特殊処理()
throw ex;
} finally {
と書いたのですが、ex はメソッド1の呼び出し元に正しく伝播されるのでしょうか?
答え: YES
0905デフォルトの名無しさん
2007/12/12(水) 12:41:20> そのメソッド1はclose()しなければいけないので必ずtry〜fanallyで囲みたいのです。
> かつそのメソッド1からの例外に特殊処理したい。
public void メソッド1() throws AException, BException, ...{
try{
...
} finally {
this.close()
}
}
また、呼び出し元は以下のようにしています。
try{
メソッド1()
} catch(AException ex){
特殊処理();
} catch(...
> そのような状況になったのでtryで囲みつつ、throwしたのですが例外が発生したとき
> メソッド1の呼び出しもとにはその例外がthrowされるのでしょうか?
catch のない try-finally 内で例外を throw した場合、その例外は呼び出し元に伝播されるのでしょうか?
答え: YES
0906デフォルトの名無しさん
2007/12/12(水) 12:56:47try catch で例外でて、さらに finally でも別の例外でたらどーすんだろ?
0907902
2007/12/12(水) 13:00:10失礼。
catchした例外が終わりってのは大嘘でした。
再スローてと、上位レイヤーに投げることばかり想定してたし
あーあもう嘘教えてるし…オトナシクシテイヨウ。
0908デフォルトの名無しさん
2007/12/12(水) 13:19:29マはdisられて成長していくものだよ
0909デフォルトの名無しさん
2007/12/12(水) 14:21:05TreeMapに入れたいのですが、どのような手法がもっともスマートでしょうか?
DOMやSAXのどれを使うかなども含めて教えていただけると幸いです。
----------商店街店一覧
<商店街>
<果物屋></果物屋>
<今期売上>923000</今期売上>
<敷地面積>300</敷地面積>
<電器屋>
<今期売上>826000</今期売上>
<敷地面積>200</敷地面積>
</電器屋>
<商店街>
...
--------果物屋商品一覧
<果物屋の商品>
<リンゴ>
<価格>100</価格>
<重さ>250</重さ>
</リンゴ>
<梨>
<価格>150</価格>
<重さ>220</重さ>
</梨>
</果物屋の商品>
...
0910デフォルトの名無しさん
2007/12/12(水) 14:21:59ツリーとして構成したいと考えています。
+商店街
+商店街のパラメータ(総面積、駅からの距離、etc)
|
+商店リスト
+商店のパラメータ(店1つの面積、位置、etc)
|
+商品リスト
+商品のパラメータ(価格、etc)
0911デフォルトの名無しさん
2007/12/12(水) 14:24:01+商店街
+商店街のパラメータ(総面積、駅からの距離、etc)
|
+商店リスト
+商店のパラメータ(店1つの面積、位置、etc)
|
+商品リスト
+商品のパラメータ(価格、etc)
商店街は自身のパラメータと商店リストを持ち
商店は自身のパラメータと商品リストを持ち
商品はそれ自体のパラメータだけ持つ、という感じです。
0912デフォルトの名無しさん
2007/12/12(水) 14:25:59高効率 → SAX
もっと高効率 → XML 使わない
0913デフォルトの名無しさん
2007/12/12(水) 14:36:26ううむ、やっぱりそうなりますか。
今はCSVをがりがり読んで割り付けているのですが、カンマ等の制限がいろいろと・・・
すみません、もうひとつ補足で、商品リストには果物屋の商品も電器屋の商品も
一緒くたに書かれているということがあります。
ですから、各オブジェクトを生成した後にもう一度再配置を行う必要はあるのですが、
パラメータだけでもXMLのツリー構造からすぱっとTreeMapにマッピングできるなら
とても高効率になるような気がします。
0914デフォルトの名無しさん
2007/12/12(水) 14:38:460915デフォルトの名無しさん
2007/12/12(水) 14:43:01いえ、たぶん大丈夫だと思うのですが・・・IDとかをキーにして取り出せれば十分です。
キーでソート済みになるかならないかでTreemapを選んでいました。
TreeMapのなかにTreeMapを持ったオブジェクトが入れ子のようになって行くかと思います。
0916デフォルトの名無しさん
2007/12/12(水) 14:52:18TreeMapにこだわるならJAXBも使えないし、まずはDOMでやってみて、パ
フォーマンスが気になったときにSAXに変えるのでどうでしょ。
<果物屋><電器屋><リンゴ><梨>って要素名はすごく異様に見えるね。
<商店><業種>果物屋</業種><今期売上>...</商店>
<商品><商品名>リンゴ</商品名><価格>...</商品>
のほうが処理し易いはず。
0917デフォルトの名無しさん
2007/12/12(水) 14:57:18ああ、読込専用だから出力は自前で
0918デフォルトの名無しさん
2007/12/12(水) 15:09:26ありがとうございます。DOMから試してみます。
要素名がおかしいのはその通りでした…
0919デフォルトの名無しさん
2007/12/12(水) 16:49:07たとえば、の場合、JSESSIONIDという値がCookieに保存されますが、
このCookieをセキュアな通信のみ送信されるようにしたいのですが、
これは可能なのでしょうか?
0920デフォルトの名無しさん
2007/12/12(水) 17:03:37セキュアな通信ってどういう意味で使ってる?SSL?
0921デフォルトの名無しさん
2007/12/12(水) 17:06:40レスありがとうございます。
そうです。SSL通信です。
0922919
2007/12/12(水) 18:06:10以下のサイトに書いてありました。
ttp://gmt-24.net/archives/category/www/tomcat
レス汚しすいませんでした><
0923824
2007/12/12(水) 20:29:06レスどうもありがとうございます。遅くなってすみません。
以下のようなコードで目的を達成することができました。
String packageName = getClass().getPackage().getName().replace('.', '/');
String fileResource = packageName + "/HogeTestData.txt";
URL fileUrl = getClass().getClassLoader().getResource(fileResource);
String filePath = fileUrl.getFile();
0924デフォルトの名無しさん
2007/12/12(水) 22:46:24JavaDocコメント生成中の@link記述中にコンテンツアシストすると、
パッケージ名まで補完されるようになってしまいました。
具体的には、
@link ArrayLis
でコンテンツアシストをさせると、
@link java.util.ArrayList
とパッケージ名まで補完されるようになってしまいました。
デフォルトのように、パッケージはimport宣言に書いてほしいのだけれども、
設定をどう直せばいいのでしょうか?
0925デフォルトの名無しさん
2007/12/12(水) 23:38:18Preferences -> Java -> Editor -> Content Assist -> Add import instead of qualified name とか?
0926デフォルトの名無しさん
2007/12/12(水) 23:54:52生成したいのですが、コンストラクタ部分に何か処理を書くと原因不明のエラーになってしまいます。
C#でいうところのPage_Load()に相当するメソッドはどうやって実現したら良いのでしょうか・・・
0927デフォルトの名無しさん
2007/12/13(木) 02:36:48YAMLはどう?
個人的には、XML使うならSAXで処理する。
難しいって言われるけど、イベント処理に慣れていればむしろDOMより楽に書ける。
digesterはもっと楽だけど、その構造には向いていない気がする。
0928デフォルトの名無しさん
2007/12/13(木) 03:27:19ご存じの型がいらっしゃいましたらご指摘いただければとおもいます。
現在tomcat5.5でクラスタリングを行うように設定を行っていますが、うまくセッション情報を共有することができません。
構成としては
www1
apache2.2
tomcat5.5
www2
apache2.2
tomcat5.5
www1とwww2はhoge.comのDNSラウンドロビンにしています。
で何らかの障害等により別サーバに飛んだ際にセッション情報を引き継げるようwww1とwww2のtomcatをクラスタリングしたいと考えています。
servlet.xmlには<Cluster>の部分のコメントアウトを外し、アプリのweb.xmlには<distributable/>も記述してあります。
http://hoge.com/servlets-examples/servlet/SessionExample
で試したところwww1とwww2でセッション情報は共有できているようでした。
しかし、実際のアプリケーションを動かすとセッションにセットした内容がNullとなってしまいます。
フレームワークのセッションへのセットの仕方が原因の一つではないかとも考え始めています。
フレームワークはSeasar2.4のTeedaを利用しています。
0929デフォルトの名無しさん
2007/12/13(木) 10:28:170930デフォルトの名無しさん
2007/12/13(木) 10:28:35この「プログラムから外部化した文字列がすべてプロパティファイルに定義されているかどうか」とか、
「プロパティファイルに書かれているが、プログラム中で使用されていない定義」を調査/テストする
のはどのようにするのでしょうか?
調べ方が悪いのか、そのようなツールやEclipseのプラグインを見つけられませんでした orz
ツールか作業手順を教えて頂けると大変ありがたいです。よろしくお願いします。
0931デフォルトの名無しさん
2007/12/13(木) 10:47:20命令語ってなんぞや?
0932デフォルトの名無しさん
2007/12/13(木) 11:01:19つhttp://www.alc.co.jp/
0933デフォルトの名無しさん
2007/12/13(木) 12:16:29throwableが載ってませんよ?
0934デフォルトの名無しさん
2007/12/13(木) 14:48:16java -versionでバージョン調べると1.5になってます
この状態でコンパイルを行うと1.4と1.5どちらでコンパイルされるのでしょうか
0935デフォルトの名無しさん
2007/12/13(木) 14:53:55「環境設定でJavaのパス」って何?
なんにせよ、調べるべきは java -version ではなくて javac -version
0936デフォルトの名無しさん
2007/12/13(木) 14:59:501.4 でも大丈夫なようにすると javac -J-version
0937デフォルトの名無しさん
2007/12/13(木) 15:32:41多分c:\java1.4にjava5がインストールされてるってな事なんじゃないか?
0938デフォルトの名無しさん
2007/12/13(木) 15:41:12JDK(インストール時にインストールされるJREの)インストールの際に
c:\windows\system32 に java.exe や javaw.exe が置かれるけど
java.exe はそっち使ってるだけとかじゃね?
0939デフォルトの名無しさん
2007/12/13(木) 16:20:150940デフォルトの名無しさん
2007/12/13(木) 17:26:53入力してもらったxとyをx÷yで演算処理するプログラムなんですが、
int z = x/y , w = x%=y;
if (y == 0){
System.out.println("割り算を実行できません");
}
else {
if (w == 0){
System.out.println("x÷y=" + z);
}
else{
System.out.println("x÷y=" + z + "余り" + w);
コンパイルはでき計算も出来るのですが、これでyを0と入力するとエラー
(Exption in thread "main" java.lang.ArithmeticException: / by zero at クラス名.main)
とでるのですがどこか間違ってるところありますか?
0941デフォルトの名無しさん
2007/12/13(木) 17:34:05割る前に調べろや
0942デフォルトの名無しさん
2007/12/13(木) 17:37:44if (y == 0){ ←yが0かどうかチェックしてる。
yが0かどうかチェックした後で割算じゃないかな。
0943デフォルトの名無しさん
2007/12/13(木) 18:58:20ありがとうございます。elseの中でint宣言をしたら無事動きました!
0944デフォルトの名無しさん
2007/12/14(金) 01:01:46if文を使わずにAがtrueならfalse,falseならtrueとなるようにしたいんですが
一行でできますか?
0945デフォルトの名無しさん
2007/12/14(金) 01:03:41でいいんじゃないかな
0946デフォルトの名無しさん
2007/12/14(金) 01:08:400947デフォルトの名無しさん
2007/12/14(金) 04:20:54行列を表現するクラスを作成したいのですが、その各要素の精度を
floatにもdoubleにも対応できるようにするにはどうすればよろしいのでしょうか?
ちょうど下のようなコードを作りたいのですが…。
class HogeMatrix<T> {
private T matrix[][];
public static HogeMatrix createFloatHogeMatrix() {
// ここでnew HogeMatrix<float>()して返す
}
public static HogeMatrix createDoubleHogeMatrix() {
// ここでnew HogeMatrix<double>()して返す
}
protected HogeMatrix(){}
// 以下アクセッサ類
}
Cであれば#defineやテンプレートでできると思うのですが、Javaだとnew T();のような
コンパイル時にコンストラクタが定まらないケースはエラーになるようで困っています…。
よろしくお願いします。
0948デフォルトの名無しさん
2007/12/14(金) 04:30:330949デフォルトの名無しさん
2007/12/14(金) 04:36:24だからラッパークラスのFloatやDoubleをTに代入する。
0951デフォルトの名無しさん
2007/12/14(金) 04:42:20予想が難しいけど。
つか double だけでええやん。数値演算処理でわざわざプリミティブ型のラッパー
ガンガン作るような汎用クラスは遅い。プリミティブ型に関しては C++ のテンプレート
みたいにその型を #define で置き換えたような専用クラスができるわけではないし。
0952947
2007/12/14(金) 05:03:06floatとdoubleの両対応の理由として、行列の次元がそれほど大きくならない場合はdoubleに、
大きくなる場合はfloatで精度を犠牲にしてもメモリを節約できれば、という意図があります。
Float[][]やDouble[][]のようなオブジェクト型だとあまりメモリ効率が変わらなくなってしまう
気がするのですが大丈夫でしょうか…
>>951 ありがとうございます。
なるほど確かに速度は遅くなりそうですよね…
Javaではメモリ効率を気にしていても仕方ない話なんでしょうか。
とりあえずdoubleで実装してみて、実際に問題が起きたらそのときまた考えてみます。
0953デフォルトの名無しさん
2007/12/14(金) 09:49:32それよりそんな変なラッパー作って使おうとする事を気にした方が良い。
0954デフォルトの名無しさん
2007/12/14(金) 09:54:430955デフォルトの名無しさん
2007/12/14(金) 09:59:23効率うんぬんをを語るときに「気がする」は禁物
きちんとプロファイリングして実用に足るかどうかを判断
設計段階でも効率が要になるような箇所はテストコードを書いて判断材料に
0956デフォルトの名無しさん
2007/12/14(金) 12:59:42#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_FLT_STACK_CHECK (0xc0000092) at pc=0x0096cea9, pid=1260, tid=1412
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode, sharing)
# Problematic frame:
# v ~RuntimeStub::resolve_opt_virtual_call
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
0957デフォルトの名無しさん
2007/12/14(金) 13:18:32それでも出るなら別のバージョンをダウンロードしてみる。
あと JVM のバージョン競合が起こっていないか (参照 DLL が矛盾しているとか) 確認。
0959デフォルトの名無しさん
2007/12/14(金) 13:29:05こいつか? JDK7では直ってるが、JDK6にはバックポートされてないとか...
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6457572
0960959
2007/12/14(金) 13:31:200961デフォルトの名無しさん
2007/12/14(金) 15:31:03だから「変なラッパー作って使おうとする事を気にした方が良い。 」と書いただろうが
文脈も読めんのか?
0962デフォルトの名無しさん
2007/12/14(金) 15:35:460963デフォルトの名無しさん
2007/12/14(金) 15:57:07web.xmlで<servlet>〜</servlet>にサーブレット名・クラスファイル。
<servlet-mapping>〜<servlet-mapping>にサーブレット名・URLパス名を作成し指定の場所に保存していますが
実際にURLでクラスを呼び出すと404になってしまいます。
解説通りにやっているので私の根本的なミスが原因の可能性が高いと思っていますが、何度やっても上手くいきません。
わかる方いらっしゃったら教えていただけませんか?
0964デフォルトの名無しさん
2007/12/14(金) 16:01:590965デフォルトの名無しさん
2007/12/14(金) 19:22:23このコードで、ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29965
voidのmyGreeting()とmyFarewell()の中のメッセージもoutFile.printlnで出力したいのですが、
どうすれば良いのでしょうか?
0966デフォルトの名無しさん
2007/12/14(金) 19:44:260967デフォルトの名無しさん
2007/12/14(金) 20:05:19それだと、System.out.println("内容〜"); の内容が出力されなくないですか?
0968デフォルトの名無しさん
2007/12/14(金) 20:40:11http://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html
>Windows XP では [スタート]→[コントロールパネル] の順に、Windows 2000 では [スタート]→[設定]→[コントロールパネル] の順に選択します。
>[詳細]→[環境変数] を選択します。
とありますが、
私のXPps2環境の[コントロールパネル]の中に[詳細]という項目がありません。
どうしたらいいでしょうか?
0969デフォルトの名無しさん
2007/12/14(金) 20:44:370970デフォルトの名無しさん
2007/12/14(金) 20:51:12ああゴメン。それ以前にコンパイル通らないや。
>>968
[コントロールパネル]に[システム]ってある?そこの[詳細設定]→[環境変数]→……
>>969のが分りやすいかも。
0971デフォルトの名無しさん
2007/12/14(金) 21:05:27JSP や HTML はちゃんと表示できます。
クラスの表示ができません。。web.xmlの記述の仕方が悪いのでしょうか?
0972デフォルトの名無しさん
2007/12/14(金) 22:02:11java -classpath C:\Java\tool\apache-log4j-1.2.15\log4j-1.2.15.jar;. xxx.java
コンパイル、実行はできますが、
ユーザ環境変数にて
変数名 CLASSPATH
変数値 C:\Java\tool\apache-log4j-1.2.15\log4j-1.2.15.jar
と指定して
javac xxx.java
はエラーなく出来ますが。
java xxx.java
がエラーになってしまいます。
エラーメッセージは・・・
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at LoadSetting.main(LoadSetting.java:10)
java ファイル名で実行できるようにしたいのですが、
どなたかご教授ねがいます。
0973デフォルトの名無しさん
2007/12/14(金) 22:09:32これでわかりました、有り難うございました。 あと、Hello Worldの表示も出来ました。
http://andyou.sakura.ne.jp/tool/exifviewer.html
ところで私がジャバをインストールしたのはこのexifviewerを実行してみたいからなのです。
ここから、ExifViewer.zipというのを落としたのですが、この後どうしたらいいのでしょうか?
ここには、
>ExifViewer.jarをダウンロードし、実行してください。
なんて書いてあるのですが、どうしていいのかわかりません。
とりあえず、C:\Documents and Settings\aこのフォルダにExifViewer.zipを置いてみました。
0974デフォルトの名無しさん
2007/12/14(金) 22:21:34そのページをよく読め。
ExifViewer.zipなんてないぞ。というか作ったやつに聞いたらどうだ?
あと実行するだけならjdkじゃなくてjreを使え。
ExifViewer.jarをダブルクリックするか
java -jar ExifViewer.jar
としてみろ。
0975デフォルトの名無しさん
2007/12/14(金) 22:35:24> ExifViewer.zipなんてないぞ。というか作ったやつに聞いたらどうだ?
ExifViewer.jarって書いてあるけど、落ちてくるのはExifViewer.zipなんです。
> あと実行するだけならjdkじゃなくてjreを使え。
もう、jdk-6u3-windows-i586-p.exeっていうのをインストールしちゃいました。
> ExifViewer.jarをダブルクリックするか
だから、ExifViewer.jarがないんです。
ExifViewer.zipをリネームするのかな?
0976デフォルトの名無しさん
2007/12/14(金) 23:37:400977デフォルトの名無しさん
2007/12/15(土) 00:00:27わおぅ、出来ましたw
有り難うございます。
こんな事がまかり通るなんて、恐ろしい世界ですねw
0978デフォルトの名無しさん
2007/12/15(土) 01:43:22ファイル名が変わっただけで中身が変わるわけじゃないから別に恐ろしくはない
だから拡張子を変えなくてもjava -jar ExifViewer.zipでも実行可能
拡張子に対する関連付けでjarファイルのダブルクリック実行はできないが
0979デフォルトの名無しさん
2007/12/15(土) 01:45:580980デフォルトの名無しさん
2007/12/15(土) 01:57:48実行はできてる。実行したプログラムの中で予期しない事が起きてるだ
け。コマンドラインに何かパラメータが必要とか。
0981デフォルトの名無しさん
2007/12/15(土) 10:02:21サブクラスの名前でコマンドラン起動した時 (java B や java C) サブクラス名を
取りたいんだけど、無理ですかね?
public abstract class A{
public static void main(String[] args){
// コマンドライン引数の解析や初期化処理
A a = (A)Class.forName("コマンドで指定したクラス名");
a.execute();
// 終了処理
}
protected abstract void execute();
}
0982デフォルトの名無しさん
2007/12/15(土) 10:26:10staticメソッドはクラスに固定されてる。継承はされない。
又、mainメソッドが無いクラスでは実行が開始出来ない。
よって、今のままでは無理。
0983デフォルトの名無しさん
2007/12/15(土) 10:31:270984デフォルトの名無しさん
2007/12/15(土) 12:30:23すでに入っています。これは手動で削除していいんでしょうか?
コンパネの"プログラムの追加と削除"には表示されていないので…
0985デフォルトの名無しさん
2007/12/15(土) 13:12:23public class FrameTest extends Frame {
public static void main(String [] args) {
new FrameTest();
}
FrameTest() {
super("FrameTest");
setSize(200, 100);
show();
}
}
これを、
FrameTest.javaに書き出し、
C:\java>javac FrameTest.java
で、コンパイルしたら成功しました。
しかし、これを起動するのには、
C:\java>java FrameTest
としなくてはなりません。
これをダブルクリックで起動させるにはどうしたらいいでしょうか?
OSはwinsp2です。
0986デフォルトの名無しさん
2007/12/15(土) 13:15:180987デフォルトの名無しさん
2007/12/15(土) 13:25:08どうすればjarファイルが作れますか?
0988デフォルトの名無しさん
2007/12/15(土) 13:26:52お願いします。
0989デフォルトの名無しさん
2007/12/15(土) 13:29:510990デフォルトの名無しさん
2007/12/15(土) 13:51:330991デフォルトの名無しさん
2007/12/15(土) 13:54:050992デフォルトの名無しさん
2007/12/15(土) 13:54:20ArrayList<Integer> list
が無理なら、
ArrayList<String> list
intを変換して入れたら?
使うときに戻せばいいじゃん。
0993デフォルトの名無しさん
2007/12/15(土) 13:55:48それって、速いらしいね。
0994デフォルトの名無しさん
2007/12/15(土) 17:01:440995デフォルトの名無しさん
2007/12/15(土) 17:08:26まぁおちつけ。スレ建てしてくるから
0996デフォルトの名無しさん
2007/12/15(土) 17:09:34(\ ∞ ノ
ヽ、ヽ /
`ヽ)__ノ
0997995
2007/12/15(土) 17:12:150998デフォルトの名無しさん
2007/12/15(土) 18:11:190999デフォルトの名無しさん
2007/12/15(土) 18:23:19http://pc11.2ch.net/test/read.cgi/tech/1197710566/
1000デフォルトの名無しさん
2007/12/15(土) 18:27:3710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。