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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/06/27(水) 07:23:27
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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

前スレッド
【初心者】Java質問・相談スレッド102【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1180419689/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

次スレは>>980あたりで。
0236デフォルトの名無しさん2007/07/02(月) 07:35:44
あ、性格には
if(!seisu[n]){

ですね
0237デフォルトの名無しさん2007/07/02(月) 07:36:35
>>230
現実的にはプリミティブな要素型を持つ配列を生成するケースは少ないので
だいたいの場合はint以上の長さの配列を確保するとすぐにメモリなくなる。

この場合、longを長さに取るコンテナを自作してメモリではなくディスクから読み書きして
必要な分だけメモリに置くクラスを作るのとかする。
マージソート自力で実装する程度のことが出来るならできるんじゃね?

というか配列の要素数は初期化時にint未満の型使ってもワイドニング変換でintになってるからな。
0238デフォルトの名無しさん2007/07/02(月) 07:38:32
>>233>>235

つまり、long型の変数を宣言して、その各ビットを、0か1かによって、フラグとして代用するってことでしょうか?
3ビット目が1の場合、booiean[3]=true ってことですか?
0239訂正2007/07/02(月) 07:40:15

つまり、long型の変数を宣言して、その各桁を、0か1かによって、フラグとして代用するってことでしょうか?
100の位が1の場合、booiean[3]=true ってことですか?
0240デフォルトの名無しさん2007/07/02(月) 07:42:15
>>238 そんな感じ。
0241やってみます2007/07/02(月) 07:43:24
ありがとうございました
0242デフォルトの名無しさん2007/07/02(月) 07:44:40
>>233
細かい突っ込みだがCだと無意味な行が多いからステップ=LOCとは限らんような・・・。
テトリスくらいのをちゃんと関数分けてコメント書いてたら1000行くらいかな?
0243すいません・・・2007/07/02(月) 07:47:11
if(!seisu[n]){
の!はどういう意味ですか?
0244デフォルトの名無しさん2007/07/02(月) 07:51:19
条件反転
0245すいません・・・2007/07/02(月) 07:53:16
!a=1のとき

の場合は

a=1以外のとき

ってことですか
でも>>243の場合はどういう意味になるのか分からないんです画・・・
0246デフォルトの名無しさん2007/07/02(月) 07:57:09
seisu[n] が boolean 型で、その真偽を反転
0247すいません・・・2007/07/02(月) 07:57:59
ありがとうございました
0248デフォルトの名無しさん2007/07/02(月) 08:00:48
boolean a = seisu[n];
if(!a)...

こういうこと
0249デフォルトの名無しさん2007/07/02(月) 08:01:03
「new」って調べたら
「new演算子: クラスのインスタンスを生成します 」
って出てきたんですがいまいち意味が・・・
0250デフォルトの名無しさん2007/07/02(月) 08:07:11
本読め。本。
0251デフォルトの名無しさん2007/07/02(月) 08:13:40
朝っぱらから二つのjavaスレがgdgdだな。
他人に考えさせる前に自分の頭使おうぜ?
0252228です2007/07/02(月) 08:18:47
結局一からやり直すことにしました。
僕がやりたいのは、素数を探し出すプログラムで、例えば
「boolean[]のboolean[9967]=false」
だった場合、
「9967は素数ではない。」
といった感じで、素数であるかないかの表を作っていたわけですが、それだとintの上限以上の
素数を記憶できないってことで、皆さんの助言通りに、
「long型の各ビットをbooleanの真偽の代用にする」ことを目指しております。
で、さっきは分かったように思ったのですが、今考えて見るとやっぱりちょっと分からないところが出てきて・・・
long型の各ビットをbooleanの真偽の代用にする、とのことですが、long型の桁数ってint型の上限より少ないですよね?
ってことは「long型の上限の長さの配列」で代用するって意味だったのかなあっと思ったのですが、
配列の長さはintの上限を超えられないんですよね・・・?
結局、できるだけたくさんの素数であるかないかの表を作るにはどうすればいいんでしょう・・・?
0253デフォルトの名無しさん2007/07/02(月) 08:22:52
普通は boolean に素数かどうかを貯めていくんじゃなくて、
素数を貯めていくんじゃないかな?
0254デフォルトの名無しさん2007/07/02(月) 08:24:27
long は int の2倍のサイズなんだが
0255228です2007/07/02(月) 08:27:23
それは、格納できる数字が2倍なのであって、
「longに格納できる最大の数」の「桁数」では素数表には少なすぎますよね?
0256デフォルトの名無しさん2007/07/02(月) 08:28:07
配列にすればいいだろ?
0257デフォルトの名無しさん2007/07/02(月) 08:28:10
javaってbitの集合扱うライブラリなかったけ?
0258デフォルトの名無しさん2007/07/02(月) 08:30:11
>>252
全部メモリに持ち続ける必要ないでしょ。
区切りでファイルに吐けばlong使う必要ない。
0259デフォルトの名無しさん2007/07/02(月) 08:30:16
BitSet ってのがあるな。
0260228です2007/07/02(月) 08:31:03
その配列ですけど、
例えば
long n[99999999999]
とかはできるんですか?
配列の長さはどうやってもintの上限を超えられないby>>232
と聞いたので・・・
0261デフォルトの名無しさん2007/07/02(月) 08:31:13
そもそも素数かどうか判定した時にメッセージ出力すれば良いんじゃない?
なんでループ分けるの?
0262デフォルトの名無しさん2007/07/02(月) 08:31:18
でも、BitSet だとインデックスが int に収まらないといけないんだよな。
0263228です2007/07/02(月) 08:32:11
>>258
すいません詳しくお願いします
(つまり足りなくなったら他の奴に乗り換えろってこと?)
0264デフォルトの名無しさん2007/07/02(月) 08:35:37
>>260
配列の個数×longのビット数 だけの情報が扱えるじゃん。
0265デフォルトの名無しさん2007/07/02(月) 08:36:52
で、素数表作って何をしたいんだろうか。
素数かどうかの判定でもするの?
0266228です2007/07/02(月) 08:37:30
なるべくたくさんの素数表を作っておく必要があるんです
0267デフォルトの名無しさん2007/07/02(月) 08:37:34
>>237
0268デフォルトの名無しさん2007/07/02(月) 08:38:34
それは「素数かどうかのフラグ」を貯める方式じゃないと不都合があるの?
素数を貯めていくんじゃダメ?
0269デフォルトの名無しさん2007/07/02(月) 08:38:41
>>266
>なるべくたくさんの素数表を作っておく必要があるんです
俺らはそれが何のためかと聞いている。
0270デフォルトの名無しさん2007/07/02(月) 08:41:07
普通は long 型配列にでも素数を貯めていくよね。
prime[0] = 2;
prime[1] = 3;
prime[2] = 5;
prime[3] = 7;
prime[4] = 11;
みたいに。
0271デフォルトの名無しさん2007/07/02(月) 08:50:27
素数の総数がint超えるって話じゃない?
0272デフォルトの名無しさん2007/07/02(月) 08:51:26
ていうかお前らそろそろおなかいっぱいだろ?
0273デフォルトの名無しさん2007/07/02(月) 08:56:37
素数かどうかのフラグで保存してるから
素数の総数が int を越えるとダメになるんじゃないの?
0274デフォルトの名無しさん2007/07/02(月) 08:57:19
ちがうや。
素数の値が int を越えるとダメになる、だ。
0275デフォルトの名無しさん2007/07/02(月) 08:59:16
Mapの実装て保持できるのエントリに上限あったけ?
0276デフォルトの名無しさん2007/07/02(月) 09:06:32
long 配列に素数を貯めていっても、
素数が意外と多いからスペース削減にはならんっぽいな。
ファイルに書き出していけばいいけどもん。
0277デフォルトの名無しさん2007/07/02(月) 09:09:26
そもそも素数かどうかのテーブルに何の意味があるんだ?
そこから間違ってる気がするんだが・・・
0278デフォルトの名無しさん2007/07/02(月) 09:09:42
67,867,967 が 4,000,000 番目の素数か・・・。
0279デフォルトの名無しさん2007/07/02(月) 09:15:41
ていうか素数の数がlong要る整数ってlongで足りるの?

今度はry・・・とか聞きそうな気がしてきた。
0280デフォルトの名無しさん2007/07/02(月) 09:19:55
javaでも無限リストが扱えれば楽なんだけどな。
こういう問題は関数型の方が得意か・・・
0281デフォルトの名無しさん2007/07/02(月) 09:20:04
素数判定の効率は悪いな。 >素数かどうかのテーブル
0282デフォルトの名無しさん2007/07/02(月) 09:23:11
言い方が悪かった。
素数表の作成効率は悪いな。 >素数かどうかのテーブル
0283デフォルトの名無しさん2007/07/02(月) 09:26:03
ん? いや、スペース削減にはなるや。
うん。やっぱり素数を配列に貯めていった方が、
速度的にも容量的にもいいみたいだ。
0284デフォルトの名無しさん2007/07/02(月) 09:27:08
ん? いや、やっぱりスペース削減にはならんや・・・。
ちょっと混乱してきた・・・。
0285デフォルトの名無しさん2007/07/02(月) 09:31:58
boolean * intとlong * intじゃ考えるまでもないぜ!
0286デフォルトの名無しさん2007/07/02(月) 09:34:15
いや、式が何か違う気がするが伝わるはずだ!
0287デフォルトの名無しさん2007/07/02(月) 09:40:28
素数かどうかのテーブルを使えば、
最大バイト数×8 の大きさの素数まで扱える。

素数を貯めていく場合、
最大バイト数/64 個の素数が扱える。
この時の素数の最大値が最大バイト数×8より大きければ
素数を貯めていく方が容量効率がいいことになるんだけど、
圧倒的に足りないから容量効率は悪いっぽ。
0288デフォルトの名無しさん2007/07/02(月) 09:49:14
javaのbooleanって1byteに絶対すき間なく敷き詰めるんだっけ?
配列は飛び飛びなのに。
0289デフォルトの名無しさん2007/07/02(月) 09:51:07
どちらにしろインデックスが int 越えられないんじゃなあ。
0290デフォルトの名無しさん2007/07/02(月) 09:52:06
だから自分で作れとry
0291デフォルトの名無しさん2007/07/02(月) 09:55:14
朝っぱらから3時間も続いてんのかこの流れ
0292デフォルトの名無しさん2007/07/02(月) 10:10:00
所詮mp3も再生できない学術言語だからな
0293デフォルトの名無しさん2007/07/02(月) 10:30:46
出来るだろ。どっからmp3が出てくんだよw
0294デフォルトの名無しさん2007/07/02(月) 13:00:32
時代はOggとかAC3だろ
0295デフォルトの名無しさん2007/07/02(月) 13:10:17
http://java.sun.com/products/java-media/jmf/mp3/download.html
0296デフォルトの名無しさん2007/07/02(月) 18:05:58
MD5で暗号化したのをSystem.out.printで表示すると巧く表示されるのですが、
JLabel.setTextで表示すると、後ろから1桁か2桁しか表示されません。
どうすれば全部表示されますか?
0297デフォルトの名無しさん2007/07/02(月) 18:13:19
Java始めて半年の初心者です。
今は秀丸を使っているのですが、
上級者の方は後々「Java専用プログラミングエディタ」みたいなのを使い始めるのでしょうか。
0298デフォルトの名無しさん2007/07/02(月) 18:21:20
>>296
どうやってMD5をかけたか、MD5をかけた後の変数の型、
System.out.print()した方法、setText()した方法をコードで示しましょう。

それから、MD5は暗号ではないです。

0299デフォルトの名無しさん2007/07/02(月) 18:22:03
>>297
さいきんはEclipseを使う人が多いかもしれない。
0300デフォルトの名無しさん2007/07/02(月) 18:23:11
>>296
digestをbyte配列で得てprintの方は順番に配列要素を表示していってるから全部表示されて、
JLabelの方には配列要素を順番に引数としてsetTextでセットしているから、
結局最後の配列要素しかJLabelには現れないというオチだったり。
もしそうなら、setTextはappendTextでないということは分かってないよね?
0301デフォルトの名無しさん2007/07/02(月) 18:26:09
eclipseは別にJava専用プログラミングエディタではないと思うが
>>297
自分が慣れたエディタを使えばええやん
0302デフォルトの名無しさん2007/07/02(月) 18:27:00
javaファイルからJavacsriptって動かせる?
xmlHttpRequest使いたいんだけど。
通信ってURLConnection使うしかない?
0303デフォルトの名無しさん2007/07/02(月) 18:39:23
>>302
rhino
0304デフォルトの名無しさん2007/07/02(月) 19:28:35
XmlHttpRequestはXML Extrasの成果だろ
0305デフォルトの名無しさん2007/07/02(月) 20:52:25
GWT
0306デフォルトの名無しさん2007/07/02(月) 20:58:11
ていうかURLConnectionから開いたInputStreemからDOM構築すれば良いだけだろ?
それかDOM Level 3 Load and Save使えよ。
0307デフォルトの名無しさん2007/07/02(月) 20:58:36
>>297
そろそろEclipseに乗り換えてもいいと思うよ
禿丸使うよりも生産性が上がる
0308デフォルトの名無しさん2007/07/02(月) 21:48:50
>>297
いきなりeclipseは導入で手間取りそうだね。
詳細なリファクタリングやコードフォーマットを頻繁に行わないならnetbeansでも良いと思う。

ヴュジュアル主体の開発とテキスト主体の開発っていうコンセプトの違いは大きいから選んだ方が良いけど。


プロトタイプでっち上げてそれをリファクタリングしまくりながら肉付けしていき開発する俺には
リファクタリング・フォーマッティング・ドキュメンテーションの面でnetbeansはかなり効率悪い。

けどGUI部分は書きたくないしリファクタリングなんてどうでもいいぜ!って人ならnetbeansの方が効率良い。

netbeansでGUI組んでeclipseでリファクタリングでも良いかも。
0309お願い!!2007/07/02(月) 23:16:47
こんばんは。

WEBアプリケーションでよくファイルアップロード機能があると思います。
その仕組みとして直接クライアントで指定したファイルを
サーバにアップロードしないでDBにBLOGなどで登録は可能でしょうか?

可能であればその仕組みを教えてください。
よろしくお願い致します。
0310デフォルトの名無しさん2007/07/02(月) 23:39:00
日本語でおk
どっちにしてもサーバは使うことになると思うが。
0311デフォルトの名無しさん2007/07/02(月) 23:43:24
現在、C++のプログラムをJAVAに書き換えようとしているのですが、
C++で使われている構造体をJAVAで再現することは可能でしょうか?
もしそのまま流用して動作するのであれば有難いのですが・・・。
宜しくお願い致します。
0312デフォルトの名無しさん2007/07/02(月) 23:44:55
>>309
FTP使えば?
0313デフォルトの名無しさん2007/07/02(月) 23:46:40
>>309
マルチ乙
0314お願い!!2007/07/02(月) 23:51:59
>どっちにしてもサーバは使うことになると思うが。
すみません。

サーバはAP、DBともに使うのですが、
どちらのサーバにも物理ファイルをアップロードしないで
クライアントにあるファイルを直接バイナリ変換して
DBに登録に登録出来るかが知りたかったのです。
0315デフォルトの名無しさん2007/07/02(月) 23:53:51
>>314
クローズドなシステムだったら署名つきJavaApplet上で
JDBCでBLOBデータを流す感じかな。

とりあえず日本語の勉強しておいたほうがいい。
0316デフォルトの名無しさん2007/07/03(火) 00:16:26
作った後のこと考えるとJWSの方が楽だろうね。

ファイルを直接バイナリ変換ってなに?
普通バイナリをBase64でテキストにエンコードするんじゃないの?
0317デフォルトの名無しさん2007/07/03(火) 00:51:49
「アップロードしない」の意味がわからん。
バイナリ変換と言ってるが何をバイナリ変換するんだ?
アップロードされてないものを変換できないぞ。
0318デフォルトの名無しさん2007/07/03(火) 01:18:54
>>314
アップロードしない → サーバにデータを送らない → サーバのDBに登録できない
0319デフォルトの名無しさん2007/07/03(火) 01:26:28
物理ファイルをアップロードする → HDDから当該ファイルのセクタの磁気材料をひっぺがしてサーバの投入孔に入れる
0320デフォルトの名無しさん2007/07/03(火) 01:45:00
>>314
クライアントにDBをインストールしてそこに目的のファイルをINSERT
↓
バックアップファイルを作成
↓
サーバにFTPでバックアップファイルを転送
↓
サーバのDBにリストア
0321デフォルトの名無しさん2007/07/03(火) 01:52:17
英文の書かれたtxtファイルがあって、そこに出現する英単語の出現頻度をカウントして、
降順にソートした状態で出力したいのですが、どのようにすればよいのでしょうか?

TreeMap使えばいいのかなーと思ったのですが、どうやってカウントしていけばいいのかというところで
ちょっとわからなくなってしまって・・・
0322デフォルトの名無しさん2007/07/03(火) 02:00:22
英単語をキーにして出現頻度をバリューにして出現するたびに
マップを検索してなければその単語をキーにして頻度を1にして新規に加えて
あればその単語の頻度を1増やす
0323デフォルトの名無しさん2007/07/03(火) 02:01:11
TreeMap#size() じゃダメなの?
0324デフォルトの名無しさん2007/07/03(火) 02:06:59
コレクションに入れられるのは参照型なので
出現頻度はIntegerなどのラッパークラスを使って頻度更新のたびに入れ替えていくか
new int[1]した配列を入れてint[0]の値を更新していくか
その辺りは自分のポリシーで
0325デフォルトの名無しさん2007/07/03(火) 03:20:07
なんとなく AtomicInteger を使ってみるとか
0326デフォルトの名無しさん2007/07/03(火) 08:20:15
何?この素人集団w
0327デフォルトの名無しさん2007/07/03(火) 09:23:48
流れぶった切るけど前944であがったJCursesってちゃんとつかえるの?

JNIのロード方法が特殊でjarに固めるとロード時にNoClassDefFoundErrorが出るし、固めずに実行するとExceptionInInitializerErrorが出る。

ちゃんと使えてる人居たらどうやって使ってるか教えてほしい。

うちの環境はjdk6u1とwin用JCurses 0.9.5
0328デフォルトの名無しさん2007/07/03(火) 16:35:10
>>325
無駄では?
0329デフォルトの名無しさん2007/07/03(火) 17:08:21
>>325
並行処理やるわけでもないのに何でそんなのが必要になるんだよw
0330デフォルトの名無しさん2007/07/03(火) 18:18:22
単語を見つけるたびにスレッド一つ作って実行したりして。w
0331デフォルトの名無しさん2007/07/03(火) 18:39:15
>>328-330
”なんとなく” という単語に俺が言いたいことを全部押し込めたわけだが
0332デフォルトの名無しさん2007/07/03(火) 19:51:04
不可逆圧縮だったようです。
笑いどころも無いので皆さん解凍できなかった様子。
0333デフォルトの名無しさん2007/07/03(火) 21:49:12
java.lang.thread
というエラーの解決法教えてくださいm(_ _)m
0334デフォルトの名無しさん2007/07/03(火) 21:50:20
>>333
エラーは何ですか?
0335デフォルトの名無しさん2007/07/03(火) 21:50:58
という莫迦がキてますよ
03363352007/07/03(火) 21:51:56
すまん>333ニダ
■ このスレッドは過去ログ倉庫に格納されています