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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
過去ログ、関連スレ、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath

前スレ
【初心者】Java質問・相談スレ46【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1085129540/l50

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc2.2ch.net/hp/ */
0685デフォルトの名無しさんNGNG
最高に頭悪そうな〜で紹介されるだけのことはあるな。
0686680NGNG
>>683
サンクス!!!!!!
知識不足で聞き方が悪くてスマソ。。
0687デフォルトの名無しさんNGNG
>>684
1.5 以上で import java.lang.Math.log; すれば a=log(x); できるよ。
0688デフォルトの名無しさんNGNG
>>686 のは知識不足とかが原因ではないよーな。
単に頭使ってないだけ。
0689デフォルトの名無しさんNGNG
>>687
static が抜けてるだろ
0690デフォルトの名無しさんNGNG
>>687
あ、なんかあったなそういうの
何がうれしくてこんな機能つけたのか知らんが

ログはかせるstaticマソッドぐらいだな
恩師にあやかれるのは
0691デフォルトの名無しさんNGNG
恩師?にあやかる?
なぜか変換できない系ではなさそうだな・・・。
どこのテンプレスレか教えてくれ。
0692デフォルトの名無しさんNGNG
"恩師にあやかる"に該当するページが見つかりませんでした。
恩恵にあやかる 177件
恩恵にあずかる 2910件
0693デフォルトの名無しさんNGNG
>>690
ま さ か 記録するほうのログと勘違(ry
最近スタティックメソッドを知って自慢(ry
マソ(ry 
0694デフォルトの名無しさんNGNG
>>693 は面白くないだけでは済まされない
0695デフォルトの名無しさんNGNG
1.4.2で
 import java.util.Map.*;
がコンパイル通ったから「お、staticインポートできるじゃん」と思ったら、内部クラスが使えるだけだった。
0696デフォルトの名無しさんNGNG
>>694
>>693を責めるのは筋違い。
彼は、Javaで出来ることをやっているだけ。
むしろ、煽りにしか使えないJavaに問題を感じてほしい。
0697デフォルトの名無しさんNGNG
>>696 には >>693 が何を書いてるのか理解できるのか…… 本人?
0698デフォルトの名無しさんNGNG
>>697
普通に理解できますが、どこがわからないのですか?
0699デフォルトの名無しさんNGNG
マソって何?
0700デフォルトの名無しさんNGNG
>>699
たぶん、お前が口癖のように使ってる言葉だと思いますよ。
0701デフォルトの名無しさんNGNG
わからん。やっぱ >>698 == >>696 == >>693 なのか?
0702デフォルトの名無しさんNGNG
こんばんは、よろしくお願いします。
JTableで、特定の列の両端にのみグリッド線を引くことは、可能でしょうか。
0703デフォルトの名無しさんNGNG
そういうときはグリッド線非表示にして
セルのレンダリングでやったほうがいいぞ
0704デフォルトの名無しさんNGNG
アプリケーションの作成時に出来るタイトルが表示されてるバーは高さ何ドットでしょうか?
24か23か分からないぽ。
0705デフォルトの名無しさんNGNG
それは環境による
同じようにウインドウの境も変わるし
いろんなところのGUIのデフォルトのフォントサイズも様々

javaに限らず絶対座標でやるとこのへんはまるので注意
0706デフォルトの名無しさんNGNG
それって取得できなかったっけ、実行時に。Insetsかなんかわすれたけど。
0707デフォルトの名無しさんNGNG
今独習JAVAを読んでて継承のあたりを読み終えたんですがどうもピンときません
ちょっとこのまま進むとやばそうなんでここらへんしっかりやっときたいんですが
ちょうどいい練習問題とか紹介してるサイトってないですか?
0708デフォルトの名無しさんNGNG
FrameのGetInset()かなんかでできるんじゃない?
0709デフォルトの名無しさんNGNG
>>707
Canvasとかスレッドあたりをゴンゴン使えば、そのうちわかるんじゃない?
独習Javaはあんまり実用的な例が載ってないから、あれで理解できなくてもそんなに悩まなくてもいいと思う。
0710708NGNG
大文字小文字が変だ…
0711デフォルトの名無しさんNGNG
なんのためのpackか
0712デフォルトの名無しさんNGNG
>>709
どうもです
とりあえず読み進めてみた方がいいみたいですね
0713Ki-yaNGNG
初めて書き込むのにいきなり質問ですみません。
CGIのプログラムを作った後、そのhtmlファイルを見たのですがなぜか左上に×印が出てきてしまうのですが、何で出てきてしまうのでしょうか
お願いします。
0714デフォルトの名無しさんNGNG
TextField, TextArea, TextComponent の関係を見ればイメージがつかめる
APIDoc の読み方わかんないとダメかもしれないけど
0715デフォルトの名無しさんNGNG
>>713
そんな内容では「板違い」としか言えないな。
0716Ki-yaNGNG
書くのを忘れてしまいましたけど、Java関係の本についていたサンプルプログラムは
ちゃんと表示されるのですが・・・
0717デフォルトの名無しさんNGNG
>>716
意味がわからん。
0718162NGNG
がんばれ



                     きーや
0719デフォルトの名無しさんNGNG
ちゃんと学校に行って友達を作って
コミュニケーションをとるって、ことを十分しとけば
言いたいことを伝えられるようになるよ
0720デフォルトの名無しさんNGNG
イベントリスナーを自分で作りたいんですが、どうやっていいか良く分かりません。

一つのオブジェクトで起こったイベントを他のオブジェクトに通知するのってどうやるの?
おれはやり方分からないから、スレッドの無限ループで定期的にイベントの変化を監視するポーリングみたいな手法しか思いつかない。
イベントが起きたら、そいつが直接他のオブジェクトのリスナーに伝えたいんだよ。なんかいいほむぺとかないですか?
あ、GUIの話じゃないですよ。
0721デフォルトの名無しさんNGNG
>>720
ほむぺっていう言葉がきらいだから教えない。
0722デフォルトの名無しさんNGNG
>>702です
>>703さんありがとうございました。
いろいろ試行錯誤の末下記のような感じでしてみましたが、
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class tesuto33 extends DefaultTableCellRenderer implements Icon{
public tesuto33(){
super();
}
public void paintIcon(Component c,Graphics g,int x, int y){
g.drawLine(0,0,0,25);
}
public int getIconHeight(){
return 0;
}
public int getIconWidth(){
return 0;
}
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
JLabel cell = new JLabel();
cell.setIcon(this);
return cell;
}


}
これで、setCellRendereにわたしてます。
こんなのでいいのでしょうか。
0723721NGNG
>>720
1.5の文法のところは適当に変換せろ。
interface Listener{
 performed();
}

class Observer{
 List<Listener> listeners = new ArrayList();
 void addListener(Listener listener){
  listeners.add(listener);
 }
 void fire(){
  for(Listener listener : listeners){
   listener.performed();
  }
 }
}
0724デフォルトの名無しさんNGNG
>>721,720
java.util.EventListener と java.util.EventObject 使うのが作法だよ。
0725721NGNG
>>724
そんなんあるんだね。
EventListenerはマーカーインターフェイスだからいいとして、EventObjectはクラスだから使いにくいね。
限定された用途だと、sourceの型は保証できたほうがいいし。
0726デフォルトの名無しさんNGNG
jar圧縮してダブルクリックしても、「Counld not file the main class. Program will exit.」ダイアログが出てアプリが実行できないのですが、考えられる原因を教えてください。
1.META-INFにMANIFEST.MFにてMain-Classを指定しています。
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.3
Created-By: 1.4.2_03-b02 (Sun Microsystems Inc.)
Main-Class: com.hogehoge.java.app.Appli
2.もちろん com/hogehoge/java.app.Appli.classはありますし、そのクラスにはmain()があります。
なんでー!?
0727デフォルトの名無しさんNGNG
はじめまして。新人さんのJava担当しています。無能なのに。。

一つ質問です。 WEBアプリでDB2に対してSQLを発行して結果を受けるプログラムで
お約束として、最後にPreparedStatement と、ResultSet をcloseするのはなぜですか?と質問を受けました。

恥ずかしながら、そこまで考えず使ってました。理由を聞かれて明確な答えが出ないので 皆様の知恵を貸してください

少し調べて考えた結果、closeする理由は
1.サーバーのキャッシュ上に照会結果を残しておくのはセキュリティ上良くない
2.キャッシュからデータを取得すると レスポンスはあがるが
  実際のWEBアプリでは、データ数が数百万件になるのでキャッシュ容量を確保するため。
  また、リブートするとメモリはクリアされるが、24時間稼動のWEBアプリでは不可能なため
3.即時性を求める場合(メンテナンスフラグとか)の場合は、毎回closeして破棄し毎回データを取得すべきだ

うーん、いまいちです。 どうかご教授願います。

以下はサンプルプログラムです。
//会員テーブルにIDを引数として名前を取得するSQL
String sql = "SELECT NAME FROM MEMBER WHERE MEMBER_ID = ?";
PreparedStatement ps = conn.prepareStatement(sql);
for ( int number_ = 0 ; number_ < 10000 ; number_++ ) {
ps.setString(1,number_);
ResultSet rs = ps.executeQuery();
while ( rs.next() ) {
Beanとかに格納
}
rs.close(); ←ここ
ps.close();
0728デフォルトの名無しさんNGNG
>>726
最後のMain-Classの行で改行してないとか。
0729デフォルトの名無しさんNGNG
>>726
最終行に改行がないんじゃない?

>>727
仕様ではResultSetもStatementも明示的にクローズしなくてよかったような気がするけど
DBMSによっては明示的にクローズしないとリソースリークを起こしてしまうものがある。
0730デフォルトの名無しさんNGNG
すごい以前の内容なんですが、AppletViewerのソースは
どこにあるものなんですか?教えてください。
0731デフォルトの名無しさんNGNG
>>727
使わんリソースいつまでも持っておくと、メモリを余分に使うから。
0732726NGNG
>>728
>>729
Main-Classも最終行も改行あります。
Antのmanifestタグで作ってるから、間違いないと思います。

これまでもこんな事何回もやってきたんだけど今回は何故かNGなんだよなぁ・・
うーん、なぜだ!?
0733730NGNG
ごめんなさい。Googleでとうとう見つけました
ttp://www.wifo.uni-mannheim.de/Java/loesungen/kapitel13/10/AppletViewer.java
0734デフォルトの名無しさんNGNG
>>732
とりあえず、コマンドラインで実行して、エラーメッセージを見る。
0735デフォルトの名無しさんNGNG
> 2.もちろん com/hogehoge/java.app.Appli.classはありますし

記述方法が悪いだけかも知れんけど、なんか怪しい。
0736デフォルトの名無しさんNGNG
>> Main-Class: com.hogehoge.java.app.Appli
>> 2.もちろん com/hogehoge/java.app.Appli.classはありますし、そのクラスにはmain()があります。
クラス名に"."が入ってる?
0737デフォルトの名無しさんNGNG
>>730
http://wwws.sun.com/software/communitysource/j2se/java2/download.html
0738デフォルトの名無しさんNGNG
きーやはCGIとJAVAを混同するという神間違いを起こしている。
0739デフォルトの名無しさんNGNG
Java初心者なのですが、メソッドの引数にクラスを渡して
メソッド内部で値を変更してもらう(戻り値なし)Cのポインタ渡し
みたいのって、あまりやらないほうがいいんでしょうか?
0740デフォルトの名無しさんNGNG
>>739
普通にやる。
0741デフォルトの名無しさんNGNG
あ、必要であれば、ね。
0742デフォルトの名無しさんNGNG
>>739
Javaではプリミティブ型(intとかcharとか)以外では
C言語で言うところのポインタ渡ししかできない
0743デフォルトの名無しさんNGNG
>>742
baka-
0744デフォルトの名無しさんNGNG
>>743
解説ヨロ。
0745デフォルトの名無しさんNGNG
>>744
Javaではすべて値渡し。
Object型でも参照値の値渡し。
0746デフォルトの名無しさんNGNG
>>745
お前がバカだとはっきりした
0747デフォルトの名無しさんNGNG
745 で合ってるじゃん。
それとも Java にもポインタがあると主張したい人?
0748デフォルトの名無しさんNGNG
>>742>>744>>746

わかんないんあら偉ソに講釈たれんな。な?
初心者に間違った知識植え付けちゃうからさ。
0749デフォルトの名無しさんNGNG
>>747
ポインタは参照値だろ
主張も何もありまくりですが?
0750デフォルトの名無しさんNGNG
それより、>>739の質問が参照渡しをしないほうがいいかどうかじゃなくて、参照を渡したオブジェクトの内部表現を変更しない方がいいのか、という質問に対する的外れな回答に>>743のレスがついたのかと思った。
0751デフォルトの名無しさんNGNG
>>749
ポインタと参照値の違いは、ポインタにはアドレスの演算ができること・任意の値が設定できることです。
Javaにはそのようなポインタはありません。
0752デフォルトの名無しさんNGNG
>>751
> ポインタと参照値の違いは
この時点でお前の言ってる事は矛盾してる
0753デフォルトの名無しさんNGNG
>>752
ばか?
0754デフォルトの名無しさんNGNG
ぬるぽの存在がポインタの存在を証明しているという議論で決着は付いてるはずなのだが・・・
0755デフォルトの名無しさんNGNG
Java FAQ: よくある質問とその回答集
http://www.gimlay.org/~javafaq/javafaq.html
0756デフォルトの名無しさんNGNG
>>753
うん、お前がな
0757デフォルトの名無しさんNGNG
整理しよう。
Java言語にはポインタはない。
JavaVMではポインタを使っている。

ここでは言語の話をしていると思われ。
0758デフォルトの名無しさんNGNG
>>739
ちょっと複雑なプログラム組むようになれば、
「アホなこと考えてたなー」と思うはず。
君の考えてるとおりにすると、インスタンスの内部情報を変えられるのは、
そのインスタンスを生成したメソッド内でだけ、ということになりかねない。
0759デフォルトの名無しさんNGNG
じゃあおまえらに質問だ

String s1="abc";
String s2="abc";

さてこの場合の
s1.equals(s2)の結果はどうなる?

�@false
�Atrue
�B大抵の場合、falseになるがtrueになる場合もある
�C大抵の場合、trueになるがfalseになる場合がある
�D両方とも半分ぐらいの確率
0760デフォルトの名無しさんNGNG
それがだめなら

new Canvas(){
 public void paint(Graphics g){
  g.setColor(Color.blue);
 }
}

もダメってなことになるよなぁ。
0761デフォルトの名無しさんNGNG
その話はもう飽きたよ
中途半端に知識かじった奴ウザイ
0762デフォルトの名無しさんNGNG
同じ問題で
s1==s2の結果はどうなる?
0763デフォルトの名無しさんNGNG
「自称・脱初心者」の馬鹿はこれでも嫁
ttp://www.gimlay.org/~javafaq/S012.html#S012-21
0764デフォルトの名無しさんNGNG
>>759
なぞなぞ好きの小学生みたいだな。
ひっかけ問題思いついて出題しまくるヤツいるよね。
0765デフォルトの名無しさんNGNG
>>762
true、っつかStringはいろいろ特殊だからこういう話題には適さないんだよ
0766デフォルトの名無しさんNGNG
なんで C みたいなクソ危ないポインタを、ポインタの定義にしちゃうわけ?
0767デフォルトの名無しさんNGNG
>>764
文字列リテラルの扱いは言語仕様で決まってる。
0768デフォルトの名無しさんNGNG
>>763
「自称・脱初心者」の馬鹿はそれを読んでも理解できません。
0769デフォルトの名無しさんNGNG
>>766
ほかに、「ポインタ」という用語を使うメジャーな言語がないから。
0770デフォルトの名無しさんNGNG
で、結局言葉で議論すると後でいかようにもごまかせるが
こうして問われると自分から「勇気をもって」答えることができる奴って
いないんだよね

軽くあしらうだけなら答え言ってから「ウザイ」なリ言った方が説得力あるのに
それができないということは、やっぱ確信をもってない証拠
0771デフォルトの名無しさんNGNG
「Java にポインタはない」と言ってる奴の大半は、
「Java のポインタ(と勘違いされてるそれ)は C のポインタ(と呼ばれてるあれ) とは違う」
という程度のことしか言ってない
0772デフォルトの名無しさんNGNG
>>765
「true」は違うと思う・・・
0773デフォルトの名無しさんNGNG
>>767
あの問題は、単なるひっかけで、そこまで高尚な意味はないよ。
言語仕様で文字列リテラルがどう扱われようが、VMの実装がどうなってようが、最適化がどうなってようが、同じ結果になる。
0774デフォルトの名無しさんNGNG
メモリアドレス調べてるものは全部ポインタだと思われw
0775デフォルトの名無しさんNGNG
>>771
そもそもメインの話題は「Java のポインタ(と勘違いされてるそれ)は C のポインタ(と呼ばれてるあれ) とは違う」であって
「ポインタはない」と言ってるんじゃないだろ。
0776デフォルトの名無しさんNGNG
>>772
お前頭悪いな
0777デフォルトの名無しさんNGNG
そうではなくて
Javaではポインタが操作できない
ということを
うまくごまかして
「ぬるぽがあるからポインタが無いなんていうのは間違いだ」的に
ごまかしているだけだと思う
言葉で議論してもうまく切り抜けられるだけ
はっきりコードを晒して例を挙げないと議論は終わらない
0778デフォルトの名無しさんNGNG
>>771
屁理屈好きやね。
確かに「JavaのリファレンスはCのポインタとは違う」という話をしてるだけだけど。
0779デフォルトの名無しさんNGNG
>>777
VMと言語を混ぜるな、と。
0780デフォルトの名無しさんNGNG
trueとは限らないよね
0781ケツ毛 ◆BOuBoU.SVg NGNG
おっ!ポインタの話題になると急ににぎやかになりますねッ!
大抵は「NullPointerExceptionがあるということはポインタあるんだよ派」と
「参照値はポインタじゃないしポインタという言葉を捨てろ派」の対決となりますが
今回はいかにッ!いかにッ!!!

ここで一区
「俺の尻 ケツ毛ぼうぼう 自宅にもウォシュレット常備したいけどアパート暮らし」
字余り
0782デフォルトの名無しさんNGNG
>>779
そういうことです

Javaではポインタ操作のプログラミングが出来ないだけで
内部では利用しています
0783デフォルトの名無しさんNGNG
>>777
そっちが「Java にはポインタがある」派の主張の大半やな。
>>778
>確かに「JavaのリファレンスはCのポインタとは違う」という話をしてるだけだけど。
それは本題ではない。本題ではないものを持ち出すなちゅうとる。
本題は「ポインタとは何か」「Java のリファレンスはポインタの定義を満たすか」だろう
0784デフォルトの名無しさんNGNG
>>765
tureが大半だがfalseの場合もあるが正解じゃないのか?
■ このスレッドは過去ログ倉庫に格納されています