【初心者】Java質問・相談スレッド112【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/02/08(金) 19:48:24JavaScript, 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質問・相談スレッド111【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1200151522/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
次スレは>>980あたりで。
0331デフォルトの名無しさん
2008/02/16(土) 05:06:04前半、全て NG なら何のためにそういった書き方が出来るんでしょうか?
さらに別に参照を受け渡すためか class D extends C{} を作って
List<D> dlist = bext; とかしてみましたがエラーでした。
後半、言語設計する側の理屈で言えばそうですね。使う側の立場で宣言だけ見ると
B のスーパークラスだけ add できるリストなのかと思ってしまいそうですが。
何でこうゲネリックウsって消化悪いんでしょうか。誰ですか設計したのは。
0332デフォルトの名無しさん
2008/02/16(土) 06:07:25なるほど。ありがとうございます。(質問者じゃないけれど)
かなり理解が進みました。
// 代入文を見ると、ついつい右辺の型で考えてしまうのよね…
0333デフォルトの名無しさん
2008/02/16(土) 10:25:49本が厚すぎてコードを打っているうちにパタンと閉じてしまいます。
何かいい方法はありませんか?
0334デフォルトの名無しさん
2008/02/16(土) 10:33:370335デフォルトの名無しさん
2008/02/16(土) 10:55:080336デフォルトの名無しさん
2008/02/16(土) 10:57:36独習Javaをやらない。
0337デフォルトの名無しさん
2008/02/16(土) 11:01:09お買い上げありがとうございます。
ttp://www.amazon.co.jp/dp/B0001CQAAQ
ワニクリップか洗濯バサミか何かでもいいけど。
0338デフォルトの名無しさん
2008/02/16(土) 11:25:58J2SE5.0対応を謳ってるくせに、
実際は1.3以前の内容しか載ってない。
例えば、キーワードにassertやenumが無かったり。
よくあんな本が売れるもんだ。
0340333
2008/02/16(土) 11:34:57それを聞くとモチベーション下がるなぁ。まだ第2章だっていうのに。
このスレには独習にお世話になった人はどのくらいいるのだろうか。
0341デフォルトの名無しさん
2008/02/16(土) 11:48:09お世話になったよ。
5.0は対応しているだけで、5.0用ってわけじゃないからなぁ。
1.4系を独習するという事で割り切れば今でも良本。
そもそも5.0系でまともな入門本ってあるかい?
0342デフォルトの名無しさん
2008/02/16(土) 12:09:23Java言語仕様一通り読んだけど、Genericsまわりははっきり言ってわけわからん。
つか、理解を完全に放棄したw
何らかの数学的背景があって、その範疇で整合性を取っているような感じだったが……。
0343デフォルトの名無しさん
2008/02/16(土) 12:18:37assertが載ってないから1.3系だよ。
1.4系の独習なら、他にもっといい本があるだろう。
5.0系の入門書は知らないけど、
1.4系なら結城さんの本とかいいんじゃないの?
5.0に対応してたかも知れないし。
0344デフォルトの名無しさん
2008/02/16(土) 12:22:00XP IE7 導入
JAVAの再インストール
すべてやってもエラーでみれません
対処方法教えていただけませんか?
0345デフォルトの名無しさん
2008/02/16(土) 12:31:02>前半、全て NG なら何のためにそういった書き方が出来るんでしょうか?
それは、get の方を考えてみればわかる。
List<? extends B> の場合、保持してる要素は少なくとも B か
そのサブクラスであることがわかってるから、get は B を返すことができる。
List<? super B> の場合、List<Object> という可能性があるから、
get は Object でしか返せない。
>List<D> dlist = bext;
それは無理。
bext は List<A> かもしれないし。
List<D> の get は D を返すわけだから、A とか入ってたら困るだろう。
0346デフォルトの名無しさん
2008/02/16(土) 12:39:20バージョンをチェックして振り分けてもMSjava1.1だとランタイムエラーになってしまいます。
SUNjava1.1はキチンと振り分けられて動いています。
これって対処できますか?
0347デフォルトの名無しさん
2008/02/16(土) 12:39:26まぁ誰の声が一番でかいかを争ってたんだろうというのは想像に難くないけど。
0348346
2008/02/16(土) 12:55:07if文で1.1以下の時だけそのクラスを使わない処理にしたら、
sun-java1.1はエラーを吐かなくなりましたが、
ms-java1.1はエラーで止まってしまいます。
0349hage
2008/02/16(土) 12:57:37キャンバス上に JComboBox を混ぜたプログラムを作ってるのですが、
マウスドラッグ中に JComboBox がちらついてしまうのが嫌なのですが、
なんとかなりませんでしょうか?
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{
private Image offs; private JComboBox cb; private Point mp;
public Test(){ init(); }
private void init(){
Container c = getContentPane();
c.setPreferredSize(new Dimension(300, 300));
c.setLayout(null); // レイアウト無し
// JComboBox の設定
String[] ss = {"hage", "hige", "huge", "hege", "hoge"};
cb = new JComboBox(ss); c.add(cb); cb.setBounds(30, 30, 100, 20);
pack(); repaint(); setResizable(false); setVisible(true);
// ドラッグで再描画
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent me){
offs = null; mp = me.getPoint(); repaint();
}
});
}
0350hage
2008/02/16(土) 13:00:11if (offs == null){
offs = createImage(getWidth(), getHeight());
Graphics g2 = offs.getGraphics();
g2.setColor(Color.BLUE);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.RED);
if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4);
cb.repaint();
}
g.drawImage(offs, 0, 0, null);
}
public static void main(String[] args){ new Test(); }
}
0351デフォルトの名無しさん
2008/02/16(土) 13:01:23Graphics2D を使う部分だけ別のクラスに分けておいて、通常のクラス名で new する代わりに
Class#forName でロードして Class#newInstance でインスタンス化すれば大丈夫かと思うが、、、
(Graphics2D を使うクラスの名前は Class#forName の引数以外には一切書かない)
そんな昔の、切り捨てたら?
0352デフォルトの名無しさん
2008/02/16(土) 13:12:32とりあえず、JFrameに直接描くな。
JComponentを派生して自前のキャンバスクラスを作り、そのpaintComponentで描け。
0353hage
2008/02/16(土) 13:19:04(以下、連投)
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{
public static void main(String[] args){ new Test(); }
public Test(){ init(); }
private void init(){
MyCanvas canvas = new MyCanvas();
getContentPane().add(canvas);
pack(); repaint(); setResizable(false); setVisible(true);
}
}
0354hage
2008/02/16(土) 13:22:11private Image offs; private JComboBox cb; private Point mp;
public MyCanvas(){ init(); }
private void init(){
this.setPreferredSize(new Dimension(300, 300));
this.setLayout(null); // レイアウト無し
String[] ss = {"hage", "hige", "huge", "hege", "hoge"}; // JComboBox の設定
cb = new JComboBox(ss); this.add(cb); cb.setBounds(30, 30, 100, 20);
// ドラッグで再描画
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent me){
offs = null; mp = me.getPoint(); repaint();}});
}
public void paint(Graphics g){
if (offs == null){
offs = createImage(getWidth(), getHeight()); Graphics g2 = offs.getGraphics();
g2.setColor(Color.BLUE); g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.RED);
if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4);
}
g.drawImage(offs, 0, 0, null);
cb.repaint();
}
}
と、途中で気づいたのですが、 paint を paintComponent にすると治りました・・・
paintComponent というのをはじめて知りました orz
勉強になりました。ありがとうございました
0355デフォルトの名無しさん
2008/02/16(土) 13:22:14Java 系のグループじゃそう言われてるけどなぁ、先日ニュース系の板から秘密で誘導して
統計とって見たら一番多かった Java 6 に続いて 5.0 と MS JVM 1.1 がほぼ同じだったよ。
もっとも、入れてもない奴がダントツだったけど。
0356デフォルトの名無しさん
2008/02/16(土) 14:52:42ありがとうございました。でもさっぱりわかりません。
>>355
ライバルが1.1サポートなんですよ(^^;
どうやらクラスローダーの挙動が違うのが原因なのかな。
0357デフォルトの名無しさん
2008/02/16(土) 15:03:360358デフォルトの名無しさん
2008/02/16(土) 15:56:33Iteratorとかvectorに<E>みたいなのをつけろって
eclipseでやると注意されるのですが
そこにIteretorでStringをあつかうとき<String>みたいに
やったら動きました。
本には書いてないので<>がなにかわかりません。
本だとIteratorでObjectにして好きなクラスを返すみたいになってるけど、
それはできないんですか?
0359デフォルトの名無しさん
2008/02/16(土) 16:06:35本に従ってやるならば、Eclipseでコンパイラレベルを1.4に汁
0360デフォルトの名無しさん
2008/02/16(土) 16:37:08hoge[0]=○○
という文字列を検索したいのですが
半角[]をどうやって表現すればいいのかわかりません><
0361デフォルトの名無しさん
2008/02/16(土) 16:45:53http://www.adobe.com/products/player_census/flashplayer/
Flashのアドビの発表でjavaの普及率が84.6%ってなってるけど?
これだけあれば個人的には十分。
2ちゃんねらは過去にFlashのリンクを何度も踏まされてるから
インストール率が高いとかかも。
0362デフォルトの名無しさん
2008/02/16(土) 16:57:59正規表現としては\でエスケープすればOK
Javaの文字列としては・・・
\\[で[にマッチするということになるな
0363デフォルトの名無しさん
2008/02/16(土) 17:33:57ClassNotFoundが出たら1.1だと判断すれば?
で、>>351が言うように、1.1に存在しないクラスを直接参照しないようにする。
0364デフォルトの名無しさん
2008/02/16(土) 17:40:55ありがとうございます!
てっきり\ひとつだけだと思ってました><;
0365デフォルトの名無しさん
2008/02/16(土) 17:59:340366デフォルトの名無しさん
2008/02/16(土) 18:23:57このスレでDerbyの使い方講座を開講しろっていうのか?
Apacheのページへ行ってDerbyのドキュメントを読め。webで検索しろ。
ここで質問するならもっと質問を具体的にして絞り込め。
0367デフォルトの名無しさん
2008/02/16(土) 18:35:23(1) derby.jarファイルにクラスパスを通す
(2) Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); を呼ぶ
(3) DriverManager.getConnection("jdbc:derby:test;create=true") で Connection を取得する
(4) 好きなSQL文を実行する
(5) Connection を閉じる
(6) DriverManager.getConnection("jdbc:derby:;shutdown=true"); を呼んでシャットダウンする
0368デフォルトの名無しさん
2008/02/16(土) 20:40:35T な変数には、<? extends T> なものを代入できるし、
<? super T> な変数には、Tはものを代入できるので、
返値に対してコバリアント的にしたい場合は、extends にして
引数に対してコバリアント的にしたい場合は、super にする
0369デフォルトの名無しさん
2008/02/16(土) 21:27:43if(a||b||c&&d)というのはaもしくはbまたはcかつdがtrueの時if文を実行ですよね?
ではif(a||b&&c||d)というのはaもしくはbがtrueかつcまたはdがtrueの時if文を実行。
ということで良いんですか?この仮定が合ってるとすると条件式の順番にも気をつけなくてはいけませんよね?
0370デフォルトの名無しさん
2008/02/16(土) 21:28:43ClassNotFoundException は、それを実行しようとしているかどうかに関わらず
それが分かったらいつVMが投げても構わないって仕様じゃなかったっけ。
それぞれの実装を別のクラスローダで読み込むのがいいんじゃまいか
0371デフォルトの名無しさん
2008/02/16(土) 21:35:42日本語でおk
0372デフォルトの名無しさん
2008/02/16(土) 21:47:12Java とは関係なさそうだけど。
* と + に優先順位があるのと同じ。
a || b || c && d => a || b || (c && d)
a || b && c || d => a || (b && c) || d
0373369
2008/02/16(土) 21:51:17ありがとうございました。
0374デフォルトの名無しさん
2008/02/16(土) 22:34:42もう少し解りやすく、他人に伝わるよう書く努力が欲しい。
if(a||b||c&&d)というのは、『a』もしくは『b』または『cかつd』のいずれかがtrueの時にif文を実行ですよね?
ではif(a||b&&c||d)というのは、『aもしくはbがtrue』かつ『cまたはdがtrue』の時if文を実行。
ということで良いんですか?
質問はこういう意味? なら>>372
ググるときは、『Java』、『演算子』、『優先順位』でOK。
0375デフォルトの名無しさん
2008/02/16(土) 22:45:04データを取得してテキスト形式で保存→新たに取得して比較→二日以上たったデータは削除
という感じなのですが、二日たったことを判断するのはどういう風にすればいいのか悩みます。。
ちなみにデータ取得時の日時は年/月/日/時/分まで保存してます
簡単に日にちで比較すると31日とか30日の判断もあるし、うるう年とかもあるので悩んでます><
いいアイディアはないでしょうか?
0376375
2008/02/16(土) 22:50:32どうもすいませんでした><;
0377デフォルトの名無しさん
2008/02/16(土) 23:15:140378デフォルトの名無しさん
2008/02/17(日) 00:07:31そんないつの時期に取ったか分からん統計出されても知らんがな。 Win に MSJVM が
デフォルトインストールだった時代や JavaScript のアプレット enable フラグだけ見てたら
それくらい行くだろうね。少なくとも 30 秒以上滞在してアプレットが起動しない環境は
倍以上居る。
0379デフォルトの名無しさん
2008/02/17(日) 00:35:10上記の方法で次々に値を代入していくにはどうすればいいですか?
0380デフォルトの名無しさん
2008/02/17(日) 00:41:28HashMapにaddするときに使ってる変数を変に使いまわしていないか?
HashMapに代入されるのは結局の所は参照なので参照先を書き換えると変わるぞ
0381デフォルトの名無しさん
2008/02/17(日) 00:55:40ありがとうございます
参照先が変わってるのかなあ
やろうとしていることは HTMLで入力した値を
サーブレットに渡してintにランダム変数を入れて
それをhashmapのkeyにして値も代入
一回目はうまくいくんですけど二回目以降に値が
リセットされてしまいます
0382デフォルトの名無しさん
2008/02/17(日) 01:04:26…?
HashMap のインスタンスが毎回生成されてる、なんてオチは無いデスヨね
0383デフォルトの名無しさん
2008/02/17(日) 01:12:22た、たぶんそれです
ありがとうございますOrz
もう少しがんばってみます
0384デフォルトの名無しさん
2008/02/17(日) 01:15:160385デフォルトの名無しさん
2008/02/17(日) 01:18:070386デフォルトの名無しさん
2008/02/17(日) 11:15:50いかんせん組み込みっぽいのはやったことがなくて。MIDP 2.0? とやらに対応させれば
良いんでしょうか? それとも専用の SDK でも買わなければけいないんでしょうか?
携帯の開発情報はそこそこありますがそれと同じと思って良いんでしょうか。
0387デフォルトの名無しさん
2008/02/17(日) 11:21:17操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
PATHの設定がどうしても出来ないためこれが出てしまっていると思うんですが、
>>1に書かれているURLが消えているのか飛べないです。
他に本も色々なサイトも見ましたが分かりません。
どこか分かりやすく説明しているところは無いでしょうか?
0388デフォルトの名無しさん
2008/02/17(日) 11:28:480389デフォルトの名無しさん
2008/02/17(日) 11:44:22しかしやはりどうも落としたバージョン(jdk-6-doc-ja)
だと上手くいかないようなので、申し訳ないのですが、質問を変えます。
改めてj2sdkを落としたいんですが、場所がどこなのか分かりません。
Javaの公式サイトから探しましたが、日本語に変換しても
別のページに飛ぶとまたすぐ英語になってしまうので、読めませんし訳が分かりません。
具体的なURLを直接教えて下さると大変助かります
0390デフォルトの名無しさん
2008/02/17(日) 11:45:34コーヒー返せwww
0391デフォルトの名無しさん
2008/02/17(日) 11:47:56やたら重いんで何かおかしいと思ったんですが。
でも英語だらけで分からないんですよ、ほんと。
国際派じゃないとこれから生きていけそうもないな
0392デフォルトの名無しさん
2008/02/17(日) 11:54:44document
0393デフォルトの名無しさん
2008/02/17(日) 11:55:53ググれカス
0394387
2008/02/17(日) 11:56:23ほんとに日本語でおkという感じなんですが…読めない。
やさしいJAVA2版に書かれていたURLも消えているようですし、
今の主流はもうj2sdkじゃないんでしょうか?
0395デフォルトの名無しさん
2008/02/17(日) 11:58:13確かにJDKとは書いてありますが、ドキュメントの方を取得されたようで。
Java SE Downloads
ttp://java.sun.com/javase/ja/6/download.html
リンク先には、JDK, J2EE, NetBeans, JRE と並んでいますが、
それぞれの説明を読む等で適切なものを選んでインストールしてください。
>>391
ま、ゆっくりやってくださいな。好きこそ物の上手なれとも言いますし。
アルファベットが読めないとか辞書を触ると目が見えなくなるとか言う人なら
更に教育を受けるか、病院に行った方が良いと思いますが。
0396387
2008/02/17(日) 11:58:16お騒がせしました
0398デフォルトの名無しさん
2008/02/17(日) 12:01:480399デフォルトの名無しさん
2008/02/17(日) 12:06:24あんなに懇切丁寧なレスを嫌味だなんて。
というか、有用な情報を見いだす目が著しく欠如しているってことか。
JDK落とすだけでこれだから、この先は想像を絶するいばらの道が待っていることだろう。
0400デフォルトの名無しさん
2008/02/17(日) 12:13:340401デフォルトの名無しさん
2008/02/17(日) 12:43:040402デフォルトの名無しさん
2008/02/17(日) 12:47:280403デフォルトの名無しさん
2008/02/17(日) 12:57:40>>387本人乙。
0404デフォルトの名無しさん
2008/02/17(日) 13:14:000405デフォルトの名無しさん
2008/02/17(日) 13:36:390406デフォルトの名無しさん
2008/02/17(日) 13:37:240407デフォルトの名無しさん
2008/02/17(日) 13:48:170408デフォルトの名無しさん
2008/02/17(日) 13:53:490409デフォルトの名無しさん
2008/02/17(日) 15:16:040410デフォルトの名無しさん
2008/02/17(日) 15:17:250411デフォルトの名無しさん
2008/02/17(日) 15:39:490412デフォルトの名無しさん
2008/02/17(日) 15:46:13母さんにあそこから最新の JRE 落として入れろとはとても言えない。
0413デフォルトの名無しさん
2008/02/17(日) 16:01:35まずはインストールをもっと簡単にして。
0414デフォルトの名無しさん
2008/02/17(日) 16:50:000415デフォルトの名無しさん
2008/02/17(日) 17:55:48もっともです。テンプレっぽいのに追加で。
**** 開発環境が必要の場合は ****
>>5
**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/
0416デフォルトの名無しさん
2008/02/17(日) 17:59:58かえって混乱すると思う。
0417369
2008/02/17(日) 18:54:290418デフォルトの名無しさん
2008/02/17(日) 18:59:59ところがEclipseを使うのにJDKは不要だ罠
新人研修等ではじめからEclipseでスタートする場合、
JDKを入れたことがないという人も出てきそうなご時世だね。
0419デフォルトの名無しさん
2008/02/17(日) 20:16:41これってソート後の配列の添え字情報とかも取得できないんですか??
たとえば
ソート前
a[0]= 2
a[1]= 1
a[2]= 3
↓ ソート
ソート後
a[1]= 1
a[0]= 2
a[2]= 3
の[1],[0],[2]の情報を取得したいですー!何か方法ありませんかー!
0420デフォルトの名無しさん
2008/02/17(日) 20:25:55ただ単に安定なソートがしたい、ってだけなら、
List<Integer> lst = Arrays.asList(2, 1, 3);
Collections.sort(lst);
でOKじゃない?
0421デフォルトの名無しさん
2008/02/17(日) 20:35:50こういうラッパーをかぶせてからソートすればいいんじゃね
0422デフォルトの名無しさん
2008/02/17(日) 21:09:07一番高速なのは、quicksortのコードを自分でいじって実装することかな。
値をスワップするところで、添え字もスワップすればいい
0423419
2008/02/17(日) 21:09:52返答ありがとうございます
hoge[0] = 3423
hoge[1] = 4123
hoge[2] = 4142
a[0]= 2
a[1]= 1
a[2]= 3
みたいにhogeにID、aに値を保存していて、それぞれ添え字で=を確認してたんです
(つまり添え字が0ならID;3423→2みたいにです)
あとaには同じ値がたくさんはいっているのでソート後に値で確認もできないんです。。。
もしかして他にいい保存方法あったりしますかね^^;
0424デフォルトの名無しさん
2008/02/17(日) 21:10:48やっぱ自分で実装するのが一番早いですかね?。。
0425デフォルトの名無しさん
2008/02/17(日) 21:16:03class IDAndValue { int id; int value; }
ソートはComparatorを自分で実装すればいいだけ
0426デフォルトの名無しさん
2008/02/17(日) 21:21:10ありがとうございます
やってみます!
0427デフォルトの名無しさん
2008/02/17(日) 21:27:250428デフォルトの名無しさん
2008/02/17(日) 22:31:34BufferedReaderのreadLineのように一行ずつ読み込めるものがあると良いのですが、、、
0429デフォルトの名無しさん
2008/02/17(日) 22:45:340430デフォルトの名無しさん
2008/02/17(日) 22:45:43よりハッピーになると思う
■ このスレッドは過去ログ倉庫に格納されています