【Java初心者】今から始めるJava Part01
1 :
デフォルトの名無しさん :
03/09/01 22:14
2 :
デフォルトの名無しさん :03/09/01 22:15
3 :
デフォルトの名無しさん :03/09/01 22:26
Javaは1.5になってどのように変化しましたか? Java1.5は機能変更ですか、機能拡張ですか? どのような機能が拡張されていますか? JBuilderではJava1.5を使用できないのでしょうか?
>>1 ☆ チン
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< 削除以来まだ〜?
\_/⊂ ⊂_)_\____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| 全日本クソスレ同盟|
5 :
デフォルトの名無しさん :03/09/01 22:31
6 :
デフォルトの名無しさん :03/09/01 22:32
7 :
デフォルトの名無しさん :03/09/01 22:34
>>1 画像表示ソフトを作るとして
GUIには何を使う?
AWT、Swing、SWT、他?
9 :
デフォルトの名無しさん :03/09/01 22:35
Java厨としてはSwingだが重いもんなぁ。 AWTは問題外でしょ。
まぁ削除しないでもいいと思うが、どれかJava,C#,C,Delphiのどれか 一つにすればよかろうに・・・
SWT バグバグ
12 :
デフォルトの名無しさん :03/09/01 22:38
Javaだと遅すぎてかわいそうなお題。
>>7 class A {
private native void programMain();
public static void main(String args[]){
new A().programMain()
}
}
>>15 nativeメソッドのソースコードは何だ?
なんで「今から始まる」シリーズが乱立しているんだよ。 いったいだれが何のために?
スレの伸びで将来を決めたいVB厨だろ
19 :
デフォルトの名無しさん :03/09/02 07:22
画像表示とかよー、初心者に媚びてどうするよ 最初はコンソール表示をベースにしろよ
22 :
デフォルトの名無しさん :03/09/03 14:28
で、第1回の答えは? 質問なのでage
JAVAの入門書を、やり終えたのですが、次に読む本は、 コアの基本編と、コアの応用編と、JAVA言語仕様の内、どれがお勧めですか?
24 :
デフォルトの名無しさん :03/09/20 13:51
25 :
デフォルトの名無しさん :03/09/20 14:08
内部クラスになっているプログラムのクラス図を書かなくてはいけないんですが、各クラスの関係は一番外側のクラスに対して集約とかコンポジションにしとけば、とりあえず間違いないですよね? 誰か教えて下さい。お願いします。
>>25 タダシイ方法なんてきまってないと思うなあ。
クラス図なんか、使う人間にとって理解できればいいんでないの?
納品物なら話は別だけど。
> 25 マルチはやめなさい
28 :
デフォルトの名無しさん :03/09/20 19:17
29 :
デフォルトの名無しさん :03/09/20 19:27
どの点についてさ?
30 :
デフォルトの名無しさん :03/09/20 19:33
すべて
>>29 たとえばこれ、
private static synchronized horkingLongMethodName(int anArg,
Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
こんな感じですっきり書きたいのですYO。
private static synchronized horkingLongMethodName(
int anArg,
Object anotherArg,String yetAnotherArg,
Object andStillAnother
) {
...
}
すでにこうやって書いるものの、一般的に問題ありなのでしょうか?
わざわざずらして書くと読みにくくて読みににくくて。
>>31 おいおい…。
喪前はK&R時代のC言語使いか?
33 :
デフォルトの名無しさん :03/09/23 19:28
ヤッターマンコーヒーライター
34 :
デフォルトの名無しさん :03/09/26 18:35
プログラムは始めての超ド初心者です。 インストールは終わったんですが、それからどうすればいいのか分かりません。 このヴァカにでも解るように教えてください。 お願いします。
35 :
デフォルトの名無しさん :03/09/26 20:15
36 :
デフォルトの名無しさん :03/09/26 21:32
今、がんばってHelloWorldのコンパイルがうまくいったんですが、 Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld と、出てうまく実行できません。 どうすればよいのでしょうか?
>>1 ☆ チン
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< 削除以来まだ〜?
\_/⊂ ⊂_)_\____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| 全日本クソスレ同盟|
38 :
デフォルトの名無しさん :03/09/26 21:47
>>36 もうこの質問うんざりするほど見飽きた。
と、思わず書いてしまうぐらい過去に出尽くしているから
2chのJava関連スレッドあさるとか、
"Exception in thread "main" java.lang.NoClassDefFoundError"
でGoogle検索してみるとかしてみれ。
誰もがぶち当たり、誰もが解決している問題。
掲示板でわざわざ聞かなくとも調べればすぐにわかる。
がんがれ。
よくある質問はテンプレ化しちゃう方がいいのかな?
>>36 で、そのソースが書いてあるファイルの名前は?
>>34 とりあえず
「java helloworld」で検索汁。
41 :
デフォルトの名無しさん :03/09/26 22:14
>>38 ご親切にありがとうございます。
コノ問題をさっさと解決して早くプログラムして見たいのでがんばります。
>>39 意味がよく分かりません・・・・・・。
>>41 プログラムが書いてあるファイルのファイル名は?ってこと。
クラス名が HelloWorld ならば、ファイル名は HelloWorld.java でないといけない。
43 :
デフォルトの名無しさん :03/09/27 00:09
>>42 そうですか。
たしかにHelloWorld.javaになってました。
44 :
デフォルトの名無しさん :03/09/27 00:19
お前等そんなの覚えて何したいの?
>>42 > プログラムが書いてあるファイルのファイル名は?ってこと。
> クラス名が HelloWorld ならば、ファイル名は HelloWorld.java でないといけない。
package privateだったらファイル名と同じにする必要はないん
46 :
デフォルトの名無しさん :03/09/27 02:15
いやいや、だからPATHが通ってない訳で
47 :
デフォルトの名無しさん :03/09/27 13:53
set classpath と打ち込むとどうなる。 set classpath=.;%classpath% と打ち込んでもう一度 java HelloWorld とやるとどうなる?
ウィソの場合""で囲んだほうが安全だと思われる。 中には、ディレクトリ名スペースを入れるお馬鹿もいるので。 set CLASSPATH=".;%classpath%" 普通はantをつかうもんだが。
49 :
デフォルトの名無しさん :03/09/27 14:32
HelloWorld.class というファイルは存在しているのか。
ウィソ厨よ コマンドラインで echo %PATH% echo %CLASSPATH% とやってみろ。
できた、とりあえず。 import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.WindowConstants; public class ImageViewer { public static void main(String[] args) { try { JFrame jFrame = new JFrame("Image Viewer"); jFrame.getContentPane().add(new JLabel(new ImageIcon(new URL(args[0])))); jFrame.pack(); jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); jFrame.setVisible(true); } catch (Exception exception) { exception.printStackTrace(); System.out.println(); System.out.println("Usage: java ImageViewer [image url]"); } } }
52 :
デフォルトの名無しさん :03/09/27 15:00
ココの住人さんはやさしい人たちばかりですね・・・。 ありがとうございます。 なんとか自己解決できました。 ご迷惑をおかけしました。 本当に感謝してます。 ありがとうございました。
あと、Java製のプログラムは多くのユーザーにとっては迷惑品だからネット上で無闇に垂れ流さないように気をつけてね。
54 :
デフォルトの名無しさん :03/09/27 16:23
初心者ですが疑問があります コンストラクタの意味がわかりません 特殊なメソッドというのはわかるのですが どういうメソッドでどういった場面で使う物なのでしょうか? 参考書は書き方しかのってません
>>53 拡張子がJSPになっているのが迷惑だと?
馬鹿を言え
>>54 自動で実行される初期化関数だよ。
初期化処理を作らないとか、違う名前の関数にしてもいいんだけど、
結局そのオブジェクトを作るたびに使う側が初期化したり、その関数を呼び出す
はめになるから、その手間が省くための機能。
小さな親切。
VS .NET 2003 の J# ではブラウザなどで実行が出来るものは作れないのでしょうか? どうもコンパイルすると .exe が出来てしまうので・・・。 JDKインスコしてコマンドラインからコンパイルしなきゃならんのですか? へたれですまんが誰か教えてくれ!
J#はJavaではありません。
とりあえず左側に表示予定のツリーはできた
ぬるぽ
61 :
デフォルトの名無しさん :03/09/29 18:42
Date型について教えてください。 Date date = new Date(); とするとdateに現在の値が入っていますが これを上書きして変更したいのですがどのようにすればいいでしょう? 参照先を変えるのだはなくdateの中身を変えたいです。
わかりにくいですね。実際にはDBから取ってきた値で上書きしたいです。 Date date = new Date(); date = rs.getDate(1); よろしくお願いします。
63 :
デフォルトの名無しさん :03/09/29 18:46
>>61 >>62 その書き方だと、思いっきり参照先を変えてますが、
そのことは理解されていらっしゃいますか?
「上書き」と言う言葉の意味が、曖昧でわかりません。
「Date型」とおっしゃられていますが、java.util.Date のことでしょうか。
それとも、あなたが作った、あなたしか仕様をしらないDate型のことでしょうか。
>>64 上記のコードでは参照先が変わってしまうので困っています。
Date型はjava.util.Dateです。
よろしくお願いします。
>>65 date.setTime(rs.getDate(1).getTime());
>>62 java.utii.Date()は推奨されていないコンストラクタじゃなかった?
JavaDoc見たほうがいいと思う。
staticメソッドでDateオブジェクトを生成するのがあったと思う。
Calendarクラスや、System.currentTimeMills()もいいのでは?
DBやってるならjava.sql.Dateのほうがいいのでは?
>>68 仕様書がDateってなってるのでDate使ってますが古い仕様なんですか。
うーむ。java.sql.Dateとjava.util.Dateって何が違うんだろ
>>68 >java.utii.Date()は推奨されていないコンストラクタじゃなかった?
いいえ。
>JavaDoc見たほうがいいと思う。
自分は見ないのですか?
>staticメソッドでDateオブジェクトを生成するのがあったと思う。
Calendarクラスと混同していませんか?
>DBやってるならjava.sql.Dateのほうがいいのでは?
まあ何をするかにもよりますが、一般的にはそうでしょうね。ResultSet#getDateの
戻り値の型もjava.sql.Dateだから。
>>69 >仕様書がDateってなってるのでDate使ってますが古い仕様なんですか。
別に古くはないです。ただしjava.util.Dateのメソッドのうち、かなりの数が非推奨と
されてCalendarクラスに機能が移っているので、注意が必要です。
>うーむ。java.sql.Dateとjava.util.Dateって何が違うんだろ
java.sql.Dateはjava.util.Dateのサブクラスです。細かい事はリファレンス見た方が
いいでしょう。
>71 がんがれ
73 :
デフォルトの名無しさん :03/10/04 21:24
プログラムというものを勉強しはじめて間もありません。 初歩的な質問で申し訳ありませんが、以下についてどうかご教授ください。 「オーバーロード」とは 「スーパークラス内のメソッドを、サブクラスで再定義する」ことをいう。 との認識ですが、ここまでは正しいでしょうか? これが正しい時、上記の利点って何なんでしょうか? サブクラス内で再定義してしまうと、スーパークラス内で定義したメソッドは、無意味ではないのですか? (例えば、パッケージクラスを継承したが、スーパークラス内の当該メソッドを使用しない場合。など) 再定義などしないで、自分が自由に命名した新規メソッドを作成すればよいように思えて仕方ないのですが。。。 うまく文章にできているか ものすごく不安ですが。。。
74 :
デフォルトの名無しさん :03/10/04 21:36
>>74 なぜあなたはそんなどうでも良いところだけ指摘するんですか?
偉そうにするなら質問に答えて欲しいものですね。
>>73 スーパークラスがあるのにサブクラスを作るのは、スーパークラスに
何か追加したいとか、ちょっと変えたいとか、そういう目的のはず。
追加したい場合は新しくメソッドを作ればいいし、ちょっと変えたい場合は
オーバーロードして違う動きをさせればいい。
77 :
デフォルトの名無しさん :03/10/04 21:50
>>75 どうでもいいことだと?
オーバーライドとオーバーロードは全く違うのだが何か?
で、おまいはオーバーロードについて聞きたいのか?
オーバーライドについて聞きたいのか?
どっちだ?
78 :
デフォルトの名無しさん :03/10/04 21:51
>>76 > オーバーロードして違う動きをさせればいい。
が意味不明。Javaのオーバーロードで違う動きなど不可能。
79 :
デフォルトの名無しさん :03/10/04 21:51
オーバーロードはするものじゃなくてされるもの。
80 :
デフォルトの名無しさん :03/10/04 21:52
オーバーライドはするもの
オーバーライドはメソッドの上書きで オーバーロードは引数の型や数の違いで 同じ名前のメソッドを複数作るってことではないの?
>>75 に同感(笑)
そりゃ オーバーライド
ポリモーフィズムが効くもの!
オーバーロードはメソッド名が同じで引数の個数、型がちがうものを実装すること!
オーバーライドですね。。。 すみません。
みなさん、オーバーライドに読み替えてご回答いただけますか?
「オーバーライド」とは 「スーパークラス内のメソッドを、サブクラスで再定義する」ことをいう。 との認識ですが、ここまでは正しいでしょうか? これが正しい時、上記の利点って何なんでしょうか? サブクラス内で再定義してしまうと、スーパークラス内で定義したメソッドは、無意味ではないのですか? (例えば、パッケージクラスを継承したが、スーパークラス内の当該メソッドを使用しない場合。など) 再定義などしないで、自分が自由に命名した新規メソッドを作成すればよいように思えて仕方ないのですが。。。
>>73 オーバーライドはポリモーフィズムのためにある。
あるクラスAがあると仮定する。クラスAにはメソッドdoTest()が存在するとする。
public class A {
public String doTest() {
return "Hello!";
}
}
クラスAを継承してクラスAAを作成したとするクラスAAはメソッドdoTest()をオーバーライドして実装。
public class AA extends A {
public String doTest() {
return "こんにちは!";
}
}
★あるクラスを継承したクラスはスーパークラスとして振る舞うことができる。これをis-aの関係という。
つまり、クラスAAはクラスAとして振る舞うことができる。コードではこんな記述が可能。
A a = new AA();
aはA型の変数として宣言しているが、実体はAA型。
上記のA型の変数aのメソッドdoTest()を呼ぶとどうなるか?
a.doTest();
"こんにちは!"
が返ってくる。
ありがとうございます。 > あと、質問するのなら、いろいろなスレに同じ質問を投げるのはやめれ。 すみません。これがマナーなんですね。(2ch初見なもので。) ロジックの解釈は可能なのですが、ズバリなぜ必要なのかがわかりません。 言語規定は参照します。 いろいろありがとうございます。
>>73 > あと、質問するのなら、いろいろなスレに同じ質問を投げるのはやめれ。
すみません。これがマナーなんですね。(2ch初見なもので。)
2chというより、インターネット上の掲示板のマナー。
2chじゃなくても嫌がられるから気を付けて。
はい! ありがとうございます。 ぜんぜん気にしてませんでした。。。
ライバル社に対して、自社製品を抱き合わせ販売することを法律で 義務付けるという、画期的な営業手法を編み出したSunまんせー。 こりゃビジネス特許モノ!
92 :
デフォルトの名無しさん :03/10/05 00:10
ウィンドウへドロップされたファイルを開く処理をしたいのですが、 どうしたらいいのでしょうか? Win32APIなら、DragAcceptFiles()して、WM_DROPFILESを処理 するのですが、これに相当する処理をjavaでしたいのです…
93 :
デフォルトの名無しさん :03/10/05 00:13
>>92 java.awt.dndパッケージを使いましょう。
>>93 どうもありがとうございます。
とても簡単にできそうです。
オーバーライドを使いこなしたかったら 結城浩の「Javaで学ぶデザインパターン入門」を読むことをお勧めする。 初心者には超お勧め。 あれくらいしっていれば使えるプログラマとして認めてもらえるための 第一歩くらいは踏める。
96 :
デフォルトの名無しさん :03/10/05 01:34
突然ですまないがEclipseでエディタのカーソル色を変えるにはどうしたらよいですか?
ごめんなんでもないから無視して
デザパタなんて意味あるのか?
他人にプログラムの組み方を教えるのが楽になる。 例:○○するプログラムを××パターンで実装しておいて そこは△△パターンで実装するほうが楽だよ
サーバに接続して 送信はjava.net.Socketで送って 受信はjava.net.ServerSocket受信してから送る っていうふうにしたいのですがどうすればいいですか?
101 :
デフォルトの名無しさん :03/10/05 14:50
javaで書いたアプリケーションを、 Windowsアプリケーション(.exe)にコンバート することってできるんでしょうか?
>>98 そういう発言をするお前が業界で
使えない存在になってしまうこととしては意味がある。
>>100 普通は、サーバに接続するってことは、あなた(のプログラム)はクライアント
ってことになります。ってことは、ServerSocket は使う必要がなくて、単に
Socket オブジェクトのインスタンスを作ればいいです。
んで、そのインスタンスに、次の2つのメソッド
getInputStream()
getOutputStream()
を使って、サーバに情報を送信するための InputStream と、
サーバから情報を受け取るための OutputStream を取り出します。
Socket について一からお勉強するには、ここなんかどうでしょう。
http://java.sun.com/docs/books/tutorial/networking/TOC.html (日本語訳があったら、誰か教えてください。)
100 Get オメデト。
>>103 …つまり、現状ではできない、ということですね?
javaで書いた、ちょっとしたツールなんかを、
Windowsを使用していて、JREが入ってない人に渡すときに、
exeにコンバートして渡せたら楽だなぁと思ったのですが。
>>105 > javaで書いた、ちょっとしたツールなんかを、
> Windowsを使用していて、JREが入ってない人に渡すときに、
> exeにコンバートして渡せたら楽だなぁと思ったのですが。
exe が JRE と同等のサイズになるか、
exe は小さくできても JRE と同等のサイズの DLL が必要になる罠。
Javaで書いたちょっとしたツールなら Cとかでもかけるんじゃないか?
>>106 確かにそうなりそうですね。
でも、dllで済むのなら、exeファイルとdllをいっしょに渡して、
同じフォルダにおいてもらうだけでいいので説明は楽なんですよね。
>>107 ごもっともで。
ただ、Javaの勉強中というのもあって、意味も無くJavaを使って
書きたいという気持ちがありまして。
あ、Javaで既に作ったものをCでもう一回作れ!てことですか?
よっぽどちょっとしたものでなければ、それだったらJRE入れてもらいます…
で、結局、そういったツールはC++で作ろうかと思いました…
c:\myjava>javac myjava.java エラー: myjava.javaを読み込めません。 エラー1個 となるのですがどうしたらいいですか?
>>109 myjava.javaというソースはちゃんとmyjavaディレクトリに保存してある?
ディレクトリ名とファイル名が一緒になって混乱しているんじゃ?
>>110 ren myjava.java.txt myjava.java
しろって他のスレで言われたんですけどどういう意味なんですか?
>>111 だったら、そっちで聞けよ
>>107 そのちょっとしたツールが、
信頼性を持ちつつネットで手軽に
配布できるものならJavaのほうが良い。
それから、そのちょっとしたツールの拡張性を
容易にしたいならCはやめたほうがいい。
せめてC++くらいでないと。
>>108 JavaになれてくるとCでかくのが面倒くさくなってくる。
Cは配列の扱いが曲者でね。
値型と参照型の区別も大変でね。
Javaやっているときなら創作的なことに時間を
費やすことができるけれどもCだとメモリ管理だのに
神経をすり減らすことにより多くの時間を費やしてしまう。
Integerオブジェクト同士の足し算って一回intに変換して行わないとだめでしょうか?
>>114 多分そうだと思う。
ラッパーオブジェクト同士をそのまま足し算できない。(言語仕様的に)
ラッパーオブジェクトを受け取って足し算や引き算してくれるメソッドを
持つクラスを見たことが無い。
(これが「多分」 の意味。どっかにあるかも。)
117 :
デフォルトの名無しさん :03/10/06 16:31
Cで書かれたコードをJAVAに移植したいと考えています。 ところが、Cのソースにポインタが多用されており、途方に暮れています。 JAVAにおいて、Cのポインタに該当するような機能はあるのでしょうか?
118 :
デフォルトの名無しさん :03/10/06 16:49
ポインタはないけど 移植は可能だよ Java流に組むしかない、Java勉強すればわかる 短いコードならすぐに回答出来るが、うPしてくれれば
119 :
デフォルトの名無しさん :03/10/06 19:08
>>117 Java では、プリミティブ型 (int, char, double, etc) 以外は必ずポインタで参照される。
つまり、クラスを型にするような変数は全部ポインタ。
"ポインタ型" そのものは無いので、ポインタのポインタなんつー吐きたくなるような書き方はできない。
配列への参照にするか、参照を擁したクラスのインスタンスに対する参照にするしかない。
C のソースが
・ポインタをほとんど使っていない
・とてもきれいな設計になっている(C++ でないのにオブジェクト指向的である)
・Java API を意識した C++ ソース
なら、移植しやすいだろう。
>>105 非営利利用ならエクセルソフトのJETコンパイラがただで使えるぞ
>>104 あり、いってきます
>>119 unsigned型使われたらさらにややこしくなります
123 :
デフォルトの名無しさん :03/10/12 01:57
JavaとJava2後が言ってなんですか? 参考書などを見てもほとんど同じように見えるのですが・・・
>JavaとJava2後が言ってなんですか? ? バージョン 1.2 までが Java で、バージョン 1.3 以降が Java2。 マーケティング戦略だったのかなんだか知らないけど、 バージョン1.3 は名前が Java2 になるくらいグレードアップしたとアピールしてたわけ。
>>124 バージョン1.2からがJava2でつよ
あ、そだっけ。ごめん。
いつになったらJava2.0が出るのYO!?
128 :
デフォルトの名無しさん :03/10/12 15:45
細かなところは違いはあるが Java1を勉強しても、Java2とそんなにかわりませんか?
>>121 JET パーソナル版で作成した実行ファイルは JRE が必要ですよ。
バグが多いけど MinGW GCJ で exe が作れる。
>>128 細かくたくさんの個所が違っている。
Java1では普通に使うべきメソッドのいくつかが、
Java2ではdeprecatedになってる。
機能追加/バグ修正もいろいろ。
まぁいきなり Java2 のあの膨大なクラスを操れって言っても道に迷う だけかも。とりあえず JDK 1.1 の範囲で Java を使いこなせるように なってからでも良いような気がする。基本的なところはそんなに変わん ないし。
だれが、JDK1.1なんていまさらやるんだ?時間の無駄だろ。。。
>>132 プログラマから見た JDK 1.1 と 1.2 以上の違いはクラスライブラリの
豊富さだけ。初心者が言語機能を習得するのに Java2 を使う必要性は
無い。
最初から Swing とか Servlet とか使いたければ別だが。
134 :
デフォルトの名無しさん :03/10/12 19:23
>>133 同様にいまさら1.1を使う意味もまったくない。単なる自殺行為。
1.5でgenericsとかいろいろ加わるから Java3になる?
別にクラスがいっぱいあっても使わなきゃいいだけだろ。
元スレ(
>>1 )は基地害です。無視進行でお願いします。
>>127 ラベル番号が変わっただけで中身が何も変わっていないのは某M$社の製品のようで
アホらしくないか?
>>130-131 バグ問題、Hotspotの有無による処理速度の改善などを考慮すると
最新版にほうが良いと思われ。
JDK1.1なんぞ言い出したらM$のVisualJ++を使い出すアフォがでるやもしれん。
JDK1.4ではassertという使い物にならない
余計なキーワードが気になるが初心者も気にかけないと思われ。
継承したクラスのメソッドを呼び出すと親クラスのメソッドが呼び出されてしまいます。 class A { hoge(){ print "A"; } } class B extends A{ hoge(){ print "B"; } } B b = new B(); b.hoge(); とやるとクラスAのhoge()メソッドが呼ばれてしまいます。 どういった原因があるでしょうか?
class Aはabstractでした。
>>141 Javaにはそんな記法は無い。
他言語の質問をしたければ他スレへ逝け。
すいません、一つ質問したいのですが 今現在Java+Tomcat(3.2.3)を使ったServletのアプリ を作っているのですが コンパイルするたびにTomcatを再起動させないとClassファイル認識 しないのですが、再起動をさせなくて済むようにはできないのでしょうか? またTomcat以外ならできるということでしたら なにがお勧めでしょうか
>>145 レスありがとうございます。
今現在reloadableはTrueにはなっているのですが
それでも再読み込みしてくれない現状なんですが
書き方がまずいのでしょうか?
下記が今動作させているSever.xmlの一部なのですが
<Context path="/"
docBase="webapps/admin"
crossContext="true"
debug="0"
reloadable="true" >
</Context>
<Context path="/html"
docBase="webapps/admin/html"
crossContext="true"
debug="0"
reloadable="true" >
</Context>
147 :
デフォルトの名無しさん :03/10/15 18:07
CDプレーヤーを作るのに参考となる本は売っているでしょうか?
148 :
デフォルトの名無しさん :03/10/15 20:24
JSPで正規表現検索をやっているんですが
Pattern ptn=Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
Matcher mtch=ptn.matcher(strMsg);
while(mtch.find()){out.println(mtch.group() + "<br />");
の部分がまったく理解できません。出来るだけくわしいかいせつをおねがいします。
以下コード
<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.regex.*" %>
<html>
<head>
<title>正規表現で文字列を検索する</title>
</head>
<%
String strMsg="メールアドレスは、
[email protected] です。";
strMsg+="
[email protected] もあります。";
Pattern ptn=Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
Matcher mtch=ptn.matcher(strMsg);
while(mtch.find()){out.println(mtch.group() + "<br />");
}
%>
</body>
</html>
149 :
デフォルトの名無しさん :03/10/15 20:25
150 :
デフォルトの名無しさん :03/10/15 20:29
>>149-150 のお二人ありがとうございます
どうやら調べましたがver3.2.3のはもうないようですね・・・
3.3だと既存のプログラムを改善しなければならないので
古いVerを探していましたがなさそうですね・・・
パッチ自体どこかでもう少し探してみます
ありがとうございます
>>147 Java でそれやろうってのが無茶なように思う。
JMF に使える API あるかも知らんが、人にインストールさせて使うには向かない
JSP&Servletについてですが servletがOracleから取ってきたデータの文字列に入っている 全角ハイフン「−」が?で表示されてしまいます。 JSPファイルに「−」を直書きしても化けません。 どこで化けてしまうのでしょうか?
154 :
デフォルトの名無しさん :03/10/16 16:44
>>153 OracleのJDBCドライバが変換するときに化けている。
JVMは1.4.1以降でしょ?たぶん。
>>154 なるほどー
java -versionによると1.4.2ですが
何か回避策はありますでしょうか?
>>155 SunのJVM1.4までと1.4.1以降ではShift_JIS←→Unicode変換時の
「−」や「〜」等のマッピングが変更になった。
OracleのJDBCドライバが古い方式で変換している可能性がある。
具体的にどこをどうするという回避策は知らんが、
そのへんを念頭に置いて調べてみたら?
>>156 はーい。ありがとでした。調べてみまーす。
>>156 Shift_JIS が MS932 の別名から SJIS の別名に変更になったってやつね。
Windows-31J を使うのが推奨されてなかったっけか?
>>153 Shift_JISなんぞ使うのやめちまえ。
全部UTF-8で統一しろ。
>>152 >
>>147 > Java でそれやろうってのが無茶なように思う。
> JMF に使える API あるかも知らんが、人にインストールさせて使うには向かない
関係ないかもしれないが
JavaWebStartがあればインストールも苦労しないと思う。
>>160 っつか、CDプレーヤーだったら javax.sound.sampled パッケージ使えば出来ないか?
162 :
デフォルトの名無しさん :03/10/17 23:50
インターフェイスってどういうときに使うのでしょうか? 参考書などは書き方は載ってるのですが、使用例があまり載ってないのですが・・・
DQNな俺は、多態を使いたくなったときに使っている。 あとはオブジェクト参照を渡すときに渡し先で呼び出すメソッドを制限したいときとか、 メソッドは同じで実装をたくさん作るときとか。
>>162 Java言語で学ぶデザインパターン入門を嫁。
interfaceの使い方を初心者にわかりやすく説明している。
>>162 APIドキュメントで、swing の ListCellRenderer あたりの解説を読んでごらん。
わらわらとクラスを作りたくない (作らなくても済む) ときに使える。
誰か
>>1 に書いてある画像表示ソフト作ってないの?
import java.awt.*; public class Test { public static void main(String[] args) { new Frame() { private Image img = Toolkit.getDefaultToolkit().getImage("test.jpg"); public void paint(Graphics g) { g.drawImage(img, 0, 0, this); } }.setVisible(true); } } ほれ
完成してるじゃんw
そういうのじゃなくてもっとちゃんとしたの・・・
Java関連の本スレはこちらです。類似スレに注意。
172 :
デフォルトの名無しさん :03/10/24 22:08
[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+ \\wはa-z,A-Z,0-9のどれか、\\.は、.\\-は- []は、[]の中のどれかにマッチ @、[\\w\\.\\-],,,,\\w(a-z,A-z,0-9),\\.(.),\\-(-)のうちどれか一文字 [\\w\\.\\-]+,,,,上の文字を、一文字以上(+は一文字以上にマッチ)含む。 @は固定の文字(@にマッチ) ([\\w\\-]+\\.)+、、、@同様に内側の[]から考える 後は動揺に考える すんません 私も勉強したてで、間違ってるかもしれません わかりづらい説明でした
>>171 それじゃ初心者質問者を騙すことできないって
175 :
デフォルトの名無しさん :03/10/26 13:32
初心者なので是非教えてください。 Stringの中からある特定の文字がいくつあるか数えるメソッドって ありますか? 例えば「"hello,world"ではoが2つ」とわかるようなやつです。
ないので、 int count = 0; int len = str.length(); for (int i = 0; i < len; i++) { if (str.charAt(i) == 'o') { count++; } } とかで数えれ。
遅すぎて使い物になりません…
>>177 何を持って遅いというのか。
古いCPU?PocketPC用の非力なVM?長ったらしい String ?
そういう処理を行わなければならくなった君の設計が悪いのでは?
気になったので計測(漏れ環境)した。
・対象となる String の長さ: 100 万文字
・数える対象となる文字の数: 20 万個
>>176 方式: 0.015 秒
>>179 方式: 0.344 秒
漏れのやり方は圧倒的に遅かった。。。
数千文字程度までなら差は気にならないかもね。
>>177 charAt()を激しく呼んで遅い場合にはchar配列をコピーするしかないかな。
>>179 おお、賢いな。
>>181 split()はStringの長さより、初期化コストの方が問題になりそうなので、
・対象となる String の長さ: 1 万文字
・数える対象となる文字の数: 2 千個
を100回とかで試すともっと差が出そうだ。
>>183 差は縮まった。。。
>>176 方式: 0.015 秒
>>179 方式: 0.188 秒
ところで
> charAt()を激しく呼んで遅い場合にはchar配列をコピーするしかないかな。
String の中身は char 配列だから charAt() は遅くないと思うけど
そういう意味ではない?
( ・∀・)つ〃∩ ヘェーヘェーヘェー ついでに org.apache.commons.lang.StringUtils#countMatches(String str, String sub) の速度もその漏れ環境とやらで計ってくれ。
>>184 いちいち呼び出すより直接配列にアクセスした方が早いでしょう。
単純にメモリは倍喰うけど。
>>186 配列にコピーするのはこんな感じ?
int count = 0;
char[] chars = str.toCharArray();
int len = chars.length;
for (int i = 0; i < len; i++) {
if (chars[i] == 'o') {
count++;
}
}
ついでに世間では遅いといわれる方式 毎回サイズを取得する。 int count = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == 'o') { count++; } }
>>185 >>186 >>185 方式: 0.047 秒
>>189 方式: 0.015 秒
>>190 方式: 0.015 秒
StringUtils はソースを見たところ数える文字列が 1 文字でなくても
良いように汎用的に作られているから遅いみたい。
176、189、190 が同じなのは興味深い。
192 :
デフォルトの名無しさん :03/10/27 18:25
すいません、今Tomcat4.1.27を使って いるのですが、あれってクラスファイルをJDK1.4以降で作成しないと 動作しないのでしょうか? 1.3で作った奴だとうまく動かない気がするのですが・・・
>>191 >176、189、190 が同じなのは興味深い。
ひょっとしたら最適化されているのかも
194 :
デフォルトの名無しさん :03/10/27 18:53
java sound api を使用して音を鳴らすことができたのですが、 停止ボタンを押したときに音を止める処理がわかりません。 画面はswingを使用してmainメソッドに停止ボタンの記述があります。 再生の処理は別のメソッドに記述してあります。 再生の処理で曲が終わったときline.stop();により曲が停止するのですが、 停止ボタンを押したときに曲が停止というのはどこに記述すればよろしいですか? mainメソッドに(停止を押した時line.stop())と書くと 再生メソッドで処理中のline.stop()を認識しませんし、 再生メソッドに停止の処理を書くとmainメソッドでボタンをオブジェクト化して いるので認識しません。 どなたか助けてください。
>>194 >再生の処理で曲が終わったときline.stop();により曲が停止するのですが
意味がわかりません。
>mainメソッドに(停止を押した時line.stop())と書くと
意味がわかりません。
>再生メソッドで処理中のline.stop()を認識しませんし、
意味がわかりません。
>再生メソッドに停止の処理を書くとmainメソッドでボタンをオブジェクト化して
意味がわかりません。
あなたは、ボタンを押したら「押されたよ!」と、自分の思い通りの場所に表示させることができますか?
それができないとすれば、あなたは、
今のあなたでは手に負えないほど難しいことに手を出しています。
多くの人が、あなたに、どうしたらいいかを一言で説明できますが、
その説明を、あなたはあなた流のプログラムのどこに適用したらいいか分からなくて途方に暮れるでしょう。
悪いことは言いませんから、簡単なことができるようになってから、難しいことに挑戦して下さい。
自分のしたいことを実現するために、何と何と何を分からなければいけないか分析できるようになってください。
初心者スレなんだから、もうちょい、丁寧に書け。ばか
>>196 じゃぁおまえがじょーずに教えてやれYO
ある文字を検索するならそれでいいかもしれないが 文字列だったらどうなんだろうね。
public static int numberOf(String target, String src) { int count = 0; for(int i=0 ; i < src.length(); i++) { if(src.startsWith(target,i)) { count++; } } return count; } こんな感じでOK?
>>199 "ssssssssssssss" から "sss" をカウントするときのポリシーに依るね。
i += src.length() - 1; するべきかどうか。
>>184 ぐ。そうか。
>>191 WindowsのSystem.currentMillis()は10msくらいの精度しかないので、
Windowsでやってるなら0.1秒くらいになるまでループ回数を増やしたほうがいい。
にしても、HotSpotかましてるせいか予測つかんなぁ。
やっぱり、マイクロベンチマークは意味ないかも。
>>192 LEのついていないTomcatを使うなら、JDK1.3でも動くよ。
>>201 > LEのついていないTomcatを使うなら、JDK1.3でも動くよ。
そういう話じゃないだろ。動作プラットフォームのJVMのバージョンの話はしてないだろ。
192が聞きたいのはバージョン1.3のコンパイラでコンパイルしたアプリが
Tomcat4.1.27で動かないってことだろ?
で、192の言う、「動かない」とは? 実行時に例外がでるのか?でるのならどのAPIからどの型の例外が出るのか? それとも、例外は出ないが期待通りの動きをしないとか? どちらにせよ、「動かない」だけでは情報不足。
馬鹿じゃないの?いまどき、MLでGifファイルくらい添付したって、 どうってことないよ。。。 頭、おかしいんじゃない?
>>188 微妙にスレ違いかも思った質問に
ピンポイント解答・熱烈多謝!!!
>>201-203 レスありがとうございます
たしかに動かないってのが説明不足でした、すいません
やっていたときは例外処理が飛んでいて動かないっていう状態
でInstanceAlreadyExistsExceptionこんなエラーがでていました
それで1.3のAPIみていたのですが1.4にしかなかったので
1.4に変えなければ動かないのかと思い質問させてもらった次第です。
>>207 「説明不足でした」と言いながら、その説明か。
自分の書いた内容で他人に伝わると思う?
>>207 全部、煽りの連中がやったこと。俺は、反論していない。
また、マルチポストに関しては、ここで聞いても全然返事がこないから、他で聞いただけ。
他で返事がくれば、すぐどこも解決したと言う返事を書くつもりだったから、なんの問題も無い。
画像に関しては、bmpをgifに変えるとサイズも変わると思ってそうしてただけ。おまけに、
eclipseのMLの人がアナログ回線を使っているとは、考えられない。
かなりわかりにくかったと思いますが、再生ボタンを押すと曲の再生が始まります。 停止ボタンを押したら止まるというふうにするにはどうすればいいのでしょうか?
>>175 java.lang.regex
やJakarta ORO使うのはどうよ
>>205 >209
なんでお前はEclipseスレと同じコピペはってんだよ
213 :
デフォルトの名無しさん :03/10/28 00:27
すっかりアイドルだな。
214 :
デフォルトの名無しさん :03/10/28 00:44
>>207 Tomcatが既に立ち上がっているんじゃないのか?
>>211 具体的なコード示してくれ。
それ以前に
>>179 のString#splitは中でregex使ってるわけだが。
ところでjava.lang.regexって?w
Stringが何行になっているか調べる方法ってありますか?
改行コードって全部一緒だったっけ? StringTokenizer st = new StringTokenizer(str,"\n"); st.countTokens(); で分かるかな
「初めてじゃば」を読むとむずかしい。オブジェが出てきて、 自動車の設計を習う教室がクラス。そこで出来上がってきたのがトラックで運ぶ ものがイス・タンスだ。それを修理するのが家具師でメシだゾーと行って ソッセージを贈る。
221 :
デフォルトの名無しさん :03/10/30 16:20
サーブレットの質問してよかですか?
Javaをインストールしようとすると失敗するんだけどなんででしょうか? WinXPです。
>>222 WinMe でそういうことがおきた。レジストリが死んだらしい。
でも何度かヴァージョン上げたから、君のは原因違うかもしれない。
225 :
デフォルトの名無しさん :03/10/31 07:08
SWINGで、ボタンを押すと処理が始まり、止めるボタンを押すと処理が終わる。 というふうにしたいのですが、処理が始まるとボタンが押せなくなります。 教えて下さい。
>>225 二つは違うボタンだろ?
>処理が始まるとボタンが押せなくなります
これが原因。おかしな処理をしてると思われ。祖巣あげれ
VM 上には、並列処理(スレッド)がたくさん動いている。
main メソッドからは、まず一つ始まって、終端でそれは終わる。
しかし Frame などを表示しておくと、GUI 操作を待つためのスレッドが裏で一個立ち上がる。
ところが一個だけなので、
ボタンが押されるのを待つ→ユーザがボタンを押す→actionPerformed が呼ばれる→処理を行う〜
という一連の操作の上で、またボタンが押されるのを待つには、最後の処理が終わらないといけない。
そこで
>>227 のいうように、こうすればいい。
actionPerformed が呼ばれる→新たなスレッドで処理を行わせる→ボタン押しを待つ
↓スレッド発生
ex. ループする処理
↑
また押される→actionPerformed →インスタンス変数などで停止を通知→ボタン押しを待つ
具体的にどう改造するかはソース次第。
>main メソッドからは、まず一つ始まって、終端でそれは終わる。 ここ不正確かもしれないな。でもプログラマにはおんなじことか。
スレッドのクラスを作成してスレッド1の処理はGUIを表示する処理、スレッド2の処理はボタンが押された際の処理などを記述すればよいのでしょうか? スレッドは初挑戦なので間違っていたら教えて下さい。
>>230 君のやりたい中身によるんだが、例えば、
とにかくただただ計算だけするスレッドと、
1000ms 毎に経過を取り出して Component#repaint() するスレッドの二つが必要。
でも多分、作るのは一つだけでいいと思うぞ。
反復計算が多重ループになってたら、一重目に repaint させて、
それで激しすぎないなら、それはそれでいい。
232 :
デフォルトの名無しさん :03/10/31 18:09
JSPで質問です!! Tomcatの環境でサーブレットからJSPへJavabeanを使用し、Dataの受け渡しをしようとしています。 そこでちょっと疑問になった事があります。 DataBeanのほうには以下のような定義をしています。 public class SecondPageBean{ private static String ERRORMESSEGE; public Bean(){ ERRORMESSEGE = ""; } public void setErrormessege(String errormessege){ ERRORMESSEGE = errormessege; } public String getErrormessege(){ return ERRORMESSEGE; } } data獲得側のJSPの中のGeterのコード(関連するところも書きます)は以下の通りになってます。 <jsp:useBean id="Bean" class="Bean" scope="session" /> <jsp:getProperty name="Bean" property="errormessege"/> 以上のコードを使用するとうまく動くのですが、以下のようにJSPのGeterのところのコードを変えるとうまくいきません。 <jsp:getProperty name="Bean" property="ERRORMESSEGE"/> JSPのJAVAの部分は"大文字小文字を区別する"はずではないのですか? なぜ”Databeanの中では大文字で定義してあるのに、JSPから呼ぶときは小文字でなくてはよべない”のですか?
×Geter
○Getter
>>232 仕様です
ちゃんと本に書いてありますよ
>>233 more SERVLETS and JAVA SERVER PAGES と10日で覚えるJSP/サーブレットにはなかったような・・・
SUNのドキュメント見ればわかります?
235 :
デフォルトの名無しさん :03/10/31 19:22
メインメソッドからクラスのコンストラクタを呼び出してその中でGUI表示の処理を記述しているのですが、 ボタンを押したときのアクションリスナーでRUNをオーバーライトできません。 助けてください
>>235 助けてあげたいのはやまやまだけど
言っていることがよく分からないよ。
ある二つのよく似た機能のある画面を同じjspに実装したいとき、 画面表示(例えば「これは○○をする画面です〜」等)なんかの表示を うまいこと切り替えるにはどうするのが良いのでしょうか? 例えば、フォームにキーとなるオブジェクトを一つ入れておいてlogicタグで切り替えるのが いいのかなと思ったのですが、じゃあそのキーはなににするのがいいのか (他の人が見てわかりやすいか)等々教えてください。
すいません、Strutsの話です。
239 :
デフォルトの名無しさん :03/11/01 20:50
MP3の再生はJAVAでは難しいのでしょうか? 曲の指定した位置からの再生などできますか?
>>240 今自分の作っているプログラムに使用したいのですが
まずどうすればいいのでしょうか?
なんかもう単なる質問スレになってきたな
デコードするための情報はdocを参照したらわかりましたが mp3の再生に関しては、どのメソッドが処理しているのか 理解できませんでした。 どなたかわかるかたはいますか?
あれのことじゃないのか。勘違い。
246 :
デフォルトの名無しさん :03/11/02 18:36
教えてください BEANで action bean と form bean の違いがよく分かりません
247 :
デフォルトの名無しさん :03/11/02 19:32
質問です。 例えばCでは浮動少数型のデータaaaを整数部3桁小数部2桁を表示したいとき printf("%3.2f",aaa); のように表しますがjavaではどう書けばいいんですか?
248 :
デフォルトの名無しさん :03/11/02 19:50
初心者です 教えてください キャストってつまりどういう動作をしているのでしょうか? たとえば User user = ( User )session.getAttribute( "userData" ); だとどういった状態になるのでしょうか?
>>247 System.out.print(new DecimalFormat("##0.##").format(aaa));
>>248 キャストの () には空白入れるな。
> User user = (User)session.getAttribute( "userData" );
> だとどういった状態になるのでしょうか?
session.getAttribute( "userData" ) の値が User のサブクラスでなければ ClassCastException を投げる。
まず再生するためにはどうすればいいのかが具体的に 書いてないのでできないのかもしれませんね。
まったくの初心者ですが、質問させてください。 String str1="HELLO"; String str2="HELLO"; System.out.println(str1+" + "+str2); if(str1==str2) { System.out.println("等しい"); }else { System.out.println("等しくない"); } System.out.println(); String str3=new String("HELLO"); String str4=new String("HELLO"); System.out.println(str3+" + "+str4); if(str3==str4) { System.out.println("等しい"); }else { System.out.println("等しくない"); } で実行するとstr1とstr2は等しい。 str3とstr4は等しくないと出ます。 ()の有無で結果が変るものなのでしょうか?
自己完結しました。 newを利用してるから結果が違うんですよね。 失礼しました。
254 :
デフォルトの名無しさん :03/11/03 03:16
>253 分かっているような分かっていない様な…。
>>252 ,253
本にはStringは「==」で比較しちゃいかんと書いてあるよnn.
.equals とか使うんじゃない
>>255 何を比較したいかによるでしょ。
同じオブジェクトかどうかを比較したいのなら==で比較しないと。
257 :
デフォルトの名無しさん :03/11/03 22:34
String の == 比較は結果が予想しにくいからね。 下記、試さずに結果が分かる人はどれだけいるか。 もちろん、equals の結果はすべて同じ。 String a = "HELLO"; String a1 = "HELLO"; String a2 = "HEL" + "LO"; String a3 = "HEL"; a3 += "LO"; System.out.println(a == a1); //1 System.out.println(a == a2); //2 System.out.println(a == a3); //3
>>257 直感で
1: true
2: true
3: false
かなぁ。a2はコンパイラ様が連結するって決まってたような気がする。
でも、Stringの==比較は基本的に使わないなぁ。
たとえ、使えるところでも。
1 ture 2 false 3 false ・・・です・・かなぁ。 ちなみに、 String a="HELLO" String b=("HELLO") では結果は結果が同じになりますが、()の必要性ってあるんでしょうか? お恥ずかしい質問ばかりですみません。
>>258 > a2はコンパイラ様が連結するって決まってたような気がする。
決まってないです。
1. true
2. コンパイラ依存。
3. コンパイラ依存だったか false だったか…
>>259 > では結果は結果が同じになりますが、()の必要性ってあるんでしょうか?
特に無い。
演算子の結合順序を変える時は () が必要。
演算子の結合順序がわかり難い時は () が有った方が良い。
262 :
デフォルトの名無しさん :03/11/04 13:47
質問です。 javaアプレットの電卓を作っているのですが、 数値をdouble型の変数に格納し、それをラベルに表示するとして 入出力する数値の範囲を小数点やマイナスを含めて8桁で表示するにはどうしたらいいでしょうか? それとも演算のときに8桁にする方法とかありますか?
>>262 Double.toString(値).substring(0,8);
>>263 Label.setText(" "+ Double.toString(値).substring(0,8) +" ");
こんな感じでいいんですか?
265 :
デフォルトの名無しさん :03/11/04 19:31
String[][]のような2次元配列の各2方向の長さを調べるにはどうしたらいいのですか?
266 :
デフォルトの名無しさん :03/11/04 19:37
死ね
>>265 String[][] array = {{},{""},{"",""}};
とかだったら「各二方向の長さ」を、どのように定義しますか?
270 :
デフォルトの名無しさん :03/11/04 20:24
すみません。今からJavaの勉強をしようと思う者です。 窓の杜の「programa」というソフトを少し、触っております。 簡単なフローチャートを書き、実行ボタンを押せば MS-DOSプロンプトで実行してくれというソフトなのですが 私の場合、CINTという画面になります。MSDOSプロンプトによく似ているのですが・・・。 そして、実行してくれません。何か問題がるのでしょうか? OSはWin-Meです。 よろしくおねがいします。
271 :
デフォルトの名無しさん :03/11/04 20:33
import java.io.*; class Test { public static void main(String[] args) throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader(System.in), 1); System.out.print("お名前は? "); System.out.flush(); String s = r.readLine(); System.out.println("こんにちは," + s + "さん"); } } WinXPのver1.4.2だとちゃんと動作しますが、 Mac OSXのver1.4.1だと、Ctrl+Dをしなければ表示されません。 原因は何なんでしょうか?
272 :
デフォルトの名無しさん :03/11/04 22:21
ファイルを複数作ってそれぞれにクラスを作成するのは何故ですか? 私の場合、複数個ファイルを作るのめんどいから、一つのファイルにサブクラスを複数作っています。 サブクラスってふつうのクラスと違うことありますか?
>>260 >決まってないです。
Java言語仕様の3.10.5章を読むと
「定数式(15.28章)によって計算される文字列は、コンパイル時に計算され、そしてそれらがリテラルであるかのように扱われる」
とある。
>>272 サブクラスって、Object以外のクラスを継承したクラスのこと?
Java言語仕様の7.6章によれば、publicなクラスが一つのファイルに一つだけ必要、
という制約は、Javaのコンパイラや仮想マシンを実装する人が
楽をできるようにするためらしい。
なんか自分が言語厨に思えて欝だ。
まあ仕様も確かめずに推測であれこれ言う香具師よりかは遥かに有益。
>>271 うちもOSXでVM1.4.1だけど、それちゃんと動いたよ
>>272 1000個クラスを作りたいとき困るでしょう。
278 :
デフォルトの名無しさん :03/11/05 11:13
>>262 > 質問です。
> javaアプレットの電卓を作っているのですが、
> 数値をdouble型の変数に格納し、それをラベルに表示するとして
> 入出力する数値の範囲を小数点やマイナスを含めて8桁で表示するにはどうしたらいいでしょうか?
> それとも演算のときに8桁にする方法とかありますか?
java.text.DecimalFormat
280 :
デフォルトの名無しさん :03/11/05 14:33
抽象クラスっていったい何の為にあるんでしょうか? さっき標準APIの抽象クラスをいじってみたのですが、一からクラスを作るのと何等変わりがありませんでした。
>>280 Image クラスの API リファレンスを参照せよ。
それでわかんなかったらセンス無い。
>>280 > 抽象クラスっていったい何の為にあるんでしょうか?
あるメソッドは実装されているが、あるメソッドは実装されていない場合とか。
> さっき標準APIの抽象クラスをいじってみたのですが、一からクラスを作るのと何等変わりがありませんでした。
それは使い方が悪いっつーか…
283 :
デフォルトの名無しさん :03/11/05 16:31
J・A・V・A じゃば〜♪ J・A・V・A じゃば〜♪ ういんどうずもじゃば〜 公表してねえ!
284 :
デフォルトの名無しさん :03/11/05 22:05
public class SampleP2 { public static void main(String[] args) { int ans1 = 0-4; double ans2 = 3.14*2; double ans3 = (double)5/3; int ans4 = 30%4; double ans5 = (7+32) / (double) 5; System.out.println ("0-4は" + ans1 + "です。 "); System.out.println ("3.14×2は" + ans2 + "です。 "); System.out.println ("5÷3は" + ans3 + "です。 "); System.out.println ("30÷7のあまりの数は" + ans4 + "です。 "); System.out.println ("(7+32)÷5は" + ans5 + "です。 "); } } コマンド プロプトで、 ¥1288は不正な文字です というエラーメッセージが出るんだが、なぜ?
>>284 エラーメッセージは勝手に削らないで全部コピペしろ。
>public class SampleP2 >{ >public static void main(String[] args) は、 class SampleP2 { public static void main(String args[]) に訂正
SampleP2.java:12: \12288 は不正な文字です。 System.out.println ("3.14×2は" + ans2 + "です。 "); ^ SampleP2.java:12: \12288 は不正な文字です。 System.out.println ("3.14×2は" + ans2 + "です。 "); ^ SampleP2.java:14: \12288 は不正な文字です。 System.out.println ("30÷7のあまりの数は" + ans4 + "です。 "); ^ SampleP2.java:14: \12288 は不正な文字です。 System.out.println ("30÷7のあまりの数は" + ans4 + "です。 "); ^ SampleP2.java:14: \12288 は不正な文字です。 System.out.println ("30÷7のあまりの数は" + ans4 + "です。 "); ^ SampleP2.java:15: \12288 は不正な文字です。 System.out.println ("(7+32)÷5は" + ans5 + "です。 "); ^ SampleP2.java:15: \12288 は不正な文字です。 System.out.println ("(7+32)÷5は" + ans5 + "です。 "); ^ SampleP2.java:15: \12288 は不正な文字です。 System.out.println ("(7+32)÷5は" + ans5 + "です。 "); ^ エラー 8 個 C:\MyApplet>
290 :
デフォルトの名無しさん :03/11/06 00:57
クラスメソッドなどのstaticをつけるメリットを教えてください 逆にインスタンス化しなければ使えないのとどういう問題が発生するのでしょうか?
291 :
デフォルトの名無しさん :03/11/06 01:02
教えてください class Sample{ public static void main(String[] args){ try{ File fl = new File(args[0]); FileWriter fw = new FileWriter(fl.getPath(),true); fw.write("あ"); fw.close(); } catch(IOException e){ System.out.println("ERR:"+e.getMessage()); }}} これを実行すると「あ」が追加されるのですが 一番最後の行に追加されます これを途中の行、あるいはある文字列の後ろに追加するにはどうすればいいのでしょうか? お願いします
>>291 一度全部読み込んで、好きな場所に追加してから書き込み。じゃダメかい?
293 :
デフォルトの名無しさん :03/11/06 01:19
>>293 そもそも、ファイル中にデータを割り込ませることができる OS は、
ほとんど無いと思う。
そういうニーズがあるときは、プログラマがそういうファイル形式にいちいちすると思うし。
jspにincludeとかforwardをごりごり埋めたいんすが charsetの指定は個々に書くものですか?
>>295 includeは方法による。
<%@ include 〜 %>なら書いてはいけない。
<jsp:include 〜 />は書かなくてはいけない。
>>290 いろんな API を活用して、自分で掴んでください。
java.lang.Runtime.exec()を使用して起動したコマンドに対して、SIGNALを送って制御したりとかはできますか?
>>299 java.lang.Runtime.exec() に相当する部分から JNI 経由でって事にすればできるかもしれん。
301 :
デフォルトの名無しさん :03/11/06 17:01
Bufferingってのがよくわかりません 読み込みを速くするということですが 具体的にどういう動作をするのでしょうか? あるとないとでは具合はどう違うのでしょうか?
>>301 何のバッファリングかによるが・・・・
例えば HDD 上のファイルを 1byte ずつ断続的に読む必要があったとする。
で、読む間隔が 1秒ごとだとすれば、
他のアプリケーション等が割り込んで、別のファイルを読み込む余地が十分にあるわけだ。
そうすると、HDD のヘッダはあっちいったりこっち戻ってきたりとせわしなくなる。当然、遅くなる。
だからメモリ上に kbytes 単位で前もって読み込んでおいて、
それを 1byte ずつ拾っていけば、随分ましになる。
つまり Java は全然関係ない話。
>>301 InputStream in = new BufferedInputStream(new FileInputStream("file"))
とかだと in.read() で 1バイト読み込む際に BufferedInputStream は 1024バイトぐらいファイルから読み込んでおく。
すると、次に in.read() で 1バイト読み込む際には直接ファイルから読み込まなくて良いので速くなる事が期待される。
304 :
デフォルトの名無しさん :03/11/06 17:10
>>302 たとえば
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
みたいに
何重もnewしたのをその上でbufferedReaderでnewする場合とかです
被った
>>289 半角スペース二個だろ
EmacsUserならこれ常識
307 :
デフォルトの名無しさん :03/11/06 17:41
FileWriterで質問です File fl = new File(args[0]); FileWriter fw = new FileWriter(fl.getPath(),true); for(int i=0;i<100;i++ ){ fw.write(i + "\n"); } を実行した場合 上記だと上手くファイルに書き込みされるのですが fw.write(i)でやると文字化けしてしまいます \nの改行のあるとないの違いがいまいちわかりません 教えてください
>>307 fw.write(i+"\n"); だと FileWriter#write(String s) が呼ばれる。
fw.write(i); だと FileWriter#write(int i) が呼ばれる。
309 :
エラーが出るんですが… :03/11/06 18:06
import java.io.*; class Sample53 { public static void main (String[] args) throws IOException; { System.out.println ("二つの整数を入力してください。"); BufferedReader br = new BufferedReader (InputStreamReader (System.in)); String str1 = br.readLine(); String str2 = br.readLine(); int num1 = Integer.parseInt (str1); int num2 = Integer.parseInt (str2); if (num1<num2){ System.out.println (num1+"より"+num2+"のほうが大きいです。"); } else if (num1>num2){ System.out.println (num1+"より"+num2+"のほうが小さいです。"); } else (num1<num2){ System.out.println ("二つの数は同じ値です。"); } } }
Sample53.java:24: 文ではありません。 else (num1<num2){ ^ Sample53.java:24: ';' がありません。 else (num1<num2){ ^ Sample53.java:5: メソッド本体がないか、abstract として宣言されています。 public static void main (String[] args) throws IOException; ^ Sample53.java:10: シンボルを解決できません。 シンボル: メソッド InputStreamReader (java.io.InputStream) 場所 : Sample53 の クラス new BufferedReader (InputStreamReader (System.in)); ^ エラー 4 個
>>310 上から順にじっくり見れ。
public static void main (String[] args) throws IOException; ←ココ!
312 :
デフォルトの名無しさん :03/11/06 18:32
FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at java.lang.NullPointerException.<init>(NullPointerException.java:63) ('A`) FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at java.lang.NullPointerException.<init>(NullPointerException.java:63) ('A`) FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at java.lang.NullPointerException.<init>(NullPointerException.java:63) ('A`) FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at java.lang.NullPointerException.<init>(NullPointerException.java:63) ('A`) FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at java.lang.NullPointerException.<init>(NullPointerException.java:63) ('A`)
>>290 メリットも糞もstaticで修飾するからクラスメソッドでは?
というより日本語勉強氏れ。
314 :
デフォルトの名無しさん :03/11/07 06:44
コマンドプロンプトで半角英数以外(片仮名・平仮名)を 打つにはどうしたらよいのでしょうか? ほんと初心者ですいません
315 :
デフォルトの名無しさん :03/11/07 07:37
[ Alt ]+[半角/全角]
316 :
デフォルトの名無しさん :03/11/07 07:48
317 :
デフォルトの名無しさん :03/11/07 07:51
>>315 有難うございます。
本当に助かりました。
318 :
デフォルトの名無しさん :03/11/07 08:35
>>314 そんなもんJavaの問題じゃねえよヴォケ
320 :
デフォルトの名無しさん :03/11/07 13:45
JNIを使用してCを呼び出したいのですがやり方がよくわかりません。 どのようにすればいいのでしょうか? 具体的に教えて下さい。
322 :
デフォルトの名無しさん :03/11/07 13:49
今朝から勉強を始めました。 <html> <head> <title>Hello JavaScript</title> </head> <body> <script> document.write("<h1>じゃヴぁjava表示テスト</h1>") </script> <hr> <script> var xToday = new Date(); var xTestDate = new Date(2004,1-1,31); xNokori = (xTestDate.getTime() - xToday.getTime()) / (60*60*24*1000); document.write("<h2><CENTER>"); document.write(Math.ceil(xNokori), "日<br>"); document.write("</h2></<CENTER>"); </script> <hr> </body> </html> まで、できました。
すみません
>>1 を全く読んでません。タイトルだけ見てましたm(..)m
ある Action が、 isEnabled で返す値を変化させた場合、 "enabled" をキーにすれば PropertyChangeListener 達に正しく通知できるようですが、 (少なくとも J2SDK1.4 のソースを見るとそう) これってとても泥縄的ですよね。 Sun の方の見解ってどこかで見れますか?
あ、スレ間違っちゃった。放置してもいいです。
328 :
デフォルトの名無しさん :03/11/07 19:29
Javaでアプリ作ろうとすると、画面のレイアウトでかなり苦労するのですが 皆さんどうしてますか? レイアウトマネージャーがもっと柔軟にコンポーネントを配置できればいいのですが どうにも上手くいきません。 Win32APIのように座標で指定してしまえば迷う事もないのでしょうが Javaならやはりレイアウトマネージャーを使うべきでしょうか。
329 :
デフォルトの名無しさん :03/11/07 19:30
C言語で作ったMCIの音楽再生処理をJNI経由で使用したいのですが処理全体をネイティブメソッドとして呼び出しも大丈夫でしょうか? 構造体のポインタを使ったり面倒な事をしなければいけないのでしょうか?
>>328 nullでsetBoundsは気が楽だぞー?
ウィンドウサイズ変更にいくらか制限つければな。
>>328 > どうにも上手くいきません。
慣れの問題だと思うよ。
> Javaならやはりレイアウトマネージャーを使うべきでしょうか。
基本的にはそーだね。座標で直接指定するのはフォントを統一できないと面倒だったりするし。
>>328 JFrameはnullレイアウトで。
まとめておくものはJPanelに入れて、そのJPanelはFlowLayout
そうすると、あとでJFrameをなにかのレイアウトにするときも楽
GUI作るときはNetBeansがおすすめ。
ttp://www.netbeans.jp/
333 :
デフォルトの名無しさん :03/11/08 00:44
JAVAサパーリ分かりません。 DB2とかwebshereとかhtml とかも勉強しないといけないんですよね。 何から始めれば良いのか分かりません。 C言語とアセンブラ3種類くらいなら 仕事で使っていたので簡単だったのだが。 IBMのサイトとか見ても書いてることが 理解できない。専門用語多すぎ。
>>333 Cでやっても、DB使ってWebアプリケーションなら、同じようにわからないんじゃネーノ?
とりあえず、プログラム経験ありなら、独習Javaでも読めば?
335 :
デフォルトの名無しさん :03/11/08 02:32
RUBYやると混乱するよ
>>333 まずHTMLが一番簡単。ワープロと同じ。
>>333 IBMに開発者登録すると、うざいくらいDB2やWebsphere関連
セミナーの案内くるぞ。
>DB2とかwebshereとかhtml >とかも勉強しないといけないんですよね。 これが Java 特有のもんだと誤解をしてるんだったら、 残りの言語も大して活用できていないものと思われる。
339 :
デフォルトの名無しさん :03/11/08 22:43
ていうか、会社から全部勉強するように言われたので。 いままでは、オブジェクト指向言語ではなかったので それで戸惑ってます。 hellowjava とかならわかるんですけどね。 これが解らなかったら既に会社クビになってるが(藁)
340 :
デフォルトの名無しさん :03/11/08 22:45
> hellowjava とかならわかるんですけどね。 > これが解らなかったら既に会社クビになってるが(藁) 既にクビですね(藁
×Hellow ○Hello
342 :
デフォルトの名無しさん :03/11/08 23:27
よくjavaのソースにある クラス名.class.getName(); って何をしてるのでしょうか? 特に真ん中のclassの部分が何を指してるのでしょうか? 教えてください
>>342 型名.class で、その型を示す java.lang.Class のオブジェクトが得られる。
Object.class で Class.forName("java.lang.Object") と同じものが、
int.class で Integer.TYPE と同じものが、それぞれ得られる。
>>342 OjectクラスとClassクラスのドキュメントを読め
345 :
デフォルトの名無しさん :03/11/09 06:57
例外処理がよく理解できない tryとcatchはまあ理解できるけど throwとthrowsがいまいち理解できない どこか良いサイトや書籍知りませんか?
346 :
デフォルトの名無しさん :03/11/09 08:41
オブジェクト指向って 簡単に言うとクラスというのを用意してるから それをインスタンス化して利用しなさい って事?
347 :
デフォルトの名無しさん :03/11/09 09:23
デフォルトコンストラクタをいちいち明示する目的って何でしょうか? ただ、「わかりやすい」だけの問題だけでしょうか?
348 :
デフォルトの名無しさん :03/11/09 09:47
public void paint(Graphics g)内で、計算結果を任意の場所に表示するには どうすればよいのでしょうか?
349 :
デフォルトの名無しさん :03/11/09 12:12
staticのあるクラスって インスタンス化しなくても参照できるクラスで staticのないクラスはnewしなければ参照できないと言うことですか?
350 :
デフォルトの名無しさん :03/11/09 12:19
>>349 もともと無い物を参照することは出来ないのでnewするということです。
staticというのはもともと存在するものだという形で考えてください
352 :
デフォルトの名無しさん :03/11/09 12:28
変数の宣言で int=0; String= null; など初期化しなければならない時ってどういうときでしょうか? どうもサンプルなどを見てもするときとしない時がはっきりしません 教えてください
>>352 初期化しない(もしくは、初期化しない可能性がある)変数を読もうとするとエラーになるから、その対策とか。
Object o;
for(int i = 0; i < 5 ; i++){
if(0<=i) o = null; //i が 0以上で、この文を通るのは人間には一目瞭然だが、コンパイラはそこまで考えない。
}
System.out.println(o); //コンパイルエラー
354 :
デフォルトの名無しさん :03/11/09 14:02
>>343 たとえば
private static final String CLASSNAME = CustomJobDB.class.getName();
って何のためにするのでしょうか?
ClassNameには何が入れられるのでしょうか?
これをすることによって何が出来るのでしょうか?
教えてください
>>354 > ClassNameには何が入れられるのでしょうか?
CustomJobDB の完全限定名。
> これをすることによって何が出来るのでしょうか?
CustomJobDB の完全限定名を安価に読むことができる。
>>352 >>353 インスタンス変数の初期化は必要が無い無駄な処理。
明示的に null とかで初期化するのはアホ。雑誌などのソースもほとんどバカ。
コーディングルールがそうなってたとしたら策定者が糞。
インスタンス変数はオブジェクトでもプリミティブでも必ず初期化される。
初期値は言語仕様で規定されている。
明示的にしたほうが分かりやすいとかじゃなくて必要ない。
Javaの流儀に従うなら JDK の String などのソースを見るべし。
ここで勘違いしてはいけないのはメソッド変数は必ず初期化が必要。
353の説明だとmain()の中以外かstaticつけるとnullと表示されるだけでコンパイルエラーにはならんよ o.toString()とでもすれば ぬるぽ だけど
358 :
デフォルトの名無しさん :03/11/09 15:35
>>357 常識的に解釈すれば
> Object o;
> for(int i = 0; i < 5 ; i++){
> if(0<=i) o = null; //i が 0以上で、この文を通るのは人間には一目瞭然だが、コンパイラはそこまで考えない。
> }
> System.out.println(o); //コンパイルエラー
は同一ブロック内にあるだろ。
>>356 > ここで勘違いしてはいけないのはメソッド変数は必ず初期化が必要。
他人の事を馬鹿にするわりには「メソッド変数」とか言ってるし…
一般的には「ローカル変数」でしょ。
>>352 > int=0;
> String= null;
どーでもいいけど、そのままではコンパイルできんぞ。
>>361 int i =0;
String s = null;
ね
363 :
デフォルトの名無しさん :03/11/09 16:51
すいません
>>349 ですが
引数のないコンストラクタを明示する理由って何でしょうか?
あれって記述がなければデフォルトで自動的に引数のないコンストラクタを
作ってくれるから別に書かなくていいんじゃないのでしょうか?
364 :
デフォルトの名無しさん :03/11/09 16:52
>>363 > 引数のないコンストラクタを明示する理由って何でしょうか?
一般的に良く使われるのは
private ClassName(){ }
でインスタンスの生成を禁止をするとか。
っつか、書いた人に質問するのが一番だと思われ。
>>363 引数ありのコンストラクタが別にある場合は、引数なしのコンストラクタも明示的に定義
する必要があるけど、そういう話ではない?
367 :
デフォルトの名無しさん :03/11/09 17:33
>>366 そうなんですが
その場合なぜ引数なしコンストラクタを定義しなければいけないのかや
引数なしコンストラクタで中味が何もなしのソース
とかよく見かけるけどあれは、何のために存在してるのかなどです
>>367 言語仕様による。
コンストラクタが一つも明示的に宣言されていない場合は
public ClassName(){}
が暗示的に宣言されたものとみなされるけど、
一つでもコンストラクタが明示的に宣言される場合は
引数なしのコンストラクタも明示的に宣言しなければならない。
>>368 ハァ?
デフォルトコンストラクタ無しのクラスは大いに結構ですが何か?
370 :
デフォルトの名無しさん :03/11/09 17:51
>>368 中味なしの引数なしコンストラクタは
何も処理ははないけど形だけ書いている
それでコンストラクタが一つも明示されていないときは
中味なしの引数なしコンストラクタが自動的に追加されて
特に処理はしないってことですか?
わかりました
ありがとうございます
>>インスタンス変数はオブジェクトでもプリミティブでも必ず初期化される。 馬鹿ですか?
>>367 >>369 言葉が足りなかったけど、もちろん「引数なしのコンストラクタが不要」であれば定義する
必要はないです。ただし引数ありコンストラクタが別にあり、引数なしコンストラクタも必要
であれば、中身が空っぽでも定義する必要があります。
>>369 >>368 は
> 引数なしコンストラクタで中味が何もなしのソース
> とかよく見かけるけどあれは、何のために存在してるのかなどです
に対する説明ね。
確かに単独で読んだら誤解するな。
インナークラスはstaticをつけたほうが良いって聞きましたが なんでですか?
>>375 > インナークラスはstaticをつけたほうが良い
とかいってた奴に聞け。
言ってたのはジョシュア・ブロックっていう先輩なんですが こいつ何いってんのかサパーリで。。。
ついで言うとこの人、Javaに人生かけてるみたいで 少しもちつけって感じです。
こないだも、コレクションとかいう俺様フレームワークは すごいんだって自慢してました。はぁ〜。
381 :
デフォルトの名無しさん :03/11/10 00:20
public void paint(Graphics g)内で、計算結果を任意の場所に表示するには どうすればよいのでしょうか?
383 :
デフォルトの名無しさん :03/11/10 00:35
>>383 またかよ・・・・
答えてもらえないと逆ギレする奴。いいかげんにしてくれ。
>>381 Appletのことをいってんのか?
忘れたが文字列を表示する何かがあるだろ。
386 :
デフォルトの名無しさん :03/11/10 11:58
文字列の中に変数って使えるんですか?
>>381 g.drawString使うとよいよ。文字列とXY座標が引数ね。
>>386 String s = "gets!";
System.out.println("oh!nice " + s);
こういうことか?
390 :
デフォルトの名無しさん :03/11/10 12:28
リフレクションの意味がわかりません。 初心者でほんと申し訳ないです。 c++で言う "%d" みたいなやつがjavaではどうやって表記したらいいのか わからんのです。
java.lang.reflectのまちがい
>>390 > c++で言う "%d" みたいなやつがjavaではどうやって表記したらいいのか
JDK1.5で追加される。
>>390 だったら
String s = "gets!";
System.out.println("oh!nice " + s);
この回答で正解か。
+使ってがんがんたせばOK。
どうしても今%dつかいたければ Jakarta OROを使うという手もありw
ていうかprintf見たいなメソッドを自作すればいいじゃん。
>>378 > ついで言うとこの人、Javaに人生かけてるみたいで
これをみればそりゃそうに近いだろ。
>Joshua Bloch is a Senior Staff Engineer at Sun Microsystems' Java
>Software division, where he works as an architect in the Java Language
> Group. His major contributions include the Collections Framework and
>java.math.
>In a former life, Josh was a Senior Systems Designer at Transarc Corporation
>in Pittsburgh Pennsylvania, where he designed and implemented many parts of
>the Encina distributed transaction processing system. In the deep dark past, he
> held summer positions at the usual corporate research labs (Bell Labs and
> IBM Research).
> Josh holds a Ph.D. in computer science from Carnegie-Mellon University,
> where he wrote a long, boring dissertation on replication, and designed and
>implemented the language layer of the Camelot distributed transaction
> processing system. He holds a B.S. in computer science from Columbia.
401 :
デフォルトの名無しさん :03/11/20 04:27
例外処理ってどういうときに使うんですか? If文でのチェックと何が違うんですか? たとえば割り算のメソッドがあるとき、 割るほうの数が0だったら例外が発生しますけど なんで0かどうかチェックして-1とかなんとかを返しちゃいけないんですか?
1÷0=-1か。おわらいだな。さすがJava厨だよ。
あぁ。俺も思った。いちいちジャンプするなっていいたい。 それじゃgotoと同じじゃん。 Cみたいにerrnoとか使ってくれないかな。 GetLastErrorでもいいけど。
404 :
デフォルトの名無しさん :03/11/20 06:41
>>401 >>403 例外が発生してるってことはやっちゃいけないことをやってるとか、
おきちゃいけないことがおきてるってことだよ。
バグとかありえなさそうな障害とかを検出するための機構が例外機構で、
プログラムの論理制御とは別の制御体系を持つことによって保守性を高めたり生産性を
あげようとしているわけ。
通常のプログラムとは別に「万が一」に備えるためのプログラムを書き込むための機構だと思えばいい。
>>401 そのメソッドがdouble型を返すとき,
0で割ったら,-1.0を返すことを仕様とする
ってことも可能だろうけど,
そのメソッドの計算結果として-1.0が範疇だったらどうするよ.
とJava以外の言語をやったことない俺としては疑問に思う.
ってか結局おなじじゃねーか
>>406 結局おなじようにしか書けないから、おまえは応用力が低いっていわれるんだよ!
つか、何故-1なんだ。 普通、POSITIVE_INFINITY とか、NEGATIVE_INFINITY だろ。
それをいうならNaNのほうが・・・
410 :
デフォルトの名無しさん :03/11/21 11:37
リストボックスなどのADDの後に変数の中身を表示させる方法を教えて下さい。
411 :
デフォルトの名無しさん :03/11/21 11:48
Systemアウチ(`д´)>
412 :
デフォルトの名無しさん :03/11/21 12:07
ADD(system.out.print(hensu))を使用してもエラーが出て表示できませんでした。 なにが悪いのでしょうか?
ネタだ・・・絶対ネタ・・・
>>408 ,
>>409 System.out.println(1.0/0.0);
System.out.println(0.0/0.0);
System.out.println((-1.0)/0.0);
415 :
デフォルトの名無しさん :03/11/21 22:56
疑問の意味が分からん。 割る数に0がくる可能性があるなら 割る前にチェックするんじゃないの普通。 0ディヴァイド時点でアボーンなのはどの言語でも当たり前ですが何か? 0ディヴァイドがアボーンになる理由も分からんなら、 javaやるまえに情報処理の勉強をしろ。 404のあきれ顔が目に浮かぶw と、つられてみました。
>>402 そんなことをいう奴はJava厨じゃない。
C厨だろタコ
馬鹿はDivideByZeroExceptionについて調べてから発言して来い。
>>417 (・Д・∩ 先生!DivideByZeroExceptionはJavaで定義されてませんが
>>414 俺もそう思ってたんだがJavaの勉強がてらに電卓を作ってみたら何の例外も
おきずに”Infinity”と表示されるんでそのままにしてある。まあ、計算結果を元に
処理を継続する必要がある場合はチェックしなきゃね。
ごめん、414→415だ。
420 :
デフォルトの名無しさん :03/11/23 02:45
javaからwindowsをシャットダウンする方法おしえてほすぃ。 JNIを使えばよいの?
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#5047 浮動小数点の除算の結果は,IEEE算術の規定によって次のように決定される。
* もしどちらかのオぺランドがNaNであるならば,その結果はNaNとする。
* もしその結果がNaNでないならば,
両方のオぺランドが同じ符号をもてば,その結果の符号は正であり,
両方のオぺランドが異なる符号をもてば,その結果の符号は負とする。
* 無限大による無限大の除算の結果はNaNとする。
* 有限値による無限大の除算の結果は符号付き無限大とする。
その符合は上述の規則によって決定される。
* 無限大による有限値の除算の結果は符号付きゼロとする。
その符号は上述の規則によって決定される。
* ゼロによるゼロの除算の結果はNaNとする。
ゼロ以外の有限値によるゼロの除算の結果は符号付きのゼロとする。
その符合は上述の規則によって決定される。
* ゼロによるゼロ以外の有限値の除算の結果は,符号付き無限大とする。
その符合は上述の規則によって決定する。
* その他の場合に,無限大及びNaNを含まなければ,正確な数学的な商を計算する。
浮動小数点数値集合は,次のように選択される。
o もし除算式がFP厳密(15.4)であるならば,
+ もし除算式の型が float であるならば,単精度数値集合が選択されねばならない。
+ もし除算式の型が double であるならば,倍精度数値集合が選択されねばならない。
o 除算式がFP厳密でない場合には,
+ もし除算式の型が float であるならば,
実装に応じて単精度数値集合又は単精度指数部拡張数値集合のどちらを選択してもよい。
+ もし除算式の型が double であるならば,
実装に応じて倍精度数値集合又は倍精度指数部拡張数値集合のどちらを選択してもよい。
>>422 ,423 Thx
そっか俺はdoubleで計算してたから何も例外が発生しなかったんだ。
>>417 まぁ俺は振る一ちゃぁふるいが..Java1年生だぞw
J2EEにのどっかのクラスにでもDivideByZeroExceptionが定義されているのかな?
俺が使ってるのはJ2SE1.42なんで。422、423のとおりJavaの演算子"/"を使う以上は
DivideByZeroExceptionは無いってことだね。
Cだとヘッダファイルだけ作れば実装しなくても、それを利用するソースはヘッダをインクルードすればコンパイルできたけど Javaの場合はどうするの? 構文チェックのため一部のそーすだけにコンパイルしたいんだけど。
426 :
デフォルトの名無しさん :03/11/23 13:54
フラグが立つと、メインの画面が更新される処理をしたいのですが、画面の更新ってできますか?
>>425 最初に空のクラスを定義しておいて後から実装する。結局同じことと違う?
>>426 repaint()をコールする。質問と答えが噛み合ってるか分からんが。
>>427 まあ同じことか。
空と言っても関数は戻り値を返すとこを書かないといけないと思ったけどnullにすればいいか。
ありがとう。
429 :
デフォルトの名無しさん :03/11/23 15:28
コンソールで java hogehoge と打つのではなく、アイコンをダブルクリックして起動するためには どうすればよいのでしょうか?
>>429 Windowsだったら。
バッチファイルを書くか、
java.exe のショートカットに引数を書くか、
.class の関連付けを java.exe にするか。
>>430-431 さん
ふーむ、勉強になります!ありがとうございます。
まだ時間があるのでjarファイルを作る勉強から始めようと思います。
時間が足りなかったら
>>430 さんの方法で行こうかな…ありがとうございます。
イメージのサイズをある定数に代入したいのですが −1が入ってきてうまく引き出せません。 どうしたら画像からサイズを引き出せるのでしょうか ime[0]=getImage(getDocumentBase(),"sumple1.jpe"); ime[1]=getImage(getDocumentBase(),"no1.jpg."); ime[2]=getImage(getDocumentBase(),"no2.jpg."); ime[3]=getImage(getDocumentBase(),"no3.jpg."); ime[4]=getImage(getDocumentBase(),"no4.jpg."); ime[5]=getImage(getDocumentBase(),"no15.jpg."); ime[6]=getImage(getDocumentBase(),"no11.jpg."); ime[7]=getImage(getDocumentBase(),"no12.jpg."); ime[8]=getImage(getDocumentBase(),"no13.jpg."); ime[9]=getImage(getDocumentBase(),"no14.jpg."); for(int i=0; i<10; i++) {//Image分のキャンバス作成 int iiwidth=ime[i].getWidth(this); int iiheight=ime[i].getHeight(this); System.out.println(iiwidth+"-"+iiheight); }
メディアトラッカー
>>433 jpegのフォーマット解析して取得するのが確実
437 :
デフォルトの名無しさん :03/11/25 18:59
リストボックスの項目を選択するたびに様々な変数の値を格納したいのですが、どのような処理が考えられるでしょうか?
438 :
デフォルトの名無しさん :03/11/25 19:40
ウィンドウを作成して、別のクラスからそのウィンドウのラベルの文字列を編集する方法ってないでしょうか?
>>437 Button/JButton と ActionListener を使ったことないのか。
使ったことあるなら、それと似たようなもんだ (別の Listener がいいかも知れん)。
使ったことないなら、そういうサンプル探して習得しろ。本が手っ取り早い。
>>438 ある。そのクラスのインスタンスにウィンドウのインスタンスの参照を与える方法を考えれ。
あとは Frame なり JFrame なりのリファレンスを読みな。
具体的にどうしたいかがさっぱりなので、これ以上は答えられない。
ウィンドウはコンストラクタ内で作っているので、クラスのインスタンスを作成するとウィンドウを作る処理を繰り返してしまいます。
>>438 いっぱいあるよ。
Javaのカプセル化の概念を使うとラベルに設定する文字列のセットメソッドを
自分で作成する。コンストラクタで作成されたラベルの文字列が変更できるように
ラベルオブジェクトをグローバル変数にする。
さっき作った文字列セットメソッド内に変更するラベルオブジェクトのsetText(String str)
で更新すると変わるを思おうけど。
俺にはここが「【Java初心者】今から始めるJava Part01」には到底見えませんがなにか?
444 :
デフォルトの名無しさん :03/11/27 13:31
質問です. インターフェースのでの多重継承とは、抽象クラスの代わり として複数宣言できるということなのでしょうか。 ご助言お願いします.
インターフェースって継承できたの?
のでのになってしまった…。 説明が足りないようなので、追加します。 JAVA関係のHPを見てまわって、クラスは多重継承はできないため インターフェースを使って多重継承のようなものを実現できるとあり。 結局、抽象クラスを分けてインプリメントしているだけのように思えたので、 みなさんの助言をいただきたいと思いました。 インターフェースの多重継承意味、使える点などお願いします。
>>446 インターフェースはメソッドの実装を強制するためのものです
クラスを再利用する際にメソッドの実装が必要であることをプログラマに明示的に示す役割があります
多重継承とは全くの別物と考えてください
Java言語で学ぶデザインパターン入門 結城浩著
この本に有益な利用法が載っています
繰り返しになりますがJavaでは多重継承はできませんし
似たようなこともできません
447さん、 ありがとうございます。 確かに、インターフェースをクラスにインプリメントした場合 メソッドを定義する必要があり、継承というより宣言だよなぁと思っていました。 多重継承とは違うと言ってもらいスッキリしました。
多重継承の問題のひとつは、 親 ┌┴┐ 子a 子b └┬┘ 孫 というように、子a,子bから多重継承した孫クラスがあった場合、 子aから継承した親のデータと、子bから継承した親のデータと、 親のデータを二つも持つことになって、ややこしくなるからではないでしょうか。 インターフェイスにはメソッドの宣言しかなく、データを持たせることはできないので、 上で述べたような、ややこしいことがなくなるわけですから。 あとは、多重継承に似たようなことなら、 委譲などを使って一応は実現できるかもしれません。
ダイヤモンド継承
つーか、なんでこんなスレがたってんの? だれだよ、こんなスレたてた奴。 DelphiとC#と一緒にだれか立てたのか?
453 :
デフォルトの名無しさん :03/11/28 20:35
ボタンなどが乗ったウィンドウを作り、定期的に更新してウィンドウの内容を状況に応じて変化させながら表示したいのですが可能でしょうか? 本当に知りたいので必死にお願いします!
454 :
デフォルトの名無しさん :03/11/28 20:45
>>453 可能です。
ああいいことしたなあ必死な人に回答してあげちゃったよ鮮血出血大サービスだよめまいがはぅパタン
>>454 453とは別人です。
ウインドウを生成する際、どのオブジェクトが必要で、そのオブジェクトがどのような機能を持っているか。
そして、更新する際には一般的にどのようなアルゴリズムで実現するかについて知りたいです。
こちらは1週間ほど悩んでいてかなり必死です。
説明ないし、詳細が書かれた「日本語のサイト」を紹介してください。
457 :
デフォルトの名無しさん :03/11/29 22:57
HTMLに埋め込まれたアプレットをクリックしたり、Buttonを 押したら別のページへ移動する(アプレットがHTTPサーバからの レスを読み込むのではありません、つまりa hrefタグをクリックしたのと 同じような感じで)処理を行いたいんですが、どのメソッドを使えばいいんですか?
アプレットコンテキスト
JDKとかでコンパイルの仕方がわからないんですが・・
JDKとかってJDKじゃないものでもコンパイルしてみようとしたのか... jikesとか? 強いな。
>>459 おれも、最初の頃わからなかったので
本とか買ったり ネットで調べました
462 :
デフォルトの名無しさん :03/11/29 23:27
javac ファイル名 と打ち込む。 「そんなコマンド知らん」といわれたらパスを通す。
フェイントかけないと パスが通らないことがあります
>>460 さん
「とか」は取り消しの方向でおねがいしま
>>461 さん
ネットで調べつつやっててその壁にぶつかったんですが、なんかイマイチ・・
>>462 さん
どこに打ち込むんですか?
非常に教えて君でゴメンなさい
>>459 Javaはじめようと思ったのなら
なぜ入門書など買わないの?
>ネットで調べつつやっててその壁にぶつかったんですが、なんかイマイチ・・
どういうキーワードで探してるのかわからないが・・・
ネットでの検索も出来ない人ですあなたは。
もしくは日本語が読めないとか?
そして
>>463 のギャグをスルーするなんて笑いのセンス0ですよ
>>467 さん
入門書は金銭的余裕が無くて今は買えないので・・
>>463 のはギャグだったんですか?小生わかりませんでした。
言葉の意味も。
>>466 スタートメニューからコマンドプロンプト。
でもそのあとcdで移動とか作業あるけどね。本買ったら?
>>469 さん
わかりました。ありがとうございます。
入門書買って出直してきます・・
471 :
デフォルトの名無しさん :03/11/29 23:56
>>470 そのほうが良い
実際、つまづく部分はもっと先にあるからな
>>463 のギャグはスルーしてもいいが、
そもそもこのスレに書き込んでいる所からみて、
検索かけたりするのはあまり得意ではないと見た。
このレベルの入門者向けの本は何がいいのだろう。
結城本辺りかのう。
473 :
デフォルトの名無しさん :03/11/30 01:07
>>463 のギャグはスルーしてもいいが、
結城の入門書ってホントに初心者でもわかりやすいの・?
474 :
デフォルトの名無しさん :03/11/30 01:08
robocodeでもやれ!
>>473 さあそれが判らんのだ。
とりあえずスレッド本は判りやすかった。
デザインパターン本も判りやすかった。
して結城の入門本はどうだろうか。
これは私は未読ゆえ判断できかねるが、
少なくとも上の2冊はしっかりした日本語で書けているし、
説明もまあ正確だ。
ネット上なら
>>456 の稚内北星のテキストかJavaでHello Worldだろうか。
JavaでHello World
http://www.hellohiro.com/
>>475 JavaでHello World って、ソースにコメントが少ないせいか、初心者の頃にはわかりにくかった記憶が。
おおおおお!
失礼、ぶっこきます。 win98 java1.4 で、Dos窓コンパイルエラーを別ファイルにリダイレクトするコマンドを 教えてください。1.3まではわかったのですが、1.4がうまくいきません。
>>479 どうもです。
1.3までの方法は、リンク先にあるのと同じです。
1.4だと、同じ方法ではうまくいかないみたいです。
(´-`).。oO(リンク先には解決法が複数書かれているようだが。)
シェルをかえずに、ウィンDos窓 1.4用のコマンドは ないということですかね。
>>482 1.4のjavacのマニュアルにちゃんと
|コンパイラのメッセージを、指定されたファイルに送ります。
|デフォルトでは、コンパイラのメッセージは System.err に送られます。
っていう機能のオプションの指定に付いて書いてあるのになんで読まないかな...
484 :
デフォルトの名無しさん :03/11/30 21:31
>>482 標準出力と標準エラー出力の違いは判るか?
リンク先を見た限りでは、Java1.3以前はコンパイルエラーを
標準エラー出力ではなく、標準出力に出力する機能があったようだ。
1.4にそういう機能が付いていないのなら、
標準エラー出力をファイルに保存するプログラムを自分で書いてはどうか?
Windows98ではなくNT,XP系統なら、標準エラー出力をリダイレクトする機能が
デフォルトでついていたようにもおもう。
いっそWindows98なんぞ捨てて、UNIXライクなOSをインストールするか、
それかcygwinをインストールするのが一番手軽な手法だとおもう。
>>478 1.4 なら javac -Xstdout filename sourcefiles
486 :
デフォルトの名無しさん :03/11/30 22:06
javaで beanを作る と セッター、ゲッターをつくる。 インスタンス化する と newする は同義語でしょうか?
>>486 前者は、それだとJavaBeansのプロパティのアクセッサメソッドの部分しか
説明してないから同義ではない。
後者は、インスタンスを生成してそれを返すstaticメソッドでしかインスタンスを
取得できないクラスの存在があるので同義ではない。
>>483 そのマニュアルというのは、SDKをインストールした中にあるのですか?
入門者なので、わからないことが多くて・・
>>484 まだまだ、入門者なもので保存するプログラムを書くまでは勉強しないと・・
>>485 おかげさんで、エラー出力できるようになりました。どうもです。
>>489 どうもです。よくよんで、参考にします。
30Mあったので、今の時点でDLはやめときます。
で、cygwinはインストールしてくれないの?
>>491 HDの残も400Mぐらいしかないので、エミュレータいれるのは今すぐというわけには・・
買い替えも予定してるので、そのときには試そうかなと・・・
なんでインスタンス化するんですか?メソッドを全部staticにしちゃ駄目なの?
>>494 なんか分かったような気がします…。
オブジェクト志向が全然分かっていないようです。
ありがとうございました。
496 :
デフォルトの名無しさん :03/12/01 02:46
アプレットビューアのフレームの大きさを, 描かれる物の大きさ(例えば,正方形とか)の応じて 臨機応変に可変できるように行いたいのですが,例えば,ソースの中に <APPLET CODE="sample.class" WIDTH=1000 HEIGHT=500></APPLET> といったように記述しないとsample.javaのファイルをappletviewerコマンド で実行できません.そしたら横方向に1000ピクセル,縦方向に500ピクセル のフレームを最初から指定したことになり可変できません. どうしたら描くモノの大きさに依存するようにフレームを作成できるのでしょうか? どなたか宜しかったら教えて下さい.
497 :
デフォルトの名無しさん :03/12/01 05:07
コンパイラは何がいいですか? 英語が出来ないので、Eclipseはちょっと敷居が高いような気がして。
>>497 コンパイラはSunのJDKを使うことになると思うが、Eclipseを敷居が高いというならばプログラムは無理だ。
あきらめろ。
なんだこの野郎!
JDKインストールして、 メモ帳とコマンドプロンプトでシコシコってのは駄目?
インストールが簡単なNetBeans
NetBeansはいいよ。遅いけど。
503 :
デフォルトの名無しさん :03/12/01 10:57
今javaの勉強をしているのですが先ほどから詰まってしまっています 本を読むとクラスは別々のファイルに分けて記述できる、ということですが 上手くいきません、例文を写してコンパイルしようとしてもエラーが出てしまいます エラーの内容を見てみるとmainメソッドを含むファイル以外に記述したクラスの変数やメソッドを読み込もうとするところで 「シンボルを解決できません」のメッセージが出ているようです なぜなのでしょうか? JDKをインストールして環境変数を設定してjavacコマンドが使えるようにしてして適当な場所にフォルダを作って「cd」でそこに移動してjavacでやっています 本を見ると各クラスをそれぞれ別ファイルに記述した場合mainメソッドを含むファイルを対象にしてjavacコマンドを使うように書かれていたのでそのようにしています もちろんファイル名はクラス名と対応させています 見直したところソースファイルの記述は間違っていないようだし 上手くいかない理由はどのようなことが考えられるでしょうか? よろしくお願いします 今まで一つのファイルにすべてのクラスを記述していたときは上手くいっていました
>>502 1.4.2 + 3.5.1は、そんなに遅くない。ただしメモリは192MB以上必要。
初心者っていうのは、質問の仕方も初心者なんだよな。 状況がさっぱりわからん。 いや、説明しようとしてる努力はみとめるが。
>>503 それら複数のファイルは同じディレクトリの上に配置しましたか?
507 :
デフォルトの名無しさん :03/12/01 11:03
>>505 すいません、やっぱりわかり辛いですか・・・
>>503 もちろん同じディレクトリに入れてます
508 :
デフォルトの名無しさん :03/12/01 11:06
Y氏 好循環 I氏 悪循環 (日本) (健康体) (喘息) 1.(神が喘息であるかないかを決める) Y I 2.喘息でない人 喘息の人は は体力がある 体力がない Y I 3. 行動力、 五感(嗅覚)が鈍り感性が変化 する Y I 4.神は異常な感性の人間は本来人に迷惑をかけるか ら外に出てはいけないと思っている。 Y I 5.変化なし アトピーになる Y I 6.正常な感性 外に出なくなりさらに異常な感 性になる Y I 7.正常な人間 異常な人間(レッテル)
509 :
デフォルトの名無しさん :03/12/01 11:07
Y I 8. 死 Y I 9. 来世 Y I 10.神は異常な人間は人に迷惑をかけるので行動を抑 制する必要がある Y I 11.神は異常な人間は人に迷惑をかけるので行動を抑 制する必要があると思っている。 Y I 12.神が喘息であるかないかを決める Y I 13.喘息でない 喘息である Y I 1.に戻る 神は事態の収拾に必死、頑張れよー。
510 :
デフォルトの名無しさん :03/12/01 11:08
アトピー性皮膚炎の治し方 行動力=ガッツ=体力 アトピー性皮膚炎の患者は、 感覚の鈍い人間が多い。 それはなぜか。 幼少期喘息になるから、 体力がつかないため、 五感が弱るからである。 解決方法は、 五感を強くしてやればいい。 体力をつけることですぐに五感が正常になり、 行動力も湧くのである。 五感が正常になり、体力もつけば、 アトピー性皮膚炎も不思議と消えることが多い。
>>505 私もそう思う。
余計な説明は事細かなんだが、必要な情報は書かれていない。
だから適切な解答も返ってこない。
とはいえ、なにが必要な情報で、なにが不必要かがわかれば、
壁にぶち当たることもないだろうが
そもそも、このスレが、こういった質問をするための適切なスレではないことは、
>>1-100 あたりを読めば判るわけだし。
>>503 短いものならソースをさらすなり、出力されたコンパイルエラーを貼りつけほうがいい。
>>498 EclipseはSDKの中にあるコンパイラは使わないよ。
javac以外のSDKツールとかsrc.zipとかが必要だからSDKを
一緒にインストールするのが普通だけど。
わかりました //ファイル名Ptst1Cls.java public class Ptst1Cls{ public void disp(){ System.out.println("this is Ptst1Cls"); } } //ファイル名Ptst1Prg.java public class Ptst1Prg{ public static void main(String args[]){ Ptst1Cls dt = new Ptst1Cls(); dt.disp(); } } C:\Documents and Settings\ユーザー\My Documents\JAVA\ファイルを二つに分ける>java c Ptst1Prg.java Ptst1Prg.java:3: シンボルを解決できません。 シンボル: クラス Ptst1Cls 場所 : Ptst1Prg の クラス Ptst1Cls dt = new Ptst1Cls(); ^ Ptst1Prg.java:3: シンボルを解決できません。 シンボル: クラス Ptst1Cls 場所 : Ptst1Prg の クラス Ptst1Cls dt = new Ptst1Cls(); ^
コンパイルできた。 WindowsXP j2sdk1.4.2_02
>>513 Ptst1Cls.javaファイルはコンパイルできまていますか?
もしPtst1Cls.javaファイルがコンパイルできなければ
ファイル名に大文字/小文字の間違いはありませんか?
>>470 C言語などの他のプログラミング経験があるなら入門書もいらんのだが
518 :
デフォルトの名無しさん :03/12/01 14:08
アプレットビューアのフレームの大きさを, 描かれる物の大きさ(例えば,正方形とか)の応じて 臨機応変に可変できるように行いたいのですが,例えば,ソースの中に <APPLET CODE="sample.class" WIDTH=1000 HEIGHT=500></APPLET> といったように記述しないとsample.javaのファイルをappletviewerコマンド で実行できません.そしたら横方向に1000ピクセル,縦方向に500ピクセル のフレームを最初から指定したことになり可変できません. どうしたら描くモノの大きさに依存するようにフレームを作成できるのでしょうか? どなたか宜しかったら教えて下さい.
アプレットを使ってクライアント側にあるファイル(textやcsv)を読み取って ブラウザにその内容を表示するプログラムを作れと言われたのですが どうすればよいのか検討がつきません。 代わりの方法を含めて何か良い案か参考になるHPはないでしょうか?
Javaは宣言だけってできないんでしょ? 相互に依存するクラスの場合どうなるの? class A{ B b; } class B{ A a; } みたいの。 前方宣言しなくてもコンパイルできるの? エラーにならないの?
>>520 > 前方宣言しなくてもコンパイルできるの?
できる。
> エラーにならないの?
ならない。
言語仕様に従ったコンパイラなら。
>>520 ありがとう。
でも同じファイルじゃないと無理とかある?
> 言語仕様に従ったコンパイラなら。 この部分が重要だな。 現実にはいかに言語仕様にしたがわないコンパイラがあることか。
>>518 ブラウザとは別に、別のウインドウを開くというやりかたはできないかな。
>>519 アプレットに署名する必要があったとおもうよ。
それかMSの以前のVMなら、セキュリティホールがあるから、そこをつけば、
クライアント側のローカルなファイルを読み出すことができたとおもうよ。
>>523 > > 言語仕様に従ったコンパイラなら。
> この部分が重要だな。
言語仕様でどの部分で
>>520 に書かれてるんだ?
Sun の javac は
>>521 のような挙動をするが。
> 現実にはいかに言語仕様にしたがわないコンパイラがあることか。
C++ とかの惨状みるとそーゆーふーに感じるかも。
>>522 ない。
そういうコードを使ったデザインパターンもあるくらいだしな。
530 :
デフォルトの名無しさん :03/12/02 23:34
今、redhat8.0使ってるんだけど、iアプリってlinuxからシュミレートできるの?だれか教えれ
>>529 double型の精度、桁数に不満があるとき
>>532 だと語弊があるような。
2進数では正確に表現できない数(0.1とか)を扱うため。
535 :
デフォルトの名無しさん :03/12/05 00:57
>>529 Doubleは2進法で、BigDecimalは10進法で数値を扱います。
なので2進で無限小数に達してしまうような値をBigDecimalは正確に表すことができます。
BigDecimalはdoubleと比べ桁数がばかにならないけど あそこまでつかうってことはめったにないかな
今、for文ってやつ学んでます
下の文で、コマンドラインから入力したファイルを読み込むのではなく、 直接 FILE NAMEを入れた形で読み込ませたいのですが、どうすればいいんで しょうか?直接読み込ませたい FILE NAMEはc:\javabook\sample.txtです。
import java.io.*; class FileReaderSample { public static void main(String args[]) { try { // FileReader クラスを作成する. FileReader f = new FileReader(args[0]); //BufferedReaderオブジェクトを作成する BufferedReader br = new BufferedReader(f); // ストリームの最後に到達するまで文字を読み取って出力する. String s; while ((s = br.readLine()) != null) { // 文字を出力する. System.out.print((String)s); } // FileReader オブジェクトを閉じる. f.close(); } catch (Exception ex) { System.out.println("Exception: " + ex); } } }
>>539 FileReaderのコンストラクタに直接指定すれば?
\は\\に
>541 早速ありがとうございます。 やってみたのですが、下のようにエラーが出てしまいました。 C:\javabook>javac FileReaderSample.java FileReaderSample.java:5: ')' がありません。 public static void main(String c:\\javabook\\sample.txt) ^ FileReaderSample.java:5: \92 は不正な文字です。 public static void main(String c:\\javabook\\sample.txt) ^ FileReaderSample.java:5: \92 は不正な文字です。 public static void main(String c:\\javabook\\sample.txt) ^ FileReaderSample.java:5: \92 は不正な文字です。 public static void main(String c:\\javabook\\sample.txt) ^ FileReaderSample.java:5: \92 は不正な文字です。 public static void main(String c:\\javabook\\sampletxt) ^ FileReaderSample.java:30: ';' がありません。 } ^ エラー 6 個
(;´Д`)
>539 c:\\javabook\\sample.txtって入力するってことですよね?
>>542 // FileReader クラスを作成する.
FileReader f = new FileReader("c:\\javabook\\sample.txt");
//BufferedReaderオブジェクトを作成する
>546 ありがとうございます!ちゃんと表示されました。 ただ、コマンドラインから入力していたときはテキストファイルどおり、 改行されたかたちで表示されていたのですが、直接読み込ませた場合だと 改行されずに表示されてしまいました。 改行したかたちで表示させたいのですが、どうすればいいでしょうか? 重ねて質問で申し訳ないのですが、どうかお願いします。
すみません、なんでもないです。
いい風味・・・
550 :
デフォルトの名無しさん :03/12/06 22:46
ButtonやTextFieldなどのあるアプレットから Frameベースの別ウィンドウにアプレットのコンポーネントを 全部渡して、別ウィンドウを閉じたらそのコンポーネントを アプレットに戻して、初期状態にしようとしたところアプレットの レイアウトがメチャクチャになってしまいました。 コンポーネント管理はアプレットから独立したインスタンスにさせてる のですが、それでも上手くいきません。 この場合は、ウィンドウの作成破棄ごとに、コンポーネントのインスタンスを 全部作り直さないといけないのでしょうか?
簡単な手順を説明すると アプレットremoveAll→別ウィンドウのインスタンス作成→別ウィンドウadd→別ウィンドウshow 別ウィンドウremoveAll→アプレットadd→別ウィンドウdispose という感じです。 連続でスマソ。
552 :
デフォルトの名無しさん :03/12/07 00:18
初心者の本当に恥ずかしい質問でごめんなさい。 DOS上でのCLASSPATHの仕方がよくわかりません。 set CLASSPATH=%CLASSPATH%;. こんな感じじゃなかったでしたっけ? いくらやってもコンパイルエラー。 こんなバカな私に、回答してくれる方いらっしゃいますか?
>>552 あってるような気がする。
ちなみに下記の検索エンジンで「DOS CLASSPATH」ってのを検索するといろいろでてくるから、参考まで。
ttp://www.google.co.jp/ このスレを否定するわけではないが、ネットを検索すればいろいろ情報は転がってる。
そっちを調べてみてうまくいかないようなら、コンパイルのときのエラーメッセージをそのまま貼り付けて再度質問したほうがよいように思われます。
>>552 わけわかんなきゃ、javacを実行するときに -classpath . をいれておけばいいよ。
つーか、大体、環境変数CLASSPATHを使うのはSunも推奨していない。
話それるけど、set CLASSPATH=%CLASSPATH%;. が必要な状態って
それ以前にカレントディレクトリを含まないCLASSPATHが定義されていて
デフォルトのユーザクラスパス(カレントディレクトリ)が上書きされている
状態だよね。自分で設定して忘れているってのはのぞいて、未だにそんな
ことするインストーラってあるの? 昔はAdobeのフォトデラックスとかあったけど。
557 :
デフォルトの名無しさん :03/12/07 05:19
EJBって何でしょうか? 使う目的と言うか利用すればどういったことができるのでしょうか?
558 :
デフォルトの名無しさん :03/12/07 05:32
>>557 複雑で遅いウンコなサーバサイドアプリケーション(Webがインターフェースとは限られない)構築フレームワークの総称です
>>557 リレーショナルデータベースのデータをオブジェクトにマッピングするもの。
560 :
デフォルトの名無しさん :03/12/07 06:28
>>558 サーバー再度じゃなくても良いんじゃ?
>>559 それが目的なんだったらORマッピングのほうがお手軽。
>>561 意味不明
EJBは分散っていうのが売りやと思うけどちゃうか?
EJBの目的はSIerをだまくらかして、IBMやWeblogic、その他
EJBコンポーネント販売会社が儲かるためにある。
>> リレーショナルデータベースのデータをオブジェクトにマッピングするもの。 > それが目的なんだったらORマッピングのほうがお手軽。 バカなことを言ってることに気付け。
>>562 分散の他にも、トランザクション管理が楽なのがいいんじゃないの?
>>564 バカだった。
それが目的なんだったらORマッピングに特化したシンプルなもののほうがお手軽。
あってるか?
567 :
デフォルトの名無しさん :03/12/07 17:48
Swingを使って簡単なログ表示プログラムを作ってるんだが。 JTextPaneをJScrollPaneでラップして、JTextPaneにテキストを 追加する度にスクロールバーの位置を一番下にしようとしたら なぜか、テキスト1行分ぐらい上に来ちゃって、その度に スクロールバーをマウスで動かすハメになる んだけど、これって一般的な対処法とかある?
568 :
デフォルトの名無しさん :03/12/07 18:08
win2000でやっているんだけど本にWIN98でコンパイルの仕方しか載ってない。 WIN2000ではどうやってコンパイルすればいいですか?コマンドプロントで出力 しても駄目なんです。
>>568 「駄目なんです」がどういう状況を指すのかわからん。
何かエラーが出るのか?
打ったコマンドとソースと他にやった設定があれば書け。
情報が少なすぎでこれでは誰にも答えられんぞ。
570 :
デフォルトの名無しさん :03/12/08 00:32
>>562 まあ具体的な機能としては、分散だろうな。
しかし真の目的にはSIerを騙すことなのは間違いない
>>570 EnterpriseJavaBeansっていう名前がそもそもいんちきクサイな。
572 :
デフォルトの名無しさん :03/12/08 01:24
>>571 今ふと思ったんだが
javaBeansってコーヒー豆ももじったのか?
まだ初めてプログラムの勉強してるんですが本に載っているプログラムを丸暗記した方がいいですかね?
暗記じゃなくて片っ端から実際に打ち込め。
>>574 丸暗記するくらい打ち込め。
ただし、意味がわからないと丸暗記は難しい。
577 :
デフォルトの名無しさん :03/12/09 11:29
暗記する必要があるのは for (ほにゃ; ほにゃ; ほにゃ) { ほにゃにゃ; } とかいう流れだけで、ほにゃの中身まで暗記してもしょうがない。
わかりました。がんがります。
Javaてどこで入手すればいいのですか?
581 :
デフォルトの名無しさん :03/12/09 19:17
質問ですが、intの配列以外の 参照の仕方はどうするのでしょうか。
>>581 質問ですが、intの配列の
参照の仕方はどうするのでしょうか。
たとえば int data1[] = new int[4]; int data2 = 10; void test(int data[]) ↑この関数に、data1じゃ無くdata2を渡したいんですが… 渡せないでしょうか?
いくら、金を積んでも渡せねぇ ぁぁ、わたせねぇだ・・・
>>583 。
上はint[]型、下はint型とタイプがそもそも違い、
下のint型はプリミティブ型という特別な型として扱われるので
リファレンスとして渡すことはできないと思います。
不変オブジェクトでよければ、
Integer型などを使うか、あるいはintをラッパする独自の型を作ってはどうでしょうか。
ただ何の必要があって、
>>583 のようなことをしたいのか分からないので
これ以上は何とも言えませんが。
>>583 もっとやりたいことを具体的に書くべきだな。
君の知ってるやり方は、test の結果を data1 「に」渡すやり方で、
多分 test の結果を data2 「に」渡したいんじゃないか?
もしそうなら、
・void じゃなくて int 型のメソッドにすればいい。
・あるいは
>>585 曰くのラッパクラスを作る。
・あるいは int[] tmp = int[1]; を渡して data2 = tmp[0]; にする。
上から順に推奨される方法。ちなみに最後のは嫌われる。
587 :
デフォルトの名無しさん :03/12/09 23:15
質問失礼します。 テキストエリアの中身を TextArea ta=new TextArea(); FileWriter w=new FileWriter("test.txt"); w.write(ta.getText()); として出力しているのですが(直接関係の無いところは省略させてください)、 作成されたテキストファイル(メモ帳)では改行が↑のような文字(コピーすると改行されるので改行文字だと思うのですが) で表示されてしまいます。テキストエリアの改行をそのままメモ帳に出力するには どうすれば良いのでしょうか。よろしくお願いします。
>>587 改行コードには OS の違いなどにより、3種類ある。'\r', '\n', "\r\n" だ。
君は多分 Win なのだろうが、Win の改行コードは通常 "\r\n" と 2文字続く一方、
その例では \n のみが出力されているようである。
TextArea の値は String で表されている。
String が通常 "\n" で区切られているため、そのままファイルに出力されている。
いまどきのテキスト編集ソフトは、どの OS で作られたテキストも適切に改行してくれるが、
メモ帳はそうではないのであろう。どうしても改行コードを合わせたければ、
StringTokenizer st = new StringTokenizer(ta.getText(), "\n", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.equals("\n")) {
w.write("\r\n");
} else {
w.write(token);
}
}
こうしてみたらどうか。
590 :
デフォルトの名無しさん :03/12/09 23:37
すいません フィールドで String s = "s"; int i = 1; などはわかるけど ArrayList al Vector v; などのような書き方で 特定のクラス名の変数を取ってるのは何をしているのでしょうか?
Stringだってクラスだぞおい。特殊だが。 まあもっと入門書や入門サイトを落ち着いて読め。 というか実際に打ち込んでコンパイル・実行してみろ。 そのほうが理解が早い。
592 :
デフォルトの名無しさん :03/12/09 23:43
returnってよく分かりません public kiesan(int a, int b); return a*b; (適当に書いたのでコンパイルエラーは無視) とかなら計算した結果を返すってわかるのですが 特に計算しないものをreturnする意味がよく分かりません
>>592 ただの return は返すのではなく「返る」だと思えばいい。
「それではスタジオにお返ししまーーす」と同義。
594 :
デフォルトの名無しさん :03/12/10 00:06
>>593 でもreturnがなくても
帰るんじゃないの?
returnがない処理とある処理
ではメソッドで処理されたあとに
どう違ってくるのかがわかりません?
なければそのメソッドを呼んだ側は
呼び出したまんま処理がとまってしまうのでは?
>>594 ほとんど屁理屈ですな。
return を使えば中途抜けができる、という意味。
中途抜けをするための文を、最後に書くのも一切書かないのも同じこと。
597 :
デフォルトの名無しさん :03/12/10 23:13
Win2000にtomcatとIIS入れてJSPとASPって同居できます? ・・・なんか言い方わるいけど・・・
601 :
デフォルトの名無しさん :03/12/11 19:12
すいません、 今Tomcat3.2.3から4.1.29にVerを上げたのですが 今まで文字化けしなかった ― (全角ハイフンかな) だけが文字化けするようになってしまったのですが どのように補正すれば直るのでしょうか。
使用している文字コードは何? コンパイル時の文字コードは?
こいつらが問題だよな。 −〜¢£‖¬
>>601 ― が化ける?
− こっちのほうじゃなくて?
>>602 すいません情報が足らなさ過ぎでした
文字コードはShift_JISです
コンパイルはEclipseのデフォルトの設定なんですが・・・なんだかわからないです
ただ今調べたのですがメール送信をする個所までは
文字コードが 0x2015で来ているのですがメールを送信すると化けていることから
メール送信の時に化けているのはわかるのですが
そこでどのようにすればいいのかがわからないのです・・・
ttp://www.javadrive.jp/javamail/smtp/index.html あんま貼っちゃまずいんすがここのメールサンプルを使用しています
>605 Eclipseのデフォルト設定だと Shift_JISじゃなくてMS932じゃないかな。 Windowsだよね?
>>606 そうです、Windowsです
ついでに環境書き忘れてました
JDK1.4.1_05
TOMCAT4.1.29
です
>607 本当に化けてる文字は U+2015 ですか? もうひとつ。変わったのはTomcatのバージョンだけですか? Java2 SDKのバージョンも以前と変わっていませんか?
>>608 連続でレスなどしてすいません
まったくそのとおりでJDKも1.3→1.4.1に上げました
文字は
charAt で ― を捕まえて
System.out.println( (int)'―' );
結果:8213 → 16進数に変換で 2015
となるのですが間違ってますでしょうか
>>607 ・ファイル保存はWindows上でShift_JIS
・コンパイル時の文字エンコーディング指定はWindows-31J
・Servletのresponse.setContentType()やJSPの<%@ page contentType="・・・" %>
の文字エンコーディング指定はWindows-31J
でやってみれ。
JVM1.4.1からはShift_JISの扱いが変わって、全角ハイフンや全角にょろ(〜)の
マッピングが変更になった。
4.1.29ってHTTPヘッダを強制的にcharset=ISO-8859-1にしちゃうバグがあるんだろ? TOMCAT開発MLで問題になってるってどっかで見た記憶が。
>>607 そこらへんのバージョンからから文字コードの指定が厳しくなった
contenttypeでcharsetを指定してるならWindows-31Jにするべし。
C言語ある程度できる人にとってのJAVAのお勧めの参考書ないでつか? まぁ、あくまで学校で習った程度なんで線形リストとかツリー処理とかぐらいしかできんのでつが・・・
4.1.29 は日本語は無理。
>>611 >>615 ServletやJSPで不具合でる?
静的HTMLは日本語化けちゃうけど・・・・
>>616 なんで?
Cができる人なら勧めるけど。
619 :
デフォルトの名無しさん :03/12/12 15:44
Javaだからということではないのですが 配列と配列を足して新しい配列にするという 方法でいい方法ってないんでしょうか String [] str1 = new String[]{ "北", "東" }; String [] str2 = new String[]{ "南", "西" }; のような配列2つを1つの配列にまとめるような 綺麗なやり方ってどんなプログラムにすればいいのでしょうか String型みたいに+=で繋げるようなことできないでしょうか
>>619 あんまり綺麗な方法ってないなあ。
String[] target = new String[str1.length + str2.length];
System.arraycopy(str1, 0, target, 0, str1.length);
System.arraycopy(str2, 0, target, str1.length, str2.length);
>>620 おお、すごいですね
自分はどうしても毎回For文やらWhileで回すという
考えしか見えなかったので、ソースコード量が軽減
するだけでも嬉しいです
ありがとう
622 :
日立製作所 ◆twq9BhEA3g :03/12/12 18:23
興味有りage
623 :
デフォルトの名無しさん :03/12/12 19:04
625 :
デフォルトの名無しさん :03/12/12 23:20
Javaの変数名を取得する方法ってないでしょうか。 例えば String text01 = "aaa"; String text02 = "bbb"; とある場合、 if(hoge.equals(text01)) { ・・・・・ } スコープの中で"text01"という文字列が取得したいのです。 (Javascriptとのインタフェースの汎用化を考えてます) 詳しい方ご教授願えないでしょうか。
>>619 長さが変わる可能性があるのに配列なんか使うなよ。
ArrayList使え。そうすればArrayList#addAll()で解決。
628 :
デフォルトの名無しさん :03/12/13 00:06
ソースコードそのものをファイルI/Oで読み取るとか。
java.lang.reflect.Member#getName
あの〜。スレ違いだと思いますが求人で会社でJAVAを未経験で習うようですが 会社で未経験で実践して上達した方がはやいですか?
>>632 もともとここは、立てられた時点で削除されてもおかしくなかったような重複スレだから、
スレ違いかどうかは、もはやどうでもいいと個人的には思う。
あっちの正式なJava質問スレとは違って、ここの
>>1 には初心者のためのテンプレもないから、
このスレは人々を無駄に混乱させるだけで如何なる利益ももたらさないスレといえる。
故に削除人にスレストを掛けてもらうか、あるいは
このまま、
>>632 のような質問で1000を目指すのも一興かも知れない。
だがまあ、そんなことはともかくとして、
>>632 は
せめてもう少し分かりやすい日本語で質問を書いてくれるとありがたいのだが。
>>632 質問ネタがマ板ネタだな。
マ板で聞いて見れ。
しかしCマンセーCOBOLマンセーアセンブラマンセーなどアンチJavaな古っちい香具師ら馬鹿りだから気をつけれ
CMAGAZINE 2002/09月号のjava sound apiを使ったサンプルプログラムが上手くコンパイル出来ません。 WinXP JDK1.4.2 です。 コンパイルでは何もエラーが出ないのに、実行すると java.lang.NoClassDefFoundError: LinePlayer Exception in thread "main" と出ます・・・
637 :
デフォルトの名無しさん :03/12/13 16:44
638 :
デフォルトの名無しさん :03/12/14 22:15
mainメソッドって 参考書などはほぼ使用されていますが 実際、プログラム開発とかする時にはあまり使われているとは思えないのですが? 実際はみんなあんまり使わないの?
それはどういう意味なんだろ…
>>638 mainが無くてどうやってアプリケーション起動するんだ?
自分で作る場合、既に用意されている場合、形態はいろいろだがmainは必ずあるだろう。
641 :
デフォルトの名無しさん :03/12/15 01:19
メソッド内の 変数と引数の変数 ではメソッド内における変数の位置的には同じ位置にいるのでしょうか? それとも変数の優先順位とかあるのでしょうか? つまり static int keisan(int a,int b){ int c; 〜 } とあれば そのメソッドの変数の位置関係は int a; int b; int c; と書かれていると同じでしょうか?
643 :
デフォルトの名無しさん :03/12/15 01:25
いや変数に優先順位というのがあるのかないのかふと思っただけ
645 :
デフォルトの名無しさん :03/12/15 01:36
優先順位は無視 static int keisan(int a,int b){ int c; 〜 } とあれば処理するマシンがこのソースを読み込んだときに int a; int b; int c; 変数としては書かれているのと同じなの? それとも変数と引数の中の変数は 同じ変数でも全く別物として認識するの?
>>645 「同じ」と「別物」の判断基準がわからん。
>>645 同じだよ
そのメソッドでは変数として引数内で宣言された変数も
中で宣言された変数も同じ変数として認識する
だから
static int keisan(int a,int b){
int b;
は同じ変数宣言を二度することになるからNGになる
>>646 もっと読解能力を身につけましょう
>>647 分解能が低くて仮引数宣言と変数宣言がごっちゃなら、その解釈もありだな。
649 :
デフォルトの名無しさん :03/12/15 10:46
>>636 Cマガ読んでる香具師多いな。
おい、お前ら
JavaのためだけにCマガ読んでる香具師いるか?
>>645 関数ってなんだかわかってる?
数学やったことあるならわかると思うんだけど。
特に、多変数関数とかわかる?
>>645 は Java に参照渡しがあると勘違いしている悪寒。
>とあれば処理するマシンがこのソースを読み込んだときに この辺もイマイチ理解していないことを露呈しているな。 コンパイラがソースを、なのか? VM がバイトコードを、なのか? それとも AT互換機がソースを、と本気で誤解しているのか。
>>640 >
>>638 > 形態はいろいろだがmainは必ずあるだろう。
ほとんど無いだろ。
Webアプリケーションに main は不要。Jakartaで配布されているものも main なんか
無いに等しい(当たり前だが)。
このスレみている香具師でCマガ読んでる香具師は少ないのか。
>>640 Appletも自力でmain書かずに動く。
EJBも。
あと、TemplateMethodパターンでmain()をテンプレートに
した場合はかかなくて済むとかw
まぁ、
>>638 がとんちんかんなコトいってることには間違いない
658 :
デフォルトの名無しさん :03/12/15 21:57
デバッグって具体的な作業として何をするのでしょうか? 「ログとかを見て値がどこま通ってるか確認する」のはわかりますが その他に「デバッグ」でバグを取るためにどういった事をするのでしょうか?
>>658 バグが発見されたとして、そのバグを退治するのがデバッグ。
バグを取るためには
・バグの現象を特定する
・バグの原因を特定する
・バグの原因を取り除く
という作業をする。
初心者は、特に、最初の「バグの現象を特定する」をやらない。
「よくわからないけど、うまく表示されない」
とかな。
バグの現象が特定できれば、解決できたも同然。
だから、この板では、「うまく動かない」という質問で、どう「うまく動かない」のか説明しろとキツくツッコまれるわけだ。
660 :
デフォルトの名無しさん :03/12/15 22:47
>>659 その説明はよくわかるけど
結局はデバッグ作業でバグを特定するために
「ログとかを見て値がどこま通ってるか確認する」
以外にどういった方法があるのかと言いたいのだろ?
CマガはJXTAのために買って読んでる。
662 :
デフォルトの名無しさん :03/12/16 15:32
>>662 資格手当てなんか期待するな。
まぁ、資格一般のことだけど、「ないよりは有利」程度
ほかの条件が優れてればそっちが優先される。
664 :
デフォルトの名無しさん :03/12/16 17:53
はじめまして。 JDK1.3で、Webで動かすJAVAアプレットを最近やり始めた者です。 (1.4はDLしてもなぜかインストーラが止まりました…) JAVA関連ページを検索しては読んでは、勉強してます。 いわゆる、お絵描き掲示板(の、お絵描きアプレット) らしきものを作ってるんですが、壁にぶつかってしまいました。 import java.awt.*; import java.awt.event.*; import java.applet.*; public class program1 extends Applet{ Graphics graphics; Image image; int mx,my; public void init(){ addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ mx = e.getX(); my = e.getY(); image = getImage(getDocumentBase(), "nanashi.png"); graphics.drawImage(image, mx, my, this); } }); } }
だいぶ端折ってますけど ようするに、マウスをクリックした座標にnanashi.pngを表示させたいわけです。 ですが、javacでコンパイルすると program1.java:14 シンボルを解釈処理できません。 シンボル: メソッド drawImage (java.awt.Image,int,int,<anoryumous java.awt.event.MouseAdapter>) 位置 : java.awt.Graphics の クラス graphics.drawImage(image, mx, my, this); と、エラーが出てきてしまいます。 initメソッドの中ではdrawImageメソッドは使えないのでしょうか?
graphics.drawImage(image, mx, my, this); ↑この呼び出しの最後の this ってのは、program1 クラスのインスタンスじゃなくて MouseAdapter を拡張している無名クラスのインスタンスを指すんじゃないか?
667 :
デフォルトの名無しさん :03/12/16 23:09
パッケージのjp.co〜の上のディレクトリの設定ってどこでやっているのでしょうか? サーバのフォルダには例えば c\〜\〜\co\jp\〜 と言う風にCドライブからcoの上の階層も存在していると思うのですが
668 :
デフォルトの名無しさん :03/12/16 23:16
質問です 引数の(string s)や(int i)などは 文字列や数値などを代入ということはわかるのですが たまに(classA ca)のように実際使っているクラスなどを引数にしている物があるのですが これの意味がわかりません 教えてください
>>668 Stringは、クラスだよ?
ならば、method(ClassA ca)は、method(String s)と同じことさね。
670 :
デフォルトの名無しさん :03/12/16 23:38
>>669 ありがとうございます
両方とも文字列を代入ってこと?
では、ある時はString、ある時は自分で作ったクラスとか
使い分けする理由って何でしょうか?
>>670 あなたがなにが分かっていないか、私にはわからないから
なにを説明すれはいいのかわからないが。
Javaにおいて、intやcharなどの一部の型は、プリミティブ型と言われる特殊なものでね。
Stringなどの参照によってあらわされるクラスとは、色々と違いがある。
…って、そんなことを質問しているようではないしなあ。
なにが、わからんの?
>両方とも文字列を代入ってこと?
とりあえず、それに対する答えはNoだ。
>では、ある時はString、ある時は自分で作ったクラスとか
>使い分けする理由って何でしょうか?
んー、あるときはStringが必要で、あるときは自分で作ったクラスが必要だから。
というような回答では、きっと納得しないんだろうなあ。
String s は、文字列クラスへの参照変数 ClassA ca は、ClassAクラスへの参照変数
673 :
デフォルトの名無しさん :03/12/17 00:39
doGetとdoPostの違いってなんでしょうか?
WebブラウザがWebサーバにデータを送る方法には、2種類あって、 ひとつは、GET、ひとつはPOST。 doGet, doPostもこれに対応したもの。 ブラウザがGETでデータをサーバに送信したときには、 サーバ側のJ2EEはdoGetメソッドを起動して、送られてきたデータを処理するし、 ブラウザがPOSTデータをサーバに送信すれば、 サーバ側のJ2EEはdoPostメソッドを起動して、送られてきたデータを処理する。 そんな感じ。
>>674 いまいち。
HTTPリクエストのメソッドは2種類じゃなくて7種類。
doGetはGET、doPostはPOSTのリクエスト時に実行される。
「サーバ側のJ2EE」・・・意味不明だな
サーバー側で動いてるJ2EEってことじゃないの?
>>667 逆。パスの通ってるディレクトリから jp\co\hogehoge\myproject\ 云々と続く。
jar (zip) に突っ込むときも同様。
>>676 クライアントで J2EE が動いてても意味なし、二重表現的で冗長ってことが言いたいのでは。
「サーブレットコンテナ」が適切か 初心者向けには「サーバ側」
678 :
デフォルトの名無しさん :03/12/17 21:23
public int Class1{ int a = 4; int b = 8; メソッド1 return 〜; } public int Class2 extends Class1{ int b = 10; int c = 12; メソッド2 return 〜; } とあった時、 public int Class2{ int a = 4; int b = 8; int c = 12; メソッド1 メソッド2 return 〜; } と書いてるのとイコールでしょうか?
違います。
680 :
デフォルトの名無しさん :03/12/17 22:13
>>674 というかなんでWebサーバにデータを送るのに二種類もあるのでしょうか?
というかそれぞれの処理でPOSTとGETを使い分けているのもいまいちよくわかりません
>>678 どっちもコンパイル時にエラーになる、という意味では同じ。
682 :
デフォルトの名無しさん :03/12/17 22:42
字句解析の説明してるとき、トークンって何?って聞かれたのですが、 なんて説明すればいいのでしょうか?
例えば英文のthis is a pen. を isで分けたらthis と a pen. が それぞれトークンですって具体的に説明すれば?
684 :
初心者です :03/12/17 23:02
同一ディレクトリに複数のJAVAファイル(myGraphics.java,myConsole.java, H.java, Simulation.java,PumaKine.javaなど20個)があり、それらをまとめてコンパイル したいのですが。mainを含むファイル(LISP.java)は、前述の複数のJAVAファイルの classをimportする形で使っています。また、複数のファイルも互いに他のclassを 利用しています。
685 :
デフォルトの名無しさん :03/12/17 23:04
staticの存在意義って何でしょうか? なぜstaticがあるのとないのと使い分けるのでしょうか?
686 :
初心者です :03/12/17 23:05
<Simulation.java> import java.awt.*; import java.io.*; public class Simulation extends PumaKine { PumaKine pk= new PumaKine(); myGraphics gr= new myGraphics(); (以下略) <myGraphics.java> import java.awt.*; import java.awt.event.*; import myConsole; import H; public class myGraphics extends Frame { (以下略)
687 :
初心者です :03/12/17 23:05
<LISP.java> import java.io.*; public class LISP extends EVAL { myConsole CS= new myConsole("main"); myGraphics gr= new myGraphics(); ERROR ee= new ERROR(); READ rd= new READ(); PRINT pp= new PRINT(); PumaKine pk= new PumaKine(); EVAL ev= new EVAL(); Simulation sm= new Simulation(); (中略) /* main */ public static void main (String args[]) throws IOException { LISP lp= new LISP(); ERROR ee= new ERROR(); CELLP arg= new CELLP(lp._CELL); EVAL ev= new EVAL(); READ rd= new READ(); myConsole cs= new myConsole("New Robot Lisp"); Simulation sm= new Simulation(); int i,j; double xx; (以下略)
688 :
初心者です :03/12/17 23:06
といった感じになっています。 LISP.java(mainを含むファイル)をコンパイルすると以下のようなerror が出てしまいます。 PumaKine.java:7: '.' がありません。 import myGraphics; ^ .\myGraphics.java:4: '.' がありません。 import myConsole; ^ .\myGraphics.java:5: '.' がありません。 import H; ^ .\myConsole.java:4: '.' がありません。 import H; ^ 注: 一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。 注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。 エラー 4 個 どのように解決したら良いでしょうか?
689 :
デフォルトの名無しさん :03/12/17 23:18
JavaTIPSってなんでしょうか?
>>684 LISP.javaも同一ディレクトリにありますか?
>>685 便利だからです。
・静的な関数、変数、クラスは実行開始のとき1回だけ生成される(資源節約)
・staticで宣言することにより、同一クラス内の動的スロットに依存しないと明示できる
・クラスSystemのように大域的に扱える
ただしstatic関数を濫用しないこと
クラスをsingleton(例Runtime)として作ればstatic関数を無せます。
System.out.println("aaa");とかのSystemはstaticで定義されていることにより
大域的な使い方ができます。
>>688 1.3.x用に書かれたソースっぽい。
J2SDK 1.3.1でコンパイルしてみたら?
692 :
デフォルトの名無しさん :03/12/17 23:47
>>684 同じディレクトリで
javac *.javaとやればまとめてコンパイルできる。
ほかのディレクトリにまたがるようなやつの
コンパイルには
Antを使うことをお勧めする。
あとそのときはpackage化もしとくのがお勧め。
>>690 ちょこちょこ気になるのだが。。。
> ・静的な関数、変数、クラスは実行開始のとき1回だけ生成される(資源節約)
関数 -> メソッド
実行開始のとき -> 必要になったとき
1回だけ生成 -> 1回だけロード
> System.out.println("aaa");とかのSystemはstaticで定義されていることにより
Systemはstatic -> System#outはstatic
>>680 POSTはhttpdに対してデータを「送信する」ために、
一方のGETのほうは、httpdからデータを「取得する」ために。
POSTは、手紙を入れるあのポストと同じ。
つまり手紙などを投函する、データを送信するという意味。
GETは、文字通りhttpdからデータを、
つまりはファイルなどをゲットするためのもの。
たとえば、httpdが持つindex.htmlのファイルが欲しければ、
GET方式で「index.htmlのファイルをくだちゃい」というリクエストを送るし。
httpdに対して、まとまった量のデータ、
たとえばホームページの感想やら、アンケートへの回答など、
そういった、まとまった量のデータを送りたいときには、
そのデータをPOST方式で送信。
GET方式でのリクエストはファイルをゲットする以外にも、
辞書サイトや、検索エンジンなどで見られるように、
検索キーとかそういったちょっとした短いデータを送信するのにも使われるけどね。
まあ、なにか情報をゲットするために使われるのがGETで、
情報を送信するのに使うのがPOSTたと覚えておけばいいとおもうよ。
>>675 あーすまそ。おれJ2EEはよく知らんのよ。
Javaではリクエストを処理するメソッドが七つもあるん?
訂正さんくす。
695 :
デフォルトの名無しさん :03/12/18 01:24
javaでボタン押下時などにメールを投げる処理 をしたいのですが、どうすればいいのでしょうか? どういう処理が必要とか全くわからないのですが もしそういうサイトとかあれば教えてください
>>695 JavaMail APIを使ってみてはどうかな?
そもそも曖昧な質問なのでどう答えればいいのかわかからんが。
697 :
デフォルトの名無しさん :03/12/18 01:59
>>696 ご回答ありがとうございます
たとえばあるシステムでボタンを押下したら
自動的にあるメールが特定の相手先に飛ぶシステムって結構多いと思うのですが
その場合、今言われたJavaMail APIを使ってるケースが多いのでしょうか?
それとも違うやり方とかあるのでしょうか?
>>697 サーバサイドの話?
それとも非サーバサイドの話?
>>695 の技術力や知識は如何ほど?
ボタンが押されたら何かの処理を始めるといったことはできる?
それによって教えるサイトも違ってくるようにおもうのだが。
699 :
初心者です :03/12/18 08:48
>>690 はい、あります。
>>691 ありがとうございます。J2SDK 1.3.1でコンパイルできました。
しかし、動作がおかしいです。Macでは動いていたのに。
>>692 便利そうですね。使わせてもらいます。
700 :
デフォルトの名無しさん :03/12/18 09:11
>>699 jDK1.4でも、javacのオプションをきちんと指定すれば
1.3用のソースコードはコンパイル通りますよ。
>>694 J2EEに限ってHTTPプロトコルのメソッドが7つあると思うのか?
HTTP1.1を勉強しる。
あ、HTTP1.1ではメソッドが10ある
704 :
デフォルトの名無しさん :03/12/18 10:43
>>703 GET,HEAD,POST,PUT,DELETE,CONNECT,TRACE
あとなんだっけ?
705 :
デフォルトの名無しさん :03/12/18 11:00
OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT これくらいしか思い出せん。全部集めると神竜が願いをかなえてくれるんだよね
10種類もそれぞれどう使い分けるのでしょうか。 POSTとGETの違いもまだよくわかりません。
708 :
デフォルトの名無しさん :03/12/18 13:11
>>699 >>700 http://java.sun.com/j2se/1.4/ja/compatibility.html 8. J2SE 1.4.0 の Javac バイトコードコンパイラは、Java 言語仕様への準拠を
強制する点で、以前のバージョンよりも厳密になっています。この新たなコン
パイラでは、Java 言語仕様に厳密に準拠していない既存コードは (たとえ以
前のバージョンのコンパイラでコンパイルできたとしても) コンパイルできません。
J2SE 1.4.0 コンパイラの厳密性が増したことを示す例を、次にいくつか示します。
コンパイラは、名前のないネームスペースから型をインポートする import 文を
拒否するようになりました。以前のバージョンのコンパイラは、こうした import
宣言を、理論的には言語で許可されていなくても (import 句に現れる型名が
スコープ内に存在しないため)、 受け入れていました。仕様の中では、import 文
の中に単純名を含めることはできないこと、また名前のないネームスペースから
インポートを行うことはできないことが明示されています。
要約すると、次の構文は有効ではなくなりました。
import SimpleName;
また、名前のないネームスペースからネストしたクラスをインポートする次の文も、
有効ではなくなりました。
import ClassInUnnamedNamespace.Nested;
コード内でこうした問題を修正するには、すべてのクラスを、名前のないネーム
スペースから名前付きのネームスペースへ移動する必要があります。
709 :
デフォルトの名無しさん :03/12/18 13:14
>>707 …いや
>>702 はJ2EEにも対応するメソッドは当然七つあると言っているのだとおもうが。
まあたくさんあってもCONNECTは予約、
DLETEも大概、使われることはないだろうけれど。
>>706 POST はクライアント側からファイル転送できる、GET はできない。
君には当面それで十分かもしれない。
714 :
デフォルトの名無しさん :03/12/18 21:13
あるファイルの中に書かれている文字列を読み込んで その値をメソッドの引数に代入して それってfilereaderで読み込んで… しか方法がないのでしょうか? たとえば メソッド(String a,String b); の引数に あるテキストの一行目の文字列と二行目の文字列を代入したいのですが… 教えてください
716 :
デフォルトの名無しさん :03/12/18 21:57
>>715 不満はないけど
方法はそれしかないの?
やり方を知ってても損はないと思って
>>716 Perl とかなら何かあるかも知れんけど
Java では定石どおりやりなさい
718 :
デフォルトの名無しさん :03/12/19 00:01
Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); いまいちよく分からないのですが こういう処理があった場合 具体的には引数の(props, null)のpropsには インスタンス化されたPropertiesの何が入るのでしょうか? Propertiesはこの段階ではインスタンス化されただけで 具体的なデータは何もないと思うのですが…
>>718 その通り。場合によっては、プロパティ名とプロパティ値を入れておいたもの
を渡すこと(例えばエンコード関係とかロケール関係とか)で、そのプロパティ
値を利用したインスタンスを返してもらうこともある、ということ。
デフォルトのプロパティ値で使うとか、サンプル用のテヌキとからなら、空
Propertiesでも充分、つうことだろね。
FactoryMethodパターンで、引数にインスタンス初期化用の属性セット をコレクションで渡すってのは、J2EEの世界でありがちなやりかたですの。
コンストラクタで何かやってるかもしんねえだろが
722 :
デフォルトの名無しさん :03/12/19 00:20
>>719-720 ということは
Propertiesに書かれている中味によって
getDefaultInstanceの引数に渡す値が変わってくるって事?
もっといえば
Propertiesに書かれている設定値などを引き渡すって事?
追加されれば、わたす数も多くなる?
>>721 Propertiesのデフォルトコンストラクタは、単なる空HashTable作成ですお。
>>722 そゆことですね。Session#getDefaultInstance()が、どのような
プロパティを受け付けるのかはしらんけど。
>>723 >>718 のPropertiesクラスが、java.util.Propertiesである保証はどこにもないだろう。
>>723 ふと思ったが
Session.getDefaultInstance()
Session#getDefaultInstance()
ではどう違うんだ?
>>725 > Session.getDefaultInstance()
Java のメソッド呼び出し式。
> Session#getDefaultInstance()
javadoc の @see とか {@link } でのリンクの書き方。
>>724 そういうことかい、スマヌ。
>>725 JavaDocとかでインスタンスメソッド表記する時に#つかうのよ。
クラスメソドにには使わんらしいね。ということで、単なるマチガイ
です。ゴメンヌ。
>>727 > クラスメソドにには使わんらしいね。ということで、単なるマチガイ
クラスメソッドもフィールドもコンストラクタも全部 # 使いますが…
ウエーンイジメルー(ノД`)
>>729 (ノД`)ε`*)チュ
(ノД`)ヾ(゚∀゚*)ヨシヨシ
731 :
デフォルトの名無しさん :03/12/19 08:12
732 :
デフォルトの名無しさん :03/12/19 22:29
サンプルソースなどで import java.util.*; try{ java.util.Properties pr = new Properties(); ってあるソースをよく見かけるのですが java.util.〜をつけている意味がよく分かりません
たしかに、importしているのなら 大抵の場合はjava.util.Propertiesなどと書かなくても良さそうだね どこにあったの?そのソース?
734 :
デフォルトの名無しさん :03/12/20 00:36
いっしょっしょ。
>>732 無視しろ
もしくはそのソースと同じパッケージに同名のPropertiesというクラスがあるのかもしれない
サーブレットの話で申し訳ないのですがhtmlより servlet?command=open と言う情報がサーブレットに来てString型に変換した後 if文で条件分岐させたいのですが、このString型が文字と以下のようにしても条件一致してくれません どのようにすれば良いのでしょうか? String str = request.getParameter("command"); if(str == "open") System.out.println(str);
>>737 サーブレットの話ではない。
== ではなくてequalsメソッドで比較汁
>>738 if(str.equals("open"))に変えると無事比較できました
ありがとうございました
ほんと最近javaに手を出し始めた初心者です。 あるディレクトリの配下にあるディレクトリやファイルをUNIXのfindコマンドのように 再帰的に出力する方法を考えているのですがよりコストの少ない方法での 書き方をアドバイスもらえませんでしょうか。。 よろしくお願いします。
Runtime#exec( "find foo -name bar" ); ってか横着せずに File#listFiles と File#getName で書いてみてください。 再起ループで 5 行程度。
>>740 不格好でも自分で作って書き込んでみたら、
それを添削してくれる親切なひともいるかもね
744 :
デフォルトの名無しさん :03/12/21 21:33
javaでソートについて教えてください Vectorや配列などで取得したデータを 英数字の小さい順に並び替えたいのですが どうすればいいのでしょうか? 1,a,3,6,b,64,5,645,zz,6,aa,45 ↓ 1,3,5,6,6,45,64,645,a,aa,b,zz みたいにです
>>744 1,3,45,5,6,64,645,a,aa,b,zz じゃなくて?
>>745 いや数字の小さい順です
それと、できれば6は複数あれば複数表示したいです
無理ならば一つだけ表示でもかまいません
>>746 1, 1a, 2, 11b はどういう順でならべたい?
・数値に変換できる物とできない物に分ける
・数値は数値で、そうでないもの(文字列)はそうでないものでソート
・数値のケツにそうでないものを足す
まとめてソートしようと思ったら、Stringクラスの場合
>>745 のように辞書式に比較しちゃうから
>>744 のようにはならない。
>>747 基本的に1→1a→1z→2
の順番でお願いします
>>744 java.util.Comparator を適切に実装して
java.util.Arrays とか java.util.Collections に突っ込んで整列させるのが良いのでは?
Arrays#sort を使って好きなように比較メソッドを実装した比較オブジェクトを渡せ。
>>749 ソートルールは全部列挙してからやったほうが早いよ。
>>748 きっと、
a1, a2, a10
の順でソートしたいっていうに違いない。
そんな無茶な もう自分でクラス作れ。比較用の。 java.util.Comparator実装してcompareToメソッドを好きに書け。
>>754 結構面倒だな。
a1a はどうするんんだとか、悩んだらきりがない。
>>757 みたいなやつが、仕様書もろくに読まずに勝手な実装して
最後になってバグ発覚して大騒ぎになる原因を作るんだろうなあ。
compareToとcompareを間違えてるってことでしょ
760 :
デフォルトの名無しさん :03/12/29 18:51
a
>>755 正規表現を使えばそんなに難しくはないかと。速いロジックには
なりそうにもないけど。
>>761 ほんとか? じゃ、正規表現でちょちょっと書いてみてくれ。
763 :
デフォルトの名無しさん :03/12/30 16:22
結果として同じ処理でも、 ソースの書き方がいっぱいあって疲れるなぁ それが一番最適か考えなきゃな・・・
正規表現のパターンが一定ならJavaCCを使うという手があるかも
>>763 近代プログラミングの基本。最初は動けばOK。
766 :
デフォルトの名無しさん :04/01/14 18:51
アプレットの勉強をし始めた所なんですが、以下のプログラムを appletviewer で実行して メニューから「中止」、「再起動」、「中止」・・・と繰り返していると、どんどん速度が速くなっていくんですが、理由が分かりません。 本当に初心者なんでとんでもない事をしているのかも知れませんが、よろしくお願いします。 --- public class Skelton extends Applet implements Runnable { private Thread runner_; private int x; public void init() { x = 0; } public void start() { if(runner_ == null) runner_ = new Thread(this); runner_.start(); } public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0, 0, 100, 100); g.setColor(Color.black); g.drawString("x : " + x, 10, 20); } public void stop() { runner_ = null; } public void run() { while(true) { ++x; repaint(); try { Thread.sleep(100); } catch(Exception e) {} } } }
runner_はstartしてstopしてないよ。 Threadが増えてるから速くなっていってるように見えるんでしょ。
>>767 stop() は推奨されていない。
って聞いていたんで使ってはいけないものなのかと思ってました。
ありがとうございました!
>>769 参考になりました。
本当にJava触り始めた所で何も分かってなかったです。
>>770 なんとなく止まったように見えてたんでいいのかなと思ってました。
やっぱりデバッガとかいりますよね。
gdbみたいなものってJavaにもあるんですかね。
調べてみます。
>>771 デバッガあっても、マルチスレッドモノは、むずかしいぞ。
っていうか、EclipseかNetBeans使え。
>>772 Eclipseとかって重たくないですか?
少し触って見たんですが、重たくて耐えれませんでした。
後、愛用のエディタがvimなんでどうもああいうIDEって好きになれないんですよ。
IDEとか使ってボタン一発でビルドとかは簡単で良いんでしょうが、
antファイルの書き方とか自分なりに覚えていきたいんで、
今の所はコマンドラインで行こうと思ってます。
もう少し慣れてきたらeclipseなどを使おうとは思います。
助言ありがとうございます。
774 :
デフォルトの名無しさん :04/01/17 01:10
>>773 Eclipse でもガンガン Ant 呼び出すぞ。
あと vi プラグイン使え。そりからメモリ増やせ。
775 :
デフォルトの名無しさん :04/01/17 02:27
.javaでファイルを作っても .java.txtになってしまうのですがどうしたら良いのでしょう?
>>775 とりあえず、googleという検索エンジンから、"拡張子"というキーワードを勉強してください。
はじめまして java初心者です。 質問なのですが、JavaScriptにてテキスト出力する際に、 記述するテキストの改行を許す書き方というのはあるのでしょうか? 例えば document.write('test.text'); を document.write('test. text'); とするとエラーになってしまいます。 長文を表示させたい場合、改行がないと辛いのです。 どうすればいいのでしょうか? よろしくお願いします。
>>777 JavaScript の質問は専用スレで。
JavaScriptとJavaは違う。 Javascript は Web 制作板
失礼しました 出直してきます。
J2SE1.4.2でJavaAppletを作って他の人に動作確認をしてもらったところ、動かないと言われました(灰色が表示されるだけとのこと)。 自分ではちゃんと動くことを確認したので、Javaの文法やHTMLに問題があるわけではなさそうです。 1.4.2で作った場合はそれ以上のバージョンを持っていないと動かないのでしょうか? もしそうだとしたら、こちらのJavaのバージョンを下げるしか解決法はありませんか?
age忘れ
Javaのバージョンを下げてみたところ動いたようです。 失礼しました。
public class Wa{ public static void main(String args[]){ double a; a=0.33+0.35; System.out.print(a); } } で出力結果が0.6799999999999999になるのはなぜですか?
>784 細かいことは気にするな。
>>787 浮動小数点の計算で誤差が出るなんて初めて知りました。
ありがとうございます。
789 :
デフォルトの名無しさん :04/01/18 22:54
SQLを表示する時 JSPで枠だけ実装して 実際のSQLはjavaソースでいろんなパターンのSQLをいくつか実装させて その時の内容に応じてそれぞれの指定のSQLを呼び出して表示させようとした時 どうすればいいのでしょうか? 参考書やGoogleなどをみると JSPに直接SQLが書かれていたりしているのがほとんどで JSPとSQLの部分が書かれたソースを分散させて、JSP側でSQLを呼び出しているサンプルはありません 実際こういった分散は出来ないのでしょうか?
>>789 MVC(Model View Controller) もしくは DAO(Data Access Object)
を、ぐぐってくれ・・・(書き込み押してしまった・・)
>>790 MVCなどのように分散して使うというのはわかるのですが
サンプルというかJSPからの呼び出し型とか、わからないです
もしサンプルなどあれば教えてください
Googleなど見てもJSPに直接書かれたりしてるので
ちょうどいいサンプルはないので・・・
>>792 自分で作った、SQL を用いる(HTMLタグは一切登場しない)クラスが、
JSP から解決できればいいだけ。
そしたら <% %> 内でインスタンス生成してメソッド呼ぶとか、
static メソッド呼ぶとか。
これはアプリケーションの設計の問題であって SQL とは一切関係ない。
ググりのキーワードに SQL 入れても無駄。
すいません。 めちゃくちゃ初歩的なことなんでしょうけどよく分かりません。 メモ帳でa.javaというファイルをつくっても、 a.java.txtとなってしまってプログラムを実行できません。 本で調べたらマイコンピューターかエクスプローラーでフォルダを開いて.txtを 削除しなさいと書いてあるのですが。よく分かりません。
>>794 > a.java.txtとなってしまってプログラムを実行できません。
メモ帳だったら、"a.java" みたいにダブルクォーテーションで括って保存するとか。
メモ帳以外のエディタ使うとか。
>>794 保存するときにファイルの種類をテキスト文章ではなく、
すべてのファイルを選択してa.javaという名前で保存
>>795 ,796
”でくくる方法で出来ました!
ファイルの種類を変更してもだめだったのですが。
(知らずに変なことしてるからか?)
いずれにしても、ありがとうございました。
>>794 プログラムを作るのならWindowsについてもよく知っておくべき。
「拡張子」は初歩の初歩だし。
いくら初心者スレとはいえ、こんなのがプログラム組もうとしてるのか・・・ Java初心者じゃなくてパソコン初心者のレベルだろ?これ・・・
順番を間違えたな、確実に・・・ 今度は「pathが通りません!」てくる悪寒・・・
プログラム未満,,,,,,
とりあえずJavaの本を一冊読み終えた しかし数列の和を計算したり線をひっぱったり図形をかけるようになっただけで ゲームをつくるとなると何すればいいんだか全くわからない。 これからどうしたらいいんだろう
簡単なものから作ればいい
ゲームといってもピンキリだから何を作りたいのかによる。 ゲーム機ばりのグラフィックあふれるゲームを作りたいのなら Java以前にゲームプログラミングの知識が必要なので書籍を 当たってくれ。数は少ないがいくつか出ているはず。 そこまでは求めず、とりあえずゲームっぽいアプリを作りたい というレベルならWeb検索すればサンプルはいくらでもある。 あとはまねするところからはじめてみよう。
>>803 ゲーム(スタンドアローンな)だったらJAVAじゃないほうが(ry
iアプリ程度作れればイイと思っています。 Javaとかi-appliの仕様書というか資料にも有益な事が書いてありました 資料を読みまることも大事だなと思いました というより資料読まないことには何もわからないですよね
809 :
デフォルトの名無しさん :04/01/24 03:58
親クラスと子クラスの関係が継承関係である場合 親と子の中に同じメソッドTestMethodがある場合 親クラスのTestmethodを呼び出そうとしたら オーバーライドの関係で子クラスのメソッドの処理が実行されるのでしょうか? 実際ためしたらそうなったのですが・・
810 :
デフォルトの名無しさん :04/01/24 04:25
javaの処理で特定のファイルを開くにはどのような記述が必要でしょうか? 例えばメインを実行したら、指定のexcelファイルなどを開きたい時にはどうすればいいのでしょうか?
>>810 java.io.FileInputStreamとか
812 :
デフォルトの名無しさん :04/01/24 11:43
>808 自分のHPの宣伝するなよ。
>>809 もちろん。
class らーめん {int get価格(return 500;)}
class チャーシューらーめん extends ラーメン {int get価格(return 700;)}
class 玉子らーめん extends ラーメン {int get価格(return 600;)}
ラーメン a = new ラーメン();
ラーメン b = new チャーシューメン();
ラーメン c = new 玉子ラーメン();
で食ったあとラーメン型を受け取り、価格を表示する。
public void ごちそうさま(ラーメン x) {
System.out.println( x.get価格() );
}
この時、実際はどのラーメンかは分からなくても get価格
すれば価格は分かる。チャーシューメン食ったのに
親の 500 円返されたらおかしいだろ。
814 :
デフォルトの名無しさん :04/01/24 23:37
CSVファイルを扱う時に 各行の四つ目のカンマの区切りに入ってるデータを抽出して出力したい場合は どうすればいいのでしょうか?
オブジェクト指向ってよくわかんねえや
>>StringTokenizer使って、取り出せば? もっといいやり方あるのかな?
>>814 >>816 Stirng s = "aaa,bbb,ccc";
String[] sa = s.split(",");
↑
sa[0] = "aaa";
sa[1] = "bbb";
sa[2] = "ccc";
Java初心者はまずはじめに何を作ればいいんですか?
>>818 まずはEJBの勉強だな
それからAntの使い方も忘れなく
>>817 1.3以前では使えないことにさえ注意すれば、それが一番楽だな。
>>821 初心者に EJB みたいなマイナーなもんすすめんな。
あんた、自分のまわりが EJB 当たり前だからって世間はそうではない。
825 :
デフォルトの名無しさん :04/01/26 23:52
for(int i=0 ;i < 100;i++ ){ h.put(i, i+"個目"); } のようにfor文で回して 1つ目のi引数に順番に入れたいのですが これがコンパイルが通りません キャストとかでStringにしてもうまいこといきません どうすればいいのでしょうか?
826 :
デフォルトの名無しさん :04/01/26 23:54
>>825 言い忘れましたが
HashMap h = new HashMap();
です
すいません質問変えます HashMap hm = new HashMap(); int count = 0; while ((s = br.readLine()) != null) { count++; String[] sa = s.split(" "); hm.put(count, sa[0]); } とした時に hm.put引数のcountを文字列(String)として認識させたいのですが nullで取得したりしてうまいこといきません どうすればいいか教えてください
i は int。これはプリミティブ型。値を表すだけで、実体は無い。 Map で使えるのは Object か、そのサブクラスを型に持つ、インスタンス。 つまり実体のあるもの。 数から実体を作りたかったら Number のサブクラスを使う。例えば Integer。 h.put(new Integer(i), i + "個目"); でなければ String に変換する。君が value の方に使ってるのと同じ方法。 h.put("" + i, i + "個目"); String も Object のサブクラスだから Map で使える。 プリミティブ型はプリミティブ型にしかキャストできない。(ex. int → double) また、オブジェクト型のキャストとプリミティブ型のキャストではまるで意味が違う。
829 :
デフォルトの名無しさん :04/01/27 02:12
>>828 ありがとうございます
いろいろ試したのですが
System.out.println(h.put(new Integer(count), sa[0]));
System.out.println(h.put("" + count, sa[0]));
でもnullしか取得されません
お願いします
何をしたいんじゃ? null しか出なくて多分当たり前 Map の使い道わかってる? put の意味分かってる? put の返す値の意味分かってる? new Integer(count) と "" + count はまったく違うものだって分かってる?
831 :
デフォルトの名無しさん :04/01/27 02:29
>>830 テキストファイルを一行ずつreadLineで読み込んで
それを" "で分割して
その分割された1つ目の値をHashMapの二つ目の引数に代入する
また読込むたびにカウントアップして
そのカウント数を1つ目の引数に代入する
"1","1つ目の値"
"2","2つ目の値"
みたいに
ReadLineが存在するまで書き出していく
みたいにしたいのです
他のコレクションフレームワークでも可能かもしれませんがHashMapでお願いします
>>827 で、あとは ""+ i にすればもうできてるじゃん
そうじゃなくて、
>>829 の println(HashMap#put を、何の意味があってしてるのかわからんから、
何を悩んでるかも分からんのよ
もう寝るから予想してること全部書く。 入れたそばからちゃんとはいってるかどうか調べてどうする。 そんなんじゃ put する意味無いし。Map は対応付けを覚えるためのもんで、 あとあと対応付けを調べるためのメソッドがあって当然。 取り出したけりゃ、それ専用のメソッドを探して、それを使えばよろしい。 API ドキュメントはしっかり手元において読まなきゃだめ。 ちなみに put の返す値は古い value が何だったか調べるだけのもん。 取り出すときは対応付けた key で探さないとだめ。 new Inreger(3) と "3" は equals では false を返す。つまり互換性無い。 equals が重要ってのもドキュメントに書いてある。 key として何が入ってるか調べるには keySet を取り出す。 これを Iterator で回すか ArrayList で包んで get(index) するか。 はじめから TreeMap を使って順序付けをしっかりさせておいてもいいが、 key が Comparable でないといけないので、その場合は String ではなく Integer を key に使う。 しかし今回の場合はカウントアップしてるだけなので key をもっかい for で回せばよかろう。 ではおやすみ。
834 :
デフォルトの名無しさん :04/01/27 11:42
質問失礼します。 私の環境(WindowsXP)ではjarファイルは書類の様なアイコンですが、 自作のjarファイルのアイコンを変更することは可能でしょうか。 他の実行ファイル(***.exe)などのように、 自作のアイコンをダブルクリックして実行するようにしたいのですが…。
あのね。 jarファイルはzip圧縮ファイルなのね。 お前は「zipファイルのアイコンを変更することは可能でしょうか」 と言っているのね。
>>834 ああbatファイルを作るといいっすよ。
中身はjava -jar 元のjarファイルの名前(例えばtest.jar) で。
batファイルなら各batファイルごとに好きなように
アイコンを変更できましたよね?
837 :
デフォルトの名無しさん :04/01/27 13:41
質問です。 Vectorにint型を格納するにはどうしたら良いのでしょうか。
・ラッパクラス(Integer) ・要素1のint配列 ・intをフィールドに持つ自作クラス ・番外編:Stringにする
・JDK1.5 にする
842 :
デフォルトの名無しさん :04/01/28 13:35
お勧めのエディタはなんですか?
jcpad
Word 2003
すんません今DBにJavaから接続するプログラムを 書いているのですが for (;;) { // DB接続メソッド connect(); 〜〜書き込み処理〜〜 close(); } とやるのがいいのか // DB接続メソッド connect(); for (;;) { 〜〜書き込み処理〜〜 } close(); とやるのと処理的にはどちらのほうが普通なんでしょうか? またそれは何故かという部分を簡単でいいので教えて頂けないでしょうか
>>842 Cpad for java2SDK・・・843と同じだが
>>845 普通は後者。厳密に言えば作業内容・量・タイミングによる。
トランザクションも考えるなら当然後者。
ちうかあまり Java のスレで聞くことじゃないね。
848 :
デフォルトの名無しさん :04/01/29 04:37
質問します for(i=0;i<num;i++){b[i]=((int)(Math.random() * 10));} num:定数 と記述してb[0]〜b[num]まで乱数を格納します。 そのあと別の配列に数字を入れてこのbの配列と比較したいのですが、 bを参照するたび内容が変わってしまいます。 どうすれば、ある乱数を格納したまま其れを維持することが出来るでしょうか つまり、乱数を格納するのは一回でかまわないんです。 よろしくお願いします。
>>848 貴方の頭は狂っているのですが、僕にうつさないでください
あと異臭がしますよ貴方
>>848 bを参照するときにif(c[i]=b[i]){}ってやってない?
訂正。 if(b[i]=c[i]){} ↑これだと代入してる。
>>847 さん
ありがとうございます。
この手の質問はDBスレのほうで聞くもんでしょうか、やっぱり
ちょっと今まで膨大なInsert文発行していたので
どうかと思って質問した次第でした
ありがとうございます
>>850 すみません、自己解決できました
どうやらチェックする方のプログラムがミスってたようです^^;
失礼しました
>>849 はい 一年くらい風呂入ってません(笑
854 :
デフォルトの名無しさん :04/02/08 11:00
質問age jad使おうと思いダウンロードして解凍し、jad.exeを起動しようと思ったら強制終了するし、 classファイルをjad.exeにドラッグ&ドロップしてみても駄目だった。 タスケテポパーイ
855 :
デフォルトの名無しさん :04/02/08 11:00
質問age jad使おうと思いダウンロードして解凍し、jad.exeを起動しようと思ったら強制終了するし、 classファイルをjad.exeにドラッグ&ドロップしてみても駄目だった。 タスケテポパーイ
なんで重複してんだよ・・・ 連打してないのにorz
858 :
そんな日には。 :04/02/09 15:02
私は今、JBuilder9を使っておりまして,アプリケーションで作っており, フレームごとに画面を設計し,画面遷移していくゲームを作成しております. その際,ある1つの項目に対するコンボボックスが2つあるとします. その2つのコンボボックスそれぞれから、1.0 と 2.0 を選択したとします. そうすると、ある項目は合計 3.0 の数字を得たとします. そして,そう言った形でいくつかの項目にも複数のコンボボックスが設けられていて, それぞれの項目も数字が得られたとします. すべてのコンボボックスを選択し、最終的にOKボタンを押します. 問題はここからなのです. そのデータを次のフレームの画面へ行くとき,グラフという別の形に反映させたいのですが,どういったソースコードを書けばよいのが見当がつきません. 自分としては浅はかでありますが,publicはアクセス修飾子なので、違うフレームでもやり取りができるのではないかと考えております. 長くなりまして,わかりづらいかと思います.そのときはどうぞ言ってください. どうぞよろしくお願いいたします
JBuilderシリーズは重すぎて使い物にならないですよ。 エディタがガリガリ、DOSプロンプトでカリカリやったほうが早い出よ。
>>859 JBuilderそんなに重いか?
1GHzくらいあれば問題ないぞ。
テキストエディタ程度でいいのならGUIエディット部分使わないわけで
コード編集だけなら全然重いってことはないぞ。
JBuilderの利点は
・struits使ったWEBアプリなら各種ツールが便利なこと
・GUIの配置がコードでがしがしやらなくていいのでらくなこと
・Tomcat内蔵でservlet/jspデバッグするのが楽
最新のバージョンはわからないけど、
GUIのイベント作成自体はボタン以外ほとんど手作業で面倒だったけどね
今ならGUIとServletまわりならNetBeansで事足りるが、
JBuilderのstrutsコンバータ、strutsザイナはうらやましい
>>858 画面とデータの遷移がわからないのか
グラフの描画がわからないのかどっちなんだ?
Celeron600だ
862 :
デフォルトの名無しさん :04/02/10 04:14
変数の値の参照方法について、どうしてもわからないことがあります。 たとえば、クラスAとクラスBがあったとします、 クラスAは、01.java、クラスBは02.javaと、別のファイルに記述してあります。 もし、01.java内のクラスAで使われた、変数xの値を、02.java内のクラスBで参照するには、どのような方法を用いたらいいのでしょうか? 01.java Class A{ 変数 x = 値; } 02.java Class B{ int y = x; (ここで、ClassAの変数xの値を参照したい) } 同じファイル内で参照する場合、 変数の宣言でpublicを付加すれば可能なのですが、 別ファイルだと「シンボルを解決できません」というエラーが出てしまいます。 ちなみに、パッケージは、01.javaも、02.javaも、同じパッケージになっていると思うのですが、J-Builderを使っているので、確信はありません。
>>862 クラス名はファイル名と同じにしる。
→ A.java
864 :
デフォルトの名無しさん :04/02/10 21:42
こんにちは。当方JavaでWebアプリケーションを作り、自宅コンピュータをサーバとして外部からのアクセスをできるようにしたいのですが、 できません。サーバはTomCatを使っています。私は、あまりサーバ構築に関して素人なので分かりません。ちなみに推測ですが、アドレスのホスト名をデフォルトのlocalhost:8080にしています。 誰かアドバイスしてくれませんか?
>>864 まず、名前欄に fusianasan と書き込んでください。
netBeanIDEを使ってて、あるフォルダをマウントして使ってた。 だんだんそのフォルダのファイルが多くなってきたので、そのフォルダの下に新たにフォルダを作って IDEを使わないでjavaファイルを作成。 コマンドプロンプトからはコンパイル、実行は出来たんだけど、IDEでそのファイルを開いて実行しようとすると なにやらごちゃごちゃとエラーが出て実行できない。 そのフォルダもマウントしなきゃいけないのかな、と思いマウントしようとしたが指定出来ない。 どうやったらIDEから実行出来るようになるんだ? 因みにコマンドプロンプトが作ったclassファイルを削除して、IDEから実行するとclassファイルは出来てるみたい。
プロジェクトの設定の問題だな パッケージって理解してるかいな? NetBeansやると最初に通る道だろうけどね
java初心者で今は色々なプログラムを見て回っているのですが public static void main(String args[]) の一行を理解しようとしています。 public static void main←この部分はプログラムはここから始まりますよってことですよね? では (String args[])←この部分はなにをしているのでしょうか? String型のargsというのを作ってそうですけど、たいていのプログラムの場合このargsっ使われて ないと思うんです。またプログラムによっては (string[] args)となっているものもありますよね?(string args[])との違いはあるのでしょうか?
String[] hogeとString hoge[]は同じ意味、どちらで書いてもいい。 mainにStringの配列を渡すのは歴史的経緯というか伝統というか。 昔はプログラムはほとんどがコマンドラインから実行するものだった、で 引数(オプション)を文字で打ち込んで実行するのが普通だったから その文字列を受け取れるようにしてある。
>>868 > String型のargsというのを
String型ではない。String[]型。Stringの配列型。
型だから String args[] という書き方はイクない。
後ろに書くのはオサーン系。
>>868 public:パッケージに関係なくクラス外部から参照可能
static:クラス名.メソッド名でアクセスする、クラスメソッド
void:戻り値を持たない
main:mainという名前のメソッド(慣例でプログラムのエントリーポイント)
args[] ←JavaVMがコマンドライン引数を並べて渡してくれる
public class Hoge
{
public static void main(String[] args)
{
System.out.println("引数の個数は"+args.length+"個です");
for(int i = 0;i < args.length;i++)
{
System.out.println("第"+i+"引数は"+args[i]+"です");
}
}
}
↑
javac Hoge.java
java Hoge aaa bbb ccc ddd eee
やってみれ。
>>868 >昔はプログラムはほとんどがコマンドラインから実行するものだった、で
>引数(オプション)を文字で打ち込んで実行するのが普通だったから
>その文字列を受け取れるようにしてある。
ようするにメインプログラムは何かを受け取っているわけですね。
というより受け取れるようにしているわけですね。
>>870 >String型ではない。String[]型。Stringの配列型。
>型だから String args[] という書き方はイクない。
>後ろに書くのはオサーン系。
Stringの配列型は通常 String[] args と書くわけですね。
868さんの見解とあわせて考えるとコマンドラインからの命令は一つとは
限らない。そこで String[] としていくつかの命令を格納できるようにしてる。
こんな感じかな。。。
連投すみません
>>871 感動しました!!
これは得した気分です
皆さんありがとうございました!!!!!
>>874 おまい感受性高いな。その調子でがんばれ。
その感動を忘れるな。
俺は忘れた。
javaの実行環境は指定されたクラスの中のmainメソッドを実行しに行く。 javaのメソッドは戻り値の型、メソッド名、引数の型で判別されるから、 名前だけmainでは認識されない。 なので void main(String[] xxx)までは確定(ただし引数名xxxは命名規約に沿っていれば何でもいい)。 さらに外部からアクセスするためにはpublicであることが必要。 されにnewしないでクラス内のメンバを使用できるようにするためには、 staticであることが必要。 ↓ public static void main(String[] XXX)は必然。 最初にjavaを触ったときは、classの宣言から始まって、 Hello Worldを出すためにいったい何行書かせるつもりだ、と真面目にあきれたのを思い出したよ・・・。 System.out.println();という記述もうっとおしかったし、 さらに標準入力を取ろうと思ったらもうね。 Eclipseがなかったら、今だってめんどくさいと思いならが、書いてたんだろうな。
>>875 今までHTML、C言語、CASLU、ベリログ、などの言語を触り程度
勉強してきた中でJAVAには最も可能性を感じます。
(他の言語が駄目だって言ってるわけではないですよ)
ですので、JAVAについて知るたびに興奮してしまうのです。。
最低限自分で調べて分からない事があったらまた
お世話になることがあるでしょうが、よろしくおねがいします!!
スレ汚しだったらすみません。
>>876 >javaのメソッドは戻り値の型、メソッド名、引数の型で判別
関数の戻り値=void
メソッド名=main
引数の型=(String[] hoge)
を参照して確定しているという事ですね。
>>さらに外部からアクセスするためにはpublic
これはいくつかプログラムを見てきたので感覚的にわかりました。
>>newしないでクラス内のメンバを使用できるようにするためにはstaticであることが必要
main というクラスがいくつもあってはおかしいから静的(static)にしているってことですよね?
ここの方の説明はものすごくわかりやすい解説です。
非常に参考になります!!
>>878 もしかしたら分かってるのかも知れないけど、一応念のため・・・。
javaのクラスを宣言する、というのは「型」を宣言すること。
public SampleClass{
public int value = 1;
}
と宣言したクラスは、
SampleClass sample1;
見たいに、変数を宣言する時の「型」のように使う。
普通に変数を宣言する時の、たとえば整数型の変数を宣言する際に
int test;
と書く場合の、「int」というのと同じようなもの。
で。このとき、変数testにはまだ、実際の値は入ってない。
test = 1;
と書いて、値を入れてやると初めてtestに1という値が設定される。
クラスの場合も同じことで、実際の値を入れてやる必要がある。 それが「new」するということ。new演算子は、新しい「値」を作る、という意味。 SampleClass sample1; sample1 = new SampleClass(); // この時点でsample1に値が入る。 ここまでやって、初めてsample1の中のメンバが呼べる。 System.out.println(sample1.value); のように。 staticメンバというのは、このnewする手順が必要なく、単純にクラスの宣言のみから引ける。 public SampleClass{ public static int value = 1; } と宣言すると、 System.out.println(SampleClass.value); という呼び方で「1」という値を取得できる。「new」しなくても参照できる。 mainを記述したクラスは、javaの実行環境によって、newされてから実行されるわけではなくて、直接、mainというメソッドを参照される。だから、static宣言しておかないと、javaはmainメソッドを参照できない。 以上、蛇足気味の長文失礼。
>それが「new」するということ。new演算子は、新しい「値」を作る、という意味。 これはどうなんかね。 new と static を関連させて勉強する意味ってあまりないと思うぞ。 new は単にコンストラクタメソッドを明示的に呼び出すための就職誌だと思った方が 理解が早くなると思う(説明する側もラクだし)。
>public SampleClass{ > public static int value = 1; >} >と宣言すると、 >System.out.println(SampleClass.value); >という呼び方で「1」という値を取得できる。「new」しなくても参照できる。 この部分は非常に参考になりました。newとstaticの明確な違いが理解しやすいです。 >new は単にコンストラクタメソッドを明示的に呼び出すための就職誌 修飾子とは、クラス・メソッド・コンストラクタにアクセス権限を与えることをいうわけですね。 逆に一つ勉強になりました!!
>>881 >new と static を関連させて勉強する意味ってあまりないと思うぞ。
>new は単にコンストラクタメソッドを明示的に呼び出すための就職誌だと思った方が
>理解が早くなると思う(説明する側もラクだし)。
そんなことないでしょう。newは「インスタンス」を生成するキーワードですね。
インスタンスを生成しなければインスタンスメソッドは呼べないのだから、main
が静的メソッドであることとの関係は明確でしょう。
>>868 2chで勉強するのもいいけど、まずちゃんとした入門書を一冊読んだほうがいいよ。
>>883 Java言語プログラミングレッスン
〜Java言語を始めよう〜
結城 浩[著]
Java言語プログラミングレッスン
〜オブジェクト指向を始めよう〜
結城 浩[著]
の2冊をすでに読んでみました。
細かいところについての説明があまりなかったので
喉につかえていた部分をここで質問させてもらって
いました。
ほかになにかお勧めの参考書はあるでしょうか?
>>884 えーと結城さんの本も含めて「入門書」そのものは読んだことないのですが、
>修飾子とは、クラス・メソッド・コンストラクタにアクセス権限を与えることをいうわけですね。
この書き込み見て、入門レベルの知識がないのかな、と思いました。とりあえず
結城さんの本の目次をざっと見たところ、その辺の説明はありそうですが…
とはいえ、mainメソッドのことを説明しているかどうかはわからないので、
入門書を読んでもわからないことを聞くことは問題ないです。でも、入門書に
書いてある内容はきちんと理解してくださいね。
はい!! 精進しますです
887 :
デフォルトの名無しさん :04/02/20 14:33
JAVAを始めようかと思って、 JBuilder9 Personal を入れてみたんだが、 これってJAVAで作られてるの? むっちゃ遅いんだけど・・・。こんなの 公開したら製品版買う人減るんじゃなかろうか。 とりあえず練習なんで、コマンドラインの JavaをSunから入手することにして DL中です。
コマンドラインベースでいいのならJBuilderもそんなに重くないと思うけど? 快適に動かすなら1GHz、512MB以上推奨だと思うけどね なんにせよ最初はテキストエディタ+SDKで一ヶ月はさわってほしい 環境設定とか自然と覚えるから
みんなeclipse使ってないの?
>>888 Celeron 2GHz ですが、起動に10秒くらいかかります。
ダイアログの表示もワンテンポ遅れる感じですねぇ。
まあ、慣れの問題もあるんでしょうが。
891 :
デフォルトの名無しさん :04/02/20 16:26
>889 一応入れてあるけど、解説本そのものが難しい。
eclipseは統合環境だから、どっちかっていうと多人数で使ったりantとかやる人用でないか? まあ、そんなオレは一人でもeclipse使ってるわけだけど。 最初にどっちさわったかでいいんだよんなもん
>>890 10秒かかったとしてもこまめに起動繰り返す訳じゃないし
コード補完やら構文チェックやらがあることを考えると
その起動の問題なんてたいしたこと無いと思うのだが?
コマンドラインベースでのプログラム程度なら
ダイアログの反応速度とかまったく影響しないでしょ
いろいろいじればわかると思うけど
JBuilderに限らずどの統合環境もサイズでかいしヘビーだよ
このスレは初心者用だと思うが、Eclipseは初心者向けではないねぇ
NetBeans3.51のほうが環境設定しなくてもいろいろある分おすすめかと
ただ、βとはいえ3.6のほうが遙かに使いやすいので今は微妙な感じか
もうすぐ3.6が完成すると思われるのでそれまではsdkベースでもいいかもしれない
894 :
太陽ネット :04/02/20 16:44
誰か教えてください。 Javaで違うフォルダのテキストファイル(ソースを記述している) を読み込んで、プログラム上でそのソースを実行することはできますか?
お久しぶりです。
あれからしばらく一人で色々調べたりしてたのですが
アプレットを作っていて分からない事がでてきました。
現在KeyEvent を使用してキーボードの入力キー(↑↓→←)
を識別し、それにより文字列を動作させようとしています。
動作自体には問題ないのですが、どうしても不安定で
画面がちらついてしまいます。
自分なりに調べてためしてみたんですが、うまくいきません。
http://www1.ocn.ne.jp/~nasitaka/situmon/situmon.html 上に自分が作ったソースを掲載しましたので、どなたか
ご教授願います。。。
あれはソースだけ掲載してたんです(>.<) ちゃんと書いてなくてすみませんでした。。。。 ダブルバッファリングですね!! 勉強してきますです
>>900 ほよよぉ(>.<)
もうそちらに行っても大丈夫でしょうか。('-'。)(。'-')。
あちらはこわぁぁい方が多くていこうかどうか迷ってました。
それとさりげなくここスレの「第一回画像表示ソフトを作ろう」
を作ってたり(笑)
とりあえずダブルバッファだけでも自分で理解できるように
頑張りますです。。。
898さんのおかげで原理はわかったんですけどね。
やっぱりJAVAの経験が浅いんで他の人のソースの
応用がきかないのが辛い(/ー ̄;)シクシク
902 :
デフォルトの名無しさん :04/02/21 09:16
class practice { public static void main(String argc[]) { byte b1 = 1; byte b2 = 2; byte b3 = b1*b2; System.out.println(b3); } } JAVAってのはこれでエラーが出るんですね。 C/C++ではこの辺はwarningもでないと思うけど。 byteをすべてintに変えるとエラーが出ないので 別に桁あふれを気にしているわけじゃないのか?
argc = arg count
>>898 様
無事解決しました!!
こんな基礎的なことに2時間もかかってしまった・・・・
>>902 javaは型が厳密なので
ワーニングでながしたり何もでないのよりは
エラー返した方がいいと思うぞ
型が厳密なのがいいかどうかはプログラムで喰ってる人ならわかると思うけど
まじめに答えると
javaの基本はバイトってのはバイナリを扱う単位で計算に使うものではない
バイナリ扱う関係上8bitという精度もってるにすぎない
これは16bit精度をもっているcharも同じ
計算結果を8bitに押さえたいのならintで計算して8bitに切って格納するべし
>>902 二項数値昇格によって両辺のオペランドの型が byte であっても int に格上げされる。
int から byte への代入は基本的に言語規定によってコンパイル時エラーになる。
final byte b1 = 1;
final byte b2 = 2;
byte b3 = b1*b2;
にするとエラー出なくなると思うけど。
>>905 > javaは型が厳密なので
っつーか静的型付け言語の癖に C の基本データ型が曖昧すぎるだけだと思われ。
javaアプレットでゲームを作ったのですが、htmlで起動できません! コンパイルするときにエラーメッセージもでないし、アプレットビューアでは普通に動作するんです。 javaファイルは本に載ってたものを移して、ヴァージョンを合せたり少し改造したものです。 考えられる原因を教えてください(@@;) sdkのバージョン=j2sdk1.4.1_02 ブラウザのバージョン=6
>>908 JDK 1.4.1 以降はデフォルトで JDK 1.2 以降で実行可能なバージョンのクラスファイル吐くので
javac -target 1.1 hoge.java
とかして JDK 1.1 で実行可能なバージョンのクラスファイルを吐くように指定してコンパイルしてください。
>>908 インターネットエクスプローラ
->ツール->インターネットオプション->詳細設定-><applet>にJava2--を使用、をオン。
レスありがとうございます。
>>909 普通にコンパイル出来ました。
>>910 すいません、そのような項目がないです。ネットに公開されてるようなゲームは全部出来ますので設定は大丈夫だと思います。
情報が足りないのなら答えます。
>>911 -target 1.1 つけてコンパイルしたのかよ?
>>912 しました。つづりも間違ってないです。
hogeってとこは自分のファイル名でいいんですよね?
それで実行はできたのか? MicrosoftのJavaで実行したいなら インターネットエクスプローラ ->ツール->インターネットオプション->詳細設定->MicrosoftVM->Javaコンソールの使用、をオンに。 そうすればどういうエラーになってるか見れる。 または jview /a でもMicrosoft版アプレットビューワができる。
>>914 おお!!できた!!できました!!
すいません実行できてました!!
このために何ヶ月も悩んでました、ほんとにありがとうございます!!m(-_-)m
またなにか問題があったら書き込みます。お手数かけました。
本当に解決したのか? MSVMでだけ動くのならいいだろうけど、 SDKいれるってことは大概プラグインもはいるだろうから sunのjreで動かないってのは問題だな XPとか標準でMSVM入ってないのも多いからな そして場合によってはSunのが標準で入ってる
917 :
デフォルトの名無しさん :04/02/21 21:14
sdk1.4.1を使っているのですかtools.jarにクラスパスを通しているのに、mailパッケージが認識しません s.java:9: パッケージ javax.mail は存在しません。 どうしたらいいですか?
javax.mailはtools.jarの中にはない。 j2eeかJavaMail実装を持ってくるかでどうぞ。
919 :
デフォルトの名無しさん :04/02/21 21:33
おめ
921 :
デフォルトの名無しさん :04/02/22 20:32
はじめまして、Javaを全く扱ったことないのですが 勉強したいと思います。 初心者でも分かりやすいお勧めの本を 教えてください。 宜しくお願いいたします。
922 :
デフォルトの名無しさん :04/02/23 01:26
C++の経験ありで、現在、独習JAVAで学習中なのですが、 interface というのは abstract class で機能的には代替 可能と考えていいんでしょうか?
>>922 代替可能だが、あくまで可能であるだけ。
その逆は不可能ってのは分かるよな?
>>923 abstract class の場合は、一部分でもメソッドの実装が
できるから、実装がまったくできない interface では代替
できないっていうことでいいのかな?
interfaceは多重に継承できるけど abstractはできないYO。 classから見てimplementsは複数できるけど extendsは複数できないYO。
927 :
デフォルトの名無しさん :04/02/23 03:35
今、スレッドについて勉強しているんですが、下のようなプログラムでdelete()とcreate()が 複数のスレッドから呼び出される場合に、create()の中のd!=nullの判定後にdelete()が他スレッド から呼び出されてしまうというようなことはあるんでしょうか? もしあるとしたらどのように改善したらいいでしょうか・・・ public class synchronizedtest { static Data d = null; public static void main(String[] args) { //スレッドの作成・実行 } static synchronized void create() { if(d != null) { d.init(); return; } d = new Data(); } static synchronized void delete() { d = null; } } class Data { double g; void init() { g=0; } }
>>927 > create()の中のd!=nullの判定後にdelete()が他スレッド
> から呼び出されてしまうというようなことはあるんでしょうか?
ない。
もちろん、d != null の判定後、returnで、create()メソッドから帰ってきたあとなら、
delete()が他のスレッドから呼び出されることはあるわけであるから、
ほんとうならば、上の質問には「ある」と答えるべきかもしれないが。
>>924 まあ、
>>925 もそうなんだが、interfaceはほんとに単なるインタフェースだから、
・変数を宣言できない
・定義したメソッドは、実装クラスで必ず実装しなければならない
ってこと。
基本的に、クラスの枠組みを定義したいときはinterfaceを使えばいい。
多重実装もできるし。
abstract classを使う場合はあまりないので、慎重に考察するとクラス設計の見直しにもなる。
変数は宣言できるっしょ。 public static finalになるが
931 :
デフォルトの名無しさん :04/02/23 09:47
java2sdkをインストールしたら、あるHPのネットゲームのページ開くのがものすごい遅くなってさ コーヒマークみたいなんでてさ、文字もちょっとかわったし、あまりに遅いんで、 javaruntimeとjavaplug-inを削除したら、ふつうに開けるようになったんだけどさ この二つはとくにいらないのか?学校の先生にきくとさ、runttimeはいるはずなんだけど とかいって、あやふやにされたんだけど、ちなみにこの二つを削除しても、 ちゃんと、コンパイルもとうるし、コンソール画面で結果も表示されます。 この二つはなんなんですか? 削除してしまってよかったんでしょうかね?
MSのJVM?
>>930 それ定数。
配列やImmutableじゃないクラスの場合はそうでもないが。
935 :
デフォルトの名無しさん :04/02/23 13:15
volatileって複数スレッドからアクセスされ得る変数につけるということでいいんでしょうか? volatile Object data; とか宣言した場合にはオブジェクトへの参照をもつdataが複数スレッドからアクセス可能という ことですか?それともdataの指すオブジェクトがそうなのでしょうか
volatileはVMの動作で最適化を防ぎます Cとかだと効果分かりやすいけどね 基本的にvolatileで変数を宣言するより synchronizedで最適化を防止するほうがいい 1つのメソッドだけ使う場合ってのはあまりないはず
937 :
デフォルトの名無しさん :04/02/23 15:02
int データを char に変換して出力したいのですが、どう書いたらいいでしょうか?
性的メソッド?とそうじゃないメソッドってどう違うの?
静的メソッドはクラスに関連付けられているので className.Method() で呼び出す。 通常のメソッドはインスタンス(オブジェクト)に 関連付けられているので clsName Object = new clsName; Object.Method(); で呼び出す。 静的メソッドの場合は引数で変更するオブジェクトを 伝えてやらないとオブジェクトの中身を変更することは できないです。 Java学習して3日目なんで、違ってたら 指摘おながいします。
>>940 Objectってクラスがあるので、例だとしても混乱のもとになるので
clsName Object 〜 なんて書き方やめましょう。
んーそうじゃなくて、なんで区別する必要があるの?ってこと。 例えば、 a = b.length( ); じゃなくて、 a = String.length(b); でもいいじゃん。
>>942 Mathクラスなんかは非staticメソッドだと
使いにくくないですか? いちいちオブジェクトを
作成して、別にオブジェクトへの操作をするわけ
でもなし、かえって分かりづらい。
>>942 の例は逆に全部staticメソッドにしたらどうかという
提案だと思いますけど、言語としてはそういう使い方
もできますけど、オブジェクトに対する操作というのが
明確にならなくて分かりにくいと思います。
>>942 オブジェクトの中身を熟知しているのはそのオブジェクト自身というのが基本
引数aだけの場合はいいけど、同じようにlengthを取得する、
ただし引数はクラスBといった場合その引数をかえた関数を
どんどん追加していかないとダメでしょ?
オブジェクト指向プログラムってのは相手の敷地に入って
いじくり回すのではなく、メッセージを投げ合うもの
つまり、「君のAクラスのlengthはいくつ?」って感じできくのだよ
C言語やってた人だと勝手に上がり込むstaticメソッド
多用したくなるのはわかるけどね
つまり、「Bクラスさんちょっくらあがらせてもらいますよ、lengthはこれですね」
Bクラスが変更されたらstaticメソッドもってるクラスもいじらないといけないし
java 2 SDK Standard Edition ってドコからダウソするんだっけ? 前見た時とHPの内容が変わっててワカンネ
>>946 な、なんだってー
URLミスかな・・・indexに飛んじゃうんだよorz
アリガd
948 :
デフォルトの名無しさん :04/02/24 17:07
オブジェクト自体に対するsynchronizedブロックもしくはsynchronizedインスタントメソッドと オブジェクトのインスタンス変数についてのsynchronizedは互いに相互排除されるのですか?
949 :
デフォルトの名無しさん :04/02/24 19:44
↑の補足です class SharedData { Data d; synchronized void exampleMethod() {・・} void exampleMethod2() {synchronized(this) {・・・}} void exampleMethod3() {synchronized(d) {・・・・}} } これら3つのメソッドは相互排除されるんでしょうか?
exampleMethodとexampleMethod2はお互いにされる。 exampleMethod3はロックしてるものが違うからされない。
952 :
デフォルトの名無しさん :04/02/24 21:31
Socket sから入出力ストリームをgetInputStream/getOutputStreamで取得した場合、 ソケットを閉じる前にストリームを閉じた方がいいのでしょうか?
955 :
デフォルトの名無しさん :04/02/25 23:50
標準API以外によくつかわれるライブラリにはどんなものがあるんでしょうか? 知っておいた方が便利とかよく用いられるものがあったら教えてください
>>955 J2EE Servlet API…サーブレットのAPI。
JAX-P/B/M/RPC/etc…XML使っていろいろするAPI。
Jakarta-Commons…大抵の人が再発明を繰り返すであろうユーティリティ
が一堂に。それぞれいちいち便利です。
このへんは普通に使うようになるんちゃうかな。
957 :
デフォルトの名無しさん :04/02/26 09:42
winxp amd64でアプレットを使うためには、どのようにインストールすればよいのですか? ただインストールすると、IEにJavaVMが出てこないのですが。
>>957 インストールしたってのはJRE?それともWinXP?
WinXPだったら、デフォルトでJavaVMが入らなくなってるので、
1. Windows Updateを使って、MicrosoftのJavaVMを入れる。
2. SunからJREをダウンロードしてきて入れる。
のどちらかでOK。
JREだったら、コンパネのJava Plug-inを開いて、
ブラウザタブの中のMicrosoft Internet ExplorerにチェックでOK。
959 :
デフォルトの名無しさん :04/02/26 19:22
NetBeansを入れてみたのですが、これは コンソールアプリは作成できないのでしょうか? javac と java で実行できるファイルなのですが、 NetBeansで実行すると java.lang.NoClassDefFoundError: Example2/Example2 (wrong name: Example2) at java.lang.ClassLoader.defineClass0(Native Method) こういった感じのエラーがでます。 IDE Tutorial の SwitchColor は実行できました。 それと、Cでいうところの getchar(); のように、 コンソール起動した場合に自動的に終了しないような メソッドがあれば教えてもらえるとありがたいです。
普通に作れるけど? 実行もおわれば自動的にプロセス終了するよ
あ、2つめまちがえた入力があるまでまつってことね?
リターンキーが押されるまでまつなら System.in.read(); でいいのでは?
普通に使えてる方が多いみたいですね。
コンソールだと、
E:\Data\Dev_Java\PROJECT\Practice>java practice
8
class java.lang.Integer
こんな感じでうまく実行されるんですが。
どっか設定がまずいのかな。
>>962 これ使えました。ありがとうございます。
パッケージを指定したらうまく動作しました。 これは必須なんですかね? package Practice; public class practice { public static void main(String args[]) {
パッケージのディレクトリがずれているんじゃないの?
966 :
デフォルトの名無しさん :04/02/27 05:54
Javaって Mutexみたいな待ち時間付きの同期機構は ないんですかね?
968 :
デフォルトの名無しさん :04/02/27 10:46
>>958 レスありがとうございます.
SUN jre 1.5.0 AMD64をいれました。
しかし、アプレットが動きません。
win2000では、IEにjavaVMが表示されるのですが、WinXP AMD64では、IEに表示されません。
JRE 1.4.2でも出てきません。
なにか手続きがあるのでしょうか。
AMD64ってわざわざかくってことは XPのx86-64対応版? jre1.5と並んで正式版じゃないしなー x86-64版はIEが2つあった気がする
>>968 すまそ。AMD64はよく知らないっす。
Windows Updateから入れるMSのJVMは?
バージョンが1.1で古いけど・・・。
971 :
デフォルトの名無しさん :04/02/27 18:25
*.classファイルをダブルクリックで起動させる方法ってありますか? x.class というファイル名の場合、 java x で起動できますが、エクスプローラでこういう指定はできるのかな?
ふつうに出来るよ ただ、配布して簡単に起動させたいのならjarにするべし ダブルクリックで起動できるし圧縮もされる リソース類もまとめれる
973 :
デフォルトの名無しさん :04/02/27 18:31
ファイル選択ダイアログ(javax.swing.JFileChooserクラス)みたいなやつでフォルダ選択できるものってないですか? 探してるんですけど見つからないんですが、ひょっとしてないですか。
>>973 それでディレクトリ選択の設定すればいいだけ
もしかしてAPIマニュアル読まない人?
975 :
デフォルトの名無しさん :04/02/27 19:46
>>974 すみません。
まだ読み方がわかってないみたいでした。
976 :
デフォルトの名無しさん :04/02/27 22:01
Baseクラスから派生されたDeriveというクラスのインスタンスを 作るときに、Baseクラスの引数付きコンストラクタを 呼ぶにはどうすればいいんですか? C++だと class Derive : public Base { Derive() : Base(a,b) { } }; こんな感じですが。
>>976 class Derive extends Base {
public Derive() {
super(100);
System.out.println("Deriveコンストラクタ");
}
1階層上のコンストラクタはsuperで呼び出せました。
2階層上の引数付きコンストラクタは呼べないんですかね?
Baseクラスのコンストラクタで superを使うのが一般的なのかな?
ぬ
る
ぽ