1 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:54:09 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 Java使いが優しくコメントを返しますが、 お礼はJavaの布教と初心者の救済をお願いします。 Java SunのHome Page www.java.com/ja/ 前スレ くだすれJava(超初心者用) pc10.2ch.net/test/read.cgi/tech/1126470659/l50
207 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 16:56:40 ] >>206 宿題は宿題スレへ
208 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 16:59:43 ] >>207 すまん、そんなスレがあったのか。 ありがとう。
209 名前:質問1/2 mailto:sage [2007/07/08(日) 07:16:45 ] コマンドラインから入力した数字以下の素数を表示させるプログラムを作っていたのですが public class Sosuu1 { public static void main(String[] args) { int[] data = new int[args.length];//ここから3行はコマンドラインから数字を入力するためのものである。まず、int型の配列dataをつくる。 data[0] = Integer.parseInt(args[0]);//ここで整数に変換する System.out.print(data[0] + "以下の素数を表示します ");//コマンドラインから入力した数字を表示する boolean[] prime =new boolean[1000];//判別 for(int tasikame = 2 ; tasikame < 27 ; tasikame++){ //37×27=999 ここでは配列を1000個しか用意していないのでtasikame < 27とした。 prime[2*tasikame] = false;//素数でないというフラグをつける prime[3*tasikame] = false;//素数でないというフラグをつける prime[5*tasikame] = false;//素数でないというフラグをつける prime[7*tasikame] = false;//素数でないというフラグをつける prime[11*tasikame] = false;//素数でないというフラグをつける prime[13*tasikame] = false;//素数でないというフラグをつける prime[17*tasikame] = false;//素数でないというフラグをつける prime[19*tasikame] = false;//素数でないというフラグをつける prime[23*tasikame] = false;//素数でないというフラグをつける prime[29*tasikame] = false;//素数でないというフラグをつける prime[31*tasikame] = false;//素数でないというフラグをつける prime[37*tasikame] = false;//素数でないというフラグをつける }
210 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:18:06 ] int i = 0;//int型の変数iを初期化 for (int s = 2 ; s < data[i] ; s++) { if(prime[s]==false){//もしprime[s]がfalseのときは・・・ System.out.print("×");//なにも表示しない }else{ // それ以外のときは System.out.print(s+",");//表示せよ } } } } で実行しても、どうしても上手くいかないのですがなぜなのかどうしても分かりません。 どうすればいいのでしょうか?
211 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 17:13:00 ] Podcastの動画再生(MPEG4)ってJavaでできる? wmvに変換してCで作った方が楽?
212 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 18:26:16 ] >>209 boolean配列の要素の初期値はfalseだということ。 全てにfalseが入っている配列にfalseでフラグを立てても意味がない。 最初に全要素にtrueを代入するか、または、trueで非素数のフラグ立てをするかする。 どううまくいかないのか、どうなってほしいのか書いていないから推測だが、 その方法だと、例えば、2の倍数は2*26=56までしか非素数フラグを立てられない。 3の倍数だと3*26=78まで。もし、そういう方法を取るのなら各素数ごとに、 tasikameの終わりの値を変えないと取りこぼしがいくらでも出てくる。 それに、その方法は41の倍数の排除ができないよね? もしそのやり方を通したいなら、まず2自身を除く2の倍数だけ排除して、 排除されなかった最小の整数(つまり3)自身を除くその整数の倍数を排除して、 という感じで順番にやれば簡潔なプログラムになると思う。
213 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:17:47 ] >>212 ありがとうございました、もう一度その方法でやってみます
214 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:27:51 ] >>212 上手くいきました、ありがとうございました。 どうやらboolean配列の要素の初期値はfalseだという基本的なことを理解していなかったのが原因だったようですorz
215 名前:212 mailto:sage [2007/07/08(日) 19:40:43 ] 問題に本質的ではないけど、つっこまれる前に訂正しておく。 2*26=52だねorz
216 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:52:16 ] java、超初心者です。 諸事情により、javaでマウスポインタの軌跡を測定し保存することになったのですが… そういうのってできますか?javaならできる!と言われたのですが自分では解らなくて…。
217 名前:デフォルトの名無しさん [2007/07/16(月) 22:53:46 ] 付箋を作成したいのですが、コンパイルができません。 C:\sample>javac FusenExec.java FusenExec.java:6: シンボルを見つけられません。 シンボル: クラス Dodai 場所 : FusenExec の クラス Dodai fusen; ^ FusenExec.java:7: シンボルを見つけられません。 シンボル: クラス Dodai 場所 : FusenExec の クラス fusen = new Dodai(); ^ エラー 2 個 因みに、ソースはこれです。どこがおかしいかを指摘ください。 class FusenExec{ public static void main(String[] args){ Dodai fusen; fusen = new Dodai(); fusen.setSize(300,50); fusen.setVisible(true); } }
218 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:09:52 ] >>216 できるかできないかと言われればできる。
219 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 01:52:27 ] >217 Dodai クラスが宣言されていない。
220 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 01:54:32 ] マルチするやつは低脳
221 名前:Cの老師を目指す女 mailto:sage [2007/07/18(水) 00:23:11 ] 裕美子といいます。大都会の片隅で、×いちの孤独なOLをやっています。 >>217 最近出版された書籍のサンプルプログラムですね。Dodai.jarはきちんと 指定されたディレクトリにコピーして、Pathの設定も指定通りでしょうか? よくわからなかったら、Dodai.jarをソースファイルが置いてあるディレクトリ にコピーしてみてください。
222 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 07:09:48 ] 2chでいきなり自己紹介する奴は久しぶりに見た
223 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 08:08:32 ] 新参か
224 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 14:45:49 ] 抽象クラスClassAから派生させた、 ClassAAのインスタンスやClassABのインスタンスの入る可能性のあるvariable1は ClassA variable1; variable1 = new ClassAA(); variable1 = new ClassAB(); てな風に使えますよね? ここでClassAのメソッドは、variable1.cA_Method1();という風に使えると思うのですが、 ここで、変数の内容がclassABのインスタンスだった場合のみ、classABのみに実装されている .cAB_Method1()を呼び出すにはどうすれば良いのでしょうか if (variable1 instanceof ClassAB){variable1.cAB_Method1()} とやっても ifの中の実行内容はなんら変わってないので何の解決にもなりませんでした 動的言語しか使った事無いのでよくわからません
225 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:20:24 ] >>224 何もしない同名のメソッドを他方にも作って継承元で仮想関数を定義。 「何かおかしい」と思うならそれは設計がおかしいんだろ、多分。
226 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:48:17 ] Javaって仮想変数ないですよね やっぱり何もしない関数をスーパーに置いておいて、サブでオーバーライドするしかないんですね ありがとうございました
227 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:24:57 ] >>224 静的な型がClassA型の変数variable1が呼び出せるメソッドはClassAで定義されているもののみ。 ClassAB型で定義されているメソッドを呼び出したければキャストで静的な型を動的な型に合わせればいい。 if (variable1 instanceof ClassAB){((ClassAB)variable1).cAB_Method1();}
228 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:29:08 ] キャスト演算子より.の方が優先順位が高いので、 (ClassAB)variable1.cAB_Method1(); としないように。
229 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:40:16 ] 理解しにくけりゃ if(variable1 instanceof ClassAB){ClassAB variable2=(ClassAB)variable1; variable2.cAB_Method1();} ClassA variable1; variable1=new ClassAA(); みたいにスーパークラス型の変数には無条件で代入できるけど サブクラス型の変数へはキャストが必要になる キャストは強引に型を変換するから代入したものが本当にその型でなければ当然死ぬ
230 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:02:29 ] >>224 >>226 仮想変数というものは寡聞にして知らないのだが: Javaのインスタンスメソッドは全部C++でいう仮想関数だし、 純粋仮想関数(=0)はabstractで宣言したメソッドが該当するぞ。 何もしない foo() {} のようなメソッドではなく abstract foo(); と宣言しておくことで、サブクラスでの実装を強制できる。
231 名前:Tomcatについての相談ですが・・・ [2007/07/29(日) 17:58:06 ] 『やさしいJava活用編第2版』の学習をした方、あるいはTomcatを使ったことがある方が いましたら以下の問題の解決にご協力くださいm(_ _)m。 付録CD-ROM内のTomcat 5.5をウィザードに従ってインストールしたのですが すべてのプログラム→Apache Tomcat 5.5 →Monitor Tomcatという風にTomcatを 起動しようとしても、 (X) アクセスが拒否されました。 Unable to open the Service Manager と表示され、プログラムを起動することができません。 インストールする際に、麻奈本に載っていたスクリーンショットではUser Nameがadmin、 Passwordが空欄だったにも関わらず、ユーザー名とパスワードを設定してインストール したのが原因なのかな?と思い、アンインストールし、パスワードを設定せずにインストール し直しましたが駄目でした。 ちなみにOSはWindows Vista Home Basicです。 よろしくお願いします。m(_ _)m
232 名前:232 mailto:sage [2007/07/29(日) 19:44:19 ] dream.mods.jp/news/tomcat.html むむぅ・・・これが解決策なんでしょうか・・・。 Sysdeoっていうソフトを見つけてくればいいのかな。
233 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 11:09:35 ] 流れぶった切ってスマソ Javaをまじめに始めて3日ぐらいなんだけど、 PHPで言う所のsystem(); みたいなものって Javaにもある?
234 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 13:42:09 ] くだすれでも聞きにくい超低レベルな質問というか確認なのですが・・・ 現在c: >Program Files >javaに入っているフォルダが jdk1.5.0_11 jdk1.5.0_12 jre1.5.0_11 jre1.5.0_12 jre1.6.0_01 となってます。古いバージョンが残っているようなのですが、最新バージョンを入れても 古いものが上書きされるのでなく、旧バージョンは手動で削除する必要があるのでしょうか? この場合は jre1.6.0_01、jdk1.5.0_12を残して他はすべてフォルダごと削除してもOKなのでしょうか? 幼稚な質問ですがよろしくお願いします。
235 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 18:58:34 ] プログラムの追加と削除でアンインストール。
236 名前:デフォルトの名無しさん mailto:java [2007/07/30(月) 20:19:11 ] >>233 PHPのsystem();がどんなものか分からんが 外部プログラムを起動するCのsystem関数に相当することをやるならProcessBuilderクラス もし外部プログラムに対する入出力が必要ならProcessBuilder#startで得られるProcessインスタンスから 入出力のストリームをもらえ でもjavaを始めて3日で外部プロセスに依存するなんていかんよ まずはpure javaプログラムでどこまでできるか勉強したほうがいい
237 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:33:45 ] >>231 c:\programfileじゃないとこだったら 入ったよ。 一応、unc無効にしてからやったけど。
238 名前:237 mailto:sage [2007/07/30(月) 20:37:07 ] みすった。 uncじゃなくてuacだった。
239 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:41:08 ] >>236 おぉ、thx! ProcessBuilder builder = new ProcessBuilder("notepad"); こういうことか。 いや、簡単なランチャー作れるね。 > PHPのsystem();がどんなものか分からんが system("notepad",$retval); こんな感じ。 > まずはpure javaプログラムでどこまでできるか勉強したほうがいい 今は基本部分やっとります。 延長上にそれがあるなら、楽しいなと思ってね。 ありがとう。
240 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:51:20 ] >>239 そうそう、そんな感じ そのあとbuilder.start()で実際にプロセスを起動する どんな言語もそうだけどjavaもいろいろ楽しいから楽しみながらがんばれ
241 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 23:02:58 ] あまり汎用性はないが、1.6だとGUI上のシェルみたいに desktop.browse(uri) desktop.open(file) とかもできるようになった。
242 名前:デフォルトの名無しさん [2007/08/01(水) 02:52:35 ] 232へ 違うだろ。 これはあくまでもEclipseの場合じゃないかな? サイトを見た限り。 で?できた? この板ではなく別の板かサイトを見たほうがいいと思うよ。
243 名前:231=232 mailto:sage [2007/08/01(水) 12:00:11 ] >>242 >>232 のサイトだと、Tomcatをインストーラーを使わずにzipでダウンロードし、 手動で導入すれば、フォルダのtomcat6.exeをクリックでとりあえず起動できる ようになるということですよね。 さらにEclipse+Sysdeoを使えば普通にコントロールできるようになると・・・。 すみません。それらの方法はまだ試していません・・・。 一応全てのコードをメモ帳手打ちで学習したかったので、狭い部屋の狭い机の Vista PCをどかして、XPのノートPCにTomcatを入れたら普通に動いたので なんとか学習を継続しています。
244 名前:デフォルトの名無しさん [2007/08/01(水) 16:03:01 ] いいんじゃないの? それで。 しかし2台もPC持っているのはすごいな。 でも2台Windowsなのはもったいないから。 XPで学習が終わり次第、Linuxを入れよう。 幅が広がるよ。
245 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:19:22 ] PC2台って別にすごくないし珍しくも無いよ 特にこの板とかだとね
246 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:47:43 ] 誰もメモ帳につっこまないw
247 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 18:50:15 ] >>245 がKYだなw
248 名前:231=232 mailto:sage [2007/08/03(金) 01:34:03 ] もう一つお願いします(汗)。 サーブレット(Sample6.java)をコンパイルしようとしたのですが、コンパイルエラーとなり、 import mybeans; の文が指摘されました(mybeansはサーブレットと同じディレクトリに属すフォルダ名です)。 「.」が無いということなので、次は「import mybeans.*;」に修正してコンパイルしても、 パッケージmybeansは存在しませんと言われてしまいます。 あるはずのパッケージがコンパイルにおいて認識されない場合、どういった原因が考えられ得る でしょうか。ご教示いただけるとありがたいです。 Tomcatをインストール →(省略)→ WEB-INF →→ classes →→→Sample6.java したディレクトリ | → mybeansフォルダ → CarBean.java
249 名前:248 mailto:sage [2007/08/03(金) 02:09:26 ] 「やさしいJava 活用編 "import mybeans"」でググってみたら 「Java質問・相談スレッド102」でも全く同じ相談があったらしく、その人は自力で 解決できたみたいですけ、原因が分からなかったとか。
250 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 11:45:06 ] コンパイルって何を使ってんの?コマンドライン?
251 名前:248 mailto:sage [2007/08/03(金) 11:49:14 ] >>250 javacを使用しています。
252 名前:248 mailto:sage [2007/08/03(金) 11:56:11 ] コマンドプロンプトを使ってjavac Sample6.javaと入れてコンパイルを試みています。
253 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:06:28 ] まずさー、import mybeans.*; ってのは、以下のソースで mybeans.hoge() とかのmybeans.を省略するためにあるんだから hoge()とかがソース上に無いんだったら書かないでいいんだよ。
254 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:10:41 ] で、多分 mybeans.hoge() の省略である hoge()はあるんだろう そしてそのmybeansの場所はclasspathに無いと駄目なんで コンパイルしている場所をclasspathに含めるなら、 . を追加しないとね。
255 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:12:00 ] package も書いてあるのかどうかが気になるけど、まあいいや
256 名前:248 mailto:sage [2007/08/03(金) 12:44:45 ] >>253-255 さんのおかげで解決できました。 classpathってこれのことですよね?と確認するために 変数名:CLASSPATH 変数値:C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;, と書いたら、\servlet-api.jar;,←セミコロン、カンマとなっていました。 そしてインポート文をimport mybeans.*;にしたらコンパイルできました。 ご迷惑おかけしました。
257 名前:248 mailto:sage [2007/08/05(日) 16:52:34 ] 以下は『やさしいJava活用編第2版』の232ページからの引用です。 import java.sql.*; public class Sample1 { public static void main(String args[]) { try{ //接続の準備 String drv = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql:///cardb"; String usr = ""; String pw = ""; //データベースへの接続 Class.forName(drv); Connection cn = DriverManager.getConnection(url, usr, pw);
258 名前:257のつづき mailto:sage [2007/08/05(日) 16:53:40 ] //問い合わせの準備 Statement st = cn.createStatement(); String qry = "SELECT * FROM car_table"; //問い合わせ ResultSet rs = st.executeQuery(qry); //データの取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); while(rs.next()){ for(int i=1; i<=cnum; i++){ System.out.print(rm.getColumnName(i) + ":" + rs.getObject(i) + " "); } System.out.println(""); } //接続のクローズ rs.close(); st.close(); cn.close(); } catch(Exception e){ e.printStackTrace(); } } }
259 名前:248 [2007/08/05(日) 17:14:52 ] 何度も申し訳ございません。m(__)m 上の2レスはMy SQLのデータベースに接続するためのプログラムで、コンパイルは しっかりと通るので載せる必要はなかったのかも知れませんが、java Sample1の実行時 に次のように始まる大量の例外メッセージが出てきてしまいます。 C:\YJKSample\8>java Sample1 com.mysql.jdbc.CommunicationsException: Communications link failure due to under lying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: Permission denied: connect (長すぎて後略します) これはこのスレで相談することでなくデータベースソフト関連の板に当たった方が良いかも しれませんが、何が原因で起きているか判別できる方はいらっしゃらないでしょうか。 他のスレで「やさしいJava」同梱のMy SQLはバージョンが古いと聞いていたので、My SQLも JDBCドライバもTomcatと同様に最新のものをダウンロードしておきました。 My SQLにテキストファイルを読み込ませてデータベースを作成するテストは成功しているので ちゃんと動いているはずなのですが・・・。 本ではJDBCドライバはTomcatのフォルダにコピーするようにとあるのですが、JDKには インストールしないで大丈夫なの?とも思ってしまいます。 すみません!長文を大量に投稿してしまいました。もう少し、調べて問題点を整理してみます。
260 名前:デフォルトの名無しさん [2007/08/05(日) 21:20:17 ] 人間のゴミビンゴ(1列揃えばアウト) @│A│B ─┼─┼─ C│D│E ─┼─┼─ F│G│H @ 無職 A 童貞 B 引きこもり C キモ顔 D 肥満 E 毎日オナニー F 低学歴 G 30歳以上で独身 H 貯金100万未満
261 名前:デフォルトの名無しさん [2007/08/06(月) 02:00:19 ] わからんな。 ソースは間違っていそうにないのだが.... これってDBのデータをjavaで表示するんでしょう? com.mysql.jdbc.CommunicationsException: Communications link failure due to under lying exception: このエラーググッても英語しかないんだよね? これはjavaの質問スレッド板で聞いたほうがいいんじゃないかな?
262 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 02:29:32 ] 問題はその下で実際にMySQLが出したエラーだから、 Permission denied: connect こっちだよな。 connect(2)がPermission deniedすなわち EACCES エラーを 出すのは、手元のBSDのマニュアルによると [EACCES] The destination address is a broadcast address and the socket option SO_BROADCAST is not set. 接続先アドレスはブロードキャストアドレスだがオプションに SO_BROADCASTはセットされていない または Search permission is denied for a component of the path prefix. パスの一部のディレクトリに検索パーミッションが出ていない (パスってことはUNIXドメインソケットの場合限定か) または Write access to the named socket is denied. 名前付きソケットへの書き込みが拒否された。 だそうだ。 あとはMySQLのどこのconnectで実際にエラーになってるか を探すくらいか。
263 名前:248 mailto:sage [2007/08/06(月) 06:22:52 ] >>261-262 教えてGooの似たような問題のトピックで「String drv = "com.mysql.jdbc.Driver"; 」のところが、 「org.gjt.mm.mysql.Driver」のように記述されているのを見たので、自分のソースコードもそれに 変更してみたら、例外の内容が少し変わりました。 java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO ) SQLException: Access deniedでググると例によって教えてGooなどの質問掲示板が続々ヒット するのですが、回答者の多くが、それは読んで字のごとく、SQLへのアクセスが拒否されたことだろうと 説明していました。 MySQLの設定ウィザードでもセキュリティー設定(パスワード)のチェックを外してあるので、 アクセス拒否されるのが信じられないのですが。そのほかファイアウォールを切ってみたり ソースコードを素人なりにごにょごにょいじったりしてみました。 うーん、難しいですね。とりあえずSQLExceptionだとググるとたくさん出てくるのでもう少し粘ってみます。
264 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 08:50:16 ] >>263 >Access denied for user ''@'localhost' (using password: NO) @'localhost' ってことはユーザーを何も指定していないってことだよな? ふつー user@'localhost' みたいになるんじゃね? userのとこが root だっ たりするかもしれんが。
265 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:34:17 ] >>264 レスありがとうございます。何とかデータベースへ接続できました! 私も最終的には「ユーザー認証」が問題の根幹なのだろうと的を絞っていました。 先ほど>>263 さんのレスを読んで、もう一度MySQL Server Instance Config Wizard と自分のJavaファイルをいじくって見ました。 「やさJava」では上記のウィザードでパスワードの設定を行わないものとし、セキュリティー設定の 可否のチェックそのものを外していたのですが、しっかりパスワードを設定し、Javaファイルも String usr = "root"; String pw = "(パスワード)"; にしてみたら、コマンドラインからデータベースの内容を表示することができました。 ただ、不思議なのはこういったパターンも以前試したはずですし、Javaファイルを上の ように修正する前にmysqlファイルのようなものが作業フォルダにいつのまにかできて いるのを見て驚いたことです。それは削除しましたが。 JDBCドライバをあらゆるlibフォルダに絨毯爆撃してみるなど、ググってみつけたことを 次々と実行していったので、どれが決め手になったのやらorz
266 名前:デフォルトの名無しさん [2007/08/07(火) 01:51:37 ] やさjavaを終わったら別の本をやれ
267 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 01:35:56 ] やらしいjavaとか出版予定はないかな?
268 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 11:14:21 ] やさしい心よりやらしい体って山本弘の小説のキャラが言ってた。
269 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:57:00 ] 他人のソースを読ませてもらって勉強してる初学者ですが すごく違和感を覚える記述に出会いますた これは常識的な(見習ってもいい)書き方なのか教えて下さい こういうクラスがあって public class Team { // (中略) private ArrayList memberList = new ArrayList(); public ArrayList getMemberList() { return memberList; } // (中略) } 別の場所でこうやってる Team team2ch = new Team(); team2ch.getMemberList().add("茂名"); // ← team2ch.getMemberList().add("擬古"); // ← team2ch.getMemberList().add("志井"); // ← getterを通じてメンバ変数の中身をいじる、というやり方は Java(というかOO?)の世界ではありふれた手法なんでしょうか? 変だと思う俺の方こそ変で、認識改めた方がいい?
270 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 16:25:31 ] 場合によりけりだけど、個人的には getXxx っていう名前は微妙。 単なる memberList() だったら自分的には許容範囲かな。 teamFoo.memberList().add("bar"); とか。 でもまぁ、その程度なら memberList をそのまま公開するよりか Team#addMember を設けるべきでしょう。 標準ライブラリだと java.util.Map#keySet なんかがそれと似たものかもね。 ちょっと違って、Map の内部フィールドをそのまま返すわけでもないし、 add できなくて remove だけに制限されてるけど。 Map map = new HashMap(); map.put("A", "1"); System.out.println(map.get("A")); // → 1 Set set = map.keySet(); set.remove("A"); System.out.println(map.get("A")); // → null
271 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:32:30 ] 269です。回答ありがとうです >でもまぁ、その程度なら memberList をそのまま公開するよりか Team#addMember を設けるべきでしょう。 やっぱそうだよね… メンバになってるクラスをそのままreturnするのは 最初からpublicで宣言してるのとあんま違わないというか カプセル化が壊れてるような気分になって… Map系のkeySet()ってノーチェックでした ハッシュキーの一覧が取れて元のハッシュにも(削除系だけ)連動するのか 勉強になりましたー
272 名前:デフォルトの名無しさん [2007/08/16(木) 01:12:41 ] Tomcatがよく動かなくなるのですがどんな理由が考えられるでしょうか? ディレクトリのファイルの内容を動いていた状態に戻しても、まだ動いてくれず弱っています。
273 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 01:33:01 ] 症状を必要かつ十分にもっと詳細に
274 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 02:39:21 ] >>272 多分夏バテ 涼しい所で栄養をたっぷりとって休養しよう
275 名前:デフォルトの名無しさん [2007/08/16(木) 17:31:51 ] >>273 ,274 レスありがとうございます。 特にconfディレクトリにルートディレクトリ名のxmlファイルを入れたり、そこのserver.xmlに記述を追加するとダメなようです。 で、自作の上配置したファイルを別の場所に保管してTomcatをアンインストール、再インストールを行いました。 実は再インストール、今回が最初じゃないんです。そんな事もあって伺ってみたかったんですが。まあ、面倒です。
276 名前:デフォルトの名無しさん [2007/08/17(金) 13:46:26 ] どなたでもいいので答えてもらえないでしょうか。 おそらくとても初歩的な問いなのですけど、どう答えていいか分からなくて Q1 以下の条件を満たす変数 count を適切な型で定義してください。 - 整数値のみ - 範囲は 0 〜 32000
277 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 13:55:20 ] 候補としては int, short, unsigned int, unsigned short 「適切な」の解釈によるがintでいいんとちゃうの。
278 名前:デフォルトの名無しさん [2007/08/17(金) 14:00:59 ] >>227 ですよね。私もそんな感じだと思ってはいたんですけど、 「適切な型で定義」って書いてあるのでどう答えていいか 分からず書き込んだのですが。 では答えとしては>>227 さんの答えていただいた感じでいんですかね?
279 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 14:04:43 ] int -2147483648 〜 2147483647 short -32768 〜 32767 unsigned int 0 〜 4294967295 unsigned short 0 〜 65535
280 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 14:06:04 ] ってっこjavaスレだよな、、、
281 名前:デフォルトの名無しさん [2007/08/17(金) 14:10:46 ] >>279 問題の - 整数値のみ - 範囲は 0 〜 32000 とはどういうことなんでしょうか? 範囲は0〜32000てことはint型の-2147483648〜2147483647 は該当するのでしょうか? 本当に低レベルな質問ですみません。勉強を始めて間もない者ですので。
282 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 14:23:42 ] javaスレなのにunsigned はつられただけだけだけど、 まあその範囲が収まればいいんじゃない? short も iont も範囲内だけど 適切な、というのが範囲内で最も近い、ということなら short になるんじゃない?もちろん int も正解だろうけど
283 名前:デフォルトの名無しさん [2007/08/17(金) 14:30:26 ] >>282 レスありがとうございます。 教材だけだと説明など書いてあっても、聞くことができないので こういう場や答えてくれる方に感謝します。 ありがとうございました。
284 名前:デフォルトの名無しさん [2007/08/18(土) 19:11:44 ] Web上から画像を読みこんで表示するGUIプログラムを作ろうと思っています。 java.net.*のHttpURLConnection()でなんとなくデータをダウンロードすることはできました。 ぐぐってたところ、画像を表示するためにjava.awt.Imageを使えばよさそうだと思ったのですが使いかたがわかりません。 サンプルコードか、参考になるページを教えていただけませんか
285 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 22:29:55 ] java.awt.Toolkit と java.awt.Graphics
286 名前:デフォルトの名無しさん [2007/08/19(日) 00:01:21 ] ありがと。精進します
287 名前:デフォルトの名無しさん [2007/08/23(木) 01:47:52 ] 例えばクラスAとクラスBがあるとします。クラスAである値を取得してそれを クラスBで取得したい場合どうすればよいでしょうか?その値はstatic変数に 格納しないでpublicなアクセッサ(getter/setter)を使用したいです。現在JDeveloper を使用して試行錯誤してますが、getterメソッドがstaticではありませんと 怒られています。
288 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 08:26:45 ] staticなコンテクストからgetterメソッドを呼んでるからじゃん javaをもう一度最初から勉強し直した方がいいよ
289 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 08:30:36 ] A a = new A(); a,setFoo("hoge"); B b = new B(); b.setBaa( a.getFoo() ); こういうことがやりたいのか?
290 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 10:44:26 ] それともBをAの集約クラスにして Bが持っているAのインスタンスが取得した値を Bのメソッドの中で使用したいってこと? class B { A a; someMethod() { ... a.getter() ... } みたいに この場合A#getterがインスタンスメソッドなのに someMethodがクラスメソッドならgetterがstaticじゃないって怒られる
291 名前:初心者 [2007/08/25(土) 10:01:12 ] <PC環境> ★Windows Vista Home Premium, Eclipse3.2, Tomcat5.0.28 //インストーラを使わずzipから展開, C:\Program Files\Java\jdk1.5.0_07, C:\Program Files\Java\jre1.5.0_07 <環境変数>JAVA_HOME: C:\Program Files\Java\jdk1.5.0_07 Path: %JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem 1. コンソール(cmd)からjavaもjavac も動く。 2. localhost:8080/ でTomcatのトップページが表示される。そこからたどったJSPのサンプルは正常に作動。 <問題> だけど、Eclipseで自作したプロジェクト名sampleのsample/hello.jspは localhost:8080/sample/hello.jsp からは動かずに500エラーが出る。 hello.jspの中身は<%new java.util.Date()%>の一文だけ。 /* 500エラーの詳細 HTTPステータス 500 - 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません 原因 Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK */ なんとかhello.jspを表示させることはできませんか? Vistaじゃできないのかな。勉強できない。超参った。
292 名前:初心者 mailto:sage [2007/08/25(土) 12:41:54 ] 環境変数CATALINA_HOMEにTomcatのルートディレクトリを指定したら動きました。 Vistaのせいではなかった…。修行が足りんね。
293 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 16:46:04 ] 文字列で指定したコマンドを実行するには、どうしたらいいでしょうか。 例えば、System.out.println()コマンドを実行したければ、 Runtime rt = Runtime.getRuntime(); Process ps = rt.exec( "System.out.println(\"hoge\")" ); のようにすればいいのでしょうか?
294 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 19:11:06 ] System.out.println()はコマンドじゃない。 やりたいことによっては楽にできるが、 本当に System.out.println() を実行したいなら初心者レベルでは 無理。
295 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:31:24 ] JRuby あたりからガツンとやったほうが楽なような気がしますー
296 名前:初心者 mailto:sage [2007/09/02(日) 12:46:00 ] JSPやサーブレットをGUIで組めるようなエディタないですかね(ガイシュツ?) エクリプスのvisualeditorだとSWINGとかしかできない希ガス・・
297 名前:デフォルトの名無しさん [2007/09/10(月) 01:50:41 ] java6は出ましたか?
298 名前:デフォルトの名無しさん [2007/09/20(木) 15:40:48 ] swingでpaintとpaintComponentがありますが、どこが違うのですか? どちらもrepaintを呼び出すと実行されるので、違いは内容に思うのですが。
299 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 17:11:22 ] paintは、まずpaintBorderを呼んで、次にpaintComponentを呼んで、最後にpaintChildrenを呼ぶ。 paintをオーバーライドすると、ボーダーと子コンポーネントが描かれなくなる。
300 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 17:57:18 ] MyClass a,b,c; a = new MyClass(); //インスタンス1 b = new MyClass(); //インスタンス2 c = a; a = b; としたときに、cはどのインスタンスになりますか。
301 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 18:04:27 ] 宿題? インスタンス1
302 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 18:20:36 ] >>301 宿題じゃないのですが助かりました。有難うございます。 Cのポインタへのポインタみたいな参照方法を調べていました。 privateなメンバクラスをコンストラクタ引数で渡して 他のクラスから参照するような事をしていたのですが、 スコープを広げて参照しないとダメですね。
303 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 23:53:45 ] >>302 privateメンバの参照先を外部から 変えられちゃったらそもそもprivateの意味ないしねぇ。 それだったらsetterなり使って 適切な順序踏んで値設定するべきだと思うけど
304 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 00:34:48 ] >Cのポインタへのポインタみたいな参照方法 a = new MyClass(new MyClassItem()); b = new MyClass(new MyClassItem()); c = new MyClass(a.getItem()); a.setItem(b.getItem()); setter/getterでコピー渡しをしない場合これでc.getItem() == b.getItem()になるはず まあ普通はこんなコードは書かないけどw
305 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 00:43:48 ] 間違えた。 三行目c = a;か。
306 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 05:09:04 ] FrameとPanelってどう使い分ければいいのでしょうか? 同じだとしか思えません。
307 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 07:51:05 ] Frameの中にFrameは作ることはできないし、 Frameの外にPanelを作ることはできない。