【初心者】Java質問・相談スレッド88【大歓迎】
1 :
デフォルトの名無しさん :
2006/07/25(火) 22:43:16
乙 グダグダ話まだ続けんの?
4 :
デフォルトの名無しさん :2006/07/25(火) 23:06:34
当たり前やんけボケ!!
6 :
デフォルトの名無しさん :2006/07/25(火) 23:11:11
7 :
デフォルトの名無しさん :2006/07/25(火) 23:12:59
あの馬鹿どもの喧騒の中でちゃんと次スレ立てて誘導した
>>1 激しく乙。
9 :
デフォルトの名無しさん :2006/07/25(火) 23:15:06
>>8 ou!!
ちゃんと見てるで!
はよせーやボケ!
Javaの基礎が終わったのだけど、ここから先何をやっていいか分からなくなりました Web関係に興味があるからStrutsを勉強しようと思って色々ググってみたのですが JSP・サーブレットも勉強しないといけないのでしょうか? StrutsはWebアプリを作成する上での外枠、セキュリティ等の部分を最初から考えなくて良いために Struts(warファイル)を読み込んで、そこからプログラムを作成していくという風に捕らえました 認識の仕方として誤りがありませんか? 以上の二つを回答いただきたいです
12 :
デフォルトの名無しさん :2006/07/25(火) 23:34:04
>>10 まあまあそういわんといてや
>>11 勉強できるんやったら全部やっとけ!!
あと自分に何が必要かまず考えたほうがいいんとちゃうか?
>>12 とりあえずお前は3年ぐらいROMってろ。
14 :
デフォルトの名無しさん :2006/07/25(火) 23:39:16
C#とjava、勉強するならどっち? マジレス希望
15 :
名無し募集中。。。 :2006/07/25(火) 23:40:13
2択にする意味が分らない 両方覚えろ
17 :
デフォルトの名無しさん :2006/07/26(水) 00:05:50
>>14 もうJavaは終りだよ
これ以上は何も望まない方がいい
これは、誰も否定しないことだし、薄々感じているだろ?
おとなしくC#やってろ
>>11 Strutsの前にServlet/JSPはやっておけ。
Strutsは廃れても基盤となるServlet/JSPは残るから。
スンマソ、ヘタレJAVA使いです。 html+アプレットでスレッドの中でループさせているアプリなんですが、これってIEのページが切り替わると スレッドが破棄されると今まで思っていました。 ところが、なにやらかのタイミングで全く別のhtmlをロードしてクラスが変わっても、前に読み込んだスレッドが 動き続けることが希に出てくる…MS_VMならこんなことはなかったが… やっぱり、destroy()の中にスレッドを止める動作を仕込まなくてはいけないのでしょうかね?
あたりまえだ。MSJVM でもそうだ。
21 :
デフォルトの名無しさん :2006/07/26(水) 09:41:00
public static void main(String[] args){ double s=0; for(int i=1;i<=10;i++){ s+=1/i; System.out.println(i+":"+s); } } s+=1/i; を s+=1/(double)i; にしたらうまくいったのですが(double)にどういう意味があるのでしょうか? iはintであって、sはdoubleなのだからわざわざ入れる必要ないと思うのです
int/intの結果はintだ。 そのintの結果を代入時にdoubleにキャストしている
>>21 ここで質問するなとまでは言わないが、その程度の話なら、s += 1/i; の前に
System.out.println("i: " + i + "1/i" + 1/i); とか挟み込むとかして、
ある程度自分でプログラムの動向を探る努力ぐらいはしろよ。
自分で原因を探す力も付けていかないと、後々痛い目みるのは自分だし。
24 :
デフォルトの名無しさん :2006/07/26(水) 11:35:55
>>21 s+=1/i;
は、
s = s + 1 / i;
になるわけだけど、
1 / i の結果は、
>>22 の言うとおりint。
つまり、たとえば、1/2が行われたとき、結果は0.5だが、
intは小数点以下を確保出来ないため、0
s = s + 0;
となる。
s+=1/(double)i;
だと、i = 2のとき、
s = s + 1 / 2.0となる。
1 / 2.0の様に型の違うもの同士の演算は、
javaの仕様で、大きいほうにあわせられるため、int / doubleの結果はdouble。
つまり、s = s + 0.5;となり、
正常に動くと。
(double)はキャスト(型変換)を意味するが、それをしないと計算時に精度が落ちる。
25 :
デフォルトの名無しさん :2006/07/26(水) 11:40:10
javaのwin上の開発について質問なんですが エクリプスで作った場合 ビジュアルエディターで作るのが一般的なんでしょうか? なんか取っ付きにくいし本もあまりないよな・・・ やっぱり皆さんはwide Studioとか使っているのでしょうか?
めも帳とこまんどぷろんぷと
27 :
デフォルトの名無しさん :2006/07/26(水) 13:02:14
手書きか、NetBeansでガワ作って手直し。 実際ゼロから書くのとあんまりかわらんけど。
28 :
デフォルトの名無しさん :2006/07/26(水) 14:37:53
ところで s = s + 1 / i; のように半角スペース入れるのはなぜですか?
29 :
デフォルトの名無しさん :2006/07/26(水) 14:45:01
その人の好み
>>28 入れなくても文法上問題ない
演算子の前後に空白を入れるというコーディングスタイルをとっている人間が書くとそうなる
コーディングスタイルは個人の趣味だったりグループの趣味だったりその他いろいろなので
そのときがきたら悩め
ちょっとコンパイルエラーで at java.util.SubList.addAll(Unknown Source) っつーのが出てきたのだが、API見てもソース探ってもjava.util.SubList なんてクラスがいないのだが、こいつってどちらさん? どっかのInnerクラス?
>>32 それコンパイルエラーじゃなくて実行時エラーじゃないの?
>>33 すまぬ、実行時エラーだった。。。
ついでに、なんとか所在も判明した。
後でみる人のために書いておくと、AbstractListの中にいる、パッケージ
スコープのクラス。
35 :
デフォルトの名無しさん :2006/07/26(水) 21:31:53
jarにテキストファイルをリソースとして入れた場合、そのテキストファイルを読み込むことは可能ですか? 可能ならば、やり方を教えてください。
getClass().getClassLoader().getResource("ファイル名")
37 :
35 :2006/07/26(水) 21:46:09
>>36 getResource()した場合、URLが戻ってくるのでFileクラスでインスタンス化できません。
何か良い方法ありませんか?
getClass().getResource("リソース名") でいいんじゃね? Class#getResource(String)は オブジェクトのクラスローダに委譲されることだし
んじゃあJarFileで直接エントリにアクセス
だいたいjarの中にあるリソースはファイルじゃないからFileを使おうってのが間違いな気がする URLなら表せるけど
41 :
35 :2006/07/26(水) 22:00:58
さっきから、質問が変で申し訳ないです。 テキストのデータをファイルから読み出したいのですが、jarの中のテキストファイルからテキストデータを読み込むにはどうすればよいのですか?
getClass().getClassLoader().getResource("ファイル名") なり getClass().getResource("リソース名") なりでそのテキストへのURLをとって URL#openStream() でInputStreamを開いてInputStreamReaderで読むなりさらにBufferedReaderで囲むなりしてくれ
それともFileに固執する理由でもあるん?
44 :
35 :2006/07/26(水) 22:05:49
>>42 それでやってみます。ありがとうございました。
InputStream fs=HogeClass.class.getResourceAsStream("test.txt"); じゃだめ? Fileオブジェクトで取り出すのは無理。 (Javaの標準ライブラリだと アーカイブ内のエントリはファイルとは扱いがちがう)
おお、そういえばあったね<getResourceAsStream getClass().getResource("test.txt").openStream() よりも getClass().getResourceAsStream("test.txt") の方がスマートだ
47 :
デフォルトの名無しさん :2006/07/26(水) 22:22:27
JAVAのコンパイルするソフトDLしたいんですが、 ダウンロードできる場所おしえてください。よろしくお願い思案す。
48 :
デフォルトの名無しさん :2006/07/26(水) 22:59:14
フローチャートと業務ロジックが別々に記述された設計書があるのですが、 フローチャートを上手くコードに落とす方法が思いつきません。 こんなデザインパターン使え、的なものってないですか? ゴリゴリ書くと死ぬ・・・
フローチャートは捨ててしまえ…… orz
>>48 フローチャート(シーケンス図?)は直接コードに落とすものじゃないだろう。
その書き方じゃ、果たしてオブジェクト指向で設計してるのかどうかも
疑わしい。そうなるとデザインパターン以前の問題。
UMLを見直して、もう一度整理してから再質問汁
1つのHTMLページ上に配置された別々のサーバの JAR内のアプレット間で通信する方法ってどんな手が ありますか? 一応JavaScriptを使った方法はあるのですが、他に 何かいい手はないでしょうか。
53 :
デフォルトの名無しさん :2006/07/26(水) 23:24:40
>>53 原因は知らんが、とりあえず文字コードをUTF-8に汁
すいません仕事でjavaはじめたばかりの新人です。 ご相談させてください。 今自分の現場で@のようなソースをいくつか見ます。 たまたま絶対にWHEREに足しこむ値は一つだけのようなのですが(ループで足したりは無いです) すべてA(または違ったロジック)のように書き直したほうが良いのですか? 経験豊富な皆さん教えてください。(コンパイラは通してないので間違ってたらすいません) 前提として 引数でString型のvalueをもらいます。 @ String sql = "SELECT ...."; sql += "WHERE A = '" + value + "'"; executeQuery(sql); A StringBuffer sql = new StringBuffer("SELECT ...."); sql.append("WHERE A = '"); sql.append(value); sql.append("'"); executeQuery(sql.toString());
好きなほうを使うが良い。 秒間何万回と繰り返さない限り、違いなんぞわからんよ。
57 :
デフォルトの名無しさん :2006/07/26(水) 23:39:24
54さん返事ありがとうございます 文字コードをUTF-8に汁ってどうゆうことですか?
>>55 前者。
理由その1
昨日の話にもあったが、最適化されてほとんど同じになる。
理由その2
改めてソースを見直すときに、普通に読みにくい。
理由その3
同じようなコードを書く際、結局そのStringBufferインスタンスを
生成するのだろうから、可読性を犠牲する上に立つメリットが見あたらない。
executeQuery(String.format("SELECT ... WHERE A = \'%s\', value)); とか
>>57 コンピュータ概論とか超基礎教科書から勉強し直せ。
>>59 1行が80文字を超えない限りにおいて、激しく支持
62 :
デフォルトの名無しさん :2006/07/27(木) 00:00:56
60 すいませんまだ学生なので 教えてください
学生なので教えてって意味がわからない
>>62 学生とか理由じゃないだろ。
お前は不可解なことがあれば、とりあえずググルなりして調べようという
発想にならないのか。DLページを探す件についてもそうだ。
そんな他力本願100%なやつにプログラミングなんか無理だ。
よかったな、環境を整える前に自分がプログラミングとかの自己努力が
大きく要求される分野に全く向いていないということが判明して。
>>55 SQLのパラメータ指定するのなら、PreparedStatement使いましょう。
SQLインジェクションにもなってハッピーです。
>>65 SQLインジェクションになったらHappyなのか?
と揚げ足取ってみた。
>>55 WEBアプリでなくともパラメータつき使うのはデフォ
また、連結するのが決まっているなら前者のほうが早いし視認性もいい
>>57 そのページ(ダウンロードページ)を開くのにIE6を使ってるなら、「表示」→「エンコード」のところで
「Unicode(UTF-8)」を選ぶ。
または他のブラウザで見る。Firefox、Operaなど。
50個くらいあるjarファイルをclasspathに追加したいんですが、 set classpath=C:\なんとか\かんとか.jar;C:\なんとか\かんとか2.jar... って塩梅でずらずら並べるしかないんでしょうか?
71 :
デフォルトの名無しさん :2006/07/27(木) 03:47:25
>>70 その50のファイルを1つのフォルダにまとめれば?
71は何言ってるの?
Deflaterクラスで圧縮した情報を格納したbyte[] inputを引数として受け取って Inflaterクラスで解凍し、Stringとして返す関数を作っているのですが Inflater.inflateメソッドで解凍された情報を確保する為のbyte配列(byte []result)は あらかじめ適当なサイズで初期化して確保しておくしかないのでしょうか? できれば動的にサイズを確保したいのですが・・・。 以下が現在のソースです。 final int maxBufSize = 100000; public String decompressString(byte[] input) { //Decompress the bytes Inflater inf = new Inflater(); inf.setInput(input); byte[] result = new byte[maxBufSize]; int resultLength; try{ resultLength = inf.inflate(result); }catch(Exception e){ return null; } inf.end(); //Decode the bytes into a String String outputString; try{ outputString = new String(result,0,resultLength,"UTF-8"); }catch(Exception e){ return null; } return outputString; }
>>74 ByteArrayOutputStreamを使うんだ
76 :
74 :2006/07/27(木) 11:50:11
>>75 回答ありがとうございます。
ByteArrayOutputStreamとByteArrayInputStream、InflaterInputStreamを
組み合わせる事で何とかうまく行きました。
ありがとうございました。
漏れが作ったアプレットを終了させるとこんなメッセージが。 困ったことに、終了させたら出るものでトレースも困難でつorz だれかココがアヤスィって判りませんでしょうか。 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: component argument pData at sun.awt.windows.Win32SurfaceData.initOps(Native Method) at sun.awt.windows.Win32SurfaceData.<init>(Unknown Source) at sun.awt.windows.Win32SurfaceData.createData(Unknown Source) at sun.awt.Win32GraphicsConfig.createSurfaceData(Unknown Source) at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source) at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source) at sun.awt.windows.WComponentPeer$2.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
趣味グラマー+初心者です。少々詰まったので質問。 画像をjLabelに表示しているのですが、その画像データを直接byte[]に出力することが出来ないかと。 ImageIcon img = new ImageIcon(thum); // byte[] thum (jpegデータを格納済み) jLabelThum.setIcon(img); //jlabelに画像を表示 ・・・・・(適当な処理)・・・・ この後、画像データを jLabel --> byte[] に入れてしまいたいのです。 現状では、FileOutputStreamで一度ファイルに落としてから、 再度読み込みで、byte[]に格納しているので、無駄を省きたく思っています。 どのクラスを使ったら良いかのヒントだけでも良いので、お願いします。
>>79 FileOutputStreamで書き出せるのなら
かわりにByteArrayOutputStreamでバッファへ書き出して
toByteArray()でbyte配列へ吐き出せばいいと思うが
あれ? FileOutputStreamでファイルに落とせるってことは元々byte[]とかで持ってるってことじゃないのか?
引数の文字コードにSJIS以外を使いたいのですが、どこで設定するのでしょうか?
InputStreamReader(InputStream in, String charsetName) OutputStreamWriter(OutputStream out, String charsetName)
84 :
82 :2006/07/27(木) 18:59:26
javaコマンドのオプション引数です。 System.out.println(args[0]);みたいなコードを -Dfile.encoding=UTF-8で実行してるのですが、 UTF-8の文字列をSJISとして解釈したものを UTF-8に変換してるみたいで化け化けです。
-D を使わなければいいんでね?
86 :
82 :2006/07/27(木) 19:12:58
UTF-8の文字列をSJISとして解釈したものを出力するので化けます。
javaアプレットで任意のファイルを読み書きする方法はありますか?
つ署名
90 :
82 :2006/07/27(木) 21:10:39
-Dを使わなくても化けますが。
Struts難しいね、何回やってもエラー500がでて俺ストレスで死にそう
>>84 本当に引数の文字列はUTF-8なのか?
本当にShiftJISとして解釈しようとしてるのか?
Webサーバに何らかのリクエストに対して何らかのレスポンスを返すServletがあるとして、 クライアントに画面表示させてるJSPから、そのServletに非同期通信で リクエストを送ってレスポンスを待ちたいです AjaxのXmlHttpRequestみたいな感じですね ピュアJavaでは、どうやって実装するのがベターでしょうか? 調べてるんですが、JMSとやらを使えばできるのかなーって感じで イマイチ把握できていません よろしくお願いします
>>84 SJIS じゃなくて euc-jp だったりしてー
95 :
82 :2006/07/27(木) 22:14:14
eucはうまくいくのですが、sjisとutfは全部????に化けます。 しかたないのでnkfでeucにしてから処理することにしました。
>>95 いったい何をやってるのかまったくわからないのだが、答えは
>>83 か?
>>93 深く考えすぎ
URLクラスのAPIをまずはよーくみてみよう
初心者向けのテキストや、入門サイトなどにあるコードには import.awt.*; の後に import.awt.event.*; と記述されていたりするんですが、下の方をぬいてみても別段かわりはありませんでした。 この1行を足す意味はあるんでしょうか。
>>99 AJAXがどういう意味で非同期かわかってないような
>>98 ある。というか、変わりなかったというのがおかしい。
純粋に使われていなかっただけか、コンパイルエラーを見逃してるかの
どちらかだ。
>>98 たまたまjava.awt.eventパッケージのクラスを使ってないなら無くてもかまわない。
GUI使うからとりあえず、という感覚で常に両方書く人はいる。
ただし、importはドット(.)による階層の包含関係という概念はないので、
import java.awt.*; は
import java.awt.event.*; を「含まない」ので、java.awt.eventパッケージ
のクラスを省略名で使いたいなら、後者も書く必要がある。前者だけでは
後者の働きを含まない。
>>100 XmlHttpRequestクラスを用いてPOST/GETメソッドでサーバにリクエストを送信して
レスポンスが返ってきたらXmlHttpRequestオブジェクトの状態が変化して
そのときにイベントハンドラonreadystatechangeが呼び出されて
onreadystatechangeに関連づけられてるメソッドを呼び出し時に実行することで
画面の表示の状態を書き換える
レスポンスがあったかどうかはイベントハンドラが拾ってくれるので待ってる必要が無い
ので通信状態と画面の状態を同期させなくて良い
→ブラウザの制御が通信状態に影響を受けない
と解釈しています
>>103 purejavaでやりたいということはクライアントはブラウザではないってことか?
なら自由にスレッド使えばよろしい
>>105 クライアントはブラウザです
WebインターフェースをJSPで作った場合の話です
Javaは一応囓ってはいるのですが、ネットワーク関係には全く触れなかったので
おかしなこと言ってたら指摘してください
質問です。 int i = Integer.parseInt(str); というのはよく使ってましたが、 String型の配列をint型の配列に型変換することはできるのでしょうか? public static void main(String[] args){ int[] i = Integer.parseInt(args); } というようなプログラムを作成してみたところ、コンパイルエラーでした。 メソッドparseIntというシンボルを見つけられないそうです。 Q.どうやればString型の配列をint型の配列に変えれますか。
>>107 int[] i = new int[args.length];
for(int j=0; j<args.length; j++){
i[j] = Integer.parseInt(args[j]);
}
配列はあくまでもオブジェクト・参照型であるということを心得るべし。
それがわかってれば Integer.parseInt(args) なんて試す前から
コンパイルエラーの叫びが聞こえてくるのがわかる。
>>108 for分で回すんですね〜
勉強になりました
直接配列から配列にぶち込めるメソッドかなにかあればいいのになー
111 :
デフォルトの名無しさん :2006/07/28(金) 03:45:57
質問させていただきます。 ローカルにあるファイルをサーバー上に保存させるアプレットを作成しようと考えています。 通信経路はHTTP,FTPです。 アップロード中、今Xバイト送信し終わった等の動的な取得はできるのでしょうか?
112 :
デフォルトの名無しさん :2006/07/28(金) 03:56:13
質問です。 配列が多いので管理に困ってるのですが、 配列名にx0[],x1[],x2[],x3[]と名前をつけてあるとして、 for文を使用して for(int i=0;i<=3;i++){ value[] = ("x" + i)[]; } というような配列名のiの部分だけをインクリメントして 繰り返しをするような都合の良い方法はないでしょうか? これだと有無を言わさずエラーが出るのは分かってるのですが。。。
>>111 OutputStream で送信したバイト数を数えればいい。
>>112 どうしてもしたければ配列の配列にしろ。
>>110 メソッドが無ければお菓子を作ればいいのよ
public class IntegerArray {
public static int[] parseInt(String[] s) {
int[] i = new int[s.length];
for (int j = 0; j < s.length; j++) {
i[j] = Integer.parseInt(s[j]);
}
return i;
}
public static int[] parseInt(String[] s, int radix) {
int[] i = new int[s.length];
for (int j = 0; j < s.length; j++) {
i[j] = Integer.parseInt(s[j], radix);
}
return i;
}
}
すみません(>< 複数のappletクラスがあって、IE上で表示している場合にawtか何かでボタンをクリックしたら、 今表示しているappletを切替える方法って何か良い命令ありませんか?
118 :
93 :2006/07/28(金) 07:08:24
どなたか、お願いします。
119 :
デフォルトの名無しさん :2006/07/28(金) 07:19:38
>>115 根本的におかしい、切り替えるべきはAppletじゃなくてPaneだろ
>>93 XMLHttpRequestで非同期なのはブラウザなのであって
サーバからしてみれば同期通信しかしてないぞ
意味が分かるか?ようはスレッドだ
JSP の中に Ajax 使って通信する JavaScript 書きゃ良いだろがこのひょっとこめ
初心者相手に言葉遊びしてるのははたから見て間抜け
122 :
デフォルトの名無しさん :2006/07/28(金) 07:21:11
ってクライアント側じゃなくてサーバの話か? 普通に作れってだけだな
>>112 こんなのでどうよ?
HashMap<String,int[]> hm = new HashMap<String,int[]>();
int[] x0 = new int[10]; hm.put("x0", x0);
int[] x1 = new int[11]; hm.put("x1", x1);
int[] x2 = new int[12]; hm.put("x2", x2);
int[] x3 = new int[13]; hm.put("x3", x3);
for (int i = 0; i < 4; i++) {
int[] v = hm.get("x" + String.valueOf(i));
System.out.println(v.length);
}
こっちの方がアホくさくていいか HashMap<String,int[]> hm = new HashMap<String,int[]>(); for (int i = 0; i < 4; i++) { int[] x = new int[10 + i]; hm.put("x" + String.valueOf(i), x); } for (int i = 0; i < 4; i++) { int[] v = hm.get("x" + String.valueOf(i)); System.out.println(v.length); }
>>112 こんなのどうよ
for(int i = 0; i <= 3; i++) {
System.out.println("int[] v = x%d")
System.out.println("System.out.println(v.length);");
}
これ実行して出てきたのをコンパイル
ばかwwww orz System.out.println("int[] v = x%d", i);
あーちくしょう。ダメだ頭寝てるよ…… orz 素直に二度寝します …… orz
129 :
デフォルトの名無しさん :2006/07/28(金) 10:40:40
Swingで「子ウィンドウ」を作ることはできないんでしょうか? モーダルではなくて、常に親ウィンドウよりも手前に表示されていて、 MDIとは違って親ウィドウの外にも移動できるようにしたいのですが。
>>129 java.awt.Window#setAlwaysOnTop(boolean)でいいのかな?
こんな感じで
JFrame f = new JFrame("parent");
JDialog d = new JDialog(f, "child");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
d.setAlwaysOnTop(true);
f.add(new JTextField());
d.add(new JTextField());
f.setSize(300, 300);
d.setBounds(50, 50, 100, 50);
f.setVisible(true);
d.setVisible(true);
131 :
115 :2006/07/28(金) 13:03:37
>>116 つまり、appletを表示するhtmlを沢山ズラズラ書いて、appletとJavaScriptと変数か何かで通信させて、
何かのトリガで.location=xxxx.htmで切り替えすよね。
その方法なら判るのですが、もっとスマートに逝かんもんかと思いまして(^^ゞ
>>119 教えて君でスンマソ。kwsk
132 :
デフォルトの名無しさん :2006/07/28(金) 13:05:55
初心者ですが、宜しくお願いします。 FileWriter fw = new FileWriter(ファイルのパス); fw.write(書き出す文字列); このwrite()メソッドについて質問があります。 FileWriterは出力のキャラクターストリームであるため、 BufferedWriterのようにバッファリングをして書き込むのではなく 一文字ずつファイルにアクセスし書き込まれるのではないのですか? にもかかわらず、fw.flush()などをつかってバッファをフラッシュしないとファイルに 書き込まれないのは、FileWriterもバッファリングして書き込んでるのでしょうか? FileWriterはバッファリングをしないものだと教わったので良く分かりません。 ご教授お願いします。
>>132 write() メソッドに渡される文字はバッファに入らないが、
このメソッドを呼び出すたびにエンコーディングコンバータが呼び出されて、
この結果がバッファに蓄積されてから出力ストリームに書き込まれる。
つまり、write()の度にコンバータを呼び出して処理するという意味でバッファリングしないということ。
だからwrite()呼び出しの頻度が高いならバッファリングするWriterでラップすべきだと思う。
StringTokenizerを使用して文字を取り出しているんですが、 スペースで区切られた内容の[ふ ん こ ろ が し] というデータを取り出す時に最後の「もち」だけを くっつけて表示したい場合はどうすればいいんでしょうか? 教えてください。
135 :
134 :2006/07/28(金) 13:43:53
すいません。もちじゃなくて[がし]でしたorz
[ふ ん こ ろ が し]の最後に「もち」はありませんが? ところで文字列を[]で囲う表現をちらほら見掛けるけど出自はどこかね?
>>134 StringTokenizerは使わないでString#split()を使う。
138 :
134 :2006/07/28(金) 13:52:06
>>137 StringTokenizerで他の文字だけを抜き出して
[がし]だけをString#split()でだせばいいのでしょうか??
139 :
デフォルトの名無しさん :2006/07/28(金) 13:54:10
>>130 それだと、常に全てのウィンドウよりも前に
出てきてしますのですが、
やりたいのは「常に親ウィンドウよりも前に」
出すことです。
>>138 split()を使えばStringTokenizerを使う必要はないだろう。
>>135 StringTokenizer st = new StringTokenizer("ふ ん こ ろ が し");
ArrayList<String> list = new ArrayList<String>();
while (st.hasMoreTokens()) {
list.add(st.nextToken());
}
for (int i=0; i<list.size()-2; i++) {
System.out.println(list.get(i));
}
System.out.println(list.get(list.size()-2)+list.get(list.size()-1));
split()はややこしいかな。 正規表現の指定がちょっと複雑化も。 そもそも、[ふ ん こ ろ が し]は、文字も、文字数も固定なのか? 前提が曖昧。
>>138 String[] result = "ふ ん こ ろ が し".split(" ");
for (int i=0; i<result.length-2; i++) {
System.out.println(result[i]);
}
System.out.println(result[result.length-2]+result[result.length-1]);
144 :
134 :2006/07/28(金) 14:09:05
ふんころがしは可変でお願いします。 最初と最後に$マークが付いている文字列です。
>>144 文字数も、文字も可変なら、
くっつけたいのは最後の2文字ってことでいいの?
146 :
134 :2006/07/28(金) 14:33:25
>>145 そうです。文字羅列の
$start ふ ん こ ろ が し $endという文章の
がしをくっつけたいのです。
>>146 じゃあ、前にレスしてくれている人がいるように、
StringTokenizerでもsplit()でも使って分割した後に、
あらためて最後の2要素をくっつければいいだけじゃないの?
148 :
134 :2006/07/28(金) 14:51:39
こういう感じのソースなんですけど ここからどう変更すればでるでしょうか・・・ if (str.startsWith("$start")) { int counter = 0; String temp = null; String s = ""; StringTokenizer st = new StringTokenizer(str); while (st.hasMoreTokens()) { counter++; String token = st.nextToken(); if (counter == 2) { DataType.add(token); } if (counter == 3) { DataType.add(token); } if (counter == 4) { DataType.add(token); } while(token.equals("$end")){ s = st + " " + token; DataType.add(s); }}}
149 :
134 :2006/07/28(金) 14:59:29
すいません。できました。orz ありがとうございました。
>>139 うるさいうるさいうるさい!
>>130 でもちゃんと「常に親ウィンドウよりも前に」あるんだから!
日本語の不自由な平民を相手にするなんて、あんた、感謝しなさいよね。
複雑に考え過ぎるのはあまり頭によくないんだゾ!ずっきゅ〜ん
JFrame f = new JFrame("parent");
JDialog d = new JDialog(f, "child");
JDialog d2 = new JDialog(f, "child2");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JTextField());
d.add(new JTextField());
d2.add(new JTextField());
f.setSize(300, 300);
d.setBounds(50, 50, 100, 50);
d2.setBounds(70, 70, 100, 50);
f.setVisible(true);
d.setVisible(true);
d2.setVisible(true);
>>150 シャナなのかルイズなのかはっきりさせろよw
てか、わざわざハックしなくても150でいいんじゃないのか 子が常に親の上だけど他のアプリに切り替えれば隠れる 130は余計なことしてるんだ
156 :
デフォルトの名無しさん :2006/07/28(金) 17:22:31
>>150 これだと親ウィンドウをアクティブにしたら
子ウィンドウが隠れちゃいませんか?
最初これやってみてできなかった気がするんですが。
もう一回やってみます。
157 :
デフォルトの名無しさん :2006/07/28(金) 17:23:35
I/0 について質問します。 FileWriter であるすでに存在する、かなり大きなファイルを上書きしている最中で、close命令の 前に何らかの原因でアプリケーションが落ちたり、コンピュータの電源が落ちた場合、ファイルの 中身は消えています。かなり初歩的な質問で申し訳ありませんが、回避するにはどうしたらよい でしょうか?宜しくお願いします。
158 :
デフォルトの名無しさん :2006/07/28(金) 17:26:23
>>150 そもそも2つ作る意味は?
>>157 flushしたらいいんじゃね?
てか書き込み中に電源落ちたらやばくない?
こっちで試したらうまくいった 環境はWinXP+SE1.5
>>158 決してDialog同士の関係を見たかったわけではないっ!
そんなこと私が知るか!じゅ〜すぃ〜
161 :
129 :2006/07/28(金) 18:01:37
もう一回やったら動きました。 ありがとうございました。
今週のJavaWorldにjavaのプログラム構造を視覚化するツール,Structureとかいうものの紹介文があったんですけどURLググレなくています・・・ 知っている人いますか?
jarsigner で 日本語クラス名を含むjarに署名しようとしてるんですが 何か、マニフェストのクラス名が化けちゃうんですが 誰かこんなのやった人いませんか??
164 :
デフォルトの名無しさん :2006/07/28(金) 20:20:53
超初心者な質問なんだけどJavaってどんな事に使うんですか?
あんなことやそんなことだな
主にオナニーに使います
>>164 そんな質問の仕方じゃまともな回答は得られないと思われ
あえてマジレスするなら、プロジェクトに関わってるチームはJavaを常に持ち歩いている
最近は暑くなってきたしJavaは営業に行くときも欠かせないよ
169 :
デフォルトの名無しさん :2006/07/28(金) 21:02:07
なんだネタスレかよ、頼った俺が悪かったな
>>162 URLとか全部載ってるじゃん
structure101でぐぐってみな
>>157 テンポラリファイルに書き出してリネームする。
あと「Rename atomic テンポラリ」でググれ。
>>170 さんくすこ。手元に本ないのよ。
立ち読みして名前とかでグぐれるかと思ったらうまく引っかからなかったの。
>>164 プログラミングなんて、目的があって勉強し始めたやつじゃないと
普通に挫折するから、深入りせんでいいよ。乙
175 :
デフォルトの名無しさん :2006/07/29(土) 02:00:35
学生時代はやたら真面目に勉強してたが、趣味グラムには興味を持てなかった 社会人になってからはやたら趣味グラムが楽しい・・・ 周囲のレベルに合わせなくて良いというのがこんなに快感だなんて
176 :
デフォルトの名無しさん :2006/07/29(土) 03:27:48
自分はやさしいJavaが終わったところなのですが、基礎が出来ただけで応用力がないので 独習Javaで問題を解いていこうと思っているのですが、独習Java持っている方いますか? どのような問題が出るのか知りたいです
178 :
176 :2006/07/29(土) 04:12:42
>>177 なるほど着目する所がずれていました、経験者の方のアドバイスは本当に参考になります
>>175 わかるな〜
漏れも仕事でjavaやっていたが、精神的に疲れたので、無関係な職種に転職した。
すると、自分のペースでするプログラミングが楽しくて楽しくてw
趣味グラマー最高!
180 :
デフォルトの名無しさん :2006/07/29(土) 13:57:02
System.out.println(data[2]); と System.out.println(data[data[2]]); と System.out.println(data[data[data[2]]]); のちがいってなんなんでしょうか?
data[2]には2が入っているというわけではないということさ
182 :
デフォルトの名無しさん :2006/07/29(土) 14:04:56
えーとじゃあたとえばint data[]={5,3,1,4,2};とすると、 System.out.println(data[2]); では、3が表示されるんですよね? となると、System.out.println(data[data[1]]);を実行したらなにが表示されるんでしょうか?
183 :
名無し募集中。。。 :2006/07/29(土) 14:13:33
試せよw 試さなくてもおかしいけどw
185 :
デフォルトの名無しさん :2006/07/29(土) 14:17:03
すいません、かきかたが悪かったです。 dataを2,1,4,5,3でおくと1が表示され 5,3,1,4,2でおくと4が表示されてどういったものが表示されるのかがわからないんです
日本語が不自由な人はさようなら
コンピュータ業界では順番は0から数える。
188 :
デフォルトの名無しさん :2006/07/29(土) 14:24:27
int data={5,3,1,4,2};で System.out.println(data[data[1]]);で4と表示されるのがどうしてもわかりません。 なぜ3でなく4なんでしょうか
おまえらちゃんとおしえてやれよwいじわるさんだなwww
data[0]は5,data[1]は3てのかわかるよな。 data[data[1]]はdata[1]が3だから置き換えると結局data[3]になるよな。 data[3]は4だ。だから4と表示される。 わかんねーなら0番から始まる下駄箱の絵を書いて考えろ。 0 1 2 3 4配列の添え字 5 3 1 4 2格納されてるデータ
なんて丁寧な人なんだチクチョウ!
193 :
デフォルトの名無しさん :2006/07/29(土) 15:06:51
最前面に表示されていないプログラムに対して、 画像を取得したりクリックしたりできませんか?
なにをききたいのだかまったくわかりません
195 :
デフォルトの名無しさん :2006/07/29(土) 16:30:30
プロセスメモリを閲覧したいのですがどうすればよろしいでしょうか
196 :
デフォルトの名無しさん :2006/07/29(土) 17:09:03
Java5 の質問です。 1.4 では、マップの内容を一覧するような場合 Map map = new HashMap(); // キー、値ともに String // map に何か入れる処理 Iterator ite = map.keySet().iterator(); while ( ite.hasNext() ) { String key = (String) ite.next(); String value = (String) map.get( key ); System.out.println( value ); } のような記述になると思うのですが、これの宣言部分を、 Java5 で、 Map <String,String> map = new HashMap <String,String> (); // キー、値ともに String のような宣言に変えた場合、後半の while文の内容はどう変わる(変えることができる)のでしょうか? String value = (String) map.get( key ); のキャストが要らなくなる、というのはわかるのですが、それ以外は変わりませんか?
うん。
気持ちはわかるがね。単にコンパイラがそれを裏でやってるって分かれば怖くない。
// 1.5 for ( String key : map.keySet()) { String value = map.get( key ); System.out.println( value ); } そもそも値しかイテレートしないときは 1.4 でも map.values() 使う方が効率的。その場合は // 1.5 for ( String value : map.values() ) { System.out.println( value ); }
RandomAccess実装してたらiループに切り替えたりとかしてくれるのかねぇ
>>199 なるほど、やはり便利になっていますね。
助かりました!ありがとうございます。
JSPで、生成したクラスを持ちまわしたいのですが うまくいきません、何が問題なのでしょうか・ 下記が、コードです。 if(session.getAttribute("DBM")==null) { DBC DBM=new DBC();//DBモジュールの生成 DBM.open()//DBのオープン session.setAttribute("DBM",DBM);//session変数に格納 } else { DBC DBM = (DBC)session.getAttribute("DBM");//sesion変数より受け取り } これで、受取ったDBクラス使用しDBセッションを持ちまわしたいのですが エラーが発生してしまいます。。 一度、生成を行ったクラスを持ちまわすのにsession変数を 用いようと考えましたが、このような場合には別の方法の方が良いのでしょうか?
DBモジュールとやらはシリアライズ可能か? でないならそういう設計は拙い
>>203 レスありがとうございます。
先ほど自己解決できました。
構文の書き方に問題があったようです。
下記の様に改変した所問題なく動作いたしました。
DBC DBM = (DBC)session.getAttribute("DBM");//sesion変数より受け取り
if(DBM==null)
{
DBC DBM=new DBC();//DBモジュールの生成
DBM.open()//DBのオープン
session.setAttribute("DBM",DBM);//session変数に格納
}
ありがとうございました。
205 :
デフォルトの名無しさん :2006/07/29(土) 22:31:59
すいません
暗号化してみたくて
ttp://d.hatena.ne.jp/trash717/20050625 このページのソースコピってやってみたのですが、
上の方で暗号鍵を指定しているようなのですが、
String key = "abc";
その下でもテキストがあるのですが、
byte[] ivbb = "testiv".getBytes(); ←ここってなんでしょうか?
IvParameterSpec ivspec = new IvParameterSpec(ivbb);
// Triple-DES encryption
Cipher cipher = Cipher.getInstance("DESede");
cipher.init(Cipher.ENCRYPT_MODE, myTripleDesKey,ivspec);
↑ここを なくしても暗号化出来るのですが、第2キーみたいなモノなのでしょうか??
>>205 DES-EDEのための乱数列の初期化ベクトルを指定している
暗号鍵とは別物
いやそれはjava難しいのと問題違う
>>205 Cipher cipher = Cipher.getInstance("DESede");
この部分だけどCBCモードを使用するように変えたほうがいいよ。
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
理由はSunJCEプロバイダのデフォルトモードがECBモードのため。
「Javaは難しい」的な発言をする == Javaを理解してませんと自白
equalsならtrueだけどそれはfalseよ
ArrayList<String>[] data = new ArrayList<String>[MAX]; ってやろうとしたら「汎用配列を作成します」とかってコンパイラに 怒られて、他にも色々試したものの、しっくりくる結果が得られなかった。 ArrayList<E> の配列ってどうやっても作成不可能なの?
StringBuilderが扱える容量の限界を調べる方法ってある?
インスタンスの生成の話?内部で設定されてるキャパの話?
どういう限界を調べる気だ?
先にOutOfMemoryErrorが起こりそうだw
ここ聞くのはスレ違いかもしれませんが X=A+(B+C)/(D+E**(F*G))を Polish記法で表すと =X+A/+BC+D*E**FG 逆Polish記法で表すと XABC+DEFG***+/+= でよろしいでしょうか? もしスレ違いなら、お手数ですが誘導お願い致します
死ね
>>218 まあスレ違いではあるな。分かっていてやってるうんこは逝ってよし
ところで、
=X+A/+BC+D*E**FG
は
X=A+(B+C)/(D+E*(F**G))
の意味だと思うが。
逆に
XABC+DEFG***+/+=
は
X=A+(B+C)/(D+E*(F**G))
とも解釈できるので、こちらはambiguousじゃないのか?
>>220 どうもレスありがとうございました
=X+A/+BC+D**E*FG
XABC+DEFG* **+/+=
と書くと正解なのでしょうか?
だからスレ違いだと言ってるだろう うんこは優しくするとすぐこうだ がんばって板なりスレなり探せ
>>222 うっとおしいならスルーするなりあぼんするなりしておけよチンカス君
>>221 それでおk
>>223 マンカスくんに言われたくないな
>>221 逆Polish記法の処理系による
空白を無視するような処理系なら意味がない
**の代わりに^とかで表記すべきかも
FORTRANとかの文を処理するのなら仕方ないが
>>215-217 遅レスすまん
StringBuilder に次々と追加していって OutOfMemoryError が起こる限界です
Runtime.getRuntime().freeMemoryだったかな
>>225 OutOfMemoryでいいのなら設定しだいで8KBくらいでだせるんじゃ
>>223 前半は別に構わないが、後半の発言でお前も厨認定
229 :
デフォルトの名無しさん :2006/07/30(日) 23:50:11
Javaって本当に安全な言語ですよね。 C++に転向するときに苦労しそうです。。。 特にオブジェクトの開放とか忘れそうです。Javaなら 使い終わったオブジェクトにnullを代入すればGCが かき集めてくれるんですけどね。
まあC++にはもっといいイディオムがあるからな
>>229 >オブジェクトにnullを代入すれば
ここに間違いが2点ほど
>GCがかき集めてくれる
ここに落とし穴が1点ほど
>>231 乙。俺もどう突っ込めばいいものやら途方に暮れていたところだ。
233 :
デフォルトの名無しさん :2006/07/31(月) 00:36:09
漏れも詳しいのキボンヌ
>>231 ではないが・・・
「オブジェクトにnullを代入」→間違い。代入できるのは変数。
どこからも参照されなくなったオブジェクトがGCの対象となる、というだけ。
他の変数から同一オブジェクトを参照していればこの限りではない。
変数のスコープを抜ければnullを代入する必要なんて無い。
むしろ、「nullを代入したから大丈夫」という、変な安心感を与えてしまい
実は他所からの参照が保持され続けていた、という状態を引き起こしかねない。
236 :
231 :2006/07/31(月) 01:03:31
「GC がかき集めて〜」 のところの落とし穴ってのは、さんざん既出だけど 『どのタイミングで回収されるか分からない』 って点。 本当に GC に任せていいのなら、Input/OutputStream の close とか Frame の dispose は要らない。
237 :
デフォルトの名無しさん :2006/07/31(月) 01:51:52
GCはJava Virtual Machineの外側にあるリソースは最初から 開放する事はできない仕様になってるよ。 だから231もちょいと違うかも。。。
239 :
132 :2006/07/31(月) 09:50:32
遅れましたが133さん 回答ありがとうでした。
EL式についての質問なのですが、 (tomcat5.5.17,JSTL1.1.2) ${sessionScope.ほげほげ} で自分でセッションに設定したプロパティについては、既に値が取れているにもかかわらず、 ${sessionScope.maxInactiveInterval} では値が取れません。 HttpSessionにはgetMaxInactiveIntervalメソッドがあるので、bean規約にしたがえばプロパティ名maxInactiveIntervalで 取得できると思ったのですが、なぜ取れないのでしょうか。それともこれは仕様ではなく、なにか設定に問題があるのですか。
241 :
デフォルトの名無しさん :2006/07/31(月) 15:02:26
ぐだぐだ〜。
>>240 それはHttpSessionのインスタンスじゃないよ。
${pageContext.session.maxInactiveInterval}
で、できると思う。
>>242 たしかにいけました。
EL式のsessionScopeとpageContext.sessonは、インスタンスとして同じものだと思ってました。
なんだか非常に根本的なところで知識が不足している気がしますので、
本かって勉強します。どうもありがとうございました。
244 :
231 :2006/07/31(月) 22:16:44
>>238 悪い。finalize から close 呼ばれてると思ったら呼ばれてなかった orz @FileWriter
jspからjavaのメソッドを呼び出したいんだけど、javaをパッケージに入れなきゃ無理ですか? <%page import = クラス名 で読んでいるんだけど、クラスを呼ぼうとするとjspの中を見に行ってしまう。
>javaをパッケージに入れなきゃ無理ですか? いろいろ突っ込みどころはあるのですが、おおむねそのとおりです。
247 :
質問age :2006/07/31(月) 23:35:24
Cからの転職組なんですが、Cにおける typedef struct{ charuseFlag; charname[10]; intprice; } typHoge; という記述はクラス変数にしちゃえばいいと思うのですが、 typHoge hoge[3]={ {1,"cola",120}, {0,"fanta",110}, {1,"coffee",130} }; のように初期値を一気に記述する方法が解りません。 hoge[0].useFlag=1; のように一々書かなくてもいいスマートな記述方法をどなたかご教授ください。
>>247 残念ながら無い
……それからクラス変数にする意味が分からない
あー、いや、すまん。確かに C 並の簡潔さは無いけど class Hoge { boolean useFlag; String name; int price; public Hoge(boolean useFlag, String name, int price) { this.useFlag = useFlag; this.name = name; this.price = price; } } にして Hoge hoge = new Hoge[] { new Hoge(true, "cola", 120), new Hoge(false, "fanta", 110), new Hoge(true, "coffee", 130), } ならできる
250 :
247 :2006/08/01(火) 00:24:35
251 :
176 :2006/08/01(火) 03:31:43
>>177 デザインパターン入門買ってみました、凄い濃い内容ですね
まだDPの概念が理解しきれておらず、序盤のIteratorをやっていて気づいたのですが
DPというのはクラスを継承したりインターフェースを作って、それを元に様々なプログラムが利用でき
それが再利用性に繋がり、そのパターンを皆で共有すればお互いのソースが理解しやすい
という風に考えていいのですかね
とりあえず今はIteratorを理解するのに必死です、まだ一つめなのに苦労してます・・・
>>251 Strategy から読み始めることを勧めてみる
ありゃパターンに入ってることにびっくりする。
Template Methodとファクトリ系のパターンを組み合わせると デザパタで設計してる気分にかなり浸れるね。
シリアライズしておいて実行時に読み込むじゃダメなの?
taglibの質問もここでいいかな。 jspに自分で作ったカスタムタグが2つ書いてあって 最初に呼ばれるタグがSKIP_PAGEを返してるのに 2つめのタグも呼ばれてしまいます。 これって仕様???
257 :
256 :2006/08/01(火) 11:11:46
自己レス。 doEndTag()で返さないと行けないのね・・・ doStartTag()でSKIP_PAGE返してもだめなんだな。
JavaScriptのスレが見つからないのでここに書くが、 alert(100*5.1);とかやると大変なことになるのね・・・
appletviewerの再読込みをするとapple(ryのウィンドウが消えるんだが。
javascriptとjavaを混同している人って、いまだにいるんだよね。 なんだかなあ。 C言語とCシェル混同する人は見たこと無いのに(笑)
>>262 JavaがわかればJSもわかると思ってる時点で混同だよ、アホ
一つ一つちゃんと理解して覚えて行くのと とりあえずたくさんプログラム書いて徐々に覚えて行くの ではどちらのほうがいいんでしょうか?
どっちでもいいから
個人的には後者をある程度やって、 途中から前者に切り替える。
BufferedReaderでファイル読み込んで ある1行で'b0101 aaa 次の行で 'b0001 aab 見たいな感じの文章のaaaとかaabだけを取り出す時に if (str.startsWith("'")) { String s1 = (str.substring(str.indexOf(" "))); これでやると空白まで取れちゃうんですが、空白を抜いたaaaやらaab いう値だけは取る方法ってないでしょうか。 空白は変わらないんですが、aaaとaabは可変するように考えてやりたいんですが どうしたら実現できますか??
>>265 人によって、学習方法にも向き不向きがあるからね。
270 :
268 :2006/08/01(火) 17:31:42
すいません。解決しました。 substringに+1すれば良いことだったんですねorz
吸いません。じゃなくて 住みません。だろが
273 :
デフォルトの名無しさん :2006/08/01(火) 18:17:30
ネット上のサンプルを見てるとthis.***というコードをよく見るんだけど、このthisって何でしょうか?
275 :
デフォルトの名無しさん :2006/08/01(火) 18:31:13
276 :
デフォルトの名無しさん :2006/08/01(火) 18:50:05
質問させてくれ。 JavaAppletでファイルをDnDして、そのファイルをphpか何か介してうpしたいと思っている。 だが、DnDでファイル読むとか基地外な事をやろうとする時点で詰まってる。正直わからん。 なんかRad Upload Liteとかいうフリーウェアが同じことやってるらしいが解析不可能。 ぼすけて。
>>277 質問させて下さい。
JavaAppletを用いて、ファイルをドラッグアンドドロップさせてそのファイルを読み取り、
phpやaspxに投げてファイルをアップロードしたいと考えています。
アップロードのロジックは出来ているのですが、JavaAplletでのファイル読み込みの方法がわかりません。
JavaAppletでのドラッグアンドドロップ、ファイル読み込みの方法について分かる方いらっしゃいましたらご教授願います。
279 :
デフォルトの名無しさん :2006/08/01(火) 23:51:35
すみません。質問お願いします。 emという名前のパッケージにあるMaxGameというクラスを起動したいと思います。 emの上のディレクトリにいると java em.MaxGame で起動できました。たいていの本にもそんなことが書いてあります。 しかし、 java em/MaxGame でも起動できてしまいます。これは私が見た範囲の本には書いてありません。 どっちでもいいと言えばそうなんでしょうが、他の環境(私の環境はWinXP、Java5です)でも そうなのか不思議です。 あるいは、この辺の仕組みを書いたドキュメントを教えていただけないでしょうか。 よろしくお願い致します。
>>279 java em.MaxGame ⇒ em.MaxGame が起動
java em/MaxGame ⇒ MaxGame が起動
280は何言ってるの?
>>279 前にソースを見たときはデフォルトのクラスローダは "." を "/" に置き換えて
クラスパスからクラスファイルを読み込んでた気がする。
ホントは置き換え前に "/" があったらエラーにすべきなんだろうけど
単純に "." の置き換えしかやってないみたいだからどっちでも通るんだろう。
>>279 確かにそうだね。
たとえば、em.MaxGameを削除して実行すると、「em/MaxGameはありません」って出るよね?
ということは
>>282 が正解のような気がする。
>>278 Aplletだからローカルへのファイルアクセスは出来ません。
もしそのようなことが出来たら、ディスク上のユーザの情報を抜き取るような
アプレットが作れてしまいます。
仮に苦労して出来たとしても、それはVMのセキュリティホールを突くような裏技的なものでしょう。
早晩パッチが出て動かなくなるのが関の山です。
まてまて、Applet じゃなくて Apllet の事らしいぞ。
288 :
デフォルトの名無しさん :2006/08/02(水) 05:49:47
先日デザパタのIteratorで四苦八苦してると言った者です、依然苦労してます 自分がやっているIteratorパターンは本棚の中に本を入れ、その本の名前を順番に表示するものです。 Aggregate.java/Iterator.java/Book.java/BookShelf.java/BookShelfIterator.java/Main.java 以上の6つのクラスから成り立っているのですが、この6つの中身を追っていくのが難しいです 全てのソースを自分の中で把握出来ないというか、こういうクラス達をどう捉えていいか分かりません やさしいJavaやデザパタ入門著者のJavaプログラミングレッスン上下をやって 忘れた、又は出てこなかった文があります。 例えばMain.javaのbookShelf.appendBook(new Book("Bible"));など自分が知らない形をしたものがでてきます newをしているのでオブジェクトを生成してBookにappend(追加)としてると予想出来るのですが 基礎から今やってるものがどのように繋がってるか分からなくなります オブジェクト生成の応用なのか、はたまた***.append***(new ***("***"))という形そのものが文として存在するのか コンストラクタとメソッドも似ているではないですか、最初は同じ物だと思っていましたし こういう分からない文は虱潰しにGoogleなどで一つ一つ調べてるのですが たまに今自分がやってる事が正しいのか、無駄な事してるのか不安になるときがあります …質問がずれてしまいました、俺には今なにが必要なのでしょうか( ;∀;) エスパーサンタスケテ
質問です。 AudioClipってwaveも使えますか
290 :
デフォルトの名無しさん :2006/08/02(水) 06:21:17
>>288 IteratorではなくVisitorから始めなさい。
291 :
デフォルトの名無しさん :2006/08/02(水) 08:04:53
>>288 そのだらだらした書き込みを見ると、
デザインパターンを勉強しても
活かせない気がするのは俺だけ?
とりあえず、デザインパターンのスレにどうぞ。
>>288 イチイチ質問してたらラチあかなさそうだし、紹介したなりに責任感じるし、
疑問点があったら話聞くわ。捨てアド作ったから連絡汁。
do_you_want_to_java @ yahoo.co.jp
>>289 音楽やりたいならJavaSound使え
ネイティブと同じ程度まで自由につかえるぞ
ゲームならOggVorbis使うとか
>>288 とりあえず、
・Iterate 対象のオブジェクト
・Iterator 本体
・Iterator を使ってごにょごにょする処理
の3つに分けて考えるんだ。
295 :
デフォルトの名無しさん :2006/08/02(水) 12:15:47
初心者がJAVAの勉強するのに適してる本教えてください。 本屋でちらっと見てもよしわるしがわかりません。 あと、ゲームを作りながら覚えるみたいのがありましたが その手本はまずいですか?
ゲーム作るのが目標ならそれでよい
297 :
288 :2006/08/02(水) 12:46:02
>>292 変な気遣いをさせてしまって申し訳ないです、あの段階では右も左も分からなかったので
DPという物を知ったと言うだけでも大きな利益になりました、責任を感じるなんて滅相もない
>>291 氏が指摘するように、DPを使うまでに至っていないからだと思います
メアドまで取ってもらったのに申し訳ないですが、基礎に戻ってもう一度頑張ってみます
>>290 >>294 参考にさせて頂きます。
JavaとJavaScriptってどっちが難しい?
JavaScript。
間を取ってJScript
JavaにScriptがついてるんだから、長さからいってもJavaScriptに決まってるだろアホか
>>301 いや、その理屈はおかしい。
Script はお手軽なんだから、Java だろ。
マジレスすると標準ライブラリの少なさでjavascript
デバッグのしにくさ、DBアクセスやトランザクション制御、 マルチスレッドプログラムの作りにくさでJavaScript。 Javaでやるほうが断然簡単。
よしわるし←何故か変換できる。
306 :
デフォルトの名無しさん :2006/08/02(水) 17:22:04
VBAがちょっとできるだけの初心者です 最近ホームページにjavaがついたのがありますが、これは解析できるんですか? たとえば時計とか・・・ 世界の時刻ってありますよね、そのデータをリアルタイムで取得したいんですが java勉強すればデータを取得できますか? ちなみにjavaはまったく勉強してません
まったくわけが分かりません。
ウィンドウクローズに関する質問です. 右上の×ボタンが押されたら,アプリケーションが終了する際に windowClosing(WindowEvent e) が呼ばれると思うのですが,この時に終了するか否かの確認ダイアログを表示し, YESだった場合にのみ終了するようにしたいのです. つまり,NOのときは終了を中断したいと思っています. ウィンドウのクローズを中止するような手法が確かあったと記憶しているのですが, 探しても見付けることができませんでした.ご存知の方,どうかご教授くださいませ.
何もしなければ終了しない。 終了のときはSystem.exit(0);
>>308 「windowClosing」でぐぐったら7番目にそのもののサンプルが
あったyo!
setDefaultCloseOperation()
>>309 うまくいかないですね...
断片的なのですが,下記のように記述しています.
//----コンストラクタ中
this.addWindowListener(new WindowAdapter(){ // コントロールのクローズボタンが押された場合
public void windowClosing(WindowEvent e){
programExit(); // プログラムの終了処理呼び出し
}
});
//----
public void programExit() { // プログラムの終了処理を行うメソッド.
int value = JOptionPane.showConfirmDialog(this , "終了しますか?","終了" , JOptionPane.OK_CANCEL_OPTION);
if (value == JOptionPane.YES_OPTION) { // 終了が選ばれたとき
System.exit(0); // プログラム終了
} else { // そのほかの場合
; // 何もしない
}
}
これで,NOを選んだ時にもウィンドウが閉じられてしまうのですが,
何かおかしいでしょうか?このprogramExit()は,
ボタンを押した時にも呼ばれるようにしているのですが,
このボタンから終了を選んだ時には正常に機能しています.
ですが×ボタンだとダメなようです...
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);した?
超初心者です。 J2SE5.0をインストールしようとすると文字化けしてしまうのですが どうすれば直るのか教えてください
314 :
312 :2006/08/02(水) 18:31:20
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); でおk
316 :
308 :2006/08/02(水) 18:33:29
>>310 ,312
いや,お恥ずかしいです...
こんなところでミスってたとは....
setDefaultCloseOperation()
を設定していませんでした.;;
ということで設定したら,意図通りの動作をするようになりました.
ありがとうございました.
>>313 どこが文字化け?
何にインストールしようとしてるの?
313は国語から勉強ね。(・∀・)
swingなら俺に任せておけ
任せた
大歓迎とスレタイに書いておきながらとてつもなく不親切な初心者板。
ここは搾取労働層の派遣社員が初心者相手にガス抜きするためのスレですが何か?
新しいEffective Javaが近々出ると聞いたのですが本当でしょうか?
>>320 初心者は初心者でも、自発性のカケラも見られないクズがやたらと多いからな。
・ちょっとやってみればすぐにわかることを聞く ・ちょっと調べてみればすぐにわかることを聞く ・他力本願 ・教えてもらって当然という態度&思い通りの答えがもらえないと逆ギレ ・日本語がまともに使えない ・Javaの初心者じゃなくて社会とのコミュニケーションの初心者 こういう奴は願い下げだね。
お前が来るスレ間違ってるってw
いつになっても厨房と自治厨は消えないのな。 fj にでも引っ込んでればいいのに。
Integer[] から int[] に変換する方法って何がある? 全ての配列要素を intValue() するしかない?
はい
proguard(2.0, 3.6, 3.7b全部) で処理した後で 下記のプログラムの実行結果が "aaa" しか通らないんだけど、なにか心当たりある方居ますか? public static void function() throws IOException { try{ // 処理 System.out.println("aaa"); }catch( IOException e ){ System.out.println("eee"); if( _DEBUG ) System.out.println( "function() : 失敗しました。" ); throw e; }finally{ System.out.println("bbb"); try{ // 後始末 }catch( IOException e ){} System.out.println("ccc"); } System.out.println("ddd"); }
初歩的な質問で申し訳ないのですが jcpadでソース打ってエラーも出ず実行もするのですが その際に出るコンソールがすぐに出て消えてしまいます・・・ 本来ならずっと出ているはずなのに! 実行結果も確認できるのですが瞬間的にしか見れません 原因がわかりません
ArrayListの中に数字を数個入れて、その中の最大値を得る方法って どのようなものがあるのでしょうか? お手数ですが、教えていただけないでしょうか。
入れる前に紙に書いておく
>>335 比較の仕方ってどうするのでしょうか?
質問ばっかりですみません。
>>337 最大値知るのにソートはいらないよ
Collections.max使おうぜ
JSPとサーブレットをつかったWEBアプリケーションをつくっています。 サーブレットからクライアントにあるexeファイルを実行させる命令をだしたいのですが そういった事は可能でしょうか よろしくお願いします。
サーブレット/JSPはクライアント側から見れば、静的なHTMLとなにも違いはありません。 違うのはサーバ側だけです。まず、仕組みを理解しましょう。
JSPとサーブレットを使わない方法なら可能
>>335-339 こんな無知な質問に対して
「ググれカス」とも言わずに教えてくださってありがとう(´Д⊂グスン
質問です ArrayList<Image>にBufferedImageからgetScaledInstanceで取り出したImageをaddしたいのですが、NullPointエラーがでます。 何がいけないのでしょうか。ソースの該当部分は↓ public static int Unit_img_read(String path){ int i=0; File f=new File(path); Image img; try { BufferedImage bi = ImageIO.read(f); global.nation.img.add(bi.getScaledInstance(global.chipsize,global.chipsize,Image.SCALE_SMOOTH)); i=global.nation.img.lastIndexOf(bi.getScaledInstance(global.chipsize,global.chipsize,Image.SCALE_SMOOTH)); } return i; } } どうかよろしくお願いします
fillPolygonで色を塗ったピクセル数を知りたいんですが、調べても方法が見当たりません… 無いんでしょうか? というかfillPolygonを実際に処理してるのはどの部分なんでしょうか? Graphics.javaはabstractだったのでわかりませんでした 何卒宜しくお願いします。
>>345 真っさらなコンポーネントに描画して、色が違うところをカウントすりゃ
いいんじゃないか?
348 :
344 :2006/08/03(木) 18:41:39
すいません Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at file.imgread.Unit_img_read(imgread.java:34) と出ました それと、global.nation.imgはpublic ArrayList<Image> img=new ArrayList<Image>();です。
>>348 bi が null になってしまっているかどうか調べてみて。
こういう場合、
どのオブジェクトが例外を発生させているのか
まず特定しないと。
biはnullではありませんでした これと同じ処理で、ArrayList<Image>ではなくて、Imageに代入しているものがあるのですが、そちらではエラーは出ず、Imageの中身もしっかりと存在します。 pathも確認しましたが大丈夫でした。 ArrayList<Image>の各要素が何か特別なのでしょうか…
>>347 ゲームで使ってるんで同じ色の別のポリゴンがかぶってしまうんです。
そういう面積を求めるメソッドって無いですか?
352 :
333 :2006/08/03(木) 21:33:25
またまた質問ですみません。 Collections.maxのおかげで最大値は分かるのですが これを比較に用いることはできないのでしょうか? ArrayList count = new ArrayList(); ArrayList<String> list = new ArrayList<String>(); count.add(list.size()); int a = 0; if(a < (Collections.max(count))) { 〜〜 } という処理をしたいのですが、比較のところでエラーがバンバン出ますorz 説明が分かりにくくてすみませんが「もしかしたらこれじゃない?」と 言うのがありましたらご指摘お願い致します<(_ _)>
>>345 fillPolygonの引数から自前で計算するのではダメかな。
>>352 ArrayList<Integer> count = new ArrayList<Integer>();
これでコンパイル時の型エラーが消えるはず。
356 :
333 :2006/08/03(木) 22:30:31
>>355 <Integer>でしたか。
<int>で試して無理だったので頭抱えてた自分は馬鹿ですね('A`)
感謝感謝です。
ところで皆さんに質問なのですが
参考書とかは何か使っていますか?
ArrayListが載っている本は少ない気がするのですが・・・・
「お前みたいな無知はこれでも読んでろ!」っていう本はありますか?
>>356 一昔前の書籍だと Vector を使っているのが多いような希ガス。
最近のだと ArrayList が載っているんじゃかいかとは思うけど、実態まではさすがに……。
Java言語仕様 (ISBN: 4894713063)
Sun Certified Programmer for the Java2問題集 (ISBN: 4797324902)
とかはわりとおすすめ。初心者向けじゃないし、5.0 には対応してないけど。
できるなら、ネット上の公式チュートリアルで学ぶのは良いと思う。 無料だし、造り主だし。 ArrayList というよりは、Collections というキーワードになるかな。 5.0 での追加機能関連は 外部の解説ページはあちこちにあると思う。 こういうのどう? www.javainthebox.net/laboratory/J2SE1.5/LangSpec/Generics/Generics.html
359 :
345 :2006/08/03(木) 23:04:37
>>354 遅そうですが…スキャンラインの奴でやってみます
>>356 本もそうですが、態度というか、心構えで。
エラーメッセージが出たら、具体的になんとでているか読み取る努力をして、わからなければメッセージの意味を
調べるような探究心が大切です。
あ、エラーだ、で流してしまうひとは、本を買っても進歩がいまいちでしょう。
l
>>351 意味が伝わっていなかったみたいだな。
本来の描画対象とは別に計算用の描画対象コンポーネントを作っておいて、
その計算用に対して、
真っ白にする→描写する→描写された領域を計算する
ってやれば良いのではないかと。そうすればそれまでに描写されている
データは関係ないだろ? コンポーネントも、インスタンスを1つだけを
(次の計算までの間隔が短いなら、BufferStrategyと同じ要領で複数の
インスタンスを)使い回せば、それほどひどいコストは発生しないだろうし。
>>356 この期に及んで、初級の本でVectorを基本にしてる書籍なんかないだろ。
お前は本を全て古本屋で、しかも300円以下のコーナーで探してるんじゃないか?
まともに勉強する気があるなら、ちゃんと最新書籍を買え。
少なくとも、Ver 1.2 以前のやつはやめろ。
>>345 何を悩んでいるのか知らないが、ピクセル数を知りたいのか、面積を知りたいのか。
もしピクセル数を知りたいのなら境界上のピクセルはどう扱うのかはっきりしろ。
もし面積を知りたいのなら、fillPolygonはどうやって描いたんだ。
頂点の座標が分かってるなら多角形の面積の公式くらい中学校で習っただろうに。
>>363 >>345 はピクセル数って書いてるじゃん。
しかも境界上って、それはピクセル数か面積かの違いだろ。
ピクセル数前提になってないじゃん。
相手をバカにしすぎだろ。
>>351 では面積って言ってるよ
境界上のピクセルはピクセル数に含めるかどうかを聞いているだけなんだが
俺質問者じゃないけど、調子に乗っている奴が少しいると空気が悪くなるな。
367 :
345 :2006/08/04(金) 00:23:20
すいません、なんかお騒がせしちゃって ゲーム用なので境界とかは大雑把でよかったんです。 最初は公式でやってたんですが図形が@←こんな状態の時内側の面積も 足されてしまっていたので困ってたんです。 今ちょっと自前でスキャンラインを実装して、遅いけど何とか動いたんで自己解決です。 ありがとうございました。
369 :
356 :2006/08/04(金) 02:11:45
>>357-358 アドバイス感謝です。
今度書店に行ったら探してみます。
ネットにも色々あるみたいなので、それも探してみたいと思います。
>>360 探究心ですか。
確かに調べる気が無いと駄目ですよね。
今後、意識して探求していきたいと思います。
皆さん、貴重なご意見ありがとうございました。
重ね重ねお礼申し上げます。
372 :
157 :2006/08/04(金) 06:46:21
>172 本当に随分レスおそくなりました。 ありがとうございました。
373 :
344 :2006/08/04(金) 11:56:57
どうやらglobal.nation.imgそのものがNullになっているようで、 global.nation.imgにアクセスするだけでNullPointErrorが出てしまいます。 Imageの初期値がNullだからかなと思ったりもするのですが、 どのようにすればこのエラーが出ないようになるでしょうか いろいろ調べたりもしましたが、まったくわかりません どうかよろしくお願いします
376 :
375 :2006/08/04(金) 12:22:41
jspを過去のファイルに戻したいのですが、 どのように戻して良いかわかりません。 過去のファイルを更新して更新日時を変えると出来るみたいなんですが、 更新せずに最新ファイルを過去ファイルに入れ換える方法を教えて下さい。 WebLogicを使用しています。
うちは6月下旬あたりからずっと見られなかったが なぜか今はIEでも見られる
381 :
デフォルトの名無しさん :2006/08/04(金) 18:14:47
javaのプログラムをWindows上で動くexeファイルにできるって聞いたんですが JITコンパイラ?ってどこでダウンロードできるんですか?
>>374 ブラウザをFirefoxにしたら閲覧する事ができたよ。
この頃Firefoxとかのブラウザで見れてIEで見れないページって多くないかな?
>>381 ベクターのJavaカテゴリを適当に漁れ。
>>383 ブラウザの問題じゃない場合も多い。
HTMLの書き方が不適切だったり、httpサーバーの設定が狂ってたり。
それに、css絡みでFirefoxではまともに閲覧できないサイトの方が多いだろ。
お前が立てたんだろ
VIPなんて臭い所見るワケナイダロw
>>384 IEで思ったとおりに表示させようとして、一般的でない書き方をしたcss
がごろごろしてるからかな。
そういうのをテクニックとして紹介してるサイトもあるし。
そしてIE7の登場でますます混乱する、と。 IE7でのCSS修正は比較的正しい方向への修正ぽいね。
AudioSystem.getAudioStream(file); が例外になるときってどんな時ですか? Fileはnullじゃないです。API見てもわかりませんでした。 この文で例外を投げているのは間違いないのですが
・ファイルが見つからないとき。IOException ・ファイル形式がサポートされてない形式のとき。UnsupportedAudioFileException
そこで間違いないんなら、tryで囲って捕捉してスタックトレースを表示するなりなんなりしたらどうだい。
395 :
デフォルトの名無しさん :2006/08/06(日) 00:55:46
当方初心者です。 クラス変数、クラスメソッドとインスタンス変数、 インスタンスメソッドの違いがいまいちわかりません。 あとオブジェクトとは厳密にはclassを指すものではないの? 俺の中では1つのclassをオブジェクトだと補完してるんだけど。 多分オブジェクトとclassを同義と捕らえてるからわからないんだと思う。 どうかご教授ください。
オブジェクトってのはただのモノ。クラスってのはオブジェクトの属するモノ。 厳密に言わなくてもまったく違うものだ。 あと教えてもらうときは「教示」という。教えてあげるときは「教授」という。
397 :
395 :2006/08/06(日) 01:09:32
>>396 レスありがとう。
オブジェクト=モノの「モノ」って何ですか?
実際にあるものじゃなくあるものと想定した「モノ」なんですか?
あれれ?
クラスの中にオブジェクトがあるってこと?
どういうものがオブジェクトとか具体例とかって出せたらお願いします。
今まで教授だと思ってた教示なのねありがと。
398 :
デフォルトの名無しさん :2006/08/06(日) 01:26:30
>>397 クラスはオブジェクトの設計図と思えばいい。
俺はよく車に例えるんだが、
車の設計図がクラスで、
その設計図をもとに作られた車がインスタンス
車の実体もオブジェクトだし、設計図自体もオブジェクト
んー、難しいな。
>>395 まずインスタンス変数、インスタンスメソッドはnewしたオブジェクトにおいて使える。
「変数名」「ドット」「変数/メソッド名」で使用できる。
str1 = new String("貪"); // インスタンスの生成
str2 = new String("瞋"); // 生成したものについて使用できるのがインスタンス変数/メソッド
str1.charAt(0); // 貪
str2.charAt(0); // 瞋
たいして、クラス変数、クラスメソッドはnewしておらずとも使える。
「クラス名」「ドット」「変数/メソッド名」で使用できる。
String.valueOf(1000); // valueOfメソッドはクラスメソッド
インスタンスメソッドは、「インスタンス」ありきで想定された処理であり、
つまり、「インスタンス+処理」がインスタンスメソッド。
クラスメソッドは「処理」のみ。
なんに使うかは考えてけれ。
400 :
デフォルトの名無しさん :2006/08/06(日) 01:37:53
>>398 こういうのってJavaの絵本見たいのとかに載ってるよね!
一回読むべきかも…。
オブジェクトの定義がいまいち掴めない…。
>>399 凄く丁寧に説明してくれてるんだけどいまいちわからない…。
クラスメソッドの方が限定された場合に使うってことなのかな?
>>395 「オブジェクト」 は 「クラス」 と 「インスタンス」 をまとめて指す言葉。
大抵は 「オブジェクト」 って言ったら 「インスタンス」 のほうを指すんだけど、
ドキュメントだと区別しない場合も多いからね。
「Point オブジェクトを返す」 って書いてあったら 「Point クラスのインスタンスを返す」
って意味だからねぇ。
ちなみに、クラスは Class クラスのインスタンス。
402 :
デフォルトの名無しさん :2006/08/06(日) 01:56:23
>>401 わかりやすくありがとう。
なんとなくだけどわかりそうだよ。
ここのみんな優しいな。
やっぱ独学なら独習Javaとか買うべきなのかな?
今使ってるのが基本情報技術者試験Java完全合格教本
って奴。
もう一冊はじめてのJavaプログラミング改訂版基本編
って持ってるけどこっちはまだ手をつけてない感じ。
1冊終わってからのつもりだったけど平行してってのも必要かな?
目標はないけどとにかく頑張る!
>>402 概念の学習は、あまり急がないほうが良いよ。
じっくりやるとよろし。
それから、『オブジェクト指向は1通りではない』 ってことは注意しなきゃいけないかと。
ケイのオブジェクト指向を先に覚えてから、ストラウストラップのオブジェクト指向を学ぶことを個人的にオススメするよ。
とりあえず前者を覚えると、「オブジェクト」 が何を指すのか理解できるとおもう。
>>403 ケイとかストラウストラップ?とか種類があるんだね。
大変そうだ。
取り合えず基礎の文字列、配列、制御構文、メソッドあたりは大丈夫。
クラスは概念から何から不安次は何を学ぶべき?
MathクラスIntegerクラスとかも速めに覚えるべき?
継承とかかね。
軽く一通りは覚えたいんだよね。
オブジェクトを 『外側から』 扱う方法を先ず学ぶべき。 例えばインタフェイスや多態を使うとどんな感じに何ができるのかとかを。 大体完了したら、次はそれを定義する方法を学ぶ。
406 :
デフォルトの名無しさん :2006/08/06(日) 03:32:00
tableの横線を斜めにしたいんですけど、どうしたらいいでしょうか。
第三者にもイメージできる表現でおながいします
408 :
デフォルトの名無しさん :2006/08/06(日) 04:05:23
分かりにくくてすみません。 HPを作成しているのですが一つのページを斜めに区切りたい場合、 HTMLのTABLEタグ等で二段のテーブルを作った場合に 真ん中の罫線を斜めにする事はできませんか?
できません
>>404 ケイ
→Alan Kay Smalltalkのひと
ストラウストラップ
→Bjarne Stroustrup C++のひと
ストラウストラップ →Bjarne Stroustrup 禿
さっきからオブジェクト指向のことでゴチャゴチャ言ってる人は、 オブジェクト指向っつーよりは、UMLを勉強するべきなんじゃない?
public class hogehoge extends Applet{ String name; public void init(){ name = getParameter("imgName"); } というぷろぐらむのString nameの所は、 String型の変数nameを宣言して、 name = getParameter("imgName")のところで オブジェクトを作成して、その変数を使えるようにしていると考えて良いのでしょうか?
>>414 30点。
それは新たにインスタンスを生成しているとは限らない。
Javaにはプリミティヴ型と参照型しか存在しない。
プリミティヴ型というのは、int とか double とか char とかの
基本的なデータ型のこと。
で、参照型っていうのは、メモリ上のどこにインスタンスがあるかという
情報を格納したもの。
例えば、
SomeClass someClass = new SomeClass();
という文があったとして、new 演算子はメモリ上に新たなインスタンスを
生成する。で、変数 someClass にはそのインスタンスがどこにあるのか
という情報だけが格納される。
で、以降 someClass.someMethod(); という風に利用することで、
メモリ上のインスタンスを辿ってメソッドを実行できるという流れ。
で、String 型はあくまでも参照型であって、その getParameter(String)
メソッドで返されるのも、やっぱり参照型。
もしそのメソッドが
return new String("xxx");
という風に、新たにインスタンスを生成してその参照型を返したなら
まだ良い。
416 :
続き :2006/08/06(日) 10:13:32
しかし、例えば public class SomeClass{ private String myName; public String getName(){ return myName; public void setName(String name){ myName = name; } } } というクラスのインスタンスがあったとして、getName() メソッドで String 型の返値を得たとしよう。 しかし、その返値はあくまでも「この文字列情報は、SomeClass の インスタンスの中にありますよ〜」って情報しか持ってないから (具体的に文字列の内容が何なのかという情報を持っていない)、 もし setName(String) メソッドが使われて myName に何らかの 変更が加わった場合、それを参照している変数にも影響が及ぶ。 だから、返値は何でもかんでも新しく生成されて出てくるものと 思うのはやめるべし。
>>414 まあ、そうだね。
String name; だけでは中身のないものを宣言しているだけ。
name = getParameter("imgName");の部分ではオブジェクトを作成しているかどうかはわからないが、
どこかで作成されたStringオブジェクトを、変数nameの中に入れて使用できるようにしていると考えていいね。
418 :
414 :2006/08/06(日) 11:53:28
ブラウザからテキストファイルをアップロードし、 そのテキストファイルから取得した情報を画面に表示するという処理を行おうと思っています。 しかしアップロードされるテキストファイルのエンコードに何が指定されるかがわからないため、 文字化けに苦労しています。 テキストファイルのエンコードを知る方法というものはあるのでしょうか?
ArrayList<String>ではsplit()は使えないのでしょうか?
>>420 ArrayList<String> list = new ArrayList<String>();
list.add("a,b,c");
list.add("de,fg,hi");
for(String s:list)
for(String t:s.split(","))
System.out.println(t);
>>419 文字コードがJIS,SJIS,EUC-JPだけなら、
InputStreamReaderで与える文字セットにJISAutoDetectを指定すると一応自動判別してくれる。
やばい、
>>421 見るまでforeach文で配列が使えること知らんかった。
iteratorインターフェース実装済みのオブジェクトのみと思ってた。。。
424 :
420 :2006/08/06(日) 15:11:51
>>421 即レス感謝感謝です。
早速試してきます。
>>418 推敲はしたのか?
今読み始めたところだが、最初の数行で国語的に微妙だぞ。
内容も大事だが、文章が適切でないといくら頑張っても相手に伝わらんぞ。
他人が読んでるつもりで、もう一度全体を見直して、再うpしる。
427 :
420 :2006/08/06(日) 15:50:08
>>421 おかげさまでプログラムはできたのですが
少々質問が。
for(String s:list)
この処理ですが「listをString型のsに入れる」ですよね?
for文は繰返処理のみと思っていたのですが。
お手数ですが、少しだけ解説してもらえないでしょうか。
421ではないが。 for(String s:list) は list の各要素を順々に s に代入していくという意味だ。
ぬるぽ
>>427 listそのものではなく、listの要素を順番にsに代入して繰り返す処理。
for(Iterator i=list.iterator(); i.hasNext();){
String s = i.next();
:
:
}
のような処理を行っている。
ガッ
for(String s : list){ ・・・ } と for(int i=0; i<list.size();i++){ String s = list[i]; ・・・ } は同じって考えれ。
433 :
432 :2006/08/06(日) 16:00:00
前半の方だったか…orz
>>422 それが指定される文字コードがまったくわからない状況なので・・・
ポルトガル語を含んだよくわからない文字コードのファイルやら、
ハングルが入ってるテキストファイルやら・・・
テキストファイルから「推測」はできても「判別」はムリそうですね。
ありがとうございました。
435 :
430 :2006/08/06(日) 16:02:28
>>430 の
for(Iterator i=list.iterator(); i.hasNext();){
は
for(Iterator<String> i=list.iterator(); i.hasNext();){
>>434 それは国際色豊かな……
そこまでバリエイションがあるなら、
いっそのことUNICODEに変換してからアップしてほしいと
ユーザに頼んでおくとかの運用面での対処が現実的かもしれない。
437 :
420 :2006/08/06(日) 16:16:18
>>428 、
>>430 、
>>432 解説ありがとうございます。
続けて質問ですが、皆さんはどこで知識を得たのでしょうか?
私は「Javaの道」などのサイトを閲覧する程度ですが・・・。
>>425 楽しそうなので俺も
>>418 を読んでみた。
まず、段落をしっかり分けたほうがいい。
読み手が、複数の事柄をひとつの長文でズルズルと、
読まされていく感じの構成になっているので非常に読みにくい。読み手が頭の整理がしにくいと思う。
もう少し、文章を事柄によって、区切りを付けて書いたほうがいい。
以下は例。こんな感じでなくてもいいけど。
□コメントとは
なんたらかんたら
□インデントとは
なんたらかんたら
□インポートとは
なんたらかんたら
>>437 とにかく色々なソースを読みまくる。
とにかく色々な書籍を読みまくる。
とにかく色々とEclipseに怒られまくる。
>>437 javac と殴り合いながら親睦を深めていくのです。
あとは経験と慣れ。
文法とか単語覚えるのも重要だけど、実際に会話してみなきゃ話せるようにならないってことで。
バイトから帰ってきました。 二名の方が読んで下さったようで嬉しいです。 プログラムの内容は釧路の地図を読み込んで、 それに○を付けて線を引くっていう単純なものなんですけれど、 教えるとなると・・・ 一応レジュメとプログラムを印刷して、このプログラムの機能は こういう意味だよってレジュメを添えて教えるつもりです。 しかし、相手がパソコンのパも知らない上に、 自分もJavaの勉強をはじめて2週間なので、このレジュメを書くために 死ぬほど本とインターネットでしらべました。嘘教えるわけにはいかないので。 ホントは、JavaっていうのはSun microsystemsが開発した言語で、 プラットフォームに依存しないとかも教えなきゃいけないんでしょうけど、 いかせん時間がなくて。 文章が支離滅裂なのは徹夜で書いたと言うことで勘弁して下さい。 では、頑張って教えてきます。
今はコンパイルエラーも例外もちゃんと日本語で出るから良いじゃん
>>442 「教える」のであれば、前もって大層な資料を作っても無駄だと思うけどな。
質問してくる内容に丁寧に回答すればよし。
うまい講師ほど、その人にあった内容を選択して話す。
今の状態: 研修でちょこっとjavaやってブロック崩しもどきのようなものを作った程度 オブジェクト指向がよく理解できていない javaでゲームを作ろうと思ってます。どういう点に気をつければいいでしょうか
446 :
デフォルトの名無しさん :2006/08/06(日) 23:01:47
初めまして。JavaでHTMLでDOMを使いたいと考えてます。 最近、ShaniXMLParserというXMLパーサを見つけ、 これを使って整形式ではないHTMLをDOMで扱いたいと考えていますが、 Xercesパーサと違い情報が少なくてどのように使うのかがわかりません。 使い方ご存じの方ぜひ教えてください。
>>442 もう少し状況を詳しく書いて欲しいな。
どういった事情で2週間の準備期間のみで教えるとかいう状況になって
しまったのかはよくわからんが、その教える相手がどこまで達成できれば
良いのかって目標もレジュメ作りの大事なところだからな。
単にそのアプレットの仕組みを理解できれば十分ってだけなら、
そのアプレットのソース中で難解と思われる部分だけ抑えれば良いし、
そのアプレットを基礎にJavaの何たるかを教えにゃならんのなら、
要点を虫食いにした穴埋めレジュメを作るなんてのも方向の一つとして
考えられる。
俺も独学バカだから知識面はある意味微妙だが、何かあったら
>>292 にでも気軽にメールくれ。
>>445 特に悩みもない場合は、教えるものも特にない。
プログラム組んでればどういう点に気をつければいいか、何が足りないか、おのずと見えてくる。
そのときに、何か質問したいことがあったらここで聞くといい。
>>445 具体的にどういうゲームを作りたいのだ?
大規模であればあるほど、ある意味 Java の細かいことなんか一旦
忘却の彼方へぶっ飛ばして作らなければ、うまく行かない可能性もあるからな。
import java.io.*; class Test{ public static void main(String args[]){ System.out.println("nurupo"); } } これを実行しようとすると Exception in thread "main" java.lang.NoClassDefFoundError: Test というエラーが出ます。 何が間違っているのかわけがわかりません
452 :
404 :2006/08/07(月) 00:00:26
>>413 UMLが何かよくわからないんですけど今日UMLの本買ってきました。
Java優先で時間あったら学んでみます。
入門書を買ってこれから勉強!って思ってたんですけど、 JDKがダウンロードできなくて。 「J2SE5.0(日本語)」がないんですよね。 いろいろさまよって探しても、それらしきページは真っ白に・・・ 最近はじめられた皆さん、ダウンロードはどうされましたか?
454 :
446 :2006/08/07(月) 00:18:00
自己解決した
プログラミングをこれから始めようとしている初心者です。 JAVAで携帯のゲームを作ろうと思っています。 それで、新しくパソコンを買いたいのですが、 こういう機能があったほうがいいとかオススメのパソコンがあったら教えてください。
PD1Ghz、メモリ768MBのノートがあれば十分だよ
正直さ本読みながらプログラム打つのって大変じゃない? パソコン周りゴチャゴチャしてて本なんて置くスペースないんだよね。 だからノーパでやってたんだけどノーパも打つのが安定しない。 いい方法無い?
>>457 1.周りを整理して本を置くスペースを作る
2.専用のスタンドがあるのでそれを使う
459 :
デフォルトの名無しさん :2006/08/07(月) 00:46:48
>>458 スピーカー、タワー型本体、モニター、スピーカー
って並んでるからこれ以上机の上は片付かないんだ。
専用のスタンドか…いちいち手放してセットするのもめんどそう。
やっぱ足の上しかないのかな…。
俺は机だけどパソコンラックだともっとスペースないよね?
みんな頑張ってるんだな。
>>459 タワー型なら机の下に置く
スピーカーはモニターと一体型の物にするか、ヘッドフォンにする
所謂パソコンデスクってのは使い勝手が悪いからプログラム打ちには向いてない
J2SEって1.5でいいの? 1.42とどっちがいい? やっぱ最新の1.5? Eclipseのコンパイラは1.42にしてあるんだけど。 あとどうでもいいけどCDついてる本て読みにくいよね。 CD抜いてなくすのも嫌だしこれも悩む。
>>461 だよね。
机の下は30Wの結構でかいギターアンプが置いてあって移動できないんだ。
スピーカーもコンポのスピーカーの上にPCのスピーカーでどうしようもない状態。
が、がんばるよ!
>>463 俺的にはパソコンはちゃぶ台の上で使うのが一番だとおもう
465 :
462 :2006/08/07(月) 01:01:54
ああ、分かった
用途によるって即返されそうなんだけど質問いいかな? メソッドを使う時同じクラス内で使うのと他のクラスから 呼び出すのどっちで覚えた方がいい? 1冊目は他のクラスから呼ぶ Method mt; mt = new Method(); mt.Method1(); みたいな感じだったんだよね。 2冊目の本だと public class Method { 〜main〜 { printMessage1(); public static void Method1() { System.out.println("これはメソッド1"); } みたいな感じ。 別クラスからのだと void メソッド名() だったのに対して 同クラスからのだと public static void メソッド名() になってたから戸惑った。 とりあえずはどっちで覚える方が幸せになれる?
467 :
466 :2006/08/07(月) 01:23:45
凄くわかりにくかったかな? publicとstaticの用途はなんとなく学んだ。 別クラスからだとvoid メソッド名()で大丈夫なのに 同じクラスからだとvoid メソッド名()でエラーでたのが意味わからなかった。 だから聴いたけどやっぱ用途によるよね。
>>466 お前は自分の勉強法を見直せ。
public static void main(String[] args) 程度のフレーズを省略書きしてる
時点で、言語勉強に対する心意気が足りないのが目に見えてわかるぞ。
printMessage1() なんてメソッドも存在しないしな。
お前の書いてることは、どちらが better かという問題じゃない。
static 修飾子を理解していないから、どちらが necessary かというのを
判断できていないだけの話だ。
頭の中入れ替えて出直してこい。
>>466-467 エラーが出る意味が分からないというのならば、public の意味が分かってない。
public で宣言する意味が分からないというのであれば、オブジェクト指向が分かってない。
あと static は、初心者はあまり使わんでいい。
ごめん。「public と static の意味が分かってない」 「public や static で宣言する意味が」 に訂正。
プログラミングするなら、こたつ机が最強。 但し、このスタイルをとる場合は冬場は、気を付けろ! 息詰まると寝っ転がって、そのまま Fallin' asleep! by 長井 秀和
473 :
466 :2006/08/07(月) 01:40:18
>>468 省略したのはmainクラスの中ってわかれば良いと思ったから。
上の記述にはクラス出てこないから対照にするのは変になると思ったからだ。
あとprintMessage1();は元の文章だったスマン。
Method1();の間違い。
staticについてはオブジェクト指向云々で余り理解できていないのは事実だ。
初心者なんでスマン。
>>469 publicはクラス外部からアクセスが出来るってことでしょ?
1つ目はpublicをclassで宣言しているから書かなくていいって事?
でも逆に考えたら他のクラスなんだからpublicが必要な気がする。
逆に2個目は同じクラス内なのになんで宣言する必要があるのかがわからなかった。
オブジェクト指向があんまりわかってないのは事実だ。
概念は後でいいって言われた。
この後UML勉強するつもりだ。
>>473 じゃあ今は悩まなくていいよ。
UMLを勉強してから、それでもわからなければ悩めばいい。
あと、後者に関しては幸せな方法を教えておいてやるよ。
public class NulPo{
public static void main(String[] args){
new NulPo();
}
public NulPo(){
this.someMethod();
}
public void someMethod(){
System.out.println("ぬるぽ");
}
}
>>473 UML 勉強するよりも、オブジェクト指向の概念を先にやりなさいな
正確には、UML でも Java でも何でもいいからやってみて、オブジェクト指向の概念を体感しなさいな
class Foo {
void Hoge() {
Method mt;
mt = new Method();
mt.method1();
}
void Fuga() {
Method.method1();
}
}
class Method {
public static void main() {
method1();
}
public static void method1() {
System.out.println("これは Method1()");
}
}
コンパイル通してないけど、これはエラーが起きないはず。
んが。確かにエラーは起きないだろうが…… まあ良いや
477 :
デフォルトの名無しさん :2006/08/07(月) 01:58:44
>>474 はい。
public NulPo(){
this.someMethod();
}
の部分はメソッドなの?
オブジェクトって奴?
なんとなくわかるんだけどまだ難しいようだ。
わざわざありがとう。
>>475 void Fuga() {
>>395
478 :
473 :2006/08/07(月) 02:00:34
書き途中だったのに書いちゃった。。
>>475 void Fuga() {
Method.method1() {
}
の部分もよくわからない。
mt.method1()にはならないの?
>>477 >の部分はメソッドなの?
コンストラクタ
>>478 『 mt 』 って、Fuga の中にあると思いますか?
無さそうだと分かれば mt.method1(); がありえない事が想像できるはず。
キーワードは 『スコープ』
481 :
473 :2006/08/07(月) 02:03:35
>>479 把握。
やっぱまだ見ただけじゃわからないや。
なんとなく暗記みたいな感じになってるし。
やっぱいっぱい書いて読めるようにならなきゃだよね。
>>477 の奴の
>>395 ってのは昨日の俺です。
それでオブジェクト指向わからないならUMLやればって言われたので。
482 :
474 :2006/08/07(月) 02:04:59
この流れ、俺は神認定か?
>>474 =482チャットまがいの駄スレにした責任を取ってください。
やだ
>>480 クラス名.メソッド名になってるって事でしょ?
それはわかるけどMethod.method1();になるのがいまいち。
これって結局mainたどって行くとmethod1();しかでてこ無いじゃん?
だからclass Fooっていらないじゃん?とはならないの?
逆にclass MethodからHoge()とFuga()を呼び出すなら
Foo fo;
foo = new Foo();
foo.Hoge();
foo.Fuga();
という考え方はあってる?
>>483 俺のせいだゴメンwwwww
もう少し読み解いて出直してくる。
>>485 人に聞くのが必ずしもいいことではないけど、探究心があるのは喜ばしいことだろうね。
ただ企業でそれやるとウザがられるから注意だけど。
class Foo を作ったのは、class Method の外部からのアクセスを示したかったから。
別に外部クラスだったら Foo じゃなくても良いかと。
foo.Hoge() と foo.Fuga() は合ってる。
じゃ、Hoge() と Fuga() が static だったら、Foo.Hoge() と Foo.Fuga() は可能だとおもう?
また、public が省略されていたら、どこからアクセスしようとした際にエラーが出ると思う?
>>486 だよな。
学生の今のうちに吸収しておきたくて。
staticの仕様がまだいまいち理解できてないからそれはわからない。
publicは書かなくてもpublicなの?
privateとかprotectedとか何かしら書かないといけないと思っている。
何も書かないとどのような状態なのかがわからない。
>>487 は純粋に勉強不足か本が悪いかのどちらか。
2冊通してるのに理解しなさすぎ。
>>487 それからもう1つ。
public などのアクセス宣言を行う意味や static を用いる意味は、ちゃんと学んでおくべき。
「これにするとエラーが消えます」 しか理由が言えないのならば、そのプログラマは初心者。
とりあえず、分からなければ public と private だけ覚えておけば良いよ。最も頻繁に使うし。 pritected とデフォルトアクセスは、パッケージについて学ぶときに一緒に学べば良いかと。 あと、static はあまり使わない。初心者は static を使わないようにクラス設計するのが吉。 ただ、こっちは覚えなくちゃいけない要素だけど。
>>488 サンクス。
クラス又はインタフェース型を public 宣言していれば,それを宣言しているパッケージに
アクセス可能な任意のJavaコードによってアクセス可能とする。
クラス又はインタフェース型を public 宣言していなければ,
それを宣言しているパッケージ内からだけアクセス可能とする。
2個目の意味がわからない。
"public宣言していなければ、それを宣言している"って矛盾してない?
省略している部分って意味?
>>489 まだ2冊通したわけじゃない。
1冊目で詰まったから2冊目にワープしたところ。
記述が少ないのか記述の仕方が悪いのかわからないからね。
間違いなく勉強不足でしょう。
それか本がブックオフで中古の少し古い本だからか。
授業で使ってた「やさしいJava」買えばよかったなって思った。
教科書全く買ってないんだよね。
>>490 おうありがとう。
今の所は漠然と基本情報を取ろうと思って勉強している位なんだ。
漠然とした理由なのが悪いのは間違いない。
あと勉強の遅れを取り戻そうと一気にやっているのが悪いかな。
また誤字った。ばかーーーーーーーー!!!!! orz ちなみに protected はパッケージじゃなくて継承でした。すまんねちくしょう。・゚・(ノД`)・゚・。
>>492 >それを宣言しているパッケージ内からだけアクセス可能とする
↑これは、宣言されたクラスを指してます。
ただ、これはクラスのアクセス指定についての話。
フィールドやメソッドの話は、『メンバ』 としてひとまとめに書かれているから注意ね。
>>491 ,493
優しいし可愛いよwwww
publicとprivateはなんとなくわかる。
staticが敵。
>>494 なんとなくわかりそう。
とりあえずもう少し頑張って勉強してみる。
教科書悪いと思ったらやさしいか独習買うかな。
また迷惑掛けにくると思うからその時はまたよろしくだよ!
超初心者のバカな質問に付き合ってくれてありがとう。
お前ら愛してるぜ!
ノシ
>>416 間違っちゃいないのかも試練が間違っているように見えるよ。
最後に報告です。教えてきました。ちなみに大学は経済学部です。 先生に出された課題は、「釧路の地図に○と線を書くプログラムを二人で作る。」だったんですけど、 相方は本当にパソコン初心者だったんで、自分がプログラムを書いて、相方にそのプログラムの仕組み とプログラミングの考え方を教えて出来たことにしよう!と考えたわけです。 たぶん先生も相方が出来ないのは承知で自分にプログラムを教えさせることで、自分の知識の固定化と 自分がどの程度理解しているか調べたかったんだと思います。 教えた方法は、まず「CPUの創りかた」という本を見せて、コンピューターが1と0しか分からないこと。 人間に1と0でプログラムを書くことは無理なので、アセンブラ、そしてプログラミング言語が 出てきたこと。その話題に絡めてコンパイラの説明。 Javaの紹介。 Javaの特徴の一つとしてプラットフォームに依存しないこと。 (MacとWinで課題のプログラムを実行してみせた。) 依存しない理由として、JavaVMという仕組み。 携帯電話でJavaが使われる理由。(iアプリでJavaのマークが出るところを見せた) 一息付けるためにJavaの利権問題。(SunとIBMのもめ事。eclipseを例に) で課題のプログラムの説明。 最後に、javac hanamogera.javaと打ってもらって、 hanamogera.classが出来るところを確認。 終了という流れで行きました。 相方は頑張ってくれて、プログラムの概念と課題のプログラムを なんとなくですが理解してくれたみたいです。 なんかこのスレの人たちはみんな親切で、本当に感動しました。 どうも有り難うございました。
498 :
デフォルトの名無しさん :2006/08/07(月) 06:13:17
Apache Shale使ったことある人いる?
>>499 1年半ぐらい前からちょくちょくチェックして試してみてる。
実業務では無い。あたりまえだけど。
>>500 StrutsやSpringと比べてどんな感じ?
>>501 Strutsよりは間違いなく高機能・多機能。
ShaleはSpringと組み合わせて使うフレームワークなので比べる対象ではない。
高機能・多機能過ぎ。
煩雑・複雑。覚えることが多すぎる。
どう考えてもこのままでは現場に導入できるシロモノとは思えない。
DoCoMoでの開発をしてる初心者ですが 文字列の読み込み、書き込みが上手くいかず、読み込みの際に java.io.UTFDataFormatException と出てしまいます。 APIを見ても「UTF-8形式に変換したデータに問題が発生したとき」と 記載がありますが、具体的にどういうことなのでしょうか? 書き込んじゃいけない文字列が存在するのでしょうか?
>>503 読み込み、書き込みの具体的な処理をplz
506 :
503 :2006/08/07(月) 17:08:11
>>504 //グローバル
//■読み込み
DataInputStream dis = null;
dis = Connector.openDataInputStream(SP + 100);
sStr_0 = dis.readUTF();
sStr_1 = dis.readUTF();
dis.close;
//■書き込み
DataOutputStream dos = null;
dos = Connector.openDataOutputStream(SP + 100);
dos.writeUTF(sStr_0);
dos.writeUTF(sStr_1);
dos.close;
こんな感じなんですが…。どうでしょうか?ほんとに初心者なんでorz
>>505 UTF-8なのかどうなのか調べるにはどうしたら?すいません。
507 :
デフォルトの名無しさん :2006/08/07(月) 22:50:23
配列の使い方が今一わかりません。これ、どこか間違ってますか? ] 「代入1」のところでコンパイルがこけてしまいます。 ] public class foo { ] char[][] m = new char[3][3]; // クラス定義 ] } foo[] bar = new foo[2]; // 作ったクラスの配列を定義 a[0].m = {{"a","b","c"},{"d","e","f"},{"g","h","i"}};//代入1 a[1].m = {{"1","2","3"},{"4","5","6"},{"7","8","9"}};//代入2
↑すみません、文末に ] が入ってるところがありますが無視してください。
↑たびたびすみません。最後の2行は a[0|1].mじゃなくてbar[0|1].m です。
>>507 コケた時にコンパイラーは何か言ってた?
Stringの配列をcharの二次元配列にぶち込むなんて…無茶するぜ…。
>>507 そこに出ている全ての二重引用符を引用符に変更して、
配列を初期化しているところの{{...の前にnew char[][]をつけてごらん。
513 :
507 :2006/08/08(火) 00:33:20
出来たよ、アリガト!(´▽`)
>>507 見て、「え、なんで自作クラスのオブジェクト変数に直接
代入できてるの!?」って思ってたら、インスタンス変数に
直でアクセスしてたのか。。。
カプセル化ぶち壊しだから、あまり良い書き方じゃないと思うがな。
回答ありがとうございます。 自作クラス(ホントはもっと複雑なメンバ変数を持つ)のオブジェクトに、 ファイル等から読み込んだデータを一括して代入したかったんです。
質問です。 SWTの中のTree機能を使用してTreeを表示させてるんですが Treeの行間隔は変更とかはできないのでしょうか??
517 :
デフォルトの名無しさん :2006/08/08(火) 11:28:53
『シンボルを見つけられません』とでます。 今、Benas関係をやっているのですが、 おなじBeansパッケージのクラスを使おうとすると上記エラーが出ます。 なぜなんでしょう。 package Beans; public class Data{ private String Name; private String Code; --- メソッドその他 ---- } -------- Data.java ----------------------- package Beans; public class aaa { public Data [] SearchData( String filter ){ Data ret[] = new Data[2]; return ret; } } ------aaa.java-------------------------- エラー内容: aaa.java: : シンボルを見つけられません。 シンボル: クラスData 場所 : Beans.aaa のクラス public Data[] SearchData( String filter ) ^ aaaクラスから、Dataクラスを使用するにはどうしたらいいのでしょうか。 よろしくお願いいたします。
519 :
デフォルトの名無しさん :2006/08/08(火) 12:14:16
>518 importもやってみましたが同じでした。 ちなみに、Data.javaとaaa.javaは同じBeansのフォルダにあります。 デフォルトパッケージからはBeansパッケージは利用できたけど、 同じパッケージ内にあるクラスどうしは利用出来ない・・・はずはないですよね・・ 何が悪いんだろう。 完全修飾でもやってみたけど同じだったし
Dataのコンパイル通ってないんじゃない? もしくは循環参照があるとか
>>519 カレントディレクトリ直下にBeansディレクトリを作って、
javac Beans/aaa.java
なら問題なくコンパイルされる。
もし、カレントディレクトリ直下でなく、
例えば、srcディレクトリの下にBeansディレクトリがあるのなら、
javac -sourcepath src src/Beans/aaa.java
としないと、当然コンパイラはData.javaを見つけることはできない。
>521 お察しの通りでした。 Beansフォルダに移動してコンパイルかけてましたorz あぁ、ぜんぜん疑っても見なかった・・・ 無事コンパイルが通り先に進むことが出来ます >518 >520 >521 ありがとうございました。
523 :
デフォルトの名無しさん :2006/08/08(火) 14:55:32
awtってなんて読むの?あわーと?
524 :
523 :2006/08/08(火) 14:58:41
ググったら一発だった 糞レスすまんかった
いつも思うけど、 ググるよりも ここに書き込む方が 操作が簡単なのかな?
awtの読み方なんて、気にも止めたことがなかった。 勝手にォアウトって読んでたが。
528 :
523 :2006/08/08(火) 16:48:36
>>524 お・・・お前はダレだw
別にどうしても知りたいって訳じゃなかったんだが
俺的には雑談レベルで書き込んでみた程度で。
ここはおまいの日記帳じゃないw ググれ。
アウツ!
533 :
デフォルトの名無しさん :2006/08/08(火) 21:32:03
パッケージ system は存在しません。 system.out.println("HelloWorld"); ↑ なんでかな?Linuxなんだけど。
System
Sか。
正確には、System はパッケージじゃなくてクラスだけどなw ……気持ちは分かるんだけど、もう少しエラーメッセージ親切にならないかなぁ。
それは難題だ
>>536 Systemはクラスだけどsystemはクラスじゃないので無理
539 :
デフォルトの名無しさん :2006/08/09(水) 10:44:16
課題というか質問です SunJavaWebServerをサーバとすることになったんですが、 jspでの記述で、htmlタグ要素の、例えばlength内にスクリプトレットやタグライブラリで、 length="<bean:write name="hogeForm" property="hoge"/>" とすると、ダブルクォーテーションが正常に認識できないって言われたんですが、調べてもそんな現象話題になってなくて困ってます;; ちなみに上記の場合はlength='〜'とすることで一応解決します。 jspがjavaとしてのコードよりhtmlタグを優先して見るなんて聞いたことなくて… どなたか教えて下さい!
認識できる
そもそもjsp自体の文法があるから、それに従ってないと処理できない 単純なパターンマッチングの文字列置き換えじゃなくて、invaildなXML以上になってないと処理できないと思ったほうが良い
542 :
デフォルトの名無しさん :2006/08/09(水) 16:37:23
質問です。 Javaでアプリケーションを作った場合に、 アプリケーションの背景画像ってどうやって指定すればいいんでしょうか?
自分で書く
paintComponent(Graphics g) をオーバーライド
545 :
539 :2006/08/09(水) 17:23:33
出来た!ありがと
>>542 コンテンツ区画のpaintComponent(Graphics)をオーバーライドすれば後腐れがない。
public class a extends javax.swing.JFrame {
public static void main(String[] args) { new a(); }
public a() {
setContentPane(new javax.swing.JPanel(){
private java.awt.Image image = new javax.swing.ImageIcon("back.jpg").getImage();
public void paintComponent(java.awt.Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
}
});
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 300);
getContentPane().add(new javax.swing.JButton("button1"));
getContentPane().add(new javax.swing.JButton("button2"));
getContentPane().add(new javax.swing.JTextField(20));
setVisible(true);
}
}
デフォルトのコンテンツ区画みたいにBorderLayoutマネージャにしたければ、
JFrame#setLayout(LayoutManager)で変更する。
背景用のJLayeredPaneを作って差し込むのもありだな。
ようはご自由にってだけだな
swingとは限らんしな
550 :
デフォルトの名無しさん :2006/08/09(水) 21:44:44
isTitleCaseってなんですか? 説明をみてもわかりづらかったので詳しく教えてください
タイトル(見出し)を単語の先頭大文字、あとは小文字という形式で書くときに使う 文字ってことだが、言語によっては、2文字に見えても実は特別に1文字で扱う組 み合わせってのがあって(たとえば、APIで例に出ているLj)、そういうのは、こう いう場合にLJでもljでもなくLjと書く。それ専用の合字がUnicodeでは割り当て られている。 組み合わせで書けるのに専用なんてずるいと思うかもしれないけど、日本語でも 「か」+「゛」の合字なんてのが割り当てられてるし、まぁいいんじゃないかね。
>>550 Character.isTitleCase なら、文字が Unicode の TitleCase 文字ならば true を返すメソッド
ぶっちゃけ使いどころはあまりないはず
553 :
デフォルトの名無しさん :2006/08/09(水) 22:09:15
なるほど サンクス
swing なら俺に任せておけ
よし任せた。 はい次の質問。
556 :
デフォルトの名無しさん :2006/08/10(木) 00:12:15
ブラウザで実行している Java Applet の標準出力を Windows の他のコマンドへ リダイレクトしたいのですがどのようすればできますか?
正規表現についてなんですが、\\で"\"ですよね? "\\"と入れるにはどうしたら良いのでしょうか
\\\\
>>559 その方法でやってもうまくいかない…
ちなみにファイルから読み込んだString A = "\"を
A.replaceAll("\","\\")てな具合に"\"を"\\"に置き換えたいんですが
\\\\で置換して、置換後の文字列を見ても、\が一つしかない
>>560 こうだよ?
String A = "\\";
String B = A.replaceAll("\\\\", "\\\\\\\\");
System.out.println(A + " : " + B);
\の数を間違えないようにね
>>562 replaceAllは正規表現だから、これでいいんジャマイカ。
>>563 その通り
実際に実行して確かめてから誤りは指摘した方がクール
根本的な話、ソースファイルに \ が大量に含まれていることが そもそもの問題と思う。
Perlの正規表現とJavaの文字列リテラルとの相性が悪かっただけの話。 プログラム自体には何も問題はないと思うが。
C#みたいな@""の書き方があれば楽なのに
そういやreplaceが実装されてからreplaceAllってあんまつかわなくなったな
文字列リテラルのエスケープ文字を変更できるようなプリプロセッサを通すとか あまり需要なさそうだけど
ans.txtには 「"2006","08","19","提出"」 「" "," 期日","厳守","by田岡"」 の2行が入っているのですが、文字の前後にある""を取り払い、,ごとに 文字を区切り、 「2006 「08 「19 「課題 (空白)」 期日」 厳守」 田岡」 ↑の様に4つに分解してtxtに書き込みたいのですが、どうすれば良いのでしょうか? Splitでは""の部分をうまく消せず、arrayListを用いてStringTokenizerを上手く使えず凹んでおります。 下のプログラムからあーでもないこーでもないを繰り返して早1週間。 申し訳ありませんが、お力を貸してくださいorz ArrayList<String> readList = new ArrayList<String>(); BufferedReader fileReader = new BufferedReader(new FileReader("./ans.txt")); String read; while((read = fileReader.readLine()) != null) { }
>>570 まず split メソッドで分割してから、各 String インスタンスについて
indexOf メソッドでダブルクォーテーションの位置を検知、
そして substring メソッドで当該文字列を抜き出し。
書き込みは自分で書けるよな?
それだと",","a"を処理できない
eclipse3.2のJFaceでGUI作成してるんだが、解説サイトの通り CompositeRuler ruler = new CompositeRuler(); ruler.addDecorator(0, new LineNumberRulerColumn()); SourceViewer viewer = new SourceViewer(parent, ruler, SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL); とすると一瞬GUI画面が出てviewerがNullPointerExceptionで落ちる rulerの部分をnullにすると落ちない どうすればCompositeRulerを使用してSourceViewerを扱えますか?
574 :
デフォルトの名無しさん :2006/08/11(金) 12:20:22
Java1.5で質問です。 ボタンを縦に並べたいのでsetBoundsを使って座標指定してみたのですが、全く 無視されているようです。どこで間違えていますか? import java.applet.Applet; import java.awt.*; public class t1 extends Applet{ int i; Button[] lir; public void init() { lir = new Button[10]; for (i=1 ; i<10 ; i++) { add(lir[i]=new Button()); lir[i].setBounds(20,10+30*i,330,22); lir[i].setLabel("No." + i); } } }
>>575 そうだった。下敷きがいるのをすっかり忘れてた。
ありがとうございました。
>>572 意味がわからん。
それは純粋にサポート外の形式なんだから、2つ目のダブルクォーテーションを
捕捉できなかった時点で例外を投げるべきところ。
今回の話題からすれば的はずれな意見なわけだが。
>>578 572 じゃないけど、俺は一目見て
>>570 が csv のように思えたが。
少なくとも 「文字に , は含まれない」 とはどこにも書いてないけどな。
>>570 ちとまっててー
>>574 レイアウトマネージャを null にせいや。
>>570 汚いけど一応動く。あとはがんばって
ArrayList<String> result = new ArrayList<String>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < text.******(); i++) {
switch (text.******(i)) {
case '\"':
i++;
for(; i < text.******(); i++) {
char c = text.******(i);
if (c == '\"') {
if (text.******() <= i + 1 || text.******(i + 1) != '\"') break;
i++;
}
sb.******(c);
}
break;
case ',':
result.***(sb.********());
sb = new StringBuilder();
break;
}
}
if (0 < sb.******()) {
result.***(sb.********());
}
・ "" で囲まれていない文字は認識してない
・ "" の中の , は区切り文字に使ってない
・ "" の中では2連続の " を " に置き換えてる
てす
583 :
570 :2006/08/11(金) 15:09:53
皆さんアリガト!(´▽`)(^▽^)
現在
>>571 さんのレスから
while((read = fileReader.readLine()) != null) {
String[] arrayRead = read.split("\\,");
for(int i = 0; i < 4; i++) {
StringTokenizer sToken = new StringTokenizer(arrayRead[i],"\"\"");
〜〜
}
}
↑の用な形にすることで、,で区切り尚且つ""を消すことができました。
>>581 さん
StringBuilderというのは初めて見ました。
折角作ってくださったのに読めなくて申し訳ありません。
StringBuilderはTigerで導入された、各メソッドにsynchronizedが ついてないStringBuffer。
個人的にはcsv形式扱うときはわくほくのCSVTokenizerをJava5対応に改変したものを使ってる。 CSVTokenizerでぐぐるといろいろ実装されているので探してみれ
で、これはRFCなCSVに対応してる?
RFCにCSVなんてあるのか!
CSV Formatの第6項がまずいかもしれんね。 あと、行のセパレータはCRLFなんだね。さすがRFC
内部クラスと外部クラスの利点・欠点は何?
>>590 利点: スコープ関連。
欠点: 特になし。というか欠点があったら使わなきゃいいだけじゃね?
外部に見えないのがそのまま欠点になってると思うぞ。 Arrays.asList メソッドが返すのは List となっているが、こいつは 内部で定義されている ArrayList (java.util.ArrayListとは別物)の インスタンスを返していて、APIに実装が出ていないから詳細を知るには わざわざソースを見に行かなければならない。 そこまで頭が行かないやつは、コンパイルエラーで「ArrayList」って 出てきて、なおさら混乱する。 内部クラスのインスタンスを返している仕様が問題なのかもしれんが (というか、なぜそんなことをしているのかがイマイチよくわからん)。
>>592 特定クラスの実装に依存しようという態度が問題かもね。
>>594 API の実装によっては
中身は ArrayList じゃないことも有り得る、という考え方。
抽象化プログラミングが何なのか解っていれば
この辺りのことは納得できると思う。
>>595 俺は ArrayList に沿ってプログラミングしてるなんて一言も言ってないけど。
List インターフェースに沿ったプログラミングをして支障を来した
経験があるから言ってるわけだが。
Eclipseでソース追えないようって言ってるわけ?ぶっちゃけ慣れだと思うよ。 インタフェースベース開発はベンダーに依存するからこそ威力を発揮する。 ServletとかXMLParserとかもその恩恵を受けてるしね。
> APIに実装が出ていないから詳細を知るには > わざわざソースを見に行かなければならない。
となると、
>>592 のコンパイルエラーがどういうものか知りたい。
>>596 それは本当に List インタフェイスに沿ったプログラムというのかと小一時間
asListなのにaddしようとしたとかいう落ちじゃないよね? > 指定された配列を基にする固定サイズのリストを返します。 とも書いてあるし、当然そんなことするわけないよな。
>>592 の書いたコードを見てみたい。なんか気になる。
603 :
デフォルトの名無しさん :2006/08/12(土) 01:28:57
勘違いじゃない? そもそも外部クラスと内部クラスの話でもないし。
質問です。 1を入力した場合に正方形の、2を入力した場合は円の面積を求めるプログラムを作ります。 その場合は switch文 を使うのが望ましいと思うんですけど if文 で作ることはできますか? 1、2以外の値が入力された場合の問題で。 if(i[0] ! (1 && 2))という文は使えないんですか? switchならばdefalt;を使えば良いんだと思います。 まだ勉強中なので色々なパターンを知る方が良いと思いまして。 よろしければご教示お願いします。
605 :
604 :2006/08/12(土) 04:59:20
if(i[0] != (1 && 2))の間違いでした。 補足で自分で試したところではエラーが出ました。 よろしくお願いします。
> if(i[0] ! (1 && 2))という文は使えないんですか? いろいろなパターンを知る前にもっと基礎を勉強しましょう。
607 :
デフォルトの名無しさん :2006/08/12(土) 05:22:44
フィールド private String material; コンストラクタ public ToyFactoryBean() { material = null; productCount = 0; } //materialプロパティ(Write Only) public void setMaterial (String material) { this.material = material; } このマテリアルのプロパティメソッドがよく理解できません、materialという文があちらこちらにあって混乱します (String material)は引数としてどこのmaterialを受け取っているのですか?
>>606 && はboolean型にしか使えないんですか?
1と2以外の値ということを考えこういう結果に至りました。
ありがとうございました。
出直してきます。
609 :
デフォルトの名無しさん :2006/08/12(土) 07:21:10
mainメソッドで BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
初歩的な質問ですがお願いします。
>>609 はミスなんでスルーしてください。
java.io.*;
public class Abc {
public static void main(String[] args) throws IOException {
String str[] = new String[2];
int i[] = new int[2];
double d;
BufferedReader input =
new BufferedReader(new InputStreamReader(System.in));
}
としている場合に他のメソッドで標準入力を扱う場合はどうしたらいいですか?
public static void mathfoo {
str[0] = input.readLine();
i[0] = Integer.parseInt(str[0]);
switch(i[0]) {
case 1:〜
case 2:〜
}}
}
としたいのですが変数が使えない様なので
this.str[0] などにしてみても static で this は使えない様なので困っています。
特に input の扱いがいまいちわかりません。
解決策がわかりましたらどうかよろしくお願いします。
その使いたいメソッドでもう一回BufferedReader作ったらいいんでね?
612 :
610 :2006/08/12(土) 07:44:45
>>611 即レスありがとうございました。
java.io.*;
public class Abc {
public static void main(String[] args) throws IOException {
mathfoo();
}
public static void mathfoo() throws IOException {
BufferedReader input =
new BufferedReader(new InputStreamReader(System.in));
String str[] = new String[2];
int i[] = new int[2];
double d;
str[0] = input.readLine();
i[0] = Integer.parseInt(str[0]);
switch(i[0]) {
case 1:〜
case 2:〜
}}
}
としたら問題なく動きました。
この場合 main メソッドがとても無駄に思えるんですけどこんなもんですか?
繰り返し使いたいので main だけにはできませんでした。
>>607 そんなの、わかるわけがないだろ。
どこかでそのクラスのインスタンスが生成され、そのメソッドが使われた
場合に material に文字列がセットされる。セットされる文字列を
知っているのは、そのメソッドを呼び出したやつ。それ以上でも
それ以下でもない。具体的に呼び出された文がなければ
どこの material を受け取ってるかなんて不明。
>>612 BufferedReader をクラススコープで静的に宣言すればいい。
つまり、
private static BufferedReader input;
という宣言をメソッドの外に書けば良い。
>>610 のままでは、メソッドスコープで宣言されてるから、外のメソッドから
変数 input を参照できないだけだ。
ただ、こう書くと初心者は「そうか、変数はメソッドの外で宣言すれば
便利なのか!」と勘違いしやすいから気を付けろ。
様々なメソッドが参照できるということは、その変数に関連したバグの
一つでも発生すれば、他のメソッドの動きにも支障を来す可能性だって
考えられる。
必要もないのに大きなスコープで変数宣言することをしてはいけない。
可能な限り最小にとどめるべき。
常日頃から変数宣言するときは、「なぜここで宣言するのか」って
哲学をしてれば、プログラミング上達の一助になる。
615 :
デフォルトの名無しさん :2006/08/12(土) 10:34:48
web上でGUIで編集できてそのままURL張れば楽譜が表示される ようなサーバーってどっかにないかなあ。
617 :
ss :2006/08/12(土) 11:15:20
sos 今javaのtest中 だれかたすけてください。かってなこといってすみません *金種計算の問題 1.金種計算はメソッド(Keisan)でおこなう 2.金種は配列、int[]kinsyu={10000,5000,1000,500,100};にある 3.100円未満は切り上げ 実行結果 名前をにゅうりょくしてください:青木 金額を入力してください:37865 青木さんは:10000円は3枚 5000円は1枚 1000円は・・・です。 むちゃくちゃいそいでます。おねがいします
>>612 別クラスにするとかどうか
class Abc2{
String str[] = new String[2];
int i[] = new int[2];
double d;
BufferedReader input;
public Abc2(InputStream is){
input = new BufferedReader(new InputStreamReader(is));
}
public void mathfoo() throws IOException {
str[0] = input.readLine();
i[0] = Integer.parseInt(str[0]);
}
}
public class Abc{
public static void main(String[] args) throws IOException {
Abc2 abc2 = new Abc2(System.in);
abc2.mathfoo();
}
}
>>617 宿題スレに似たようなのがあった気がする。
620 :
612 :2006/08/12(土) 12:43:51
>>614 レスありがとうございます。
public class Abc {
private static BufferedReader input;
public static void main(String[] args) torows IOException {
って事でいいんですか?
あと特別 private にした意味ってありますか?
以下は
input =
new BufferedReader(new InputStreamReader(System.in));
でいいのかな?
でもそうしたら二度手間?
>>618 最初は別クラスにしようとも考えました。
特に大げさなプログラムではなく switch が default の場合のみ繰り返す(再入力を求める)
という簡単な処理なのでクラスは一つにまとめた方がわかりやすいかと考えました。
もっと何度も使うようなメソッドであるならクラスは分けるべきですよね?
10進数を2進数に変換するメソッドなんですけど 出力結果が [I@19821f [I@addbf1 [I@42e816 の様になってしまいます。 どこを改善したら良いでしょうか? public class Foo { public static void main(String[] args) { System.out.prinln(bitValue(10, 10)); } public static int[] bitValue(int dec, int length) { int i, j; int a[] = new int[length]; for (i = a.length - 1, j = 0; i >= 0; i--, j++) { if (((dec >> i) & 1) != 0) a[j] = 1; else a[j] = 0; } return a; }
>>621 [I@19821f
[ は配列を表す接頭辞
I は int
@19821f は配列アドレス
…… つまり、表示されたのは 19821f 番地の int 型の配列
だから、
System.out.prinln(bitValue(10, 10));
を、「配列の中身を出力する」 ように変更する必要がある。
623 :
621 :2006/08/12(土) 13:11:58
>>622 詳しくわからないんですけど参照型みたいになっちゃってるって事ですか?
中身の出し方わかりません orz
>>623 お兄さん、お兄さん、配列はオブジェクト。あんだすたん?
>>623 正直なところ、配列の中身を一度に表示させる println メソッドはないんですわ。
1つ1つ取り出して、println で表示させなさい。
1つ1つの取り出し方は、もちろん知っているよね?
1つ1つの代入を使ってるんだから。
626 :
621 :2006/08/12(土) 13:41:30
>>624 あまりあんだすたんじゃないです><
>>625 for(j = 0; j <= a.length; j++) {
System.out.print(a[j]);
}
みたいな感じですか?
ランダムで発生させた数値を2進数化したいんですよね。
現実問題難しそうですね…。
int i = Integer.toBinaryString(String str);
だとStringからじゃないとダメなんですよね?
困りました…。
まあ、正直なところ System.out.println(Integer.toString(dec, 2)); でいいんだけどね。
……いや、toBinaryString(int) でもいけるやん。
>>626 どこから String だと思ったよ。
629 :
621 :2006/08/12(土) 13:56:07
今試行錯誤中です。
みなさんすみません。
>>627 いまいちわかりません。
それだとreturn a;の値は関係なくなりませんか?
>>628 型の不一致 Stringからintには変換できませんって吐かれたんで…。
多分俺のやり方が悪いんだと思います。
じっくりJavaDocでIntegerクラスを眺めればいいじゃないか。 これ以上のレスは効果なし。
>>629 >それだとreturn a;の値は関係なくなりませんか?
bitValue そのものが必要なくなっちゃったけどね。
>型の不一致 Stringからintには変換できませんって吐かれたんで…。
それは、toBinaryString が String を返すのに、それを int 型の変数に代入しようとしているから。
エラーは引数じゃなくて代入のところで起こっていた罠。
632 :
621 :2006/08/12(土) 14:00:48
System.out.println(Integer.toString(50, 2)); と System.out.println(Integer.toBinaryString(50)); どちらも2進数表示できました。 ご迷惑おかけしました。 ありがとうございます。
633 :
デフォルトの名無しさん :2006/08/12(土) 14:22:47
>>625 String[] a = {"AA","BB","CC"};
System.out.println(java.util.Arrays.asList(a));
楽に実装することをよしとするのも技術だ。
でも、toString で出力される文字列の書式が定まっていないオブジェクトも多いからなぁ 「文字列表現〜」 だけだと中身含まない恐れもあるし
>>625 ,633
>正直なところ、配列の中身を一度に表示させる println メソッドはないんですわ。
Arrays.toString ってのはある。
itext使って帳票を作成しています。 サンプルを見ながら作成しているのですが、実行時に以下のエラーが出てしまいます。 javax.faces.el.EvaluationException: ExceptionConverter: java.io.IOException: The document has no pages. javax.faces.webapp.FacesServlet.service(FacesServlet.java:209) Document の宣言は以下のように宣言しています。 Document doc = new Document(PageSize.A4, 50, 50, 50, 50); 何がいけないのでしょうか。
>>620 >>private にした意味
大有り。アクセスレベルがデフォルト以上だと、外部のクラスから
Abc.input
ってやられると input にダイレクトにアクセスされる可能性がある。
現実で言うなれば、その辺の通行人が自分の職場のパソコンを勝手に
触れてしまえるっていう、非常に奇異な世界ができてしまう。
変数宣言の位置を哲学しろって言ったばかりだけど、これも同じ事。
不用意に外部からのアクセスを許可するのは良くない。
>>new BufferedReader(new InputStreamReader(System.in)); の位置
とにかく、input の変数宣言がクラススコープでなされていれば、
あとはなんでも構わない。宣言文で直接初期化してやってもいいし、
main メソッド内で初期化しても良い。
あてずっぽうだけど、宣言文で直接初期化すれば少しパフォーマンスが
良くなるような気はする。が、1回ずつなのでたいした差はでないと
見積もれるので、結局どうでもいい。好きなようにどうぞ。
640 :
続き :2006/08/12(土) 16:46:41
>>もっと何度も使うようなメソッドであるならクラスは分けるべきですよね? そうとは限らない。というか、使用頻度を基準に分けようという考えが誤り。 言うなれば、使用頻度が高いからといって、パソコンの Enter ボタンだけ キーボードから切り離すようなもの。でも、やっぱり Enter ボタンは キーボードにくっついてるべきでしょ? 互いに結びつきが強いと思われるものに関しては、やはり1つの枠組みに 納めておくべき(専門チックに言えば、「凝集性を高める」)。 逆に、パソコンとプリンターみたいに、やるべき責任が異なるものは きっちりと切り離すべき(専門チックに言えば、「結合性を疎にする」)。 一昔前にあった後ろにプリンターのくっついたワープロ専用機ってあるけど、 あれってプリンターもフロッピードライブも据え付けで、どれかが 故障すると無力化してたでしょ。 ああならないように、やっぱり責任の違う物は切り離しておく方が 保守性のためを考えると長期的には利点が多い。 (まあ現実世界では一緒に持ち歩く労力なんてのもコスト計算に入って くるわけだが、そこは突っ込まないように。) この辺の話も、やっぱり普段から哲学してないと感覚が身に付かない。 でも、自分で勝手に哲学すると悪いパターンを身に染みこませてしまうから ちょっとエロい人と意見交換してみるとか、とにかく書籍を読み漁るとかの 努力を要する。 今はまだ早いだろうが、3ヶ月〜半年ぐらいしてから、「ソフトウェア設計」 をキーワードに本屋で書籍を探してみると幸せになれるかもしれん。
自称中級者の典型だなw いい大人ならオナニーはほどほどに
>>620 1つにまとめるとすると↓みたいな感じ
public class Abc{
String str[] = new String[2];
int i[] = new int[2];
double d;
BufferedReader input;
public Abc(InputStream is){
input = new BufferedReader(new InputStreamReader(is));
}
public void mathfoo() throws IOException {
str[0] = input.readLine();
i[0] = Integer.parseInt(str[0]);
}
public static void main(String[] args) throws IOException {
Abc abc = new Abc(System.in);
abc.mathfoo();
}
}
646 :
デフォルトの名無しさん :2006/08/13(日) 00:01:02
ObjectをIntにできなくて泣いてます
ObjectをIntにできたら泣きます
>>646 標準APIにはIntというクラスは存在しません。
自作クラスであるなら、Objectで受けたそのインスタンスxがIntクラスか
そのサブクラスのインスタンスとして、(Int)xとキャストできます。
もしIntegerクラスのことなら、同様にxがIntegerクラスであるなら、
(integer)xとキャストできます。
もしintのことなら、xがIntegerクラスであるなら、
((Integer)x).intValue()でintとしての値を求めることができます。
649 :
648 :2006/08/13(日) 00:43:08
× (integer)xとキャストできます。 ○ (Integer)xとキャストできます。
650 :
デフォルトの名無しさん :2006/08/13(日) 04:46:37
テーブルの0列目のデータでコンボボックスを設定 しようとするとなぜかうまくいかない 2列目とかだと問題無いのに
651 :
デフォルトの名無しさん :2006/08/13(日) 07:38:32
public class Hello { public static void main(String[] args) { System.out.println("Hello Java"); } } から、Hello.classをつくって、java Helloと実行すると、 Exception in thread "main" java.lang.NoClassDefFoundError: Hello と出て、気絶するほどの衝撃を受け、30分ほど気を失っていました・・・ 「javaやってみよう」的ページを写しただけなんです。 NoClass・・・を検索しても、俺の出会った衝撃の次の段階の説明っぽいです。
>>651 ファイル名がHello.javaか確認するんだ
Strutsを用いてファイルアップロード機能を実装しているのですが テキストファイルだった場合、サーバに実体ファイルを作成せずに 文字コードを取得できますか?
656 :
デフォルトの名無しさん :2006/08/13(日) 19:25:39
javaのswingでラジオボタンを位置を指定して表示したいんですが,プログラムを実行すると一度は表示されるんですが、マウスなどを動かすと表示が消えたり表示されたり不安定になってしまいます。 位置を指定するのにsetboundsで指定しているんですが、これがいけないんでしょうか?ちなみにawtでプログラムを実行すると正常に表示されます。 以下ソースの抜粋です。あとsetboundsで指定した位置にも表示されません。何処がいけないのでしょうか? public class SelectionFrame extends JFrame implements ActionListener{ ButtonGroup grp1, grp2; JRadioButton cbx1, cbx2, cbx3, cbx4, cbx5, cbx6, cbx7, cbx8; public SelectionFrame(String title){ super (title); ButtonGroup grp1 = new ButtonGroup(); //チェックボックスの追加 cbx1 = new JRadioButton("綴り", true); add(cbx1); cbx1.setBounds(100, 100,100,100); grp1.add(cbx1); cbx2 = new JRadioButton("意味", false); add(cbx2); cbx2.setBounds(100, 200,100,100); grp1.add(cbx2); ・・・ } }
setLayout(null);をいれる
絶対座標で位置指定するのはJavaでは(というかクロスプラットフォームなGUIでは) 禁じ手に近いので素直にレイアウトマネージャを使ってください。
659 :
656 :2006/08/13(日) 21:50:17
>>657 ,658
解決しました。ありがとうございました。
インスタンスを作れってことはオブジェクトを生成する意味と同じ意味ですか? 書籍ではオブジェクトという言葉が多いのですが、ネットではインスタンスという言葉が頻繁に出てきて 混乱しているのですが
同じだよー。
>>656 getContentPane().add()を使わなくていいんですかこれ?
Tiger以降はOK。
>>664 ( ̄□ ̄;) そうでしたか、すいません
活発なメーリングリストってない?
何についての?
JavaHouseはもうないの?
public class Account { int zandaka; int deposit(int money) { zandaka += money; return zandaka; } } 他クラスからdepostに8000を与えるとします、そうするとその値はint型のmoneyになり 次の文でzandakaに8000が追加されます、そして次の文でreturnされるのですが このreturnはzandakaに値を返しているのですが、このreturnはフィールドに対してのみ値を返すのでしょうか?
取り敢えず判る範囲で・・・ X このreturnはzandakaに値を返している O このreturnはzandakaの値を返している
>>669 return文はこのメソッドdepositの呼び出し元にzandakaの値を返す。
zandakaへの操作はzandaka+=money;の代入文のみ。
>>669 :
:
void deposit(int money) {
zandaka += money;
}
こんなふうにするだけで、フィールドzandaka は書き変わるよ(・∀・)
>>670-671 レスありがとうございます、なるほど参照元にzandakaの値を返しているのですね
筋が通って今スッキリしてます・・・、zandakaはどこにトンでいってるんだよ!という感じに悩んでました
上か!?上のフィールドにトンでったのか!?てな感じに
674 :
669 :2006/08/13(日) 23:51:21
>>672 おお!なるほど!今そのVoid分を考えて気づいたのですが
それを使ってフィールドを書き直すとそのプログラムにしか使えないから
なるべく書き方を抽象的?にして、他クラスで複数のオブジェクトからdepositを参照させると
複数の利用が出来る、これがオブジェクト指向?なのでしょうか
Javaのメールマガジンとかこれお勧め!ってやつないでしょうか
677 :
デフォルトの名無しさん :2006/08/14(月) 10:04:13
Java のファイルIOで質問があります。FileWriterを使った場合、 同じファイル名のものは前のは完全に消えて上書きしますよね? RandomAccessFileクラス以外にファイルのある特定場所だけを読み込む のと書き換えるクラスとメソッドがあれば教えてください。よろしくです。
>>678 そのurlのhを外して音読して見ろ。で、hは名前のイニシャルだ。
ヒュウキですか?
ケツシロは斬新だなw
ヒュウキです
683 :
デフォルトの名無しさん :2006/08/14(月) 11:39:21
Ajaxでサーブレットから受信する時の文字化けが直らず困っていたのですが、 試しにgetCharacterEncodingしてみると、set〜が機能していないらしいことに気付きました。 <サーブレットのコード> response.setCharacterEncoding("UTF-8"); System.out.println("getCharacterEncoding:" + response.getCharacterEncoding()); response.setContentType("text/html;charset=UTF-8"); System.out.println("getContentType:" + response.getContentType()); <結果> getCharacterEncoding:ISO-8859-1 getContentType:text/html;charset=ISO-8859-1 この現象の原因について何か分かる方いらっしゃったら教えて下さい。
>>674 そういうのがオブジェクト指向かどうかなんともいえんが
// 口座に預金する
void deposit(int money) {
zandaka += money;
}
// 残高を取得する
int getBalance() {
return zandaka;
}
↑
たいていこんなかんじでメソッド群に役割配分するんじゃないの
686 :
683 :2006/08/14(月) 15:13:18
>>685 ありがとうございます!
頂いたアドバイスできれいに解決してしまいました。
自分なりには調べてから質問したつもりでしたが、
APIに書いてあることを見落とすようじゃお話になりませんね。
今度から気をつけます。
javaで配列データを、 x=0,1,2・・・ y=y[0],y[1],y[2]・・・ という形でXYグラフ上に描画したいのですが、いいクラスありませんでしょうか?
Graphics
689 :
デフォルトの名無しさん :2006/08/14(月) 17:08:31
690 :
687 :2006/08/14(月) 17:11:42
自己解決した
691 :
デフォルトの名無しさん :2006/08/14(月) 17:23:53
test
>>687 どう解決したのか知らないけど、もし数値計算やってて、その解決法が
Point インスタンスによる情報保持だってのなら、それはやめた方がいいよ。
大規模計算に標準ライブラリを利用すると、無駄にメモリを食われ過ぎる
可能性が高い。自分で軽い Point クラスを作るのがいい。
693 :
687 :2006/08/14(月) 17:37:38
>>687 で質問したものですが、
>>690 は自分ではありません
システムトレードの損益曲線を書きたいだけなので、
とりあえず、Graphicsクラスをいじってみることにします
694 :
デフォルトの名無しさん :2006/08/14(月) 17:40:32
多次元配列を実装したコレクションフレームワークはありますか? あと下のようなモデルはどのように実装するのがいいんでしょう? 一つのStringデータA_iに対して,複数のStringデータX_i、 Y_i、Z_iが対応しているとします. そして、こうしたA_iがたくさんあるとします.(i=1,2,3,...) ただし、A_iの個数はモデルを作る時点ではおおざっぱにしかわかりません. 1.全ての要素がStringの二次元配列をつくる. 2.とりあえずArrayListに登録して、あとから切り分ける. 上の1.2.を考えて,2が一番いいとは思うのですが他にいい方法はありませんか? できればなるべく速い方法がよいのですが、プログラムのことはあまり詳しくないので どれが速いかなどもよくわかりません.
>>687 (693)
ここ、ID出ないからな…
質問的に、単にレポートにグラフをつけたいとか、それぐらいの
話なのかな? それなら、
PrintWriter pw = 〜;
for(int i=0; i<y.length; i++){
pw.println(i + "\t" + y[i]);
}
って感じで情報をファイル出力して、gnuplot(グラフ描写用ソフト)で
散布図を描写するのが手軽で良いと思うよ。
詳細は "wgnuplot" でググレ。
>>694 イマイチ全体像がよくわからんな。
情報同士の対応(一対一、一対多)を書いて欲しい。
>>694 速い方法とは何が速い方法なんだ。
挿入、削除、検索、ソート、開発時間?
699 :
デフォルトの名無しさん :2006/08/14(月) 18:32:41
説明が意味不明ですいません。 String文字列が、S_0,S_1,S_2,...とあったときに、 S_0をA[0][1] A[0][2] A[0][3] , S_1をA[1][1] A[1][2] A[1][3] , S_2をA[2][1] A[2][2] A[2][3] , と二次元配列にいれるか、あるいは ArrayList<String> array = new ArrayList<String>(); array.add(S_0); array.add(S_1); array.add(S_2); として、必要なときにgetして切り分けるかどちらがいいかということです.
>>699 だから、なぜそこで二次元にする必要があるのかと問うているのだが。
A[i] で済むだろ。
>>694 class Data {
public String Name;
public String X;
public String Y;
public String Z;
}
これ作って Data[] か ArrayList<Data> のどちらでも好きなほうを使え。
702 :
デフォルトの名無しさん :2006/08/14(月) 18:49:50
>>700 すいません
S_0をA[0][1] A[0][2] A[0][3] →S_0を切り分けてA[0][1] A[0][2] A[0][3]
です。
>>698 うーん、自分でもよくわからず書いてしまいましたが、
とりあえず一番重要なのは追加です。ArrayListなら「追加して切り分け、追加して切り分け、」の繰り返しが速い方がいいです。
あと、A[][]の一番目の要素数=テキストファイルの行数です。
テキストファイルが大きいときに一回読み込んで行数を調べてからだとどうも時間がかかりそうなので、
テキストファイルの行数を速く知るほうほうがあるといいのですが
703 :
デフォルトの名無しさん :2006/08/14(月) 18:53:25
>>703 追加したあと、参照するんじゃないの?
例えば、Nameの値に関連付けられたX,Y,Zの値を使うとか
ArrayListだと検索がちょっとメンドウそう
HashMapとかが良いのかな?
705 :
デフォルトの名無しさん :2006/08/14(月) 19:51:17
XMLパーサはXML/XHTMLをパースできますが、HTMLをパースできないようです。 HTMLもパースする方法はありますか?
Swingなら勝手に解釈するよ。
707 :
デフォルトの名無しさん :2006/08/14(月) 20:36:07
JDK1.4.2、struts1.2.9で作ったWebアプリは、 J2SE5.0ベースのAPサーバ(Weblogic9.0とか)で問題なく動くのでしょうか? Sunの互換性に関する記述を読んでも良くわかりませんでした。
708 :
デフォルトの名無しさん :2006/08/14(月) 20:40:39
>>705 JTidy
HTML Parser
とか。
最近出た奴だとShaniXmlParserあたりか?
上位互換が前提だからな。 普通に動くとは思うが、動作テストは居る。
>>707 バイナリ互換?無けりゃコトだと思う。
WebLogicのマニュアル読んで、JDK1.4やらServlet2.3やらが
サポート範囲に入ってればなんら問題ないと思うけど。
(ちうかサポートしてるに決まってると思うが)
swing なら俺に任せろ
よし任せた では次
Fortranなら俺に任せろ
714 :
705 :2006/08/14(月) 22:04:20
>>708 ShaniXmlParser? どうやって使うのかわかりません。
>>711 わからないことがあったらその時はお願いします。
>>709 ,710
ありがとうございます。
安心しました。
716 :
705 :2006/08/14(月) 22:29:16
自己解決しますた
HREF=
http://www.url.com target=_blank
からurl部分を抜き出したいんですが、
うまくいきません。
Pattern p_url = Pattern.compile("HREF\\s*=\\s*(\\S*)\\s*");
String url = p_url.matcher("HREF=
http://www.url.com target=_blank").group(1)
とやろうとしてます。
解決策教えてください。。。
\sと\Sについて調べなおしてこい
ああ、 groupメソッドのまえに matchesメソッドを使わないとダメみたい。 うまくいきました。
staticってどんな時使いますか?
性的なとき
723 :
デフォルトの名無しさん :2006/08/15(火) 03:08:46
質問というよりは相談なんですが、 自前の例外クラスを作る上で、abstractなクラスを継承させるって方法、 変でしょうかね? なぜabstractなのかと言うと、それは「XX機能群の例外ですよ」って意味でしかなく、 実際に使われると困るからです。 マーカー的なインターフェース継承させるのでも良いけど、 例外クラスにおいては、なおさらやらない方法かなぁ?と思いまして。
躊躇うことはない。意味もハッキリしてるしデザイン上別に変じゃない。 良くやるかっつーと知らんけど。
そうっすね。悩むのやめました。
>>721 クラスに1-1対応したものを扱うとき。世界で唯一無二のイメージ。
対立概念はインスタンスに対応したもの
定番は、シングルトンパターン
定数より前にシングルトン出したお前を疑う
というかまずはファクトリメソッドだろ(createXxx系)。
いや、まずは円周率だろ
いやまずpublic static void mainだろ
GUIを勉強したいのですが、AWTとSwingのどちらを勉強すべきですか?
つーか Swing やるのに AWT は避けて通れない。
とりあえずAWT->Swingの順で勉強します ところで、Swingは「スウィング」なのでしょうけど、 AWTはどう発音するのでしょうか オウト?エーダブリュティー?
JSFを使って、入力データを登録前に 登録しますか?OK:NGのダイアログを表示して確認を行いたいのですが、 うまくいきません。 教えてください。
どう書いたらどううまくいかないのかぐらい書いてくれよ。
オシムなら3時間は怒ってるな
>>736 用語辞典とかではエーダブリュティーが多いね
Swingはかっこよくエス・ウィングだ
外人はOLEをオーレと呼んだり、GUIをグーイーと呼んだりするから面食らう。
PHP…ピフピ OOP…オップ CUR…カー JSP…ジュスプ ODBC…オドブク
うわああ!PCつけたらEclipseのexeファイルとかが消えた!なんでだ jarファイルとか他のフォルダは残ってるんだけど・・・何かしたかな
ふーふっふっふっふ…。 それはですね、 本体のあp(ry
教えてください(´・ω・`)
746 :
デフォルトの名無しさん :2006/08/15(火) 21:23:51
例えば、[a, b, c, d, e, f, g]と並んでいる配列を [d, b, f, g, a, e, c]等の任意の配列に並び返るには どのようにソートするのが効率的なのでしょうか?
任意といのはランダムという意味ではなく プログラマの決めた「ある法則」が存在するんだよな? Comparatorインタフェースを実装してArrays.sortに放り込めばOK ただしプリミティブ型は使えないのが玉に瑕(Stringはok)
748 :
746 :2006/08/15(火) 21:49:01
>>747 早速ありがとうございます。「任意」の意味は仰るとおり、ランダムでは
ありませんが、任意の配列は毎回変わります。
もうちょっと具体的な例を書かせてもらいます。
社員オブジェクトの配列があって、それと社員番号の配列があります。
社員番号の配列は実行の度に毎回変わるようなものです。
この社員オブジェクト配列を指定された社員番号の配列の通りに
ソートしたいという要求です。
感じとしては、sort(Employee[] employees, int[] ids):Employee[]
というようなメソッドが欲しいです。
こういった場合だと、Comparatorをメソッドの中で生成するのも難しそうですが、
どうでしょうか。
それはids[]を元に単純な並べ替え処理をしても たいしたコストでは無いような気がするけど・・・。
idsに漏れがないなら、イテレートして、対応するemployeeを順次詰めていけば ソートするまでもないような。 Map<Integer, Employee> m = new HashMap<Integer, Employee>(); for (Employee e: employees) { m.put(e.id(), e); } List<Employee> result = new ArrayList<Employee>(employees.length); for (int id: ids) { result.add(m.get(id)); } return result.toArray(new Employee[] {});
整列じゃなくて、単にids[]の順番どおりにマップするだけっすな。 それで良いんじゃ。
752 :
746 :2006/08/15(火) 22:48:45
>>749-751 なるほど、750のように順番を詰め替えていくような感じでいいんですね。
もっと裏技(?)みたいなやり方があるのかと思って、質問させていただきました。
ありがとうございます。
Swingでボタンやツリー等のアイコンをスキン対応させるにはどうするのがベターかな?
lafを勝手に変えればいいだけの話だろ?
>>755 そういう気持ちはたとえ心に思っていても
言葉には出すな…………この世界ではな…
OK、心に秘めてあの世まで持って行くことにするよ
758 :
デフォルトの名無しさん :2006/08/16(水) 11:13:20
alertの出現位置を中央から変えることはできますでしょうか?
JFaceのTextViewer等のテキストを編集したい場合 ・TextViewer.getDocument()でDocumentを編集 ・TextViewer.getDocument().get()でStringに入れて編集 のどっちがいい?
>>759 Stringに入れてもStringは編集できない
素直にDocumentを編集
>>758 setLocation で変えるのじゃダメなのか?
何の注釈もなしにいきなりalertと言っているのならjavascriptのalertの可能性がある。 もしjavascriptの話題なら板違いなのでWeb製作板へどうぞ。
VBみたいなビジュアルライクな環境でJAVAできると ききました。いまはコマンドラインでやってるんですが どんなもんなのでしょうか?またお勧めできますか?
ありがとうございます。 ビーンズとEclipseとういのをざっと調べてみました。 いまいちよくわからないのですが どちらがよいのでしょうか?
>>765 両方使ってみて扱いやすい方にすればよい。
そして、両方の使い心地をレポートにして報告してほしい。
あとを行く者達の役に立つから。
swing を作るなら NetBeans を使う方が便利だな。 それ以外を作るなら Eclipse だ。 ただ、NetBeans で GUI を作ってソースを自動生成させると 非常に汚いので俺は使わない。 使うなら、まずレイアウトマネージャを使わず setBounds で座標指定していき その後で GridBagLayout に変換する事をおすすめする。
元の質問は、「GUIアプリを作りたい」じゃなくて 「GUI環境で開発作業をしたい」じゃないのか?
「JAVAする」じゃ何ともなぁ・・・
どっちもGUI環境だけどな
771 :
デフォルトの名無しさん :2006/08/17(木) 00:03:55
質問です。ここは吐かれた例外に対する質問もありですか? java.net.MalformedURLException: unknown protocol: d の" d " って何なんですか?ぐぐると他にもcやf何かが出てくるのですが それぞれ意味があるのでしょうか?
>>771 unknown protocol: d って言われてんだから protocol の部分が d だったんだろ。
例えば d://hoge.com/foo とかやってたとか。
773 :
デフォルトの名無しさん :2006/08/17(木) 00:11:28
>>772 あっそうか!どうもありがとうございます。厨な質問でスレ汚し失礼しました。
774 :
デフォルトの名無しさん :2006/08/17(木) 00:27:02
java servlet のはなしはどこでされてるんdすか?
拡張forを使ってString配列の中身を すべて表示する場合に 何番目の配列かを表示する方法って 以下の方法以外に何かありますか? int i =0 for(String s : A){ System.out.println("A[" + i + "]" + s]); i++; }
Rubyのeach_with_indexみたいなやつですな。残念ながら、標準にはない。
質問というか、素朴な疑問。 ファイルを使う時などに、@みたいなパターンで書かれていることが多いですが、これをAみたいに書くと何か問題ありますか? 要は、closeが確実に呼べればよいのだと思うのですが、@だとエラー処理が2か所に分かれて気持ち悪いのです。 で、Aのように書いてみたのですが、世間のソースをみてみると@が圧倒的に多くて不安になったので。 @------------------------------------------------ FileReader fileReader = null; try { fileReader = new FileReader( inputFilePath ); fileReader.read(); // ※使う } catch( IOException e ) { e.printStackTrace(); // ※エラー処理 } finally { try { if( fileReader != null ) { fileReader.close(); } } catch( IOException e ) { e.printStackTrace(); // ※エラー処理 } } A------------------------------------------------ try { FileReader fileReader = new FileReader( inputFilePath );; try { fileReader.read(); // ※使う } finally { fileReader.close(); } } catch( IOException e ) { e.printStackTrace(); // ※エラー処理 }
778 :
776 :2006/08/17(木) 01:26:09
いちおう、こんなクラスで包む方法もある。まわりくどいが。 class Indexed<T> implements Iterable<WithIndex<T>> { Iterable<T> iterable; public Indexed(Iterable<T> iterable) { this.iterable = iterable; } public Iterator<WithIndex<T>> iterator() { return new Iterator<WithIndex<T>>() { private Iterator<T> iterator = iterable.iterator(); private int index = 0; public boolean hasNext() { return iterator.hasNext(); } public WithIndex<T> next() { return new WithIndex<T>(iterator.next(), index ++); } public void remove() { throw new UnsupportedOperationException(); } }; } } public class WithIndex<T> { public final T data; public final int index; public WithIndex(T data, int index) { this.data = data; this.index = index; } public static void main(String[] args) { Indexed<String> indexed = new Indexed<String>(Arrays.asList(args)); for (WithIndex<String> e: indexed) { System.out.printf("args[%d]=%s%n", e.index, e.data); } } }
779 :
776 :2006/08/17(木) 01:46:26
表に出す必要のないクラスを無名化。 for (WithIndex<String> e: WithIndex.over(Arrays.asList(args))) { System.out.printf("args[%d]=%s%n", e.index, e.data); } とやる。 public class WithIndex<T> { public static <S> Iterable<WithIndex<S>> over(final Iterable<S> iterable) { return new Iterable<WithIndex<S>>() { public Iterator<WithIndex<S>> iterator() { return new Iterator<WithIndex<S>>() { private Iterator<S> iterator = iterable.iterator(); private int index = 0; public boolean hasNext() { return iterator.hasNext(); } public WithIndex<S> next() { return new WithIndex<S>(iterator.next(), index++); } public void remove() { throw new UnsupportedOperationException(); } }; } }; } public final T data; public final int index; public WithIndex(T data, int index) { this.data = data; this.index = index; } }
>>777 fileReader.read() で例外が発生したときに
e.printStackTrace() と fileReader.close() のどっちが先に発生するか
わかりづらいだろ。
781 :
デフォルトの名無しさん :2006/08/17(木) 03:16:25
プログラムの追加と削除のなかで、 J2SE Runtime Environment 5.0 J2SE Runtime Environment 5.0 Update6 J2SE Runtime Environment 5.0 Update8 があるんですが上の二つはアンインストールしてもいいんでしょうか? カスな質問とは思いますがだれか教えてくださいまし
>>781 カスな質問だが、うどんに天カスは必要だと思うから答えてみよう。
消すが良い。
役に立たないカスなど要らない。要するに update8 以外は消せ!
そうやって私を捨てて行くのね (´・ω・`)
public class Debug100 { public static void main(String[] arg){ int i; int sum; sum = 0; i = 1; while(i <= 100) { sum += i; i = i + 1; } System.out.println(sum); } } これがなんで5050になるのか教えてください。 マジでなんで???????
むしろ期待してた結果は何だよ? sum = 1 + 2 + ... + 100 = 琶(i=1:100) = {100×(100+1)}÷2 = 5050 ↑琶 = n(n+1)/2 の公式って名前付いてたんだっけか?
788 :
デフォルトの名無しさん :2006/08/17(木) 08:52:02
>>787 そんなの公式でも何でもないだろw
>>786 じゃあなんで1+1=2なのか説明してみろw
ガウスの公式?
子供時代のガウス少年のエピソードは有名だが、総和程度で公式扱いしないだろ……
公式は定理を数式で表現したものだから
>>787 のも公式
底辺の長さと高さから三角形の面積を求める簡単な式も三角形の求積公式だよ
二次方程式の解を求める式も解の公式って言うだろ
複雑でなければ公式でないというのは数学の美学に反する判断基準だ
公式の定義がイマイチよくわからん。 定理とどう違うんだ?
ListViewer lv = new ListViewer(); lv.listRemoveAll(); とすると メソッド listRemoveAll() は型 ListViewer で不可視です。 と出るんだが,どうすればlistRemoveAll()を使用できる?
>>792 数式で出来てる定理を公式とよぶ
※定理は証明された命題
>>786 何で5050になるかって?
そりゃ、おまいさんのプログラムにバグが無かったからだよ
おめでとう
>>793 どうしてもしたければ、リフレクションでsetAccessible
というか、何で呼べないのかという理由を考えてみよう
使うと何か問題があるんじゃないのか?
他のメソッドとセットで使わないと内部整合性がとれなくなるから呼べなくしてるとか。
実現したい機能は別のメソッド使ったりとか。
ListViewerが自分で書いたクラスなら、被アクセスについて考えながらクラスの設計やり直し。
797 :
デフォルトの名無しさん :2006/08/17(木) 14:00:16
>>794 簡単にいうと数学で命題とは「真」か「偽」が定められる文のこと。
もちろん命題にも証明が必要。
定理とは命題のなかでも特に重要なもののことをいう。
定理(theorem)、命題(Proposition)、補題(lemma)、系(cororally)はみな命題の一種。
これらは重要度や役割によって名前が違う。
たとえば、定理の証明に必要な命題は補題といったり、定理からわりと簡単に導かれる命題の
ことを系といったりする。
もちろん重要度や役割は著者によって多少異なるから、あるテキストでは定理のものが
別のテキストでは命題だったりする。「ツォルンの補題」という定理もある。
798 :
デフォルトの名無しさん :2006/08/17(木) 14:03:48
cororallyはcorollaryの間違い
エクリプスっていうの使ってみましたが 起動が遅くてストレス溜まります。 次はネットビーンズ使ってみようと思います。
>>796 org.eclipse.jface.viewers.ListViewer のメソッドです
解説サイトもほとんど無いし,API Referenceは英語だし(日本語でもたぶん分からないけど),お手上げ状態…
801 :
800 :2006/08/17(木) 14:17:20
自己解決 英語のサイト読んだらコードがあった
>>797 ようするに宗派によって呼び方の差があると言う訳だ
803 :
デフォルトの名無しさん :2006/08/17(木) 15:40:27
>>802 まあそんな感じ。ただ宗派ほど大げさではなくて、本の書き方のスタイルというか。
あと時間が経ってからその価値がわかって名前が変わることもある。
ただこれは自分の理解なので違う意見もあるかもしれんが。
804 :
デフォルトの名無しさん :2006/08/17(木) 16:35:39
JITコンパイラってjava実行環境を入れてないwindowsで動作するexeにできるの? それはどこにあるの?
805 :
デフォルトの名無しさん :2006/08/17(木) 16:43:08
ハローワールドからまったく進みません。 一体なにから手を突けたらいいのかもわかんないっす・・ 誰かぼすけて
>>804 Just in Time コンパイラだからなぁ……。語源的に不可能。
>>805 あえてレスしてやろう、そんなところで躓いているようではこの先確実に挫折する
Javaの文法は序章に過ぎない、今からアンインストールして別の事やりなさい
あともう一つ、目標の無いヤツは何をやっても中途半端で終わる
>>805 次は、数当てゲームだ
というか、こういうのは誰かに見てもらうってのがいいと思う
こんな事できないの?とか言われて改良の刺激になる
ハローワールドもスゴイハローワールドにできるかもしれんしな
全画面表示、Lupinスタイルのハローワールドもアリだ。
>>804 JITというかJITを持ったJVMは、Javaコードをネイティブコードに
落とす機能を持っているからその機能を応用してネイティブの
実行ファイルを作る機能を持っているものもある。
JIというキーワードにこだわらず
Java、ネイティブコンパイル 辺りのキーワードで検索してみましょう。
gcjとかが引っかかってくるはず。
809 :
デフォルトの名無しさん :2006/08/17(木) 19:50:15
String#getBytes()で使われている 「プラットフォームのデフォルト文字エンコーディング」 というものは変更可能でしょうか?
810 :
809 :2006/08/17(木) 20:02:09
すみません。-Dfile.encodingオプションをjar指定より前に持っていったところ解決しました。
swing なら俺に任せろな
>>780 いや、そんな。
明らかに、fileReader.close()が先に発生しますよね。
わかりやすいかと言われればそうとも言い切れませんが、
これがわかりづらいのなら@だってわかりづらい。
というわけで、わかりやすさを理由としてAで書かない訳ではないと思うのですが。
813 :
デフォルトの名無しさん :2006/08/17(木) 22:12:39
(;・∀・)
JavaでC言語のmemsetにあたるようなものはありますか?
817 :
816 :2006/08/18(金) 00:39:13
あ、memsetか 失礼、memcpyと勘違いした
>>755 =757
スキン対応な独自のlafを作って勝手に変えればいいだけの話だろ?
それともSwingはもとからあるlafしか使えないとでも思ってるのか。
819 :
816 :2006/08/18(金) 01:01:47
>>815 素直にArrays.fill()でいいような
javaに環状バッファってありますか?
抽象クラスと抽象メソッドの有用性がよくわかりません。 ひな形になるのはわかったんだけど継承しても結局小クラス 同じ名前でオーバーライドするなら意味あるの?って思う。 同じ名前で使えるってところがミソなの? 良かったらご教示ください。
>>820 あからさまなリングバッファはないような気がする。
でも、リングバッファでやりたいことってQueueを実装するクラスで大体やれないか?
826 :
821 :2006/08/18(金) 01:42:12
レスサンクスです。
>>822 継承は1つのクラスからしかできないから
他に機能を持たせるために使うんだよね?
他にも使い方とかあるんですか?
>>824 確か適所適材の様な意味だったとしか記憶してません。
すみません。
>>825 型システムって初めて聞きました。
>>856 インターフェースに関してはwikiのFAQを読んでみよう
828 :
デフォルトの名無しさん :2006/08/18(金) 02:10:30
今日からJAVAはじめようと思うんだけど なんか注意点ある? ちなみにプログラミングはやったことない。
829 :
デフォルトの名無しさん :2006/08/18(金) 02:11:21
質問させてくらはい。 IE+JRE1.5でアプレットを使ったソフトを作ったのですが、 そのソフトを数日動かすとIEがダウンするわWindowsXPがハングするわとクレームが出てきました。 アプレットごときでOSを倒すような猛烈なプログラミングって出来るものでしょうか? CPU占有率100%な無限ループなプログラムでもXPを倒すのは不可能だとおもうですが。どうなんでしょう。 先方さんのPCがおかしいような気がするのですが。
830 :
デフォルトの名無しさん :2006/08/18(金) 02:14:22
まて 俺が先だろうが
>>777 Aだと read() で発生した例外が close() で発生した例外にかき消される。
こういう場合はどちらかというと後から発生した二次的な例外を捨てるのが普通の方法らしき
>>829 メモリーリークでもしてるんじゃあないか
>>828 とくに注意点はない。
良い教科書と良い師匠に出会えることを祈る。
>>828 プログラム”言語”って名前がついている以上、『読み書き』 と 『会話』 は必須
外国語習っている感じにゆっくり憶えてきー
836 :
デフォルトの名無しさん :2006/08/18(金) 04:33:56
俺はおまえらとは違う プログラミングなど貴様等の仕事だ。 俺は貴様等を使いプログラミングを完成させる男となる わかったらYESボスと言え
837 :
デフォルトの名無しさん :2006/08/18(金) 04:35:13
YESボス!
YESブス!
YESカス!
JavaBeansって存在意義が決まっているだけで内容はJavaと一緒?
いや、Javaでしかないんだけど・・・(^_^;
俺が寝てる間にすごい厨が湧いてたのですね。 本当にお疲れさまです。
Exception(具体的にはSAXParseException)のgetMessage()で得られるエラー文書を日本語化するにはどうしたらいい?
こんにちわ、ここ数日でJavaを学び始めた者です。 標準出力などを行う基本どころのアプリを作っているのですが、 検索してもいまいちわからないので質問させていただきます。 public static void main(String[] args) { public static void main(String args[]) { どちらで記述しても動くようですが、どちらの表記が標準なのでしょうか。 また、下の場合は何故変数名に配列を示す[]をつけても動くのでしょうか。
Throwable#getLocalizedMessageてのがきっとそのために用意されてたんだろ うけど、全くと言っていいほど使われてない。例外メッセージは開発者向けだか らローカライズしなくていいや、ってことになっちゃってるのかも。 とはいえ、例外情報が例外型とメッセージしかない場合は、ユーザー向けエラーダイ アログに入れるメッセージの作成に困るんだよな。
>>845 String[] argsが標準
C/C++プログラマのためにString args[]も使えるようになっている。
>>845 String[] argsが正式。
An array type is written as the name of an element type followed by
some number of empty pairs of square brackets [].
[JLS 10.1 Array Types]
String args[]は(C言語経験者がまごつかないように)
後ろにつけても同じ意味で解釈するように仕様で認めている。
The [] may appear as part of the type at the beginning of the declaration,
or as part of the declarator for a particular variable, or both, as in this
example: byte[] rowvector, colvector, matrix[];
[ditto]
上の例でmatrixの型は byte[] じゃなくて byte[][] なのに注意。
紛らわしくなるので、よほど思い入れがない限りはすべて型につけるのがおすすめ。
Yes!タカスクリニック
DefaultHandlerのstartElement()等で通知を受け取った時にそれがXML文書全体のどの位置かを知る方法はない?
自己解決…setDocumentLocator()か
char[]からStringへはどのようにすれば変換できますか?
853 :
852 :2006/08/18(金) 15:12:27
orz、ググったらすぐ出てきた スレ汚しすみませんでした
854 :
デフォルトの名無しさん :2006/08/18(金) 16:48:50
プログラミング初めてなんですが分からないことはよくjavaドキュメントを見ろと言われるんですが
例えば
>>852 みたいなことが知りたい場合どのように調べたらいいんですか?
関係ありそうなクラスのjavadocを見る。 この場合はStringクラスのドキュメント見ればすぐわかる。 またはググる。
857 :
デフォルトの名無しさん :2006/08/18(金) 16:56:30
javaドキュメントの見方が分からない・・・
858 :
デフォルトの名無しさん :2006/08/18(金) 16:58:21
あStringクラスのメソッドが全部載ってるんですね。
Javaのデフォルトエンコーディングを強制的に変更する方法って無い? Converters.getDefaultEncodingName()で取得するエンコーディングを変えたいんだけど。
860 :
デフォルトの名無しさん :2006/08/18(金) 18:07:10
JAVAとジャバザハットってなんか関係あるんですか?
861 :
デフォルトの名無しさん :2006/08/18(金) 18:16:20
jabba the hutt
>>859 java -Dfile.encoding=UTF-8
ageるやつ多いな、最近。
はぁ?なにいってんだデブ
信じられないのかい?トム でもこのスーパークリーナーJを使えばあっという間にピカピカさ
SELECT * FROM M_HOGE WHERE AAA = ? 等といったSQLをPreparedStatementで発行する際、 SQL文をlog4jで簡単にログ出力できませんでしょうか。 但し、[?]をsetString()した値に置換するという条件つきです。 SQL文を1文字づつループして置換するゴリゴリ戦法の場合、 [?]が100個、200個あった死んでしまいます・・
ループするなら 1 も 100 も関係ないだろ。 RDBMS によってはプレースホルダを DB 側で解釈するので、汎用的にそれをする手段はないよ。
ドメスティックボール
871 :
デフォルトの名無しさん :2006/08/18(金) 23:59:35
丸の内とらという人の、新書を買った素人です。 HellowWorld.javaをコンパイルすると、JoinString.classという ファイルが出来ました。そして、とらさんの本のように javac 〜と実行してもできなくて、 あるサイトにあったので、java JoinString としたら、Hellow World! と出たので、とりあえず嬉しかったです。 どういうわけなんでしょうか?
>>871 javac 〜
は〜をコンパイルすること。しかも〜はjavaという拡張子をもたないのでエラーになる。
JoinString.classを実行するには
java JoinString
としなければならない。
javacはコンパイルする、javaは実行する、と覚えておくこと。
873 :
デフォルトの名無しさん :2006/08/19(土) 00:44:34
872のかた、ありがとうございます。 javac HellowWorld.java とやったら、期せずして JoinString.class というファイルが出来ていたのです。 それでとらさんの本に、javac HellowWorld というふうに”実行”すると記されているんですけどね。 それから、コマンドプロンプトにまず、EasyJavaを表示させてから コンパイルするということが本に書かれてなくて、2日かかってしまいました。
いますぐ本を燃やして 明日本屋にいけ
古本屋には行くな。必ず大きな書店に行け。
最近はjavaの文法覚えるよりeclipseの使い方覚えるのに大変な新人が多いみたいね。
877 :
デフォルトの名無しさん :2006/08/19(土) 00:59:12
書店ではメガネの女店員がいい。 意外にJAVAに精通してるのがメガネ女店員なんだ
下手な本よりネットの情報のほうが役に立ったりする
>>871 Amazon で探してみたが、ひどく胡散臭そうなタイトルだな。
そういう本に限って役に立たなかったりするっつーのを念頭に置いておけよ。
できれば sun 公式のチュートリアルをお勧めする(無料だし)。 作り主から聴くのは良いと思う。
881 :
デフォルトの名無しさん :2006/08/19(土) 02:03:49
JAVAのe本 まじおすすめ
>>876 確かに。J++から移行したときも大いに。馴れればある意味MS系の開発環境よか使いやすいな。
ソースがスプリット表示できればもっと良いのに(><
j++??
むかしはそういうものがあったのだよ
T++
EclipseがVS.NET並みに単純になればなぁ…
やさしいJava → Java逆引き大全、 struts逆引き大全 → Javaで学ぶデザインパターン 俺はこの順だった。 大全系はリファレンス的に使う物だけど、こう言うのもあんのかぁって知っておいた 方が、後で忘れた時も引きやすいので、一度は全部に目を通しておく。 あとは、その都度ネットだな。 ほんとは本の方がいいけど、高いしはずれもあるから。
やさしいJavaが終わったら、アプリでも何でも良いから作ってみる その都度分からないことはネットで検索、ネットで全て何とかなる 後はデザインパターン入門でも買うと理解が深まる
2冊目か3冊目に日経BP社「ずばりわかる!Java」がお勧め。 胡散臭いタイトルのくせに、ためになる話が適度に凝縮されている。
やさしいJAVAっていくつかあるんだけど どれのこと?
やさしいJavaはスパルタだから気を付けろ
プログラミングに関係無いことで悪いんだけど Tomcatをインストールしようとすると途中で Apache Tomcat Setup Failed to install Tomcat5 service. Check your settings and permissions Ignore and continue anyway (not recommended)? という中止メッセージがでて 色々やってみたんですけど途方にくれています。 どなたか分かる方いませんか?
892 自己解決しました。98じゃ難しいみたいだねorz
5は全版98じゃむり。 4でも動いたり動かなかったり。
int l=100000; for(int i=0;i<l;i++){ hoge(i); } みたいに、forループである処理を何回も実行するときに そのループ内の進行状況をバーか%で表示するのになんかいい方法ってありますか?
やさしいJAVAはわかった気にさせる本
じゃあどの本がおすすめなの? プログラミング自体初
SWT使ってるんだが、 GridLayoutで [A][B] みたいに配置して A.setVisible(false)とした後 [ B ] みたいに[A]の見えなくなった領域まで[B]を拡張したいんだがどうすればいい? また、A.setVisible(true)とした後は [A][B] に戻したい
901 :
デフォルトの名無しさん :2006/08/20(日) 00:35:55
Pathについてなのですが 環境変数のPathに ;c:\Java\jdk1.5.0_06\bin を追加したのですが javacが使えません。 何が間違ってるのかご指摘願います。 使用OS Windows2000 フォルダ Cドライブ→プログラムファイルズ→Java→jdk1.5.0_06とjre1.5.0_06の二つフォルダが 入ってます
dir c:\Java\jdk1.5.0_06\bin
HttpURLConnectionを使ってOPTIONSメソッドを発行したいのですが、 どうやればいいでしょうか? もちろんsetRequestMethod("OPTIONS")を呼び出すことはわかりますが、 これを呼び出すためにURLクラスのインスタンスが必要になります。 これを HttpURLConnection con = new URL("*").getConnection(); con.setRequestMethod("OPTIONS"); con.connect(); とすると、当たり前ですがMalformedURLExceptionが出て、実行時エラーとなります。
URL url = new URL("
http://www.yahoo.co.jp ");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("OPTIONS");
InputStream in = con.getInputStream();
あ、すまん OPTIONS は OPTIONS * HTTP/1.1 みたいなリクエストが出来るんだったな。 new URL("http", "www.yahoo.co.jp", 80, "*") でダメなら無理じゃね?
>>904 ありがとうございます。
これでエラーはなくなりましたが、今度はOPTIONSの結果が見つかりません。
Map<String, List<String>> headers = con.getHeaderFields();
List<String> allows = headers.get("Allow"); // ここでnullが返ってくる
headersを全部表示してみましたが、Allowがないようです。
しかしステータスは200なので、OPTIONSメソッドが失敗しているわけではないようです。
new URL("http", "www.yahoo.co.jp", 80, "*") で出来ました。本当にありがとうございました。
>>907 telnet で直接ポート 80 叩いて Allows 返してるか調べれ。
一応OPTIONSのサンプル(の一部)です。 URL url = new URL("http", "www.yahoo.jp", 80, "*"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("OPTIONS"); Map<String, List<String>> headers = con.getHeaderFields(); List<String> allows = headers.get("Allow"); ちなみにgoogle.co.jpはHTTP1.0を使っているのか、 bad requestが返ってきました。
>>900 Display display = new Display();
Shell shell = new Shell(display);
final Composite comp = new Composite(shell, SWT.NULL);
final Button button1 = new Button(comp, SWT.NULL);
final Button button2 = new Button(comp, SWT.NULL);
button1.setText("Button1");
button2.setText("Button2");
button1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
GridData gridData = new GridData();
gridData.exclude = true;
button1.setLayoutData(gridData);
button1.setVisible(false);
button2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
comp.layout();
}
});
button2.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
GridData gridData = new GridData();
gridData.exclude = false;
button1.setLayoutData(gridData);
button1.setVisible(true);
comp.layout();
}
});
shell.setLayout(new GridLayout());
comp.setLayout(new GridLayout(2, false));
912 :
911 :2006/08/20(日) 02:59:49
要点は、 (1) setVisible(false)で不可視にしただけではレイアウト上は存在している。 (2) レイアウト対象から除外するためにはGridData.excludeをtrueにする。 (3) 全体を覆わせるためのwidgetをGridData.FILL_HORIZONTALにしておく。 (4) 再レイアウトするにlayout()を呼ぶ。
要点は SWTスレあるんだからそちらへいきなさい
いやです。
>>1 の「既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。」
って文言はコメントアウトされちゃってるからなあw
SWTスレの方がずっと回答率は高いと思うが
916 :
デフォルトの名無しさん :2006/08/20(日) 11:49:42
あなたは間違ってる SWTスレとか回答率とかそういうことじゃない ぼくはこのスレが好きなんです。 だからぼくは質問をやめない
釣られてあげよう 質問するなと言っているわけではないよ 回答できるのなら他に適切なスレがあっても回答することもある もちろん他スレに誘導することもある 無視することさえ 質問者の好き嫌いは回答のあるなしには関係ないということだ このスレが好きなのなら質問をするだけでなく他の人へ回答もしてあげてスレの質を高めていきましょう
分からないなら黙っててよ
まったくだ
ここはひどいインターネッツですね。
だまってろデブ
デブは関係ないだろう?!!
dev = developer
dev = device
dev=deviant
dev=/dev/null
927 :
129 :2006/08/20(日) 20:43:40
System.outに相当するOutputStreamは何でしょうか?
928 :
デフォルトの名無しさん :2006/08/20(日) 20:44:57
すみません、間違えました。 System.outに相当するOutputStreamは何でしょうか?
いや、探すのが面倒だから聞いてるんじゃないですか・・
答えるのが面倒なのでスルー
馬鹿野朗が。 どんな質問でも全力で答えるのが俺たちジャバラーだろうが おまえみたいな奴はでていけ
すいませんアニキ! 出直して来ます!
すばらしい! 感動した! 他会社の半島連中がハングルで会話しててうるさいんですがどうしたら良いですか?
936 :
928 :2006/08/20(日) 21:58:12
SystemにあるのはPrintStream型のoutだけです。 私が欲しいのはOutputStream型のオブジェクトです。
937 :
928 :2006/08/20(日) 21:59:23
失礼。 PrintWriter型のoutだけです。
938 :
928 :2006/08/20(日) 22:01:49
失礼失礼。 PrintStreamで良いのでした。
OutputStream myout = System.out;
940 :
928 :2006/08/20(日) 22:09:26
もうちょっと詳しくよろしく
941 :
928 :2006/08/20(日) 22:14:49
失礼。 できれば完全に動くソース付きで。
>>941 君はもう、5レス越えちゃってるから、明日ね。ノシ
943 :
928 :2006/08/20(日) 22:19:42
PrintStream -> OutputStreamということでしたか。 馬鹿な質問をしました。すみません。
944 :
928 :2006/08/20(日) 22:21:47
失礼失礼。 キムチは最初に持ってきてください。
946 :
928 :2006/08/20(日) 22:56:41
逝ってきます。
947 :
928 :2006/08/20(日) 23:13:59
ただいま戻りました
950 :
928 :2006/08/20(日) 23:45:01
もう一度逝ってきます。
System.out.println() でdoubleの数値を出力するときに、 小数点第2位までしか表示させないようにするにはどのようにすればいいのでしょうか?
952 :
デフォルトの名無しさん :2006/08/21(月) 00:25:04
プログラミング初心者です。 staticを付けるのと付けないのでは、どう違ってくるんですか?
属する対象が変わってきます
954 :
928 :2006/08/21(月) 00:34:29
そろそろいいですかね?
>>951 printfを使う
// これであってるかどうかは知らん
double d = 0.12345;
System.out.printf("%1.2f%n", d);
>>955 解決しましたー、ありがとうございました
>>951 .955
それでもいいけど
より汎用的にはNumberFormat
>>958 Javaのprintfでは%nを使う。
>>863 それじゃConverters.getDefaultEncodingName()で取得するエンコーディングは変わらんのよ
>>960 変わるよ。
System.setProperty("file.encoding", newEncoding) とかやっても反映されないと思うけど。
蛇腹ってキモいよね。
>>961 1.4.2_12だと変わらんわ。
1.5.0_08だと変わった。
むぅ、1.5にするわけにはいかんし、どうすればいいのやら・・・
普通に encoding 指定するようにすれば良いだけでは?
大文字・小文字を区別せず部分一致検索を行いたいんだが, 検索する文字列をtoLowerCase()またはtoUpperCase()で統一する以外の方法はある?
966 :
デフォルトの名無しさん :2006/08/21(月) 15:27:00
正規表現
ゴメン、間違えた・・ 大文字・小文字を区別せず部分一致検索を行いたいんだが, 検索する文字列をtoLowerCase()またはtoUpperCase()で統一する以外の方法はある?
String quoted = Pattern.quote(str); //正規表現として意味のある文字をエスケープ String regexp = String.sprintf(".*%s.*", quoted); // 部分としてそれを含む正規表現 Pattern pat = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE); // ケース無視
>>968 String regexp = String.sprintf(".*%s.*", quoted); // 部分としてそれを含む正規表現
これって必要ある?
Matcher#find使えば良いんじゃないの?
あるN行のCSVファイルの読み込みで StreamTokenizerで1行ずつ読み込んだ値を、配列に代入しています。 しかし、通常の配列の場合だとNが事前にわかってないといけなくて、 わざわざ配列サイズを事前に指定するのは面倒です。 一応、素人考えで以下のような解決方法を考えたのですが、 どのように処理するのがスタンダードなのか教えていただけないでしょうか (1)1度すべての行を読み込んでNを取得した後に、サイズNの配列を用意し、1行目から再読み込み (2)wcなどの行数を取得するスクリプト、あるいは行数を取得する関数を持ったクラスがある?を事前に読み込んでNを取得 (3)Vector(?)などの可変長配列を用いる
>>969 あー、findがあった。
最近matchesが全体マッチなのにハマったばかりなのに。
>>970 (1)と(2)は自前のコードでやるかどうかの違いで2パスであるのは変わらない。
コレクション使った(3)をやれば1パスで済む。
>>970 一番簡単なのは (3) だね。
仮にメソッドの引数とかで渡す時なんかに配列にする必要があっても
ArrayList でも Vector でも toArray 使えば配列にシャローコピーできるし。
>>972-973 レスありがとうございます
方向性は間違ってなかったようなので(3)で実装することにします
実行したファイル名をプログラム内で知りたい場合はどうすればいいのですか? java -jar exsample.jar このときexsample.jarという文字列を所得したい。 環境 JDK1.4
URL url = this.getClass().getClassLoader().getResource(this.getClass().replace('.', '/')); System.out.println(url);
>>978 ご教示ありがとうございます。
参考にして取得できました。
980 :
デフォルトの名無しさん :2006/08/22(火) 01:40:19
JAVAのコンパイルするソフトDLしたいんですが、 ダウンロードできる場所おしえてください。よろしくお願い思案す。
public static void main(String[] args) { の「args」について、諸君らはどのように呼んでいる?
あーぎゅす
フィールドにスタティックを使う理由はありますか?動作も理解しづらいのですが 例えばint ahya;とフィールド宣言すればそのフィールドは他のクラスから複数インスタンスを作って参照出来るけど sitatic int ahya;と定義すれば複数参照出来ずahya自体が一つしか存在しないって事になるのですか?
985 :
982 :2006/08/22(火) 04:22:38
class This { private int a; public void setX(int x) { this.x = a; } public int getX() { return a; } public void msg() { System.out.println("This: " + a); }} class ThisDemo2 { public static void main(String[] args) { This obj = new This(); obj.setX(10); int x = obj.getX(); obj.msg(); System.out.println("main: " + a); }} ThisDemo2.javaという一つのソースファイルに2つのクラスを上記の通り記述しコンパイルすると正常に動作するのですが This.javaとThisDemo2.javaという2つのファイルに分けて記述するとThisDemo2クラスの最後の出力文のaがEclipse上で×になります。 どのように記述すれば正常にコンパイルできるのでしょうか?
988 :
987 :2006/08/22(火) 06:53:03
すみませんint x = obj.getX();を書き忘れていました。長々と書いたあげく凡ミスですみません・・・
System.out.println("main: " + x);
>>990 乙彼、2getしたかったけどもうかかれちゃってるよ・・・
昨日からJavaを始めたんですが、
2つクラスを作ってクラスの継承を行わないで、
片方のクラスでもう片方のクラスの内容を表示するのって可能なんですか?
>>1 のサイトも見てみたのですが私の欲しい答えが出てこないです・・・(;´Д`)
>>992 ゲッターメソッド実装すればいいじゃない
994 :
デフォルトの名無しさん :2006/08/22(火) 11:40:43
クラスの内容を表示するってどういう意味?
>>992 コピーしたいメソッドのオブジェクトを作って参照させればいい
入門サイトを見ながら色々設定してみたのですが、javac Hello.java と入力しても、ナントカカントカが認識されていませんと出て プログラムを動かすことができません。 どうすれば良いのですか?
>>993 さん
>>995 さん 有難う御座います!やってみます!!
>>994 さん System.out・・・・みたいな感じで表示できないのかなー?と;;
999は992です(;´∀`)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。