トップページ⇒tech
1001コメント322KB

【初心者】Java質問・相談スレ4【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。雑誌や宿題などの疑問を質問するときは出展を明記した
ほうが解決が早いです。

関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)


JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/

パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/

上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。
0557552追記NGNG
16進コードの元の文字コードによっては String(byte[] bytes,String enc) を使って
Javaで使用している16 ビット Unicode 文字に変換することもできる。

BigIntegerを使ったのは、昔それでうまくいったからなだけで、多分もっと良い方法も
あるのかも。
0558デフォルトの名無しさんNGNG
>>556
ここではJSPとかServletは分からんので >>498 のスレッドがあるし
そこで聞いてくれ。
0559デフォルトの名無しさんNGNG
>>558
> ここではJSPとかServletは分からんので

勝手に決めないでね。
0560君てぇしぉNGNG
Cだと
char buf[128];
int a=*(int*)&buf[16];
なる書き方をするところを、Javaで書くとどうなるのでしょうか。
お願いします。
0561532NGNG
>>549
ご丁寧にありがとうございます。
しっかりメモりました。
もっと勉強がんばります。
0562デフォルトの名無しさんNGNG
>560
「文字列bufの17番目の文字へのポインタを、int型のポインタへキャストし、その値を得ている」のですか?
多分JAVAではポインタ使わないで
char buf[] = new char[128];
・・・
buf[i] = 'a';
・・・(値は入れるんですよね?)
・・・
int a = (int)buf[16];

または

String buf = new String("This is a test. 02/07/22 14:56");
int a = (int)(buf.charAt(16));
とかなるのでは。


0563名無しNGNG
servlet使ってブラウザから入力した値をFileOutputStream
を使ってtxt形式で吐き出しました。この際、デフォルトで指定されているのか、
tomcatのルート配下のbinディレクトリにtxtファイルが出来上がります。
吐き出す場所を指定するにはどうすればいいのでしょうか?
0564君てぇしぉNGNG
>>562様
ありがとうございます。
説明が不十分だったので、改めて説明します。
私が考えているのは、
unsigned char buf[128];
int a=buf[16];
ではなく、

unsigned char buf[128];
int a=*(int*)&buf[16];
に相応する操作を行いたいのです。
別の書き方をすれば
int a=buf[16]+buf[17]*256+buf[18]*256*256+buf[19]*256*256*256;
と同等になります。(厳密には違うが)
Javaでも上記の書き方は可能だと思いますが、できればスマートにやりたいので…

宜しくお願いします。


0565でふぉるとんNGNG
Byte[] b;
ByteArrayInputStream ba = new ByteArrayIntpuStream(b);
DataInputStream s = new DataInputStream(ba);
s.skipBytes(16);
int a = s.readInt();

とか。
Intel系ではエンディアンが違うのかな。
NIOのByteBufferなんか使えばもっと「スマート」に書けるかも
0566君てぇしぉNGNG
>>565様
ありがとうございます。
なるほど、Javaではこういうやりかたをするんですね。

ただ、「Stream」ですか…
Readすると、ポインタが強制的に先に進んで行っちゃうんですよね。

Byte単位での処理ならいいんですが、Bit単位の処理を行いたいから、
ポインタは自分で管理したいんですよね。
いい方法あれば、それを、なければその旨を教えていただければ
ありがたいのですが。
0567デフォルトの名無しさんNGNG
>>560
それってスマートなん?
バイトオーダが違うと、
正しく実行されないよね?
俺には その場しのぎの
「汚い」コードに見えるんだが。

>>565
DataInputStream は big endianって書いてあるよ。
探せば LittleEndianDataInputStream とか
作ってる人もいるみたいだけど。
0568デフォルトの名無しさんNGNG
>>566
Bit単位の処理だけであれば
ポインタの管理なんか必要ないよ。
int bitbuff;
とかやって bitbuff が空になったら次
読めばよいではないか?
0569デフォルトの名無しさんNGNG
>>566
ByteArrayInputStream だったら、
mark(), reset(), skip()連発するとか。

ファイルから読み込むなら、RandomAccessFile 使うとか。
0570デフォルトの名無しさんNGNG
>>559
ならば歯に衣着せないで、はっきり言おう。

>>556
こ こ は 初 心 者 ス レ だ >>498 に 書 い て あ る 専 門 の ス レ ッ ド で 訊 け
0571君てぇしぉNGNG
>>567
>>568
>>569
ありがとうございます。
私がやろうとしているのは、ハフマンの方法で圧縮されたデータのデコードです。
Bit単位で処理を行うわけですが、次に得べきデータのBit長はデータを
読んでからでないとわかりません。
したがって、16bit読んでは、データの内容と、長さを判別し、
長さ分、ポインタ(Bit単位の)を進めるのです。
メモリに近づくことが可能なCだと、上に示した方法で安直にできるのですが、
Javaでは難しいのでしょうか。
0572デフォルトの名無しさんNGNG
>>571
Pure Java の Zip とか LHA とか作ってる人居るから
調べてみれば? Googleで調べりゃ出てくるでしょう。
jazz とかいう jazzlib とか言う名前だったような…>Zip
0573デフォルトの名無しさんNGNG
>>571
ハフマンのデコードだったら、
最初は 1ビットづつ ハフマンツリーを
たどってくのが基本だよね。
速度遅いけど、練習で作ってみたほうが
>>571 の望むものは早くできるかもね。
0574デフォルトの名無しさんNGNG
JTableで、セルを編集した時カーソルを他のセルに移動しないと編集がテーブルモデルに反映されないの
されるようにしたいんだけど
0575君てぇしぉNGNG
>>570
Javaについては初心者です。

>>572
早速調べてみたいと思います。

>>573
1bitずつの処理だと速度かなり遅くなりそうな…
すでにC++で作ったものをJavaに移植したいので、改めてそのあたりの
ロジックを組むのはできれば避けたいです。

---
とりあえず、原始的に、
int a=buf[16]|(buf[17]<<8)|(buf[18]<<16)...;
でやろうと思います。
レスをつけていただいた皆様、貴重なご意見ありがとうございました。
0576デフォルトの名無しさんNGNG
キャンディ50個を子ども六人に均等に分けるとき、一人当たりの個数とあまりの
個数を整数の演算子を使って求めること。
↑誰かこの問題解いてください。
set path=%path%;c:\school\j2sdk1.4.0\bin
setclasspath=a:\kadai
じゃ無理でした・・。
セットパス自体通りません〜。
0577デフォルトの名無しさんNGNG
50/6=8・・・2
0578デフォルトの名無しさんNGNG
>>576
まずは setclasspath の set と classpath の間にスペースを入れてみるのは
どうか?
0579デフォルトの名無しさんNGNG
javaで、あるディレクトリの".txt"ファイルを全部取得。みたいな
ことはどうやってするんですか?

"/Directory/*.txt"じゃあできませんでした。
0580デフォルトの名無しさんNGNG
夏か。
夏なのか。
夏のせいなのか。

いくら初心者スレっていってもな〜。
VBと同じレベルと化してるZO!
0581デフォルトの名無しさんNGNG
>>580
答える気が無いならカエレ!
0582デフォルトの名無しさんNGNG
>581
も答える気ないなら帰れば?
ネタと思うが、突っこんどく。

>579
java.io.File#listFile()、getName()あたりでないのかな。
0583デフォルトの名無しさんNGNG
Javaでガベージコレクションがいま走っているかどうか知る方法
はありますか?あったら教えてください。
0584デフォルトの名無しさんNGNG
>>583
リソースメーター
0585デフォルトの名無しさんNGNG
二つの数値配列データあるんだけど
これをグラフにしたいんだけどJavaってグラフはどうすればいいんでしょうか
0586ミトコンドリアNGNG
すいません。教えて欲しいのですが、
「2〜3枚の絵をアニメーションとして順番に表示させるようにする」っは出来るのですが、
「一つの画面上で別の複数のアニメーションを表示させる」になると、エラーが出っ放しでわかりません…
JavaScriptでしたいのです。教えてください
0587デフォルトの名無しさんNGNG
>>585
java.awt.graphics.*
0588ミトコンドリアNGNG
何か場所違いますね、すいませんweb製作ってとこですね
0589デフォルトの名無しさんNGNG
JAVAでブラウザを作ろうとしているのですが、htmlのソースをウェブページから読み取ることまでできたのですがそれを表示できません。
自分はよくわからずアプレットに表示させたいと思っているのですが、それは可能ですか?また可能ならどのようにすれば良いにでしょう?教えてください。馬鹿な質問かもしれませんがメチャクチャ苦しんでます助けてください
0590デフォルトの名無しさんNGNG
>>589
デコーダ書く。
0591デフォルトの名無しさんNGNG
>>590 なんだよデコーダって
レンダラだろ
つーか適当なコンポーネントにHTML突っ込めばいいだけじゃ
なかったっけ?
0592デフォルトの名無しさんNGNG
>589
ソースを読み取るっていうのは、きちんと文字列で取れたのか?回り道かも知れんが、とりあえず世の中にはパーサ、構文解析というものがあると思うぞ。調べてみなされ。将来的には役に立つぞ。
0593デフォルトの名無しさんNGNG
>>589
とりあえずアプレットとアプリケーションの違いは勉強しよう。
で、どの程度のブラウザを作りたいのか要求仕様を決めよう。
HTML3.2レベルでよいならとりあえずJEditorPaneの使い方を覚えよう。
それ以上を望むなら590のいうとおり自前でなんとかしよう。
俺がなにいっているかわかんなかったらgoogleの使い方を覚えよう。
でも俺ならSWT+IEコンポーネントかな。<<Javaの意味ないけど。
0594589NGNG
こんな短時間にたくさんの返事マジでうれしいです。
残念ながら現在の知識ではうまく答えられませんが皆さんの上げてもらったキーワードをもとにもう少し勉強してみます。
やる気がでてきました!!
0595デフォルトの名無しさんNGNG
BigDecimalとかBigIntegerでルートの計算がしたいときは
どうすればいいですか?
0596デフォルトの名無しさんNGNG
>>595
テーラー展開
0597デフォルトの名無しさんNGNG
質問です。

javax.swing.Timerを使っているのですが、
delay = 1(ms)とかにしてもdelay = 100より速くならず、
どうも最小値が内部的に100になっているような気がするのですが、
正しいでしょうか。
また、100より小さいdelayを使いたいときはどうすればいいのでしょうか。
代替案などでも結構ですので、教えていただければ幸いです。
0598デフォルトの名無しさんNGNG
>>596
マクローリンでも可。
0599デフォルトの名無しさんNGNG
>>597
一部のOSでは100ms以下の制度を保証してなかったな
Windowsだけだっけ?
0600デフォルトの名無しさんNGNG
JAVAで、クリッカブルマップのような、画像データ上に
任意の形をしたポリゴンを作成することはできますか?
0601デフォルトの名無しさんNGNG
>>600
Java 3Dって言うか何がしたいんだろう・・・?
0602デフォルトの名無しさんNGNG
クリッカブルマップと Java3Dのポリゴンは関係ないような… とか言ってみるテスト。
0603デフォルトの名無しさんNGNG
画像表示してるコンポーネントに MouseListener 付けて、
java.awt.Polygon 等の java.awt.Shape の実装クラスで
マウスポインタが範囲内かを contains で判定するとか。
そんな感じで… できませんか?
0604デフォルトの名無しさんNGNG
>>603
やってみればいいじゃん。
0605デフォルトの名無しさんNGNG
>>604
いや 600 != 603 なので、やってみればいいじゃん。とか言われても。
0606デフォルトの名無しさんNGNG
>>601
>>602
クリッカブルマップですと、ブラウザーに表示した画像データ上に
任意の形をしたポリゴン?が作れて、ボタンができますよね?
でも、そのポリゴン?に色分けで塗りつぶしってできますか?
JAVAならどうなるのかな?と思ったのですが・・・。
0607デフォルトの名無しさんNGNG
>>606
なんかJavaとHTMLを同列に考えてるみたいでアレだが・・・やろうと思えば何でもできる。
0608デフォルトの名無しさんNGNG
>>606
>任意の形をしたポリゴン?が作れて、ボタンができますよね?
ボタン? 出来たっけか?
0609デフォルトの名無しさんNGNG
>>607
>>608
ボタンってゆーのは、ポリゴン?そのもののことです・・・
押すとアクションするので、ボタンといってしまいました。

実は、GISアプリケーションをつくりたいのですが、
何十万もするGISソフトはとてもとても手がでないので、
JAVA、VBとかのアプリケーションソフトで
プログラムしたいのですが、なんの言語がおすすめでしょうか?
話が脱線してしまいましたが・・・。
0610デフォルトの名無しさんNGNG
>>609
そのGISソフトがなぜ数十万するか考えてみるのもいいかもね。
0611デフォルトの名無しさんNGNG
>>609
Javaでも出来ることは出来るよ。
個人的には オススメしないけど。
最近の風潮では、そーゆー描画関係は
ブラウザに任せちまえってのもあるしね。
0612デフォルトの名無しさんNGNG
>>610
詳細な地図が矢鱈と高いだけかと・・・
0613デフォルトの名無しさんNGNG
>>612
彼は小学校の周りの町探検地図でも作るのか?
0614デフォルトの名無しさんNGNG
>>613
じゃあ何か?
世界地図表示して各国の
名前と人口と国民総生産でも表示させる気か?
0615デフォルトの名無しさんNGNG
>>613
探検! ぼくのまち!
0616デフォルトの名無しさんNGNG
よって地図を買わないと結局ソフト作っても無意味。
でよろしいか?
0617デフォルトの名無しさんNGNG
>>616
いや、元の質問社の口ぶりだと
既に地図を持ってるだろ?
0618デフォルトの名無しさんNGNG
>>610
〜
>>617
いろいろな意見ありがとうございます。
地図はあります。市町村の管内図とか地籍図とかあるので、
それをスキャンすれば画像データは買わなくてもいい状態です。
仕掛けとしては、人ごとに分筆されている土地部分をマウスで
クリックすると、別ウィンドウに面積とか所有者とかのデータを
だそうとしています。

JAVAですと、具体的にどのような記述(命令)がつかえますか?
0619デフォルトの名無しさんNGNG
>>618
まず、常識レベルに言語のこと覚えなされ。
0620デフォルトの名無しさんNGNG
>世界一のJava(TM)ユーザーを抱える NTT DoCoMo よりJavaOne(SM)への期待コメント

SDCからこんなメールが来たんですが、
NTT Docomo社員の誰が世界一のユーザーですか?
また、どうやって世界一をきめたんでしょう?
0621デフォルトの名無しさんNGNG
>>620
前やってたじゃん。天下一武闘会。
いやぁ、Swingピッコロ大魔王が出てくるとは思わなかったよ・・・。
0622デフォルトの名無しさんNGNG
>> 599
ありがとうございます。

では、100msecより短い時間でなにかを動かしたいときは、
いったいどうすればいいでしょうか。
0623デフォルトの名無しさんNGNG
>>621ってどこが面白いの?誰か教えて
0624620NGNG
>>621
俺は"623"じゃないからな
0625デフォルトの名無しさんNGNG
俺は"601"じゃないからな
0626デフォルトの名無しさんNGNG
>>622
for(int i=0;i<10;i++);
みたいなwaitを掛けてみるば?
0627デフォルトの名無しさんNGNG
>>626
でもそれ・・・アレだな。
0628デフォルトの名無しさんNGNG
>>627
そうだけど
他に思い付かない・・・・yo・・・・
0629デフォルトの名無しさんNGNG
Java Appletについて教えてください。

Appletでテキストファイルの読み込みを行いたいのですが
JBuilder6上ではエラーなく処理が通るのに
ローカルでブラウザからAppletを実行したり
サーバー上で実行したりするとエラーがでていまいます。
以下、エラーと思われる構文です。
-------ここから----------
ofm = new OwnerFrame(new BufferedReader(new InputStreamReader(new File("test.txt").toURL().openStream())));
-------ここまで----------

以下は、Javaコンソールで表示されるエラーメッセージです。
-------ここから----------
java.lang.NoSuchMethodError: java/io/File: method toURL()Ljava/net/URL; not found
 at quizGame.init
 at com/ms/applet/AppletPanel.securedCall0
 at com/ms/applet/AppletPanel.securedCall
 at com/ms/applet/AppletPanel.processSentEvent
 at com/ms/applet/AppletPanel.processSentEvent
 at com/ms/applet/AppletPanel.run
 at java/lang/Thread.run
-------ここまで----------

FileクラスにtoURLメソッドがないというエラーだと思うのですが、仕様を見てみるとtoURLメソッドは
存在しているので、理由がまったくわかりません。

どなたか宜しくお願いします。
0630デフォルトの名無しさんNGNG
アプレットの文字列をクリックするとハイパーリンクして別のURLに飛ぶというようなことを
するにはどうしたらよいのでしょうか?
0631デフォルトの名無しさんNGNG
>>629-630
java.net.URLクラスのAPIドキュメントをゴ一読方願います
0632デフォルトの名無しさんNGNG
getAppletContext().showDocument(url);
ってやったらできた。
0633デフォルトの名無しさんNGNG
http://js-web.cside.com/
0634629NGNG
>631さん
申し訳ないですが、一通り読んでみてもわかりません。
理解力なくてすいませんがもう少し、教えていただけないでしょうか?

宜しくお願いします。
0635デフォルトの名無しさんNGNG
>>634
>new File("test.txt").toURL()
この式合ってるの?
0636デフォルトの名無しさんNGNG
合ってないの。
0637デフォルトの名無しさんNGNG
>>629
なんとなく、ブラウザのJavaサポートが1.1なのではと言ってみるテスト。
com/ms/applet という部分から動いてるのはMicrosoftVMっぽい。
ttp://support.microsoft.com/default.aspx?scid=kb;en-us;Q214828
を見たところIE5.5でJDK1.1.4までしかサポートしていないから、
素のままじゃ1.2で導入されたtoURLメソッドは無くて当然かな。

プラグイン入れてみそ。
0638デフォルトの名無しさんNGNG
JDBCでinsertRow()を使うときに、SELECTで最低1行は拾っておかないと
いけないのですか?カーソルの位置が不正です。みたいなエラーが出るのですが・・。
0639デフォルトの名無しさんNGNG
ServletとJSPでシステムを作っているのでが、コントローラの
単体テストってどうやるんですか?コントローラだけでテストなんて
しないですよね?誰か詳しい人教えてください。
0640でふぉるとんNGNG
>>638
moveToInsertRowはやってるのかね?
APIドキュメントは読んだかね?
0641デフォルトの名無しさんNGNG
>>639
コントローラの何の動作をテストしたいの?
0642638NGNG
>>640
moveToInsertRowはもちろんやっています。
APIもじーっくり読みました。サイトも見て回ったんですが・・。

文法的には間違っていないはずです。

ドライバが対応していない場合があったりしますか?
そんな風なことを見かけたんですが、確信が持てないです・・。

0643デフォルトの名無しさんNGNG
>>641
A ボタンがちゃんと押されているかどうか
0644デフォルトの名無しさんNGNG
Javaのソース読んでて、わからないメソッドやクラスにでくわしたとき
みなさんどのようにして調べているのですか?
0645デフォルトの名無しさんNGNG
>>644
JAVADOCがある時:読む。
JAVADOCがあってもなくても:テストクラスを作ってみた。
0646javaccNGNG
別スレでも書いたのですが、レスつかなかったので、もう一回…
JAVACCって、どれくらいの知名度があるんですか?
これなんですけど。
http://www.webgain.com/products/java_cc/
JAVACCの将来性とか知ってる人が居ましたら、教えてほしいです。
皆様、Javaでパーサ作ったりとかあんまりしないんですかねぇ…
0647デフォルトの名無しさんNGNG
>>646
一応Javaでは一番メジャーっぽいし
他に画期的なのが出ない限り生き残るんでは?

ところでせっかくJavaなのに日本語テキストの扱いが面倒なのは何とかならないか、、、
カスタムリーダー書くの面堂、

>皆様、Javaでパーサ作ったりとかあんまりしないんですかねぇ…

それこそ新規で言語処理系でも作る気がなければ
確かにそんなにつかわないよな。
Cプログラマの中でもYACCとか使ったことの在る奴は何パーセントくらいなんだろ。

普通のアプリのニーズならXMLやプロパティファイルで十分だし。
0648javaccNGNG
>>647
先日、「Javaccを管理しているWebGainが消息不明」という記事を見ました。
Javaに絡んだ言語変換パーサを作ってるので、yaccよりJavaccをチョイス
したのですが、どうもJavacc自体が先行き不透明な感じがするのです。
おかげで、ほんの少しだけ安心しました。

日本語のドキュメントもほとんど無いですよね。
0649デフォルトの名無しさんNGNG
>>647
>日本語テキストの扱いが面倒
ってのは?
0650デフォルトの名無しさんNGNG
JAVAを勉強しようと思うのですが、
一から始めるJAVAって感じのサイトありませんか?
0651デフォルトの名無しさんNGNG
>>650
ここでスレ立てればいいんじゃないでつか?
0652デフォルトの名無しさんNGNG
>>651
立てるまでもあるまい
0653Rina ◆tI333vNE NGNG
>>650
http://www.atmarkit.co.jp/fjava/special/javasite/javasite.01.html
0654デフォルトの名無しさんNGNG
>>653
ありがとうございました。早速勉強。
0655デフォルトの名無しさんNGNG
>>641
テストは画面遷移以外のテストをしたいのです。一通りの処理というか。
っていうか、MVCモデルでのControllerって単体テストするもんですか?
下位クラスが無きゃ実際の処理なんてテストできないですよね?
そこらへん詳しく載ってるサイト教えて。
0656デフォルトの名無しさんNGNG
>>655
最低でもVCでじゃないの?
■ このスレッドは過去ログ倉庫に格納されています