【初心者】Java質問・相談スレッド93【大歓迎】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/10/22(日) 13:42:10質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
前スレッド
【初心者】Java質問・相談スレッド92【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1159700963/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
次スレは>>980あたりで。
0002デフォルトの名無しさん
2006/10/22(日) 13:45:18http://pc8.2ch.net/test/read.cgi/tech/1159642341/l50
これは使わないの?
0003デフォルトの名無しさん
2006/10/22(日) 13:52:59【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0004ぴゅあ
2006/10/22(日) 14:09:370005デフォルトの名無しさん
2006/10/22(日) 15:45:20本スレはこちら
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0006デフォルトの名無しさん
2006/10/22(日) 18:10:372次元配列をつくるのにはどうしたらいいんですか?
0007デフォルトの名無しさん
2006/10/22(日) 18:15:19int[][] a = new int[10][];
for(int i = 0; i < a.length; i++) a[i] = new int[10];
0008デフォルトの名無しさん
2006/10/22(日) 18:27:04このスレは偽物です。
本スレはこちら
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0009ぴゅあ
2006/10/22(日) 18:40:00向こうでは本物とも偽物ともくだらんことは一言も言い出してないし
向こうでは本スレではないと明言されてるんじゃないの?
0010デフォルトの名無しさん
2006/10/22(日) 18:53:58日付 項目1 項目2 ・・・
20061019 a e ・・・
20061020 b f
20061023 c g
20061024 d h
のようなデータがあったとします。
行が一つのインスタンスになっていて、日付をキーとしてデータを取得したいのですが
このようなデータを格納するのに、なにかいいクラスないでしょうか?(多次元のHashとか?)
例えば、key=20061023 のときに下記のようなメソッドを作ってデータ取得したいと思っています。
get項目1(key) → return c
get項目2(key) → return g
get項目1(key,1) → return b (keyの1日前の項目1のデータ)
0011デフォルトの名無しさん
2006/10/22(日) 19:01:37むこうのスレに(・∀・)カエレ!
0012デフォルトの名無しさん
2006/10/22(日) 19:16:21> return b (keyの1日前の項目1のデータ)
1日前、じゃなくて、一つ前の日付の項目1のデータ…… なのか。
例えば SortedSet<日付> s; Map<日付, List<項目>> m; とかして
m.get(key).get(1)
m.get(key).get(2)
m.get(s.headSet(key).last()).get(1)
0013ぴゅあ
2006/10/22(日) 19:21:21>行が一つのインスタンスになっていて
というのはそういうクラスを既に作ってあるということ?
(匿名でもできなくないけどちゃんと作った方が楽だと思うし)
>なにかいいクラスないでしょうか?(多次元のHashとか?)
その上で、行方向だけみればいいので多次元とか考える必要はなくて
1次元配列として考えられますよね
そして
>日付をキーとしてデータを取得したい
というところからキーと値のペアを持てるのはMap(くらいかな?)
(キーが一意になることを前提としてみれば)
・キー部分(日付)を取り出してMapを作る
・先のクラスには値部分だけを持たせてキーと値のペアでMapを作る
とか考えられるんじゃないでしょうか
HashMapを使うのかどうかとかは目的に応じて適したものを使えばいいと思う
或いは
>get項目1(key) → return c
>...
とかの部分はそのMapを操作した結果から1行を得てそれぞれにアクセスするとか
Mapを含めて操作するクラスを作って必要なメソッドを用意しておいてやるとか
0014デフォルトの名無しさん
2006/10/22(日) 19:23:42SortedMap<日付, List<項目>> で行けそうな感じもする。
もっとも、1つ前の日付とか1つ後の日付ならともかく、
3つ前とか 4つ後とかだと面倒くさい。
Map<日付, Integer> m; List<List<項目>> l; とかして
l.get(m.get(key)).get(1)
l.get(m.get(key)).get(2)
l.get(m.get(key) - 1).get(1)
とか、そんな感じの方が良いか。
0015デフォルトの名無しさん
2006/10/22(日) 20:03:34レスありがとうございますっっ
コレクションをほとんど使ったことないもので、ものすごい参考になります
>>12
すいません、1日前じゃなくて1つ前のデータでした。
MapのValue値にList型をいれるという発想がなかったようです orz
s.headSet(key).last()ってのは、
keyより小さいSortedSetを取り出して、その最後を返す=keyの一つ後ろを返すってことですよね
最初の書き方が悪かったんですが、1つ前のデータだけじゃなくてN個前のデータが取得したいのでコレは保留でしょうか
>>13
既にクラスがあるのではなく、
データをどのようなクラス(or配列)にいれるのがベターかという話しです
最初は
int[] data,koumoku1,koumoku2 とやってたんですが、
日付をキーとして取り出せないことで破綻しまして。。。
MapのValueにクラスが入る発想がなかったので、
多次元Hashとかアホなことを考えてしまったようです
>>14
Map<日付, Integer>と、日付に対してIntegerを割り当ててるのは、N個前を表現するためですか?
そうだとしたら、Mapを作る時点で日付の一番古いところに値0、それ以降は値++って感じでMapを定義すればいいんでしょか?
0016デフォルトの名無しさん
2006/10/22(日) 20:04:59中止となります。また、それに伴いましてクリスマスイヴやプレゼント交換会
も中止となります。ご了承下さい
http://2chart.fc2web.com/2chart/2007kurichuusi.html
また、昨年お伝えしましたように、2006年のクリスマスも中止です。
http://2chart.fc2web.com/2chart/2006kurisumasuchuushi.html
毎年、各所でこのような楽しいクリスマスの風景が見られましたが
自粛でお願いします。
http://2chart.fc2web.com/2chart/tanosiikurisumsu.html
0017デフォルトの名無しさん
2006/10/22(日) 20:10:48言葉足らずでごめんね。
> Map<日付, Integer>と、日付に対してIntegerを割り当ててるのは、N個前を表現するためですか?
yes
> Mapを作る時点で日付の一番古いところに値0、それ以降は値++って感じ
そんな感じで。
0018ぴゅあ
2006/10/22(日) 20:31:05>既にクラスがあるのではなく、
>データをどのようなクラス(or配列)にいれるのがベターかという話しです
取り敢えずやってみるとかなら兎も角も
行の全ての項目を持つかキーと値を別としたクラスを作っておくと
1つのオブジェクトとか考えられて楽かもね
後々も
キーで探したい仕組みというのと、行内の各項目とはまた別でしょ?
Mapが作れた後は、キーをどう扱うかだけ考えればいいことになると思うし
例えば
・キーとなる日付の行を基準に存在する行に対して±nとか
・日付に対して±nの日付をキーとして探すとか
作ったMapに対して操作するクラスがあればいいわけで
機能を増やしたければメソッドを作りこんでいけば
行が取り出せれば、行の単位としたオブジェクトから各項目を取り出したりすればいいわけだし
(それは行単位としたクラスにメソッドがあればいいでしょ)
>>13で言ったのと同じことしか言ってないですけどね
0019デフォルトの名無しさん
2006/10/22(日) 20:40:20どもどもー
とりあえず>>17みたいな感じで作っていき、
あとはメソッドを作り込んで対応してみようと思います。
まじ、参考になりまくりでした。ありがとうございまっす!
0020デフォルトの名無しさん
2006/10/22(日) 20:40:26【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0021デフォルトの名無しさん
2006/10/22(日) 23:21:15>>14の
Map<日付, Integer> m; List<List<項目>> l; とかして
l.get(m.get(key)).get(1)
l.get(m.get(key)).get(2)
l.get(m.get(key) - 1).get(1)
を参考に実装してみたんですが、List<List<項目>> l; のところって、例えば
ArrayList<Integer> koumoku;
ArrayList<List> l;
for(int i=0;i<size;i++){
koumoku.add(i番目の項目1のデータ);
koumoku.add(i番目の項目2のデータ);
l.add(koumoku);
}
ってやると、koumokuにデータがどんどん追加されていってしまいますよね。
なので、koumokuを大きさsizeの配列にしてみたんですが、それだと
koumoku[date_map.get(key)].get(1)
koumoku[date_map.get(key)].get(2)
koumoku[date_map.get(key)-1].get(1)
とかでアクセスできてしまうので、
lを作成した意味がないような気がするんですが、なにか根本的なところが間違ってるんでしょうか?
0022ぴゅあ
2006/10/23(月) 00:25:23根本的に間違っているといえば・・・
forループの中1回分がkoumoku1個分を作り上げlにaddするつもりですよね?
たぶんkoumokuはforループの外でnewしてあるんだと思うけど
そのコードではforループの回数分"1個のkoumokuに"addされていくことになるでしょう
forループ1回毎にkoumokuをnewしてやらないと
「i番目のkoumoku」とはならないんじゃないでしょうか
(koumokuは内側のList<項目>を作るつもりで、lは外側のList<...>のつもりの筈?)
>koumoku[date_map.get(key)-1].get(1)
>とかでアクセスできてしまうので、
は前半が片付かないと…と思うので保留
あと、折角
>ArrayList<Integer> koumoku;
>ArrayList<List> l;
のように書くなら
ArrayList<Integer> koumoku;
ArrayList<ArrayList<Integer>> l;
がいいんじゃないかと思うけど
(Listインターフェイスの範囲でしか使わないならArrayListの部分はListでも可)
0023ぴゅあ
2006/10/23(月) 00:39:39>List<List<項目>> l;
とするということは2次元配列を扱おうとしていることになるでしょうから
(Listとか関係なく)2次元配列の扱い方について調べてみるといいのかも
そうすればforループの中をどうすればいいかとか
判ってきたりするんじゃないでしょうか
0024デフォルトの名無しさん
2006/10/23(月) 00:51:36ArrayList<Integer>[] koumoku;
ArrayList<ArrayList<Integer>> l;
for(int i=0;i<size;i++){
koumoku[i] = new ArrayList<Integer>();
koumoku[i].add(i番目の項目1のデータ);
koumoku[i].add(i番目の項目2のデータ);
l.add(koumoku);
}
int out = koumoku[date_map.get(key)-1].get(1):
//int out2 = l.get(date_map.get(key)-1).get(1));
って感じで一応期待の結果は得られたのですが、これだと
out と out2 は同じ結果を返すので、
ArrayList<ArrayList<Integer>> l;
は不要かなぁと思ったわけです。
そもそも、koumokuを配列にしてるのがおかしいんでしょうか?
0025デフォルトの名無しさん
2006/10/23(月) 01:09:56あぁぁ、2次元配列ってそういうことですか。やっと理解したような気がします。
ArrayList<Integer> koumoku;
ArrayList<ArrayList<Integer>> l;
for(int i=0;i<size;i++){
koumoku = new ArrayList<Integer>();
koumoku.add(i番目の項目1のデータ);
koumoku.add(i番目の項目2のデータ);
l.add(koumoku);
}
int out2 = l.get(date_map.get(key)-1).get(1));
ってforの中でkoumokuをnewしとけば
わざわざ配列にしないでも2次元配列みたいに扱えるんですね
0026ぴゅあ
2006/10/23(月) 01:33:44>そもそも、koumokuを配列にしてるのがおかしいんでしょうか?
>>14とかの話を前提とするならおかしいということになるでしょう
ArrayList自体が既に配列のようなもので…
挙げられたコードだと"l.add(koumoku[i]);"になるべきでしょうね
(一応これにより辻褄は合う筈ですが"[i]"なしでうまく行きました?)
でもkoumoku自体は項目nのデータを持つ配列(=行)にしたいわけで
lは各行(を作ったkoumoku)を持ちたいわけですから
koumokuは1行分として持てばいい
なのでkoumokuを配列にする必要はないですよね
koumoku ... 1行分の各項目を持つArrayList(配列)
l ... koumoku(1行分)を行ごとに持つArrayList(配列)
(koumokuは1行ごとに作り直している)
と考えてみてはどうでしょう
lはkoumoku(ArrayList<Integer>)を持つArrayListなので
ArrayList<ArrayList<Integer>>ということになる
>int out = koumoku[date_map.get(key)-1].get(1):
これはkoumoku[n]でn行目が取れて
koumoku[n].get(1)でn行目の2番目の項目を取り出している
ということになりますよね
koumokuを配列とする(ArrayList<Integer>[] koumoku;)なら
lは不要ともなるでしょうけど…
要はkoumokuの"[]"(配列)の部分をlに任せるか(行数はaddした任意の数)
koumokuを配列(行数はsizeで決めておく)にするかの違いでしょう
0027デフォルトの名無しさん
2006/10/23(月) 01:36:10rxtxを使ってシリアル通信でデータを取り込もうとしているんですが、
19200bpsでデータを取り込もうとすると、とたんにレスポンスが悪くなります。
10msec間隔で8文字受信してリアルタイムにprintlnで表示をするプログラムを動かしてみた
のですが、5秒間、500個のデータを表示し終わるのに9秒くらいかかっています。
5秒で通信が完了しているのはプロトコルアナライザで確認しました。
5秒(通信完了)時点でのデータ表示数は300個弱、その後3−4秒くらいダラダラと表示
しつづけるのです。
プログラム自体は、単純です。シリアルポートイベントリスナで受信を引っ掛けて、\rが出るまで
StringBufferに溜め込んでprintlnで表示しているだけです。
jdkのバージョンは1.5.0_08
jreのバージョンは1.5.0_06
rxtxのバージョンは2.1-7r2
osはwindows2000sp4
です。PC用のアプリケーションを作るのは初めて(マイコンでのプログラム経験はあり)なんですが
19200bpsで、この遅さはあり得ないだろ、と思っています。きっと俺の勘違いか思い込みだと思うのですが、
なにか気づいた点がありましたらアドバイスください。m(_ _)m
0028デフォルトの名無しさん
2006/10/23(月) 01:41:38prontln
は負荷がおっき〜のでバッファに保存して、
ボトルネックがprintlnかシリアルポートかき莉分けてみては。
0029デフォルトの名無しさん
2006/10/23(月) 01:44:04まさかとは思うが、println() がボトルネックになってたとか、そーゆー話じゃないよね?
0030デフォルトの名無しさん
2006/10/23(月) 01:44:41メニュー画面から入力フォーム(入力用テキストフィールド等が配置してある)
に行きさらにボタンを押すと2枚目の入力フォーム・・・というような画面遷移の処理の仕方が全く分かりません。
ラベルの配置等個々の画面の表示等は教本片手になんとかできたのですが
Javaでプログラムをするのが初めてなものですいません、どなたかご教授お願いします。
0031ぴゅあ
2006/10/23(月) 01:53:55そんなとこです
ArrayListの中身って、オブジェクトの配列になっていたりします
("います"と言ってしまってもいいのか?)
Integer[] koumoku;
とかとしてしまうと、予め要素数が判っている必要がありますが
ArrayListにしてやると、足りなくなったら拡張してくれるので
(内部ではサイズを変えて(拡張して)newし直している)
必要な要素数が予測できないとき(要素数が可変の配列として)ArrayListとかで一度受け取ってから
後でサイズを得て、ピッタリサイズの配列に作り直すとか
よくやられているみたいです
0032ぴゅあ
2006/10/23(月) 02:07:592次元配列辺りとかが解ってくると(似た形にはなったりすると思う)
その辺りも解ってくるんじゃないかと思います
という肝心なところを書き忘れてました。。。
0033ぴゅあ
2006/10/23(月) 02:16:04【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
に来てもらえば詳しく解説します。。。
0034デフォルトの名無しさん
2006/10/23(月) 02:17:230035ぴゅあ
2006/10/23(月) 02:18:540036デフォルトの名無しさん
2006/10/23(月) 02:29:49長々とまじでありがとうございました。
コレクション使ったことなかったけど、だいぶ使い方がわかりましたっっ
ここの板IDでないのが(´・ω・`)
0037デフォルトの名無しさん
2006/10/23(月) 02:46:14List<? extends List<Integer>>
くらいに汁
0038デフォルトの名無しさん
2006/10/23(月) 07:59:52レベルの高い人と全然駄目な人が混在してますね。
>>28-29、37さんはもう少し勉強したほうがいいですよ。
0039デフォルトの名無しさん
2006/10/23(月) 13:03:07ぴゅあ乙
0040デフォルトの名無しさん
2006/10/23(月) 13:30:480041デフォルトの名無しさん
2006/10/23(月) 16:48:46ユーザー 'admin' によってロックされているので、更新できませんでした。
っていうエラーがでるんだけど、どういうエラー?
0042デフォルトの名無しさん
2006/10/23(月) 16:54:090043デフォルトの名無しさん
2006/10/23(月) 18:43:200044デフォルトの名無しさん
2006/10/23(月) 19:03:450045デフォルトの名無しさん
2006/10/23(月) 19:08:000046ぴゅあ
2006/10/23(月) 19:19:46Math.min,max
こっちで質問してもらっても良いですよ
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0047デフォルトの名無しさん
2006/10/23(月) 19:30:380048デフォルトの名無しさん
2006/10/23(月) 19:33:420049デフォルトの名無しさん
2006/10/23(月) 19:55:27Vectorでクラスの配列をリストで管理するように
整数の配列をリストで管理するようなクラスってありませんか??
0050デフォルトの名無しさん
2006/10/23(月) 20:20:38jakarta commons primitives
0051デフォルトの名無しさん
2006/10/23(月) 20:28:50どこかに参考となるようなサンプルソースコードが掲載されたサイトはありませんか?
0052ぴゅあ
2006/10/23(月) 20:55:52(その後、どうだったかとかがないし・・・)
>>30
ページ毎に配置して破棄して…なんてごにょごにょやるとかいう地道?なのもあるだろうけど
JFrameのContent Paneに乗せているということならContent PaneってJPanelらしいので、
(APIリファレンスのJFrameの中の「Using Top-Level Containers」辺りも見てみるとか
英語だけど・・・ ググッたらどっかに邦訳とかあったような・・・ 気の所為かも。。。)
Content PaneにJPanelを乗っけてやれば、殆どそのまま今やってるのをJPanel上に移せそうですよね
各ページ毎にJPanelを作って乗せてやって、表示/非表示を切り替えてやればいいんじゃないかと
(表示/非表示についての似た話があったのは前スレだったのかな・・・?)
ただ、JFrameではあまり色々といじってないので、ちゃんと試して確認してね
ですけど。。。
或いは先のページ(中程)を見てみると、Content Paneを差し替えるとかできそうなので
もしかしたら表示/非表示よりシンプルに?行ったりするのかもですけど
ただ、Content Paneごとページ単位で差し替えていいようなデザインとかだったら…だし
通常はJPanelを作って乗せるとかの方がいいのかも
(何かのときに試してみようかとも思ってるけど
もし試してみたら、こんなだったとかあると嬉しかったりするけど…)
0053ぴゅあ
2006/10/23(月) 20:58:45もしかしてファイルのアップロードとか?
"Servlet アップロード"とかでググってみれば色々出てくると思うけど
0054デフォルトの名無しさん
2006/10/23(月) 21:07:15昨日私宛に1通のメールが届きました。
http://www.do-to.com/
マイルーム「トピックス:10月22日付」にてご案内の通り一部の
旧コバルトJサーバー復旧にあたりハードディスク取替えのため
各サイトについて担当エンジニアにて至急に再設置作業が行われ
ています。
再設置を完了しだい各サーバーは本日夜間から順次接続を再開し
初期トップページが開きますので下記のサーバー初期アカウント
にて管理ページへログインしパスワード変更及び追加ユーザー・
メールアドレス設定とお手元よりページファイル等のFTP転送
をご処理ください。
私なりに考えてみたのですがこれってサーバーが故障したので別に移しました。
後はそちらでFTPなどし直して下さい。みたいなメールに見えるんですけど
昔からのデータも消えてしまいましたしCGIなどの設定なども解りません。
メール設定なども最初からやらなければならないし。
サーバー会社ってみんなこんな感じなんでしょうか?
0055デフォルトの名無しさん
2006/10/23(月) 21:10:560056デフォルトの名無しさん
2006/10/23(月) 21:39:11どうしてもドットコムから送られてきたコノメールが良い様にとらえる事が出来なくて。違う観点があるのでしたら聞かせてもらえますか
0057デフォルトの名無しさん
2006/10/23(月) 23:56:43Javaアプリケーションでファイルコンバータを作ろうと思っています。
Java1.4.2_12
そこでファイルダイアログを開く為にFileDialogクラスを使ってみましたが
・拡張子が選択できない。(”すべてのファイル”しかない。)
・初期参照フォルダパスが設定できない。
FileDialogで上記の設定ができるでしょうか?
もしくは別なファイルダイアログクラスはありますでしょうか?
よろしくお願いします。
0058デフォルトの名無しさん
2006/10/24(火) 00:46:12ArrayList<Integer> list = new ArrayList<Integer>();
list.add(64);
list.add(32);
Collections.sort(list);
System.out.println(list.get(0));
System.out.println(list.get(1));
要1.5
0059デフォルトの名無しさん
2006/10/24(火) 01:10:31java.awt.FileDialog だったら
> 拡張子が選択できない。
setFilenameFilter 使う。
ただし、Sun のJDK使ってるなら、Windowsでは機能しないらしい。
> 初期参照フォルダパスが設定できない。
setDirectory 使う。
Swing だと JFileChooser かな。
0060デフォルトの名無しさん
2006/10/24(火) 01:14:11FileFilter pngFilter = new FileFilter() {
public boolean accept(java.io.File f) {
return f.isDirectory() || f.getName().toLowerCase().endsWith(".png");
}
public String getDescription() {
return "PNGファイル(*.png)";
}
};
FileFilter jpgFilter = new FileFilter() {
public boolean accept(java.io.File f) {
return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
}
public String getDescription() {
return "JPEGファイル(*.jpg)";
}
};
chooser.setCurrentDirectory(new java.io.File("C:\\Program Files"));
chooser.addChoosableFileFilter(pngFilter);
chooser.addChoosableFileFilter(jpgFilter);
chooser.setFileFilter(pngFilter);
chooser.showDialog(null, "ファイルを開く");
006230
2006/10/24(火) 02:41:45まさかこんなに丁寧に答えてくださるとは思ってもみませんでした
ありがとうございます
がんばってみますね
もしその方法を試されて成功された場合はまた教えてください
0063ぴゅあ
2006/10/24(火) 13:55:35ドンピシャです!参考になりそうなソースが出てきました。ありがとうございます!
0064デフォルトの名無しさん
2006/10/24(火) 13:57:11出た方が便利なのに。
0066デフォルトの名無しさん
2006/10/24(火) 15:51:240067デフォルトの名無しさん
2006/10/24(火) 16:54:05public PixelGrabber(Image img,int x,int y,int w,int h,int[] pix,int off,int scansize)
を使用してimgのピクセルデータをint型のpixに格納はできました。
int型のpix(例えばpix[0])には-16705004というイミフな数字が格納されます。
このpix[0]に対して
r_pixels[a][b]=(color_in2[a][b]>>16) &0x000000ff;
g_pixels[a][b]=(color_in2[a][b]>>8) &0x000000ff;
b_pixels[a][b]=(color_in2[a][b]) &0x000000ff;
を行うと、各rgb成分として1,26,20が取り出せました。
このようなint型のrgb成分から-16705004のようなイミフな数字を逆に取り出すにはどのようにすればいいのでしょうか?
よろしくお願いしますm(_ _)m
006867
2006/10/24(火) 16:58:57g_pixels[a][b]=(color_in2[a][b]>>8) &0x000000ff;
b_pixels[a][b]=(color_in2[a][b]) &0x000000ff;
でななくて
red = (pix[0] >> 16) & 0x000000ff;
green = (pix[0] >> 8) & 0x000000ff;
blue = (pix[0]) & 0x000000ff;
です
0069デフォルトの名無しさん
2006/10/24(火) 17:03:15半透明を指定するアルファ値を不透明に固定で良いなら
final int alpha = 0xFF;
int argb = (alpha << 24) | (red << 16) | (green << 8) | blue;
必要があるなら & 0xFF とかでマスクする。
007067
2006/10/24(火) 17:11:38上記の方法で解決しました!
2chでこんなやさしくされたの初めてだ(´ー`)
0071デフォルトの名無しさん
2006/10/24(火) 17:17:31以下のようなソースだと、あらかじめパレットを用意しておく必要がでてきてしまいます。
パレットを自動的に最適化してくれるような方法はないでしょうか?
//パレット
byte[] rs = {-1, 127, 0, 0};
byte[] gs = {-1, 0, 127, 0};
byte[] bs = {-1, 0, 0, 127};
IndexColorModel colormodel = new IndexColorModel(2, 4, rs, gs, bs);
//一時的に使うイメージ
BufferedImage tmpimg = new BufferedImage(
orgimg.getWidth(), orgimg.getHeight(), BufferedImage.TYPE_BYTE_BINARY, colormodel);
//変換
ColorConvertOp colconvop = new ColorConvertOp(null);
colconvop.filter(orgimg, tmpimg);
また、パレットを作成するときにbyte配列を取りますが、
Javaではbyteは-128から127なので、128以上は表現上マイナスになってしまいます。
これは仕様なのでしょうか?
0072デフォルトの名無しさん
2006/10/24(火) 20:38:46GUIアプリケーションを作成した後, アイコンをダブルクリックして実行するようには出来ないんですか?
0073ぴゅあ
2006/10/24(火) 20:44:19そんな仕様もないのは放っときゃあいいと思うけど
肝心の質問の方は解決できましたか?
0074ぴゅあ
2006/10/24(火) 21:01:40http://pc8.2ch.net/test/read.cgi/tech/1159700963/702
以降と似た話だと思いますよ
>アイコンをダブルクリックして実行する
ということだけを求めるのなら
バッチファイルにしたのでもいいんじゃないかと思うんですけど
0075デフォルトの名無しさん
2006/10/24(火) 21:18:59exewrap や JSmooth でぐぐる
0076デフォルトの名無しさん
2006/10/24(火) 21:47:27ありがとうございます.
また質問ですが, jarコマンドでマニフェストファイルを一緒に格納したのですが,
圧縮後のアーカイブファイルの中のマニフェストファイルのMain-Class: xxxの行が消えてしまうのです.
何故でしょうか?
007776
2006/10/24(火) 21:58:53007876
2006/10/24(火) 22:28:37別PCで試してみたところ, "JavaVMを作成できませんでした"というコメントが出てきたのですが, これは何が問題なのでしょうか?
0079デフォルトの名無しさん
2006/10/24(火) 23:06:010080デフォルトの名無しさん
2006/10/25(水) 10:55:01JREが複数インストールしてあって、レジストリと呼び出すjava.exeの整合性が取れてないとか?
0081デフォルトの名無しさん
2006/10/25(水) 16:02:24run.batを起動すると,
Using PHOENIX_HOME: C:\java\james-2.2.0
Using PHOENIX_TMPDIR: C:\java\james-2.2.0\temp
Using JAVA_HOME: C:\jdk1.5.0_05
Invalid or corrupt jarfile C:\java\james-2.2.0\bin\phoenix-loader.jar
と言われてしまいます。
JAVA_HOMEをjdk1.4.2にしても同様です。
run.batの中身は替える必要があるのでしょうか?
Jamesのバージョンは2.2です。よろしくお願いいたします。
0082デフォルトの名無しさん
2006/10/25(水) 16:59:10(2) Reader から順に文字を char[] へ読み込む(実際にはこの後これをリモートへ転送)
(3) char[] を受け取った側はファイルに書き込む。
と言う処理を行おうとしています。
(3)でファイルを書き込む際、エンコーディングを指定しておかないとまずいように
思うのですが、それは InputSource#getEncoding() の結果と言うことになるのでしょうか?
例を書かせて頂きますと
●local(読み込み)●
char[] buffer = new char[256];
Reader reader = inputSource.getCharacterStream();
for (int n = 0; (n = reader.read(buffer)) != -1; ) {
//...buffer を転送...
}
●remote(書き込み)●
File serverImage = new File("foo");
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(serverImage, true));
//★encoding指定の場合はここに引数追加
writer.write(buffer, 0, length);
※上書きフラグが true になっているのは転送<->書き込みを繰り返して完成させるためです。
目的は、(3)で書き込まれるファイルが、(1)の元々 InputSource が示していたものと
同じイメージであることなのですが、InputSource#getEncoding() は必ずしも
エンコーディングを返してくれるものではないように読めるので、心配しています。
なお、別の都合で InputSource#getByteStream を当てにするのは無理になっています。
うーん、InputSource を理解してない?
0083デフォルトの名無しさん
2006/10/25(水) 17:49:46入力のInputSourceをどうやって作成したかによって、できることとで
きないことがある。
A. new InputSource(InputStream)だった場合
→getEncoding()はnull、getCharancterStream()はnull
B. new InputSource(Reader)だった場合
→getEncoding()はnull、getByteStream()はnull
C. new InputSource(String)だった場合
→getEncoding()がnon-nullのこともあるかもしれない
いずれの場合も、setEncoding(String)が呼ばれていればgetEncoding()
がnon-nullかもしれない。
なので、InputSourceがどう作られるかの仮定が持てない場合は、「元
と同じエンコーディングにしたい」は不可能。
0084デフォルトの名無しさん
2006/10/25(水) 18:01:50ありがとうございます。オーバーヒートしかけてましたが、
悩みつつあった内容と同じでした。
もう少しゴテゴテと周辺で起こりそうなことを加えると
・(挙げていない点でしたが)Reader で渡している以上、Reader の読み込み時点で
文字化け等が起こって無いことは渡すものの責任
・Reader と言うことは内部的には Unicode で渡るのだから、明示的にエンコーディングを
指定した転送後の展開を意図するならば、「例えば」setEncoding しておけ。
と言っても、これを見るかどうかは受け取り側次第。
その結果文字化けが発生したらどうしようもない。強いて言えば決めてないことが悪い。
・ストリームであれば復元に関してこのような考慮は無いので、
一般的には Reader やシステム ID でなくストリームで渡す。
(ファイルへ書くだけならそのままであるし、その後にエンコーディングが必要な
パーズ処理などをもしやるのであれば、正しくコピーされたファイルの中身
から判別、といった道も自由)
つまり元々の回答には答えがないと言うか…
0085デフォルトの名無しさん
2006/10/25(水) 19:43:040086デフォルトの名無しさん
2006/10/25(水) 20:17:35実はその逆をやってくれるツールが欲しい。
探してるのですがそういうのをご存知なら加えて教えてもらいえないでしょうか?
0087ぴゅあ
2006/10/25(水) 21:24:48その手のには、java2cとかjava2c++とか(或いはその逆)
或いはj2cとか・・・
名前が付けられたりする傾向があったりするし
"Java C コンバート"とかでもググッてみるとか
色々組み合わせて探してみると
何か出てくるかも?というところですけど
0088デフォルトの名無しさん
2006/10/25(水) 21:46:580089デフォルトの名無しさん
2006/10/26(木) 00:35:35すれ違いならば何処のスレで聞けばいいですか?
0090デフォルトの名無しさん
2006/10/26(木) 10:52:43色々組み合わせて探してみると
何か出てくるかも?というところですけど
0091デフォルトの名無しさん
2006/10/26(木) 16:16:12Windowsごと落ちた。
1.4.2_12だと単にFileNotExceptionをスローするだけで、JVMもOSも無事だった。
JVMのバグ?
0092デフォルトの名無しさん
2006/10/26(木) 16:30:461.5.0_09-b01 では FileNotFoundException 投げるけど。
import java.io.*;
public class test{ public static void main(String[] args) throws Exception {
String s = "";
for(int i = 0; i < 800; i++) s+="10";
FileInputStream in = new FileInputStream(s);
in.close();
}}
みたいな感じのコードでチェック。
0093デフォルトの名無しさん
2006/10/26(木) 17:55:17例えばファイルAが複数のサーバ上にあり、それぞれのサーバに接続しデータを受信
することにより早くダウンロードしたいのです。
0094デフォルトの名無しさん
2006/10/26(木) 17:59:42色々組み合わせて探してみると
何か出てくるかも?というところですけど
0095デフォルトの名無しさん
2006/10/26(木) 18:38:590096デフォルトの名無しさん
2006/10/26(木) 19:31:14携帯からスマソ
0097デフォルトの名無しさん
2006/10/26(木) 19:45:14色々組み合わせて探してみると
何か出てくるかも?というところですけど
0098デフォルトの名無しさん
2006/10/26(木) 21:19:210099デフォルトの名無しさん
2006/10/26(木) 21:22:150101デフォルトの名無しさん
2006/10/26(木) 21:42:241.4 とか 5.0 で deprecated になったメソッド使ってるとか、
1.4 で予約語に指定された assert、5.0 で予約語に指定された enum とかを
変数名、フィールド名、メソッド名に使ってなければ大丈夫だと思うけど。
0102デフォルトの名無しさん
2006/10/26(木) 21:51:220103デフォルトの名無しさん
2006/10/26(木) 21:56:150104デフォルトの名無しさん
2006/10/26(木) 22:02:47>>101 の通り。
基本的に昔のコードはコンパイルは通る。
まずは試してみればOK。
010598
2006/10/26(木) 22:06:58ドキュメント読んでみて、非推奨項目に引っかからなければ原則大丈夫ってことかな。
とりあえず5.0で試してみます。ありがとうございました。
0106デフォルトの名無しさん
2006/10/26(木) 22:19:180107デフォルトの名無しさん
2006/10/26(木) 22:34:170108ぴゅあ
2006/10/26(木) 22:50:08取り敢えず見てみるというところでは
コンパイルしてみれば
ワーニングやエラー出してたり(出させられたり)してなかったかなぁ?
それに対してどうしようかってときに
リファレンス見ていったりしたのでもよいだろうと思うけど
0109デフォルトの名無しさん
2006/10/26(木) 22:53:310110デフォルトの名無しさん
2006/10/26(木) 23:03:12location.replaceを使えばいいように思うのですが、どうしてもうまく出来ません。
よろしくお願いします。
0111デフォルトの名無しさん
2006/10/26(木) 23:51:51JavaScriptならこっち
http://pc8.2ch.net/php/
0112デフォルトの名無しさん
2006/10/26(木) 23:52:38http://pc8.2ch.net/hp/
0113デフォルトの名無しさん
2006/10/27(金) 01:41:58色々組み合わせて探してみると
何か出てくるかも?というところですけど
0114デフォルトの名無しさん
2006/10/27(金) 11:09:281.3未満の環境で作ったGUI周りは動きがおかしくなる事が間々あるな
0115デフォルトの名無しさん
2006/10/27(金) 11:47:55いずれにせよ、対処はそれなりに簡単。
0116デフォルトの名無しさん
2006/10/27(金) 13:10:19タダなら始めようと思ってるんですけど
0117デフォルトの名無しさん
2006/10/27(金) 13:14:20クリアするメソッド?クラス?はなんですか?
0118デフォルトの名無しさん
2006/10/27(金) 14:08:39クリアするメソッド?クラス?はなんですか?"とかでもググッてみるとか
色々組み合わせて探してみると
何か出てくるかも?というところですけど
0119デフォルトの名無しさん
2006/10/27(金) 14:45:58ぴゅあさん。ありがとうございます。
自己解決しました!
0120デフォルトの名無しさん
2006/10/27(金) 17:21:51CardLayoutでだいたいJPanel(正確にはJPanelを継承したクラス)70から80枚。
そして各1枚に平均4枚ほどのJPanelそしてその上にJLabelやJButtonや他の
コンポーネントも多数張り付けています。(JButtonはだいたい4つぐらいが平均かと思います。
JLabelは多いもので40ぐらいそのほかJListやJTextFiedも多用)です。
レンダリングが旨くいっていないということではなくFrameががくがく震えます。
Jarファイルのサイズとしては6mbから7mbぐらいでそれほど大きくはないのですが、
フルスクリーン表示で画面がときどき小刻みに揺れます。
他のマシーンでも動かしてみたのですが、やはり時々ゆれてしまいます。
2台ともかなりHigh specなマシーンです(1台目は4の3.8にメモリ2GB・2台目は3.0のメモリ1GB)。
ただ2つともノートン2006がインスコされてあり原因がどちらだかわかりません。
これからアンインストールして試して見ますが、
このぐらいコンポーネント数でやはりリソース不足か何かでこういう現象が起きてしまうのでしょうか?
できるだけリソースを開放するように作ってありますが、CardLayout上に張ってあるコンポー
ネント群はnewすると切り替えにかなりの時間がかかってしまい出来れば避けたいのでいい
方法はないでしょうか?宜しくお願いします。
0121デフォルトの名無しさん
2006/10/27(金) 17:35:08ttp://gigazine.net/index.php?/news/comments/20060911_system_delay/
0122デフォルトの名無しさん
2006/10/27(金) 17:40:11そんなにゆれる?
ソースは?
0123デフォルトの名無しさん
2006/10/27(金) 18:32:26なんで「デフォルトの名無しさん」が、ぴゅあ様だってわかったんだろ?
0124デフォルトの名無しさん
2006/10/27(金) 18:40:31CardLayout直下のJPanel 半分ぐらい削って、がくがく震えるかってのを
JPanel の数が無くなるまで繰り返してみる、とかして原因特定できないか?
0125デフォルトの名無しさん
2006/10/27(金) 18:54:01あれだけAA荒らしで荒れてたスレがぴゅあが来てから不自然に静かになったことから察しろ
0126デフォルトの名無しさん
2006/10/27(金) 19:03:160127デフォルトの名無しさん
2006/10/27(金) 19:08:09�dクスです。Norton先生がトップを走っているので怪しいと思うのですが、マシンがかなり
早いので大丈夫かと思っていたのですが・・・ノートン板で前にその記事をみたのでそうかと思った
のですが、プロセスをみているとそれほどメモリ食っていないんですよね・・・でも最終的には
ノートン外してみます。他のマシンでも試したいのですが、自分の使えるのがこの2台と
ロースペックのノート1台なので・・・
>122
はい、かくかくと揺れます。丁度、PowerPointやJavaScriptのホームページ
でブルブル震えるようなエフェクト。あれを小さくした感じです。頼まれた人に見せたのですが、別に
気にならないだけどと言ってくれますが、リソース不足でプログラムが落ちる可能性もなくはないので
ことが心配なので放っても置けません。javaのオプションでヒープ領域は大目にとってありますが、
他のoptionは入れていません。
後ソースは本当に長すぎて出せないです・・・大体170クラスあって平均しても一クラス800から
1000行程度はあるのでとてもだせないです。全部一人で書いているので許可がいるとかそういうこと
はないんですが・・・
原因の箇所がわかっているかもしくはこの部分を見れば分かるというのであればだせますが・・・
自分はコンパイラ(コード生成部)とかレンダリングエンジンを書いたことはあるのですが、
Javaを使ってGUIのシステムを作ってくれと頼まれたので本やインターネット上で探しつつ
3ヶ月ほど前から気合を入れて作ってようやく完成にちかづいたのですが、GUIを使っての製作
は今回が初めてなものでコレぐらいのコンポーネントでゆれてしまうのかなぁ・・・と思い投稿させ
ていただきました。
あまりGUIを使ったプログラムを書いた経験がないのでもしそういう現象があればお聞きできれば
と投稿させていただきました。宜しくお願いします。
0128デフォルトの名無しさん
2006/10/27(金) 19:16:20そうですね。最終的にそれ以外のリソースを削りまくってだめならプログラムを
分割する予定ではいます。あとNortonを外して・・・ でもあとできることといったら
Objectをプールして使いまわすぐらいなんですよね。
最終的にはプログラムのチューニングは徹底的にやろうとは思うのですが、やはりCardLayoutに
はってあるコンポーネントを外すしかないんですかね・・・できれば避けたかったのですかね・・・
>126
そうですよね・・・
0129デフォルトの名無しさん
2006/10/27(金) 19:55:280130デフォルトの名無しさん
2006/10/27(金) 20:10:01そうですね。フルスクリーンでやっているので中がゆれるというよりも
フレーム(JFrame継承したフレーム)ごと揺れるといった現象です。
当たり前ですが、フルスクリーンといってもゲームやスライドショー等
で使われるレンダリング手法は取っていません。
リサイズも出来なければ右上のcloseボタンで閉じることも禁止しています。
0131ぴゅあ
2006/10/27(金) 21:31:37結構乗せているものは多そうと受け取りましたけど
レイアウトってそのサイズや配置を自動的に算出してくれますよね
実際に試してみなきゃ判らないとは思っているけど
・なんか計算し直しばかりが繰り返されてしまっている
・各コンポーネントに対して計算するときに変な端数が?
とかあったりするとかあるのかなぁ?とか思ったりしてみますけど・・・
最近あまり触ってる時間とか作れてないので
自分でもやってみようかな?というところまでは
行けなかったりするだろうなぁ
というところだったり。。。
0132デフォルトの名無しさん
2006/10/27(金) 21:47:49最近、趣味で Servlet と JSP を使ってアップローダを作成したのですが、
その中の部品として上記 Commons を利用しているので気になっています
また、Commons を利用して作ったアップローダを公開するのはライセンス
違反になってしまいますか?
この辺の事情に詳しい方、どうか教えてくださいm( _ _ )m
0133デフォルトの名無しさん
2006/10/27(金) 22:16:280134デフォルトの名無しさん
2006/10/27(金) 22:22:47Commons のです
0135デフォルトの名無しさん
2006/10/27(金) 22:23:510136デフォルトの名無しさん
2006/10/27(金) 22:26:580137デフォルトの名無しさん
2006/10/27(金) 22:29:58ここで言うフルスクリーンと言うのは、
画面一杯に広がるような処理を書いてたりするんでしょうか。
(どちらかというと「最大化」に近いようなもの。)
その場合、画面サイズ取得・サイズ更新が
不必要に起きてないか確認すると
何かの手がかりが得られるかも知れません。
0138デフォルトの名無しさん
2006/10/27(金) 22:49:41A.javaで
public class A{
B[] b=new B[10];
public A(){
for(int i=0;i<10;i++)
b[i].member=i;
for(int i=0;i<10;i++)
System.out.println(b[i].member);
}
B.javaで
public class B{
public static int member;
}
自分としては出力結果が0,1,2,3,4,5,6,7,8,9となって欲しいんですけど、
9,9,9,9,9,9,9,9,9となってしまいます。
C言語のtypedef structの感じでclassを使ってるのが良くないのか、よく分かりません。
エスパーで指示して貰えませんか?
0139デフォルトの名無しさん
2006/10/27(金) 22:57:590140ぴゅあ
2006/10/27(金) 23:00:28>エスパーで
というのがどんなものか教えて貰えませんか?
エスパーで指示とか解らんので、取り敢えず
>public static int member;
クラス変数(クラスフィールド)について理解してみるのがいいでしょう
0141132
2006/10/27(金) 23:02:31ところで、バグの方はどうでしょうか?
0142138
2006/10/27(金) 23:03:29thx
>>140
ごめんなさい。
【マジレス】超初心者の質問に答えるスレ17【エスパー】
http://pc8.2ch.net/test/read.cgi/win/1161170982/
こんなものです。
0143デフォルトの名無しさん
2006/10/27(金) 23:19:34public class A{
public static void main(String args[]){
new A();
}
public A(){
B[] b=new B[10];
for(int i=0;i<10;i++) {
b[i] = new B(i);
b[i].member=i;
}
for(int i=0;i<10;i++){
System.out.println(b[i].member);
}
}
}
class B{
public int member;
B(int a){
member = a;
}
}
0144ぴゅあ
2006/10/27(金) 23:24:55なるほど ありがとう
でも、エスパーでなくても答えを考えられるだけのものを
質問としてちゃんと揃えられていると思いますよ
>A.javaとB.javaをパッケージに含んでいて、
は、まぁこの場合余計なものだったりするだろうけど
・期待している結果
・期待通りではなかった実行結果
・それを分析できる材料(ソースコード…分析するに十分な)
0146ぴゅあ
2006/10/27(金) 23:26:37>>142
で、「よく分かりません。」がなんとかなりそうだったか
というところが重要だろうけど・・・
0147ぴゅあ
2006/10/27(金) 23:30:26あぁ 確かに・・・
>B[] b=new B[10];
で入れ物は作ってるけど
クラスBをインスタンス化して入れてるところがなかったね
0150デフォルトの名無しさん
2006/10/28(土) 00:04:11ライセンスは問題なし。ASLに従って
「このプロダクトにはApache Software Foundationの製品が含まれています」の
一文が製品情報に含まれていればOK。
バグはある。というか無いわけがない。
Apacheのjiraを見れ。
0151デフォルトの名無しさん
2006/10/28(土) 08:42:39public class Awt01 {
Frame frame;
public Awt01() {
frame = new Frame( "フレーム" );
frame.setSize( 200, 100 );
frame.setVisible( true );
}
public static void main( String[] args ) {
Awt01 awt01 = new Awt01();
}
}
上のコードは入門のJAVAテキストに書いてあったものですが、
これをeclipseで実行しようとすると、エラーが出てしまいます。
public class Awt01 のpublicを消すとなぜか普通に動きます。
eclipseには”public 型 Awt01 はそれ独自のファイル内に定義されなければなりません。”とでてました。
どういう意味なのかさえ検討つかないのです。教えてください。
0152デフォルトの名無しさん
2006/10/28(土) 09:09:49Awt01 って名前のトップレベルな public クラスは
Awt01.java の中で宣言されないといけない。
大文字小文字も区別されるので注意。
0153デフォルトの名無しさん
2006/10/28(土) 09:12:46このスレは偽物です。
本スレはこちら
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0154127
2006/10/28(土) 15:11:38遅れてごめんなさい。
レスありがとうございました。
ピュアさんどうもありがとうございます。
一応レイアウトマネージャーは今まであるものが不便だったので一応自作しました。
JPanelを継承しているクラスで使っているこのレイアウトマネージャーに原因があるのかも
しれないのでもう一度見直します。かなり単体テストをしまくったのですが一応もう一度慎重に
調べてみます。後使い方も調べてみます。あとはNortonを外したりいろいろやって見ます。
>137
ありがとうございます。
そうですね・・・みんなこれはやっていることなので参考にしながらやってみたのですが・・・
他の皆さんもありがとうございました。
ここでレスしてくださった方法と自分が知る限りの方法で原因を探り
後2週間程度で仕上げに入ってテストに入りたいと思います。
いろいろ参考になりました。本当にありがとうございました。
0155デフォルトの名無しさん
2006/10/28(土) 15:31:20全角スペースとか、全角アルファベットとか入ってないかチェク
publicを消していい訳は無い
0156デフォルトの名無しさん
2006/10/28(土) 15:36:41ファイル名とクラス名が一致していないとダメ。大文字小文字も一致させてね。
ファイル名は Awt01.java になってる?
0157デフォルトの名無しさん
2006/10/28(土) 16:25:02int[] a = new int [128];
のaなのですが、一体何クラスなのでしょうか。
.length で配列の長さが取れるのが不思議でなりません。
Arrayクラスというのを見てみましたが、それではないようです。
それになんで .length() ではなく .length で長さが取れるように設計されているのでしょうか。
くだらない質問ですが、どなたか解説していただけませんでしょうか。お願いします。
0158デフォルトの名無しさん
2006/10/28(土) 16:32:24サーバサイドJavaの話なのですが、特に制限されてなかったので・・・。
Mayaaを使用したことある方、ぜひお願いします。
mayaaファイル内の変数の条件によって、Strutsのtaglibを用いて作成したhtml要素に、
属性を付加することはできますか?
htmlテンプレートに
<input id="xxx" type="text">
があったとして、mayaaファイル内で、
<html:text m:id="xxx" name="..." property="..."/> (例
とすれば、テキストボックスが作成されますが・・・。
しかし、これに属性を追加する方法がわかりません。
<m:echo> と <m:attribute>を使うことも考えましたが、
これはテンプレート上のタグをそのまま出力するためのものですよね。
識者の方、ご解答よろしくお願いします。
0159デフォルトの名無しさん
2006/10/28(土) 16:35:22int[] クラスです。.length は隠しフィールドです。
配列は言語仕様上特別扱いされているので
API リファレンスを見るより言語仕様書を見た方がいいでしょう。
0160デフォルトの名無しさん
2006/10/28(土) 16:36:14メソッドの内容がかかれてないのに、なんの役に立つのと初心者の私にはおもうのですが。
多重継承できないJAVAには必要とかかれてましたが、なおさらパニクってます。
0161デフォルトの名無しさん
2006/10/28(土) 16:40:57"サーバサイドJava Mayaa"とかでもググッてみるとか
色々組み合わせて探してみると
何か出てくるかも?というところですけど
0162デフォルトの名無しさん
2006/10/28(土) 16:44:15ググりましたし、メーリングリストも全てチェックしたのですが、、、
多少ヒントになる話題はあっても(条件分岐を伴うm:attributeによる属性追加 等)、
『属性追加の対象がtaglibによるものである』
といった、ポイントに触れるものはありませんでした・・・。
0163デフォルトの名無しさん
2006/10/28(土) 16:56:58int n = is.read(buff);
st = new String(buff);
System.out.println(st); // ここではちゃんとTESTと表示される
if(st.equals("TEST"))
処理
このようなコードでbuffに"TEST"という文字を送っても
処理の部分が実行されません。
何故でしょうか?
0164デフォルトの名無しさん
2006/10/28(土) 16:57:12MLに投げたらいいんじゃないの?
0165デフォルトの名無しさん
2006/10/28(土) 16:59:55isいらんやん
printlnで表示されたからといってequalsじゃないだろ
buff 1024バイトあるんだろ?Stringの後ろはどうなってるかチェックしてみ。
0166デフォルトの名無しさん
2006/10/28(土) 17:03:43ServerSocket s = new ServerSocket(1333);
このようにポートを開放?してもセキュリティ的に大丈夫なんでしょうか?
よくわからないんですがなんとなく心配です。
0167デフォルトの名無しさん
2006/10/28(土) 17:06:19なるほど。buffの使ってない部分が影響してるということですか
では、この方法で文字列を比較することはできないんでしょうか?
文字列の最後に\0を付加することでできたりするんですかね?
0168デフォルトの名無しさん
2006/10/28(土) 17:26:19下記のページを参考に各種設定を行いました。
tp://null.michikusa.jp/misc/webclient.html
ディレクトリとビルドパスの設定は次のように行いました
・プロジェクト…C:\workspace\gecko\
・Mozilla.exeのディレクトリ…C:\workspace\gecko\mozilla
・webclient.jarのパス…C:\workspace\gecko\mozilla
・VM引数の設定…
-DJava.library.path=C:\workspace\gecko\mozilla;C:\workspace\gecko\mozilla\components
-DBROWSER_BIN_DIR=C:\workspace\gecko\mozilla
mozillaディレクトリの内容はmozilla-win32-1.7.12.zipを解凍して得られたフォルダに
webclient_2_0_a3_win32.zipを解凍して得られたwebclient_2_0_a3_win32フォルダから
webclient.jar、javadomjni.dll、webclient.dllをコピー、また\webclient_2_0_a3_win32\componentsの
javadom.dllを、mozilla\componentsにコピーしたものです。
その後、テストとして同ページからSimpleBrowser.java(tp://null.michikusa.jp/misc/SimpleBrowser.java)を
eclipse上で実行したところコンパイルは正常に行われるのですが、実行段階で
java.lang.NoClassDefFoundError: Exception in thread "main" が表示されてしまいます。
ビルドパスの設定が間違っているのでしょうか。
0169デフォルトの名無しさん
2006/10/28(土) 17:34:12下記のページを参考に各種設定を行いました。
tp://null.michikusa.jp/misc/webclient.html
ディレクトリとビルドパスの設定は次のように行いました
・プロジェクト…C:\workspace\gecko\
・Mozilla.exeのディレクトリ…C:\workspace\gecko\mozilla
・webclient.jarのパス…C:\workspace\gecko\mozilla
・VM引数の設定…
-DJava.library.path=C:\workspace\gecko\mozilla;C:\workspace\gecko\mozilla\components
-DBROWSER_BIN_DIR=C:\workspace\gecko\mozilla
mozillaディレクトリの内容はmozilla-win32-1.7.12.zipを解凍して得られたフォルダに
webclient_2_0_a3_win32.zipを解凍して得られたwebclient_2_0_a3_win32フォルダから
webclient.jar、javadomjni.dll、webclient.dllをコピー、また\webclient_2_0_a3_win32\componentsの
javadom.dllを、mozilla\componentsにコピーしたものです。
その後、テストとして同ページからSimpleBrowser.java(tp://null.michikusa.jp/misc/SimpleBrowser.java)を
eclipse上で実行したところコンパイルは正常に行われるのですが、実行段階で
java.lang.NoClassDefFoundError: Exception in thread "main" が表示されてしまいます。
ビルドパスの設定が間違っているのでしょうか。
"とかでもググッてみるとか
色々組み合わせて探してみると
何か出てくるかも?というところですけど
0170ぴゅあ
2006/10/28(土) 17:51:38本スレはこちら
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0171デフォルトの名無しさん
2006/10/28(土) 18:04:08if(st.indexOf("TEST")!=-1)
0172デフォルトの名無しさん
2006/10/28(土) 18:10:21「ポリモフィズム」とか「多態性」とかでググってみると良いかも。
DIコンテナのサンプルコード読むのもお勧め。
ここで抽象的な話しても、多分理解してもらうのは難しい。
実用アプリやフレームワーク設計とか始めると
分かってくる(=実感する)と思う。
>多重継承できないJAVAには必要とかかれてました
破り捨てた方が良い。
0173デフォルトの名無しさん
2006/10/28(土) 18:14:28String のコンストラクタに、
バイト数指定できるやつがあるから
それを使ってみたらどうでしょう。
st = new String(buff, 0, n);
0174デフォルトの名無しさん
2006/10/28(土) 18:22:17エラーを改変してコピペしてませんか?
0175デフォルトの名無しさん
2006/10/28(土) 18:31:20byte[] byt=st.getBytes();
System.out.println(byt);
System.out.println(st.getBytes());
出力結果
[B@145d068
[B@758fc9
このコードではなぜか異なる結果が出てしまいます。
Stringの方の出力結果が、bytの出力と同じ結果を返すようにするにはどうすればよいでしょうか?
どうかよろしくお願いします。
0176デフォルトの名無しさん
2006/10/28(土) 18:34:16「ClassPath設定しなをせば?」といわれたのですが
どうやるんでしょうか?あと、yahooなどのゲームができない
(「JAVA 仮想マシン」をダウンロードというテロップが出て、
ダウンロードを押すと、No Java Installedというページに逝き、
画面の左上に赤い×がついてしまいます。
一応、JAVAも実行できる環境だし、インターネットオプション見ても
「JAVA SUN」に1項目、「マイクロソフト VM」に3項目、JAVA関連にチェックついてます。
JAVA SUNをインストールしているとJAVA VMはインストールできないんでしょうかねぇ・・
ほとんど知識ないまま質問してしまいましたが、JAVAのコンパイル速度と、ヤフーゲームなどを
できるように直したいです。宜しくお願いします。
0177ぴゅあ
2006/10/28(土) 18:35:07Nortonという言葉が何度か出てきているのが目に止まりましたけど
絶対にとは言えないけど、問題は他にあって、
Nortonの影響の可能性は低いんじゃないかと思ったりします
早めに確認しておいたりする方が安心?できたりするのかも知れませんけど
でも、Nortonがあると動かせないということになったりすると
今時、困ったもんですよねぇ。。。
0178ぴゅあ
2006/10/28(土) 18:37:21>int[] クラスです。
というのはあまりにも・・・(配列オブジェクトとか?)
と思ったのでザックリ読んでみたのですけど
int型の"配列型のオブジェクト"という扱いであって、
明示的なクラスというのはなさそうに思えたりします
lengthはフィールドということになっています
が、配列は言語要素の深く関わる実装で、
ArrayクラスのようなAPIリファレンスに現れるのとは違って
表に見えない形のクラスとして存在しているんじゃないかと思います
(無理矢理当て嵌めるならObjectクラスから継承された無名クラスのようなもの?)
なのでArrayクラスとかでもないし、APIリファレンスにも出てこない
言語仕様の"10.配列"辺りを読んでみるといいんじゃないでしょうか
0179デフォルトの名無しさん
2006/10/28(土) 18:49:42http://pc8.2ch.net/test/read.cgi/tech/1159700963/102
0180デフォルトの名無しさん
2006/10/28(土) 18:52:48public〜略
public static〜略
String myStr = new String("サンプル”)
System.out.println(myStr);
以下略
実行結果はサンプルを表示するのはわかるのですが、
Stringは文字列を扱うということは分かるのですが、 myStrと newStringの意味がわかりません。
myとnewの使い方の意味をおしえてください。
0181デフォルトの名無しさん
2006/10/28(土) 18:56:32表示をさせたいのですが、表示させることができません。
どうすればよろしいのでしょうか?
0182デフォルトの名無しさん
2006/10/28(土) 19:00:05変数の概念をわかっていないようです
これはわかる?
int myInt = 0;
数字型を扱うmyIntという変数に0を入れる
上と同じこと
String myStr = new String("サンプル");
文字列を扱う変数myStrに サンプル という文字列を入れる
myは命令ではなく変数名として名づけただけ、無くてもいい
0183デフォルトの名無しさん
2006/10/28(土) 19:01:24http://pc8.2ch.net/test/read.cgi/tech/1126470659/106
0184デフォルトの名無しさん
2006/10/28(土) 19:02:590185ぴゅあ
2006/10/28(土) 19:20:52【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0186デフォルトの名無しさん
2006/10/28(土) 19:25:07その調子でどんどん検索しろ
ほとんどの質問が昔のコピペだ。
0187ぴゅあ
2006/10/28(土) 20:30:56既にいくつか挙がっているし、
書くまでもないかもですけど
>System.out.println(st);
で見る前に
>int n = is.read(buff);
の後でbuffとnがどうなっているか調べて
stに期待通りのStringとして得られるようにする
(取り敢えずstのlengthを採ってみると4ではないことが判ったりするのかも)
そうすれば
>if(st.equals("TEST"))
>処理
とかも問題なく処理できるようになると思いますけど
isって恐らくInputStreamとか(InputStreamReaderとか)だったりするのだろうと思いますけど
readするものがBufferedReaderで受けられるものとか判っているのだとすれば
BufferedReader#readLineメソッドとか使うと楽になったりするかも?
と思ったりしますけどね
0188ぴゅあ
2006/10/28(土) 20:39:01【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0189ぴゅあ
2006/10/28(土) 20:43:51>識者の方
ではないですが、Mayaaって
http://mayaa.seasar.org
のこと?
MayaaとStrutsの共存とか
なんかぶつかったりするものとか、
適用/機能する順番とかあったりするんだろうか?
とも思ってしまいましたけど
サンプルページに"Mayaa単独版"とか"Struts利用版"とか出てるみたいなので
もしまだ見てないのだとすれば参考にできるものもあったりするのかも?
0190デフォルトの名無しさん
2006/10/28(土) 20:47:41あのスレは一見すると煽り合いばかりだが
まともな質問には丁寧な回答が返って来る。
0191ぴゅあ
2006/10/28(土) 20:48:51まずはインターフェイスについてググッてみるとかして
色んな人の解説(1つだけではなく色々な)を読んでみるといいかと思います
大抵、インターフェイスについての話と共に
抽象クラスとの使い分けとかの話も出てくるんじゃないかと思います
0192ぴゅあ
2006/10/28(土) 21:04:08特に問題ないんじゃないでしょうか
その後に続くコードを(総合的にはプログラム全体として)
シッカリ考えて作ってあるかだと思いますよ
0193ぴゅあ
2006/10/28(土) 21:10:44【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0194デフォルトの名無しさん
2006/10/28(土) 21:39:23スレ違いならごめんなさい。
Stringbuffer ques1 = new Stringbuffer(100);
Stringbuffer ques2 = new Stringbuffer(100);
ques1.append("hoge");
ques2.append("choko");
for(i=1;i<3;i++)
System.out.println(ques + "i");
とやれば、hogeとhageガ表示されると思いましたが、このままだと
ただの文字列なので、ques1 ques2と表示されるだけです。
なにか、このような方法でques1と2の内容を表示する方法ないですか?
0195194
2006/10/28(土) 21:40:45の間違いです。
0196デフォルトの名無しさん
2006/10/28(土) 21:42:02色々組み合わせて探してみると
何か出てくるかも?というところですけど
0197デフォルトの名無しさん
2006/10/28(土) 21:51:21StringBuffer[] ques ={
new StringBuffer(100),
new StringBuffer(100)
};
ques[0].append("hoge");
ques[1].append("choko");
for(int i = 0; i < ques.length; i++){
System.out.println(ques[i]);
}
0198ぴゅあ
2006/10/28(土) 21:52:38なんかぶつかったりするものとか、
適用/機能する順番とかあったりするんだろうか?
とも思ってしまいましたけど
0199デフォルトの名無しさん
2006/10/28(土) 21:56:54Perl の eval のようなことをしたいって話ですよね?
その手の動的に変数を組み立て・・・と言うことであれば
リフレクション(reflection)APIを使用する必要があります。
ttp://java.sun.com/docs/books/tutorial/reflect/object/get.html
この例だと height の値をリフレクション経由で名前(=文字列)で取得してます。
0200デフォルトの名無しさん
2006/10/28(土) 21:58:17ques1 と ques2 がローカル変数なら、リフレクション使っても無駄。
0201158
2006/10/28(土) 21:58:41そうですね、MLにも投げてみます!
>>189
Struts + Mayaa のサンプルは全て舐めてしまいました(^^;
私の質問させていただいたような使い方はありませんでした・・・。
>>190
確かに・・・。
とりあえず、MLへの参加と、seasarスレの訪問を試みます。
みなさん、ありがとうございます。
0202ぴゅあ
2006/10/28(土) 22:02:59まずはStringbufferについてググッてみるとかして
色んな人の解説(1つだけではなく色々な)を読んでみるといいかと思います
大抵、Stringbufferについての話と共に
for文との使い分けとかの話も出てくるんじゃないかと思います
0203デフォルトの名無しさん
2006/10/28(土) 22:04:54○ StringBuffer
0204ぴゅあ
2006/10/28(土) 22:05:11ques というのはあまりにも・・・(配列オブジェクトとか?)
と思ったのでザックリ読んでみたのですけど
StringBuffer型の"配列型のオブジェクト"という扱いであって、
明示的なクラスというのはなさそうに思えたりします
lengthはフィールドということになっています
が、配列は言語要素の深く関わる実装で、
ArrayクラスのようなAPIリファレンスに現れるのとは違って
表に見えない形のクラスとして存在しているんじゃないかと思います
(無理矢理当て嵌めるならObjectクラスから継承された無名クラスのようなもの?)
なのでArrayクラスとかでもないし、APIリファレンスにも出てこない
言語仕様の"10.配列"辺りを読んでみるといいんじゃないでしょうか
0205デフォルトの名無しさん
2006/10/28(土) 22:11:020206デフォルトの名無しさん
2006/10/28(土) 22:14:040207ぴゅあ
2006/10/28(土) 22:16:35そんな仕様もないのは放っときゃあいいと思うけど
肝心の質問の方は解決できましたか?
0208158
2006/10/28(土) 22:22:16ここらへん参考になりますか・・・?
0209デフォルトの名無しさん
2006/10/28(土) 22:24:05ぴゅあ様の ご参考になってくれれば良いね。
0210デフォルトの名無しさん
2006/10/29(日) 03:23:07今ボタンを押されたときの処理を作っているのですが、
mainメソッドのbuttonControl.button();の部分でIOExceptionが出てうまくいきません。
IOExceptionについて調べたのですが解決できず・・・・どなたか教えてください。
import java.io.*;
class ButtonControl {
void button()
{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("エレベータへようこそ!行きたいフロアのボタンを押してください。");
String charfloor = br.readLine();
int floor =Integer.parseInt(charfloor);
System.out.println("あなたは" + floor + "階に行くボタンを押しました");
}
public static void main(String[] args)
{
ButtonControl buttonControl = new ButtonControl();
buttonControl.button();
}
}
0211ぴゅあ
2006/10/29(日) 03:28:48"IOException"とかでググってみれば色々出てくると思うけど
0212デフォルトの名無しさん
2006/10/29(日) 03:29:12テストさせるために移しました。
0213デフォルトの名無しさん
2006/10/29(日) 03:29:58そうです。もうちょっと調べてきます。悔しい
0214ぴゅあ
2006/10/29(日) 03:35:37【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0215ぴゅあ
2006/10/29(日) 03:37:17そのコードでIOExceptionが出ているのですか?
例外発生時のスタックトレースを提示して欲しいですね
(発生箇所によっては入力待ちまで進んでいてどういう入力をしたかとか)
0216デフォルトの名無しさん
2006/10/29(日) 03:48:27回答ありがとうございます。
Eclipseで作業していたのですが、コマンドプロンプトのjavacでコンパイルしてみたら
ButtonControl.java:10: 例外 java.io.IOException は報告されません。スローするには
キャッチまたは、スロー宣言をしなければなりません。
String charfloor = br.readLine();
こんなんがでました。。
0217ぴゅあ
2006/10/29(日) 03:49:20"IOException"とかでググってみれば色々出てくると思うけど
0218ぴゅあ
2006/10/29(日) 03:50:290219デフォルトの名無しさん
2006/10/29(日) 03:52:01レコード数2000万件近くのテーブルがあり、
ここから1レコードずつレコードを読んで処理するプログラムを書きたいのですが、
Statement state = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = state.executeQuery("select ArticleID, Content from Articles where BoardID=8");
このexecuteQuery()で、OutOfMemoryErrorになります。
どう書けば良いでしょうか?
0220デフォルトの名無しさん
2006/10/29(日) 03:54:07色々組み合わせて探してみると
何か出てくるかも?というところですけど
0221デフォルトの名無しさん
2006/10/29(日) 03:55:10ありがとうございます。コンパイラが古いのかなぁ。
一応サンマイクロのHPで一週間以内にDLしたやつです。
IOExceptionについてまた今から調べてきます。
ありがとうございました。
0222ぴゅあ
2006/10/29(日) 03:55:50いまググってるのでもうすこし待ってくださいね
0223デフォルトの名無しさん
2006/10/29(日) 03:58:47ボウリングのスコアカウントプログラムを作りたいのですが
どう作ったらいいかさっぱりわからず困ってます・・・。
ご指導していただけるとありがたいのですが、お願いします。
0224221
2006/10/29(日) 04:01:47親切にどうもありがとうございます。
プログラミング暦一週間なのであまり詳しいことはわからないのですが、
普通はこのコードならすんなり通るのですか?
通らないからエラーがでてると言われればそれまでですが・・・
0225デフォルトの名無しさん
2006/10/29(日) 04:06:15"プログラミング歴 一ヶ月未満"とかでもググッてみるとか
色々組み合わせて探してみると
何か出てくるかも?というところですけど
0226ぴゅあ
2006/10/29(日) 04:09:56これくらいググればすぐですよ。
http://www.nextindex.net/java/throwstry.html
0227デフォルトの名無しさん
2006/10/29(日) 04:10:140228223
2006/10/29(日) 04:11:170229221
2006/10/29(日) 04:16:02ありがとうございました。なんとなくできそうな気がしてきました。
>>228
いやみつかりました。catchとtryっていうのも一応知ってました。
もちろんthrows IOExceptionも試しました。
スレ汚してすいませんでした。
0230ぴゅあ
2006/10/29(日) 04:20:28なるほど
コンパイルエラーであってIOExceptionが起こっている(実行時)わけではないですね
例外に対する処置をちゃんとしろって意味です
(>キャッチまたは、スロー宣言をしなければなりません。)
Eclipseで書いているときに(テスト用に)
エラーとかで通知されていませんでしたか?
通知させないようにできるのかどうかはやってないので判らないけど
0231ぴゅあ
2006/10/29(日) 04:20:34これからはこちらで質問してくださいね。
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0232ぴゅあ
2006/10/29(日) 04:31:06例外について理解してみれば言い訳ですけど、
1週間ですか。。。
その間にどれくらい飲み込めたかによりますけど
すんなり行くものではないと思ってよいと思います
例外処理について勉強してみて
まずは例外周りの書き方からだけでも少しずつ理解してみてください
0233ぴゅあ
2006/10/29(日) 04:32:580234221
2006/10/29(日) 04:37:19わかりました。throws IOEだとうまくいかないのでcatch&tryでやってみます。
いまいちeclipseには慣れていなかったのですが、よくみたらコードの横の辺りに
バツマークみたいのがついてたりしました。これがエラーですね。(ポインタを当てたらエラー内容がでました)
ちなみに・・・・このコードにする前は正常に動いていました。
クラスなのでボタンはボタン。という風に部品ごとに分けようと思い
216の処理に書き直していたらエラーがでるようになりました。
import java.io.*;
import java.util.*;
public class ButtonControl
{
public static void main(String args[]) throws IOException
{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("エレベーターへようこそ!行きたいフロアのボタンを押してください。");
String charfloor = br.readLine();
int floor =Integer.parseInt(charfloor);
・・・・・・・・・・
0235210=221
2006/10/29(日) 04:43:37>>232
そうですね・・・早く自分で何かを作ってみたいという気持ちばかりが前に行っていたので
ちょっと本やらなにやらを読み直したほうがよさそうですね・・・
210と234をみくらべて見ることも重要と思いさっきから眺めております。
>>233
正直catch&tryやthrowsの存在はしっていましたが、まだ自分には
何かが抜けているみたいなので解決するには至らないと思います。
出直したほうがよさそうですね。
みなさん、夜遅くまでご迷惑をかけました。ありがとうございました!!
0236ぴゅあ
2006/10/29(日) 04:43:43色んなサンプルコードを実際にコンパイルして動かしてみたり
コードを理解し、色々手を加えて行けるようになるまで繰り返す
(当然、簡単なサンプルから)
どう作ればいいかというのをイメージできるようになるまで
そうして作り方というものを学んで行くしかないかなぁ
作りたいものに似てそうなものがあれば
流用するとかもあるだろうけど、
その判断もまだ難しいでしょ?
0237デフォルトの名無しさん
2006/10/29(日) 04:44:18「クラスなので」という説明がよく分かりません。
0238223
2006/10/29(日) 04:54:48までは理解できたのですが、スコアカウントの計算というか、処理がイメージ
できないんです。
似たものを参考にしたりするのも勉強になるとは聞いたのですが
似たもの自体が見つけられなくて…。
0239デフォルトの名無しさん
2006/10/29(日) 04:56:14まずは処理の流れを
紙に書いてみる
数字付き箇条書きで
そこからだ。
0240210=221
2006/10/29(日) 05:39:21うまくいかなくて・・・でもthrows IOExceptionつけたらうまくいって・・・・
さっきも試したのに・・・?何故??結局根本的な原因がわからないまま解決してしまった。
import java.io.*;
public class ButtonControl
{
void button() throws IOException{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("エレベータへようこそ!行きたいフロアのボタンを押してください。");
String charfloor = br.readLine();
int floor =Integer.parseInt(charfloor);
System.out.println("あなたは" + floor + "階に行くボタンを押しました");
}
public static void main(String[] args) throws IOException{
ButtonControl buttonControl = new ButtonControl();
buttonControl.button();
}}
0241デフォルトの名無しさん
2006/10/29(日) 05:45:49根本的な原因は
>>240がException処理について勉強していないこと
まずはeclipseのエラーの意味が分かる程度には勉強しようや
0242デフォルトの名無しさん
2006/10/29(日) 08:05:27ピュアさんレスありがとうございます。
Nortonを疑ったのはまず他のアプリでも私のプログラムほどの頻度ではないが
そういう現象が現れたときがあったからです。例えばJBuilder やIE等。JBuilderが何で
Javaで純粋に書かれているのかC++で書かれているのか良く分かりませんがNorton
をインストールした後でこういう現象が起きたので疑ってみました。Javaのプログラムの実行に
少し干渉する可能性も外せないと思ったわけです。まぁインストールするまでに
出来上がっていたものは僅かだったのでなんとも言えないのですが・・・
とりあえず原因を徹底的に洗って見ます。いろいろありがとうございました。
0243デフォルトの名無しさん
2006/10/29(日) 08:08:38デフォルトでボタンに使われている色を抽出するにはどうしたらよいでしょうか?
ただこれはインスタンスを作って button.getColor();等の方法で以外のものを教えてください。
0244243
2006/10/29(日) 09:27:01訂正です
ただこれはインスタンスを作って button.getColor();等の以外の方法を教えてください。
Systemではないけど取れたような記憶があるのですがググッても見つからないので
宜しくお願いします。
0245デフォルトの名無しさん
2006/10/29(日) 10:49:480246デフォルトの名無しさん
2006/10/29(日) 11:58:420247デフォルトの名無しさん
2006/10/29(日) 12:07:28Java の例外はチェックする例外(checked exception)と
チェックしない例外(unchecked exception)の2種類がある。
って話をどこかで聞いた?聞いてないなら勉強不足。
C# や C++ の例外処理とは似てるようでかなり違う。
IOException はチェックする例外。
0248ぴゅあ
2006/10/29(日) 12:24:47RuntimeExceptionとその他の事ですか?
しらない人はきちんと調べてからカキコしてくださいね。
0249デフォルトの名無しさん
2006/10/29(日) 12:33:13実際には Exception 以外にも Error があるから
この説明じゃ不足してるのは確かだな。
0250デフォルトの名無しさん
2006/10/29(日) 13:37:310251ぴゅあ
2006/10/29(日) 13:43:53>>248の
>RuntimeExceptionとその他の事ですか?
とか、何を言おうとしているのか解らんですけど
>>247に対して"Errorがあるから"ということなら
検査/非検査について言おうとしているでしょうから
いいんじゃないかと
(ただ強いて言うなら>>210とは繋がりないような・・・)
0252デフォルトの名無しさん
2006/10/29(日) 13:45:55"Java 何が違うの?"とかでもググッてみるとか
色々組み合わせて探してみると
何か出てくるかも?というところですけど
0253デフォルトの名無しさん
2006/10/29(日) 13:48:49これでも読んでろカスども
http://java.sun.com/docs/books/tutorial/essential/exceptions/catchOrDeclare.html
0254デフォルトの名無しさん
2006/10/29(日) 13:49:10何も出てこなかった。
0255ぴゅあ
2006/10/29(日) 14:04:27この辺りの物で十分じゃないかと?
http://www.nextindex.net/java/exception.html
0256デフォルトの名無しさん
2006/10/29(日) 14:19:320257デフォルトの名無しさん
2006/10/29(日) 14:33:31ジェネリクスって動的な型システムにしか見えないなぁ。
これのどこがいいんだろう?
不思議だ。
0258ぴゅあ
2006/10/29(日) 15:10:39全然別物じゃないんでしょうか
ジェネリクスという言葉では理解してないけど
型保証を行うってことだと思いますよ
(言葉として理解してないのでそれが全てかどうかは判らないですけど)
なので、複数の型が混在し得るからと言ってまさかやったりはしないと思うけど
List<Object>とかしてしまうようだと意味なしよね?
0259デフォルトの名無しさん
2006/10/29(日) 15:19:34じゃぁやっぱりいいものじゃないんだね。
C++のテンプレートみたいなのだったらいいのにねぇ。
0260デフォルトの名無しさん
2006/10/29(日) 15:23:22全然違う。
0261ぴゅあ
2006/10/29(日) 15:40:30ないよりはいいだろうと思いますよ
("C++のテンプレートより優れている"とか言ってたりするみたいなところとか
具体的なところまでは知りえてないですけど)
型保証で言えば、例えばList<Integer>とすればInteger(或いはIntegerを継承したクラス)しか
受け入れてくれなくなるし
厳密に区別したきゃ自前でクラスやインターフェイスを作ればいいし
(>>10からの話の流れでもちょっと気になったりしてたけど)
ListとしたらIntegerでもStringでも受け入れてしまうから(List<Object>と同様)
使ってやれば最低限でもアホなミスは防げたりするのだろうし
0262158
2006/10/29(日) 15:41:19読んで役にたつかはわかりませんが・・・
この手の話が好きでしたらどうぞ・・・
http://makimo.to/2ch/pc5_tech/1055/1055519583.html
0263デフォルトの名無しさん
2006/10/29(日) 15:49:59a.txtとb.txtの2種類のファイルを読み込む場合
streamのオブジェクトを2つ使うのと、1つを使いまわすのでは何か違いがありますか?
0264デフォルトの名無しさん
2006/10/29(日) 16:01:28でも多重継承とじゃ無理。
0265デフォルトの名無しさん
2006/10/29(日) 16:05:46削除依頼だしとけよ
【100%】Javaの質問・相談にぴゅあが答える【PURE】
http://pc8.2ch.net/test/read.cgi/tech/1161423563/l50
0266デフォルトの名無しさん
2006/10/29(日) 16:09:13そっちが本スレですよ(^^)
0267デフォルトの名無しさん
2006/10/29(日) 17:55:28流れ図ってどこまで詳しく書いたらいいんだろう?
0268デフォルトの名無しさん
2006/10/29(日) 18:02:450269デフォルトの名無しさん
2006/10/29(日) 18:40:38恐らくシステムカラーで使っているやつでよいのでしょうか?
でしたら、UIManagerクラスのgetColorを使ってみてください。
そしてそこに入るキーはSystemColorクラスで定義されているキーです。
恐らくボタンであれば、getColorで使えるキーは"activeCaption"でいいかと思います。
後はDocを見るかまたは、ソースが見れる状態であればソースをみればいいかと思います。
0270デフォルトの名無しさん
2006/10/30(月) 11:06:02値と値の名前を引数として、セッションにその引数を格納するモジュールをbeansとして作っているのですが
そのモジュールをservletにて呼び出して使用すると、servletがどうしてもコンパイルを通ってくれません
0271デフォルトの名無しさん
2006/10/30(月) 11:29:37パネルAの中にパネルBを配置し、パネルB内にボタンを配置しています。
そしてパネルAにはキーリスナー、ボタンにはアクションリスナーを登録しています。
その状態でパネルBのボタンを押すと、パネルAのキーイベントが発生しなくなるという問題が発生します。
その後またパネルをクリックすればキーイベントを受け付けるのですが、常にパネルAにキーイベントを発生させる方法はありませんか?
0272デフォルトの名無しさん
2006/10/30(月) 11:32:27AB両パネルの親なり、上の階層でキーイベントを受ける。
0273デフォルトの名無しさん
2006/10/30(月) 11:54:28ありがとうございます。
ボタンが押された後に強制的にAにフォーカスを合わせる方法ってありませんか?
setFocusableメソッドがそれかと思って使ってみたのですが、違うらしくうまくいきません。
0274デフォルトの名無しさん
2006/10/30(月) 12:52:00やるんなら、ボタンのアクションの最後で パネルA.requestFocusInWindow() だな。
詳細は、この中のFocusSubsystemに関するリンクを嫁
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/FocusManager.html
0275デフォルトの名無しさん
2006/10/30(月) 15:50:47無事に解決しました!
ありがとうございました!!
0276デフォルトの名無しさん
2006/10/30(月) 16:25:06分かりやすく説明してあるおすすめのサイトはないでしょうか?
よろしくお願い致します。
0277デフォルトの名無しさん
2006/10/30(月) 16:33:040278デフォルトの名無しさん
2006/10/30(月) 17:37:03ソケットとかで工夫すればできるかな
0279デフォルトの名無しさん
2006/10/30(月) 17:46:41public String[] msgs() {
String[] strs = {"-2","-3","-4"};
return strs;
}
}
class Q6 {
public static void main (String args []) {
menseki obj = new menseki();
String[] coms = obj.msgs();
int a;
a=((coms[0]+coms[1])*coms[2])/2;
//台形の面積の公式 台形の面積 = {(上底+下底)×高さ}÷2
System.out.println("上底は"+ coms[0] +"です\n下底は"+ coms[1] +"です\n高さは"+ coms[2] +"です\n台形の面積は"+ a +"です");
}
}
っという感じで組んだところ、このようなエラーが出ました
20:演算子 * はjava.lang.String,java.lang.Stringに適用できませんっとでました
これを解消するためにはどのうような感じで書き換えればいいですか?
0280デフォルトの名無しさん
2006/10/30(月) 17:57:47コンパイルエラー消したいだけなら
> a=((coms[0]+coms[1])*coms[2])/2;
a=((Integer.parseInt(coms[0])+Integer.parseInt(coms[1]))*Integer.parseInt(coms[2]))/2;
0281279
2006/10/30(月) 18:03:57お早い回答ありがとうございます
Integer.parseIntについては自分で調べてみます
ありがとうございました。これで最期の問題が解けました
0282デフォルトの名無しさん
2006/10/30(月) 18:34:330283デフォルトの名無しさん
2006/10/30(月) 18:45:400284ぴゅあ
2006/10/30(月) 22:49:39>>280
Integer#parseInt()じゃ困るでしょう(たぶん"/2"で)
まぁコンパイルエラーを消すだけと言ってるしね
そこは>>279に頑張ってもらうとして
>>281
>これで最期の問題が解けました
たぶんまだ解けたとは言えないんじゃないだろうかと思う。。。
>String[] strs = {"-2","-3","-4"};
というのもなんか…なんて言うのか…思ってしまうけど
(主となるクラスをpublicにしないとかいうのも最近流行りなのかな??)
0285ぴゅあ
2006/10/30(月) 22:51:58どんなことをなのか判らないですけど
たぶん工夫しなくても
ソケットとかを普通に使えばできるんじゃないだろうかと・・・
0286279
2006/10/30(月) 23:08:05今、がんばってる最中です
まだまだ勉強不足だという事がわかります( ´Д⊂ヽ
publicについてはそういう意識がありませんでした
これからはつけるようにします
>というのもなんか…なんて言うのか…思ってしまうけど
これについては意図がよくわかりません
向こう側からこういう指定があったので、こうしましたが
何か問題があるのでしょうか?
0287デフォルトの名無しさん
2006/10/30(月) 23:16:10普通こんな書き方しないようなぁってのが散見されるけど
課題のためのコードなんで、多分気にしないでガリガリやればいいよ。
0288ぴゅあ
2006/10/30(月) 23:21:33いえ・・・なんていうか
確か存在はしていたような気はしたりするんですけど(もう忘れてしまった)
負の長さで面積を求めるというのがなんとなく…
あったような気もしなくはないのですけど、
どうだったかな?と気になったというだけです
頑張ってください
"/2"に関する部分はそこから展開して行けば
答えも得られると思います
本当は実数を扱いたかったりするでしょうから
それにはどうすればいいかと考えていれば
尤も出題がそこまで求めてないものかも知れませんけど
それならってことでついでに考えてみようとか思っても損はないです
0289279
2006/10/30(月) 23:24:30何度もすいません
とにかくがんばってやってみます(`・ω・´)
0290デフォルトの名無しさん
2006/10/30(月) 23:30:57っと誘導されてきました
数値以外のものが入力されたら
「数値以外のものが入力されています」
というエラー文が出せるようにするにはどうすればいいですか?
自分自身で考えたりしましたが、全然検討がつきません
0291ぴゅあ
2006/10/31(火) 00:15:50>宿題スレ
ちらと覗いてみたけど
宿題だとしても宿題らしい聞き方をしてなかったからでは?
>自分自身で考えたりしましたが、全然検討がつきません
どんな風に考えてみたとかあるんでしょうか
或いは全然思い浮かばないとか。。。
前スレの
http://pc8.2ch.net/test/read.cgi/tech/1159700963/
631からの流れに似た話とかあったりするので
取り敢えず見てみて、それからまた質問してみてもいいのかも
0292デフォルトの名無しさん
2006/10/31(火) 00:21:04解答とか晒されてるサイトとか在りませんかね?
全問正解しないと次ステップ進めない
ググったけど見当たらなかった
0293デフォルトの名無しさん
2006/10/31(火) 00:43:410294290
2006/10/31(火) 00:48:42前スレの
>>635を参考にすればいいってことですよね?
args.lengthっというのは
変数argsが参照している配列の要素の個数をint型の値として返すって事
ですよね?この値が1か0で判断しろって事なのでしょうか?
0295デフォルトの名無しさん
2006/10/31(火) 00:51:34ここから、
> この値が1か0で判断しろって事なのでしょうか?
ここへ飛躍する思考が理解できん。
0296ぴゅあ
2006/10/31(火) 01:14:54同じく…
>>294
>>>635を参考にすればいいってことですよね?
そこの後半の話から少し展開しているので…
10個くらい先までくらいは見ておいた方がいいのかな
0297デフォルトの名無しさん
2006/10/31(火) 01:40:14いや、まぁ教えてもいいが・・・Java関係に就職はさせないで・・・・
>>292
しかたない教えてやるよ
つ ttp://java.sun.com/
答えは全てこの中だ
0298290
2006/10/31(火) 01:46:53前スレを参考にして「try、catch」を参考書を使って
調べたらなんとか自分の思っているプログラムができました。
ただ自分がやった場合は
args.lengthを使わなかったのですが
これはやっぱり一般的なやり方ではなかったのでしょうか?
0299デフォルトの名無しさん
2006/10/31(火) 02:18:040300デフォルトの名無しさん
2006/10/31(火) 03:16:54沢山書いていけば分かる。体で感じてくれ。
0301デフォルトの名無しさん
2006/10/31(火) 09:03:21転職をオススメする。
0302デフォルトの名無しさん
2006/10/31(火) 11:03:36「配列の長さを取得」と「入力が数値がどうか判断」になんの関連性もありません。
俺もできません。
もう少し基本的な事から考えて、順序だてて思考する事をオススメします。
0303デフォルトの名無しさん
2006/10/31(火) 14:37:43マウスのボタンの数がプラットフォームによって異なるためできないと聞いたのですが。
0304デフォルトの名無しさん
2006/10/31(火) 15:03:32この辺とかどう?
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/SwingUtilities.html#isLeftMouseButton(java.awt.event.MouseEvent)
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/SwingUtilities.html#isRightMouseButton(java.awt.event.MouseEvent)
0305デフォルトの名無しさん
2006/10/31(火) 17:19:320306デフォルトの名無しさん
2006/10/31(火) 17:39:43Java仮想マシン仕様第二版
JAVA PRESS vol. 14 から連載してた「Java仮想マシン入門」
ぐらいか?
0307デフォルトの名無しさん
2006/10/31(火) 18:52:07test1.javaとtest2.javaを作っていて
test2はtest1にあるクラスをオーバーロードしてたのですが、
別々のディレクトリで保存することになりました。
こういう場合実行できなくなりますよね?
どうしたらよいのでしょうか。
現在実行環境にいないこともあって悩んでいます
0308デフォルトの名無しさん
2006/10/31(火) 19:10:08packageの概念とimport文によって解決できると思う。
あとはclasspathに注意するくらいかな。
0309デフォルトの名無しさん
2006/10/31(火) 19:13:35�dクスです。
環境に戻り次第やってみます
0310デフォルトの名無しさん
2006/10/31(火) 20:57:51DOMでhref属性を取得するところまではできました。
0311ぴゅあ
2006/10/31(火) 21:53:00もしかするとそれはオーバーライド?
(>test2はtest1にあるクラスを…
というのも微妙に気になったりもしたりするけど。。。)
>別々のディレクトリで保存することになりました。
は、所謂パッケージが変わる(移動する)という意味なのかな?
或いはパッケージとかはなくて、単に複数のディレクトリに分かれるというだけなのか
例えば他の場所にライブラリとしてあるクラスとか継承できてますよね(APIとかも)
どっちにしても、移動に合わせて手を加えてやれば問題ない筈でしょう
(今、問題になりそうな例が浮かんで来ないから…だったりですけど。。。)
>現在実行環境にいないこともあって
実行環境と言われると運用環境とかテスト環境とか浮かんでしまうのですけど…
ちょこっとサンプルとか作って試してみる開発環境がないということ?
0312デフォルトの名無しさん
2006/11/01(水) 01:28:36それをもちまわる(他のクラスのコンストラクタの引数にする)っていうのは普通かな。
いろんなところから、コンポーネントに対して内容の更新などができるように。
スレッドなんか走らせるときは、必ずそのクラスをもたせてstartさせる。
こういうのってなんかデザインパターン的に名前ついてる?
0313デフォルトの名無しさん
2006/11/01(水) 01:58:00それでも収拾がつくならご自由にどうぞ。
0314デフォルトの名無しさん
2006/11/01(水) 04:18:14ファクトリ、シングルトン
0315デフォルトの名無しさん
2006/11/01(水) 07:30:18コンポーネントが増えると、313の言うとおり収拾がつかなくなるからお勧めできない。
それよりも、コンポーネントの内容の更新をしたい状況をイベントとして定義して、
そのイベントを監視する側としてUI(で定義する無名クラス)を登録する方がいい。
いわゆるオブザーバパターン。
java.util.Observerとjava.util.Observableを使えば監視-被監視のモデルが簡単に実装できるけど、
インタフェースが気にくわないなら自分で定義してもいい。
自作する場合、AWTやSwingのXXXListenerインタフェースやaddXXXListener()メソッドが参考になる。
例を挙げてみよう。
データモデルHogeがあり、それを管理するHogeContainer、表示するHogeFrameがあるとする。
Hogeが別のUIで変更されたら、HogeFrameにも反映させたい。
そのときは、HogeFrameクラス側で、HogeContainerに対して以下のように実行する。
container.addHogeListener(new HogeListener(){
public void hogeModified(Hoge hoge){
fooText.setText(hoge.getFoo());
barText.setText(hoge.getBar());
}
}
0316270
2006/11/01(水) 10:29:57スルーされる訳だ(´・ω・`)
0317デフォルトの名無しさん
2006/11/01(水) 11:51:02JavaAppletがあるサーバとデータベースのサーバが別マシン上にあります。
サーバA:[ WEBサーバ(IIS)-ASP+JavaApplet ]
サーバB:[ データベース (SQLServer 2000) ]
そのためだと思いますが
DB接続処理で「java.security.AccessControlException: access denied」が発生しています。
JavaAppletのセキュリティモデルで許可されてないというのはわかりました。
セキュリティポリシー設定で許可するようにできるというのを見つけたのですが、
この場合のセキュリティポリシーの設定というのはWEBサーバ側でしょうか?
それともJavaAppletを表示するユーザ(ブラウザ)の設定でしょうか?
そういった設定を説明するHPがあれば誘導をお願いします。
0318デフォルトの名無しさん
2006/11/01(水) 13:17:37いわゆるグローバル変数のように、変数をそのままの形で使うことは可能ですか?
具体的には以下のようなプログラムを作りたいと思っています
クラスaaaaa {
int i;
main {
i = 0;
処理bbbbbの呼び出し
i 表示して値が増えていればOK
bbbbb {
i++;
}
}
}
0319デフォルトの名無しさん
2006/11/01(水) 13:27:39クラス変数なら
import static aaaaa.i;
としておけば単純名 i でアクセスできるようになるけど、インスタンス変数は無理。
> 具体的には以下のようなプログラムを作りたいと思っています
コンパイルが通るソースコードさらしてくれ。
全て aaaaa 内に見えるので 「クラス、メソッドをまたいでも「xxxx.yyyy」とせず」ってのが分からんし。
0320デフォルトの名無しさん
2006/11/01(水) 13:30:22セキュリティポリシー設定するならクライアント側ね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/spec/security-specTOC.fm.html
アクセス権とセキュリティポリシーあたりとか。
あと、署名付きアプレット使うって手もある。
0321317
2006/11/01(水) 13:49:11クライアント側ということはブラウザでAppletを表示する端末ですね
提示いただいたURLを参照して勉強してみます。
クライアントへのセキュリティポリシーの設定がダメといわれたら、
署名付きアプレットの使用も考えてみます。
0322デフォルトの名無しさん
2006/11/01(水) 13:49:36実際にはもっと変数と配列が多いんですが
こういう感じにしたいと思ってます
import java.io.*;
public class aaaa {
int i = 1;
public static void main(String[] args)
throws Exception {
b1();
System.out.print(i);
public void bbbb() {
i++;
}
}
}
0323デフォルトの名無しさん
2006/11/01(水) 13:52:36このプログラムなんですけど、実行したあとどのように入力操作したらいいのかわかりません;
0324デフォルトの名無しさん
2006/11/01(水) 13:57:20> int i = 1;
static int i = 1;
> public void bbbb() {
public static void bbbb(){
0325デフォルトの名無しさん
2006/11/01(水) 14:18:30まず何から勉強すればいいでしょうか?
ちなみにスキルは0です
0326デフォルトの名無しさん
2006/11/01(水) 14:24:42それ、リダイレクトかなんかでファイル入力させるんじゃない?
もしくは 0以上 255以下の数字を 100回入力。
0327デフォルトの名無しさん
2006/11/01(水) 14:27:23小学生レベルの算数と、中学生レベルの英語。
0328デフォルトの名無しさん
2006/11/01(水) 14:48:59数値打ち込む→リターン
の繰り返しじゃだめだったんですけど…;
0329デフォルトの名無しさん
2006/11/01(水) 14:57:13EOF 入力してないんじゃないの
unix とかだと ctrl + d で、
Windows のコマンドプロンプトだと ctrl + z だっけか?
0330デフォルトの名無しさん
2006/11/01(水) 15:08:43それだ!
ありがとうございます!
0331デフォルトの名無しさん
2006/11/01(水) 16:11:08できる人いたらお願いします!!
0332デフォルトの名無しさん
2006/11/01(水) 16:15:46そんな質問の仕方だと誰も答えてくれないだろうが。
0333デフォルトの名無しさん
2006/11/01(水) 16:16:30ホスト名 ポート番号 メッセージ
だよな、普通。
でも宿題スレ行けよ。
0334デフォルトの名無しさん
2006/11/01(水) 18:13:57ばしょしんしゃじゃなくなるの?
0336デフォルトの名無しさん
2006/11/01(水) 19:19:37クラスとかメソッドの使い方は分かってきたんですが
実際にプログラムを書くときにどんなふうに全体を設計していくか
というようなことがいまいち分かりません。
その辺のコツが身につく本ってあります?
0337デフォルトの名無しさん
2006/11/01(水) 21:19:10ERRのところでコンパイルエラーが出るのですがなぜですか?
OKのとこはとおります。
--foo.java
public class foo {
static class HogeMap extends HashMap<Integer,String> { }
public static void bar( AbstractMap<Integer,?> baz ) {
if( baz instanceof HogeMap ) System.err.println( "Da!" ); // ERR
}
public static void zot( Map<Integer,?> quux ) {
if( quux instanceof HogeMap ) System.err.println( "Ya!" ); // OK
}
public static void main( String args[] ) throws Exception {
bar( new HogeMap( ));
zot( new HogeMap( ));
}
}
--
0338デフォルトの名無しさん
2006/11/01(水) 21:19:39ArrayListで、新規に追加する要素が
既にリスト内にある場合は追加しない、というようなメソッドはありませんか?
やはり毎回リスト内を全てチェックするしか方法はありませんかね。
0339デフォルトの名無しさん
2006/11/01(水) 21:21:35順序関係なしならSet使ったほうがいいんで無いかい。
0340ぴゅあ
2006/11/01(水) 21:55:50>やはり毎回リスト内を全てチェックするしか方法はありませんかね。
の意味が「そんなコード自体を書きたくない」というようなことなら
APIリファレンスをもう一度よく見てみれば?
Listインターフェイスの説明には
# ユーザが重複する値を挿入しようとしたときに実行時の例外をスローすることにより、
# 重複する値を禁止するリストを実装する場合もありますが、
# このように使われることはほとんどありません。
とあったりするけど、"逆にやる"というのもありかもだけど
0341デフォルトの名無しさん
2006/11/01(水) 23:34:25>例を挙げてみよう。
>データモデルHogeがあり、それを管理するHogeContainer、表示するHogeFrameがあるとする。
>Hogeが別のUIで変更されたら、HogeFrameにも反映させたい。
ここまでの表現なら
interface HogeFrame{
void done(int update_value)
}
として、
container.addHogeListener(HogeFrameImpl){
observers.add(HogeFrameImpl);
}
とかってやるんじゃないのか?
0342ぴゅあ
2006/11/01(水) 23:40:19ポート番号は省略可で・・・
とかいうのを書き忘れたとか、
それくらいは自分でやれるとかいうところなのかも?
>>336
>java歴プログラム歴ともに一ヶ月未満で
>実際にプログラムを書くときにどんなふうに全体を設計していくか
>その辺のコツが身につく本
ないんじゃないでしょうか・・・
というか、それはある意味一夜漬けみたいなもの?ですよね?
大きなプログラムも小さな部品が集まって出来あがったもの
単品で大きなプログラムなんてそうそうお目に掛かれない…
というか1つの部品としてできているなら"全体をどう…"なんてないだろうし
コードが集まって小さなプログラム(部品)に
小さな部品が集まって、より大きなプログラムに
個々の小さなプログラムがどんなものかを理解する必要があるだろうし
沢山の部品を知る必要もあるだろうし
小さなプログラムから沢山作って理解し
どう組み合わせて行くのかを理解して行けば
徐々に大きなプログラムを作るのもどうすればいいのか
判るようになるんじゃないかと
小さかろうが、物凄く大きかろうが
"全体"と言っているものは、それぞれに必ずありますよね?
本を読んだり、聞いたりするだけでできたりするものではなくて
実際に沢山のプログラムを作って自身が"理解できていく"ことだと思いますよ
(プログラムを作ること以上に時間を惜しまず掛けるなら可能だったりはするだろうけど)
0343デフォルトの名無しさん
2006/11/01(水) 23:53:41こういう本はあんまりないんじゃないかな。偉い人や本が、物理の法則教えて
チミが理解したとしても自転車はのれないでしょ?言語も似た部分があるので、
本を探すより、ソースコード書きまくったほうがいいよ。
数当てゲームとか○×ゲームとか何か興味もてそうなもの書いていきな。
それで次はテトリス。。。とか問題を段階的に大きくしていくと、知らずに身に付いているはずだよ。
いろいろ覚えるのは大変だけど、がんがれ。
0344デフォルトの名無しさん
2006/11/02(木) 00:04:32やはりプログラムは習うより慣れろなんですね。
大変参考になりました。
たくさんソースを書いて精進してみます。
0345デフォルトの名無しさん
2006/11/02(木) 00:15:11>>343と言われることが多く、だいたいそのとおりだけど、
文書化して知識を共有しようという試みはいくつかなされている。
お勧めはこれかな。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894711524/
ただ、始めて1ヶ月ということだし、それよりもEffective Javaの方を先に読んだ方がいいかもしれない。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894714361/
設計の話ではないけど、今のレベルならこっちの方が得るものが大きいと思う。
0346デフォルトの名無しさん
2006/11/02(木) 00:41:59慣れるにしても、自分でコード書くばっかりで先人の知恵にふれておかないと、
独りよがりなバッドノウハウの固まりになる危険性があるから注意だよ。
本でなくても、Java SEのAPIとか、有名なオープンソースソフトのソースとか、いろいろ見ておくと役に立つ。
0347デフォルトの名無しさん
2006/11/02(木) 00:42:14二冊とも求めていたものに近いように思います。
明日本屋に行って手にとって眺めてみますね。
ありがとうございました。
0348デフォルトの名無しさん
2006/11/02(木) 00:50:09なバッドノウハウは経験しといた方が良い。
この経験がないとエレガントな方法がなんでエレガントなのか実感できないから。
0349デフォルトの名無しさん
2006/11/02(木) 01:02:03APIってソースも見られるんですか。
知りませんでした。
あとオープンソースで有名なものっていうと
たとえばどんなものがありますか?
0350デフォルトの名無しさん
2006/11/02(木) 01:18:45その辺は両輪だと思うぞ。
コード書かないで本とかソースを読んでばかりでも頭でっかちになりがち。
0351デフォルトの名無しさん
2006/11/02(木) 01:22:57>>349
インストールした先に src.zip ってないですかい?
0352デフォルトの名無しさん
2006/11/02(木) 01:39:57確かにありました。
こんな厖大なものが入っていたんですね。
これは勉強になりそうです。
ライブラリはこれを分かりやすく解説してくれているわけですか。
0353ぴゅあ
2006/11/02(木) 07:43:26javadocコマンドでソースにあるコメントとかを
抽出して作られたのがAPIリファレンス
悪い例も見とかないと何が良い例なのか判らないでしょうね
尤もそれは後の方がいいんだろうし、望むならだろうけど
所詮良いか悪いかは自分が判断することだし
0354デフォルトの名無しさん
2006/11/02(木) 10:38:50MathクラスのRandomメソッドを使うんだと思うのですがイマイチよくわからないので教えていただけないでしょうか?
0355デフォルトの名無しさん
2006/11/02(木) 10:46:47このメソッドを引数 65536で呼び出せば良いのでは?
0356デフォルトの名無しさん
2006/11/02(木) 10:47:080357デフォルトの名無しさん
2006/11/02(木) 10:47:590358デフォルトの名無しさん
2006/11/02(木) 13:12:58System.out.println(n);
int a;
a=(int)(n);
n=n-a;
System.out.println(n);
こうすると出力結果は一行目が3.1415、二行目が0.14150000000000018
となるのですが最後の「18」は何が起きたのですか?
0359デフォルトの名無しさん
2006/11/02(木) 13:28:17doubleを使う時は気を付けよう
あと、Math.PI と言う物もあるから
0360デフォルトの名無しさん
2006/11/02(木) 15:36:06JButtonまたはButtonで押されたという情報は拾ってこれるのですが
ボタンが離されたという情報を拾ってくる方法ってありますか?
0361デフォルトの名無しさん
2006/11/02(木) 15:43:31じゃまいか?
0362デフォルトの名無しさん
2006/11/02(木) 16:12:47だな。 (ソース見たわけじゃないが、動作としてはこうなる)
ActionListener#actionPerformedの時点でボタンが離されていると思ってよい。
押しっぱなしとかの状態が知りたきゃ、ボタンに限定した概念ではない。 MouseListenerを見てみろ。
0363デフォルトの名無しさん
2006/11/02(木) 16:21:45これで****番目のポートを開けるみたいなんですが
これって開けっ放しにしてもセキュリティ的に大丈夫なんですか?
0364デフォルトの名無しさん
2006/11/02(木) 16:31:17セキュリティってなんだか分かって言ってる?
0365デフォルトの名無しさん
2006/11/02(木) 16:47:32そのServerSocketで何かをするサーバプログラムの出来しだい。
たとえば、予期しないパケットが来たら例外で落ちるようだとDoS脆弱
性があると言える。
0366デフォルトの名無しさん
2006/11/02(木) 16:57:11>予期しないパケットが来たら例外で落ちるようだとDoS脆弱性がある
予期しないパケットが北場合の例外は作ってませんが、作らないと危ないですか?
ちなみに
ServerSocket ss = new ServerSocket(****);
で空けて置いて
もう一個のプログラムで
soc = new Socket("localhost",****)
っていう風に繋げて文字列を送ったり、返したりさせてみようと思ったんですが
この程度ならセキュリティも何もないんですかね?
0367デフォルトの名無しさん
2006/11/02(木) 17:09:210368デフォルトの名無しさん
2006/11/02(木) 18:46:57> 文字列を送ったり、返したり
本当にそれだけだったら、セキュリティを考える必要はない。プログラ
ムが止まっても悪影響がないんだったら、DoS攻撃も関係ない。
受け取った文字列を使ってデータベースをゴニョゴニョするとか、コマ
ンドを実行するとか、そういう処理をするんならそれなりに考えること
がある。
0369ぴゅあ
2006/11/02(木) 19:57:38>>166の話と同じ
ところで…
書いてある範囲に限定した話で
>もう一個のプログラムで
>soc = new Socket("localhost",****)
って関係ないから・・・
>この程度ならセキュリティも何もないんですかね?
がどっちの意味を指して言っているのか判らないけど…
・セキュリティ度外視状態
・セキュリティ無関係状態
あとはレスしてくれた人たちのを理解すればいいだろうから省略
0370ぴゅあ
2006/11/02(木) 20:02:32APIリファレンスでマウス周りのクラスを一通り見てみるつもりでも見れば
きちんと説明されてるみたいですよ
(>>362が解説してくれたところまでもが)
0371デフォルトの名無しさん
2006/11/02(木) 20:38:05基本データ型以外の変数は全て参照型ということで納得していたのですが、
String a = "aaa";
String b = "aaa";
でa==bがtrueになったり、
b = a.substring(1);
だとa==bがfalseで
b = a.substring(0);
だとa==bがtrueだったりするのが不自然に思えました。
これは書き換えを行わないという前提のStringクラスだけの特別な仕様で
一つの文字列につき一つのStringインスタンスしか作らないような仕組みになってるんですか?
0372デフォルトの名無しさん
2006/11/02(木) 20:52:07Yes.
だだしnew String("aaa")すると新しくStringが生成される
0373371
2006/11/02(木) 21:22:460374ぴゅあ
2006/11/02(木) 21:39:52でもまだ微妙かも?
"=="は文字列"aaa"を見てるんじゃないよ
というのとかをまず理解できた方がいいんじゃないかと思う
(>>371に対しては長くなったので割愛しました@色々やれば色々と判ってくると思うし)
0375デフォルトの名無しさん
2006/11/02(木) 21:50:47質問なのですが、DoJa 4.0以降でAACもしくはPCMは再生できるのでしょうか。
ADPCMもDoJa 4.0世代での対応周波数が分からないので…。
よろしくお願いします。
0376ぴゅあ
2006/11/02(木) 22:04:48あ いや…
Stringオブジェクトについて見ようとしていたのかも知れないし
"aaa"の方かな。。。
結局はStringと"=="の話に到達してそうな気もするけど…
0377デフォルトの名無しさん
2006/11/02(木) 22:41:09>>369
どうもありがとうございます
0378デフォルトの名無しさん
2006/11/03(金) 03:17:00必ずそうなる訳ではないので、内容比較はequals使いましょう
Integerとかも、場合によってはインスタンス使い回すし。
不変オブジェクトはそういうインスタンス使い回しがよくされる。
でも、それは実装依存だからね。
0379371
2006/11/03(金) 04:57:09内容比較にならないのはわかっていたんです。
"hoge".instanceMethod()という構文ができるということは
文字列リテラルを書いただけでインスタンスが作成されていて、
更に>>371の二回目の"aaa"では新たに作成せずに
自動的に一回目と同じインスタンスになっているんですよね。
そのあたりのJavaの挙動が不思議だったんです。
ところで>>378のような文脈での「実装」という言葉の定義がよくわからないのですが、
ソースから処理実行までの過程のどの部分のどういった差異の事を指すんですか?
0380デフォルトの名無しさん
2006/11/03(金) 05:49:36メディエータだろ。
0381デフォルトの名無しさん
2006/11/03(金) 05:59:53C/C++でも静的文字列は使いまわされる実装が多い気がするが
Javaでは文字列リテラルはVMだかクラスローダだかで一意の
Stringオブジェクトになることが仕様で決まっている。
(たとえ複数のクラスにまたがって書いてあったとしても!)
なおJavaに限らず仕様で決まっていないことは *すべて* 実装依存だ。
0382デフォルトの名無しさん
2006/11/03(金) 07:09:38>ところで>>378のような文脈での「実装」という言葉の定義がよくわからないのですが
VM とか java.lang.* みたいなVMに直結したライブラリの実装。
というより、言語規定で明確に決められていないって事かな?
>>371 に関して言えば、言語規定で決められてないって意味では
"aaa" == "aaa".substring(0) が true になった事ぐらいのような気もするけど。
0383デフォルトの名無しさん
2006/11/03(金) 13:40:29これらはCopyメソッドと比べて何が違うのでしょうか?
どちらもオブジェクトの情報を複製するのが目的だと思うのですが、
どのように使い分けるのでしょうか?
BufferedReader br= new BufferedReader(fr);
FileReaderとBufferedReaderの違いがよくわからないのですが
具体的に何をどう読み込んでるか教えてくだしあ><
0385デフォルトの名無しさん
2006/11/03(金) 13:47:24Copyメソッドって何だ?
それから、大文字小文字は区別しろ。
0386デフォルトの名無しさん
2006/11/03(金) 13:58:38配列を複製する時に使用するのが、copyメソッドらしいのですが
配列以外では使えないのか、cloneメソッドでは複製出来ないのかな、と。
また、Clonableインターフェイスを絡めて他のクラスからの情報を複製する場合、
どのような感じでコードを書けば良いかが分かりません。
ご指摘ありがとうございます。今後、気をつけます。>大文字小文字は区別しろ。
0387デフォルトの名無しさん
2006/11/03(金) 15:03:24配列でも clone() 使えるぞ。 それに配列に copy() なんてメソッド無いぞ。
java.lang.System#arraycopy(Object,int,Object,int,int) の事を言ってるのかもしれんが、
あれは複製じゃなくて内容を書き写すメソッドだからなぁ。
0388デフォルトの名無しさん
2006/11/03(金) 15:11:520389デフォルトの名無しさん
2006/11/03(金) 15:17:09たぶん一生直らないと思う。
0390デフォルトの名無しさん
2006/11/03(金) 15:22:02> FileReaderとBufferedReaderの違いがよくわからないのですが
BufferedReader は readLine() が使える。
FileReader は一文字読み込みの read() やらを連発すると、
実行速度が著しく低下する可能性がある。
0391デフォルトの名無しさん
2006/11/03(金) 15:23:33where句が動的に変わるSQLでPreparedStatementを使用すると、
PreparedStatement#setXXX メソッドを呼び出すときに
同じような条件判定を書かなきゃいけなくなります。
なんかうまく書く方法ってないでしょうか?
// where句の編集
if (joken1 != null) {
whereSql = whereSql + "joken1 = ?";
}
if (joken2 != null) {
whereSql = whereSql + "joken2 = ?";
}
if (joken3 != null) {
whereSql = whereSql + "joken3 = ?";
}
PreparedStatement ps = conn.prepareStatement(sql + whereSql);
// プレースホルダへ検索条件設定
if (joken1 != null) {
ps.setString(index++, joken1);
}
if (joken2 != null) {
ps.setString(index++, joken2);
}
if (joken3 != null) {
ps.setString(index++, joken3);
}
0392デフォルトの名無しさん
2006/11/03(金) 15:49:02List paramList = new ArrayList();
if (joken1 != null) {
whereSql = whereSql + "joken1 = ?";
paramList.add(joken1);
}
// 中略
PreparedStatement ps = conn.prepareStatement(sql + whereSql);
int index = 0;
for(Iterator paramItr = paramList.iterator; paramItr.hasNext(); ){
ps.setObject(++index; paramItr.next());
}
0393デフォルトの名無しさん
2006/11/03(金) 15:53:45レスありがとうございます。
という事は教本等にある、シャローコピー、ディープコピーとは何に当たるのでしょうか?
cloneableインターフェイスとcloneメソッドですが、「オブジェクトの複製」をする為にあると
思って間違いはないでしょうか?例えば、
public class Data implements Cloneable {
int x;
if (this instanceof Cloneable){
Data d = new Data(何かしらのデータ);
for(int i = 0; i<this.size; i++){
d.x = this.x;
return x;
} else{
throw CloneNotSupportedException;
}
こんな感じで良いのでしょうか?
0394デフォルトの名無しさん
2006/11/03(金) 16:02:15Bug ID: 1234712 Cloneable is misspelled を参照。
0395デフォルトの名無しさん
2006/11/03(金) 16:10:55> シャローコピー、ディープコピーとは何に当たるのでしょうか?
例えば、こんな配列があったとして
int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
シャローコピーは 1階層しかコピーしない、浅いコピー。
int[][] shallow = new int[array.length][];
for(int i = 0; i < array.length ; i++) shallow[i] = array[i];
ディープコピーは、全階層を辿ってコピーする。
int[][] deep = new int[array.length][];
for(int i = 0; i < array.length ; i++){
deep[i] = new int[array[i].length];
for(int j = 0; j < array[i].length; j++) deep[i][j] = array[i][j];
}
シャローコピーでは、src[0][0] = 2; とかやると、shallow にも影響が及ぶ。
ディープコピーでは影響が及ばない代わりに、コピーのコストが高い。
0396デフォルトの名無しさん
2006/11/03(金) 16:25:38public Object clone() メソッドを実装しろ。それだと Cloneable である意味が全然ない。
clone メソッドの中でコピーをする方法を書くんだ。
シャローコピーでいいなら super.clone() を呼ぶだけでよい。
0397ぴゅあ
2006/11/03(金) 19:21:29"うまく"というのか、"選択"?だろうけど
1.まずその付近全体のコードを整える
2.コード全体を眺めメソッド等に抽出できるものはないか挙げてみる
>whereSql = whereSql + "joken1 = ?";
なんて"StringBuffer使えよ"とか言われてしまいそうなところから
全体を書き替えてみると何か気付くこともあるのかも知れないし
(その前の部分のコードもあるのだろうけど、
そっちはベタでそのまま文字列になってるのかもだけど)
使い捨てでもなく、ちゃんと管理できると思えるなら
StringBuilderならぬSqlBuilderみたいな形に
作ってみたりもできそうだけど
(その前にその手のものなら探せばありそうな気も…
質問部分には答えてくれないかもだけど)
読み込む中身はファイルの文章全体であることは同じなのですか?
0399デフォルトの名無しさん
2006/11/03(金) 19:51:51> 読み込む中身はファイルの文章全体であることは同じなのですか?
基本的に同じ。
BufferedReader の readLine() を使った場合だけ、
その行の終端にある改行文字が削除される。
0400ぴゅあ
2006/11/03(金) 22:16:51FileReaderとBufferedReaderを対等に並べて比較できるか…?
というのもありそうな気もしたりですけど
(ザックリ)
・ファイル → FileReader
や
・ファイル → FileReader → BufferedReader
は、あっても
・ファイル → BufferedReader
はないですよね?
或いは"ファイル → FileReader"の代わりに
・ソケット(InputStream) → InputStreamReader → BufferedReader
とか
(FileReaderはInputStreamReaderをファイルを扱うのに特化したもの)
FileReaderやInputStreamReaderの段階で取り出す場合と
BufferedReader(Reader + Buffer…StringBuffer的?)の段階で取り出す場合とで
それぞれの段階で取り出せる形がどう違うのかとか調べてみるといいのかも
或いはFileReaderとBufferedReaderとの間で区切って考えてみるとか
探せば、これらの流れを漫画にして解説してくれているのも多数ある筈です
たぶんそれらによって
>読み込む中身はファイルの文章全体であることは同じなのですか?
とかいう疑問は解消されるのかも?
或いはその上で>>399の話を読み直してみるとか
0401デフォルトの名無しさん
2006/11/04(土) 00:08:460402デフォルトの名無しさん
2006/11/04(土) 00:16:03Fieldそのものはprivateでも取り出せるから
あとは無理矢理アクセス権を作ってしまえばいい。
0403デフォルトの名無しさん
2006/11/04(土) 00:24:52ありがとうございます。リフレクションのこと調べてみます。
ゲッター書かないで保存してしまってすごく困ってました(´Д`;)ヾ
0404デフォルトの名無しさん
2006/11/04(土) 00:29:45アプリケーションを起動したときにはきちんと表示されるのですが、
他のウィンドウが重なったり、最小化させたあとに
もう一度そのウィンドウを開くと、
画像が表示されなくなってしまいます。
きちんと表示させるためには何が必要なのでしょうか?
よろしくお願いします。
0405デフォルトの名無しさん
2006/11/04(土) 07:45:29特に必要なことはないはずだけど。
ImageIconとかの既存のIconでなく自分で実装したIconで再描画に対応できない造りになっているとか。
状況を再現できる最小限のソースがあれば指摘できる人が増えると思う。
0406ぴゅあ
2006/11/04(土) 11:44:35>他のウィンドウが重なったり、最小化させたあとに
>もう一度そのウィンドウを開くと、
>画像が表示されなくなってしまいます。
と言われると、
(Javaとか関係なく)再描画ができていない…paint/repaint周りとかを
オーバーライドして何かやってる?(何か必要なことを落としている)
とかが浮かぶのですけど・・・
>jLabelにsetIconを使ってgif画像を貼り付けています。
だけなら、>>405の言っているように特にないだろうと思うけど
0407デフォルトの名無しさん
2006/11/04(土) 12:51:44>>405
レスありがとうございます。
jPanel -- jLabel1
-- jLabel2
という構造で、jLabel1に前述の画像表示、
jLabel2ではpaint周りをオーバーライドしています。
jLabel1の方にまでjLabel2のオーバーライドの影響が及ぶものなのでしょうか?
影響がなければ、javaでなくPC環境のせいなのかもしれないのですね。
0408デフォルトの名無しさん
2006/11/04(土) 13:22:04> jLabel2ではpaint周りをオーバーライドしています。
これの所為だな。
0409ぴゅあ
2006/11/04(土) 14:12:31>jLabel1の方にまでjLabel2のオーバーライドの影響が及ぶものなのでしょうか?
は、ないだろうと思ったりはしますけど
(jLabel1はJLabelそのものをそのまま使っているということだと解釈するけど)
JPanelとか、JPanelを乗せているものとか...(更に…)には
オーバーライドとかやっていることはないんでしょうか
>>405も言っている再現される最低限のソースが用意できるなら
判りやすいでしょうね
(jLabel1とかjLabel2とか、なんか話に微妙なもの?がありそうな気もしたりするし…)
0410デフォルトの名無しさん
2006/11/04(土) 16:09:10swingの場合は paintではなくpaintComponentをオーバーライドする。
public void paintComponent(Graphics g) {
super.paintComponent(g);
//paintする処理を記述
}
0411デフォルトの名無しさん
2006/11/04(土) 16:41:02見ても何も書いていなかったので私のミスかな・・
Truth.java:3: シンボルを解決できません。
シンボル: クラス string
場所 : Truth の クラス
string right = "正解",wrong = "不正解";
^
Truth.java:7: シンボルを解決できません。
シンボル: クラス string
場所 : Truth の クラス
string right = value ? right : wrong;
^
エラー 2 個
class Truth{
public static void main(String[] args){
string right = "正解",wrong = "不正解";
boolean value;
value = true;
string answer = value ? right : wrong;
System.out.println(answer);
value = false;
answer = value ? right : wrong;
System.out.println(answer);
}
}
0412デフォルトの名無しさん
2006/11/04(土) 16:47:39だとしたら、教材のミスだ。
0414デフォルトの名無しさん
2006/11/04(土) 17:43:40VBとかは識別しないから、このへんから来た人は注意ね
0415デフォルトの名無しさん
2006/11/04(土) 18:15:03>>346
>>343を書いたんだけど、確かにソースコード書けだけではなく、文書化されている
モノも示すべきだと痛感。実際Effective Java持っているし、Java SEのAPI,,Tomcatなど
ソースコードをみてStringクラスやクラスローダの仕組み勉強したので。。。
Effective Javaより初心者向きでは、「日経BP SunJava2認定ガイド」がお勧めだと思う。
Sunの資格取るための教科書だけど、Objectクラスを継承するノウハウやequalsメソッド
などを、一般的な入門書より深く書いてある。
0416デフォルトの名無しさん
2006/11/04(土) 18:43:28だってそういう試験だしw
0418デフォルトの名無しさん
2006/11/04(土) 19:23:34下の例のようにBufferedReaderクラスのreadLineメソッドを使って行単位で読み込むというやり方がいろんなサイトで紹介されてますが、
ループを使わずにファイルの中身全部を一括して読み込むことってできないのでしょうか?
BufferedReader br = new BufferedReader(in);
StringBuilder s;
String line;
while ((line = br.readLine()) != null) {
s.append(line);
}
それともう一点。
下のようにStringオブジェクトの初期化の時に、文字列が長いと改行して +で連結する書き方をよくするのですが、
これって、コンパイル時に"abc・・・" + "xyz"は"abc・・・xyz"として最適化されるのでしょうか?
というのも、実行時に String型オブジェクト"abc・・・"と"xyz"が生成されて、String型オブジェクト"abc・・・xyz"を生成し直して、参照変数sにセットしているというような流れになっていないのかなっと思いまして。。
String s = "abc・・・"
+ "xyz";
0419デフォルトの名無しさん
2006/11/04(土) 19:28:44ちょっとお伺いしたいのですが、JSPで、セッションでのパラメーターの受け渡しが上手くいきません。
教えてもらえないでしょうか。
このページから、
http://www.wikiroom.com/java/index.php?plugin=attach&pcmd=open&file=Customer.jsp&refer=JSP%20session
このページへ、受け渡しをしたいのです。現在だと、すべて、NULLが表示されます。
http://www.wikiroom.com/java/index.php?plugin=attach&pcmd=open&file=ShipSummary.jsp&refer=JSP%20session
よろしくお願いします。
0420ぴゅあ
2006/11/04(土) 19:44:41>ループを使わずにファイルの中身全部を一括して読み込むことってできないのでしょうか?
BufferedReader#readLine()のようにというところではないんだろうと思う
テキストファイルだとしても、何十MBとかあるファイルを一度に読み込んじゃあ大変だろうし
一度に読み込んでおかないとできない処理なんてのもそうそうないんじゃないでしょうか
いや、でも読み込みたいんだということであれば
InputStreamReader#read(...)とかで一気に読んでおくとかあるでしょうけど
ホントにそれでいいのか、よく検討してみた方がいいような気がする。。。
>下のようにStringオブジェクトの初期化の時に
よく知らないんですけど、
逆コンパイラではなくて逆アセンブラみたいなツール?があるらしいのですが
それで実際にどうコンパイル(最適化)されているのか見てみるといいんじゃないかと
(バージョンによってまた違うとかもあるでしょうけど、見ておくのは安心?なのかも)
0421デフォルトの名無しさん
2006/11/04(土) 19:51:20Decoder#decodeって速くないから意味無いと気づく。
あえてnio使うなら改行表現を勝手に修正されたくない場合とかかな。
0422ぴゅあ
2006/11/04(土) 19:58:04JSPはずっと触ってないのであまり突っ込めないと思うけど
遷移先のページでsessionて出てきてる?
というような気がする・・・
0423デフォルトの名無しさん
2006/11/04(土) 20:15:20書き換えるの忘れてました。request.getAttributeってやってました。
なんて、馬鹿なんだろう。
ありがとうございました。
0424418
2006/11/04(土) 20:32:56ありがとうございます。
htmlファイルを読み込んで正規表現かけて欲しい情報を一発で取得したいがために
一括読み込みを考えてました。nioというキーワードをいただいたので少し調べてみます。
>逆コンパイラではなくて逆アセンブラみたいなツール?があるらしいのですが
なるほどです。失念してました><
早速jadを使って逆コンパイルしてみたら、String s = "abc・・・xyz";に置き換わってました。
0425デフォルトの名無しさん
2006/11/04(土) 20:44:30質問させていただきたいのですが、DBサーバを再起動すると
Websphereが持っているDB接続情報(コネクションプール)が変わってしまい
Websphereの方も再起動しないとDBに接続できなくなってしまうのですが
これはそういうものなのでしょうか?
それとも設定をいじれば、Websphereまで再起動する必要はないのでしょうか?
Websphereまでも再起動するというのが嫌なので改善方法があれば教えてください。
0426ぴゅあ
2006/11/04(土) 20:49:15jadでもそこは見れるんですね
よくは知らないんですけど、アセンブラコード風のリストが
見れるようなものがあるらしいようでもあるのですけど
(もしかしたらString s = "abc";の"abc"がどう処理されているか
見えたりするのかな?とか思ってみたりするのですけど
そこまでは見えないのかな。。。)
>htmlファイルを読み込んで正規表現かけて欲しい情報を一発で取得したいがために
そんなに大きなファイルとなることもないんでしょうけど
読み込みつつ・・・なんて処理ができるといいんだろうと思いますけど
ただ、一気に読み込んでおくよりはめんどくさそうだという気はしますけどね
一度作れてしまえばその仕組みを色々活用できそうですけど
0427デフォルトの名無しさん
2006/11/04(土) 20:56:450428ぴゅあ
2006/11/04(土) 21:02:35昼頃見かけたあちらのスレッドからですよね
WebSphereも触らなくなって久しいですが
>DB接続情報(コネクションプール)
と言っているのがどの辺りを指しているのかよく判らなかったりしますけど
アプリということなら、作り方なのでしょうけど
"WebSphere コネクションプール DB 再起動"とかでググッてみると出てきそうですね
例えば以下のページとか?
http://www-1.ibm.com/support/docview.wss?uid=std3d370fa45fa339dc249257000002ad030
0429デフォルトの名無しさん
2006/11/04(土) 21:03:03XAデータソースを使っていたらそんなもん。
0430デフォルトの名無しさん
2006/11/04(土) 21:04:38swingであるボタンを押すとラベルが表示するように作りました。
しかし、ボタンを押すとそのラベルガ表示されません。
右上のwindowの拡大を押すと、全体のwindowが拡大されたあとに
ちゃんと表示されるのです。しかし、最初から拡大して押しても表示されないし、
縮小したままでも表示されません。ボタンをおす、拡大するの順番でやっと表示されるんです。
これはどうしてですか?
0431ぴゅあ
2006/11/04(土) 21:08:13ありがとう
以前チラと使って、あれ?とか思ったのも
再度やってみたら判った。。。(汗)
0432ぴゅあ
2006/11/04(土) 21:18:14ラベルを表示する部分のコードを示してみるとかするのがいいのかも
最大化でなくても、他のウィンドウを重ねたりとかすると表示されたりしないでしょうか
ラベルが…と言っているけど、JLabel#setText()とか呼んでいたりしているんではなくて
或いはrepaint()とかrevalidate()とかが呼ばれないようなものになっているとか
最大化することによって再描画される状態になるのでやっと表示されるという状態が
起きていたりするんじゃないだろうかと思えたりですけど
0433デフォルトの名無しさん
2006/11/04(土) 21:33:10public にするのと、 package private にするのと、どちらがいいんでしょうか?
クラスと同様に package private にしとくと、 package private な interface を作って実装したときに
そこだけ public にしなきゃならなくなって、 public と package private とが混在して違和感があります。
かといって全部 public にしておいても、 package 外からはアクセスできないんだし、やっぱり違和感があります。
jdkのソースとか見るとコンストラクタだけ package private にして、メソッドは全部 public ってのが
多いみたいだったので、現在はそうしてます。
元を正せば package private な interface のメソッドは暗黙的に package private なアクセスレベルで
あるべきと思うんですが。
みなさん、どのようにしていますか?
0434デフォルトの名無しさん
2006/11/05(日) 00:02:10ArrayList<Integer> a = new ArrayList<Integer>()
a.add(1);
a.add(2);
int[] b = new int[a.size()];
for(int i=0;i<a.size();i++){
b[i]=a.get(i);
}
これを、toArray()を用いて書くにはどうしたらいいのでしょうか?
Integerとintの変換がうまくいかずエラーがでてしまいます。
0435デフォルトの名無しさん
2006/11/05(日) 00:07:55あなた自身の書いたそのコードがベストプラクティスに見えるけど。
0436デフォルトの名無しさん
2006/11/05(日) 00:25:24Object[] toArray(Object[] a) という関数を用いて
b=a.toArray(new Integer[a.size()]);
のように1行で書けるならそっちのほうがよりよいのかなと思ったのですが、
Integer[] → int[] へのキャストがわからずエラーがでてしまいます。
>>434のようにforで書いた方がよさげですか?
0437デフォルトの名無しさん
2006/11/05(日) 00:32:300438ぴゅあ
2006/11/05(日) 00:40:05>ArrayList<Integer> a = new ArrayList<Integer>();
からArrayList#toArray()で取れるのはInteger[]まで
a.get(i)はIntegerで取れているけど
>b[i]=a.get(i);
はアンボクシングが働いているので、正確にはb[i]=a.get(i).intValue();
get()までしか扱えないので
>Integer[] → int[] へのキャストがわからずエラーがでてしまいます。
という見方もできたりするでしょう
(正しくは(?)toArray()はArrayList<Integer>をInteger[]にするまでしかしないので)
commons Langまで持ち出して
Integer[] tmp = a.toArray(new Integer[a.size()]);
int[] b = ArrayUtils.toPrimitive(tmp);
とかも考えられなくはないでしょうけど
>>435の言ってることの方がいいだろうと思います
(2回配列を作ることになるし、余計なチェックコードとかも増えることにもなる@ArrayList#toArray(),ArrayUtils#toPrimitive()内)
0439デフォルトの名無しさん
2006/11/05(日) 00:43:26なるほど、無理にやろうとしても逆に大変になるんですね
とても参考になりました、ありがとうざいますっ
0440ぴゅあ
2006/11/05(日) 00:43:48そうは言われても、何か手があるんではないか?と思うからでしょう
ベストと言われるところがまだ納得できていないからだろうと思う
0441ぴゅあ
2006/11/05(日) 01:28:35余計だろうけど、補足してみるなら
>Integer[] tmp = a.toArray(new Integer[a.size()]);
>int[] b = ArrayUtils.toPrimitive(tmp);
としてみてもtoArray()の分が無駄
a.get(i)はArrayListの中身elementData[i]を返す
ArrayUtils#toPrimitive()のやっているのは>>434のforループそのもの
a.get(i)の代わりに(>>438を例に)tmp[i]という感じ
ArrayUtils#toPrimitive()に渡すためにa.toArray(new Integer[a.size()])を呼んでも
(System#arraycopy()を使ったりして高速に)ベタコピーしているだけで
a.get(i)でelementData[i]を見れば済むところをにわざわざtmp[]にコピーして使う分要らぬことを…
コード量は多そうに見えるが、forループにした方がシンプルということに
毎回書くのが嫌ならメソッドに切り出すとかクラスを作ってしまうとか
そのときにはArrayListっぽい命名にはなってなかったりするのでしょうけどね
0442デフォルトの名無しさん
2006/11/05(日) 14:25:24WinCloseAdpt: http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28600
上記の例を実際に動作させ、インターフェースとアダプタクラスを比較し、考察せよ。
という問題が出されたのですが、
インターフェイスは、そのインターフェイスに抽象的に定義されている
すべてのメソッドをオーバーライドする必要がある。アダプタクラスは必要な
メソッドだけをオーバーライドするように簡略化が図られた。
ということ以外に何か書けることはありますでしょうか?
0443デフォルトの名無しさん
2006/11/05(日) 14:37:310444デフォルトの名無しさん
2006/11/05(日) 14:49:55たぶん、それで良いと思う。
後は、Frame を extends しつつインターフェイスを実装できるのに対して
Frame を extends しつつ、アダプタクラスも extends はできないので
別のクラスを作ってるという点が若干違うとか、そんぐらい。
0445デフォルトの名無しさん
2006/11/05(日) 14:59:49例えば、2つの引数(配列)を持つあるメソッドを作りたいときに、
引数にint型でもlong型でも両方使えるようにするには
static void cal(int[] a,int[] b){
処理;
}
static void cal(int[] a,long[] b){
処理;
}
static void cal(long[] a,int[] b){
処理;
}
static void cal(long[] a,long[] b){
処理;
}
のように4つ書くのは異常に面倒だと思うのですが、なにかうまい書き方ないものでしょうか?
0446デフォルトの名無しさん
2006/11/05(日) 15:09:39cal(toLongArray(a), toLongArray(b));
}
static void cal(int[] a, long[] b){
cal(toLongArray(a), b);
}
static void cal(long[] a, int[] b){
cal(a, toLongArray(b));
}
static void cal(long[] a,long[] b){
処理;
}
0447デフォルトの名無しさん
2006/11/05(日) 15:38:300448デフォルトの名無しさん
2006/11/05(日) 15:51:07なるほど、そうやって処理を一つにまとめればいいんですね
型変換による効率悪化 と 処理のコーディング楽さ どっちを取るかって感じですかね。
参考になりました、ありがとうございます。
0449デフォルトの名無しさん
2006/11/05(日) 16:28:390450デフォルトの名無しさん
2006/11/05(日) 16:36:23誘導っhttp://pc8.2ch.net/test/read.cgi/hp/1161422792/
0451デフォルトの名無しさん
2006/11/05(日) 16:49:18ありがとうございます〜
0452デフォルトの名無しさん
2006/11/05(日) 16:57:02リソースを開放すると出たのですが
開放とはどういった意味なのでしょうか?
0453デフォルトの名無しさん
2006/11/05(日) 17:02:17中身見たわけじゃないから何ともいえないけど
WindowsならHGCあたりを開放してんじゃないかな。
0454デフォルトの名無しさん
2006/11/05(日) 17:03:35gというオブジェクトが使っていたメモリその他の計算機資源を、
他のオブジェクト等で再利用できるようにするという意味。
その代わりdisposeするとgは使えなくなる。
0455デフォルトの名無しさん
2006/11/05(日) 17:07:02フルスクリーン表示して大きさ固定するにはどうすればいいでしょうか
setExtendedState(MAXIMIZED_BOTH);
setResizable(false);
ってやるとフルスクリーン化は解けてしまうし、
getMaximizedBounds()やgetBounds()は何故か0が返されてしまいます
0456デフォルトの名無しさん
2006/11/05(日) 17:20:33やりたいことはフルスクリーン化でなく最大化かな
setResizable(false);
setVisible(true);
setExtendedState(MAXIMIZED_BOTH);
の順序でやってみると?
0457デフォルトの名無しさん
2006/11/05(日) 17:23:28初期値というのはどうするのが良いのでしょうか。
ArrayListなどと違って負荷係数とかあるので最適値というのが良く分かりません。
0458デフォルトの名無しさん
2006/11/05(日) 17:25:20たとえば、状態AのときはAKeyListenerクラスを使って状態BのときはBKeyListenerクラスを使いたいんですが。
メインフレームでは
addKeyListener(new AKeyListener());
addKeyListener(new BKeyListener());
とやってますが状況に応じてどっちを使うか切り替えたいです。
0459デフォルトの名無しさん
2006/11/05(日) 17:34:52removeKeyListenerとaddKeyListenerで状況に応じて登録しなおすとか、
AKeyListenerとBKeyListenerの方で、それぞれ状態Aか状態Bのときにしか実際の処理をしないようにするとか。
0460デフォルトの名無しさん
2006/11/05(日) 17:39:58トン。removeKeyListenerを使う線で考えてみます。
0461ぴゅあ
2006/11/05(日) 17:49:58何も触らないのが最適値でもあるのかも?
何を基準に最適値を求めたいのか判らないですけど
APIリファレンスにはいちおよく読めば書かれていると思うけど
>>460
あちしは>>459の言う後者か
AKeyListenerなり(AKeyListenerのみ)で振り分けるとかの方が
いいんじゃないだろうかと思う
0462デフォルトの名無しさん
2006/11/05(日) 18:15:36その線も考えてみたんですが状態数が多くキー処理の数がものすごく多いのでなるべく分けておきたいなぁと。
AKeyListenerのメソッドがすごく長くなりそうなので。
↓みたいな感じにしてます。
public void setGameState(int gameState) {
// ゲーム状態を変更する
this.gameState = gameState;
// 現在のキーリスナーを削除
removeKeyListener(currentKeyListener);
// ゲーム状態に応じてキーリスナーをセット
switch (gameState) {
case GameState.TITLE :
addKeyListener(title);
currentKeyListener = title;
break;
case GameState.GAME :
addKeyListener(game);
currentKeyListener = game;
break;
case GameState.BATTLE :
// addKeyListener(battle);
// currentKeyListener = battle;
break;
}
}
0463デフォルトの名無しさん
2006/11/05(日) 18:44:21ありがとうございます
0464デフォルトの名無しさん
2006/11/05(日) 19:16:24最適化の肝は実測にあるので、
与えるデータや初期値や負荷係数などのパラメータを実際に変えながら、
最適ポイントを求めてみるとか。
0465ぴゅあ
2006/11/05(日) 23:01:42>状態数が多くキー処理の数がものすごく多いのでなるべく分けておきたいなぁと。
いや別にリスナそのものは状態に応じた分岐までとかでもいいんじゃないでしょうか
(AKeyListener,BKeyListenerと分けたかったメソッドを用意して状態によってそれへの分岐だけとか)
その先は好きなだけ(機能もグループ分けしたりとかでメソッド分けするとか)どうにでもなるのでは?
そうすることでより見通しがよくなりそうに思えますけど
逆にadd/removeだと、状態が変わることとadd/removeのタイミングが保証できているかとか
疑問が出てきたりもするかも?
0466ぴゅあ
2006/11/05(日) 23:05:39なので、いずれにしても状態とリスナが呼び出されるタイミングに配慮する必要は
あるだろうと思う
(たぶん、ちゃんと考えてないと、"動きが怪しい"とか後で悩むことになりやすい部分だろうと思いますよ)
0467デフォルトの名無しさん
2006/11/06(月) 03:06:52capacity の 80% くらいデータが埋まると capacity の拡張が起こったはず。
正確な値はソースをみないとわからないが。
なのでその拡張が起こる直前で収まるような inital capacity を与えれば最適になる。
0468デフォルトの名無しさん
2006/11/06(月) 03:11:170469ぴゅあ
2006/11/06(月) 07:34:53というのが毎回不変ということを意味しているのか
>ハッシュ値が重複するから
どういうキーが来るのか
とかにも関わってくるんじゃないかと思うけど…
固定のデータを毎回使うということなら
予めオブジェクトを保存しておくという手もありそうだけど
それにしてもどっちが速いかはやってみなきゃ判らないんじゃないかと…
0470デフォルトの名無しさん
2006/11/06(月) 21:54:14これはAKeyListener、BKeyListenerを両方とも登録しておいてそれぞれのListenerのKeyPressed()とかに
if (state == A) {
// キー入力処理
}
で分岐てことであってますか?
0471ぴゅあ
2006/11/06(月) 23:08:24例えばAKeyListener、BKeyListenerをひとつのものにしたという意味にでも
"1つの"ABKeyListenerをaddしておき
if (state == A) {
// AKeyListenerに書いていた処理をするメソッドを呼ぶ
}
else if (state == B) {
// BKeyListenerに書いていた処理をするメソッドを呼ぶ
}
のようなイメージを挙げてみました
stateが変化するタイミングはまだ微妙かも知れないですけど
remove/add(removeとaddの間に隙間ができる)
或いは逆順にadd/remove(addとremoveに重なった間ができる)
よりはいいだろうと思うし、
stateのタイミングをどうするかを考えるだけくらいに減りそうな気がします
AKeyListener、BKeyListenerをaddしておいて
というのも常に両方のリスナが呼ばれるというのはあるけど
stateが変化するたびにadd/removeというよりはいいんじゃないかと思います
stateに対してそんなシビアでないとかいうのは質問からは読み切れないし
イベントが発生してから実際にリスナへ届くのが必ずしもすぐであるとは限らないだろうし
その辺りは何とも言い難いようにも思いますが
たぶん少なくともやって損はしないだろうってところかもですけど
// AKeyListenerに書いていた処理をするメソッドを呼ぶ
の先のメソッドのところは長くなるとかなら
判りやすいように分割するとか好きにできるでしょ?
0472超初心者
2006/11/07(火) 03:25:51例えば設定1〜6までのBIG/REG/ベル/スイカの確率を
設定1:1/300 / 1/600 / 1/10 / 1/60
設定2:1/270 / 1/550 / 1/9.8 / 1/55
設定3:1/260 / 1/500 / 1/9.6 / 1/53
設定4:1/250 / 1/450 / 1/9.3 / 1/51
設定5:1/240 / 1/400 / 1/9.0 / 1/49
設定6:1/240 / 1/350 / 1/8.5 / 1/45
この様なスペックの台があったとして、
この台をX回転させたときBIG/REG/ベル/スイカの入賞個数を
入力すると、それぞれの設定で起こり得る確率を表示させたいのですが、
これを、携帯で計算&表示させることは可能でしょうか?
また、比較的簡単に出来るならば、ご指導宜しくお願いしたいです。
0473デフォルトの名無しさん
2006/11/07(火) 10:31:00みたいな構文はnewを使ってインスタンスを生成してからじゃなくても
使えるようなのですが、どういう場合にnewを使ってコンストラクタを呼んで、
どんな場合はクラスのメソッドを直接呼べるんでしょうか?
0474デフォルトの名無しさん
2006/11/07(火) 10:50:34インスタンス不要。
0475デフォルトの名無しさん
2006/11/07(火) 11:00:10そういうのを使うときはリファレンスで確認して、メソッドの呼び出し方法を確認すれば
OKって感じですかね
0476デフォルトの名無しさん
2006/11/07(火) 11:14:24Eclipse使えば警告出てくるよ。
0477317
2006/11/07(火) 17:11:48grant codeBase "http://[WEBサーバ名(orIPアドレス)]/-" {
permission java.security.AllPermission;
};
このファイルをWEBサーバ[windowsXP]のHOMEディレクトリに設置したら、
他サーバ上にあるデータベースに接続および参照/更新が可能になりました。
ですが、
WEBサーバ以外の端末[windows XP/2000/NT]に同一ファイルを設定したところ、
接続できないとエラーが出力されました。
com.ms.security.SecurityExceptionEx[com/internetcds/jdbc/tds/Tds.<init>]: cannot connect to "[DB server name]"
policyファイルの認識に誤りがありましたらご指摘お願いします。
※反映させるのに一工夫必要とかあるのでしょうか?
あと補足として以下のpolicyファイルで上記各環境の動作試験を行っても
WEBサーバ上でのブラウザ表示のみ成功でした。
grant codeBase {
permission java.security.AllPermission;
};
※2000/NTで補足の動作試験を行うと以下のエラーになります。
java.security.AccessControlException: access denied (java.net.SocketPermission[host name] resolve)
0478ぴゅあ
2006/11/07(火) 18:25:24あまりいいことではないような気もしたりするけど…
>>475
newが必要かどうか、クラスメソッドかどうかもいいけど
それによって(実際に実装されているものが)何を得ようとしているのかを
理解(考えてみる)のがいいだろうかと思いますよ
(クラスメソッドとかを理解した後のステップだろうけど)
0479ぴゅあ
2006/11/07(火) 18:26:09あまりやってないので明確なところは言えないけど
別サーバーにあるというのはpolicyファイルなりで解決できたのですよね
ちょっと気になってみるのは
その
>WEBサーバ以外の端末[windows XP/2000/NT]
からアクセスできるようになっています?(policyとは関係ない部分で)
アプレットを使うということはWebサーバーは全ての(或いは特定のネットワークに限定して)クライアントから
アクセスできるように設定されている筈ですよね
DBサーバー(サーバーB)なるものもアプレットから…つまり全てのクライアントから
アクセス可能であるように許可されていなければならないように思います
(つまり"サーバー側で"そのように設定してあるということ)
いちお話の中では出てきてないようなので聞いてみてますが
例えばそのマシンにDBクライアントなりのものを入れてみて
DBに接続できるかどうかとか確認されているでしょうか
或いは確認してみると判るんじゃないだろうか?と思ったりもしてみますが。。。
>com.ms.security.SecurityExceptionEx[com/internetcds/jdbc/tds/Tds.<init>]: cannot connect to "[DB server name]"
とかはpolicyファイルとかに関わるものというより
その辺のところを言ってたりしないんだろうかと思ったりですけど
勝手な推測だけですけど、そんな気もしたりします
たぶん"com.ms.security.SecurityExceptionEx cannot connect"とかでググッてみたりしても
(直接DB周りの話でないにしても)
それらしいものは得られたりしそうな気もしたり。。。
0480デフォルトの名無しさん
2006/11/07(火) 18:35:02> com.ms.security.SecurityExceptionEx
それ、MSJVM 使ってるんじゃない?
MSJVMってポリシーファイル使えるんだっけか?
0481317
2006/11/07(火) 18:58:50各動作確認端末からのデータベース接続や
もっと根本的なApplet動作などを再確認してみます。
>>480
MS JVMを使っているっぽいです。
SunJavaを導入して動作確認してみます。
0482デフォルトの名無しさん
2006/11/07(火) 20:21:20policyファイルって使ったことないんだけど、
WEBサーバ以外の端末からの実行って、コマンドプロンプトから実行してるの?
WEBサーバは勝手にやってくれるけど、そうでない場合は、自分で指定しないとダメとか?
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/spec/security-spec.doc6.html
最悪は、/lib/security/java.policy を書き換えれば行っちゃうとか?
よくわからないので、オレも教えて欲しいです。
0483デフォルトの名無しさん
2006/11/07(火) 21:25:22それ書き換えると、そのJVMで実行する全てに影響。
それがいやなら実行時に-Dオプションでポリシーファイルを指定
>>477
ポリシーファイルでcodebase指定したら
そのcodebaseのクラスに対してのパーミションが開く
Codebaseからファイルを持ってこずに、ローカルのライブラリを
使った場合は、同じクラスでも権限は与えられないから注意。
0485デフォルトの名無しさん
2006/11/08(水) 00:30:56Web上からrdfファイルを入力し、それをXMLとして解釈してタイトルや内容を抽出、String型の変数に入れて
それをprintで表示させたいっていう内容です。
タイトルに関しては問題なく表示されるのですが
内容のみ『〜〜文章の途中......』と点で省略されて最後まで表示されません。
Stringって文字数制限ありましたっけ?
具体的なソースプログラムを晒した方がいいですか?
ご教示よろしくお願いします。
0486デフォルトの名無しさん
2006/11/08(水) 00:33:39あとDOMで保持するよりSAXで
他のオブジェクトに落としちまった方がいいよ。
0487デフォルトの名無しさん
2006/11/08(水) 00:37:23文章の切れ方にルールは?
何文字目かで切れているかとか。
それと、まず、読み込み元が切れているというオチが無いかだけは確認して欲しい。
取得するノードが違っているということもあるかもしれんし。
0488デフォルトの名無しさん
2006/11/08(水) 00:37:31そのRSSでは全文が配信されているのかい?
rdfファイルの時点でdescription要素の中身
が『〜〜文章の途中......』になってたりしない?
0489485
2006/11/08(水) 00:46:11DOMでRSSを扱っていたのもありますが、大本の原因は
488氏の仰る通り、rdfファイルの元が......で切れてました。
確認怠ってた私の責任です。 即レスして下さった方々ごめんなさい。
元々のRSSが切れている場合、文章全ての表示って不可能ですか?
Mixi等はRSSから文章全てをひっぱてこれたと思うのですが、どういうメカニズムなんでしょう……orz
0490デフォルトの名無しさん
2006/11/08(水) 00:50:04> Mixi等はRSSから文章全てをひっぱてこれたと思うのですが、どういうメカニズムなんでしょう……orz
全文引っ張ってこれるRSSってだけだろ
0491デフォルトの名無しさん
2006/11/08(水) 02:04:28RSSに記事のURLがあれば、そのURLのページを取得して、うまいことやれば。。。
って無理か。
0492デフォルトの名無しさん
2006/11/08(水) 02:14:530493デフォルトの名無しさん
2006/11/08(水) 03:23:15boolean flag;
int iX,iY,iDisX,iDisY;
Color color;
BallData(boolean flag,int iX,int iY,int iDisX,int iDisY,Color color){
this.flag = flag;
this.iX = iX;
this.iY = iY;
this.iDisX = iDisX;
this.iDisY = iDisY;
this.color = color;
}
}
のインスタンスを配列化するとき
BallData[] ball = new BallData[]{
new BallData(true,0,0,1,1,Color.orange),
new BallData(true,200,100,1,0,Color.blue),
};
は上手く行って
BallData[] ball = new BallData[5];
ball[0] = new BallData(true,0,0,1,1,Color.orange);
ball[1] = new BallData(true,200,100,1,0,Color.blue);
だとコンパイルエラーになったんだけど、下の書き方はどこが間違っていますか?
ホームページでクラスの配列とかで検索するとよく下のような書き方がでてきます。
0494493
2006/11/08(水) 03:36:270495デフォルトの名無しさん
2006/11/08(水) 03:56:47特に問題なく通ると思う。
エラー箇所を間違ってないか?
0496493
2006/11/08(水) 04:20:40上の書き方でとエラーが出ないので他の箇所のエラーではないと思います。
DoubleBuffer.java:26: ']' がありません。
ball[0] = BallData(true,0,0,1,1,Color.orange);
^
DoubleBuffer.java:26: <identifier> がありません。
ball[0] = BallData(true,0,0,1,1,Color.orange);
^
DoubleBuffer.java:27: ']' がありません。
ball[1] = new BallData(true,200,100,1,0,Color.blue);
^
DoubleBuffer.java:27: <identifier> がありません。
ball[1] = new BallData(true,200,100,1,0,Color.blue);
:
:
エラー 10 個
0497デフォルトの名無しさん
2006/11/08(水) 05:01:280498493
2006/11/08(水) 05:30:52BallData[] ball = new BallData[5];
という表記なんですがこの宣言の仕方は間違っていますか?
0499デフォルトの名無しさん
2006/11/08(水) 05:49:05>>498
まちがってなさそうだけど。
0500デフォルトの名無しさん
2006/11/08(水) 07:40:15> BallData[] ball = new BallData[5];
> ball[0] = new BallData(true,0,0,1,1,Color.orange);
> ball[1] = new BallData(true,200,100,1,0,Color.blue);
> DoubleBuffer.java:26: ']' がありません。
> ball[0] = BallData(true,0,0,1,1,Color.orange);
下のは new が抜けてるよね。座標も 200, 100 だったのが 0, 0 になってるし。
タイプミスとかでコンパイルエラーになってる可能性もあるので、
コンパイルエラーになったソースと、その時出たエラーを そのまま貼った方が良いと思うよ。
0501デフォルトの名無しさん
2006/11/08(水) 07:47:39> 座標も 200, 100 だったのが 0, 0 になってるし。
これは勘違い。
0502ぴゅあ
2006/11/08(水) 07:54:47フィールドとしてやろうとしているのではないですか?
その25行目に続けて26,27行目を書いているのではないのでしょうか
0503デフォルトの名無しさん
2006/11/08(水) 08:07:31java.io.InvalidClassException: system.Mail; local class incompatible: stream classdesc serialVersionUID = -5870021110093678344, local class serialVersionUID = 2169334442820164812
が発生するのですが、InvalidClassExceptionはどのような例外で、どうやって対処すればいいのでしょうか?
ObjectInputStream in = new ObjectInputStream(new FileInputStream(address));
Object o = in.readObject();
のコードで、「ObjectInputStream in.....」の部分はちゃんと実行されていて、「...in.readObject()」の部分で例外が発生しているみたいです。
0504デフォルトの名無しさん
2006/11/08(水) 08:31:58> InvalidClassExceptionはどのような例外
Serializable には、serialVersionUID ってのが必要で、
これでクラスのバージョンが同じかチェックしてるんだけど、
その serialVersionUID が異なる=シリアライズされた時の serialVersionUID と、
シリアライズ解除時のクラスローダが持ってる serialVersionUID が異なるなら、
InvalidClassException になる。
> どうやって対処すればいいのでしょうか?
Mail クラス に serialVersionUID を明示的に定義する。
0505デフォルトの名無しさん
2006/11/08(水) 08:36:40クラスにserialVersionUIDを定義してみれば?
定義してない場合は自動的に内部で作成されるみたいだが、値が違うってことは、
クラスのI/Fが違うんでしょうね。
書き込んだクラスと読み込んだクラスは、同じクラス使ってます?
名前が同じとかではなく、同じクラスファイルって意味で。
0506デフォルトの名無しさん
2006/11/08(水) 10:13:48ありがとうございます!
以前Eclipseを使っていて、serialVersionUIDが自動的に定義
されていたのですが、どんなときも値は1Lでした。
serialVersionUIDの値は1Lじゃないといけないんですか?
0507デフォルトの名無しさん
2006/11/08(水) 10:25:04いや、1じゃない方がいいと思う。
今のEclipseなら、計算して出してくれるよ。
メソッドの引数とか変えるたびに、手動で再計算させないとダメだけど。
0508デフォルトの名無しさん
2006/11/08(水) 10:29:25「どんなときも」なわけないでしょ。
ちゃんと生成させてないから1Lになってしまうだけ。
0509デフォルトの名無しさん
2006/11/08(水) 11:00:491. SQL文を全てStringBuilder等に入れて最後に実行
2. SQL文を順次実行
の二通り試した所、2.だと10分程度で終わるが、1.だと1時間経っても終わらなかった(1時間で終了させた)
これは、1.がとても効率が悪いと解釈してOK?
0510デフォルトの名無しさん
2006/11/08(水) 11:18:31StringBuilderって単語が出てきたけど、特にこれはレスポンスに影響ないと思う。
あと、レスポンス上げたかったら、executeBatchを使ってみたら?
0511デフォルトの名無しさん
2006/11/08(水) 11:30:47executeにいくつもSQLを詰めて実行 (できんの?) した時にJDBCドライバ内 or DB側で
構文解釈して複数にバラしたりなどしてるっぽい。 で、その解釈が遅いのでは。
てきとーな予測だけど。
全く同じSQLでそこまで結果が違うってのは、よっぽど解釈がタコなのかもしれない。
0512デフォルトの名無しさん
2006/11/08(水) 11:47:45SQLの作成で無限ループに入ってるなんてオチないよね?
本当にexeucteが遅いのか疑わしい。。。
0513デフォルトの名無しさん
2006/11/08(水) 12:05:04SQL文の作成が完了した時点で時間を表示して確認してる(>>509の例だと6分くらいだった)
1回のexeucteで複数のSQL文の実行はできる(各SQL文を ; で区切る)
executeBatchは使ったことなかったから試してみます
0514デフォルトの名無しさん
2006/11/08(水) 12:19:12え?SQLの作成に6分?ずいぶん大きなSQLだね。
SQLの作成含めて10分で実行できちゃうってのも不思議だけど。
0515デフォルトの名無しさん
2006/11/08(水) 12:46:190516デフォルトの名無しさん
2006/11/08(水) 13:07:14プログラムのおおまかな構成は
最初に複数(1000行程度)の結果を返すSELECT文を実行
それらの結果を while( ResultSet.next() ) でまわして
順次SQLで更新するか、StringBuilder に入れていって while 終了時に実行するか(毎回の更新の内容はINSERT文3つ)
ただ、while の中に1つ SELECT文があるので時間がかかる(もちろん更新によって結果が変わるSELECT文ではない)
>>515
postgresql-8.1-405.jdbc3.jar
0517デフォルトの名無しさん
2006/11/08(水) 13:27:09なんで遅くなるかはわからないけど、
最初の1000行返すSQLとwhileの中で実行しているSELECTを結合して、
それをそのままinsert selectの形にすれば、3回SQL投げるだけで済むのかな。
状況わからないので、たぶん難しいんだと思うけど。
ちなみに、insert selectの形でinsert先が複数ある場合って、
やっぱり複数回insertしないとダメなのかね?
selectの結果は毎回同じなので、勿体ない感じがする。
0518317
2006/11/08(水) 14:59:10自己レスで結果報告です。
policyファイルを設定したクライアントがMS JVMでした。
SunJavaを導入して解決しました。
その際に最初うまくいかなったのですが、
javaバージョン:1.2だったのでバージョン:1.4に変えたところうまくいきました。
0519デフォルトの名無しさん
2006/11/08(水) 18:48:55JButtonで設置したボタンをクリックしたら、
画面の指定した座標に図形を描くようにしたいです
どのようにつくればいいのかわかりません。教えてください。
0520デフォルトの名無しさん
2006/11/08(水) 19:02:44図形を描くメソッドを呼び出すAction実装クラスを作って
そのアクションを引数にしたコンストラクタでJButtonを作ればいい
0521デフォルトの名無しさん
2006/11/08(水) 19:23:42専用サーバを借りるほどのお金はとてもないのですが、共用のサーバを探してもPerlやPHPの動くサーバばかりで、JSPやサーブレットの動くサーバがなかなか見つかりません。
どこでサーバの情報は手に入れられますか?
0522デフォルトの名無しさん
2006/11/08(水) 19:54:530523デフォルトの名無しさん
2006/11/08(水) 20:22:520524519
2006/11/08(水) 20:33:13class hoge{
JPanel p
Jbutton btn
public hoge{
btn = new JButton("click");
p = new JPanel();
setBounds( 10, 10, 1100, 1100);
p.add(btn);
p.setLayout(null);
btn.addActionListener(new ActionListener()
{
=@ public void actionPerformed(ActionEvent event){
*****
}
});
getContentPane().add(p);
}
public static void main(String args[]){
hoge tr = new hoge();
}
}
ここで*****に実装してclickが押されたら図形drawLineとかで描画したいです!!
こんな風にできませんか?
0525デフォルトの名無しさん
2006/11/08(水) 20:43:57描画自体はpaintでヤレ
0526デフォルトの名無しさん
2006/11/08(水) 20:49:02JPanelを継承してpaintComponentをオーバーロードして描画すればOK。
ただ、毎回描画しないと、ウィンドウが隠れた時とかに消えちゃうよ。
0527デフォルトの名無しさん
2006/11/08(水) 20:51:200529493
2006/11/08(水) 20:58:04http://zetubou.mine.nu/timer/file/bomber29738_d7.xxx
>>502
これの25行目に続けて書いているのがエラーの原因でしょうか?
0530デフォルトの名無しさん
2006/11/08(水) 21:09:22ball[0] = new BallData(true,0,0,1,1,Color.orange);
ball[1] = new BallData(true,200,100,1,0,Color.blue);
ball[2] = new BallData(true,350,250,0,1,Color.green);
ball[3] = new BallData(true,200,250,0,0,Color.yellow);
ball[4] = new BallData(true,10,125,1,1,Color.red);
の前後を{}で囲え。つまり、
{
ball[0] = new BallData(true,0,0,1,1,Color.orange);
ball[1] = new BallData(true,200,100,1,0,Color.blue);
ball[2] = new BallData(true,350,250,0,1,Color.green);
ball[3] = new BallData(true,200,250,0,0,Color.yellow);
ball[4] = new BallData(true,10,125,1,1,Color.red);
}
その場所は、フィールドやメソッドの宣言か、
宣言と一緒に初期化するコードしか書けない。
単なる代入文は書けない。
{}で囲った部分はインスタンス初期化ブロックというもので、
ぐぐって調べてみるよろし。
0532530
2006/11/08(水) 21:14:00メソッドの定義?
0533519
2006/11/08(水) 21:15:06class hoge{
JPanel p
Jbutton btn
public void paintComponent(Graphics g) {
super.paintComponents(g);
g.drawOval(10,10,300,300);
}
public hoge{
btn = new JButton("click");
p = new JPanel();
setBounds( 10, 10, 1100, 1100);
p.add(btn);
p.setLayout(null);
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
repaint();
}
});
getContentPane().add(p);
}
public static void main(String args[]){
hoge tr = new hoge();
}
}
0534526
2006/11/08(水) 21:24:37>actionPerformedでは図形のデータを登録するだけに汁
>JPanelを継承してpaintComponentをオーバーロードして描画すればOK。
ですよ。
今のクラスだと、paintComponentは誰からも呼ばれないよ。
0535デフォルトの名無しさん
2006/11/08(水) 21:34:06import java.awt.*;///
import java.awt.event.*;///
import javax.swing.*;///
class hoge extends JFrame { ///
JPanel p; ///
JButton btn; ///
boolean clicked;///
public hoge(){ ///
btn = new JButton("click");
btn.setBounds(10, 10, 90, 20);///
p = new JPanel() {///
public void paintComponent(Graphics g) { ///
super.paintComponent(g); ///
if (clicked) {///
g.drawOval(10,10,300,300); ///
}///
} ///
};
setBounds( 10, 10, 1100, 1100);
p.add(btn);
p.setLayout(null);
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
clicked = true;///
repaint();
}
});
0536デフォルトの名無しさん
2006/11/08(水) 21:34:43getContentPane().add(p);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);///
setVisible(true);///
}
public static void main(String args[]){
hoge tr = new hoge();
}
}
0537519
2006/11/08(水) 21:38:030538デフォルトの名無しさん
2006/11/08(水) 21:42:40Java的には、新しい識別子を持ち込むものはすべて宣言(declaration)。
JLS6.1に宣言とは何か書かれているが、method declarationも含まれてる。
0539デフォルトの名無しさん
2006/11/08(水) 21:47:05<html><body>
<applet code=”task.class” width=”600” height=”400”>
</applet>
</body>
</html>
とワードか何かで書いて、html保存でいいんでしょうか?
0540535
2006/11/08(水) 21:47:22いまいち描画されないどころかコンパイルを通らなかったなり。
動くコードを得てよかったよかった、でなく、
もう少しSwingやAWTの基礎の部分を勉強した方がいいと思う。
元のソースのテイストを残して修正したから、動くけど酷いコードだし。
0541ぴゅあ
2006/11/08(水) 21:51:06>>530が答えてくれているように
>宣言と一緒に初期化するコードしか書けない。
>ball[0] = new BallData(true,0,0,1,1,Color.orange);
は通常の式・・・なので書けない
>BallData[] ball = new BallData[]{ ... };
や
>BallData[] ball = new BallData[5];
は、なんとなく似ているようにも見えるけど、変数(フィールド)の宣言とオブジェクトの割り当てや初期化(初期値を与えること)を一緒に行うことは許されているので可
>>530の言っている初期化ブロックや静的初期化ブロックという手もあるだろうけど、何故そうすれば書けるのかは、メソッドの一種と捉えればたぶんいいんだろうと思う
が、いちおあまり好まれないことの方が?多いみたいです
Javaのベテランの人ってダメとは言うけど、何故ダメとするのか理由を答えてくれない傾向があるようなところもあって、推測するしかできないけど…
恐らく何時呼ばれるのかコードの流れとして見え難くなってしまうから
(或いは存在を見落としてしまう可能性があり得るとか@ドキュメント化して明記していたとしても)
とかいうところからだろうと思ったりしますけどね
個人的にコードを書く分には好みで十分とも言えるだろうと思いますけど
(あちしも滅多なことでは使ってないです)
取り敢えず素直に(?)>>493の前者やコンストラクタの中(この場合配列のnewも含めたり?)に
(示されたコードではinitメソッド内がいいのかな?)
書くようにしておくのがいいんじゃなかろうかと
何故(普通の?)メソッドの中の方がいい(だろう)かと言うと
本当に必要になるまでインスタンス化を遅らせたりするとか(その逆に最初に一気に作っておきたいという場合もあるだろうけど)
たぶん扱い易くもなったりするのかも?というようなところもあったりするだろうと思う
0543デフォルトの名無しさん
2006/11/08(水) 22:00:41これではだめ?
class BallData{
boolean flag;
int iX,iY,iDisX,iDisY;
Color color;
public BallData setValue(boolean x_flag,int x_iX,int x_iY,int x_iDisX,int x_iDisY,Color x_color){
flag = x_flag;
iX = x_iX;
iY = x_iY;
iDisX = x_iDisX;
iDisY = x_iDisY;
color = x_color;
return this;
}
}
mainで以下を。
BallData ball[] = new BallData[2];
BallData p_bal = new BallData();
ball[0] = p_bal.setValue(true,0,0,1,1,Color.orange);
ball[1] = p_bal.setValue(true,200,100,1,0,Color.blue);
0544デフォルトの名無しさん
2006/11/08(水) 22:07:570545デフォルトの名無しさん
2006/11/08(水) 22:17:48Store#deleteMessageで削除。
0546デフォルトの名無しさん
2006/11/08(水) 22:22:50JavadocみてもdeleteMessageメソッドないお?
0547デフォルトの名無しさん
2006/11/08(水) 22:26:37あと、javaSEとjavaEEってどういう関係なんですか?
javaSEいれたらjavaEEも入ってくるのかな?
よろしくお願いいたします。
0548デフォルトの名無しさん
2006/11/08(水) 22:44:05javax.mail.Folder#setFlags() で、Flags.Flag.DELETED
0549ぴゅあ
2006/11/08(水) 22:45:04POPサーバーは
メールを読むにはコマンドを送って取り込み
削除をするにはコマンドを送ると削除マークを付けておいて切断時に削除する(サーバー側で)
だったんじゃないかと思うので
メールを読むとかに使ったものの周りに
たぶんそれらしきものがあったりするんじゃないだろうかと…
0550ぴゅあ
2006/11/08(水) 22:47:06"読むのは読む","削除は削除"で
読んだ後に削除するかどうかとかという選択とかはない筈(だろう)という意味
0551デフォルトの名無しさん
2006/11/08(水) 23:42:59フィールドにMap<Integer,A>を持ったTempMap implements Serializable みたいなクラスを作ってみました。
ところが、実行してみるとオブジェクトの保存はできているみたいなのですが、
オブジェクトの読み込み(デシリアライズ?)のところでInvalidClassExceptionが出てうまくいきません。
シリアライズを用いてMapや独自クラスをそのまま保存することは無理なのでしょうか?
0552ぴゅあ
2006/11/09(木) 00:13:49まずはこれ
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/InvalidClassException.html
で、InvalidClassExceptionを言うだけでなくて
その後に肝心なところが示されているんじゃないかと思うけど。。。
0553デフォルトの名無しさん
2006/11/09(木) 00:17:58こっちの方が直接的だと思うが。
出来るか出来ないかで言えば、きちんと実装すれば出来る、になる。
0554551
2006/11/09(木) 00:24:57java.io.InvalidClassException: TempMap; local class incompatible: stream classdesc serialVersionUID = 1092179690755622343, local class serialVersionUID = -4241137466232983300
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:519)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at 実行クラスのreadObject()を呼び出している行
* クラスの直列化バージョンが、ストリームから読み込まれたクラス記述子の直列化バージョンと一致しない
* クラスに未知のデータ型が含まれている
上記のどちらかでしょうか?
0555デフォルトの名無しさん
2006/11/09(木) 00:31:18エラーメッセージ見て分からないなら、中学生からやり直した方が良いよ。
0556デフォルトの名無しさん
2006/11/09(木) 00:47:51java -version でビルド番号も表示されないか?
> javaSEいれたらjavaEEも入ってくるのかな?
いいえ。
0557デフォルトの名無しさん
2006/11/09(木) 00:50:44ここだけで良いからちょっと頑張って訳してみなよ。
incompatible とか serialVersionUID だけで良いから。
直訳で良いから。
0558551
2006/11/09(木) 01:00:26ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/Serializable.html
を眺めてて気づいたのですが、
どうやらクラスAにimplements Serializableをつけてなかったのが原因だったみたいです。
インターフェースを実装するのはTempMapだけでいいのかと思ってました^^;
UIDが一致しないとかいうエラーはなぜ出たのか未だによく分かってないのですが
結局、きもはそこではなく、NotSerializableExceptionだったみたいです。
お騒がせしました。
ありがとうございました。とりあえず、中学生からやり直してきまっす!!
0559デフォルトの名無しさん
2006/11/09(木) 01:16:22> どうやらクラスAにimplements Serializableをつけてなかったのが原因だったみたいです。
よくそれで直列化できたな、オイ。
0560デフォルトの名無しさん
2006/11/09(木) 01:39:06ファイルの入出力を使うときdat型で出来ますか?
0561デフォルトの名無しさん
2006/11/09(木) 01:56:51今やさひいJavaをやりつつ独習Javaをやっている最中です。
独習JavaよりやさしいJavaの方がかなりわかりやすいと思いました。
0562デフォルトの名無しさん
2006/11/09(木) 02:00:11一通りできたら実践。
何かプログラム書いてみようや。
0563デフォルトの名無しさん
2006/11/09(木) 02:06:010564デフォルトの名無しさん
2006/11/09(木) 02:09:370565デフォルトの名無しさん
2006/11/09(木) 02:17:24データファイル
0566デフォルトの名無しさん
2006/11/09(木) 02:33:230567デフォルトの名無しさん
2006/11/09(木) 04:01:330568ぴゅあ
2006/11/09(木) 07:34:01そりゃそう
てか 何のために読んだの?
でしょ?
>>564
何処かで普通に出てきてそうな言葉ではあるけど・・・
あちしにも解らん。。。
0569デフォルトの名無しさん
2006/11/09(木) 07:37:15>>556
レスありがとうございます。
>java -version でビルド番号も表示されないか?
表示されました。ありがとうございます。
ところで、java6ってbuildが違うものが何個もアップされているのでしょうか?
ざっとみた感じだと、java6beta2てのが1個あるだけなのですが、これが最新版でしょうか?
>> javaSEいれたらjavaEEも入ってくるのかな?
>いいえ。
すみません。てことは、javaEEも別途入れる必要があるということですね。
0570デフォルトの名無しさん
2006/11/09(木) 07:46:45最新は https://jdk6.dev.java.net/ から。今は b104が最新かな。
0571デフォルトの名無しさん
2006/11/09(木) 07:57:32何か勘違いしているようだけど、JavaSE や JavaEEは仕様を表す言葉であって
特定のソフトウェアを表す言葉ではないよ。
「JavaSEを入れる」「JavaEEを入れる」は間違い。
「JDKを入れる」「JavaEE仕様に準拠したアプリケーションサーバを入れる」が正しい。
0572デフォルトの名無しさん
2006/11/09(木) 08:01:52JavaSE仕様では、JVM仕様とかコアAPI(java.langやjava.utilなど)仕様とか、
JDBC仕様、JNDIサービス仕様、デスクトップ環境API(AWTやSwing)仕様が規定されている。
JavaEE仕様では、Servlet/JSP/JSF/EL/JavaMail/EJB/JMS等の仕様が規定されている。
そして、これらの仕様に準拠したソフトウェアを各社(IBMとかSunとかBEAとか)が
自社製品として実装して、販売・配布している。
0573デフォルトの名無しさん
2006/11/09(木) 08:18:03sunのページでダウンロードできるJavaEEって、
(http://java.sun.com/javaee/index.jsp)
開発できるライブラリが入っているだけだよね?
SDKって書いてあるから、WASじゃないよね?
JBossはJavaEEに準拠したアプリケーションサーバってはわかるんだけど、
JBossの開発にJavaEEのSDKを入れたなんてことないので、もう私には訳がわかりません。
0574デフォルトの名無しさん
2006/11/09(木) 08:27:44JavaEE SDKも、JBossも、JavaEE仕様に準拠したソフトウェア。
JBossを使うのであればJavaEE SDKは要りません。
JavaEE SDKは、ライブラリだけじゃなく
アプリケーションサーバもDBも含んでいます。
実行・テストできる環境も含んだオールインワンパッケージです。
※ただし、JBossはJ2EE1.4仕様完全準拠であってJavaEE5仕様完全準拠ではない。
(J2EEからJavaEEに名前が変わった。)
0576デフォルトの名無しさん
2006/11/09(木) 11:03:44だから直列化失敗したんだろw
0577デフォルトの名無しさん
2006/11/09(木) 13:44:40実装の仕方はどうすればいいのか教えて下さい
0578デフォルトの名無しさん
2006/11/09(木) 14:49:15という答えはたぶん的外れだろうからもう一度何が聞きたいのか分かるように書き直してくれ。
0579デフォルトの名無しさん
2006/11/09(木) 15:18:16『指定された文字「のみ」で構成されているか』は
(例:abcと123だけで文字列が構成されているかどうか)、
for や while の入れ子で行うしかないのでしょうか。
0580デフォルトの名無しさん
2006/11/09(木) 15:25:53String#matches()
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#matches(java.lang.String)
0581デフォルトの名無しさん
2006/11/09(木) 15:35:10初期化だけしたStringBufferオブジェクトでtoString()メソッドを使うと
返ってくる文字列はなんですか?
nullだと思ってたのですがnullの判定に引っかからないので困ってます。
長さ見ると0なんですがorz
0582デフォルトの名無しさん
2006/11/09(木) 15:43:00つまり
StringBuffer sb = new StringBuffer();
String str = sb.toString();
を実行したときの str の値だね?
Stringクラスのオブジェクトそれ自体は存在し、str にはそれへの
参照が入るわけだから str == null にはなりません。ではどうなる
かというと ”” (空文字列)になる。
if (str.equals("")) { .... }
で判定できるはず。
0583デフォルトの名無しさん
2006/11/09(木) 15:46:28それでやってみます
レスありがとうございました
0584デフォルトの名無しさん
2006/11/09(木) 15:46:55アイデアないっすかね…
サンプルとか見つからなくて困ってます。
ご教授ください。
0585デフォルトの名無しさん
2006/11/09(木) 16:05:000586デフォルトの名無しさん
2006/11/09(木) 16:14:040587デフォルトの名無しさん
2006/11/09(木) 16:16:11リストボックスからファイルパスを選択? あんま見たこと無いUIだな。
状況が思い浮かばんのでよくわからんが、リストボックスなら選択されたものだけ拾えばOKだし
テキストフィールドなら、(スペースを削った状態で)入力されてるかどうかで判断すれば。
0588デフォルトの名無しさん
2006/11/09(木) 16:46:490589デフォルトの名無しさん
2006/11/09(木) 16:59:28# なんで配列だけlengthなのやら。
0590デフォルトの名無しさん
2006/11/09(木) 17:29:29Eclipseを使っていてアプレット作成したのですが
「Fatal exception occurred. Program will exit.」の
メッセージウィンドウが出て
コンソール部に
java.lang.NoSuchMethodError: main
Exception in thread "main"
と出て実行されません
コンパイルは通っているのにどうしてですか?
0591590
2006/11/09(木) 17:30:37import java.applet.Applet;
import java.awt.Graphics;
/*
<applet code="test" width=200 height=200>
</applet>
*/
public class test extends Applet {
public void paint(Graphics g) {
g.drawString("This is my first applet!", 20, 100);
}
}
0592デフォルトの名無しさん
2006/11/09(木) 17:45:12code="test.class" にしなくてもいいの?アプレット良く知らんけど。
0593590
2006/11/09(木) 17:53:47早速返答ありがとうござます!
変えてみましたが状況は変わりませんでした
0594デフォルトの名無しさん
2006/11/09(木) 17:57:06Eclipse 上から実行しようとしたんだろうか?
その場合、Applet として実行しないとダメだよ。
Application として実行しようとすると、
当然 main がないと怒られる。
0595デフォルトの名無しさん
2006/11/09(木) 18:02:45Eclipse 上から実行しました
前回Eclipseで実行したときはアプレットビューアで
表示されましたが出来なくなってしまいました
0596デフォルトの名無しさん
2006/11/09(木) 18:04:37それは荒らしが立てたスレでしょ
0597デフォルトの名無しさん
2006/11/09(木) 18:07:25引数に配列型をとるメソッドで
警告がでました。
配列そのものを引数でfinalに
しても配列の要素までfinalにできないので
どうしようか困っています。
Connections.unmodifialList()は配列型ではなくList型に
なってしまうため、もっといい方法はないかと模索中です。
Genericsを使えるわけでもなさそうなのですが、何か
いいほうほうがあるでしょうか?
0598592
2006/11/09(木) 18:10:15試しに同じのやってみたら、Eclipse上でもブラウザでも動いたよ。
あと、「.class」っていらないんだね。
ちなみに、Eclipseの場合は警告出た。プロパティないよって。
0599デフォルトの名無しさん
2006/11/09(木) 18:15:520600590
2006/11/09(木) 18:18:24何が違ったのだろ・・・
未だに解決されないorz
0601590
2006/11/09(木) 18:33:26ツールバーの実行ではなく、右クリックの実行で解決しました。
返答してくれた人や考えてくれた人ありがとうございます。
0602デフォルトの名無しさん
2006/11/09(木) 21:13:10http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28470
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28471
上がサーバー、下がクライアントのプログラムで、
3台のPCで1台でクライアント、他2台でサーバーA、Bを立ち上げ
クライアントからサーバーAにメッセージを送って、サーバーAがその受け取ったメッセージをサーバーBに送る
っていう風なプログラムにするにはどうしたらいいですか?
0603ぴゅあ
2006/11/09(木) 21:26:45要はテキスト(ファイル)ボックスから1個送るのをリストボックスに変えただけでしょ?
そのリストボックスにどうパスを設定しようとしてるのかは判らんけど。。。
でもブラウザ?からテキスト(ファイル)ボックスの代わりにリストボックスでどう処理するのかは・・・
JavaScriptで突っ込んでsubmitしてやれば送れるのかなぁ?
1個限定ならなんとなくやれたりするんじゃなかろうか?と思ったりもするけど。。。
(複数ファイルは(一括は無理と仮定して)ダミーのウィンドウを開きつつ
そっちでsubmitさせてみるとか?
その場合のセキュリティ上とかの制限とか…どうなるんだろ
できるんかな。。。)
>>568間違えてました。。。
1個目は>>563
0604デフォルトの名無しさん
2006/11/09(木) 21:47:23まずは、サーバとクライアントだけで通信してみて。
これができれはあとは簡単。
サーバAからサーバBにメッセージを送る場合は、
サーバAをクライアントとして機能させればOK。
0605ぴゅあ
2006/11/09(木) 22:28:01>>604の言ってるのそのままみたいなもんだけど
クライアント〜サーバーA間はたぶんできていると思うので
(ここは明確にクライアント(クライアント)〜サーバーA(サーバー)の関係でしょう)
サーバーA〜サーバーB間にコネクションを張っておいて(或いはクライアントから送られる度なのか)
receive(readObject)した後にサーバーBに向けてsend(writeObject)すれば
コネクション部分はクライアント〜サーバーA間でできているものをそのままサーバーA〜サーバーB間でやれば
サーバーA(クライアント)〜サーバーB(サーバー)とすると例としては自然かもだけど
サーバーA(サーバー)〜サーバーB(クライアント)というのも面白いかも
(サーバーAがセンタになって管理するとか@そこはうまく行った後の延長として)
0606デフォルトの名無しさん
2006/11/10(金) 00:03:24プログラムを作れって課題なのですが、ヒント一切無しでプログラムが苦手な
漏れには全く手が出ませんorz
何か参考になるようなHPでも紹介してもらえないでしょうか?
ぐぐってもCばっかでJAVAがないorz
おながいします
0607デフォルトの名無しさん
2006/11/10(金) 00:08:38文型なもので簡単といわれているCOBOLかCASL�Uにしようと思っているのですが、やはり実務で使えるCOBOLの方がいいのか?
それとも先のことを考え、需要の多いJavaにした方がいいのか・・・
みなさんのご意見お願いします。
0608デフォルトの名無しさん
2006/11/10(金) 00:11:11文系でもJavaで問題ない。
※文系なのに「文型」は無いだろうよ・・・
0609デフォルトの名無しさん
2006/11/10(金) 00:16:09Cが参考にあればJavaもできるだろ。
0610デフォルトの名無しさん
2006/11/10(金) 00:17:46機械語とデザインパターンの両方を知っておくといい。
0611デフォルトの名無しさん
2006/11/10(金) 01:03:25Cのソースがあるならもう半分以上出来たようなもんだと思うけど
CもJavaもよく分からないなら先ほどの宿題スレで依頼するのも手
ただしその場合は宿題スレの>>1のテンプレを使って依頼すること
0612デフォルトの名無しさん
2006/11/10(金) 01:36:29これはCにもJAVAにも通ずる基礎的プログラミング能力を与えてくれるであろう。
試験対策も行ない易くCやJAVAを選択するより合格率の上昇が見込まれる。
0613デフォルトの名無しさん
2006/11/10(金) 01:49:11もしかしてhttp://pc8.2ch.net/test/read.cgi/tech/1159572806/480のお兄ちゃん?
0614デフォルトの名無しさん
2006/11/10(金) 04:52:25JLayeredPane
JFrameでbの何も描かれていない部分はaを透過して表示する、という風にしたいのですが
やり方が上手くいきません。
extends JFrame{
JPanel a = new JPanel();
JLayeredPane layerPane = new JLayeredPane();
layerPane.add (a);
layerPane.add (b);
layerPane.setLayer (a,1);
layerPane.setLayer (b,2);
getContentPane ().add (layerPane);
}
このようにしてもウィンドウ内は真っ白で、
JPanel a,bに書かれているものが表示されません。
どうやれば良いでしょうか?
0615デフォルトの名無しさん
2006/11/10(金) 07:56:43まずJLayeredPaneを使わないで、JPanelに書いたものって表示される?
0616デフォルトの名無しさん
2006/11/10(金) 09:26:50とした場合、aに描かれているものは表示されます
0617デフォルトの名無しさん
2006/11/10(金) 09:42:07JPanel bがインスタンス化されていないのでは??
0618デフォルトの名無しさん
2006/11/10(金) 11:04:03複数(別バージョン)インストールしています。
この状態で、コマンドプロンプトで java -version を実行すると、
最後にインストールしたSDKのバージョンが表示されます。
ここで質問ですが、
以前は環境変数のpathにJAVAのbinを追加していたのですが、
今は、パスはどこに設定されているのでしょうか?
環境変数を確認しても設定されていませんでした。
0619デフォルトの名無しさん
2006/11/10(金) 11:23:02それを見てるんだろ。
0620614
2006/11/10(金) 11:31:16bだけではなく、aも表示されないんです。
JPanel a = new JPanel();
JPanel b = new JPanel();
JLayeredPane layerPane = new JLayeredPane();
layerPane.add (a);
layerPane.add (b);
layerPane.setLayer (a,1);
layerPane.setLayer (b,2);
getContentPane ().add (layerPane);
↑何も表示されない
↓チカチカとaとbが交互に表示される
JPanel a = new JPanel();
JPanel b = new JPanel();
getContentPane ().add (a);
getContentPane ().add (b);
やりたい事:
bの何も描かれていない部分にabw景として適覧pする。
=iフォトショッャvのレイヤーみbスいな感じで)
言いたい事が分かってくれるか不安orz
0621デフォルトの名無しさん
2006/11/10(金) 11:31:23JDKのWindowsインストーラは、java.exeをWindows\system32にコピーする。
java -version で実行されたのは、このディレクトリにあるjavaコマンドだろう。
java.exeがどこにあるか、ファイルシステム上を検索してみればわかる。
0622デフォルトの名無しさん
2006/11/10(金) 11:42:38>>621
確かにC:\WINDOWS\system32配下にありました。どうもです。
ただ、EXEはあるのですが、近くにDLLとかjarがいませんね。
どうなってるんだろう?
0623デフォルトの名無しさん
2006/11/10(金) 11:49:36確かレジストリを見れば、JRE をインストールしたディレクトリがわかるはずだから
それ使えば近くに dll も jar も無くても大丈夫。
0624デフォルトの名無しさん
2006/11/10(金) 12:10:53一度落ち着いてAPI ドキュメントを読め。
>指定されたコンポーネントのレイヤ属性を設定し、レイヤ内で一番下のコンポーネントとします。
>親に追加する前に呼び出す必要があります。
setLayer の意味を間違えてる上に、add してから呼び出してる。
まずは setLayer は使わないで
layerPane.add (a, 1);
layerPane.add (b, 2);
getContentPane ().add (layerPane);
したらどう?bが表示される?
その後で opaque について調べてみるとか。
0625618
2006/11/10(金) 12:33:33最近のjava.exeはレジストリを見ているのですね。
ちなみに、何か問題出そうだなと思い、
5.0 Update 8と5.0 Update 9を入れてから、
5.0 Update 9を削除したところ、
system32配下のjava.exeもちゃんとUpdate 8のものに置き換わりました。
よくできてますな〜。
0626デフォルトの名無しさん
2006/11/10(金) 14:31:57execute/executeQuery/executeUpdate って使い分けた方がいい?
0627デフォルトの名無しさん
2006/11/10(金) 19:24:18executeは今まで使ったことがない。。。
どうやったら複数のResultSetを返すSQLを書けるんだろう。
0628デフォルトの名無しさん
2006/11/10(金) 22:29:410629デフォルトの名無しさん
2006/11/10(金) 23:14:27されるよ。
0630デフォルトの名無しさん
2006/11/10(金) 23:23:53ありがとう。AtomicIntegerとか知って心配になってた所でした。
てかnullに参照を渡すってくだりはよくよく考えたらおかしいねw
0631ぴゅあ
2006/11/10(金) 23:30:57きちんと確認はしてないけど
なんちゃらPaneってたぶんレイアウトマネージャを持ってたりするんじゃないのかな?
確認してみるのがよいような気もする
それとJPanelにサイズとか設定してやらなくてもいいんだろうか
(使っているレイアウトによるだろうと思う)
例えば"テキストをちゃんと設定した"JLabelで簡単に試してみとくとか?
>>626
確かあちしはexecuteくらいしか使ったことなかったと思うけど…
使い分けるかどうかは好みだったりもするのかも?
(あまり真面目に見て使ってなかったので・・・(汗))
0632デフォルトの名無しさん
2006/11/10(金) 23:49:06UNICODEではだめなんです
0633デフォルトの名無しさん
2006/11/11(土) 00:10:08String.valueOf('あ').getBytes("Shift_JIS")
0634デフォルトの名無しさん
2006/11/11(土) 00:14:020635デフォルトの名無しさん
2006/11/11(土) 00:22:37防御的にコピーを行う
setterではclone()して保持、getterではclone()して返却
アトミック型や不変オブジェクトならclone()でいいけど、
可変オブジェクトなら深くコピーしなきゃならないかもしれない
Findbugsはそこまで神経質じゃないし、
Collections#unmodifiableList()でもそのへん事情は同じだから、そこは用途に応じて
詳しくはEffective Javaあたり
0636デフォルトの名無しさん
2006/11/11(土) 00:24:480638519
2006/11/11(土) 14:36:27書いてくれた人本当にありがとうね。
俺これ参考にどんどんプログラム作っていけるわ。
まじ感謝しまくっている!!
0639デフォルトの名無しさん
2006/11/11(土) 23:47:09例えば、MyClass型があるとして、
MyClass a = new MyClass();
MyClass b = a;
MyClass c = a;
とやった場合、MyClassのインスタンス一つ分のメモリと
宣言した三つ分の参照型のメモリが確保されると思うのですが、
具体的に何バイト分確保されるか教えてください
0640デフォルトの名無しさん
2006/11/12(日) 01:11:01それなりに使えるようになりたいのですが、Java特有の機能やC#との大きな違いなどを教えてください
0641デフォルトの名無しさん
2006/11/12(日) 01:23:09Javaの何に興味を持ったの?
0642デフォルトの名無しさん
2006/11/12(日) 01:24:16VMの実装次第
0643デフォルトの名無しさん
2006/11/12(日) 02:08:58ありがと
あと、Hashtable使って
//略
MyClass a = hashtable.get(key);
a.setX(4);
みたいな場合、hashtableのgetで取ってきた中身も変わりますか?
0644デフォルトの名無しさん
2006/11/12(日) 02:39:35試せばいいけど・・・
MyClass a = hashtable.get(key);
a.setX(4);
MyClass b = hashtable.get(key);
をして取ってきたbは、aと同じインスタンスを指す。
a==b は真だ。
0645640
2006/11/12(日) 09:33:21私は高二なのですが、行きたい大学全てがC++とJavaを採用していました
さらに「Javaはネットワークに強い」という話も聞きますので、どうせなら早く習得しておきたいと思ったんです
0646デフォルトの名無しさん
2006/11/12(日) 12:12:39言語レベルでサポートされているかどうかが違う。
C++なら環境ごとにネットワークプログラミングの方法は異なる。
0647デフォルトの名無しさん
2006/11/12(日) 13:15:29あらゆるものがネットワークに強いとか対応してるとかって宣伝してる。
0648640
2006/11/12(日) 13:28:02「Javaはマルチプラットフォームに対応するため、コンパイル時に中間言語を生成する」などの有名な情報は知っています
実際にEclipseを使って乱数やGUIを勉強しているうちに「C#よりも不便だ」と感じるとともに、「大学が採用する理由」もわかってきました
.NETのように至れり尽くせりな環境だと概形しか学べませんよね
改めてJavaを勉強したくなりました
私が教えていただきたいのは
・名前空間は無いがパッケージがある
・usingではなくimportを使用する
・ストリームでObjectを扱えるようになった
・マルチスレッドの生成
C#:Threadクラスのインスタンス生成、ThreadPoolへの追加etc..
Java:Threadクラスの継承、Runnableの実装
などのプログラミングに直接関わることです
上記は自分で調べました
時間を掛けてやっていきたいのですが、部活と資格の勉強で忙しいのです;;
私が前述したようなレベルのもので構いませんので、よろしければ教えてください
0649デフォルトの名無しさん
2006/11/12(日) 13:30:54それなりに使えるネットワーク関連のライブラリ(TCP/IPとかRMIとか)が標準でそろってたのと、
サンドボックスモデルで一応のセキュリティを提供していたのが、当初のアドバンテージだったけど、
今じゃ特別のことでもないような。.Netにも相応の機能はあるし。
C#分かるのなら、Java始めてもあまり困らないよ。
言語仕様的には、delegateとpartial classのないC#と思っていればいい。
ただ、ライブラリの構成が結構違う。特にGUIとWebアプリ関連はまるで違うので、そこは覚え直しになる。
また、Javaには.NetのVS.Netみたいな標準のIDEという物がないので、
Windows.FormsやASP.NET用のビジュアル開発環境に慣れていると取っつきづらいかもしれない。
一応、NetBeansやEclipse Visual Editorとか各種IDE付属の機能としてはあるけど、
VS.NETと比べたら貧弱さは否めない。
0650デフォルトの名無しさん
2006/11/12(日) 13:39:08・usingではなくimport
これはsyntaxが違うだけで、意味は同じ。
・ストリームでオブジェクトが扱える
.Netでも扱えなかったっけ?JavaならObjectInputStreamとか使うけど。
・マルチスレッド
悪いが、スレッドの話全体をここで聞くのは無理がある。
基本はこうかな。
Thread thread = new Thread(new Runnable(){
public void run(){
// スレッドで行う処理
}
});
これ以上の同期とかロックとかの話は、本を読んだ方が早いしわかりやすい。
変に荒れたり当てずっぽうの回答に悩まされたりしなくていいし。
0651ぴゅあ
2006/11/12(日) 13:43:20C#ってやったことがないので比較の仕様がないけど
(VC++の延長?VJ++??みたいな?)
たぶん挙げても沢山ありすぎて…とかだろうと思うし
やってみて感じるのが一番と思うけど。。。
(挙げてもらったとしてもC#に対しても現状何処まで解っているかとかもあるんだろうし)
たぶん大きな違いとしてC#はWinに特化したもの(?)というところとかから
C#に対してWin環境に対して細やかなことができないから不便だ
とかいうことになって
Javaダメダメやんとかいうことになったりすることもあるのかもだけど
C#をシッカリ習得してきていると思えるのなら
サクッと書籍の触りの部分でも読んでみれば判るんではないかと
人に聞くよりいいような気がする
(批判とかとして聞きたいなら別だろうけど)
0652640
2006/11/12(日) 13:47:58詳しい解答ありがとうございます
>Windows.FormsやASP.NET用のビジュアル開発環境に慣れていると取っつきづらいかもしれない。
まさにそうでした
イベント処理をさらに深く理解するいい機会とでも思いますw
>>650
>・ストリームでオブジェクトが扱える
>.Netでも扱えなかったっけ?
できますが、インタフェース実装などの手間が多いんです;
ここでスレッドに関する全てを聞こうとは思っていません
私が教えていただきたいのは「こういう違いがあるよ」という足がかりです
それさえ示していただければ、後は自分で掘り下げていきます
0653ぴゅあ
2006/11/12(日) 13:49:00>時間を掛けてやっていきたいのですが、部活と資格の勉強で忙しいのです;;
そこをなんとかすることじゃないのかな?
そんなこと言ってるようじゃ
何時になっても変わらないんじゃないんでしょうか
大学行っても忙しい,時間がないとか
仕事としてもやることを考えているのかどうか知らんけど
更に忙しい,時間がないとかいうことになっていそうに思えるけど
あと、忙しい,時間がないに加えて「短期に習得」とかの意識はあったりしないですか?
0654640
2006/11/12(日) 13:58:24C#については半年間使っていました
自分ではほぼ全ての基本事項を押さえたつもりです
さらにJavaの性格上、Win上での多少の不便は心得ています
>批判とかとして聞きたいなら別だろうけど
批評のようにはなるかもしれませんが、一方的な批判をするつもりはありません
>あと、忙しい,時間がないに加えて「短期に習得」とかの意識はあったりしないですか?
大学で履修予定ですので、それまでに基本を勉強したいんです
部活は3年の引退までやるつもりですが、資格についてはJavaに時間を割けます
0655デフォルトの名無しさん
2006/11/12(日) 14:09:290656デフォルトの名無しさん
2006/11/12(日) 14:15:27649氏と一部かぶるが
・delegate がない。
・プロパティがない。
・protected のスコープがパッケージまで及ぶ。
・チェック例外とチェックしない例外がある。
・struct 相当のユーザー定義型はない
・ref/out に値する引数の渡し方はない。
・switch の case 式に String を使えない。
・属性(attribute)に似た注釈(annotation)がある。
など。細かい違いは多数あるが、C/C++ ほど違うわけじゃない。
後発だけあって C# の方が言語構文は優れてると言う意見が支配的。
(プロパティとdelegate、ref/out が特に素晴らしいと個人的に感じる。)
画面作ることに関しては VS.NET より Eclipse+VE の方が好き。
動作がとてつもなく遅いがリファクタリングの正確さや
ファイル配置・変数配置の自由度が上だと感じる。
これはもう個人の感想だけど。
0657デフォルトの名無しさん
2006/11/12(日) 14:16:57時間がないなら流し読みの技術身につけた方が良いよ。
あと部活がどうとか、誰も聞いてないこと書く必要ないから。
(読む側の時間も考えてくれよ。)
0658640
2006/11/12(日) 14:38:20まさに私が知りたかったことです!
後は掘り下げていくうちに数珠繋ぎでわかっていくかと思いますので、自分でやっていきます
ありがとうございました
>>657
忙しい理由も添えないと、ただの「怠慢」に取られそうでしたので。。
無理に読ませようとは思ってませんので、煩雑に感じたなら無視してください
迷惑掛けてるようなので去ります
ありがとうございました
0659デフォルトの名無しさん
2006/11/12(日) 14:42:30迷惑ってほどでもないので、またつまったら来るヨロシ。
ID出てないから証明しようがないけど、
656,657 は同一人物(俺)による発言だよ。
0660デフォルトの名無しさん
2006/11/12(日) 14:52:350661デフォルトの名無しさん
2006/11/12(日) 15:10:45dataset.addValue(0.2, "売上高", "2001年");
dataset.addValue(2.2, "売上高", "2002年");
dataset.addValue(5.1, "売上高", "2003年");
dataset.addValue(9.8, "売上高", "2004年");
dataset.addValue(12.0, "売上高", "2005年");
JFreeChartのデータの部分をcsvファイルから追加したいのですがどのようにしたらできますか?
csvファイルの中身は下記の通りです。
0.2,売上高,2001年
2.2,売上高,2002年
5.1,売上高,2003年
9.8,売上高,2004年
12.0,売上高,2005年
0662デフォルトの名無しさん
2006/11/12(日) 15:52:24C# ≒(Java + C++)/2
みたいなもんだと俺は思ってる
0663デフォルトの名無しさん
2006/11/12(日) 15:54:37> 後発だけあって C# の方が言語構文は優れてると言う意見が支配的。
> (プロパティとdelegate、ref/out が特に素晴らしいと個人的に感じる。)
俺としては、それも素晴らしいとはとても思えなかった。
アノテーションより先に属性を導入した点だけはC#にアドバンテージが
あったと見えたけど、それ以外は大したことがないというか
0664デフォルトの名無しさん
2006/11/12(日) 16:05:55と、Java基地外が悔しさ紛れにつぶやいております。
0665デフォルトの名無しさん
2006/11/12(日) 18:45:51一部かじっただけでは批評ではなく第一印象。
0666デフォルトの名無しさん
2006/11/12(日) 21:52:27>>472を作り方かヒントだけでも、お願いしますorz
いろんなサイト見たけど、分かりません、、、
0667デフォルトの名無しさん
2006/11/12(日) 22:24:53http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28471 サーバー
ソケット通信のプログラムなんですが、2台のPCでサーバーを構築してサーバーからサーバーへのメッセージを転送するには
どうしたらいいんでしょうか。クライアントのconnectToServer();の記述を加えたりしてみたんですができなかったので・・・
0668デフォルトの名無しさん
2006/11/12(日) 22:24:560669デフォルトの名無しさん
2006/11/12(日) 22:39:30| |
スペースキーをずっと押していると文字がフィールド内に収まらず隠れてしまうのですが
何かいい方法があれば教えてください。
0670ぴゅあ
2006/11/12(日) 23:31:56>できなかったので・・・
やったのなら、どうできなかったかというものがあったりする筈ですが。。。
(それは書かれてないので置いといて)
「2台のPCでサーバーを構築してサーバーからサーバーへのメッセージを転送する」の前に
まずその既にあるクライアント,サーバーのソースコードがよく理解できていないことが
現れているようにも思えます
0671ぴゅあ
2006/11/12(日) 23:36:49>JTextField で文字制限はプログラムで書けばできるのですが、
>スペースキーをずっと押していると文字がフィールド内に収まらず隠れてしまう
まず
・フィールドの幅を広げれば済むことなのか
・フィールドに文字数制限を掛けることができていないのか
或いはその他の問題なんでしょうか?
0672デフォルトの名無しさん
2006/11/13(月) 00:46:43「requestFocusInWindow」
これどのような処理だかわからないです
0673デフォルトの名無しさん
2006/11/13(月) 01:52:11またお前Javaスレを荒らし始める例のAA厨かよ
0674デフォルトの名無しさん
2006/11/13(月) 06:09:18int aの中身が1,3,5,7,8,10,12の場合の処理が同じ。
4,6,9,11の場合の処理が同じ。
2だけ違う処理。
という構文を書く場合if文ではif(a == 1 || ...)と書くのは大変です。
しかしswitchで書く場合は処理をその都度書く必要があるので大変です。
12通りは必要になります。
処理は各々のメソッドに入れるものとして構文自体をもっと簡単に書く方法はありませんか?
勉強不足ですみません。
よろしくお願いします。
0675デフォルトの名無しさん
2006/11/13(月) 06:49:31switchのbreak削ったらいいじゃね?
0676デフォルトの名無しさん
2006/11/13(月) 06:57:55わかりにくい分ですみません。
例えばswitch文に例えるなら
switch(a) {
case 1 : System.out.println(); break;
case 2 : System.out.print(); break;
case 3 : hoge(); break;
}
ではなく
switch(a) {
case 1, 3, 5, 7, 8, 10, 12 : System.out.print(); break;
case 4, 6, 9, 11 : System.out.println(); break;
}
の様に同じ処理をする変数の場合まとめて書くことができないのか?
できるだけ短く記述できないでしょうか?という事です。
0677デフォルトの名無しさん
2006/11/13(月) 07:01:44標準入力を使いint xの場合1 < x <100の間以外の数字を入力された
場合例外を吐き出す、または再度入力を促す様にしたいです。
よろしければご教授ください。
0678675
2006/11/13(月) 07:12:56これじゃだめなのかな?
switch(a)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
//処理(1)
break;
case 4:
case 6:
case 9:
case 11:
//処理(2)
break;
case 2:
//処理(3)
break;
}
0679デフォルトの名無しさん
2006/11/13(月) 07:15:54throw
0680ぴゅあ
2006/11/13(月) 07:39:31if構文の使い方が解らない?
だとすれば基本的な部分を学び直すということになると思うけど
>例外を吐き出す
は>>679の言うthrowの使い方を知ることだろうけど
>再度入力を促す様にしたい
do〜whileループ(使いそうなときは稀なので怪しいけど…確かJavaでもあった筈?)の使い方とか
これも基本的な部分になると思うけど
サンプルを示して解説されているようなもので理解してみるのがいいかも
ってところなのかな?
0681デフォルトの名無しさん
2006/11/13(月) 10:21:47Exceptionの使い分けがよくわからなくて…。
>>680
できれば
try {
BufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("数値を入力してください");
int a = Integer.parseInt(input.readLine());
} catch(Exception e) { //ここが怪しいです
System.out.println("範囲外の数値が入力されました");
}
の様に使いたいです。
int a = Integer.parseInt(input.readLine());
if(1 < a && a < 100) {
System.out.println("範囲外の数値が入力されました");
}
とするべきでしょうかね?
良くないのは知っていますがgoto構文などが使えれば凄く楽になると思っています。
0682676
2006/11/13(月) 10:32:09すみません意味を理解できていませんでした。
わざわざどうもありがとうございます。
アルゴリズムの習得?というか練習の為パッケージを使用せずにカレンダーを
作ろうとしてるんですけど曜日の概念だけがとても難しいですね。
現時点ではまだ入力された月を表示する位のつもりですけどそれでも曜日が難しいです。
また詰まったら質問しに来ると思うのでその時はよろしくお願いします。
0683デフォルトの名無しさん
2006/11/13(月) 12:07:38それだけのこと。
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
System.out.println("大の月");
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
System.out.println("29日");
} else {
System.out.println("28日");
}
case 4: case 6: case 9: case 11:
System.out.println("小の月");
default:
System.out.println("ぶっちゃけありえなーい");
}
曜日はツェラーの公式を検索してきて使えばよろし。
(難しい式でもないし)
0684デフォルトの名無しさん
2006/11/13(月) 13:17:480685デフォルトの名無しさん
2006/11/13(月) 13:52:02状況から考えるに例外で処理するより、普通のエラー処理の方が分かりやすくない?
入力検証通した後なら assert で値チェックしたり、実行時例外投げるのもありだけど。
while(true){
// 入力待ち
// 入力検証
if( 入力エラー ){
// エラーメッセージ(再度入力しろとかなんとか)
}
// 入力問題なし
break;
}
0686デフォルトの名無しさん
2006/11/13(月) 13:52:510687デフォルトの名無しさん
2006/11/13(月) 15:12:29Java2DとSwingに関連する内容なのですが、
JPanalを継承したクラスを、JTabbedPaneにaddして、そのクラスのpaintメソッドで
Java2Dの描画を行っています。
そこで、
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
AffineTransform af = new AffineTransform();
g2.setTransform(af);
以下描画...
}
とすると、ウィンドウサイズを変更したり、再描画させたりした時に描画するものの位置がずれます。
具体的にいうと、jTabbedPaneのタブの大きさだけ描画した物が上に移動します。
原因を調べてみると、どうもAffineTransformオブジェクトをGraphics2Dに登録すると、
座標計算の基準点がタブに登録したJPanel派生クラスの領域の左上ではなく、
jTabbedPaneの領域(タブ表示域も含んだ)の左上に、再描画の時に変更になってしまうようなのです。
これはJavaランタイムのバグなのでしょうか。ちなみにJavaのバージョンは1.5.0_08です。
0688デフォルトの名無しさん
2006/11/13(月) 15:14:59import java.util.Scanner;
public class test2 {
public static void main(String args[]) {
try {
int i = 0;
String[] words = null;
// ファイルを指定し開く。
Scanner f = new Scanner(new File("データ.dat"));
// ファイルから1行分入力しコンソールへ出力。
while( f.hasNextLine() ) {
String s = f.nextLine();
words[i] = s;
++i;
}
while( i < words.length ) {
System.out.println(words[i]);
++i;
}
} catch( Exception e ) {
System.out.println("エラー");
}
}
}
ファイルは存在しますが
うまく動作せずに例外処理になってしまいます。
どうすればいいか教えてください。
0689デフォルトの名無しさん
2006/11/13(月) 15:48:40ファイルを直でリンクさせてダウンロードさせると
ユーザの環境によっては画像やtxtファイルなどは展開されてしまうので
拡張子にかかわらずファイルの保存を表示させたいのですが
良い方法はありますでしょうか
0690デフォルトの名無しさん
2006/11/13(月) 20:11:56private String toColor(String s){
z = s.replaceAll("green", "緑");
z = s.replaceAll("red", "赤");
z = s.replaceAll("blue", "青");
z = s.replaceAll("yellow", "黄色);
return(z);
}
として、入力された文字に対して置換を行うプログラムを作っています。
実行は出来たのですが、何故か一番下の置換プログラム(yellow→黄色の行)しか処理せず、
緑〜青はそのまま英文で出て来てしまいます。
このほかに必要なプログラムがあるのでしょうか?どうぞ、宜しくお願いします。
0691デフォルトの名無しさん
2006/11/13(月) 20:27:11z = z.replaceAll("red", "赤");
z = z.replaceAll("blue", "青");
z = z.replaceAll("yellow", "黄色);
えーっと、変換した文字列は次の処理へ渡さないとダメですよ。
zが毎回、不変のsから生成されてます
0692デフォルトの名無しさん
2006/11/13(月) 20:28:36zってのをどこで宣言してるのがわからんが、それを使いたいのなら
z = s.replaceAll("green", "緑");
z = z.replaceAll("red", "赤");
z = z.replaceAll("blue", "青");
z = z.replaceAll("yellow", "黄色);
return(z);
以上。
0693デフォルトの名無しさん
2006/11/13(月) 20:34:41勝手に省略せずにエラーを書け。
words が確保されてなくて NullPointerException?
十分なサイズを確保するか、もしくは配列やめてリストにするとか。
0694デフォルトの名無しさん
2006/11/13(月) 20:37:13Java とは一切関係ない。
Web制作板で聞いた方が適切。
0695デフォルトの名無しさん
2006/11/13(月) 20:45:18ご回答ありがとうございます。
sを使用するのは1行目だけで、2行目からはzを使用するんだったんですね。
プログラムが動くと共に理解できてよかったです。丁寧なご回答ありがとうございました。
ネットで探しても置換プログラムがどこも1行だけだったので、思い切ってこちらで聞いてよかったです。
0696デフォルトの名無しさん
2006/11/13(月) 21:23:38> サーブレットでアップローダーの作成をしているのですが
> ファイルを直でリンクさせてダウンロードさせると
> ユーザの環境によっては画像やtxtファイルなどは展開されてしまうので
> 拡張子にかかわらずファイルの保存を表示させたいのですが
> 良い方法はありますでしょうか
Jakarta Commons FileUploadを使うことを
お勧めする。非常に簡単にアップローダを作ることができるぞ
0697デフォルトの名無しさん
2006/11/13(月) 21:24:04いや、そうでもないな。
Commons FileUploadを使えばいい
とだけはいっておくべき
0698デフォルトの名無しさん
2006/11/13(月) 21:37:48それはそれとして他に知っとくべきことが多すぎない?
0699デフォルトの名無しさん
2006/11/13(月) 22:20:04初心者質問ですいません
0700デフォルトの名無しさん
2006/11/13(月) 22:29:03で、player.play()・player.stop()は効いているようなのですが、
player.close()ができていないようなのです。
そんな状態になっている方いませんでしょうか?
そして解決方法があれば教えていただきたいのですが。
0701デフォルトの名無しさん
2006/11/13(月) 22:30:29連投すいません。
0702519
2006/11/13(月) 23:05:57ボタンを配置して、そのボタンをクリックしたら別のwindowが
出るようなプログラムをつくりたいんです。
前のwindowを残して新しいwindowが出るようなプログラムって
できるんですか?
0703デフォルトの名無しさん
2006/11/13(月) 23:11:520704デフォルトの名無しさん
2006/11/13(月) 23:15:48Listオブジェクトとやりとりしたいのですが、(羅列するのが大変なので)
for文の中で「"getCode" + i」みたいなことをやって、その文字列のメソッドを
呼び出す方法はないでしょうか?
0705デフォルトの名無しさん
2006/11/13(月) 23:18:45リフレクションを使えば可能。でも
getCode(int index)
でいいじゃん。
その前に、COBOLっぽいいやな臭いがプンプンするぞ。
0706ぴゅあ
2006/11/13(月) 23:21:32細かいところは置いといて(後でちゃんと見るのでしょうし)
入力誤りをエラーとして扱うか(if文で見てメッセージ出すとか)
例外として扱うかとかの選択は作る上での好みの選択だろうとして
前半は前半で色々と例外を出すだろうからcatchすることにもなるでしょうけど
(Integer#parseInt()に渡されたものが数字以外とかIntegerの範囲を越えてるとかで例外)
それはそれで取り敢えずは端折っておいてもよいかもですけど
後半のコードは"1 < x <100の間"の条件を見るために
その2つのコードを一緒にしたものとかいうのでいいんじゃないかと
ここ(後半)の
>System.out.println("範囲外の数値が入力されました");
を"throw new なんちゃら;"とかしてもいいでしょうけど
(例外にしたいということならそうなったりするでしょうけど)
要は入力が範囲内であるかどうか(入力エラー)が判って適切な処理ができればいいので
後半のコードのままを使った方がいいんじゃないかと
(throwしてしまうと今度はそれをcatchして…とか余計なコードも出てくるでしょう)
>System.out.println("範囲外の数値が入力されました");
の後に再入力として戻ったりしたいということですから(正常に処理した場合も?)
頭に戻るというコードをちゃんと書いておけば
そこんところは>>685-686で挙げてくれているので大丈夫だと思う
・・・か、もうできちゃってるか
0707ぴゅあ
2006/11/13(月) 23:23:170708デフォルトの名無しさん
2006/11/13(月) 23:27:17ただのWebアプリからWin32APIにアクセスできますか?
(^_^;
0709688
2006/11/13(月) 23:35:44import java.util.Scanner;
public class test2 {
public static void main(String args[]) {
int i = 0;
String[] words = null;
try {
// ファイルを指定し開く。
Scanner f = new Scanner(new File("データ.dat"));
// ファイルから1行分入力しコンソールへ出力。
while( f.hasNextLine() ) {
words[i] = f.nextLine();
++i;
}
i = 0;
while( i < words.length ) {
System.out.println(words[i]);
++i;
}
} catch( Exception e ) { }
}
}
2度目ですみません
tryの何処かでエラーが起こるみたいなのですが
解らないので教えてください。
言うまでも無いと思いますが
例外処理になるためコンソール画面には何も表示されません。
0710ぴゅあ
2006/11/13(月) 23:41:43>ツェラーの公式
そんなのあったのね
基準日設けて日数算出してました
ミニコンで遊ばせてもらってたときに
たぶん初めて実機上で作ったプログラム
0711デフォルトの名無しさん
2006/11/13(月) 23:41:45取得したいのですが、うまくいきません。
POST指定して、outputStream()メソッドを使ってるのですが
ログイン前のソースしか取得できません。
肝心なメソッド名等あれば教えて頂きたいのですが?
0712704
2006/11/13(月) 23:42:28setter/getter(他の開発チームの担当)はこちらでは変更できないので、
リフレクションでやってみます。ありがとうございました。
0713ぴゅあ
2006/11/13(月) 23:57:25>言うまでも無いと思いますが
言うまでもないわけでもなく
catchして何もしていないからでは?
スタックトレースくらい採れるんじゃないかと思うけど。。。
(その前にSystem.out.printlnを鏤めるとかだって…)
エラーが判らないというより
エラーの扱い方が解らないということかも?
0714709
2006/11/14(火) 00:12:39ありがとうございます。スタックトレースは知らなかったです。
知れ見たところ下記のエラーが出ました
java.lang.NullPointerException
at test2.main(test2.java:14)
0715デフォルトの名無しさん
2006/11/14(火) 00:20:45そのまんまだな
0716ぴゅあ
2006/11/14(火) 00:21:25コードの方は全然見てなかったけど…
エラーの内容が判れば後は追えますよね?(なんとなくでも)
あとは>>693が言ってくれていることを(も)参考にするとよいと思う
0717デフォルトの名無しさん
2006/11/14(火) 00:30:48誘導おながします。
0718709
2006/11/14(火) 00:31:150719デフォルトの名無しさん
2006/11/14(火) 00:48:380720デフォルトの名無しさん
2006/11/14(火) 01:03:51もうあの頃の時代は戻ってきません。
残念でしたうきょきょきょ
ざまーみろSUNシネw
0721名無し
2006/11/14(火) 01:12:01ArrayList alist = new ArrayList();
Hashtable<Integer,ArrayList> ht3 = new Hashtable<Integer,ArrayList>();
for(int i = 0; i < alist.size(); i++)
{
ht3_.put(i,alist.get(i));
}
※alistには値は入っています。
このように、HashtableにArrayListを追加していきたいのですが、
ht3_.put(i,alist.get(i));では当然ながら
<Integer,ArrayList>で宣言しているのに、<Integer,Object>となってしまい
エラーがでます。Hashtable<Integer,ArrayList>の部分は変えず、
ArrayListを壊さないでHashtableに格納できないでしょうか。
質問が分かりにくかったら申し訳ありません。
0722デフォルトの名無しさん
2006/11/14(火) 01:16:25JAVAは終わった言語だもう聞くなw
0723デフォルトの名無しさん
2006/11/14(火) 01:25:49MSはいつまで基地害を生産しつづけるんだろう
0724デフォルトの名無しさん
2006/11/14(火) 01:26:57SUNはいつまで基地害を生産し続けるんだろう
0725デフォルトの名無しさん
2006/11/14(火) 01:36:220726デフォルトの名無しさん
2006/11/14(火) 01:36:55もう聞くなよw
0727ぴゅあ
2006/11/14(火) 01:46:18できないですね
取り敢えずあちしが書いたものだけど>>31とか
ArrayListとかはオブジェクトでないと扱えないですけど
やってみたいと思うなら参考にしてint用とか書いてみるとか
(その前にクラスにするまでもなく試しにコードにしてみるとか)
>>721
alist.get(i)で取り出しているんだから
最早ArrayListではないですよ
0728デフォルトの名無しさん
2006/11/14(火) 10:49:09サーバ側の処理でJNIを使えば可能。
>>725
3.0ではSUNの実装はない。2.0の時はあった。
ttp://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg
場所からしてサポートする気ゼロっぽい。
(仮想マシンでもかまわんから)Linuxマシン用意した方が楽かも知れん。
0729デフォルトの名無しさん
2006/11/14(火) 12:07:44残念でした。
もうSunはJavaに対する影響力が非常に弱まっています。
M$製品にすがりついて哀れな戯言を言う人たちは
そのあたりをまったくわかっていないようですね。
0730デフォルトの名無しさん
2006/11/14(火) 12:47:29IE上で動いているJavaアプレットをダウンロードしたいのです。
WEB上で公開されているJavaをパワーポイント等に貼り付けて
プレゼンとかに使いたいなーと思ってるんですけど、何かよい方法がある
のなら教えてもらえないでしょうか。
お願いします(ノ_≦)
0731デフォルトの名無しさん
2006/11/14(火) 13:08:34ただ、動作するには他のファイルやネットワーク上のリソースに依存してる可能性もあるから、
そのアプレットをローカル保存して動くかどうかはわからん。
パワポにアプレット貼り付けて動いたっけか? パワポでIEコンポーネントが使えるなら、HTMLに
アプレットを呼ぶように書いておけば動くかも。
標準のライブラリで一発でできるのありますか?
0733デフォルトの名無しさん
2006/11/14(火) 13:38:47標準にはないけど、Jakarta Commons IOにこういうものがある。
ttp://jakarta.apache.org/commons/io/api-release/org/apache/commons/io/FileUtils.html#copyDirectory(java.io.File, java.io.File)
0734デフォルトの名無しさん
2006/11/14(火) 13:47:50ありがとうございます。
一応教えてもらったとおりソースからアプレット(.classの拡張子でした)をダウンロードしたつもりです。
しかし、おっしゃるように.classのそのファイルを実行することができません。
.classのファイルがアプレットの本体を意味しているのかどうかもわかりませんが、
このような状況ではやはりローカルな環境で動かすことは難しいのでしょうか?
0735デフォルトの名無しさん
2006/11/14(火) 14:01:59たぶんその*.classがアプレット本体だよ。
実行するにはHTML書いて(もしくは拾った先からコピって)アプレット呼び出せばOK。 ダブクリでは不可。
実行できても何かしらエラーが出るんなら、他に必要なモノがある可能性が高い。
どうもありがとうごさいます。その他にもいろいろ楽できそうなライブラリですね。
0737デフォルトの名無しさん
2006/11/14(火) 15:46:14ArrayList<ArrayList> alist = new ArrayList<ArrayList>();
0738デフォルトの名無しさん
2006/11/14(火) 16:14:25ライセンスに留意しておくべきだよ。
プレゼンで使うのなら引用の範疇におさまるとは思うけど。
0740教えてちゃん
2006/11/14(火) 19:35:22Runtime rt = Runtime.getRuntime();
Process p = rt.exec("cat C:\\usr\\local\\aa.txt");
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((result = br.readLine()) != null){
tx1.setText(result);
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
みたいな感じでcat C:\\usr\\local\\aa.txtを実行してその結果をresultに
格納されていくじゃないですか?で、例えばaa.txtには以下のような
中身だったとするじゃないですか?
hoge
hoge2
hoge3
hoge4 hoge5
hoge6 hoge7 hoge8
とかってときに、で
JTextField tx = new JTextField();
tx.setText(result);
ってすると最後の一行hoge6 hoge7 hoge8しか表示されないんですよ。
ちゃん全部表示するようにするにはどうすればいいのですか?
別にテキストじゃなくてもラベルでもなんでも全部表示できればOKっす!
swingで全部表示したいです
0741デフォルトの名無しさん
2006/11/14(火) 20:35:03JTextFieldのかわりにJTextAreaを使ってappendメソッドで文字列を追加する。
0742ぴゅあ
2006/11/14(火) 20:36:30>Runtime rt = Runtime.getRuntime();
>Process p = rt.exec("cat C:\\usr\\local\\aa.txt");
普通にテキストファイルとしてopenしないのはなんでだろ?と思ったけど
なんか理由があるんでしょう
>while ((result = br.readLine()) != null){
>tx1.setText(result);
>}
まずこれがどういう動きをしているか調べてみること
>>730
アプレット単体で動くものなら(PowerPointで…は判らないけど)動かすことはできるだろうけど
サーバーと通信してたりする作りだとかなり?難があるかも
それより
プレゼンとか…というのがどんなのか判らないけど
所有者側だけでなく"プレゼンする側の立場"としても
使っていいかどうかというのもあるだろうし
>ライセンスに留意しておくべきだよ。
>プレゼンで使うのなら引用の範疇におさまるとは思うけど。
は話の限りではあり得ないようなものの気がしたりする。。。
0744デフォルトの名無しさん
2006/11/14(火) 22:26:251.CSVの読み書きするのって、いまだにhttp://www.wakhok.ac.jp/~tomoharu/Java/csv/が現役なんでしょうか?
Jakarta Common CSVってのがあるらしいですが、未だ正式リリースには至っていないようです
2.JDBC使ってCSVからテーブルにインポートするユーティリティってありませんかね?
・テーブル名は手で指定
・getMetaData使ってカラムの名前とデータ型を取得
・カラムの数だけ?を並べたPreparedStatementを用意しておく
・CSVの一行目をカラム名として、対応するデータ型でParseXXXしたあとsetXXX。
・例外でたら全部読み飛ばし。カラム数が合わなかったら即終了。あとは野となれ山となれ(笑
絶対誰かが考えていそうなんですが(^^;、ググっても見つかりませんでした。
何か御存知の方がいらっしゃれば御教授いただければ幸いです。
0745デフォルトの名無しさん
2006/11/14(火) 22:49:21どなたか教えていただけませんか?
import com.nttdocomo.ui.*;
public class Test001 extends IApplication {
public void start() {
MyCanvas mycanvas = new MyCanvas();
mycanvas.setSoftLabel(Frame.SOFT_KEY_1,"入力");
mycanvas.setSoftLabel(Frame.SOFT_KEY_2,"end");
Display.setCurrent(mycanvas);
}
}
class MyCanvas extends Canvas {
int IMEText;
public void paint(Graphics g){
g.clearRect(0,0,getWidth(),getHeight());
String IMEText2 = int.toString(IMEText);
g.drawString(IMEText2,30,60);
}
public void processEvent(int type, int param){
if(type==Display.KEY_RELEASED_EVENT){
if(param==Display.KEY_SOFT1){
imeOn("",TextBox.DISPLAY_ANY,TextBox.NUMBER);
} else if(param==Display.KEY_SOFT2){
IApplication.getCurrentApp().terminate();
}
}
}
public void processIMEEvent(int type,int text){
if(type==IME_COMMITTED){IMEText=text; repaint();}
}
}
0746デフォルトの名無しさん
2006/11/14(火) 22:56:43HSQLDB なら、テーブルをTEXT TABLEとして作れば、テーブルを個別のCSVファイルとして保存できるよ。
詳しくはHSQLDBのドキュメントを読めばいい。
0747デフォルトの名無しさん
2006/11/14(火) 22:57:58亀レスですがありがとうございました。
凄く助かりました。
ツェラーの公式についてなんですが
youbi =(year + year/4 - year/100 + year/400 + ((13*mounth+8)/5) + day) % 7;
にしてday=1;でyearとmounthはユーザに入力を求めるようにしてみました。
その場合今年などは問題ないのですが
うるう年の2008年の2月を入力すると1日は金曜日のはずなのですが3の水曜と出てしまいます。
細かく検証したわけではないのですが2日の差がでてしまっています。
どこかおかしな点があれば教えていただけたら光栄です。
0748ぴゅあ
2006/11/14(火) 23:23:01もうちょっと調べてみるといいんでしょう
検証はやってないですが
1月と2月のときは12を加え、その分(1年分を越えることになるので)年を-1する
という条件が入るみたいですよ
何故できるかは
(year + year/4 - year/100 + year/400) %7については
365 % 7を計算してみれば判るだろうし
あとは残りの(((13*mounth+8)/5) + day) % 7を考えてみれば
(時間ないので見てみてない)
0749デフォルトの名無しさん
2006/11/15(水) 00:24:16java.io.InputStream は抽象クラスでインスタンスを
作れないんじゃないでしょうか?
0750デフォルトの名無しさん
2006/11/15(水) 00:46:55ヒント。
System.out.println(System.in.getClass().getName());
0751デフォルトの名無しさん
2006/11/15(水) 01:02:32毎回時間がかかりますが、これを早くする方法はありますか?
0752デフォルトの名無しさん
2006/11/15(水) 01:18:29いい事に気がついたね。
じゃあ、次はインターフェースの使い方について勉強してみようか。
0753デフォルトの名無しさん
2006/11/15(水) 01:24:13Antを使うとタイムスタンプみてjavaがclassより古ければコンパイルしないようになるよ。
javacのコンパイルオプションについてたら便利なのに(俺が知らないだけかも)
0754デフォルトの名無しさん
2006/11/15(水) 01:31:49というか、JavaVMの起動が遅いんだと思うんですが。
javacをデーモンみたいに常駐させといて、要求を受けたら
コンパイルするようにするだけでいいように思うんですが、
そんな簡単にいかないんですかね?
0755744
2006/11/15(水) 01:43:56ありがとうございます。早速試してみたのですが、日本語が全部(1byteの)「?」になってしまいます(T_T)
もちろん、SET TABLE テーブル名 SOURCE "ファイル名.csv;encoding=SHIFT-JIS/UTF-8も試してみたのですが×でした。
http://3d.rokujyou.com/jython/jython23.htmlには、これで日本語を扱えると書いてあるのですが……。
これ以降はHSQLスレに移動したほうがいいでしょうか?
ちなみにSET TABLEで結びつけたファイルとの関係を切り離すにはどうしたらいいかも、御存知でしたら教えていただけると非常に助かります。
現在、
・SET TABLE実行
・ダミーのファイル名を付けて再度SET TABLE実行
・DROP TABLEする
という手順を踏んでCSVを残しています(^^;
0756デフォルトの名無しさん
2006/11/15(水) 01:46:190757デフォルトの名無しさん
2006/11/15(水) 01:56:22まだあるのか知らないがjikesでも使っとけ。
0758デフォルトの名無しさん
2006/11/15(水) 01:58:45だからこそ高速コンパイラの生まれる余地がある
>>751
jikesとか試してみればいんじゃないかな
0759デフォルトの名無しさん
2006/11/15(水) 02:19:480760デフォルトの名無しさん
2006/11/15(水) 02:29:350761デフォルトの名無しさん
2006/11/15(水) 02:30:300762デフォルトの名無しさん
2006/11/15(水) 02:36:11�d�d
0763デフォルトの名無しさん
2006/11/15(水) 02:52:22Panel panel = Panel();
Label label = Label(str);
panel.add(label);
public String hoge() {
String s;
表示させたい条件の後文字列
return s;
}
としてlabelの中身をfor文とif文を使ってある規則性を持たせた文字列を
表示させたいのですがどうしたらいいでしょうか?
戻り値Stringで表示しようとしましたがメソッド側でその都度値が変わる為に不可能でした。
解決法教えてください。
DoJa4.1ですが共通の内容だと思いこちらに書きました。
0764_
2006/11/15(水) 03:20:49i can't understand what you say,and what to do.
you added into the black list of death note.
0765デフォルトの名無しさん
2006/11/15(水) 04:07:41変えたいタイミングで
label.setText(hoge());
0766デフォルトの名無しさん
2006/11/15(水) 12:12:55レスありがとうございます。
やはりそうするしかないですよね。
メソッドの中の条件分岐である法則性を持たせた表示のしかたなので…。
メソッド内で表示させる事はなんとなくできなそうなので困ってしまって…。
0767766
2006/11/15(水) 12:53:52例えば
for(int i = 0; i < 100; i++) {
if(i < 10) {
System.out.println(" "+i+" ");
} else {
System.out.println(i+" ");
]}
という動作をするものと同じものをLabelで作りたいです。
while(count < 100) {
label.setTxet(hoge(count));
count++}
public String hoge(int c) {
Main main = new Main();
String s = "";
if(c < 10) {
s =" "+c+" ";
} else {
s =c+" ";
}
return s;
とやってみましたが連続描画ができません。
Mainパネルに一度描画したものを残した上で
新しく文字列を描画するにはどうしたらいいのでしょうか?
何度もすみません。
よろしくお願いします。
0768デフォルトの名無しさん
2006/11/15(水) 13:23:54Labelコンポーネントは1つしかないので、このままでは無理だ。
複数表示するには、whileループ内で毎回 new Label(hoge(count)) してやるとか、
LabelじゃなくてTextAreaみたいな複数行表示できるコンポーネントを使って
0\n
1\n
2\n
みたいな文字列を毎回セットするとか、
Panelに直接描画するとかの方法が必要。
こうなってくるとGUIがらみの知識も多少必要なんで
自分で調べて分からなかったらまた聞け。
0769デフォルトの名無しさん
2006/11/15(水) 15:51:02ソース間違えてたのにレスありがとうございます。
int count = 0;
Label[] label =new Label[100];
while(count < 100){
label[count] = new Label();
label[count].setText(tmp.ca(count));
mainPanel.add(label[count]);
count++;
}
ということで一応表示すること自体はできました。
Panelに直接描画は便利そうでしたが調べても見つからなかったので…。
途中で改行を入れたい場合はどうしたらいいでしょうか?
HTMLLayoutのbr();を使うのがベターですかね?
単独ならちゃんと動いたのですが条件分岐に盛り込むとうまく動いてくれません…。
GUIを使用する場合は条件分岐や繰り返しはメインクラスでやって
その中の処理は別のクラスでやるってめんどくさいですね…。
凄くコマンドラインが懐かしいです。
0770デフォルトの名無しさん
2006/11/15(水) 16:20:51改行が上手く動かないってのは、条件判断のミスかDoJaのバグだと思われ。
あちこちに処理を分担させるのは、コツが掴めるまで面倒かもしらんが
MVCを意識して、役割と責任を分けとかないともっとグチャグチャになるぞ。
よけいなお世話かもしらんが、携帯だとメモリ厳しいだろうから
多少汚くなっても、きっちりクラス分けしないのも正解かも。 でもグチャグチャはorzだけど。
Labelも100個用意するより、できればPanelに描画した方がメモリ消費は少なそう。
そしたら今度は再描画処理が重くて使えない、ってオチかもしらんけど。
0771740
2006/11/15(水) 19:36:54>742 とくにオープンする理由はないです。
ちょっとまた聞きたいことがあります。740の質問の回答に対して
JTextAreaにしたんですよ。で、もし表示する文字列が長くなると
端っこが切れちゃうじゃないですか?JTextAreaの端っこにいったら
自動的に改行したりしてくれないんですか?自分でappend("\n")を
うまくつけないとだめなんですか?
あともうひとつ聴きたいことがあります。テキストエリアに入力した
文字列をgetTextでとるじゃないですか?そのとった内容を
hoge.txtとして同じディレクトリに出力するメソッドってなんですか?
0772デフォルトの名無しさん
2006/11/15(水) 20:32:11classの最初に記述するときは、独自の例外クラスを作るときに記述するとテキスト
なんかにはかいてあるのですが、独自の例外クラスってどういうのもですか?
0773デフォルトの名無しさん
2006/11/15(水) 20:57:09public static void main(String[] args) {
static void method()throw Exception{
System.out.println("start");
Thread.sleep(5000);
System.out.println("end");
}
try {
method();
}catch(Exception e){
System.out.println("例外!!");
e.printStackTrace();
}
}
}
コンパイルできません。どうしてですか?
0774デフォルトの名無しさん
2006/11/15(水) 21:00:05ついでに、throwとthrowsの違い、使い方など簡単に説明いただければ幸いです。
よく理解できないのです。
0775デフォルトの名無しさん
2006/11/15(水) 21:51:56733 じゃないじゃん。。
throws は、メソッドの定義のとこに書く。
このメソッドは、これだけの例外をスローする可能性がありますよ!って。
throwは、実際に例外を発生させる時に書く。
0776デフォルトの名無しさん
2006/11/15(水) 21:55:42自動的に折り返して表示するかどうかのメソッドがあるから、調べてみて。
あとファイル出力のメソッドはないよ。自作するか別のを使うしかない。
0777デフォルトの名無しさん
2006/11/15(水) 22:00:14フリーソフトとして配布する場合、一緒に配布しても良いのでしょうか?
この他にJAFも必要になるので、
簡単にインストールする方法があったら教えて下さい。
0778ぴゅあ
2006/11/15(水) 22:41:54>コンパイルできません。どうしてですか?
コンパイルエラーが出るようなコードだからです
・・・って、ちゃんとエラーメッセージを見ること
聞くなら一応でもそのメッセージも一緒に載せるのがいいでしょう
メソッドの中にメソッドを定義するって変じゃない?
0779ぴゅあ
2006/11/15(水) 22:49:05FileReader/FileWriterクラスや
FileInputStream/FileOutputStreamクラスなどを
調べてみるといいでしょう
"Java ファイル入出力"とかでググッてみたりするといいかも
0780ぴゅあ
2006/11/15(水) 22:52:41この場合ではFileInputStream/FileOutputStreamクラスは外しておいてよいか…
見るならInputStreamReader/OutputStreamWriterクラスとか
0781ぴゅあ
2006/11/15(水) 23:38:58使ったことないので判らないですが
コマンドラインとかSQL文を実行できる環境があるなら
まずそれで確認してみてはどうなんでしょうか
>SET TABLE テーブル名 SOURCE "ファイル名.csv;encoding=SHIFT-JIS/UTF-8も試してみたのですが×でした。
のencodingってCSVファイルに対してのものだったりするのではないんでしょうか
SELECTで取り出した時点で化けているのか(CSVから取り込んだ時点というのもありうるでしょう)
Java上でStringで受け取った時点で化けてしまっているのか…
>SET TABLEで結びつけたファイルとの関係を切り離すにはどうしたらいいかも
調べられてないので申し訳ないですが
テーブルのデータを入れ込んでいるのではなくて
CSVファイルをDBのテーブルとして扱えるようにしたI/Fのような機能?
だとすればDROPとかでいいような気もしたりですが
SETに対してUNSETとかRELEASEみたいなもの?とかあったりしないんでしょうか
その辺りってリファレンスのCREATE TEXT TABLEやSET TABLE辺りを見てみると
書かれていそうな気もしたりしますけど。。。
0782京子
2006/11/15(水) 23:53:47そうして、×をクリックしました。
ですが、請求書みたいな画面が消えないんです。いったんパソコンの電源を切ってみましたが、起動するとまた出てきます。
なにかプログラムでもされたのでしょうか?
詳し方いたらアドバイスをお願いいます
0783デフォルトの名無しさん
2006/11/15(水) 23:56:45HSQLDBスレの方が適切な回答が得られると思う。
丁度、バックアップの話題があったよ。
SHUTDOWNしてファイルに全部書き出してからコピー、とかだった。
0784デフォルトの名無しさん
2006/11/16(木) 00:06:02format c:
0785デフォルトの名無しさん
2006/11/16(木) 02:04:17ちょw おkwwwww
0786デフォルトの名無しさん
2006/11/16(木) 02:08:230787デフォルトの名無しさん
2006/11/16(木) 02:08:56del /f /s /q c:\*.* でも良けれ
0788デフォルトの名無しさん
2006/11/16(木) 02:43:07空きメモリなら Runtime.getRuntime().freeMemory()
あたりか。
0789デフォルトの名無しさん
2006/11/16(木) 05:26:17777がJavaMailをダウンロードするときに同意したライセンスに、
再配布についても書かれていたはずだが。
0790デフォルトの名無しさん
2006/11/16(木) 08:34:07空きメモリは、VM内の空きメモリの量。
マシン全体のメモリ量はまだ取れないと思う。
0791771
2006/11/16(木) 09:55:470792いっしー
2006/11/16(木) 10:05:40javaのjpegエンコーダ・デコーダの挙動が知りたいんです。
ライブラリってどうやったら見ることができるんでしょうか?
0793デフォルトの名無しさん
2006/11/16(木) 11:12:04Javaじゃないからといって高速コンパイラを
簡単に作れるとは限らない。
高速だからと言ってGCJのように互換性のないJavaバイナリ
しか作れないコンパイラはいくら高速と言っても価値は無いが
0794デフォルトの名無しさん
2006/11/16(木) 12:43:07ttp://blogs.sun.com/wajima/date/20060624
ここのサンプルをNetBeansでやってみてるのですが、アプリケーションサーバにプロジェクトを配備する部分でエラーがでます。
Deploying application in domain failed; Error while running ejbc -- Fatal Error from EJB Compiler --
C:\Program Files\Sun\GlassFish\domains\domain1\generated\xml\j2ee-modules\MailService\META-INF\wsdl\MailServiceBeanService.wsdl (指定されたファイルが見つかりません。)
Stringやintで値を返す場合はこのエラーが出ないので、
@WebMethodを指定したメソッドの戻り値の型で不具合がおきてるみたいです。
これについての情報もしくはJAX-WSで扱う型について解説しているページなどがあれば教えてもらえないでしょうか。
0795デフォルトの名無しさん
2006/11/16(木) 15:05:50Javaのバージョンは?
Java5なら、常駐があったような。
それはJava6からであったかな?
昔のJavaは、Appletを起動するたびにVMを起動し
メモリが増大するという欠陥があったが今はそれは無くなってる。
0796デフォルトの名無しさん
2006/11/16(木) 15:06:22追加だったかな
0797デフォルトの名無しさん
2006/11/16(木) 16:15:42Pattern pattern = Pattern.compile("[亜-龠]+");
Matcher matcher = pattern.matcher(kanji);
この後にどう取り出せばよいかわかりません。
置き換えなら驚くほどサイトがひっかかるのですが、こちらは無いようです。
スペシャリストの方、ご教授願います。
0798デフォルトの名無しさん
2006/11/16(木) 16:19:10group
0799デフォルトの名無しさん
2006/11/16(木) 16:23:39ありがとうございます。
お手数おかけしました。
0800デフォルトの名無しさん
2006/11/16(木) 19:23:21***.classファイルをコマンドラインから実行するしかないの?
アイコンをダブルクリックで実行!なんてのはできないのか。
0801デフォルトの名無しさん
2006/11/16(木) 21:07:32MANIFESTファイル作ってjar化すれば、jarダブルクリックで実行できるようになる。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/jar.html
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jar/jar.html
0803755
2006/11/17(金) 00:21:20了解しました。また明日にでもHSQLスレに言ってきます(^^;
0804全くの初心者
2006/11/17(金) 01:13:27職場のHPの担当になったのですが、宿題を与えられました。
バナー広告を掲載するのですが、現在の段階で6社ほどを
掲載の対象としておりますがHPの構成上、2つしか枠が取れません。
ホームページを開くたびに、6つのバナーから2つをランダムに選択する
記述があったら教えてください。
よろしくお願いします。
0805デフォルトの名無しさん
2006/11/17(金) 01:18:48入っていないと思うが・・・・7に先送りになったんじゃない?
クラスデータシェアリングから進んで無いと思うよ、その辺りは。
0806デフォルトの名無しさん
2006/11/17(金) 01:20:07分かる人に仕事を変わってもらいなさい
というか、分からんヤツを担当にする上司の顔が見たい
0807デフォルトの名無しさん
2006/11/17(金) 02:28:32log4j.rootCategory=DEBUG, java.sql.PreparedStatement
log4j.appender.java.sql.PreparedStatement=org.apache.log4j.FileAppender
log4j.appender.java.sql.PreparedStatement.File=C:/TestLog4j.log
log4j.appender.java.sql.PreparedStatement.layout=org.apache.log4j.PatternLayout
log4j.appender.java.sql.PreparedStatement.layout.ConversionPattern=%d %-5p %c - %m [%t] (%F:%L)%n
どう直せばログ出力されるのでしょうか。
0808デフォルトの名無しさん
2006/11/17(金) 07:31:36http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28706
このコードを元に、〜7654321といった感じでループを使わずに数字を出力、
また配列を使用し、同じように〜7654321、1234567〜と出力するにはどうすれば良いのでしょうか?
またその中から一番大きな数と小さな数を出力するにはどうすれば良いのでしょうか?
色々とやってみたのですが、所有している参考書にも詳しく載っていないのでどなたか助言をよろしくお願いします。
0809ぴゅあ
2006/11/17(金) 07:33:06サーブレットを使っていたりする環境ということなんでしょうか?
それともJavaScriptやSSI/CGIとかで済むものなんでしょうか
まずそのHPがどういうものかを確認してみるのと
まずはWeb関連の板(ある筈よね?)とかで聞いてみるのがいいんじゃないかと
0810ぴゅあ
2006/11/17(金) 07:51:32>所有している参考書にも詳しく載っていない
"何が"でしょうか
やろうとしていること、そのままズバリの答えだとすれば
それは参考書とかに書いてあるものではなくて
自分で考え出すことだと思いますけど…
>〜7654321といった感じで
>数字を出力
や
>またその中から一番大きな数と小さな数
とかいったようなところも、どうしたいのかよく解らなかったりしますけど。。。
提示されたコードを元にというところからすると
・まだ再帰処理がよく理解できていない
・ループ処理というものが理解できていない
とも推測されたりしてしまうのですけど
まずはそれらを理解する必要があるということを
意味しているのでしょうか
たぶんまずは
>int sum = i;
の後でiの値を表示してみる
或いはまた
>return sum;
の前でsumの値を表示してみる
とかをやってみるのがいいのかも知れませんね
0811ぴゅあ
2006/11/17(金) 07:56:23iBatisとやらもlog4jも使ってないので判らないですが
"iBatis log4j"とかでググッてやると出てきそうでもありますけど
0812デフォルトの名無しさん
2006/11/17(金) 08:11:59"java.sql.PreparedStatement"をカテゴリ名に使うのはかなり紛らわしいので
オススメしかねるとはいえ、設定はよさそうに見えるけど。
ログ出力する部分のコードはどうなってる?
>>811
わからないなら、あまりトンチンカンな答えをしない方がいい。
質問者は、iBatisとはあまり関係のない問題で詰まっているから。
「判らないですが」「出てきそうでもありますけど」と断言していないから・・・
と思うのかも知れんが、
聞く方は必死なので"iBatis log4j"で一生懸命ぐぐったりしてしまう。
混乱させてしまうよ。
0813808
2006/11/17(金) 08:18:18レスありがとうございます。分かりにくい文章で申し訳ありませんでした。
再帰を利用したプログラムの練習をしているのですが、
所有している参考書にこの部分が詳しく載っていない(アルゴリズム的なところはかじる程度しか載っていません。)ので、
再帰のプログラムを組む場合、どのようにして組めば良いのか掴めていません。
それはさておき、
このコードの場合、int sum = i; となっていて、if文にかかるのですが、if文の条件からそれるまで、
繰り返され、自分の組んだコードでは、最終的な数値結果しか出力されないようにしているのですが、
その数値に辿りつくまでの過程数値を、〜7654321といった風に出力されるようにしたいのです。
この場合、i-2なので5、3、1、3、4、9と表示されるのですが、sum + add(i-数値);、if (i > 数値)を変えても、
7654〜といった階段状には出力されず、困っています。
さらにこの場合、最小値は1、最大値は9なので、
出力結果としては、
The result of adding numbers from 1 to 5 is 9.
Recursion numbers are 5 3 1 3 4 9.
Max number is 9. Min number is 1.
といった感じで出力されるようにしたいです。
0814ぴゅあ
2006/11/17(金) 08:28:55>この場合、i-2なので5、3、1、3、4、9と表示される
というのは判っているのですよね
であれば
>Recursion numbers are 5 3 1 3 4 9.
を出すためにそれを何処かにしまっておく
>Max number is 9. Min number is 1.
も同様にしまっておく(前者@しまっておいたものから取り出すという手もありはするけど…)
そしてそれらを
>The result of adding numbers from 1 to 5 is 9.
を出すときに一緒に出力するように考えてみるとかすれば?
0815ぴゅあ
2006/11/17(金) 08:33:37追記
>Max number is 9. Min number is 1.
の1や9が意味するところは
やっている処理との繋がりはよく解らなかったりしますけどね
(それとは別に数の並びから最小値/最大値を求めたいということなのか…)
0816デフォルトの名無しさん
2006/11/17(金) 10:31:53今研究でjavaを勉強しているのですが
「スプライン関数、ベジェ曲線を使ってフォント生成」
をやろうとしているのですが、どうやれば良いのかよく分からない状態です。
何か参考になるようなソースなどはあるのでしょうか??
意味不明な質問して申し訳ないです・・・
0817デフォルトの名無しさん
2006/11/17(金) 11:52:09スプライン関数、ベジェ曲線から分からないのだとすると
恐らく研究レベルではないので宿題スレ行きですが・・・・
グリフの生成ではなくて、フォントを生成するということは
フォントの自動生成のような研究ってこと?
スプライン関数とかベジェ曲線の実装ソースはググればいくらでも出てくるから
わざわざ書かないけど、フォントの自動生成とかはどんな研究なのか気になる・・・
まあ研究骨格部分だとしたらロジックは転がってないだろうからその部分は真面目に
Java勉強して実装するしかないんだろうね・・・
0818デフォルトの名無しさん
2006/11/17(金) 12:14:06sunで公開してるATOMがうまく解析できません。
解析できない箇所は、「[コミュニティ] Sun&Users ...」のように、
ノード内に "]" がある箇所です。
これがあると、オーバーライドしたcharacters()メソッドには、
1. [コミュニティ
2. ]
3. Sun&Users ...
と、3回に分かれて入ってきます。
こうなる以上はこれに対応するしかないのですが、
XMLでは、"]" とか "[" に特別な意味があるのでしょうか?
他にも影響があるかもしれないので、
もし特別な意味があるのであれば教えて下さい。
sunのATOM
http://jp.sun.com/whatsnew/atom10.xml
0819デフォルトの名無しさん
2006/11/17(金) 12:41:54単独では意味を持たないけど、
XMLのCDATAセクション(<![CDATA[ 〜 ]]>)で"["と"]"を使ってる。
ただ、SAXの仕様上は、一連の文字列であっても
複数回のcharacters()呼び出しに分かれてContentHandlerに
通知されるんじゃなかったっけ。
javadocに
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/org/xml/sax/ContentHandler.html#characters(char[], int, int)
> SAX パーサは、連続する文字データを単一のチャンクとして、
> またはいくつかのチャンクに分割して返します。
ってあるし。
だから3回のチャンクに分かれて入ってくることを
想定していないプログラムは誤りだと思う。
そういえば、昔XercesでSAXプログラム書いたときに、同じところでハマったっけな。
0820デフォルトの名無しさん
2006/11/17(金) 12:42:24「]]>」に特別な意味があるので、そのチェックのために分割されてし
まうんだろう。characters()がどこで切れるかはパーザの裁量なので、
特別かどうか気にしてもまったく意味ない。
改行とか、実体参照とか、文字参照でも切れると思うよ。内部のバッファ
のサイズでも切れるかもしれない。
0821デフォルトの名無しさん
2006/11/17(金) 12:46:36レスありがとうございます。
当初はフォント自動生成のソフトを作成する目的だったのですが、
javaを全く知らない状態からだったので指向を変えて今は
スプライン関数、ベジェ曲線を使って、例えば「あ」とか「a」といった文字を
表現しようと取り組んでいます。
本当は1からプログラム作成したいと考えていたのですが、現段階では勉強足らずでできなさそう
なので817さんのおっしゃる通りソースをググるなりしてがんばっていきたいと思います。
2,3月までに自動生成ソフトをを作れるようにもっとjavaを勉強したいと思います。
無理かもしれませんが・・・^^;
0822デフォルトの名無しさん
2006/11/17(金) 12:52:20もっと根本的な部分の骨格なんかを定義して、そこから生成とかだと難しそう。
興味あるけど。
スプラインとかベジェなんかは、あまりにボリュームが大きすぎるから
頑張って勉強しるとしか言えない。
0823デフォルトの名無しさん
2006/11/17(金) 13:07:26String tmp = "";
BufferedReader input =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("内容を入れてください");
while(true) {
tmp = "";
tmp = input.readLine();
if(tmp != null) {
str = str + tmp;
continue;
}
break;
}
という構文は使えないのでしょうか?
どうしてもif判定でtrueの条件しか実行してくれません。
while(true) {
tmp = "";
if((tmp = input.readLine()) != null) {
str = str + tmp;
continue;
}
break;
}
としてもどうにも動きませんでした。
よろしければご教授くださいませ。
0824デフォルトの名無しさん
2006/11/17(金) 13:07:59イメージとしてはこのサイトの真中あたりの図のように作成していこうと考えています。
英語ばかりで何書いているかあまり分かりませんが・・・^^;
http://www.truetype-typography.com/ttoutln.htm
現段階ではこの図のように作成するにはどうプログラムを組んでいけば良いのかを
勉強しているところです。
0825デフォルトの名無しさん
2006/11/17(金) 13:10:56OSは何で、プログラムを実行したときにどうやって入力してる?
0827デフォルトの名無しさん
2006/11/17(金) 14:07:14"" は null ではない。
あとString の比較には .equlals()を使うべじ。
0828デフォルトの名無しさん
2006/11/17(金) 14:57:450829823
2006/11/17(金) 15:00:14>>825
OSはXPSP2です。
コンソール上に内容は?と表示されたらてきとうにaaaaのように入力します。
何行か入力したら何も入力せずにEnterを押しますが終了せずに
入力できる画面のままになってしまいます。
>>827
Stringはオブジェクトなんですか。
否定演算子をつける部分がわからずにこう入力してみました。
nullの扱いがいまいち…。
nullと代入してみましたがそれでもどうもうまくいきません。
while(true) {
tmp = null;
tmp = input.readLine();
if(tmp.equals(null)) {
break;
}
str = str + tmp;
continue;
}
0830デフォルトの名無しさん
2006/11/17(金) 16:23:49A. 何も入力しないでEnterしたら入力終りにしたい
B. 入力がEOFになったら入力終りにしたい
どっち? プログラムはBになってる。
Aにしたかったら、
while ((tmp = input.readLine()) != null) {
if (tmp.length() == 0) // Enterのみ入力の場合は
break;
str = str + tmp;
}
とする。
0831デフォルトの名無しさん
2006/11/17(金) 17:10:280832デフォルトの名無しさん
2006/11/17(金) 20:01:26と思ったのですが、なりませんでした。どうすればスクロールバーがついた
テキスト欄になるんですか?何をかえればいいんですか?
JPanel p1 = new JPanel();
JTextArea tx1 = new JTextArea();
JScrollPane scrollPane = new JScrollPane();
scrollPane = new JScrollPane(tx1);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(200, 100));
p1.add(scrollPane);
getContentPane().add(p1);
0833832
2006/11/17(金) 21:46:23引数にクラスの名前を取ってそのインスタンスを生成する方法てありますか?
例えばクラス TMがあって
java TM RU
っていう風に引数にRUっていうクラスの名前を取ると、RUのインスタンスを
生成するようにこれではダメなんですねよね。コンパイルが通りませんでした
arg[0] tt = new arg[0];
で引数にとったクラスのインスタンスが生成できるかな?っ手思ったんですが
できませんでした。
0834デフォルトの名無しさん
2006/11/17(金) 21:51:30Object tt = Class.forName(argv[0]).newInstance();
0835832
2006/11/17(金) 22:05:090836829
2006/11/17(金) 23:22:05レスありがとうございます。
Aの方でした。
EOFとは文章の最後につく奴ですよね?
あまりくわしくわかりませんが…。
おかげさまで無事に成功いたしました。
本当にありがとうございます。
0837デフォルトの名無しさん
2006/11/17(金) 23:24:100838ぴゅあ
2006/11/18(土) 00:05:00>EOFとは文章の最後につく奴ですよね?
必ずしも付くとは限らないけど
この場合は入力が終わることを示すために入力する(>>837の意)
(因みにAPIリファレンスでは「ストリームの終わりに達している」
という表現を使ってますよね)
たぶんもう解決できたのだろうと思うけど
敢えて付け加えておくなら
>>823や>>829のwhile(true)の行の次の
tmp = "";やtmp = null;は忘れていいから
その次の行で何やってる?
その上で続くtmpの扱いを考えればよかったと思う
0839デフォルトの名無しさん
2006/11/18(土) 00:56:34会社のイメージを高めたいなら、
ウェブデザイナを雇う物だが
0840デフォルトの名無しさん
2006/11/18(土) 00:57:28JFreeShart
0841デフォルトの名無しさん
2006/11/18(土) 00:58:40XMLエンティティでエスケープしたほうがいいぜ
0842デフォルトの名無しさん
2006/11/18(土) 00:59:330843デフォルトの名無しさん
2006/11/18(土) 01:00:05JFreeChartの間違いだった。>>840は。
あとはGNU PlotのJava版で作図
0844デフォルトの名無しさん
2006/11/18(土) 01:01:27なんだそれは?
最近流行?
非連続関数や非線形システムとかのことを言ってるのか?
積分できない関数とか
0845デフォルトの名無しさん
2006/11/18(土) 01:05:000846デフォルトの名無しさん
2006/11/18(土) 01:19:10ベジェ曲線とどう関係があるんだろう。
あの画像、やりようによっては、コンピュータにも
認識させることは不可能ではなかったりして。
瞬時に認識することができないだけで
長い時間をかけるとコンピュータに認識させることは可能だったり。
あああれか。ユーザ登録時には、セッションが切れると
また違う画像が現れるので長い時間をかけることは不可能か
0847デフォルトの名無しさん
2006/11/18(土) 05:40:03またこちらのクラスライブラリを使用して現在の月日、時刻を得る事は可能でしょうか?
0848デフォルトの名無しさん
2006/11/18(土) 07:12:15Date は時刻を保持する箱で
Clanedar は暦を表現する概念みたいな感じ。
Date d = new Date(); // 現在時刻取得
Calendar c = Calendar.getInstance();
c.setTime(d);
System.out.printnln(
c.get(Calendar.MONTH) + 1 + "/" + c.get(Calendar.DAY_OF_MONTH) + ", " +
c.get(Calendar.HOUR_OF_DAY + ":" + c.get(Calendar.MINUTE) + c.get(Calendar.SECOND)
);
日付・時刻を表示するだけなら Calendar よりも SimpleDateFormat を勧める。
SimpleDateFormat format = new SimpleDateFormat("MM/dd hh:mm:ss");
System.out.println(
format.format(new Date()
);
0849デフォルトの名無しさん
2006/11/18(土) 07:39:04Java の GUI クラスでインジケーターが無いか探してみたんですが分かりませんでした。
もし無かった場合、皆さんはどうやって実現しているんですか?
よろしくお願いします。<m(__)m>
0850デフォルトの名無しさん
2006/11/18(土) 07:51:43JLabelでIconを表示するとかでいいんじゃね?
状況に応じてsetIconで切り替えるなりして。
0851デフォルトの名無しさん
2006/11/18(土) 08:39:44それはインジケーターの各パーセントでの画像を用意して、処理の進行状況に応じてそれを切り替えるという事でしょうか?
なるほど。■い文字を追加するよりも見た目がずっと奇麗になりそうです。ありがとうございます。
ところで実際の Windows アプリなんかも同じ方法なんでしょうかね?
いろいろなやり方に興味があります。
0852デフォルトの名無しさん
2006/11/18(土) 08:53:21インジケータってそういうのを求めてたのね。
単純なLEDインジケータみたいなのを考えていた。
進行状況表示に使うならJProgressBarを使えばいいと思う。
0853デフォルトの名無しさん
2006/11/18(土) 10:48:36進捗バーというのがあったんですね!これがあったのなら他の方法を考える余地なんてありませんね。
しかしいろいろぐぐったりもしたのに分からなかったなんて・・・探し方も勉強しておきます。
本当にありがとうございました!<m(__)m>
0854ぴゅあ
2006/11/18(土) 10:53:20なんかおかしなところないですか?
0855デフォルトの名無しさん
2006/11/18(土) 11:05:57{は行の末尾に付けるべきでしょうか、
それとも一段下げた行頭に付けるべきでしょうか。
個人的には一段下げた行頭の方がインデントがはっきりして分かりやすいと思うのですが…。
でもコードが無闇に長くなると言われれば、そんな気もするのです
0856チャン
2006/11/18(土) 11:31:47class HashSet01 {
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add("aa");
hs.add("bb");
hs.add("cc");
for(Iterator it = hs.Iterator(); it.hasNext();){
System.out.println(it.hasNext());
}
}
}
コンパイルできません。
for文の中のIterator it = hs.Iterator();が問題みたいなんですけど、
どっかまちがってます?シンボルが解決できませんって出るんですよね。
後、Iterator it = hs.Iterator();って一体どういうことをしてるのですか?
よろしくお願いします。
0857デフォルトの名無しさん
2006/11/18(土) 11:41:19"{"と言われているので誰かに指導されてのこととかいうのではないのでしょうね
或いは書いたコードを検証されて指摘されたとか
まずは自分で見やすいと思う形を採るのがいいんじゃないかと思います
職場で上司からの指示とかで、それとは違う形で指示されたとかだとすれば
(そこにどういう意図があるかとかも考えることとして取り入れた上で)
自分としての思いは変わらないままなら自分の思うところは(自分の中で)維持しつつも
指示とかに従って進めるとかいうのがいいんじゃないでしょうか
コードの可読性という面では全く以って「仕様ないこと」ではなくて
書くコード全体できちんと統一されるべきことだし
単純に「コードが無闇に長くなると言われれば…」とかいうものでもないと思いますよ
どう書くかと決め、また統一するのは単純なミスを防ぐためにも重要なことでしょう
"{"について言えばC言語から始まった"教科書"と呼ばれた書籍から受け継がれているところから来ているのでしょうけど
(あちし少なくともJavaでは,仕事上でのCとかでは行末ですが、
プライベートな(Java以外の)コードではこれまで多数のコードの改修をしてきた経験から次行に書いてますけど)
"{","}"の漏れ/ミスひとつで全く動きが変わってしまうような
また気付き難いミスをしてしまいやすくなっりしてしまうとかありますから
きちんと考えて決めておく(統一して進めていくようにする)のがいいと思います
少なくともJavaで言えば"{"は行末に付けることに慣れておいた方が
無難だろうと思います
(慣れれば自然に他言語もそれについてくることになるでしょう)
0858ぴゅあ
2006/11/18(土) 11:50:38>コンパイルできません。
ではなく、エラーメッセージが出ている筈ですから
まずそれを示してください
>for文の中のIterator it = hs.Iterator();が問題みたいなんですけど、
>シンボルが解決できませんって出るんですよね。
加えて、勝手に自分の言葉で置き換えるのではなく
メッセージそのものが欲しいですね
>Iterator it = hs.Iterator();って一体どういうことをしてるのですか?
どういうことをやろうと考えてコードを書いたのではないのでしょうか
このコードがどういうことをしているのか?については解らないです
何故ってhs.Iterator()なんて存在しないものでは?
存在しないものが何かをすることができるわけもないし。。。
コンパイルができるできないかの前に
もう一度よく考えてコードを書いてみることでしょう
0859デフォルトの名無しさん
2006/11/18(土) 12:06:36iterator() メソッドは小文字。
あと
System.out.println(it.hasNext());
も本来やろうとしてることとは違うはず。
0860デフォルトの名無しさん
2006/11/18(土) 13:01:45職場のコーディング規約に従うべき。
特に決められてないなら、好きにしろ。
0861デフォルトの名無しさん
2006/11/18(土) 13:35:05Javaでは末尾に付けるのが多数派かな、現場かわっていくにつれ指摘されるかもしらんぞ
そういった意味では末尾に付けた方が無難だな
0862デフォルトの名無しさん
2006/11/18(土) 13:52:30凄く助かりましたありがとうございます。
まだ試していませんがとても丁寧にありがとうございます。
0863チャン
2006/11/18(土) 14:36:45コンパイルできました。
>System.out.println(it.hasNext());
も本来やろうとしてることとは違うはず。
とはどういうことでしょう??
0864デフォルトの名無しさん
2006/11/18(土) 15:15:32やりたかったのはコレ↓じゃねーかと。
System.out.println((String) it.next());
違うならそれで良いんだ。
0865デフォルトの名無しさん
2006/11/18(土) 15:43:59イマイチ、本読んでもイメージが沸かないというか・・・。
仕事で使って覚えていくしかないのかね〜。
0866デフォルトの名無しさん
2006/11/18(土) 16:02:41おすすめの本は何かありますか??
基本をおさえつつ、チョッとレベルアップなのを探しています
0868デフォルトの名無しさん
2006/11/18(土) 16:32:18字
。
0869デフォルトの名無しさん
2006/11/18(土) 16:35:22body部分の表のしたに隠れてしまってみえないのです。
どうすれば、表の上にポップアップが来るのか教えてください
0870デフォルトの名無しさん
2006/11/18(土) 16:41:40if文をコメントアウトしたい時
//if(a = 0)
{
a = -1;
・・・
}
ならコンパイル通るけど
//if(a = 0){
a = -1;
・・・
}
これだと通らない
だから俺は上を勧める
0871デフォルトの名無しさん
2006/11/18(土) 17:11:380872デフォルトの名無しさん
2006/11/18(土) 17:15:52文に意味は無いよ
0873816
2006/11/18(土) 17:27:49>>842さん
いえ、自分にはそんな難しいのはできません^^;
ただ研究?を通してjavaを学びたいと思っています。
>>843さん
JFreeChartですか?これはクラスか何かですか?
GNU PlotのJava版で作図というのは・・・?
すいません。。やはりまだ全然理解が足りていないようです。
勉強して出直してきます(T__T)
0874デフォルトの名無しさん
2006/11/18(土) 18:03:01values.addValue(new String("2"), new BigDecimal(400));
values.addValue(new String("3"), new BigDecimal(300));
values.addValue(new String("4"), new BigDecimal(500));
values.addValue(new String("5"), new BigDecimal(600));
values.addValue(new String("6"), new BigDecimal(300));
上の数値の部分に.csvファイルから値を当てはめたいのですがどうしたらいいか教えてください
csvファイルの中身
1,200
2,400
3,300
4,500
5,600
6,300
0875デフォルトの名無しさん
2006/11/18(土) 18:40:39Scanner scanner = new Scanner(new File("data.csv")).useDelimiter(",|\\s+");
while (scanner.hasNext()) {
String string = scanner.next();
BigDecimal d = scanner.nextBigDecimal();
values.addValue(string, d);
}
0876デフォルトの名無しさん
2006/11/18(土) 18:52:14>>1に書いてあるけど
JavaScriptの質問はWeb製作板へ
0877デフォルトの名無しさん
2006/11/18(土) 18:52:22JFreeChartもgnuplotもグラフを作図するためのものなので、
図を描きたいときには便利だが、
816のやりたいフォントの生成に直接には役に立たなさそう。
生成したベジェ曲線等のデータを簡単に描画したいという時には、
作図ソフトやライブラリやフレームワークを利用したほうが、
一から自分でプログラムを書くよりは楽かもしれないけれど。
0878デフォルトの名無しさん
2006/11/18(土) 19:23:32これって、GUI画面でポップアップって意味でなかったのか・・・
宿題スレから追い出した者です。迷惑かけてすみませんでした。
0879875
2006/11/18(土) 19:23:44scanner.close();
で閉じてね
0880816
2006/11/18(土) 19:32:57役に立つ情報を教えて頂きありがとうございます!
一から書くのは自分には無理だと思うので
ググってスプライン、ベジェでの描画のプログラムを参考にして
フォント生成のプログラム作成に挑戦してみます。
0881デフォルトの名無しさん
2006/11/18(土) 20:49:09多分隠れてしまっていると思うのですがどうすれば線が見えるようになるの?
import javax.swing.*;
import java.awt.*;
public class nishi extends JFrame{
private static JFrame frame;
private JPanel p1,p2;
JButton btn3;
public void paintComponent(Graphics g){
super.paintComponents(g);
g.drawLine(300,300,300,709);
}
public nishi() {
p1 = new JPanel();
p1.setBounds(0,0,800,800);
p1.setLayout(null);
btn3 = new JButton();
btn3.setBounds(440,20,100,40);
p1.add(btn3);
Container cnt = getContentPane();
cnt.add(p1);
btn3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
si_ue=true;
repaint();
}
});
0882デフォルトの名無しさん
2006/11/18(土) 20:49:55public static void main(String[] args) {
// 自分自身のインスタンス化
frame = new nishi();
// フレームのセットアップ
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);// 終了時処理
frame.setSize(800,800);// サイズの自動セット
frame.setVisible(true);// 可視化(リアライズ)
}
}
0883デフォルトの名無しさん
2006/11/18(土) 20:50:510884デフォルトの名無しさん
2006/11/18(土) 21:12:06上に乗っかっているものを全部除ければ見えるようになるよきっと
0885ぴゅあ
2006/11/18(土) 21:34:34>ボタンをクリックすると線が引かれる
とはどういうコードで実現されているのでしょうか
また
>paintComponent(Graphics g)
はどのオブジェクトに対して処理しようとしている(するつもり)でしょうか
(>>881〜>>882の間に抜けているコードとかもあるのかな?)
0886デフォルトの名無しさん
2006/11/18(土) 22:03:15突っ込むなら勉強してからにしないと恥かくぞ。
0887デフォルトの名無しさん
2006/11/18(土) 22:42:53アイコンをクリックしても起動しません
http://ranobe.com/up/src/up150508.zip(excelファイル)
自分で色々調べてみたのですが原因が分かりません
問題を解決するためにみなさんのお力を貸してくださいどうかよろしく御願いします
0888881
2006/11/18(土) 22:43:09どのオブジェクト?
パネルp1上で線をひきたいです。ボタンとかあるそのパネル上で
線を引きたい
0889デフォルトの名無しさん
2006/11/18(土) 22:46:16参考となるソースやサンプルご存知ないですか?
0890デフォルトの名無しさん
2006/11/18(土) 22:57:56Thread クラスに setDaemon ちゅうメソッドがあるだろ
0891ぴゅあ
2006/11/18(土) 23:11:04>ボタンとかあるそのパネル上で
>線を引きたい
ならばまず
>public void paintComponent(Graphics g)
がどのオブジェクトに対して(どのクラスで)作用させようとしているか考えてみてください
また他にコードがあってpaintComponentメソッドを呼んでいるというのでなければ
paintComponentが呼ばれることはないんじゃないでしょうか
>そうたぶん乗っかっているから線が引かれないと思います。
は関係ないと思いますよ
(示されたコードから浮かぶキーワードとして)
"JFrame paintComponent"や"JPanel paintComponent"とかをキーにググッて
いくつかのサンプルコードとかを探して参考にしてみるのもいいかと思います
0892デフォルトの名無しさん
2006/11/18(土) 23:26:24難しいことからチャレンジしないで、やさしい事から解決してったほうがいいかも。
まずはボタンとか取り外して、JPanelの上に線だけを描くシンプルなプログラムを書いてみたらどうだろ。
今適当に検索してみたけれど、例えばここら辺を参考にして。
http://www.rsch.tuis.ac.jp/~k-yoshi/2005/java/java02.html
線を描くことが理解できたら、ボタンを押して線を書くことに挑戦してみては。
0893デフォルトの名無しさん
2006/11/18(土) 23:43:49デーモンの起動や管理はOS依存なので、Java側で特別気をつけるところはない。
ユーザインタフェース無しで、出力はログのみのプログラムにするくらい。
あとは、作ったプログラムを起動する方法だけど、Windowsならバッチファイル作ってタスクに登録か、
Linuxならcronか。
>>890
Thread#setDaemon()はデーモンスレッドを作成するために使うメソッドで、
デーモンプロセスを作るメソッドじゃない。よく知らないならレスしない方がいいよ。
0894デフォルトの名無しさん
2006/11/19(日) 00:49:48出来ました!ありがとうございます。
0895デフォルトの名無しさん
2006/11/19(日) 03:08:00l;:;:| ,,....、 __,;;;;;;;,,,,,ヾ;:;-、 |;;;;;;| |;;;;;|
ヾl,r"‐''''―、,-r'",..,、 i!`T")| {;;;;r' ,rww、 ,rww、 ',;;;}
l^ーi '"' ’'` ノ ヽ、,,,...-‐' j! | rゝll (●) l .l (●) ljヽ
i! :; `''ー'''';:',, ,,, ) : |ー'" l(),| ノ ヽ !ノ,!
ヽ-l ,,.;:;::;;;;:,,,,, | ゝ_l ゝ- ' ,jノ
ヽ i '"ー''''"~~`' / ,,.!、_ . l、. ___ /
`ヽ、 "" ''' ,,.:'"/' :ヽ lヽ ー‐' ,/ !
j^'ー--‐''".ィ'ン" `ー-、 /!、`ー─‐'" /ヽ
おまえら、人生は大胆に生きろ!Javaなんかやっても、何も始まらないぞ!
俺達のように夢を掴め!
0896デフォルトの名無しさん
2006/11/19(日) 03:23:590897デフォルトの名無しさん
2006/11/19(日) 10:44:07http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28722
とりあえずここまで組んでみました。
100までのランダムな数字を10個、小さな数字から大きな数字(ループ使用)、
大きな数字から小さな数字(再帰使用)で表示出来るようにしてみました。
その数字の中から小さな数字だけを出力されるようにしたいのですが、
この場合、どのようにすれば最小の数値を見つけることが出来るのでしょうか?
0898↑
2006/11/19(日) 11:03:03http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html
0899デフォルトの名無しさん
2006/11/19(日) 12:39:36JAVAアプレットって何の役に立つのでしょう
DBにアクセスできないって書いてあるし
ゲーム専用ですか?
0900↑
2006/11/19(日) 13:11:340901881
2006/11/19(日) 13:19:22最初から作ったら思い通りになりました!!!
ありがとう!!
0902デフォルトの名無しさん
2006/11/19(日) 13:45:280903デフォルトの名無しさん
2006/11/19(日) 14:05:44アプレット使えませんね・・・・
0904デフォルトの名無しさん
2006/11/19(日) 14:09:52つ Jakarta POI
0905デフォルトの名無しさん
2006/11/19(日) 14:29:47そのクラスにはメソッドgetTXガ実装されているとします。でそのgetTXを
途中から呼び出したいとします。以下のような感じでいけると思ったのですが
いまいちうまくいきません。コンパイルが通りません。
int i=0
{
Object tt = Class.forName("prob" + i).newInstance();
}
tt.getTX()
どうすれば、プログラム中でインスタンスを生成してメソッドを
呼べますか?
0906デフォルトの名無しさん
2006/11/19(日) 14:41:020907デフォルトの名無しさん
2006/11/19(日) 14:46:28ありーー。
0908905
2006/11/19(日) 15:05:59int i=0;
Object tt = Class.forName("prob"+i).newInstance();
(Object)tt.get();
みたいにキャストするってこと?コンパイルが通らないです
0909デフォルトの名無しさん
2006/11/19(日) 15:22:11キャストではできない。キャストする型はコンパイル時に決まっている必要がある。
リフレクション使うか、それよりもスマートなのは、
probX型に共通するメソッドgetTX()を持つインタフェースを定義して、その型にキャストする。
0910デフォルトの名無しさん
2006/11/19(日) 15:28:51Prob0, Prob1, ... に共通の親クラスかinterface Prob を用意しておく。
その上で
Object tt = (Prob)Class.forName("Prob" + i).newInstance();
すりゃいいいだろって話だろ。あ、>>909と被った。
0911デフォルトの名無しさん
2006/11/19(日) 15:29:44Prob tt = (Prob)Class.forName("Prob" + i).newInstance();
じゃね?
0912905
2006/11/19(日) 15:33:24例えばインターフェース
get_prob{
getTX();
}
としてクラスmaをつくる。
class ma implements get_prob{
public static void main(String args[]){
int i=0;
Object tt = Class.forName("prob"+i).newInstance();
tt.getTX();
}
}
prob0{
int getTX(){
return 2;
}
}
ということ?
0913デフォルトの名無しさん
2006/11/19(日) 15:34:40output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
displayArea.append("\nI/O ストリームを受信\n");
}
ソケット通信で、outputを指定のIPアドレスに繋げるためにはこれをどう変えたらいいんですか?
0914デフォルトの名無しさん
2006/11/19(日) 15:37:010915デフォルトの名無しさん
2006/11/19(日) 15:40:530916905
2006/11/19(日) 15:43:39できた!!ありがとう!!
0917905
2006/11/19(日) 15:53:59public interface Prob{
getTX();
}
class ma {
public static void main(String args[]){
int i=0;
Object tt = Class.forName("prob"+i).newInstance();
tt.getTX();
}
}
prob0 implements Prob{
int getTX(){
return 2;
}
}
とやってみたんですが、tt.とやったときにちゃんとメソッドgetTXが
エクリプス上で表示されたので大丈夫かと思ったのですが、
書き終わると×がでてコンパイルがやはり通りません。
eclipseがgetTXを実装しろといってきます。実装しているのに
なんでまた実装しろと言われるのかわかりません。
0918デフォルトの名無しさん
2006/11/19(日) 15:55:270919デフォルトの名無しさん
2006/11/19(日) 15:58:24純粋仮想関数の返り値の型が
voidとintだから別の型だって判断されているんじゃないの?
0920905
2006/11/19(日) 16:01:20void と int ?
どこにもvoid なんてしてませんよ。
それにSystem.out.println(tt.getTX());とやっても2と表示されません。
eclipseだからダメとか?
0921ぴゅあ
2006/11/19(日) 16:02:48再帰でやりたいというところは再帰の例として微妙かもしれないような気もするけど…
(素直にfor文とかの方がいいんじゃないかと
ただ再帰処理という処理の流れの中でやるということは出てくることは想定できるでしょうけど)
arrayMinメソッドがうまく書けてないということですよね?
まずはprintArrayメソッドの中でやってみる形で確認してみてはどうでしょうか
或いはそれは解っているからやってないのかも知れませんけど、いちおコードを書いてどういう処理になるのか目に見えるようにして考えてみるのもいいかも
arrayMinメソッド…つまり再帰処理でこれをやろうとすると
1.a[0]〜a[N-1]の値を全て見るように動いてくれないといけない
2.返却値として最小値を返していくようにしないといけない
3.は比較の元になる値とその入れ物がないといけない・・・で、その入れ物としては返却値ですよね
1つ目はif文とarrayMinメソッドの再帰呼び出しで実現できているでしょう
それはarrayMinメソッドの先頭にSystem.out.println("i=" + i);とか入れてみると動きが見えるでしょう
先に…3つ目は2つのreturnが何時呼ばれるかと何を返すかをまず見てみればいいと思うので、returnの直前で返そうとしている値を表示させてみればいいでしょう(どっちのreturnであるかを確認できるように表示して)
なおa[0]〜a[N-1]の値も予め表示して判っているとして
そしてarrayMinの再帰呼び出しの戻りとして返却値が何を返すか、a[]のどの要素を見ることになるかというところで、
戻ってきたときのminの値とiの値がそのとき何なのかを見てみるといいでしょう
その上で2つ目として、小さい方の値を判断するのは何処でどうやって(判定処理)返してやればいいかを考えればできると思います
解り難い説明かもしれないけど
再帰呼び出しを考えるポイントは(1つのメソッド内の一連の流れが1つの層として重なっているとして)今見ているのがどこか(どの層か)
i,a[]の何番目の要素を見るか,minに注目して考えてみるのがいいのかも
0922905
2006/11/19(日) 16:09:06public interface Prob{
getTX();
}
class ma {
public static void main(String args[]){
int i=0;
Prob tt = (Prob)Class.forName("Prob" + i).newInstance();
tt.getTX();
}
}
prob0 implements Prob{
int getTX(){
return 2;
}
}
tt.getTX()でこけます
0923ぴゅあ
2006/11/19(日) 16:20:26なら
>tt.とやったときにちゃんとメソッドgetTXが
>エクリプス上で表示されたので
のというのは判ります
>書き終わると×がでてコンパイルがやはり通りません。
保存するとと言っているのだろうと思いますけど
保存(ソースコードの書き替え)が発生した時点でリビルド(コンパイル)が走るので
Javaで純粋仮想関数とかいう呼び方が出てくるのかどうかは知らないですが
>>919の言っているところをよく考えてみれば?
因みに
>>908で言っているキャストは
(Objectにキャストしているという点だけでなくて)扱い方間違ってない?
0924デフォルトの名無しさん
2006/11/19(日) 16:23:35public interface Prob{
int getTX(); // int 重要
}
0925デフォルトの名無しさん
2006/11/19(日) 16:31:35なんかえらくはしょって書いてないか?
0926ぴゅあ
2006/11/19(日) 16:43:10そうそう
あと
>それにSystem.out.println(tt.getTX());とやっても2と表示されません。
は実行はできたということなんでしょうけど
コンパイル通ったんだろうか?という気もしないでもないです。。。
0927デフォルトの名無しさん
2006/11/19(日) 17:05:24public interface Prob{
でコンパイルとおったっけ?
0928デフォルトの名無しさん
2006/11/19(日) 17:06:12まちがい、下の
getTX();
で
0929デフォルトの名無しさん
2006/11/19(日) 17:14:50当然通らない
0930デフォルトの名無しさん
2006/11/19(日) 17:21:21TreeSet ts = new TreeSet();
ts.add("cc");
ts.add("bb");
ts.add("aa");
ts.add("ee");
System.out.println("***TreeSet***");
for(Iterator it = ts.iterator(); it.hasNext();) {
System.out.println(it.next());
for文のなかのIterator it = ts.iteratorが、どういう処理、また意味があるのか分かりません。
0931デフォルトの名無しさん
2006/11/19(日) 17:25:46TreeSet型(のts)に対して、要素セットの反復子を取得しています。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Iterable.html
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Iterator.html
0932デフォルトの名無しさん
2006/11/19(日) 17:28:57public interface Prob{
int getTX();
}
class ma {
public static void main(String[] args){
int i=0;
Prob tt = null;
try {
tt = (Prob)Class.forName("Prob" + i).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(tt.getTX());
}
}
class Prob0 implements Prob{
public int getTX(){
return 2;
}
}
0933ぴゅあ
2006/11/19(日) 17:30:10他で質問したものに付いてるレスは参考になってない?
0934デフォルトの名無しさん
2006/11/19(日) 17:33:52catchしたあとそのまま先に進んでるね
0935905
2006/11/19(日) 20:23:280936デフォルトの名無しさん
2006/11/19(日) 21:14:23AffineTransformのrotateで傾けた後
JFrameに表示させたんですが,
その傾けた後の画像を
もう一度BuffredImageとする方法が分かりません
どのようにしたらいいでしょうか?
0937デフォルトの名無しさん
2006/11/19(日) 21:38:25int w = comp.getWidth(), h = comp.getHeight();
BufferedImage image = new BufferedImage( w, h, BufferedImage.TYPE_INT_RGB );
Graphics2D g2 = image.createGraphics();
comp.paint( g2 );
g2.dispose();
ImageIO.write( image, "jpeg", new File( "savedImage.jpeg" ) );
しかし
int w = comp.getWidth(), h = comp.getHeight();
では画像が切れてしまうのが難点。
0938デフォルトの名無しさん
2006/11/19(日) 23:51:01純粋仮想関数ってなんのことだ?
0939デフォルトの名無しさん
2006/11/19(日) 23:51:450940デフォルトの名無しさん
2006/11/20(月) 00:05:47とりあえずはじめてのジャバ読み終わりました
で・・・次になんかDBにアクセスしてデータいじるPG
勉強したいのですが・・・
ジャバアプリケーション勉強すればいいのでしょうか
それともサーブレット+JSPやればいいのでしょうか
なんか世の中の流行で行くと後者みたいですが
そもそもアプリケーションはマイナー(過去の遺物)なのでしょうか
教えてください先輩方
0941デフォルトの名無しさん
2006/11/20(月) 00:40:31傾けた後の画像のサイズ分だけ拡げたものを最初から用意すればいいんじゃないか?
0942デフォルトの名無しさん
2006/11/20(月) 00:44:02そですね。解決いたしました
(int)(image.getWidth() * (Math.abs(Math.sin(theta)) + Math.abs(Math.cos(theta))));
って感じのやつにしましたです
ありがとでした
0943デフォルトの名無しさん
2006/11/20(月) 00:46:28創るJavaか独習Java
の後コアJavaへ。
まあできるならコアJavaをいきなりでも
かまわないと思うけど。
で、サーブレット+JSPは別の本で勉強すべし。
全部やれよ。
そうすれば重労働だが飯は食える。
後TCP/IPもな
0944デフォルトの名無しさん
2006/11/20(月) 01:11:54なるほどコアJavaね・・・
高!!!!!!!!!
アプレット中心に載ってる
初めてのジャバ応用編買ってしまった俺って・・・
ところでJavaアプリケーションってヤッパつかってる人いないのかなあ
0945ぴゅあ
2006/11/20(月) 01:27:35(微妙に文面に気になるようなところがあるような気がしたりするところもあったりだけど…)
実際どんなの作ってるのか見えきれないところはあったりするけど
ここに出てきてる話って殆どがアプリケーションぽくて(或いは多少アプレット)
サーブレットとかJSPとか殆ど出てきてなさそうに思えない?
0946デフォルトの名無しさん
2006/11/20(月) 01:59:10俺今日基礎編読んだ。
応用は明日からだな。
JSPとサーブレットはテキトーで。
0947デフォルトの名無しさん
2006/11/20(月) 08:58:49色々とやってみましたが、どうも上手くいきません…
説明までしてくださったのに力不足です。
どのようにすれば求められるのかぴゅあさんの模範ソースを教えては戴けないでしょうか?
それを元に次は最大値を求めるソースを書いてみるつもりです。
あつかましいですが、どうかよろしくお願いします。
0948ぴゅあ
2006/11/20(月) 09:24:10ホントにあつかましいわね。
ソースには著作権がありますから無理です。
もう書き込まないでくださいね。
0949ぴゅあ
2006/11/20(月) 09:50:27何とか導き出せなかったのは残念ですが…
static int arrayMin(int[] a, int i) {
System.out.println("I: i=" + i);
if (i > 0) {
System.out.println("C: a[" + (i - 1) + "]=" + a[i - 1]);
int min = arrayMin(a, i - 1);
System.out.println("R1: min=" + min + " a[" + (i - 1) + "]=" + a[i - 1]);
// if (min > a[i - 1]) {
// min = a[i - 1];
// }
// System.out.println("R: min=" + min);
return min;
}
System.out.println("R2: a[" + i + "]=" + a[i]);
return a[i];
}
まず"if (i > 0)"によりa[9]〜a[0]についてarrayMinメソッドの再帰呼び出しが起こりますよね
(>>921で1つ目と言っていたところ)
i=0でarrayMinメソッドが呼ばれたら、末尾のreturnが実行されa[0]を返却値に戻り
最後のarrayMinメソッドの呼び出しに戻る,つまりminの値はa[0]となる
つまりその前の1つ目のreturnでminを返却値として戻る
以降、順次1つ目のreturnで戻ることになる
(同じく3つ目と言っていたところ)
それらはまず上記のコードで確認してみれば判るでしょう
そして2つ目と言っていたところは上記のコードのコメントアウトしてあるコードを生かしてみれば確認できるでしょう
0950ぴゅあ
2006/11/20(月) 09:51:301点無駄があることに気付くかも知れません
例えば
C: a[0]=86
I: i=0
R2: a[0]=86
R1: min=86 a[0]=86
R: min=86
となりますが
"R1: min=86 a[0]=86"のminはa[0]
つまりa[0]同士で"if (min > a[i - 1])"をやっていることを示しているでしょ?
a[0]が返される(i-1=0)ときは比較対象がないんですから
arrayMinメソッドを呼ぶ必要はなく
末尾のreturnで戻るだけをすればいいということになるでしょう
C: a[1]=57
I: i=1
R2: a[0]=86
R1: min=86 a[1]=57
R: min=57
そこは宿題にしてみます
0951デフォルトの名無しさん
2006/11/20(月) 11:12:50Class A と Class B を作って A のメインクラスで B のオブジェクトを利用します。
それでしばらく使っていたんですが、ある時ふと、B のオブジェクトから A 非 static なメソッドを利用したいと思って、
そこで B のクラス内で A のオブジェクトを作るコードを書いて実行してみました。
実は実行するまでこのアプリは無限にオブジェクトをループで作り続けて実行できないと思っていたのですが、
実際は何も問題無くできたんです。
さて、どうして無限にオブジェクトができなかったんだろう?って疑問に思ったんですが、実際プログラムはどんな参照をして
動いていたんでしょうか。
お馬鹿な質問ですがよろしくお願いします。
0952デフォルトの名無しさん
2006/11/20(月) 11:24:18B のクラス内で A のオブジェクトを作ったからといって
A のメインクラスが実行されるわけではないから。
つまり、Bのクラス内で A のオブジェクトを作っただけ
なら、そのとき作られた A のオブジェクトの中で、「新
たに B のオブジェクトを作るロジック」が動作するわけ
ではない。
0953デフォルトの名無しさん
2006/11/20(月) 11:29:51ありがとうございます。
でも、どうして新たに B のオブジェクトを作ろうとしないのでしょうか。
A のクラス内には B b = new B(); が実行されているのに不思議だと思います。
勉強が足りなくてすみません。
0954デフォルトの名無しさん
2006/11/20(月) 11:34:080955デフォルトの名無しさん
2006/11/20(月) 11:35:52す、すみません!(;_;
分かりやすく教えて頂けると思ったので・・・・。
本にも聞いてみます!
0956ぴゅあ
2006/11/20(月) 11:55:28本に聞いてもすんなり答えてくれることは少ないかも?と思ったりもするけど…
AでBのオブジェクトを作っているのが何処か
BでAのオブジェクトを作っているのが何処か
>B のオブジェクトから A 非 static なメソッドを利用したい
という中で"AでBのオブジェクトを作っている"(相互に作り続ける)という流れを通っているか
書いたコードの流れをしっかり追ってみる
>>951が言わんとしているのはそういうところだろうし
>>954の言う"足りるまで勉強して来い"というのは
そういうところ(追え)でしょうねぇ?
0957ぴゅあ
2006/11/20(月) 11:59:10自分で書いたコードなんだから
というところ
0958デフォルトの名無しさん
2006/11/20(月) 12:01:35ぴゅあさん、レスありがとうございます。
丁寧な解説で、どのように再帰が動いているのか掴むことが出来ました。
宿題の方ですが、「末尾のreturnで戻るだけ」という事は、単純にmainメソッドの方で
このように呼び出せば良いという事でしょうか?
System.out.println("Min number: "+arrayMin(array, array.length));
また、maxの値ですが、
static int arrayMax(int[] a, int i){
if(i > 0){
int max = arrayMax(a, i-1);
if (max < a[i - 1]) {
max = a[i - 1];
}
return max;
}
return a[i];
}
とし、同じように
System.out.println("Max number: "+arrayMax(array, array.length));
と呼び出してやれば良いでしょうか。
0959ぴゅあ
2006/11/20(月) 12:39:27いやそれは
>System.out.println("Min number: "+arrayMin(array, array.length));
(当然ながら欲しいものだから)結果を表示しているというだけで
触るのはarrayMinメソッドの中
>>949の中で殆ど答えになるようなヒントは出ていると思いますけどね
>a[0]が返される(i-1=0)ときは比較対象がないんですから
>arrayMinメソッドを呼ぶ必要はなく
>末尾のreturnで戻るだけ
例として挙げた2つの結果をよく見比べ、
またiの値によってどう流れが変わるか絵に描いて考えてみたりするといいかも
たぶんその流れの部分を理解できるかが
再帰呼び出しの処理を理解する上での"キモ"かも
arrayMaxメソッドについては確認するまでもなく
arrayMinメソッドができれば簡単よね("最小値を採る"の代わりに"最大値を採る"にするだけだし)
あと、>>921の冒頭で書いたfor文内でやるのはちゃんとやって検証しておいた方がいいと思う
(簡単だからとか解ったつもりで頭でイメージするだけでなく、ちゃんとコードを書いて実行し、結果を得ること)
最小値,最大値を求めたりという場面はfor文内とかの方が多かったりするかも?
また、for文内で処理するとき、再帰呼び出しで出てきたようにa[0]或いはa[9]等、
1つはループから除外するとかという形になったりすると思うけど
(除外するという形の方が簡単で判り易いだろうと思うけど)
ループ内でa[0]或いはa[9]等を判断して場合分けするようなのもオマケでやっておくのもいいかも
ループ内での処理の仕方を知っておく上では損はないだろうと思います
(再帰呼び出しについて理解しようとしているということに限れば余計なことだろうけど)
まぁそれはarrayMin/arrayMaxメソッドの後にでもやろうと思えば…ってことで
0960デフォルトの名無しさん
2006/11/20(月) 13:03:06ありがとうございます。やってみます。
0961デフォルトの名無しさん
2006/11/20(月) 15:04:37ぴゅあさんありがとうございます。
B のオブジェクトが A のオブジェクトを作ったときに、作られた A のオブジェクトが B のオブジェクトを
作るコードの所を通っているかどうかを確認しなさいって事ですね。
今から暇を見て確認してみます。
それよりも、相互に作り続ける簡単なコードを書いてもいいかもですのでやってみます。
0963961
2006/11/20(月) 15:41:30結果、StackOverflowError が発生して処理がストップしました。
少しずつ>>952さんの説明が理解できて来ました。ありがとうございます。
当り前な事でも馬鹿な実験でもしないと理解できない飲み込みの悪い新人でした。
お邪魔しました。
0964デフォルトの名無しさん
2006/11/20(月) 15:44:12//Exercise1.java
class Exercise1{
public static void main(String args[]){
float a;
a=2.0;
System.out.println("変数aの値は"+a+"です");
}
}
これでコンパイルすると、エラーが出ます。
検出値:double
期待値:float
となります。
doubleで宣言してやるとうまく行きましたが、どうしてfloatで宣言できないのでしょうか?
0965デフォルトの名無しさん
2006/11/20(月) 15:51:022.0という値の型がdoubleだから。
2.0f と書くとfloatの定数になる。
0966デフォルトの名無しさん
2006/11/20(月) 16:14:15すいません。理解できません。
本には、floatとdoubleの違いは、扱える桁数にある、と書かれていたのですが…
それ以外にも違いがあるということでしょうか?
0967デフォルトの名無しさん
2006/11/20(月) 16:16:33double から float への変換は、精度が悪くなる変換なので
キャストしないとコンパイル時に怒られる。
float から float なら問題ないけど。
0968ぴゅあ
2006/11/20(月) 16:22:55>>963
>当り前な事でも
誰が当たり前と決めたのか知らないけど
どんな些細なことでも実際にやってみることが大切だと思いますけどね
0969デフォルトの名無しさん
2006/11/20(月) 16:33:58せっかく答えて頂いたのに、私の理解力が追いついていません。
とりあえず、入門書を一通り読んでから、また来ます。
ありがとうございました。
0970デフォルトの名無しさん
2006/11/20(月) 17:16:302.0 と書いただけだと double になるのよ。だから内部的には2進数で
0100000000000000000000000000000000000000000000000000000000000000
として保持される。64ビットを使って表現してるわけですよ。さてここで
あえて float だと指定してすると(※ 2.0f と書く(>>965を参照))今度は
01000000000000000000000000000000
というように32ビットの表現になるわけですよ。扱える桁数が違うとか、
数値の精度が違うというのは、こういうことです。
>>964>>966>>969は、わかりましたか?
0971970
2006/11/20(月) 17:20:420972デフォルトの名無しさん
2006/11/20(月) 17:33:26float と double の違いは、扱える桁数にある
⇒ 桁数が多いほうから少ないほうへ不用意に変換すると、値が変わってしまうことがある
⇒ もしプログラマ側が意図していない変換だとバグの元になる (実際この手のバグでロケットが墜落している)
⇒ コンパイラが親切にも警告を出してくれる
OK?
0973デフォルトの名無しさん
2006/11/20(月) 17:43:29ちょっと解かったかもしれません。
つまり、
>>964でコンパイル出来るということは、32ビットで作業しているから。
本の作者は32ビットの環境でコンパイルしていたって事でしょうか?
Java のバージョンの問題?
OSの違い?
0974デフォルトの名無しさん
2006/11/20(月) 17:43:50ある型の変数に異なる型の値は入れられない、
というのを理解しているんだろーか。
0975デフォルトの名無しさん
2006/11/20(月) 17:45:32もしくは本のバグ
0976デフォルトの名無しさん
2006/11/20(月) 17:50:3232bit の環境でコンパイルしたとか、OS が違うとかは考えにくい
java もしくは javac のバージョンが違うというのは、まあよくあること
最も多いのは、本の誤植もしくはバグ
0977デフォルトの名無しさん
2006/11/20(月) 17:55:31それは大丈夫だと思います。
int に 2.0 は入れられないということですよね。
int a;
a=2;
としなければいけないのは解かります。
2.0 は double で、2.0f とすれば float ということですね。
0978デフォルトの名無しさん
2006/11/20(月) 18:07:54私のバージョンは 1.5.0_09 でした。
Java のバージョン違いが原因?
とにかく、2.0 だと double になるというのが解かったので、本の float を double に置き換えながら、読み進めたいと思います。
0979デフォルトの名無しさん
2006/11/20(月) 18:09:25その本の名前を書いてちょ
0980デフォルトの名無しさん
2006/11/20(月) 18:18:48世界でいちばん簡単な
Java の e 本
Java の基本と考え方がわかる本
2003年6月1日 第1版第1刷発行
著者 堀江 幸生
発行 株式会社秀和システム
ISBN4-7980-0533-9 C3055
です。
0981デフォルトの名無しさん
2006/11/20(月) 18:21:29うーん、改訂入ってるんじゃないかな・・・
0982デフォルトの名無しさん
2006/11/20(月) 18:30:01ttp://java.sun.com/applets/jdk/1.4/index.html
このページのGraphLayout (1, 2, 3, 4)のデモアプレットのソースが全部同じなんですけど
これのソースってどこかにないでしょうか?
0983デフォルトの名無しさん
2006/11/20(月) 18:43:30よく見ろよ
0984ぴゅあ
2006/11/20(月) 18:57:38>とりあえず、入門書を一通り読んでから、また来ます。
と言ってたからそれでいっか と思ってたけど、>>965,>>967で十分なものが出ているんじゃないかと思いました
(>float から float なら問題ないけど。
は"float aからfloat bへの代入…"とかいう表現の方がいいのかな?と思ったりはしたけど)
>>966では
>本には、floatとdoubleの違いは、扱える桁数にある、と書かれていたのですが…
ということだけど、"扱える桁数にある"というところもよく理解できていないような気もしたりします
解らなければ仕方ないのだろうけど
変に考え込み過ぎているんじゃないだろうか?という気もしたりです
コンパイラがエラーだと言っているんだから
解らないと思ううちは解らないなりに素直に従えばいいような気がしますけど
(いちおでも>>965,>>967の言ってることを把握できていれば)
また>>964に示されたコードはその本に書かれていたものなのでしょうか
あちしが選んで最初に買った唯一のJavaの書籍はかなり古いですが、>>965,>>967が言ってることはちゃんと解説されています(JDK 1.0.2頃に書かれたものらしい)
因みに最近主に使っているのは1.4.2_12で1.4.1よりは新しいけど、確認してみるとちゃんとエラーとして通知されるようです
>>964で
>これでコンパイルすると、エラーが出ます。
>検出値:double
>期待値:float
>となります。
と書かれているところから
"Exercise1.java:8: 精度が落ちている可能性"とか出ているだろうところを
落としてしまっているところにも理解に至れない問題があったりするのかも?
0985デフォルトの名無しさん
2006/11/20(月) 23:00:42>>964のコードは、本に書かれていた通りのものです。
float と double の違いについては殆ど触れられておらず、悩んだ挙句にここへ質問に来たわけです。
さっき、書店によって、他の本を見てきたところ、
「 float a=1.0f; 」と、数値の後に f をつける必要があるので注意と、ちゃんと書かれていました。
どうも、私の買った本に誤植があったということみたいです。
いろいろ教えてもらって、本当にありがとうございます。
こんなに親切なスレは初めてです。
0986デフォルトの名無しさん
2006/11/20(月) 23:02:200987デフォルトの名無しさん
2006/11/20(月) 23:06:590988デフォルトの名無しさん
2006/11/20(月) 23:14:28同じだとおもうんですけど…
0989デフォルトの名無しさん
2006/11/20(月) 23:18:26できます
0990デフォルトの名無しさん
2006/11/20(月) 23:27:51HTML ファイルのソースをよく見ろよw
0991デフォルトの名無しさん
2006/11/21(火) 02:16:150992デフォルトの名無しさん
2006/11/21(火) 03:35:58どう直せばいいのですか?
public class SE {
static final int EXTERNAL_BUFFER_SIZE = 128000;
static AudioInputStream audioInputStream;
static AudioFormat audioFormat;
static DataLine.Info info;
static SourceDataLine line;
static File soundFile;
static SE se = new SE();
private SE(){
try{
soundFile = new File("se_saa01.wav");
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
audioFormat = audioInputStream.getFormat();
info = new DataLine.Info(SourceDataLine.class,audioFormat);
line = (SourceDataLine)AudioSystem.getLine(info);
}catch(FileNotFoundException fe){ fe.printStackTrace();
}catch(IOException ie){ie.printStackTrace();
}catch(Exception e){
}
}
0993デフォルトの名無しさん
2006/11/21(火) 03:36:46public static void pico(){
try{
line.open(audioFormat);
line.start();
int nBytesRead = 0;
byte[] adData = new byte[EXTERNAL_BUFFER_SIZE];
while(nBytesRead != -1){
nBytesRead = audioInputStream.read(adData,0,adData.length);
if(nBytesRead >= 0){
int nByteWritten = line.write(adData,0,nBytesRead);
}
}
line.drain();
line.close();
}catch(Exception e){System.out.println(soundFile);}
}
}
0994デフォルトの名無しさん
2006/11/21(火) 03:58:13{}を付けなかった場合のif範囲ですが、例えば以下のようなコードで…
int i = 2;
if (i == 1)
System.out.println(1);
System.out.println(2);
if (i == 2)
System.out.println(3);
System.out.println(4);
この場合、コンソールには2,3,4が出力されます。
感覚的に3,4の出力を期待してしまうのですが、
これは特に{}で範囲を指定しない場合、
ifが見るのは直近の処理1つのみだからという認識でよいでしょうか?
0995ぴゅあ
2006/11/21(火) 05:50:34は?
0996ぴゅあ
2006/11/21(火) 05:55:58埋める。
| What search for?
| It's cool!!!
| ┌────────────┐
| | How to eat you? |
| | |
| └────────────┘
| [ オプション(O) ] [ 検索(S) ]
|
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
0997デフォルトの名無しさん
2006/11/21(火) 05:57:44どういう風にpicoを呼び出しているか分からないが、
そこに出ているソース以外には、SE.pico();SE.pico();しかないのなら、
二度目のpicoの呼び出しの時にはaudioInputStreamにはデータが残ってないから。
lineはpicoの呼び出しのたびに開いているのに、
audioInputStreamをSEのコンストラクタでしか開いていないのなら当然1回しか鳴らない。
>>994
if文で条件が成立したときに実行されるのは一つの単文か{}のブロックに囲まれた一つの複文。
どこまでがifの下についているか紛らわしいので、単文一つしかない時でも{}で囲めという規範の人もいる。
そのあたりはコーディング規約に従うか、無ければ個人の趣味に従うかすればいいと思う。
0998ぴゅあ
2006/11/21(火) 05:59:41| It's cool!!!
| ┌────────────┐
| | How to eat you? |
| | |
| └────────────┘
| [ オプション(O) ] [ 検索(S) ]
|
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
0999ぴゅあ
2006/11/21(火) 06:01:05| What search for?
| It's cool!!!
| ┌────────────┐
| | How to eat you? |
| | |
| └────────────┘
| [ オプション(O) ] [ 検索(S) ]
|
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
1000デフォルトの名無しさん
2006/11/21(火) 06:01:38さいごのしょうしゃはかなりあかしらかしら〜
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。