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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/06/13(金) 17:52:10
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
【初心者】Java質問・相談スレッド115【歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1210529127/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0153デフォルトの名無しさん2008/06/15(日) 21:44:16
たまにはこういうキモイ雑魚も、創価学会のマンパワーみたいで楽しかった。

>>86
0154852008/06/15(日) 21:46:07
>>152
最後のおまとめありがとうございます。
まあ端的にいえばそのとおりですね。

他の方は誤解されているようですが、私はこの板で質問したことは一度もないし、ネット上の掲示板にも質問したことはありません。
すべて独学です。
>>85のコメントは形式は質問になってますが、
>>87で補足したように抗議文です。
警鐘を鳴らしたかっただけです。

では、ここからはいつもの流れでどうぞ。
0155デフォルトの名無しさん2008/06/15(日) 22:47:50
そんなにデタラメ情報ばかりだったかな、と思って、
>>85が挙げてる例である「Java ダブルクリック 実行」でググってみた。
…マニフェストファイル書いてjar作る正しい手順が、それなりにヒットする。
>>85が何を見て「でたらめだらけ」と結論づけたのか気になる。

ただ、VBと違って、標準の開発環境はこれ、というのがないから、初心者は困るんだろうな。
素のjdkが基本といえば基本だけど、
初心者には(特にVBのようなRADツールの経験があれば余計に)取っつきづらいだろう。
最近じゃ「Eclipseで始めるJava入門」みたいな本も出てるしね。

だから、コマンドプロンプトでの手順示されても
「じゃあウチのEclipse/NetBeans/JBuilderではどうすりゃいいの?」となるんじゃないかな。
その結果「これはつかえない!デタラメに違いない!」と結論づける、と。

そもそも、仮にjdkオンリーで覚えても、最終的にはIDEを使うようになると知ったら、
「あの苦労は何だったのか」と徒労感を覚えるかもしれない(それはそれで大事な経験なんだけど)。
そしたら余計に取っつき悪さを感じるかも。

そういうのが嫌な人は、どれか特定の便利なIDEべったりになるといいかもね。
そういう人にはNetBeansがお勧め。
Webから得られる情報が限られるけど、面倒なネタは避けられると思う。
0156デフォルトの名無しさん2008/06/15(日) 23:05:06
>今日で、めでたくく初心者を卒業したっぽいわけですが・・・
>まあでも今日で初心者卒業できたのは、

いきなりそんなこと前提にされても、と何も言えなくて・・・夏
0157デフォルトの名無しさん2008/06/15(日) 23:09:35
創価学会は思考盗聴とか集団ストーカーをやってるそうなんで、身の回りには注意しておいたほうがいいですよ。
0158デフォルトの名無しさん2008/06/15(日) 23:09:47
すみませんが、教えてほしいことがあります。

「n=OO」という風に表示したいのですが、
表示をさせることができません。
表示をさせるための記述を教えてください。
よろしくお願いします。

public class karimasu{
public static void main(String[] args){
int n=0;
double a[]=new double[100];
a[0]=1.5;
a[1]=2.0;
a[2]=3.0;
System.out.println("1.5");
System.out.println("2.0");
System.out.println("3.0");
for(n=3;n<=100;n++){
a[n]=(-1*a[n-1]) + a[n-2] + a[n-3];
System.out.println(a[n]);
}
}
}
0159デフォルトの名無しさん2008/06/15(日) 23:10:36
>>158追記

答えは出ましたが、表示を変えることができないです。
0160デフォルトの名無しさん2008/06/15(日) 23:13:56
System.out.println("n=OO");
0161デフォルトの名無しさん2008/06/15(日) 23:16:36
>>45で解決しなかったのか
0162デフォルトの名無しさん2008/06/15(日) 23:25:41
>>161
あの時の方で
いまだに解決していません(汗

()の中にいろいろといれても
うまく表示できなくて…
0163デフォルトの名無しさん2008/06/15(日) 23:29:36
>>160
例えがものすごく悪かったようなので
もう一度書きます

a[1]=1.5
a[2]=2.0
a[3]=3.0 といった表示を連続で出したいのです
0164デフォルトの名無しさん2008/06/15(日) 23:31:56
System.out.println("a[" + n + "]=" + a[n]);
0165デフォルトの名無しさん2008/06/15(日) 23:35:08
>>158
なぜ>>42をスルーできたのか気になる
0166デフォルトの名無しさん2008/06/15(日) 23:37:13
>>164
教えてくださりありがとうございます
おかげさまで出ましたm(_ _)mペコリ
0167デフォルトの名無しさん2008/06/15(日) 23:39:00
世の中は不思議に満ちている
01681662008/06/15(日) 23:39:54
と思ったら
まさかのa[0]〜a[2] の表示が出ない!!
0169デフォルトの名無しさん2008/06/15(日) 23:40:48
枯れない桜が枯れたのだよ
0170デフォルトの名無しさん2008/06/15(日) 23:42:40
>>168
そりゃ、ループが3からだもの
0, 1, 2 は固定なんだから、>>158 の
System.out.println("1.5");
System.out.println("2.0");
System.out.println("3.0");
を
System.out.println("a[0]=1.5");
System.out.println("a[1]=2.0");
System.out.println("a[2]=3.0");
に変えればいいと思うよ
01711662008/06/15(日) 23:42:57
ちょっと冷静になって直してきました
無事にできました
ありがとうございます

とりあえず落ち着け俺
01721662008/06/15(日) 23:43:52
>>170
すみません、おかげさまでできました

ちょっと混乱しやすい性質です
パニック映画でまず食われる役が最適なやつですから
0173デフォルトの名無しさん2008/06/15(日) 23:48:37
ん?創価学会がなんだって?
0174デフォルトの名無しさん2008/06/16(月) 00:02:42
すみませんが、教えてください。
「入力した数字が素数かどうかを調べる」というものなのですが、
下のところまでできたのですが、
肝心の「数字を入れてください」の部分ができません
「input>」と表示した後に数字を入れたいのですが
どうすればいいでしょうか

public class sosuu {
public static void main (String[] args) {
int n = ;

boolean isPrime = true;
for (int i = 2; i <= n - 1; i++)
if (n % i == 0) {
isPrime = false;
break;
}

if (isPrime)
System.out.println(n + " prime number.");
else
System.out.println(n + " not prime number.");
}
}

記述すべきことを教えてくださいませ
よろしくお願いします
0175デフォルトの名無しさん2008/06/16(月) 00:05:17
つBefferedReader
0176デフォルトの名無しさん2008/06/16(月) 00:08:20
>>176
一応聞きたいのですが、
それ以外の方法はありますでしょうか?
教わったかどうかあやふやですので…
0177デフォルトの名無しさん2008/06/16(月) 00:14:20
それ以外だとargsを使う方法かな
0178デフォルトの名無しさん2008/06/16(月) 00:16:33
>>177
そっちのほうほうをお願いします
自分でもうまく当てはめようとしたのですが
どうにもうまくいかず。

教えの程、よろしくお願いします
0179デフォルトの名無しさん2008/06/16(月) 00:17:16
すみません
ほうが一つ多すぎましたorz

落ち着け私
0180デフォルトの名無しさん2008/06/16(月) 00:19:06
あれっ?
自分で作っておいて気づいたのですが
argsを使っていました…

ここからどう変えるのか…
0181デフォルトの名無しさん2008/06/16(月) 00:26:52
>>174
>「input>」と表示した後に数字を入れたいのですが

この「後に」というのは条件ではないの?
argsの内容は実行前のコマンドの段階で入力されてしまうんだけど、っていうあたりはわかってるのかな
0182デフォルトの名無しさん2008/06/16(月) 00:28:46
多分分かってない
いや>>174よく読まず無責任にargs出した俺が悪いんだが
0183デフォルトの名無しさん2008/06/16(月) 00:31:15
>>181
忘れていました(汗
「いつも最初に記述するように」と教わっていたので
最初の2行くらいはろくに考えておらず…

となると>>175の方の表記の方法でしかできませんかね?
0184デフォルトの名無しさん2008/06/16(月) 00:32:13
>>182の方…

やはり私の記述はわかりづらいのでしょうか?
0185デフォルトの名無しさん2008/06/16(月) 00:33:32
BufferedReaderを習ってないとすると、
まだDataInputStreamのreadLine()で指導している先生だったりするとか、
そのくらいしか思い浮かばない
0186デフォルトの名無しさん2008/06/16(月) 00:36:56
>>185
あれ…
その方法は学んだっかな…

何かもっとこうシンプルだったような…
0187デフォルトの名無しさん2008/06/16(月) 00:39:26
あとは、例の「IO」みたいなユーティリティークラスを用意していて、
それを専ら使うように指導しているとか
0188デフォルトの名無しさん2008/06/16(月) 00:43:25
スキャナーを利用したインプット表示でした

とりあえず手元にあるパソコンでは
スキャナー表示のものを動かすことができませんので
手を加えたものを後日別の場所で動かしてみます
0189デフォルトの名無しさん2008/06/16(月) 00:50:34
1.5導入かw
素で使ったことなかったYO
0190デフォルトの名無しさん2008/06/16(月) 00:54:54
jdkのバージョンを5.0以上にすれば良いだけじゃないの?
0191デフォルトの名無しさん2008/06/16(月) 00:55:14
>>174
>System.out.println(n + " is a prime number.");
>System.out.println(n + " is not a prime number.");
0192デフォルトの名無しさん2008/06/16(月) 00:58:30
>>190
jcpadはそれで大丈夫なのかなと

>>191
?
0193デフォルトの名無しさん2008/06/16(月) 00:59:05
## : prime
## : not prime
ならおkかも
0194デフォルトの名無しさん2008/06/16(月) 01:05:14
>>193
どのような記述をすればそうなるでしょうか?
0195デフォルトの名無しさん2008/06/16(月) 01:06:52
いや、>>191は単に>>174の英語が変ってことでしょ
>>193は形容詞版
0196デフォルトの名無しさん2008/06/16(月) 01:13:35
あれっ?
なんだかだんだんおかしな方向に…

表記はこうするように言われているのでこの通りにしております
問題は数字をJCpadのコマンド画面で直接打てないことで…
0197デフォルトの名無しさん2008/06/16(月) 01:19:51
コマンドプロンプトから実行する方法は知らないってことね
0198デフォルトの名無しさん2008/06/16(月) 01:26:08
>>191
いや、わかった。すまん。
ttp://www.mlab.im.dendai.ac.jp/computer2/while/
0199デフォルトの名無しさん2008/06/16(月) 01:26:29
>>197
そうです、はい

素数の式が絡んでくるともう…
0200デフォルトの名無しさん2008/06/16(月) 01:28:06
>>198
それのことを言っていたんですかね?
確かに参考にしましたが、うまくできず
0201デフォルトの名無しさん2008/06/16(月) 02:30:09
これじゃ学生が可哀想だ。
教師か教科書か教え方が悪い。
0202デフォルトの名無しさん2008/06/16(月) 03:33:10
>>33 >>158
よく見たらこれと一緒だな
ttp://pc11.2ch.net/test/read.cgi/tech/1212085079/46
0203デフォルトの名無しさん2008/06/16(月) 09:09:44
最近の大学生って頭悪いよね
情報学科卒業してきた子より
高卒で趣味でunixいじってたような子の方ができたりする
0204デフォルトの名無しさん2008/06/16(月) 09:35:23
現在、ポーカーのプログラムを作っています
TreeMapを使っているのに、ソートされないのは
やはりソースに問題がありますよね?
0205デフォルトの名無しさん2008/06/16(月) 11:10:15
最近の情報学科って大したこと教えてないからな。
その上こんなスレに来る奴なんてデフォで講義ろくに聞いてない&屑講師なんだから当たり前だろ。
そりゃ趣味でlinuxいじってた方が強いわ。
0206デフォルトの名無しさん2008/06/16(月) 11:25:17
習うより何とかってことで纏め
0207デフォルトの名無しさん2008/06/16(月) 11:50:09
創価大に情報科なんかあったか?
0208デフォルトの名無しさん2008/06/16(月) 12:03:20
ルートディレクトリを与えるとそこからツリーを生成するプログラムを作ったのですが、
Linuxと違ってWinではルートが複数あり、また環境によって存在するドライブレターも違うので
全ルートを与えるためにはA~Zまで試してみるくらいしか方法が思いつきません。
今現在存在するルートディレクトリ(C:\,D:\…)を取得する方法ってあるでしょうか?
0209デフォルトの名無しさん2008/06/16(月) 12:13:54
>>208
File.listRoots()
0210デフォルトの名無しさん2008/06/16(月) 13:13:08
>>209
四苦八苦していたのにこんな便利なstaticメソッドがあったのですか…。
即レスありがとうございます!!
0211デフォルトの名無しさん2008/06/16(月) 14:50:40
JNIで外部DLLを呼び出しているんですが
そのDLLでEXCEPTION_ACCESS_VIOLATION (0xc0000005)
を発生した場合、Java側ではtry catchをしても
落ちてしまいます。
なんとか例外としてキャッチできないものでしょうか?
0212デフォルトの名無しさん2008/06/16(月) 15:04:19
C側で例外をキャッチする必要があるのでは
でJavaの例外として投げ直す
0213デフォルトの名無しさん2008/06/16(月) 17:21:26
>>212
ありがとうございます。
CでDLLのEXCEPTION_ACCESS_VIOLATION をキャッチできるか
聞いてきます。
0214デフォルトの名無しさん2008/06/16(月) 17:47:14
ArrayListではなく、エクスプローラみたいなイメージのツリーの機能を実装したコレクションクラスや
それに近いクラスはあるでしょうか。JDK1.6です。JDKでなくても、その他ライブラリであれば合わせて教えていただけないでしょうか。
0215デフォルトの名無しさん2008/06/16(月) 18:23:05
文字列「C:\」を「C:」に変換したくて
String path="C:\\";
path.replaceAll("\\","");
とやったのですが、java.util.regex.PatternSyntaxExceptionが出ました。
バックスラッシュを表したくてエスケープさせて指定したつもりが、
どこがおかしいのでしょうか?
0216デフォルトの名無しさん2008/06/16(月) 18:23:55
>>214
JTree
0217デフォルトの名無しさん2008/06/16(月) 18:33:24
>>216
ありがとうございます。
これってawt用ですが、できれば親と子を持つという概念だけのコレクションクラスはないですかね。
0218デフォルトの名無しさん2008/06/16(月) 18:40:02
>>215 [\\\\]->[\\]
0219デフォルトの名無しさん2008/06/16(月) 18:41:49
>>217
それくらい自分で作れ
0220デフォルトの名無しさん2008/06/16(月) 19:00:37
>>217
コレクションでツリーなんて良くあることなのに、高級言語の1.6にしてもないなんてね。そのくせ余計なクラスばかり多い
0221デフォルトの名無しさん2008/06/16(月) 19:21:52
>>218
ありがとうございます。
しかし何故\\\\になるのでしょうか?
replaceを使うと普通に\\で大丈夫なのに。
0222デフォルトの名無しさん2008/06/16(月) 19:25:16
>>217
ない。

http://bugs.sun.com/view_bug.do?bug_id=4094377
evaluationによれば、Doug Lea御大がC++で実装した経験から、
汎用かつ軽量でパフォーマンスに優れた実装を作るのが難しいからだってさ。
0223デフォルトの名無しさん2008/06/16(月) 19:26:34
>>221
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html
> String replace(CharSequence target, CharSequence replacement)
> リテラルターゲットシーケンスに一致するこの文字列の部分文字列を、指定されたリテラル置換シーケンスに置き換えます。
> String replaceAll(String regex, String replacement)
> 指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。
0224デフォルトの名無しさん2008/06/16(月) 19:46:06
>>223
ここから考えると、
\を表す文字列で表したい→\\
\を正規表現で表したい→\\\\
ってことですよね。

なんか考えているうちにこんがらがってきましたが、
コンパイル時のエスケープと正規表現のエスケープで二重にエスケープする
必要があるってことでしょうか??
02252242008/06/16(月) 19:47:09
× \を表す文字列で
○  \を文字列で
0226デフォルトの名無しさん2008/06/16(月) 19:57:44
>>224
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html
>たとえば、文字列リテラル "\b" は、正規表現と解釈されると、バックスペース 1 文字とマッチされます。 しかし、"\\b" は単語境界とマッチされます。
0227デフォルトの名無しさん2008/06/16(月) 20:29:46
JListでListCellRendererを使いアイコンをセットする際に、
システムで設定されているアイコン(htmlならIEやFxのアイコンのような)を表示したいのですが、
Javaではこういう情報を取得する方法はあるでしょうか?
0228デフォルトの名無しさん2008/06/16(月) 20:38:39
知識不足によりはまっているのでご教授願えればと思います。

現在、Apache + Tomcat の環境で、SSLによるWebアプリケーションを構築しています。
その中でAppletも併用しているのですが、このAppletに証明書を付けて配布したいと考えています(AppletからWebサービスを呼び出す)

Apacheにopensslで作成したキーを登録し、WebアプリケーションやAppletのダウンロードのSSL化はできました。
ところが、そこで作成した証明書をkeytool で登録し、AppletのJarに付与しようとするとエラーとなります(認証チェインがルート証明書に届いていない云々)

そこでkeytoolでキーと証明書を作ればと思ったのですが、keytoolでは証明書はエクスポートできるのですが、鍵は抽出できません。

本番環境では正式なCAを通した鍵と証明書があるのですが、開発環境でオレオレ認証でApacheと署名Jarを同時に行うにはどうすれば良いでしょうか?
02292182008/06/16(月) 21:39:29
String r;
r = path.replaceAll("[\\\\]",""); // Compile -> "[\\]"
r = path.replaceAll("\\\\",""); // Compile -> "\\"
r = path.replace("\\",""); // Compile -> "\"
コンパイルすると、2つ重なる¥が1つの¥になるので、
逆に1つの¥を表すためには¥を2つ重ねる必要がある。(C/C++も同じ。)
その上で、正規表現の¥自身を表すときは¥を2つ重ねる必要がある。
正規表現で"\"や"[\]"はおかしい。
コンパイル後、String内の¥¥bは2バイト、一方¥bは1バイト文字になる。
0230デフォルトの名無しさん2008/06/16(月) 21:52:01
>>227
JFileChooser で使ってるサイズしか取れないけど。
javax.swing.filechooser.FileSystemView#getSystemIcon(java.io.File)
0231デフォルトの名無しさん2008/06/16(月) 22:06:06
>>230
こんなのあったのですか、ありがとうございます!
0232デフォルトの名無しさん2008/06/16(月) 23:29:30
>>228
オレオレCAの証明書をJREのルート証明書群に追加すればいいんでない?
(jre/lib/security/cacerts)
0233デフォルトの名無しさん2008/06/17(火) 14:06:02
Javaで開発する際に、プロジェクトの構成というか、ディレクトリの整理作法がわからないんだけど
たとえばこんなのとかので
trunk
 +-/build/build.xml              #ビルドに関するもろもろ
 +-/src/net/2ch/pc11/Hoge.java     #ソース
 +-/tests/net/2ch/pc11/HogeTest.java #テスト用
参考になるウェブサイトとか公開されているsvnで秀逸なのを教えてくんろ
0234デフォルトの名無しさん2008/06/17(火) 14:39:42
apacheでは参考にならないと?
0235デフォルトの名無しさん2008/06/17(火) 16:03:25
nextした数を保持するiteratorクラスってありますか?
0236デフォルトの名無しさん2008/06/17(火) 16:16:02
それくらい作れよ
0237デフォルトの名無しさん2008/06/17(火) 17:15:21
>>235
つListIterator
0238デフォルトの名無しさん2008/06/17(火) 17:50:28
一般には>>236かな。反復回数の実績をカプセル化したいんでしょ。
0239デフォルトの名無しさん2008/06/17(火) 19:06:42
Hibernateで、エンティティとして定義しているクラスに継承をしているものがあるとクエリ結果がダブってuniqueRequestでエラーになる、、
ビューを定義していたから楽しようとして落とし穴にはまった、、

継承せずにベタに書くと解決しました。

継承したままうまくクエリする方法ってないでしょうか。
0240デフォルトの名無しさん2008/06/17(火) 19:41:06
音楽を鳴らしたいが、シンボルが見つかりませんというエラーがでるんだ。
何が必要なのかおしえてくれ〜〜〜

play("./burst.wav");//爆発音声
0241デフォルトの名無しさん2008/06/17(火) 20:07:08
>>240
参考資料をよく読むんだッ
0242デフォルトの名無しさん2008/06/17(火) 20:10:43
int x = 2345;
int y = 1585;

xの百の位の3とyの十の位の8を
抜き出して演算処理したいのですが
どのようにしたらいいですか?心優しい方助言をば・・

初心者でごめんですm(_ _)m
0243デフォルトの名無しさん2008/06/17(火) 20:13:36
>>242
123わる10は、12あまり3
0244デフォルトの名無しさん2008/06/17(火) 20:36:27
>>240
アプレットのplayメソッドに渡すのは文字列で表されたURLじゃなくて、
「URL」というクラスのオブジェクト。

play getCodeBase
でぐぐるとわかるよ。
0245デフォルトの名無しさん2008/06/17(火) 20:45:16
>>123わる10は、12あまり3

わかりそうで・・・わかりませんOrz
具体的にコードで操作するにはどうすれば int x = 2345; の
百の位の 3 抜き取れますか?

タイトルに・・初心者大歓迎って書いてあったから・・ごめんなさい
0246デフォルトの名無しさん2008/06/17(火) 20:51:37
ComponentのcreateImageで戻ってきたImageをBufferedImageを変更したいのですが、
どうすればよいでしょうか?
0247デフォルトの名無しさん2008/06/17(火) 20:53:40
Tomcat 6上で動くアプリを開発してます。
サーブレットのユニットテストを書こうと思っていて、
ちょっと調べた所HttpUnitとCactusってのが有名っぽいので
どちらかを使おうと思ってます。、

それぞれの長所短所とか教えて下さい。
0248デフォルトの名無しさん2008/06/17(火) 20:55:14
>>245-246
こういうのって良くあるTIPだと思うんですけど、そういうサイトとご存知ないですか?
0249デフォルトの名無しさん2008/06/17(火) 20:56:46
>>245
x=String.valueOf(2345);
x.charAt(2);
0250デフォルトの名無しさん2008/06/17(火) 21:02:15
>>248
すみません。いろいろ調べたのですが。InputStream見たいにデコレータ形式だと思ってjavadocも見たのですが、
コンストラクタにもなくて。
0251デフォルトの名無しさん2008/06/17(火) 21:02:28
>>246
PixelGrabberでピクセル値とってきてBufferedImageに書き込むとかは?
02522452008/06/17(火) 21:12:56
どこかこういうTIPが載っているサイトありましたら教えてください
初めてiアプリ自作してるのでわからないことだらけ・・ですOrz
■ このスレッドは過去ログ倉庫に格納されています