【初心者】Java質問・相談スレッド61【大歓迎】
乙
3 :
デフォルトの名無しさん :05/01/30 13:12:43
JavaではC言語のように、 ファイルからフォーマット付きでデータを読み込むことはできなにでしょうか??
>>3 FileReader、BufferedReader、java.text.*周りを使うとできますが、
1.5なら、Scanner使うと簡単にできるようになります。
5 :
デフォルトの名無しさん :05/01/30 14:12:32
>>4 グーグルで調べてみたのですが、
(BufferedReader フォーマット、など)
よくわからないので、
使い方などが書かれているところがありましたら教えていただけますか?
>>5 でもScanner使うよりもBufferedReader#readLine()で一行読んでから
java.util.regex.Pattern使ったほうがよさげ。
そのファイルはどんな「フォーマット」なの?
8 :
デフォルトの名無しさん :05/01/30 14:44:19
>>6 レスどもです〜。
せっかく教えてもらったんですが、無駄にeclipseを使っているので、
java.util.Scanner
がないみたいなんですよね。。(´・ω・`)
9 :
デフォルトの名無しさん :05/01/30 14:48:02
>>7 自分で作るファイルなので、
特に形式は決まってないんですが、
今考えてるのは、
row7num3
3:1,2
5:4,1
8:6,6
row8num1
2:4,5
みたいな感じのものです。
10 :
デフォルトの名無しさん :05/01/30 14:54:31
>>8 EclipseはJDKとは関係ないからJDK1.5もJDK1.4も使える。
1.5ならScannerが使える。regexとBufferedReaderは1.4で使える。
>>9 String line = bufferedReader.readLine(); で一行読み込んで
Pattern headerLinePattern = Pattern.compile("row(\\d+)num(\\d+)");
Pattern dataLinePattern = Pattern.compile("(\\d+):(\\d+),(\\d+)");
Matcher headerLineMatcher = headerLinePattern.matcher(line);
Matcher dataLineMatcher = headerLinePattern.matcher(line);
if (headerLineMatcher.matches()) {
} else {
String row = headerLineMatcher.group(1);
String num = headerLineMatcher.group(2);
} (dataLineMatcher.matches()) {
...
} else {
throw new IllegalStateException("不正なフォーマットだ (゚Д゚)ゴルァ!!");
}
多分こんな感じ
コードぐちゃぐちゃだ・・・ 意図を汲んで適当に直してくれ
15 :
初心者A :05/01/30 15:35:48
すみません。Eclipseを使用し
htmlファイルを作成し
http://localhost:8080/jsp/index.html とURLに打ち込み表示させた所文字化けを
してしまいますどうすれば良いでしょうか?
※<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page pageEncoding="Shift_JIS" %>
とちゃんと入力はしてはいるのですが、、、
↓宣言の前に混入している「これ」は何だ? ※<%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page pageEncoding="Shift_JIS" %>
JSP ?
>>11 >Pattern headerLinePattern = Pattern.compile("row(\\d+)num(\\d+)");
>Matcher headerLineMatcher = headerLinePattern.matcher(line);
>if (headerLineMatcher.matches()) {
sにはきちんと読み込まれているんですが、
どうしてもif文の中に処理がいかないのですが、どうしてでしょう!?
『\\d+』のところを『[0-9]+』としてもダメでした。。
19 :
デフォルトの名無しさん :05/01/30 17:10:09
底が2のLog値を計算するメソッドを教えて下さい。 引数 1 →結果 0 引数 2 →結果 1 引数 4 →結果 2 引数 16 →結果 4 引数 32 →結果 5 Mathクラスを調べたんですが,該当するメソッドは 無いようです。Math#logは自然対数のみのようで。 どなたかよろしくお願いします。
>>19 log_2 a = log_e a / log_e 2
という式から求まりますよ!!
あ、ちなみに log_2 は底が2という意味です。
>>20 (13)
なるほど!そういう意味でしたか。
計算してみます。
あと、お返しに。
Pattern headerLinePattern = Pattern.compile("^row(\\d+?)num(\\d+?)\r\n");
もしくは
Pattern headerLinePattern = Pattern.compile("^row(\\d+?)num(\\d+?)\n");
に直したら通りませんか?
つまりは全一致検索になると思うので、改行コードも必要じゃないかなぁ。
>>22 おおっ、どもありがとうございます!!
でもやっぱり無理でした(´・ω・`)
誰かへるぷみぃ。。
>>22 readLine()で読みこんでるから改行は入らないはず
String line = "row7num3"; Pattern headerLinePattern = Pattern.compile("row(\\d+)num(\\d+)"); Matcher headerLineMatcher = headerLinePattern.matcher(line); if (headerLineMatcher.matches()) { String row = headerLineMatcher.group(1); String num = headerLineMatcher.group(2); System.out.println("row: " + row + ", num: " + num); } else { System.out.println("Invalid line format: " + line); throw new IllegalStateException("不正なフォーマットだ (゜Д゜)コ゛ルァ!!"); } ちゃんと row: 7, num: 3 って出力されるけど。データおかしいんじゃね?
27 :
kkk :05/01/30 18:17:21
JAVA script で表示されている画像をどうにかして保存することはできないものでしょうか…
お前の携帯にカメラ付いてないのか?
>>25 wikiにコードの断片なんか書くなよ。バカじゃねーの
30 :
kkk :05/01/30 18:21:06
やっぱ携帯の画素数が良くても画面をとるとなんか画質が悪いんです。
う、うん
断片じゃなくて全部だけどな。
断片もかけない人だからしかたない。
36 :
デフォルトの名無しさん :05/01/30 18:43:09
重複してすみません。質問スレに行くよう言われたのでこちらに転載させていただきます。 855 名前:デフォルトの名無しさん :05/01/30 18:35:04 "30 1 180\n" "23 0 165\n" … こういうデータがそれぞれ1行の配列として与えられたとき、 int Age[50000]; int Sex[50000]; int Height[50000]; この3つの変数に順に代入していくにはどういう文を書けばいいんですか? てか Java には scanf みたいな機能って付いてないんですか?
>>25 わざわざすいません。。。
でも??はエラーになってしまいました(゜▽゜;)
>>26 おっしゃるとおりデータの後ろにスペースが入ってました(´・ω・`)
どうもお手数をかけてすみませんでしたm(_ _)m
デリミタがスペース程度だったらStringTokenizerあたりで気楽に書く くらいでいい気がする。
>>40 deprecated
大体StringTokenizerなんか使うやつはマゾ
Appletでシューティングゲーム作ろうと思っているんですが 機体移動のアルゴリズム public void keyPressed(KeyEvent evt) { switch (evt.getKeyCode( )) { case KeyEvent.VK_RIGHT : X=10; ・ ・ としたとき、いざ動かしてみると機体が少し動いた後一時停止して 今度は連続して動くモーションとなります。 キーを押したとき一旦停止することなく連続して動くようにするには どうすればよいのでしょうか?
45 :
デフォルトの名無しさん :05/01/30 20:04:34
>>44 トークンとデリミタ両方が取得できる機能は重宝してたのだが・・・
Scannerにはないじゃん。
どーするんだよ。
だから正規表現でいいじゃん。
47 :
デフォルトの名無しさん :05/01/30 20:22:04
Scannerにも、デリミタ取得フラグがあれば良かったのだが なんでない!
36 です。 Scanner なんてクラスがあるんですね。 ちょうど 1.5 の勉強したいところだったんで、これ使ってみようと思います(`・ω・´)シャキーン
Swingをゼロから勉強しようと思うのですが良い書籍は無いでしょうか? 「Java GUIプログラミング vol.1」 を買ってみたのですが、内容が古すぎて最近のVMでは動かないのです。 どうしたものか、、、。
>>49 単にJ2SE 5.0つかってて、javacに-source 1.4を付けてないだけ、に100ガメル。
>50 勉強になりました。(J2SE 5.0つかってて、javacに-source 1.4を付けてない 今は1.5への大改革の最中なのですか? 使ってるVMは、1.4、本は1.3の時代のもののようです。 >51 コンパイルできなかったので、importを書き換えました。そしたら、コンパイルできました。 実行したらエクセプションしました。
文字列を全てコピーするのってどうやるの? String OTZ = 何か入ってる , orz = 何か入ってる; OTZ = orz; じゃだめでつか?
コピーをどうとらえるかにもよるが普通はそれでいい。
>>54 何もやらずに訊いているのか?
それとも、やって何か不都合があって訊いているのか?
a = (String)b.clone(); clone()はprotectedされていますみたいなエラーがでるよ どうすればいいんだかorz
a = new String( b);
59 :
初心者 :05/01/30 23:51:58
Eclipseを使用しているのですが Tomcatを立ち上げ *.jsp にアクセスしようと すると普通にHTMLファイルが表示されるのですが *.htmlにアクセスしようとすると文字化けしてしまいます。 どうすれば良いでしょうか? ※しっかり下記は記載しています。 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page pageEncoding="Shift_JIS" %>
>>42 イベントに対していどうのこーどをかいちゃいかん
これはJava特有の問題ではなくてイベントドリブンでのゲームプログラム全般の話
62 :
デフォルトの名無しさん :05/01/31 00:24:35
静的初期化子内で例外が起こってクラスの初期化に失敗したら、 もう回復不可能なんでしょうか? 下のようなクラスで、プロパティファイルが無いときに2回testメソッドを呼ぶと、 2回目以降はNoClassDefFoundErrorと出て初期化を試してもくれません。 自分で強制的にもう一度初期化を試させる(?)ことてできるんでしょうか? public class Test { private static String TEST; static { ResourceBundle bundle = ResourceBundle.getBundle("test"); TEST = bundle.getString("test"); } public static void test () { System.out.println(TEST); } }
>>前スレ974 正規表現に\Qと\Eというのが指定できる。 それを指定すると、\Qと\Eの間のメタ文字は解釈されなくなる。 それを使えば、ユーザーの任意の入力に\Eが含まれていない限り、 > 、置換文字列を指定する人が、正規表現を知らなくても使えるように、 > 単純な文字列の置換機能にしたいんです。 が実現できるはず。
64 :
デフォルトの名無しさん :05/01/31 00:53:43
>>59 htmlファイルのheadタグ内に
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
を加える。
65 :
デフォルトの名無しさん :05/01/31 01:15:26
質問お願いします Appletクラスを継承したhogeクラスではpaintメソッドが勝手に実行されるのと同じように Frameクラスを継承したhogeクラスでもpaintメソッド書いたら勝手に実行されるの? もしそうなら実行される時はいつになるんでしょうか? hogeクラスにmainメソッドがある場合mainメソッドが実行されてからpaintメソッドが実行されるんでしょうか?
>>65 質問お願いしますとのことですので
回答ではなく質問を書きますね
Googleで少し検索すれば回答が出てくるのに
検索して自分で調べようとしないのは何故ですか?
>>53 >>60 レスありがとうございました。自己解決できました。
public void keyPressed(KeyEvent evt) {
switch (evt.getKeyCode( )) {
case KeyEvent.VK_RIGHT :
MoveX=true;
・
・
public void keyReleased(KeyEvent evt){
switch (evt.getKeyCode( )) {
case KeyEvent.VK_RIGHT :
MoveX=false;
・
・
68 :
デフォルトの名無しさん :05/01/31 01:46:14
>>66 そんな事言ったら、何でもググれで済まされるんじゃないですか?
この質問スレ自体が必要ないって話になります。
少なくとも、答える気がないならわざわざイヤミレスしないでください。
もういいです。自己解決しました。
システムコール並びにrepaint()による、再描画イベント発生時に
paint()が呼び出されるのですね。
69 :
デフォルトの名無しさん :05/01/31 01:50:48
>>62 ClassLoaderで、自分で再読み込みしてみてください。
>>68 あの〜、楽しんでるだけだと思うんだけど・・・ともかく・・・回答有難うございました
あと・・・
>少なくとも、答える気がないならわざわざイヤミレスしないでください。もういいです。
禿同です
>>66 わざわざ人の揚げ足とるようなまねまでして、なんていやな野郎なんだ
スルーすれば済むのにさ、もう少し我慢したらどうなのさ
>68 >そんな事言ったら、何でもググれで済まされるんじゃないですか? 言われるまで分からなかったの? >この質問スレ自体が必要ないって話になります。 ぐぐってもそう簡単に分からないことを聞きたいときのためにこのスレがあるんです。 ところで>70 自分自身を「なんていやな野郎なんだ」ってのは何だ? いやレス番号ミスだとは思うが……
>言われるまで分からなかったの? あ〜あ、このスレ全否定しちゃった。しかもまた揚げ足取ってる、ワロタw もうおめ〜らくだらねえから消えろよ
66から70までのレスは、誰が誰で誰に言ってるのか意味不明だな。 寝ぼけてるのか精神分裂に陥ってるのかワカラン
>>69 どうもです。自分でロードしてもNoClassDefFoundErrorになってしまうんですが...
何か勘違いしてますか?
public class Hoge
{
public static void main ( String[] args ) {
try {
Test.test();
} catch ( Throwable e ) {}
try {
Class c = Hoge.class.getClassLoader().loadClass("Test");
System.out.println("Loaded: "+c);
Test.test();
} catch ( Throwable e ) {
e.printStackTrace();
}
}
}
--
Loaded: class Test
java.lang.NoClassDefFoundError
at Hoge.main(Hoge.java:11)
>>62 =75
ホントに静的初期化子で例外が起こってる?
クラスの初期化に失敗したときはExceptionInInitializerErrorが投げられるはずだけど。
単にTestクラスが見えてないだけなんじゃない?
ぬるぽ
>>76 長くなるんで1回目のエラー表示はカットしたんですけど、
75の最初のcatchの中でprintStackTraceすると下のようなエラーが出ます。
java.lang.ExceptionInInitializerError
at Hoge.main(Hoge.java:6)
Caused by: java.util.MissingResourceException: Can't find bundle for base name test, locale ja_JP
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:839)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:808)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:552)
at Test.<clinit>(Test.java:8)
... 1 more
クラスローダーをつかいすてるんだよ
80 :
デフォルトの名無しさん :05/01/31 07:35:58
現在、VC++/DirectShowで構築してあるUSBカメラ制御ソフト(ただのキャプチャソフトです)を Javaに移植したいのですが、どのクラスを使えばいいのか見当も付きません。 何を使えばいいのでしょうか?
あるクラスAがあるクラスBをimplementsしていることを判定するにはどうしたらよいですか?
extendsか?
>>81 クラスは implements できないが、インタフェースだとして、
if(a instanceof B) { 〜
いえ、implementsの方です あるクラスオブジェクトが、特定のインタフェースを実装しているかどうかで、処理を分岐させたいところがございまして・・・
>>83 あ、クラスではなく「インタフェース」ですね^^;
なるほど、instanceof ですか。ありがとうございます。謝謝
86 :
デフォルトの名無しさん :05/01/31 08:35:45
>>78 リソースバンドルに指定した名前が見つからないと言っている。
xxx.properties というファイルが必要なのだが、それが無いのか
置く場所が間違っているか。
87 :
デフォルトの名無しさん :05/01/31 08:35:57
おはようございます。質問させてください。 linuxサーバにjdk1.5.0_01と言うのをダウンロードしてインストールしたんですけど、 これ以前に入っていたのはj2sdk1.4.1_05でした。 jdkとj2sdkと言うのは意味合い・機能的に違ってくるのでしょうか?
そもそもバージョンが違う
89 :
デフォルトの名無しさん :05/01/31 09:01:35
同じようにJavaの開発は出来るよ。 つか、意味的には同じもの。
90 :
デフォルトの名無しさん :05/01/31 16:16:20
質問です。 親Frameのボタンで、JInternalFrameにJPanelを貼り付けて表示させている図を再描画して、 JInternalFrameを更新したいのですが、図の再描画は出来ているのに、JInternalFrameの更新が 上手くいきません。 どのようにしたらフレームの更新が上手くいくのでしょうか?
91 :
デフォルトの名無しさん :05/01/31 16:21:57
JInternalFrameの何の更新ですか?
92 :
デフォルトの名無しさん :05/01/31 16:27:18
再描画した図を、現在表示されているJInternalFrameに更新して表示したいのですが。 現状では、更新される前の図がJInernalFrameに表示されたままで、最小化などのアクションをすると 描画が更新されるという状態です。
93 :
初心者59 :05/01/31 16:36:28
>>64 さん
ありがとうございます。助かりました。
解決しましo(^o^)o
勉強をこれからも頑張ります(^ー')b
94 :
デフォルトの名無しさん :05/01/31 17:15:44
ハッシュテーブルについて質問があります。 for(i = 0; i < 5; i++){ Keys = Keys+i; Elems = 0x41+i; htTestHash.put( Keys , Elems ); } このようなハッシュテーブルを作成し、ハッシュのキーを enTest = hoge.htTestHash.keys(); で取り出したとき、enTestの中の並びは必ず 4,3,2,1,0 となるのでしょうか? 0,1,2,3,4 となることを期待していたのですが、上のような結果になってしまったので 調べてみるとキーのリストを返すとは書いてあっても ハッシュに入れた順番どおりに返すとは何処にも書かれていませんでした。 ですから、4,3,2,1,0という結果もたまたまなのかもしれません。 ハッシュの使い方として配列のように扱う事がそもそも間違っているのかもしれませんが ハッシュの仕様が気になったのでお分かりになる人がいましたら お答えしていただけると幸いです。
教えてください。お願い。 ActiveX COMサービス(WindowsのDLLが呼び出せるならOK)の 「JNAKALab.DLL」はロードされているようなのですが、 jnaka.JInit(sid)やjnaka.JSetUIProperties()のところで java.lang.UnsatisfiedLinkError: JIni; java.lang.UnsatisfiedLinkError: JVSetUIProperties; のエラーがでてしまいます、ECLIPSEでJNIの設定がなにかあるのでしょうか、 それともメッソドの呼び出しがおかしいのでしょうか。 DLLの場所は環境変数で設定しておきました。 Long JInit(String 型 sid);Long JSetUIProperties(); DLLの説明にあった上記のメッソドにアクセスしたいのです。 public class JNaka { public native long JInit(String sid); public native long JSetUIProperties(); static { System.loadLibrary("JNAKALab"); } } public class OBar extends JFrame { public JNaka jnaka = new JNaka(); protected String sid = "UNKNOWN"; protected long ReturnCode; private void setInit() { ReturnCode = jnaka.JSetUIProperties(); ReturnCode = jnaka.JInit(sid); } }
>>94 HashtableやHashMapは格納順序がまったく保証されない。
> ですから、4,3,2,1,0という結果もたまたまなのかもしれません。
そのとおり。たまたまと思っていた方が幸せ。
97 :
デフォルトの名無しさん :05/01/31 18:36:37
>>92 どっかでrepaint()呼んでみてはどうですか?
Java言語からは離れるのですが、
jvmstat3.0(
http://java.sun.com/performance/jvmstat/ )
はj2sdk1.4.2系で動作しないのでしょうか?
つたない英語能力でDocsを読んでみると、j2sdk1.5系のみ対応っぽく、
j2sdk1.4.2系には触れられていないようです。
さらに対応しているであろうjvmstat2.0については
ダウンロードリンクを探し出せない始末・・
どなたかご教授ください・・
99 :
デフォルトの名無しさん :05/01/31 18:58:01
提案ありがとうございます。 現状で、ボタンのメソッドの中でrepaint()を呼んでいるのですが上手くいきません。 他に何か原因は考えられるでしょうか?
>>98 5. Does jvmstat support J2SE 5.0?
Yes, now jvmstat 3.0 can monitor J2SE 5.0, J2SE 1.4.2 and J2SE 1.4.1 virtual machines
(effectively replacing and superseding all previous versions of jvmstat).
>>98 私も読んでみましたが、jvmstatの動作に1.5が必要、というだけで、
1.5のJVMしかモニターできないわけではないようです。
FAQにも
"jvmstat 3.0 can monitor J2SE 5.0, J2SE 1.4.2 and J2SE 1.4.1 virtual machines
(effectively replacing and superseding all previous versions of jvmstat)."
とありますので。
1.5のJ2SE入れてjvmstatだけで使うようにし、ビルドや実行等は
1.4系のJ2SE使うようにすれば何とかなりませんか?
>>94 ちなみにTreeMapはkeyの昇順、LinkedHashMapは、putした順にIteratorでとれる。
103 :
98 :05/01/31 19:38:44
javaとjavaw二つのバイナリの差はなんでしょうか javawの方が2byteほど大きいのですが
バージョン書き損ねました jre1.5.0_01です
>>104 javawはコンソールが立ち上がらない
>>106-107 ありがとうございます
jreを同梱しようと思ってて迷っていたので助かりました
sunのDocument見損ねてたよ o......rz
appletでgifのImageをダブルバッファリングで表示してもちらつきが生じます。 何かよい方法はないでしょうか?
Java から100枚程度のグラフの連続白黒印刷、同時に文書ファイル作成をしていますが、 パターン塗りつぶしで困っています。 現在は 8x8 画像で TexturePaint を使っています。 1) Acrobat を持っているので PDF に出力してるのですが、やたらと時間がかかります。 2) Graphics2D から EPS に出力するライブラリを見つけてきましたが、 塗りつぶしは真っ黒になってしまいます。 3) できれば PowerPoint ファイルを出力したいんですが、フリーのものが見つかりません。 一色塗りつぶしにしてEPS に出力してから、図として挿入し、グループ解除して、 VBA マクロでパターンをかえてやってもいいのですが、100枚は大変。 4) POI ではグラフが作れません。タイトルも替えたいので、 テンプレートとなるファイルにグラフを作っておいて参照セルの値を変える……だけではいけません。 5) SVG は、作るはいいけど連続して印刷する方法(もしくは他形式への変換方法)が乏しい(探索中) というわけで塗りつぶしのほかの方法があればよいのですが。誰かお知恵を拝借できませんでしょうか。
>>108 jre再配布の条件を守る気はないのですね
112 :
98 :05/01/31 20:43:35
>>100 >>101 動作することを確認できました。
動作方法を簡単に報告しますと、j2sdk1.4系にjvmstat3.0を使用するには、
1."j2sdk1.5"をインストール
2."j2sdk1.4"のVMの起動オプションに"-XX:+UsePerfData"を付与。
の2つが必要でした。
アドバイスありがとうございました。
113 :
デフォルトの名無しさん :05/01/31 20:51:02
Sirializableインターフェースを実装するとそのクラスを「直列化」できるらしいんですが、 「直列化」って何ですか?
>>113 シリアライズだ
とこれだけではあんまりか。
クラスのインスタンスの持つデータの保存だと思っておけばいいよ。厳密にはちょっと違うが
EJBの質問も良いですかね? EJBのローカル参照でエラーが出て困っています。 (weblogic serverの管理コンソールでJNDIのテストをするとJNDI名が間違っていると言われます) 設定ファイルは以下の通りです。(関係なさそうな部分は消しています) 何が悪いのでしょうか。 *** ejb-jar.xml *** <ejb-name>ABC</ejb-name> <local-home>org.yahoo.ABCLocalHome</local-home> <local>org.yahoo.ABCLocal</local> <ejb-class>org.yahoo.ABCBean</ejb-class> *** weblogic-ejb-jar.xml *** <ejb-name>ABC</ejb-name> <enable-call-by-reference>True</enable-call-by-reference> <local-jndi-name>ejb/ABCLocalEJB</local-jndi-name>
>>111 身内(?)だけの配布ですから
もしフリーソフトで出すのであれば同梱しませんよ
119 :
113 :05/01/31 22:03:57
114-116 なるほど、なんとなくわかりました。 クラスのインスタンスのフィールドやら状態やらを0と1の簡単なならびにすると言うことですね。 それでもってこの動作は入出力のときに威力を発揮すると。
>>118 身内だけでも厳密には再配布の条件に違反していることになると思いますよ
>>118 JREの再配布条件には配布範囲に応じて分類されてるしそれ読まなきゃ
意味ないよね。つーか再配布するななんて誰もいってないのに
なんでそんなひねくれてるんだろ。再配布するときはSunの示す
条件を満たすようにしてくださいってだけなのに。
122 :
デフォルトの名無しさん :05/01/31 22:31:37
すみません。知っている方がもし、いらしゃったら、教えていただけませんか? WMF(ウィンドウズメタファイル)をラスター画像(GIF/JPEG/BMPなど)に、java でコンバートする方法を、探しています。難しいことなのでしょうか?
wmfなんて久しく見てないから仕様ワカンネ
>>120-121 別にひねくれてる訳じゃないですけどそう考えられる発言したことはに関しては
非常に申し訳なく思っております
それからJREの全てのfileを同梱するようにします。
>>ALL
スレ汚しまことに申し訳ございません
125 :
デフォルトの名無しさん :05/01/31 22:56:02
libwmfなどを使えば、コンバート可能とのことなんですが、javaではやっぱり 難しいですよね。
127 :
デフォルトの名無しさん :05/01/31 23:41:13
すいません。tomcat5.5にしたら、commons.dbcp.BasicDataSourceFactory によるデータソースの取得が出来なくなってしまいました。 InitialContext.lookup("java:comp/env/jdbc/mysql")をしても DataSouceがヌルなBasicDataSourceインスタンスが返ってきてしまうのです。 一応、server.xmlに読ませるContextタグ内には <Resource name="jdbc/mysql" type="javax.sql.DataSource" auth="Container" /> <ResourceParams name="jdbc/mysql"> <parameter> <name> factory </name> <value> org.apache.commons.dbcp.BasicDataSourceFactory </value> </parameter> (以下略) とし web.xml内にも <resource-ref> <res-ref-name> jdbc/mysql </res-ref-name> <res-type> javax.sql.DataSource </res-type> <res-auth> Container </res-auth> </resource-ref> とし mysqlコネクタ、commons.Dbcp、commons.Collection、commons.Pool のjarファイルも、Tomcatホームの/commons/libにコピーしてます。 しかし、空のdbcp.BasicDataSourceが返ってきてしまうのです。 どうすれば正確に取得できるのでしょうか? 教えてください。
128 :
デフォルトの名無しさん :05/01/31 23:41:43
>>126 書き込みありがとうございます。
Java Advanced Imaging (JAI) APIを調べてみたところ、画像形式はgif、jpeg
、png、bmpなどをサポートしており、wmfに関する記述はありませんでした。
wmfはもう先がないということで見捨てられたのでしょうか・・・
129 :
デフォルトの名無しさん :05/02/01 00:22:12
javaでiアプリを作ったりなどよく見かけるのですがvodafoneのゲームって作れますか?
130 :
デフォルトの名無しさん :05/02/01 00:36:05
SDKのサイトにつながりません。
Javaって木構造なコレクション型って無いのでしょうか。
TreeSet / TreeMap
JFileChooserクラスのshowOpenDialogメソッドについて教えてもらいたいのですが 引数をnullにする場合とコンポーネント(JFrame)を指定する場合の違いは何でしょうか?
Javaって木構造なコレクション型って無いのでしょうか。
TreeSet / TreeMap
>>134 コレクションではないが、
TreeNode / MutableTreeNode / TreeModel
DefaultMutableTreeNode
>>134 クラスではないが、
Composite パターン
>>133 nullだと画面の真ん中、親を指定するとその親の真ん中に表示されるんじゃなかったっけ。
検討しましたが自分の親と子を返すインターフェースを作って自前で戦うことにしました。
org.w3c.dom.Node javax.naming.CompositeName
ソケットを使った通信に関して質問します。 2台以上のマシン間で配列を送・受信するプログラムを作りまして、正常な動作を確認したのですが、数回実行させると正常に動かなくなってしまいました。 実行させるマシンを変えると、また数回正常に実行できたのですが、ある時突然に異常(配列の要素がが全て0になっている様子)になってしまってそれ以後正常に実行できなくなってしまいました。 他の数台のマシンで実行してみても初めの数回だけ正常に動いた後、異常が起きたら2度と正常に動作しないことがわかりました。 配列の計算をしているアルゴリズムは乱数を使っているわけでもないので、 実行のたびに結果が変わる事は無く、この異常は通信のどこかが原因だと考えています。 私が考えられるのはここまでで、こちらの板に助けを求めてまいりました。 このような現象が起こりそうな要因をご教授ください。 送信は以下のようにしています。 Socket Csocket = new Socket(hostName,25555); DataOutputStream dos = new DataOutputStream(Csocket.getOutputStream()); for (int i = 0; i <100000; i++) dos.writeFloat(W[i]); dos.close(); Csocket.close(); 受信側は以下のとおりです。 ServerSocket serverSocket = new ServerSocket(this.clientPort); Socket socket = serverSocket.accept(); DataInputStream dis = new DataInputStream(socket.getInputStream()); for (int i = 0; i < 100000; i++) W[i]=dis.readFloat(); dis.close(); socket.close(); serverSocket.close();
フォルダをデスクトップに作成したいのですが、デスクトップパスの指定が良くわかりません。 デスクトップパスを取得する方法を教えてください。
>>144 Documents and Settingsの下を良く探せ
レジストリを参照する のほうがよくないか
>>133 相対位置の指定だけでなく、モーダルの制御にも使われたと思う。
JFileChooserに限らず、JDialogなんかでも、モーダルのダイアログを
出すときに、親のウインドウを教えずにnullで開くと、親ウィンドウの裏に
モーダルダイアログが表示されて困ったことになった気が。
・モーダルのダイアログを表示する(引数nullで)
・ダイアログが表示された状態で、タスクバーなどで別のウィンドウに切り替える
・同じようにタスクバーで元のウインドウを選ぶ
・親ダイアログが前面に表示されるが、モーダルなので操作できない
ALT+TABでウィンドウを切り替えると前に出てくる
試して報告してくれ。
148 :
デフォルトの名無しさん :05/02/01 12:55:35
>>143 二度と正常に動作しないってのは、プログラム途中で何らかの例外が
発生して、ServerSocketインスタンスがclose()されないまま
プログラムが終了してる為だと思われます。
そうなると、そのポートでは二度とバインドできずに、ServerSocketが
スタートできません。
抽象メソッドとインターフェースの違いについて理解し難いのですが 猿でも分かるように詳しく教えてください。
解決しました。
151 :
デフォルトの名無しさん :05/02/01 19:11:35
>>143 try{
// ここに処理を記述
}catch(Exception e){e.printStackTrace();}
と書けば発生したエラーの詳細が表示されるので原因解明の一助になるのでは?
152 :
143 :05/02/01 19:36:25
>>148 >>151 レスありがとうございます。
>>151 さんの言われる通り、e.printStackTrace();で何が起きてるか見てみたのですが、全くエラーは出ていないのです。
それでは
>>148 さんのご指摘のインスタンスがcloseされていない、というのは起こらないはずだよなあ、と思っているところです。
そういえば、Ctrl+Cで強制終了した事が多々あるような。この場合、Javaはcloseしてくれてないのでしょうか。
>>152 float じゃなくて char でも発生しますか?
別スレッドで W[i] を初期化したり削除しちまってたらぬるぽになるし、 初期化ルーチンを呼び出しちゃってるとしか思えないなぁ。。。 W[i] が必ず 0 じゃないというのが保証されているのであれば、 送受信時に 0 になるのを監視して W[i] を全て表示してみれば 何が起こってるのかが解るかも。
>>144 システムプロパティuser.homeからたどれ。
次のようなSwingアプレットを作って実行すると,起動直後はボタンが表示されず,マウスカーソルをボタンの上に持って行くと,それ以降はボタンが表示されます。 起動直後からボタンを表示させるようにするにはどうすればよいでしょうか? //<applet code="JAppletTest.class" width="200" height="200"></applet> import java.awt.*; import javax.swing.*; public class JAppletTest extends JApplet { Container contentPane = getContentPane(); Image img; public void init() { contentPane.setLayout(new FlowLayout()); try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }catch(Exception e){ e.printStackTrace(); } contentPane.add(new JButton("ボタン")); Dimension d = contentPane.getSize(); img = createImage(d.width, d.height); } public void paint(Graphics g){ g.drawImage(img, 0, 0, this); } }
158 :
part 1 :05/02/01 21:00:29
質問があります。 下記のようなswingで作った簡易も簡易なメモ帳をつくりました。 問題は、「ctrl a」で行の先頭にカーソルが移動させたいのですが????の部分になにかいたら よいかわかりません。行の先頭のポイントとかはどこかの変数に保存されてるのでしょうか・・。 あとできればカーソル自体も点滅させずに、直線ではなく色付き長方形にしたのですが。。 すみません、欲張りで。誰か教えてください・・。 import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; import javax.swing.text.*; import java.io.*; public class MyEditor extends JFrame{ Container myContainer; JTextPane myTextPane; public static void main(String[] args){ MyEditor myApp = new MyEditor( "( New File )" ); myApp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myApp.setVisible(true); }
159 :
part 2 :05/02/01 21:02:31
MyEditor(String title){ super( title ); setBounds( 10, 10, 800, 500 ); myContainer = this.getContentPane(); myContainer.setLayout(new BorderLayout()); myTextPane = new JTextPane(); InputMap inputMap = myTextPane.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ); ActionMap actionMap = myTextPane.getActionMap(); KeyStroke moveLineStartKey = KeyStroke.getKeyStroke( "ctrl A" ); inputMap.put( cutKey, moveLineStartAction ); actionMap.put( moveLineStartAction, moveLineStartAction ); } class MoveLineStartAction extends AbstractAction{ MoveLineStartAction( String text ){ super(text); } public void actionPerformed( ActionEvent e ){ ???? } } }
>>158 お願いですからすべて選択にしてください。
て言うか何系の発想よ?
>>160 あ、EmacsというEditorを過去に使っていて、(EclipseでもEmacs風のKeybindにしています)
それが Ctrl-aが「行頭へ移動」でしたので。
別にCtrl-aでなくても、全然違うキーでもいいのですが・・
API仕様からJTextPaneのfocus関係を調べてみるとか
>>161 すまそviの人だから知りませんでした。
focusじゃなくてキャレットのほうか
165 :
デフォルトの名無しさん :05/02/01 22:14:54
166 :
143 :05/02/01 22:25:38
167 :
デフォルトの名無しさん :05/02/01 22:59:06
メインクラスのあるjarファイルをバッチファイルで起動した後、 DOS窓を表示しないようにできますか? javawでやればDOS窓閉じても問題ないぽいけど、 勝手にDOS窓が閉じるような技ってないんですかね
>>168 やってみたんですが、引数を読んでくれずクラスパスが通らんかったです。。
なんでだろ
>>169 そんなことはないぞ
そのバッチの中身かいてみろ
System.out.println の文字コードを UTF-8 にするには、 どうしたらよいでしょうか(OS は Windows2000 です)。
>>170 今環境ないんで忘れたけど、確かこんな感じ
start javaw -cp lib\hoge.jar
で、-cpっていうファイルはありません、みたいなエラーだった希ガス
start "javaw -cp lib\hoge.jar "
176 :
Java暦1ヶ月 :05/02/02 00:06:39
すみません。JSPを使用しログイン・システムを作っているのですが、 例えば [ login.jsp ] ・・・まず、このページでログインIDを入力する。 <html> <head></head> <body> <form name=aa action = signup.jsp method=post> ログインID<input type=text name=id><br> </form> </body> </html> [ signup.jsp ]・・・このページでMySQLからデータを取り出し照合。 ・ <略> ・ String id = request.getParameter("id"); <略> ResultSet result = state.executeQuery("select * from table_1 where id=\"" + id + "\""); ↑ ↑ | が入力されたログインIDが入っています。 がMySQL上に登録したカラムです。 Q1)なぜここで // 略 // where id = id"); としてはダメなのでしょうか? Q2)私の購入した入門書にはここでの¥の用法が全く記されておりません。 どういう事なのでしょうか? 誰か教えて下さい。お願いします。
177 :
Java暦1ヶ月 :05/02/02 00:09:00
すみません、文字がずれてしまいました。 ResultSet result = state.executeQuery("select * from table_1 where id=\"" + id + "\""); ↑ ↑ | が入力されたログインIDが入っています。 がMySQL上に登録したカラムです。 Q1)なぜここで // 略 // where id = id"); としてはダメなのでしょうか? Q2)私の購入した入門書にはここでの¥の用法が全く記されておりません。 どういう事なのでしょうか?誰か教えて下さい。お願い致します。
>>176 where id = id
これじゃただ
where id = idって文字列表示するだけになるじゃん…
\はエスケープシーケンス
今回の場合は
" "でくくってある文字列の中で"という文字を入れたくとも
入れたらそれが文字列の終端だと判断されてしまうので
それを回避するために\"と表現し区別させる
>>177 SQLでは
select * from table_1 where id=id
ではだめで、これだとtable_1の列idをそれ自身と比較して同じ列
(つまりnull以外の全て)を抽出するSQLになります。この場合は、
select * from table_1 where id="id"
と書きたいわけです。こうすると、列idの値が"id"である列を抽出する
SQLになります。
これをJavaの文字列で書こうとすると、
文字列リテラルの開始と終端を表す文字「"」で前後を囲って
"select * from table_1 where id="id""
とすればいいと思うかもしれませんが、この場合文字列中の"が
文字列の終端と認識されてしまい正しくコンパイルしてもらえません。
こういう場合は、"ではなく\"と書きます。つまり、
"select * from table_1 where id=\"id\""
です。または、後の説明のために分けて書くとこうなります。
"select * from table_1 where id=\"" + "id" + "\""
文字列リテラルの中では「\"」で1文字として扱うことに注意して下さい。
ただ、これだとidの値は"id"で固定になります。ここで変数の値を参照させたい場合は
"id"を変数で置き換えて以下のように書きます。
"select * from table_1 where id=\"" + id + "\""
SQLの列名、SQLの文字列、Javaの文字列、Javaの変数名の4種類で同じシンボルidが
出てきますが、混同しないよう気をつけて下さい。
ところで、こんな説明もないその糞入門書のタイトルは何ですか?
今後の被害者を増やさないためにも、是非さらして下さい。
普通SQLって文字列はシングルクォートでくくるもんだけど ダブルクォートでもオッケーなん?
統計では、SQLダブルでくくっちゃう人の多くは、like文でアスタかまします。
abstractって何に必要なんですか? interfaceもオーバーライドを強制しますよね? 役割がかぶっているような気がしてなりません 目的を教えて
183 :
Java暦1ヶ月 :05/02/02 01:41:31
>178,179さん 解決しました。ありがとう御座います。 本の名前は、 EclipseではじめるJavaプログラミング入門 です。教えて頂いて大変恐縮なのですが、リテラルについての 説明ページにホンの少し載ってました(-_-#)すみません。 細やかな解説本当にありがとうございましたo(^o^)o
>182 interface ほんっとうにガワだけ共通化したい場合 abstract class 部分的に違う動作をするものをいろいろ作りたい場合 ……いかがでしょう識者の皆様。
そもそも等値じゃないだろ アホか
機能的には、abstract classだけが一部のメソッドを実装できたりするわけだが。 interfaceはそれができない代わりに多重継承が可能。 例えばtemplate patternやるならabstract classだろうなあ。
>>185 脳内彼女がイケメンにでも食われたのか?
188 :
デフォルトの名無しさん :05/02/02 02:02:40
189 :
177 :05/02/02 02:10:37
>>179 さん
すみません。ふと疑問に思ったのですが、
例えばDOS窓上でMySQLコマンドを入力したい場合。
select * from table_1 where id="id"
ですよね。これをJavaのソース上で再現しようとする場合には
エスケープシーケンスでは ダブルクォーテーションは ¥”
なのですよね?そうしますと // 略 // id = \" + id + \"");
で良いと思うのですがなぜダメなのでしょうか?
>>184 ,
>>186 thx
プラットフォーム毎(Javaで?)のロジックの差異を変更するばっかに備えたクラスを作る感じ?
ある程度機能は共通しているが、部分的に個別に書く必要がある場合もある
そんなときに使うのがabstractということでいいのかな?
>>189 その場合、MySQLに対して以下のSQL文が実行されます。
select * from table_1 where id="+id+"
これが間違っているというのは分かりますよね?
この辺は繰り返し試してその結果を確認した方が理解が早いです。
Statement#executeQuery()を実行する前に、引数に指定した文字列がどうなっているか、
System.out.println()を使って確認するといいでしょう。
Eclipse使っているのでしたら、デバッグ・パースペクティブに切り替えて
デバッグモードで実行し、変数ビューの内容を見るのもいいかもしれません。
クラスClassAが定義されていて、 ArrayList型ALが存在してるとします。 ClassA[] clA = (ClassA[]) AL.toArray(); でClassCastErrorが出るんですが、使い方間違っていますか?
はい
('A`)教えてくれませんか?
>>192 ClassA[] clA = (ClassA[]) AL.toArray(new ClassA[AL.length]);
>>194 Class[]←Object[] ではないから。
ありがとうございました。 primitive型のときと同じことするんですね。
>>195 わざとだと思いますが、lengthじゃなくてsize()ですよね。
>>197 配列はprimitive型じゃないから同じなんだよ
200 :
デフォルトの名無しさん :05/02/02 09:07:52
toArray()に与える配列のサイズは0でいい
>>200 正しくは0以上なら何でもいい。
ただし、大きな数字を与えすぎるとOutOfMemoryError食らうかも。
>>200 >配列のサイズは0でいい
と書かれると、List#size()を指定することが余計なように聞こえるんだけど、
別に「List#size()で指定する」よりも、「0で指定するほうが良い」というわけではないと思うんだけど。
今回のケースだと、List#size()を指定したほうが余計なインスタンスが生成されないと思う。
List#size()を指定する方は、自分でサイズ指定して作った配列に格納されて返ってくる。
0個の配列を作った場合は、型の判別だけに使用され、
toArrayの内部で(前者と同じように)Listの要素数に等しい配列が生成されるわけだ。
となると、0個の配列をnewしたことが無駄なインスタンス生成になるのではないでしょうか?
サイズを0で指定するんだったら、型指定のための定数として使うべき。
ClassA[] clA = (ClassA[]) AL.toArray(new ClassA[0]);
ClassA[] clB = (ClassA[]) AL.toArray(new ClassA[0]);
ClassA[] clC = (ClassA[]) AL.toArray(new ClassA[0]);
↓
private static final ClassA[] NULL_CLASSA_ARRAY = new ClassA[0];
ClassA[] clA = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
ClassA[] clB = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
ClassA[] clC = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
「サイズ0の配列を渡せばよい」というと、ソース上のあっちこっちで
new HogeHoge[0]というのが記述されることになっちゃわないかと心配。
どうせ0個の配列を生成するコストなんてたいしたことないのかな?
要素数0の配列で指定した場合の利点ってなんなんでしょうか?
>>201 大きな数字を与えて、OutOfMemoryError食らうときに、
小さな数字を与えたら、OutOfMemoryErrorにならないの?
>>203 >小さな数字を与えたら
OutOfMemoryErrorは
「メモリ不足エラー」だから
>>206 キー叩く回数ってのは new ClassA[AL.size()] と new ClassA[0] の比較ね。
NULL_CLASSA_ARRAYだと ClassA[] NULL_CLASSA_ARRAY = null; を想像してしまう。
>>207 おれもnullっぽいと思ったけど、
そのコードはEffective Javaを参考に書いた。
じゃあ、別にList#size()で指定している奴にたいして、
「おいおい、そりゃ0にしたほうがよいよ」って書き直せることではないってことだな。
209 :
デフォルトの名無しさん :05/02/02 13:24:29
JSPの勉強をしているのですが例えば、 a1.jsp [ユーザにIDを入力して貰う。 uid = hoge] a2.jsp [入力内容確認画面:登録ボタンを押し、a3.jspで登録処理を行なう] a3.jsp [このjsp内部でDBへの登録を行なう。] a3.jsp中での登録処理を実行する際に、a1.jspの中で使用している変数を 使用する際にはどうすれば良いでしょうか?同一パッケージ( プロジェクト) にa1〜a3は、入っています。a1.jsp.uid と指定するのは誤りでしょうか?
210 :
bus :05/02/02 13:36:30
String型配列をcahr型の配列に変換する方法がわかりません。わかる方 教えてください
>>210 APIドキュメント見れば、そのものずばりの機能が書いてある。
>>209 そう言う場合のためにsessionスコープ変数(sessionコンテキスト変数とかsession属性変数とも呼ばれる)がある
このメソッド激しく打ちづらいんだよな
215 :
デフォルトの名無しさん :05/02/02 13:41:38
>>209 a1.jspで
application.setAttribute("uid", hoge);
として
a3.jspで
String uid = application.getAttribute("uid")
とする。
applicationは、sessionの方がよいですが・・・
216 :
デフォルトの名無しさん :05/02/02 13:42:22
>>209 a1.jspで
application.setAttribute("uid", hoge);
として
a3.jspで
String uid = (String) application.getAttribute("uid")
とする。
applicationは、sessionの方がよいですが・・・
String型配列からchar配列というのは、 String[] s = { "aaa", "bbb", "ccc" }; を、 char[][] cc = { { 'a', 'a', 'a' }, { 'b', 'b', 'b' }, { 'c', 'c', 'c' } }; と等価に変換したいという意味か? といじめてみる。
>>200-202 to.Array()は配列サイズを適切な大きなの配列に直してくれて代入してくれるわけですかφ(..; ) メモメモ
質問です。 コード変換(SJIS→UTF8)したのですが、どうすればいいのでしょうか? Cみたいにiconv.h相当するものや命令があれば教えてください。
>>219 変換したなら好きなようにすればいいじゃない
すまん、間違えた。 って普通気づくだろ… ×: コード変換(SJIS→UTF8)したのですが ○: コード変換(SJIS→UTF8)したいのですが
SJISで読み込んでUTF-8で書き出せばいい。
>>219 byte[] sjis = { 省略 };
String s = new String(sjis, "Shift_JIS");
byte[] utf8 = s.getBytes("UTF-8");
Shift_JISよりWindows-31Jの方がいいかもね。
MS932とすれば分かりやすいよ
226 :
デフォルトの名無しさん :05/02/02 22:06:09
失礼します、JDKを使って、 34,54.87,45,65,75,98,71,68,82 以上の数字をWhileを使わずに、昇順で並び替えるというものですが、よろしくお願いします
そういうことなのか?
それとも再帰呼出しか?
230 :
デフォルトの名無しさん :05/02/02 22:13:25
なるほどforですか。 今参考書を見てるのですが、十個の数値は条件のところに入れるのでしょうか?
231 :
デフォルトの名無しさん :05/02/02 22:14:25
CDROMの中に画像データを入れ込んで、 HP(これもCDROMの中にある)上にあるボタンをクリックすると 全ての画像の中から条件にあう画像を選んで HP上に表示する、 というようなプログラムをつくりたいんですが、 どこか参考になるサイトやスレってありますか!?
232 :
デフォルトの名無しさん :05/02/02 22:17:29
>>226 int型のtest配列を100個用意して、
34ならtest[34]=1
みたいにしたらソートされるんじゃない?
233 :
デフォルトの名無しさん :05/02/02 22:20:53
…test配列とは?
>>233 testという変数名のint型の配列だと思う
まぁ、最後にループを使うことになりそうだが
>>230 int test[] = {34,54.87,45,65,75,98,71,68,82}
for(int i = 0; i < test.length; i++){
何らかの処理
}
236 :
デフォルトの名無しさん :05/02/02 22:31:30
ありがとうございます、これで処理を続けれそうです。
Stringをマルチバイト文字列で初期化してsubstring(1)とした場合、どの部分が返ってきますか?
2文字目以降
いいかげんCのchar配列感覚でJavaのStringを見るのはやめような。 まー、サロゲートペアなんていうものもあるが。
>>174 よくわからんかったんで、仕方なくmanifestでクラスパス通しました
ありがとござました
242 :
質問です :05/02/02 23:35:41
ファイルを読み込み、平均などをだすプログラムなのですが、どうすれば実行できるのかがわかりません。 おそらくファイルは読めるのですが、計算しようとすればエラーらしくNaNとでました。次にプログラムをはります。
243 :
その1 :05/02/02 23:40:09
import java.awt.*; import java.awt.event.*; import java.io.*; class FrameForm extends Frame implements ActionListener{ int data_num=0; double[] data = new double[100]; String line = null; String data_list = ""; Label label1 = new Label("Average"); Label label2 = new Label("Varience"); Label label3 = new Label("Standard Deviation"); Label label4 = new Label("Set Data"); TextField text1 = new TextField(""); TextField text2 = new TextField(""); TextField text3 = new TextField(""); TextArea texta1 = new TextArea(3,10); Button button1 = new Button("Load Data"); Button button2 = new Button("Calculate"); Panel pan1 = new Panel(); Panel pan2 = new Panel(); Panel pan3 = new Panel(); FileReader fr; BufferedReader br;
244 :
その2 :05/02/02 23:41:41
public FrameForm(){ setSize(300,300); setLayout(new BorderLayout()); add(pan1,BorderLayout.SOUTH); add(pan2,BorderLayout.CENTER); add(pan3,BorderLayout.NORTH); pan1.setLayout(new FlowLayout(FlowLayout.RIGHT)); pan1.add(button1); pan1.add(button2); pan2.setLayout(new GridLayout(6,1)); pan2.add(label1); pan2.add(text1); pan2.add(label2); pan2.add(text2); pan2.add(label3); pan2.add(text3); pan3.setLayout(new BorderLayout()); pan3.add(label4,BorderLayout.NORTH); pan3.add(texta1,BorderLayout.CENTER); button1.setActionCommand("load"); button1.addActionListener(this); button2.setActionCommand("calc"); button2.addActionListener(this); }
245 :
その3 :05/02/02 23:44:28
public void actionPerformed(ActionEvent e){ if(e.getActionCommand()=="load"){ try{ fr = new FileReader("./test.txt"); br = new BufferedReader(fr); }catch(FileNotFoundException e2){ texta1.setText("Data file not found."); return; } try{ while((line = br.readLine()) != null){ data[data_num] = Double.parseDouble(line); data_num++; } }catch(IOException e3){ System.out.println(e3); } for(int i =0;i<data_num;i++){ data_list += (Integer.toString((int)(data[i]))+ " "); System.out.println(Double.toString(data[i])); }
246 :
その4 :05/02/02 23:46:51
texta1.setText(data_list); button1.setVisible(false); }else if(e.getActionCommand()=="calc"){ if(data_list == null){ texta1.setText("Need Load Data."); }else{ text1.setText(Double.toString(Calc.average(data,data_num))); text2.setText(Double.toString(Calc.varience(data,data_num))); text3.setText(Double.toString(Calc.standard_deviation(data,data_num))); } } } }
247 :
その5 :05/02/02 23:47:40
class FrameMain{ public static void main(String[] args){ FrameForm ff = new FrameForm(); ff.setVisible(true); ff.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); }
248 :
その6 :05/02/02 23:48:54
class Calc{ static double average(double num[],int n){ double average = 0; for(int i=0;i<n;i++){ average += num[i]; } return average/n; } static double varience(double num[],int n){ double varience = 0; for(int i=0;i<n;i++){ varience += Math.pow(num[i]-average(num,n),2); } return varience/n; } static double standard_deviation(double num[],int n){ return Math.sqrt(varience(num,n)); } }
249 :
質問です :05/02/02 23:51:41
以上で終わりです。長くて、省略されていたりしてすいません。とにかく困っています。どうぞよろしくお願いします。
ソースみないでレス。 NaNってあるけどparseIntしとるけ?
>>249 クラスFrameMainの閉じカッコがないけど、それをつければ動くよコレ。
動かした手順書くわ。
(1) 下の2行のテキストファイルtest.txtを用意。
---ここから
3
5
---ここまで
(2) プログラムを実行して、[Load Data]ボタンを押す。
テキストエリアに
3 5
と出力される。
(3) [Calculate]ボタンを押す。
平均と分散と標準偏差が出力される。
>>250 ちなみに、、数値変換できない文字列に対して
「Integer.parseInt()は例外投げる」
「Double.parseDouble()はNaNを返す」
だったと思うよ。
253 :
>>252 :05/02/03 00:30:34
ありがとうございます。今からやってみます。
254 :
>>252 :05/02/03 00:48:54
3と5の2行でやるとできました。 ですが、数字を増やしてやってみる(例えば3、4、5、など)と計算結果はでるのですが、SetDataには何も出ません。どうしてでしょうか?
Integer.parseInt()とDouble.parseDouble()って微妙に動作が違うのがアレだな。 Integer.parseInt(" 1") (←1の前に半角スペース入り)はNumberFormatException()発生。 Double.parseDouble(" 1.1") (←1の前に半角スペース入り)は普通にdouble値を返す。
256 :
>>252 :05/02/03 01:15:45
3と5の2行でやるとできました。 ですが、数字を増やしてやってみる(例えば3、4、5、など)と計算結果はでるのですが、SetDataには何も出ません。どうしてでしょうか?
257 :
なぜ? :05/02/03 01:28:33
あの、プログラムはいじっていないのに3と5の2行のもできなくなりました。なんで…??
そこを四苦八苦して突き止めるのがプログラマだ
259 :
デフォルトの名無しさん :05/02/03 01:34:55
今気づいたんですけど、最初にうまくいったときは、ターミナル上にdouble型で入力されたのがでていました。 ですが、SetDataがでないときはこうゆうのがでます。 apple.awt.EventQueueExceptionHandler Caught Throwable : java.lang.NumberFormatException: empty String at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:986) at java.lang.Double.parseDouble(Double.java:202) at FrameForm.actionPerformed(FrameMain.java:67) at java.awt.Button.processActionEvent(Button.java:381) at java.awt.Button.processEvent(Button.java:350) at java.awt.Component.dispatchEventImpl(Component.java:3598) at java.awt.Component.dispatchEvent(Component.java:3439) at java.awt.EventQueue.dispatchEvent(EventQueue.java:450) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:230) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
>>257 AppTrace=onがあるんだから、
1行おきにprintlnとかすればつきとめられると思うんだが。
デバッグしたことないの?
すまん。誤爆です。。
262 :
デフォルトの名無しさん :05/02/03 01:38:08
あの、デバックって…?すいません。
>>259 エラーメッセージの 2 行目以降に注目。
>java.lang.NumberFormatException: empty String
数値フォーマットの例外(エラー)が発生:文字列が空っぽ
>at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:986)
FloatingDecimal.java の 986 行目で発生してるよ
>at java.lang.Double.parseDouble(Double.java:202)
その処理は Double.java の 202 行目から呼ばれているよ
:
(以下省略)
このように、エラーメッセージをキチンと読めば初歩的なミスは大抵解るよ。
がんがれ。
264 :
>>263 :05/02/03 02:04:17
丁寧にありがとうございます。 挑戦してみます。
265 :
デフォルトの名無しさん :05/02/03 02:14:13
>java.lang.NumberFormatException: empty String 数値フォーマットの例外(エラー)が発生:文字列が空っぽ ここで私側にミスがあったのがわかりました。test.txtを作成するとき、最後の数字を入れた後に改行したのがだめでした。
266 :
デフォルトの名無しさん :05/02/03 03:23:18
小学6年生ぐらいの色白で髪が長くて大人しい赤いリボンとフリフリフリルの可愛い服がトレードマークの学校一の人気者美少女小学生が266をゲットなの
頼むから犯罪だけはしないでくれ
ArrayListにint型をaddする方法を教えてください(;´Д`)
>>268 1.4以前のJDKの場合は,
ArrayList list = new ArrayList();
list.add(new Integer(5));
のように,Integerクラスに包んで入れなければならない。
また,list から取り出すときも,
int num = ((Integer)list.get(0)).intValue();
のように元のint型にキャストすること。
JDK5ならオートボクシング・アンボクシングが働くから,こういう作業を裏で自動でやってくれる。
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
int num = list.get(0);
というコードがそのままコンパイルできる。
>>269 Integerだったんですね。ありがとうございます。
int型だとArrayListのインデックス値と認識されてしまって困っていました。
JDK5の方はgenericsでしたっけ。
やっと、ありがたみがわかりました。
JDK5は入れてないんですが、JDK1.4以前のコードはJDK5でも認識するんですよね?
>>270 >JDK1.4以前のコードはJDK5でも認識するんですよね?
はい。
明示的に1.4のコードと指定してコンパイルする(5.0特有の機能を使っているとエラーを出す)場合には,javac のコンパイルオプションとして -source 1.4 を指定して下さい。
>>269 のコードでは,5.0のgenericsと,オートボクシング・アンボクシングの機能を使ってます。
オートボクシング・アンボクシングは,今の例なら int 型と Integer クラスの変換が必要になった場面で,暗黙の内に自動的にその変換を行ってくれる機能です。
genericsは,ArrayListに<Integer>を付加することで,listの要素が Integer 型のインスタンスのみであることを保証します。これを使わないと,
ArrayList list = new ArrayList();
list.add(5); // ここはオートボクシングで暗黙の new Integer(5) がなされて Integer 型オブジェクトが入る
int num = list.get(0); // リストから取り出したものが Integer 型オブジェクトとは限らないので,アンボクシングできず,コンパイルエラー発生
となってしまいます。この場合でも,
int num = (Integer)list.get(0);
とすれば,Objectが一度Integerにキャストされた後,更にアンボクシングが働いてint型に変換されますので,警告付きですがコンパイルできます。
ですが,listに Integer しか入れないのであれば,ArrayList<Integer> と明示しておくことが推奨されます。
>>271 丁寧な解説ありがとうございます。
>オートボクシング・アンボクシングは,今の例なら int 型と Integer クラスの
>変換が必要になった場面で,暗黙の内に自動的にその変換を行ってくれる機能です。
ということは、
(1) JDK5スタイルでコーディングしてJDK5でコンパイルしても
(2) JDK1.4スタイルでコーディングしてJDK1.4でコンパイルしても
classファイルレベルでは変わりないということですか?
つまり、バージョン1.4のVM上で(1)のclassファイルが実行可能、
かつバージョン5のVM上で(2)のclassファイルが実行可能(これは当たり前)ということですか?
実行型JARの中でライブラリを使う方法についてなのですが Test - MANIFEST.MF - Test.class(プログラム中でlib.jarを使っている) - lib.jar という配置でMANIFEST.MFに Manifest-Version: 1.0 Main-Class: Test Class-Path: lib.jar にしてjar cvfm Test.jar MANIFEST.MF Test.class lib.jar でJARを作っても実行できません。どこが間違っているでしょうか。 アドバイスお願いします。
>>273 lib.jarはtest.jarに入れるんでなくて、
test.jarと同じフォルダに置いとくんでないの?
275 :
デフォルトの名無しさん :05/02/03 14:02:29
>>273 まにふぇすとに
Extension-Name: lib.jar
を追加してみてください。
>>274 そうやる人もいるみたいなんですが配布時にJARファイルだけにしたいので
>>275 できないようです・・・ライブラリをjarにしないで解凍しておけばできるんですが
質問というよりは確認なんだが、try-catchでcatchが複数あった場合、 上から順番に適合を見てくの? try{} catch (IOException e) {} catch (InterruptedIOException ioe){} ってあった場合、 InterruptedIOExceptionはIOExceptionに食われる?
>>272 いえ,たとえただの Hello World プログラムであっても,
5.0でそのままコンパイルしてできるclassファイルは,
1.4のJREでは動きません。
5.0のjavacで,1.4でも実行できるclassファイルを生成するには,
コンパイルオプションに -source 1.4 を指定して下さい。
しかし,その時は,ソースにはオートボクシングやgenericsなどの
5.0用拡張機能は使えなくなります。
1.4と5.0の互換性の少なさに悩みますね。α版Tigerの時のように
-source 1.5 -target 1.4 のコンパイルができれば嬉しいのですが。
>>226 java.util.Arrays#sortのAPI読め!
281 :
デフォルトの名無しさん :05/02/03 15:54:21
JAVAを始めようと思うんですけど、 - J2SE 5.0 - J2SE 1.4.2 どちらをダウンロードすればいいんでしょうか?
>>280 言い直す。
以下だと
try{}
catch (IOException e) {}
catch (InterruptedIOException ioe){hoge();}
hogeが実行されなかったが、
以下だと
try{}
catch (InterruptedIOException ioe){hoge();}
catch (IOException e) {}
hogeが通った。
で、仕様上これが正しいのか、と。
>>284 仕様なのね。きちんと理解できた。さんきゅうすこ。
286 :
デフォルトの名無しさん :05/02/03 17:00:18
ちょとと可能かどうか伺いたいんですが、 BCELとかJava5の機能(クラスファイルのバイトコードを扱える機能が加わりましたよね)で コンパイル済みのクラスファイルの中をいじくって、Threadクラスを独自実装のThreadクラスに置き換える とかいうこと(Threadを継承したクラスとかに)はできますでしょうか? javaのTreadクラスそのものを独自の実装に変えたいというわけではありません。Threadクラスが使われている 場所を任意実装のクラスに置き換えたいというだけです。 おねがいします。
287 :
286 :05/02/03 17:25:31
java Assistなどでもいいです。追加です
>>278 HelloWorldレベルでもそんなことが起きるんですか(;・∀・)
勉強になりましたm(_ _)m
>>286 java.*、javax.*、sun.*、などのパッケージに含まれるクラスに
手を突っ込むのはライセンスに抵触するような。
そうでないなら、そんな大掛かりな事しなくても済むだろうし。
290 :
286 :05/02/03 17:47:30
>>289 ええ、そこらへんをいじるつもりはありません。Threadの使われている地点に
あたかも独自実装のThreadクラスを継承したクラスを置きたいんです。
つまり、Threadクラスの使われている場所に追加機能を加えたいという事ですね。
クラスファイルから。ソースレベルでは考えていません。結果的にできれば手段は何でもいいです。
そんなことできますでしょうか?
>>290 技術的にはできる。ライセンス的に許されるかは知らん。
292 :
286 :05/02/03 17:51:16
>>289 すいません。おっしゃってる事の意図を勘違いしてました。
java.*、javax.*、sun.*、とかの中で使われているThreadクラスの部分を置き換えたらまずい
って話ですね。
とりあえず、開発者が書いた部分だけできればいいです。(でも、ソースの書き換えさえしな
ければ起動時の構成を変えるという手段をとっても大丈夫なのでしょうかね?)
293 :
286 :05/02/03 17:54:04
実行時だけjava.*、javax.*、sun.*、の中で使われているThreadの部分を置き換える という事はできるんでしょうか(sun配布のクラスファイルを書き換えたりせずに)
>>293 それらのクラスはブートストラップクラスローダが読み込む可能性が高いので技術的にも若干面倒になるかも。
ライセンス的にも相当ヤバいと思われ。
>>293 SwingWTっていうSwing/AWT互換ライブラリの例だけど
参考になると思う。
http://swingwt.sourceforge.net/faq.php >Q. Couldn't you have used the java.awt.*/javax.swing.* package names? I have to search/replace all my code before I can use this stuff!
>A. Yes and No. Yes, technically it can be done, but it requires
> deployment to jre/lib/endorsed for javax.* packages (making it
> tougher to deploy apps). Other disadvantages are that the
> default Sun classloader will refuse to load anything starting
> with java.* (so you need to override the classloader), and the
> big worry that classes might get merged from the real AWT/Swing.
>
>You can also use various Java pre-processors or Ant to change your code at build time for you.
つーわけで、SwingWTではSunのJREと組み合わせて使うときには
置き換えをやらずに別のパッケージ名を使ってる。
gcjの場合はまた話が違うんだけど。
int の i は小文字なのに StringのSが大文字なのはStringがクラスだからですか?
298 :
デフォルトの名無しさん :05/02/03 21:04:02
ルービックキューブの解法プログラムって簡単にできる? 見切り発車で作り始めちゃったんだが
perlのsplitみたいなのはありますか?
302 :
デフォルトの名無しさん :05/02/03 23:10:08
なめとんのかコラ!・・・てゆうかどうせーっちゅうんやワレ? HTTPステータス 500 - 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) java.lang.Thread.run(Thread.java:534) 原因 java.lang.NoClassDefFoundError: Cashsqlserv (wrong name: fweb/Cashsqlserv) java.lang.ClassLoader.defineClass0(Native Method) java.lang.ClassLoader.defineClass(ClassLoader.java:539) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
そのままだよなあ。
305 :
デフォルトの名無しさん :05/02/03 23:21:36
>>304 うほ!あんちゃんすげーなぁ
web.xmlの<url-pattern>ちょいイジッたらメッセージ変わったぞ
HTTPステータス 404 - /fweb/Cashsqlserv
type ステータスレポート
メッセージ /fweb/Cashsqlserv
説明 The requested resource (/fweb/Cashsqlserv) is not available.
げな
printfみたいなのありませんか?
>>276 jarの中でjarを読むのは無理
ライブラリを全部classに分解して、自分のclassと合わせて一つのjarにする
ただライセンス的に問題あるかも
310 :
デフォルトの名無しさん :05/02/03 23:55:59
Javaでmidiを扱いたいのですが、ドラム音色の出し方がわかりません。 以下のように、コントロールチェンジを使おうとしたのですが、正しく送信されていないようです。 Synthesizer synth = MidiSystem.getSynthesizer(); MidiChannel channel[] = synth.getChannels(); synth.open(); Soundbank soundbank = synth.getDefaultSoundbank(); channel[10].controlChange(0,127); //バンクセレクトMSBに127を送信 channel[10].controlChange(32,0); //バンクセレクトLSBに0を送信 channel[10].noteOn(42, 127); Thread.currentThread().sleep(300); channel[10].noteOff(42); synth.close(); どうしたらいいのでしょうか。 Javaのmidi関連のクラスを使うのは初めてなので、根本的に勘違いをしているのかも知れませんが、 よろしくお願いします。
System.out.println("Hallow World.");
>>310 midi直接はいじってないけどmidiファイル流して
とちゃんとなってるってことはたぶん動くんだよなぁー
サウンドバンクは本当に読み込まれてる?
JREには標準で入ってないけどSDKには入ってるんでコピーが必要だったりするよー
ちなみにサウンドバンクはサイズ的に小中大とあるけど大の音色きにいらねー
>>292 置き換えるってのが微妙だけど、バイトコードを書換えるのが目的なの?
それとも動作がかわってくれればOKなの?
後者でいいなら、ダイナミックプロキシで普通にできそうな気がするんだけど。
java.lang.reflect.Proxy
Proxy provides static methods for creating dynamic proxy classes and instances, and it is also the superclass of all dynamic proxy classes created by those methods.
>>312 ありがとうございます。
>サウンドバンクは本当に読み込まれてる?
についてはよく判りませんが、
上のソースをtryで括ってエラーをchachするようにしましたが、特に何もありませんでした。
というか、channel[9]としたら(0から始まっているので、midiチャンネル10を選んだ形)
一応ドラムの音が鳴らせました。
ほとんどのmidi音源で、ch10が予めリズム音色を鳴らすように割り当てられているおかげだと思うのですが、
(要するに肝心のコントロールチェンジは送信されてないみたいですが)
一応ドラム音色を出す手段が見つかったので、これで妥協します。
javaでのHTML解析で、EMBEDタグを検出したいのですが、 ニーモニック定数には登録されていないようなので、どのようにしたらいいのか、 途方にくれています。 HTML.unknowtagクラスを使うといいのかも?という所まではわかったのですが、 具体的な使い方がわかりません。 unknowntagクラスについては全く見当違いの事をいっているかもしれませんが、 どなたかご教授願います。 宜しくお願いします。
>>314 GM準拠なのであまり凝ったことはできないと思ってたほうがよかったかな
JavaSoundいじったのだいぶ前なので後で調べてみるわ
基本的に10chだけだと思っていいと思う
コントロールチェンジはボリュームとかだけは確認したような
317 :
デフォルトの名無しさん :05/02/04 02:02:42
hello world
318 :
デフォルトの名無しさん :05/02/04 04:43:56
>>315 隣のJava宿題スレッドの
>>30 に、同じようなHTMLタグを解析してる
プログラムが載ってるよ。。。
HTMLを自分でパースするのが面倒なときはJTidyなんかも使える。
320 :
286 :05/02/04 10:21:30
>>313 はい、動作さえ変わってくれればOKです。
321 :
286 :05/02/04 10:26:33
322 :
286 :05/02/04 11:25:19
>>313 動的プロキシってのは、ソースを改変せずに使う事ってできるんでしょうか?
(BCELとかJava Assistとか使ってプロキシクラスの呼び出しを無理やり挿入すればもちろん
できるでしょうが、とりあえず、そういった方法はとらずに)
323 :
231 :05/02/04 11:31:04
>>231 わかる方いましたらお願いしますm(_ _)m
324 :
デフォルトの名無しさん :05/02/04 12:53:57
>>323 CD-ROMの中にホームページがあるとは一体何なのか・・・・?
325 :
231 :05/02/04 14:10:56
>>324 わかりづらくてすいません。。
HPというか、IEなどのブラウザで見れる
html形式のファイルをファイルの中に入れておくってことです。
それで、そのhtml上にボタンとかをつけて、
選択して、クリックするとデータがプログラムに送られて、
プログラムがhtml形式で返して、それをブラウザ上で表示する、
みたいな感じです。
(これでもわかりづいか。。。_| ̄|○
326 :
231 :05/02/04 14:11:42
間違えました_| ̄|○ >ファイルをファイルの中に ファイルをフォルダの中に
>>325 JAVA宿題スレというのがあるので、そちらで聞いてみれば
運が良ければ、プログラムが来るかも
>>325 その画像はどこにあるのさ。そしてプログラムはどこにおくのさ。
CDROMの中のHTMLからサーバ上のプログラム(Servletとか)と通信するのか?
それともローカルで完結するのか?
そういうのいちいちこのスレでやりとりするの無理じゃねーか?
Tomcat5.5とJDK5.0を使ってるのですが、ジェネリクスが機能してないように思います 何か特別な設定が必要なのでしょうか?
>>330 何をもって「特別な設定」と呼んでいるのかは知りませんが
少なくとも、あなたの環境に施されていない設定が必要なんでしょうね
自分の設定すら満足に示さない方への回答としてはこれで充分ですよね
混乱するたびに聞きにきてスマン。 synchronizedについてなんだが、 例えば synchronized(this){ hoge(); } とか書くと、複数のスレッドからでもこのブロックは同期されるよな?(日本語変だけど) synchronized(new hanage()){ hoge(); } こうすると、このブロックが呼ばれるたびにオブジェクトが生成されるから、 その都度新しいオブジェクトのロックを取得していて、意味が無いということで 良いよな?この時点で違ってたら突っ込みぷりいず。 つまり、 synchronized( xxxx ) のxxxxの部分のオブジェクトは端的に言うと『ロックというフラグを提供しているだけ』なのか?
アプレット上にdrawメソッドで線や図形を描画する際に その描画速度の変更をしたいのですが可能でしょうか? よろしくお願いいたします
>>328 えと、画像もプログラムもCDの中です。
ローカルで完結したいと思ってます。
ここで聞くのはダメですかね。。
>>329 釣りではないんですが。。
URLどもです。
でもよくわからない。。。(´・ω・`)
CD-ROMの中に鯖を立てようとしてるな。 無理だ。 Javaアプリ→条件判断で画像収集→Javaアプリに表示 これくらいで諦めたらどうだ。 表示の段階でHTMLに出力できるようにすればいいだろう。
>>336 あ、サバになっちゃうんですか。。
特にhtmlにこだわってるわけではないんですが、
それが一番きれいに出力できる方法かなと思いまして。
Javaアプリってアプレットってことですか!?
アプリケーション
>>331 JDK5.0とTomcat5.5を普通にインストールしただけなのでなんと答えたらよいのか。
オートボクシングやジェネリクスが使えない以外(つまり従来のコードは)動くので「特別な設定?」と書いたのです。
>>339 確かに初期設定だとJSPの中で文法エラーになるね。
どこかに設定があるのかな・・・
>>332 ロックというフラグっていう表現がアレだけど、
まあ、それでわかってるならいいんじゃない?
xxx部分はロック対象なんですよ。
当然同じロックを取ってる同士じゃなきゃ排他制御されない。
>>343 標準APIで使用されている既存のクラスの挙動を変えたいなら java.lang.reflect.Proxy では不可能なのでは?
そもそも標準クラスがロード時に改変されるなんてことがセキュリティ的にあっていいのか。
>>340 >>342 ありがd
どうも頭の中セマフォなんで混乱しててさ。
モニタって例えば、
synchronized(hanage)
ってなってたとすると、
hanageオブジェクトが現在のスレッドを管理する、と。
あるスレッドを管理中だった場合、他のスレッドをwait()する、と。
言い方むずかし。
ともかく、理解は出来た。さんくすこ。
今度はケーキもってくるよ。
348 :
209 :05/02/05 01:19:42
質問したのに返事が遅くなりすみません。
>>213 さん
セッション関係の知識が全く無かった為にぐぐって
http://ash.or.jp/java/webapp_scope.htm を見て勉強していました。(難しい・・・)
>>215 さん
a1.jspで
<% application.setAttribute("uid", uid); %>
としてダメだったので
<% request.setAttribute("uid",uid); %>
としてもエラーが出てしまいます。
※uid は
<input type="text" name="uid" size="50" maxlength="20"><p>
という風に同一 a1.jsp 内に入力しています。
何が原因なのでしょうか?
>>345 既存のクラスじゃなくて、Threadを継承したユーザークラスだと思ってたんだけど。
話の流れから?違うの?
>>347 >あるスレッドを管理中だった場合、他のスレッドをwait()する、と。
これは間違い。
hanageオブジェクトが明示的にスレッドをどうこうするのではなく、
スレッドがhanageオブジェクトのロック状態を見て自主的に待機するだけ。
synchronizedブロックが一箇所ならどっちの認識でも変わらないけど
複数箇所になると正しく認識してないと混乱するぞ。
351 :
デフォルトの名無しさん :05/02/05 03:35:27
>>348 uidが変数ではなく、フォームからのパラメータなら
session.setAttribute("uid", request.getParameter("uid");
としてみてください
352 :
デフォルトの名無しさん :05/02/05 06:35:37
最近仕事がないんですが、どうすればいいですか?
探す仕事を変えることだ
今eclipseでJAVAを勉強しています。 JAVAでエクセルファイルを読み込んで書き込みをやりたいのですが、 どうすればよろしいのでしょうか? たとえば、読み込みシートのB3,C3から読み込み、データを編集し 書き込みシートB3、C3に書くっていった具合です よろしくお願いいたします。
>>352 もっと検索しろよ
人材派遣サイトをかえてみなよ。
つーか、今時プログラマなんて本当に仕事がないだろ。 あきらめい。時流だ。 一時派遣やってたけど、結局転職したよ。 まだプログラミングは嫌いじゃないので、今は趣味プロとして 気楽にやってるよ。
いまだにVBプログラマを募集してるような安定企業もあるけどな
359 :
286 :05/02/05 18:07:46
>>349 その通りです。ですが、理想を言えば、標準APIの中で使われた場合も置き換え
られたら最高ですね。
すいません。 servletで各画面からの受け取った<name>のvalueを判別する方法って、 if(xxx.quauls(value1)) { 〜〜〜〜〜〜 } else (xxx.quauls(value2)) { 〜〜〜〜〜〜〜 } else (xxx.quauls(value3)) { 〜〜〜〜〜〜 } って方法しかないのですか? もっとスマートなやり方があれば 教えてください。
すみません、教えてください。 本にのっとって初めてソースファイルをコンパイルしてみたのですが、 'c:\windows' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません と表示されて何をすればいいのかわからなくて途方にくれています。 この場合どうしたらいいのでしょうか。
>>361 どうやったらそうなったんでしょうか!?
Javaのウィンドウズアプリケーションを作りたいのですが、 全然作り方がわかりません。。 もし詳しく載っているHP等を知っている方いましたら教えてください。
>>363 そーゆー書き方だとこっちがどんなURL載せるかぐらいわかるだろ?
>>364 なるべく初心者でもわかりやすいところがいいんですけど。
368 :
デフォルトの名無しさん :05/02/05 19:50:49
JPanelにGraphicsで図形描画して、描画範囲がパネルのサイズを超えたときに 自動でスクロールバーをつけられるようにするにはどうすればいいんだー
369 :
デフォルトの名無しさん :05/02/05 19:53:29
いや、釣りとかじゃなくてマジなんですよ_| ̄|○ 何がどうなってこうなってるのか自分でもよくわからんのです。 切実に解決方法を知りたいんです。 OS入れなおしたら直るんでしょうか。
OS入れなおして直ると思うなら そうすればいいじゃない。 何の本見たのかも分からないし、その本に忠実に従ってやったのかも分からないし。
import java.applet.Applet; import java.awt.Graphics; public class main extends Applet{ public void paint(Graphics g){ g.drawLine(10, 10, 100, 100); }} <html><body> <applet code="main.class" width="200" height="200"></applet> </body></html> で上手くアプレットで線が表示できません。 もちろんブラウザにJavaappletをインストールして無いなんて事は無いのですが、 どうも自分の書いたコードが動きません。 どこがおかしいのでしょうか?
>>374 htmlとclassが同じディレクトリにちゃんとある?
>>375 あります。
Eclipseで開発してるのですが、javaソースに文法エラーはありませんし、
g.drawLine()ではなくg.drawString()でもやってみましたが
こっちも動きませんでした。
クマッタ・・・
バージョン
paint()の受け取るGraphicsってFlashのMovieClipみたいに複数枚に増やせる?
381 :
デフォルトの名無しさん :05/02/05 21:47:55
他のウィンドウで動いているプログラムに、キー操作を送る事は可能でしょうか? [Javaプログラム] →キー操作→ [他のプログラム] その逆も出来るでしょうか?
383 :
デフォルトの名無しさん :05/02/05 22:01:56
>OSは? 失礼しました。 WindowsXPです。
>>381 java.awt.Robot とか使えば出来るのでは?
385 :
デフォルトの名無しさん :05/02/05 23:19:24
class kadai { public static void main (String[] age) { int [] seiseki = { 85,40,89,72,84,53,23,68,78,94,16,54,81,68,30,70,48,65,80,87 }; for(int i =100; i >= 0; i--) { for(int j = 0; j <seiseki.length; j++) { if (i == seiseki[j]) { System.out.println((seiseki[j]+"点")); } } } } } このプログラムで成績が降順で並びかえれたのですが、点数の横に学籍番号を入れるにはどうすれば? 左から学籍1番なのですが。 40
>>385 > System.out.println((j + 1) + ", " + seiseki[j] + "点");
>>385 そのソート方法じゃ無理かも。。
class kadai {
public static void main (String[] age) {
int [] seiseki = { 85,40,89,72,84,53,23,68,78,94,16,54,81,68,30,70,48,65,80,87 };
int [] bangou = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };
for(int i =0; i < seiseki.length; i++) {
for(int j = 0; j < seiseki.length - i; j++) {
if (seiseki[j] < seiseki[j+1]) {
int k = seiseki[j];
seiseki[j] = seiseki[j+1];
seiseki[j+1] = k;
k = bangou[j];
bangou[j] = bangou[j+1];
bangou[j+1] = k;
}
}
}
for(int i=0; i < seiseki.length; i++)
System.out.println(bangou[i] + "番は" + seiseki[i] + "点です");
}
}
こんな感じだったらOKじゃないかな??
>>386 普通にできてる。。。(ノ∀`)アチャー
389 :
デフォルトの名無しさん :05/02/06 00:00:20
お二方、ありがとうございました。 いろんな方法があるのですね、参考になります。
390 :
デフォルトの名無しさん :05/02/06 00:46:34
>>385 (j+1)ってどんな処理が行われてるんですか?
それで番号がなぜでるのですか?
>>390 j+1は「jに1をくわえる」しょりですね。
jははいれつのなんばんめかをあらわしていますね。
せいとのてんすうはひだりからがくせき1ばんなのだから、
はいれつのなんばんめかがわかればよいですよね。
はいれつは0ばんめからはじまるので1をくわえてがくせきばんごうをあらわしているのです。
394 :
デフォルトの名無しさん :05/02/06 01:07:22
395 :
デフォルトの名無しさん :05/02/06 01:33:56
>>355 POIってプロジェクト終了したんじゃなかったっけ?
>>395 こないだ仕事でつかったけど
エクセルの値を読み書きするくらいなら
今のやつでも全然問題なく使えるぞ。
398 :
デフォルトの名無しさん :05/02/06 03:44:17
>java.awt.Robot とか使えば出来るのでは? これは他のウィンドウに対しても操作できるのでしょうか? 使用方法ご存知の方いらっしゃったら教えてもらえませんか?
指定したIPアドレスからホスト名に変換するにはどうしたらいいですか? ってか自分自身のIPアドレス&ホスト名を取得したいと思ってIPアドレスを 取得するのに↓こんな量になっちゃいました。もっと簡単な方法あるでしょうか? (この質問をすると「127.0.0.1とlocalhost」と表示されちゃうプログラムを答える人が多い…) ////////////////////// NetworkInterface ni = null; InetAddress ipa = null; Enumeration enuIfs = NetworkInterface.getNetworkInterfaces(); while(enuIfs.hasMoreElements()){ ni = (NetworkInterface)enuIfs.nextElement();//NetworkInterfaceに対する処理。 } Enumeration enuAddrs = ni.getInetAddresses(); while(enuAddrs.hasMoreElements()){ ipa = (InetAddress)enuAddrs.nextElement();//InetAddressに対する処理。 } String ipad = ipa.toString().substring(1); /////////////////////// ってことでString型ipadにIPアドレス(127.0.0.1じゃないよ)が格納されています。 これをホスト名に変換したいんですが…
InetAddress#getHostName()
401 :
348 :05/02/06 10:24:59
>>351 すみません。何とか1.jspにおいてはエラー画面が表示されなくなったのですが、
1.jsp ・・・下記コードを記述しエラー画面へは遷移しなくなりました。
<%session.setAttribute("uid", request.getParameter("uid"));
%>
2.jsp ・・・確認画面を表示させ、< action =3.jsp > を指定し
3.jsp で処理を実行させる。
3.jps ・・・このjsp内部での処理が上手く行きません。
具体的には
<%
String str = request.getParameter("uid");
%>
JSPで値渡しされたユーザ名は
<%=str %>です。
※と記述した結果なぜか
JSPで値渡しされたユーザ名は nullです。
と表示されてしまいます。(値渡しが上手く行っていない様なのですが
何が原因として考えられますでしょうか?
403 :
デフォルトの名無しさん :05/02/06 13:21:49
>>401 a1.jsp [ユーザにIDを入力して貰う。]
<form action="/test/a2.jsp" method="GET">
<input type="text" name="uid" size="10">
a2.jsp [入力内容確認画面:登録ボタンを押し、a3.jspで登録処理を行なう]
<% String uid = request.getParameter("uid"); session.setAttribute("uid", uid); %>
<%= uid + "を登録していいですか?" %>
<form action="/test/a3.jsp" method="GET">
<input type="submit" name="yes" value="はい">
a3.jsp [このjsp内部でDBへの登録を行なう。]
<% String uid = session.getAttribute("uid");
st.executeUpdate("insert into testTable values (" + uid + ");"); %>
とするとか・・・
初心者だけど、ソース読むときはどこで変数がどう弄られてるのかさえ理解できれば プログラムは全部分からなくてもある程度理解できるもんなんだな、と思った。
お前か、適当にいじってシステムを壊したのは?
>>405 スマン。見たこと無い関数に適当に数値代入してたのが原因みたいだ。
>>406 なんですかこれ?
プログラムの設計図みたいなもの?
>>357 今でも学生アルバイトとしてプログラマやってるよ。
けど給料が安い。
ITバブル崩壊に加え同時多発テロ事件が起きてから仕事が減り
給料も下がった感がある。
あの頃は儲かってたが今は儲からない。
しかも残業代が出ないために契約社員や正社員のほうが
アルバイトよりも単位時間あたりの報酬が安くなる
ってのにビックリ。給料が安いのでみんな怒っているみたいだ。転職を考えているという。
appletの勉強をしてるのですが、アプレットにボタンを貼り付けてボタンが押されたときに アプレット上に円を書くのはどうすればいいのでしょうか? public void init() にボタン貼り付けを書いて、 public void actionPerformed(ActionEvent arg0) に押されたときの処理を書くまではできたのですが、 ここから円を書く処理の public void paint(Graphics g) をどう呼び出せばいいのかわかりません。 public void paint(Graphics g){ g.drawOval(10,10,10,10) } の場合、どのようにこのクラスをpublic void actionPerformed(ActionEvent arg0)から呼び出せばいいのでしょうか? よろしくお願いします。
>>410 update()かなんか余分だよ。確か。
>>410 actionPerformed()の中で,paint(getGraphics()); を呼ぶ。
しかし,描画処理と表示処理のロジックを分離するためにも,ダブルバッファリングを使うことをお勧め。
アニメーションのちらつきを抑えるのにも有効。
こんな感じで。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Circle extends Applet implements ActionListener{
Button button;
Image img; // ダブルバッファリング用オフスクリーン
Graphics img_g; // オフスクリーン描画用グラフィックコンテキスト
public void init(){
Dimension d = getSize();
img = createImage(d.width, d.height);
img_g = img.getGraphics();
button = new Button("Click me");
button.addActionListener(this);
add(button);
}
public void paint(Graphics g){
g.drawImage(img, 0, 0, this);
}
public void update(Graphics g){
paint(g);
}
public void actionPerformed(ActionEvent event){
img_g.drawOval(10,10,10,10); // 必要に応じてここに img_g に対する描画処理を追加する
paint(getGraphics());
}
}
BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream("hello.txt"),"MS932")); みなさん毎回これ書いてる?一発でBufferedReaderを返すUtilクラスを 書いてもいいけど、そのUtilクラスに依存するのもイヤな感じ・・・。
それから、IO系のライブラリ書くとしたら引数はStream系とReader系どちらがよいだろうか悩む・・・。
>>415 バイナリ:ストリーム
テキスト:リーダ
何となくね。
>>411 さん、
>>413 さん、ありがとうございました。
特に413さん、わざわざソースまで書いていただいて本当にありがたいです。
無事上手く動かす事ができ、新たにJAVA APPLETについて知る事ができました。
さらに、書いていただいたソースからも自分が学ぶべきことが多数あり、
これを元にさらに勉強に励みます。
本当にありがとうございました。
class Outer{ class Inner{ } static class StaticInner{ } } StaticInnerのインスタンス作ると毎回違うものが返ってきた。 ここでのstaticってどういう意味なんでしょう?
>>418 thx! staticメソッドと同じような意味になるのか。
クラス継承していると同名のprivate変数とかにコンパイラが文句言わなくて 頭来るんですが、警告出すようにできませんか?
以下はエラーチェック用コードです(JDK1.4) public static void main(String[] args) { final double a_A=0.11, a_B=0.22, a_C=0.33; String form = "A,2,B,1,C,6"; String[] token = form.split(","); double[] cons = new double[10]; for(int i =0 ; i <= 4 ; i +=2) { if(token[i]== "A") cons[i] = a_A; else if(token[i]== "B") cons[i] = a_B; else if(token[i]=="C") cons[i] = a_C; System.out.println("文字 " + token[i]); System.out.println("定数 = " + cons[i]); } } とすると、 文字 A 定数 = 0.0 文字 B 定数 = 0.0 文字 C 定数 = 0.0 となり、求める定数(0.11,・・・)が現れません。原因は何でしょうか?
>>421 そんなに頭にきたなら警告出すようなコンパイラを自分で作れ。
>>422 同じインスタンスかどうかを比較するための == で比較してるから。
同じ値かどうかを比較したいなら equals を使え。
誰だよ、第三者の書き込みを5箇所くらいにコピペしてマルチに見せたのヾ(`口´=)
>>421 Eclipseのコンパイラ使え。コンパイラだけ抜き出して単体で
コマンドラインから呼び出して使うこともできるぞ。
427 :
今年大学生 :05/02/06 22:01:01
論外の質問だと思いますが。 今年入学の大学の授業で、1年生からJAVAをやるという 情報が入りました。グラフィックスなんですが、 今のうち自分で本を買って勉強できるようなものですか? 友達はいきなりJAVAはきついと言っているんで、 着いていけなくなるのが心配です。ちなみに今まで PCは趣味程度でしか使ってません。
>>427 プログラミング言語は人に教えてもらうようなものじゃないと個人的には思ってます。
>今のうち自分で本を買って勉強できるようなものですか?
全く問題なく勉強できると思います。
最初は「やさしいJava」とかでいいんじゃないですか?
>友達はいきなりJAVAはきついと言っているんで、
PC初心者に「いきなりプログラミング言語はきつい」と言ってるのか
「プログラム知らない人にいきなりJavaはきつい」と言ってるのかどっちか分かりませんが
後者ならそれはすこし前の話です。
あんまり本とか資料とかが出回ってないときは確かにそうだったかもしれませんが
「つまずくところが少ない」と言う点ではJavaは最初に学ぶ言語としてふさわしいと思います。
たとえ前者の意味だったとしても、若いうちは吸収が早いからなんでもすぐに理解できるでしょう。
まぁ結局はガンガレってことで。
Javaほど学びやすい言語はないよ 逆に、Javaすら難しいと感じるようであれば、やめたほうがいい
Javaは始めに学ぶなら学びやすいだろうね 俺はCから入った人間だからポインタが扱えなくてダメポ
432 :
デフォルトの名無しさん :05/02/06 22:17:49
プログラミング言語を独学するのは非効率的でしょう。 正規の教育機関で学んでこそ本当の力がつきます。
はぁ? プログラミングほど独学しやすいものはないし、 大学とかで教えてもらうなんてスタイルの奴で まともに使えた奴を未だ一人も見たことがないわけだが 出来る奴はこっちが何も言わなくても勝手に本買って勉強してる
434 :
デフォルトの名無しさん :05/02/06 22:35:02
432に賛同するわけじゃないけど、 433は、どれほど多くの人間を見てきたのか。。 個人的には楽しく学べるかどうかがキモかと。 独学に楽しみを見出すことができる人は、どんどん力がついていくし 教育機関が肌に合う人なら、そこで力がつくのもまた然り。
437 :
今年大学生 :05/02/06 22:42:35
おぉ、皆さん即答ありがとうございますっ。
>>428 が聞いた「きつい」の意味は後者だと思いますね。
それを読んだことで少し安心しました。
受験終わって遊びたいけど、本当に留年生が多い大学らしいので
今から気合入れてガンガリマス(?)
私の脳に限界が現れたときお世話になるかもしれないので
よろしくお願いします。
sage
実務では、独学しようとしないプログラマって使えないというのは 経験則的には正しいように感じるな。 なにしろ他に独学でバンバン吸収していく奴がいるんだから、「全部 教えてください」なんて人間に割く時間なんて、他の人間の邪魔にならない くらいの知識を与える程度に留めるよ。
440 :
デフォルトの名無しさん :05/02/06 22:45:02
変数の値渡し、参照渡し、参照の値渡しについて質問です。 変数が「配列」の場合は参照渡しになるのでしょうか??
441 :
デフォルトの名無しさん :05/02/06 22:50:48
>>440 参照でっせ
値渡しはプリミティブ型の変数よん
そういやうちの講師が 「大学入ってから勉強始めるやつは向いてない。 能力がある奴はとっくの昔に独学で力つけてる」 って言ってたなぁ…
443 :
デフォルトの名無しさん :05/02/06 22:54:27
441さん即レス感謝です。 重ねての質問になっていしまいますが 値渡し→プリミティブ型 参照の値渡し→オブジェクト型 参照渡し→配列 こんな理解でよろしいんでしょうか??
444 :
デフォルトの名無しさん :05/02/06 22:59:34
だから、その独学ってのは、正規の教育機関(大学、メジャーな専門学校) による手ほどきがあって、初めて成り立つって事です。 勿論、講義内容だけで終わらせてしまってはダメです。これは当たり前です。 一からの独学では独りよがりになってしまい、本当の力は身につかないって 事です。何事も基本が大事ですからね。
あれ?Javaの配列ってオブジェクトの一種だよね? だったら参照の値渡しじゃないの?
だから、独学でも基礎からなにまでほとんど間に合うって言ってるんだろ 正規の教育機関に手ほどきしてもらわないと基本が出来ない香具師は 向いてない以前の問題なんだよ
447 :
デフォルトの名無しさん :05/02/06 23:09:14
書店に行けば超初級本から超上級本まで ほとんど揃ってる。 ネット上でもアホみたいに解説サイトがある。 フリーのコンパイラも多数存在し、実際に自分で プログラムを打ってコンパイル、実行出来る。 こんな環境で正規の教育機関の手助けがないと 学べないなんて香具師はどうかしてる。
449 :
デフォルトの名無しさん :05/02/06 23:12:51
>>446 分かってないな。
例えばC++オンリープログラマの多くは、実務的じゃない。
隣の宿題スレとか、ゲームプログラムでガリガリコードを書くのに
特化してる人は、実務的な面ではさほどのレベルじゃない。
独学だとそういう部類に陥りやすい。
何故か? それは自分の興味のあるやつしか学ばないからだ。
プログラマには何より総合的な知識が要求される。
JAVAプログラマは標準APIという指針があるから、まだ
救いようがあるとはいえ、独学だと手付かずのAPIも多くなるだろう。
本当に学ぶには、どうしても正規教育機関の手ほどきが必要になるんだよ。
>>449 ゲームプログラムをガリガリ書ければゲームプログラマとして十分「実務的」だと思うが……?
悪いけど,「実務的」「本当に学ぶ」という言葉の定義をしてもらえるかな?
APIを全部網羅して覚えることが「本当に学ぶ」ということなの?
だんだんスレ違いになってきたんじゃないのカナ
>>445 私もそう理解していたのですが、
要素が一つの配列を引数にすると参照渡しができるという話を聞いて混乱してます。
いろいろ調べているのですが、コレという回答が見つからないんですよ。。
独学っていっても、情報科学なんて広い領域なわけで、 何を独学すればいいのか明らかじゃないんじゃないの? 大学の講義はそういう指針にはなると思う。 あと、Java言語だけを勉強すれば優秀なJavaプログラマになれるわけじゃないし。
>>452 ん?
Cで
int i;
foo(&i);
...
void foo(int *i) {
*i = ....
}
ってことやりたいときに、Javaでは&はつかえないから
int[] i;
foo(i)
...
vod foo(int[] i) {
i[0] = ...
}
ってやるって話だと思うけど。そんなことやらなくていいようにそもそも設計を見直すべきだと思うが。
>>452 参照渡しっぽいことを模倣できるというだけであって参照渡しじゃない。
こういうことでしょ?
static void func(int[] a){
a[0] = 10;
}
public static void main(String[] args){
int[] ia = new int[1];
func(ia);
System.out.println(ia[0]); // 10と出力
}
その手の怪しい話は結構あるので惑わされないように。
C++だけとか、Javaだけとかって感じで学んじゃうと C++>>>>>>Java!とか Java>>>>C++!!!とか Ruby!!!! とかいう変なおっさんになっちゃう悪寒
>>452 public static void main(String [] args){
String[] strs = new String[]{"foo"};
reset(strs);
System.out.println(strs[0]);
}
static void reset(Object obj) {
obj = null;
}
でちゃんとfooが出るからやっぱ参照渡しじゃないぽ
ありがとうございます。 設計のほうは見直して、素直に戻り値をとるメソッドを書いたのですが、 理屈を理解したいと思いまして。 まさに456さんのソースのようなことをやっていたのですが、 理屈がわからないです。。 どうも参照渡しの様に見えてしまうのですが。。
>>426 かたじけない。
そのコンパイラのFQDNなぞ教えていただけぬか。
>>449 >プログラマには何より総合的な知識が要求される。
ここでいう「総合的な知識」とは
すなわち 「
>>449 が持っている知識の範囲」
という解釈で良いのですね?
javaでは、引数として指定された値が全て「コピー」されて メッソドに渡されます(これを「値渡し」といいます) 「プリミティブ型 」「参照型」の2つの変数があり、 「参照の値渡し」「参照渡し」の区別はありません。 オブジェクトは常にメモリ(ヒープ)中の一か所だけに 存在しそこからうごきません。 オブジェクトそのものは渡しません。 プリミティブ型 の変数には、値そのものが格納されますが、 参照型の変数に格納されるのは常に「オブジェクトの存在場所」を知らせる 情報(アドレス)だけです。 参照型の変数にはオブジェクトそのものは格納しません。
参照型の値渡しは結局のところ参照渡しだよなぁ。。。 アドレス演算できんからなおさら。
>>464 他人と技術用語の意味が一致しなくても全然構わないヒキコモリとかならそれでも良いけどね。
なんかドツボにハマッてます。。 以下のソースで実験してるんですが、 import java.io.*; public class test{ static void func1(String a){ a = "10"; } static void func2(String[] sa){ sa[0] = "10"; } public static void main(String[] args){ String s = new String(); String[] sa = new String[1]; func1(s); System.out.println(s); // 出力なし(ここは理解できる func2(sa); System.out.println(sa[0]);//10と出力(なんでー!? }
>>443 おまいは一回Javaから離れてC++で
ポインタと参照を使いまくれ
んでまた戻ってこい
ありがとうございます。 やっぱ道は険しいっすね。でも、がんばります。 そして戻ってきます!教えられる側になって。
助けていただきたいのですが、 サーブレットで、トムキャットとmysqlを使用して データベースの情報を参照するプログラムのサンプルを本から持ってきて実行したのですが java.lang.NullPointerException at Sample203.doGet(Sample203.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at 〜〜〜 というエラーが出てしまいます。 Sample.javaの49行目は Statement statement=connection.createStatement(); なんですが、何が悪いんでしょうか...? 可能性でもいいので教えていただけませんか? nullなわけないんですが...
Javaは独学で十分だ。 俺は会社に入ってから1からプログラミングを勉強したが、 6年経った今ではJavaの著書も何冊かあるし雑誌記事の依頼も来るし講演の依頼も来るようになった。 大学は文系の学部で情報処理やITとは何の関係もないよ。 IT系の専門学校など、自分で勉強できることを金取って教える詐欺のようにさえ見える。
>>470 >nullなわけない
ホントにか?ちゃんと調べて言ってるんだよな?
>>472 だと思うんですが...本をそのままうつしてますし...
でもヌルポインター〜〜が出るって事はヌルって事なんですよねぇ...
あの、Streamのオープンやクローズ処理を共通で使われるユーティリティー的な クラスで実装するのってどうなんでしょうか?
要素1の配列を参照渡しの代用として使うような
>>459 や
>>467 はJavaで最もやってはいけないコーディングのひとつ。
こんなコード書く奴がいたらすぐクビにするから。そのつもりでな
実験ならもちろん構わんがね。
String[] sa = new String[1]; 参照型の配列変数を確保しただけです。 static void func2(String[] sa){ sa[0] = "10"; } ここで初めてヒープにデータを作成。 System.out.println(sa[0]);//10と出力(なんでー!? sa[0]に入っているアドレスを参照してオブジェクトにあくせす。
>>470 自分の環境にあわせないといけないとこはあわせないといかんのに
本を丸写ししてるから正しいはずだってアホか?
データベースのURLかユーザ名かパスワードかが間違ってて
connectionが正しくオープンできてないんだよ。
>>470 例外を静かに握りつぶす最悪のコードの悪寒
>>478 Connection connection = null;
try{
connection = DriverManager.getConnection(略);
}catch(SQLException e){
}
こんな感じでスルーしてそうだな
>>478 ,479
getConnectionで例外を投げずにnullを返す実装もあるぜ。
最悪のJDBCドライバ実装の悪寒
intの0であればStringの0000、intの10であればStringの0010、と 書式指定でintからStringに変換するにはどうすれば良いのでしょうか。 何か一発で変換できるAPIはありますか? J2SE1.4.2です。
>>482 java.util.DecimalFormat
こんばんは。APIを一生懸命見てもわからなかったので質問されてください。 「JTextFieldオブジェクトのテキストフィールドにマウスカーソルがある時に キーボードのEnterを押すと、JButtonオブジェクトのボタンが押された時と同じ 働きをする」 というプログラムを書きたいのですが、まず「テキストフィールドにマウスカーソルがある時」 のとこから全くわかりません。 よろしくお願いします。
>>423 さん、ありがとうございます
文字列の比較だから、equals()ということですな。
>>483 java.text.DecimalFormatでできた!サンクス!!!
>>467 Stringはちょっと特別だから、参照について調べる時はStringBufferでやってみな。
>>484 ダイアログとコントロールの基本をもう一度見直せ
>>484 の求めているのと全く同じ挙動かどうかは分からないけど,こんな感じでやってみるのはどうよ?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class KeyTest extends JFrame implements ActionListener, MouseListener, KeyListener
{
Container cp;
JTextField mainField, stateField;
JButton writeButton, clearButton;
boolean mouseIn;
public KeyTest()
{
mouseIn = false;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(10,10,400,100);
cp = getContentPane();
cp.setLayout(new FlowLayout());
mainField = new JTextField("",10);
mainField.addKeyListener(this);
mainField.addMouseListener(this);
stateField = new JTextField("Out",10);
writeButton = new JButton("書く");
clearButton = new JButton("消す");
writeButton.addActionListener(this);
clearButton.addActionListener(this);
cp.add(mainField);
cp.add(stateField);
cp.add(writeButton);
cp.add(clearButton);
this.setVisible(true);
}
public void actionPerformed(ActionEvent event){ if(event.getSource()==writeButton) write(); else if (event.getSource()==clearButton) clear(); } private void write(){ mainField.setText("hoge"); } private void clear(){ mainField.setText(""); } public void mouseEntered(MouseEvent e) { mouseIn = true; stateField.setText("In");} public void mouseExited(MouseEvent e) { mouseIn = false; stateField.setText("Out");} public void mouseClicked(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void keyPressed(KeyEvent e){ if(mouseIn && e.getKeyCode() == KeyEvent.VK_ENTER) write(); } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e){} public static void main(String[] args){ JFrame frame = new KeyTest(); } }
>>475 やっちゃいけないと思うけどswap()したいときってどうするのが
正解でつか?
public class SwapTest { public static void main(String[] args) { String s1 = "1"; String s2 = "2"; Object[] o1 = new Object[] { s1 }; Object[] o2 = new Object[] { s2 }; System.out.println("swap前"); System.out.println("o1[0]=" + o1[0]); System.out.println("o2[0]=" + o2[0]); swap(o1, o2); System.out.println("swap後"); System.out.println("o1[0]=" + o1[0]); System.out.println("o2[0]=" + o2[0]); } public static void swap(Object[] o1, Object[] o2) { Object tmp = o1[0]; o1[0] = o2[0]; o2[0] = tmp; } }
あとは両方コレクションに突っ込んで中身いれかえるとか。 まぁ、こんなコードありえないけどな。 必要な場面もないだろうし。
>>477 ありがとうございます!!
たしかにユーザとパスワードのところが空欄になっていたので
rootにしたら動きました!!本当にありがとうございます。
プログラムなんて初めてなものであほな事言ってすみませんでした。
本ではmysql使うのにわざわざrootとか書いてなくても色々できるみたいですが、
うちの環境では出来ないみたいで...
理由は僕にはよく分からないのでrootを付け足して色々本からぱくって行こうと思います。
ありがとうございました。
引数の参照の値渡しと参照渡しの違いって 参照の値渡し→引数の参照先を変えても渡した側には反映されない 参照渡し→引数の参照先を変えると渡した側にも反映される ってことですか?
>>489 >>490 わざわざありがとう!そのソースを参考にいろいろやってたらできました。TextFieldもActionListenerに登録できることを始めて知った!ちなみに例としてこんな感じ
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TextFieldEnter extends JFrame implements ActionListener{
JTextArea tArea;
JTextField mainField;
JButton writeButton;
public TextFieldEnter(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100,100,500,400);
tArea = new JTextArea();
tArea.setEditable(false);
mainField = new JTextField("",30);
writeButton = new JButton("書く");
JPanel pn = new JPanel();
pn.setLayout(new FlowLayout());
pn.add(mainField);
pn.add(writeButton);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(pn, BorderLayout.SOUTH);
cp.add(tArea, BorderLayout.CENTER);
cp.add(new JScrollPane(tArea), BorderLayout.CENTER);
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
}catch(Exception e){}
mainField.addActionListener(this);
writeButton.addActionListener(this);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){ if(e.getSource() == writeButton || e.getSource() == mainField){ write(); } } private void write(){ String str = mainField.getText(); if(!str.equals("")){ tArea.append(str + "\n"); mainField.setText(""); } } public static void main(String[] args){ JFrame frame = new TextFieldEnter(); } }
>>496 確かにそうだが、参照渡しで渡されたクラスが参照している
データまで反映されるかどうかは状況による。
GUIをグラフィカルに開発する支援ツールみたいなものはないのでしょうか・・・。 Vectorでささっと検索してみたところ、「CoffeeMaker」なるものがヒットしたので早速インストールしてみたんですが、 コンテナが勝手にサイズ変更し始め高さ-2となって、「いわゆるタイトルバーだけ」になってしまうという謎の現象がおこり、 使い物になりません。 これ、自分だけなんだろうか_| ̄|○ ちょっと他のPCでも試して見ます。
>>500 なぜSun謹製のNetBeansを使わないのかね?
Eclipse+Pluginでもいいけど。
>>501 ぬあっ。。。そんなものがあったとは・・・
今まで馬鹿正直にエディタでGUI組んでました_| ̄|○
多謝。
503 :
デフォルトの名無しさん :05/02/07 16:04:37
Javaからスクリーンショットを撮る方法あったら教えてください。 お願いします。
>>503 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(new Rectangle(screenSize));
>>504 それだとビデオカード二枚差とかのマルチディスプレイに対応できんと思われ。
>>507 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
あとはnew Robot(gds[i])を全部回ればOKかな。
アプレットウインドウの大きさを取得するにはどうすればいいのでしょうか? 取得して、それをint型に入れたいです。 また、クラスライブラリ(であってるかな・・・?)を、一つ一つ細かく説明してるサイトってありますか? まだまだクラスを覚えられなくて・・・ よろしくお願いします。
>>508 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
Rectangle bounds = gds[0].getDefaultConfiguration().getBounds();
for(int i=1;i<gds.length;i++){
bounds = bounds.union(gds[i].getDefaultConfiguration().getBounds());
}
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(bounds);
で良いのでは?
513 :
デフォルトの名無しさん :05/02/07 17:49:59
ロボットをキーボードで操作してHOMEに帰すゲーム作れますか? 以下がゲームの必要事項です。 スタートボタンを押すとロボットとHOMEをランダムで格子状のステージに配置します。 HOMEはプレイヤーにはわからないようにします。 ロボットはキーボード操作でマスを上下左右に移動できます。(斜めはなし) 上=I, 下=M, 右=L, 左=Jのキー配置です。 ロボットが一マス動くごとに1ドルのコストがかかり、それを計算して最終的にトータルコストを表示します。 ロボットが一マス動くごとにステージをアップデートしてHOMEまでの距離を表示します。 ロボットがHOMEについた時点でゴールです。 ゴール後ウィンドウをポップアップさせてトータルのコストとリプレイするかしないかを表示します。 アプレットとgridLayoutを使って作ります。 以上です。 どなたかできる方いますか?簡単ですかね?
できるし、簡単だね。
簡単だけど面白くないのでやらない
なかなか面白い宿題だな。頑張れ。
>>496 >参照の値渡し→引数の参照先を変えても渡した側には反映されない
これはプリミテイブ型の引数の場合
>参照渡し→引数の参照先を変えると渡した側にも反映される
参照型はアドレスがコピーされるのでアドレス先はヒープに
オブジェクトがあるので、そのオブジェクトの内容は変更されます。
518 :
デフォルトの名無しさん :05/02/07 18:44:38
バックの絵が透ける描画アプレットを作ってみようとしたのですが JPanel panel1 = new JPanel(); // 下を透過させる為にJPanel使用 panel1.setOpaque(false); // 透過モードにする Graphics g = (Graphics2D) panel1.getGraphics(); // とりあえず透過色で全消し g.setColor(new Color(255, 255, 255, 0)); g.fillRect(0, 0, 100, 100); // 半透明な赤でライン描画 g.setColor(new Color(255, 0, 0, 128)); g.drawLine(0, 0, 100, 100); // 今のラインを透過色で消したい g.setColor(new Color(255, 255, 255, 0)); g.drawLine(0, 0, 100, 100); ↑ここが効きません、アルファを同じ128にすると赤はなくなりますが 白い半透明になってしまいます g.setCompositeで合成モードを色々変えても期待する動作にはなりませんでした 要は「アルファ値0で上書き」したいだけなのですがアドバイスお願いします
>要は「アルファ値0で上書き」したい アルファ値0で塗りつぶすと、どうなると思っている?
ひょっとしてjavaって、Cみたいにexeにして配布する事に向いてない言語ですか?
>>519 透明色を上から塗っても色は変わらないというのは分かりますが・・・
ではレイヤー概念のあるペイントアプレットの消しゴムは
どのように実現しているのでしょうか?
523 :
デフォルトの名無しさん :05/02/07 20:37:44
JAVAにはevalというのはないのですか? あってもおかしくないと思うのですが、探してもないということは ないんですかね
>>523 Java はインタプリタ型じゃないから標準では eval は無い。
インタプリタやら実行時にバイトコードにコンパイルしたりするものやらがあるので自分が気に入ったもの使え。
>>523 探しても見つからないのは存在しないからなのか?
それとも自分の探し方が悪いのか?
526 :
デフォルトの名無しさん :05/02/07 22:48:43
すみません、(怒られるかも知れませんが)
>>1 の Wiki から辿ったらダウンロード出来ました。
>>528 さんのおっしゃる通りでした。お騒がせしましたm(_ _;)m
>>529 さん、
>>530 さん、すみませんでした。
>>531 >>528 の言うとおりだって分かってるならプログラミングやめろよ。
ダウンロードしたって事はやる気だろ。
無理って書いてあるのに。
何が「おっしゃるとおりでした」だ厨房
なんかデジドカがわめいてるな
ガキがガキに喧嘩売ってるだけだろ。 生暖かく冷やかしときゃいい。
おまえら釣られすぎ
TextField tf; tf = TextField("",20); add(tf); このようにテキストフィールドをアプレットに貼り付けたとき、 テキストフィールドの位置を座標で指定したいのですが どうすればいいのでしょうか? よろしくお願いします。
>>491 swap(a, b) したい場面でのa, bってのは9割方リストの要素。
だからほとんどの場面で swap(collection, indexA, indexB); で事足りる。
(だからCollections#swap(List,int,int)というメソッドは既にある)
どうしてもswap(ref a, ref b)したければ、
展開してtmpを使うか、
class ObjectRef<E> { E ref; }みたいなものを作るか
のどちらかしかない。
>>492 はクビな
newないのを突っ込むべきかどうか。 java 座標指定 でぐぐったりしてないね。
無駄口叩いてる暇あったら答えろや
541 :
513 :05/02/08 04:03:33
やっぱ簡単ですか・・・。 java始めてようやくアプレットで四角とか絵をかけるようになっただけの自分にはきついっす。 gridLayoutの使い方だけはわかるんですけどね・・・。 どうしたらロボットがgridの上をキーボード操作で動いてくれるのだろう・・・。汗
無駄口叩いてる暇あったら自分で調べろや
543 :
デフォルトの名無しさん :05/02/08 14:42:39
>>541 宿題なら宿題スレに行けば、回答プログラムがくるかもしれんよ
>>409 学生のなにがいけないんだい?
研究しながらバイトしてどこが悪いんだい。
TexitFieldに入力された文字列をstrに代入したいのですが、うまくできません。 以下のソースで、どこがおかしいのでしょうか? String str1; TextField tf; Button bt; public void init(){ tf = new TextField("",30); bt = new Button("開始"); add(tf); add(bt);} public void actionPerformed(ActionEvent arg0) { bt.setLabel("中止"); str1 = tf.getText(); } インポートなどのソースは省きました。 よろしくお願いします。
547 :
デフォルトの名無しさん :05/02/08 16:16:56
addActionListener()
548 :
デフォルトの名無しさん :05/02/08 16:49:21
String型の配列をChar型の配列に変換したいのですが、StringBufferを 使わずにやる方法がわかりません、どなたか教えてください
550 :
デフォルトの名無しさん :05/02/08 17:01:01
釣りとかじゃないで本当にわからなくて困ってるんですけど
StringBuffer使ったやり方じゃダメなんだよ?
「なんで」が抜けてた
553 :
デフォルトの名無しさん :05/02/08 17:05:15
目的としているプログラムが配列の要素ごとで比較する必要があるからです
じゃあ、for文で回せばいいんじゃ?
File[] files = dir.listFiles() 万単位のファイルのあるディレクトリでやると非常に重くなるわけですが、軽く処理する方法とかありませんか? ファイルは一つずつ全て内容を確認し、その結果によって次の処理に入ります。(他のファイルと比べたりはしません) 今のプログラムだと、「ディレクトリのファイル全てを取得→確認」になって、間に時間差があるのがもったいないです。
Char型なんてないよ。 java.lang.Characterのこと?それともたんなるcharのこと? まずはそれからだ。
>>555 フィルタかけてリストとってったらどうだろう?
558 :
デフォルトの名無しさん :05/02/08 17:18:16
char配列のことです。 for文で回すって一つの要素づつ変換していくってことですか?
>>555 ファイルの一覧を別のファイルに保存しておくとか?
>>558 その通り。これでいいだろ。
String[] a = { "abc", "def", "ghi" };
char[][] b = new char[a.length][];
for ( int i = 0; i < a.length; i++ ) {
b[i] = a[i].toCharArray();
}
>>558 どういう状態から最終的にどういう形にしたいのかちゃんとかけよ。
例.String[] stringsをchar[] charsにしたいとか。
562 :
デフォルトの名無しさん :05/02/08 17:30:21
すいません、String a[] = {"....",".....","....","...."}を Char t[] て形にしたいです
だからCharってなんだよ。 char[]になればいいんだな?char[][]じゃなくて。 その場合はString[]の先頭からつめて一つの配列になればいいんだな?
>>562 じゃあ、StringBufferでいいじゃん。
StringBufferが嫌なら、
String[] a = { "abc", "def", "ghi" };
StringWriter b = new StringWriter();
for ( int i = 0; i < a.length; i++ ) {
b.write( a[i] );
}
char[] c = b.getBuffer().toString().toCharArray();
565 :
デフォルトの名無しさん :05/02/08 17:37:08
iReport使ってる方に質問です PDFをつくりページ数を○/○って感じで出したいと思ってるのですが 分子の方は $V{PAGE_NUMBER} で出るんですけど、分母の全ページ数の出し方がわかりません デフォルトで $V{PAGE_COUNT} というのがあり、これがページ数と思うのですが いくらページがあっても0のままです、どなたかわかりませんか? よろしくおねがいします
566 :
デフォルトの名無しさん :05/02/08 17:38:51
char[]にしたいんですけど配列の要素ごとにわけたいんです。 だからString[]の要素を一つの配列にするわけにはいきません
>>566 どうしたいんだよ?char[][]ってことか?
それともchar[]のListか?すごいイライラするんですけど。
568 :
デフォルトの名無しさん :05/02/08 17:43:20
char[]のリストです、本当にすいません
>>568 String[] a = { "abc", "def", "ghi" };
List list = new ArrayList();
for(int i=0;i<a.length;i++){
list.add(a[i].toCharArray());
}
}
質問の仕方が下手すぎるせいでスレを無駄にした。
>>568 ぬっころすよ?
char[][]でダメな理由がわからん。
ほれ。お前クソだから、取り出す方でも悩むと思ったので、そっちも書いてやったよ。
String[] a = { "abc", "def", "ghi" };
List b = new ArrayList( a.length );
for ( int i = 0; i < a.length; i++ ) {
b.add( a[i].toCharArray() );
}
for ( Iterator i = b.iterator(); i.hasNext() ) {
char c[] = (char[])i.next();
}
>>568 で釣りと言えるならこのスレの発言全てが釣りだと言えそうだな
ば、ばーか! むしろ俺が釣ってたんだよ!
まぁ、誰が釣ったかなんてどうでも良いわけで、 重要なのはここがJava質問・相談スレであることなのだが
>>569-570 ありがとうございます。
ただ、現在ならJDK1.5の形式で書いてもらうと嬉しかったのですが・・・
分かんないのなら別にいいのですけどね。 それにしてもイライラするとかお前クソだからとかぬっころすとか 偉そうな口聞いてる割には、前バージョンのコード書いてくるなんて
今時新バージョン使ってるやつは素人と物好き
論理演算子のorの縦線ってどうやって入力するんですか?
||||||||||||||||||| 好きなだけコピペしる。
||||||||||||キタ━━━━━━(゚∀゚)━━━━━━ !!
「縦線が2つに分かれてるので違います」とかはナシな
>>432 どういう教育機関だよ?
大学では教えてくれないところもあるし
授業にJavaを使うことがあっても
Servlet/RDBMS関係のプログラミングを教わることは僅かで
ほとんど独学だぞ。
>>545 お前、新卒社会人になった程度で偉くなったと勘違いしていないか?
実際に仕事してみないとそいつの実力なんてなかなかわからないもんだぜ。
>>444 > だから、その独学ってのは、正規の教育機関(大学、メジャーな専門学校)
> による手ほどきがあって、初めて成り立つって事です。
> 勿論、講義内容だけで終わらせてしまってはダメです。これは当たり前です。
> 一からの独学では独りよがりになってしまい、本当の力は身につかないって
> 事です。何事も基本が大事ですからね。
それは言い過ぎだぞ。大学じゃ教わることは限られている。
ネットを使って独学するか実際にプログラマとして仕事をしたほうが学習速度が速い。
ネットなら@IT, メーリングリスト、Slashdot, Wiki, Blog, 掲示板などでJavaに関する最新情報
が手に入りやすい。Jakarta関係はネットで得たほうが効率的だ。
大学の教授でApache Struts, BeehiveやMaven, Hibernate, Spring Framework, Ant, Eclipse, JBossのことを知っている香具師は
ごく僅かだし大学でJavaの研究している香具師は大抵、Java言語そのもの、VMの研究ばかりしている香具師が多く
応用や実践で役立つ情報は得にくい。
>>449 > プログラマには何より総合的な知識が要求される。
> JAVAプログラマは標準APIという指針があるから、まだ
> 救いようがあるとはいえ、独学だと手付かずのAPIも多くなるだろう。
そういう香具師もいるだろうけど経験を積み、最新情報を常にチェックして
新技術を実際に使ってみて試してみることができる奴ならいそういう
事態に陥ることは少ないと思うぞ。
独学だと手つかずのAPIってたとえばどういうAPIだ?
>>587 普通にJavaプログラミングしてるだけでは使わないであろうAPIという意味ならいろいろありそうな悪寒
個人で扱わない標準APIはCORBAくらいかな
CORBAってJavaのAPI? RMIじゃない?
というか、大学でも全てのAPIを網羅したような授業は受けませんが。
個人が普通に使うのは ・awtやSwingといったGUI全般 ・JDBC方面 ・utilとかlangとかコア ・XMLまわり ・JavaSound ・I/O といったところだな
必要なライブラリやAPIがどのへんにあるのか アタリをつけて探せるようになれば一人前。 全部丸暗記しようとする奴はアホ
俺さ、クラスのオーバーライドだとか、継承だとかあんまり知らんうちに GUIを弄りたくてSwingを先に覚えて、そこから少しずつJAVAを知ってったけど これは駄目パターンなのかな
なんであれ好きなものから始めるってのは大事じゃないか? 最終的に理解できたのならいいとおもわれ でもSWTからはじめるってのは勧めにくいかも
>>594 Swing使ってれば必然的にクラスの継承やメソッドのオーバライド、
インタフェースの使い方などを覚えるはず(というか覚えないと無理?)
なので、それでうまくいったのなら良し。
乗り物だの動物だの、実感の湧かないクラスばかり作ってるよりはずっと有意義だよ。
おお、割と好評価。 まぁ、確かに実感のわかないというかイマイチわかりにくいクラスをプロンプトで 動かしてるよりはいいかなと思ってる。 最初はアプレットだったけど。 ただ、俺はまだまだ初心者の領域ダケドナー
なんにせよ前向きにやってるのがいい
Vector hoge = new Vector(); for(int i=0; i< hoo[].length; i++) { if(hoo[i].isBar()) hoge.add(hoge[i]); } こんなことした場合、forから抜けたときに Vectorの hoge に追加した hoo[i] は null を返すようになるんでしょか。
>>599 a=1; b=a; とやったら a は 1 じゃなくなるんですか?
>>600 何がいいたいのかわからん。
>>594 そのSwingの学習を正規の教育機関の講義でやったのなら無問題だが、
独学だとやや難があるかもしれない。
とうとう壊れたか? このスレで Swing を正規の教育機関の講義でやった 香具師ってどのくらいいるのよ?
独学だと自分の興味のおもむくままに進んでしまい、基本的な仕組みから 学べてない事が多い。ただコンポーネントを表示&操作だけに特化する 恐れがある。
>>605 しょうもない妄想してる暇があったらオープンソースのソフトでも書いて社会に貢献しろ
>>596 >>乗り物だの動物だの、実感の湧かないクラスばかり作ってるよりはずっと有意義だよ。
そういう考えが危険だという良い見本だ。
質問です。 メソッドのオーバーロードについてなんですが、インターフェイスを以下のようにして interface Answering{ void recording(); void playback(); } インターフェイス実装してみたところ class Phone implements Answering{ String str; public void recording(){ System.out.println("録音メッセージをお願いします"); } public void playback(String str1){ str=str1; System.out.println("「"+str+"」というメッセージを受け取りました"); } } playbackメソッドをオーバーロードできなかったので、インターフェイスのメソッドをvoid playback(str1)としたらうまく いったんですが、オーバーロードの際は、引数もかかなきゃだめなんでしょうか?
まずオーバロードとオーバライドの区別をつけろ。
>>609 インタフェースで定義しているのとは別の引数でメソッドをオーバーロードしたという話だろ?
すいませんオーバーライドでした・・
あと、サブタイプ(サブクラス)とスーパータイプ(スーパークラス)が何なのかも理解しろ。 そしたら何で引数の型も必要なのかわかる。
>>609 ,612
アドバイスありがとうございました。
あと、void playback(str1)じゃなくてvoid playback(Stirng str)ですねorz
[1] public class keinData { public static void main(String[] args) { String dt; InputStreamReader input=new InputStreamReader(System.in); BufferedReader in=new BufferedReader(input); while (true) { try { dt=in.readLine(); if (dt!=null) { System.out.println(dt); } } catch (IOException e) { // TODO: handle exception System.out.println("io error."); } } } }
[2] public class keinData { public static void main(String[] args) { String dt; InputStreamReader input=new InputStreamReader(System.in); while (true) { try { dt=Integer.toString(input.read()); if (dt!=null) { System.out.println(dt); } } catch (IOException e) { // TODO: handle exception System.out.println("io error."); } } } }
[1][2]は両方ともキーボードから入力した文字列をリターンキー時に表示するプログラムです 今読んでる参考書には[1]のプログラムが書いてあったんだけど自分で[2]も書いてみたら同じ結果になりました 参考書・javadoc読んでもバッファリングして効率化してるって言ってるけどよく解らないよ どなたかもう少し噛み砕いて教えてください
1のコードはSystem.inから数キロバイト(バッファサイズ分)ごそっとメモリに読み込む。 プログラムはreadline()で改行まで読み込むが、実は裏ではとっくにもっとたくさん読み 終わってる。次のループではたぶんメモリから読むだけだ。 2のコードは、input.read()で1バイト読んで、処理して、次のループで1バイト読んで、 処理して、を繰り返す。上記例だとSystem.inだけど、InputStreamReaderが読んでる ものがディスク上のファイルであろうと、ループの度に1バイトだけ読んで、処理して、 次のループで1バイトだけ読む。1のコードならディスクから一気にバッファサイズ分 だけ読んでしまうので速い。
>>617 有難うございます、とても解りやすいです
一つお聞きしたいのですが、バッファのサイズというのは個々のPC・つまりハードに寄るのでしょうか?
それともjavaプログラムで制御できるのですか?
>>618 そんなあなたにjava.io.BufferedReader
使い方はjavadocを読んでね。
もっと細かく言えばハードウェアもバッファ持ってたりする。
HDDのキャッシュサイズがカタログに載っていると思うけど、あれもバッファの一種。
↑ java.io.BufferedReader(Reader, int sz) ←このszがバッファのサイズ
>>619 度々回答していただいて有難うございます
i/ostream,ioパッケージ自体がちょっと初心者にはとっつきにくいです(俺が馬鹿だからかも)
でももう一度javadoc見たらさっきはポックリだったのが今度は理解できるようになってきた
本当に感謝です
java.io.って、何でこんなに不必要にまわりくどいの? 腐ったオブジェクト歯垢ライブラリの見本だね。
>>622 まわりくどいって どの辺が?
ちなみに、腐ってないIOライブラリって何?
624 :
デフォルトの名無しさん :05/02/09 08:40:24
結構柔軟で便利な気がする。 C++なんかと比べるとね。 あ、でも例外は投げすぎかも。
>>624 例外はあんなモンだと思うが。
削れるとしたら available() ぐらいでは?
nioも使えばいいじゃない
close()にまで例外を付けるなといいたい。 それだけでなくJAVA2前のAPIの設計の悪さ、 ある設計者の不評ぶりは有名だけどね。
catchすればいいじゃない
いつも思うんだけど、もしもclose()で例外はかれた場合って その後の処理をどうしたらいいの?
ファイルアクセス中に例外出たときと同じでいいんじゃね?
>>627 単に例外処理書くのが面倒なんだろうけどさ……
InputStream でも OutputStream でも Writer でも Reader でも
nio の Channel だって close() で例外食らう可能性あるだろ。
close() で例外投げない方が凄い設計だぞ。
>>629 C言語の fclose() で失敗した時とかと同じ処理。
double型の表示についての質問です。 例えば、0.1に0.01をfor文で足していくとき、 0.11 0.12 0.130000000000000001 0.14 と、途中で0が多く付いた値(上の0の数は適当)が現れます。 原因と対策を教えて下さい。
原因: doubleでは数を2進表現で保持していますが、このとき、小数部分を 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 ... (2のn乗分の一)の和として 表している(おおざっぱな説明)ので、正確な値にならないのです。 対策: 内部で値を10進表現のまま管理している BigDecimal クラスを使いましょう。
>>605 Servletから始めたが
振り返ってみれば確かに独学では初期は酷いソースコードになりがちだ。
だが独学でも独学に訓練を重ね新しい技術を学びたい、
開発効率を高めたい、より大きなものを作りたいという強い願望があれば
なんでも学ぶことができる。
他人に負担をかけるようなコーディングや設計も、職場で開発に携わる、
若しくは将来、オープンソースコミュニティで
活躍したいという意識も多少あれば、やらなくなる。
>>627 お前はJDBCでclose()に例外をつける理由がわかってないな。
この無知め
try{ // 山の量の処理 }catch(Exception e){}
Eclipseのjavaエディタのテンプレート機能についてお聞きしたい事があります 例えば自分でSystem.out.write(byte buf[], int off, int len)メソッドのテンプレを作ろうとして System.out.println()メソッドのテンプレを参考に以下のように書いてみました 「名前」 syswri 「パターン」 System.out.write(${word_selection}${},${},${});${cursor} でもこれだと引数が3つとも同じ値で反映されてしまいます どうしたらうまくいくでしょうか? そもそもこれって何かのプログラミングなんですかね もしかしてこれが正規表現ですか?
質問です String dore; String mona = "( ´∀`)"; というデータがあるとして、外部から dore="mona" という文字列をもらった時に"( ´∀`)"を出力したいわけですが こんな俺はどうしたらよいですか?
>>640 if(dore.equals("mona"))
System.out.println(mona);
>>641 なるほどそうすればよいのですか
thanks( ´∀`)
643 :
デフォルトの名無しさん :05/02/09 18:47:38
>>631 >>637 データベースでもIOでもいいが、close()で例外が出たとして
その時どういう処理を書くんだ?
せいぜいログに出力するか、後で再度のクローズを試みる為にストック
しておくか、致命的ケースならアプリケーション終了フラグを
立てる位だろうが。
close()は、大抵、finallyブロックで記述するからその中にさらに
例外ブロックがあるのは構造上美しくない。
close()は、boolean値を返すようにした方が良い。
>>643 > 立てる位だろうが。
サーバサイドでも通信時の close() に失敗したなら
プロトコルによっては再送信するとか選択肢があるし
クライアントサイドなら他にも選択肢はいっぱいある。
> close()は、boolean値を返すようにした方が良い。
read() write() で IOException 投げるのに
close() だけ boolean を返すのは綺麗な設計とはいえない。
>>643 close()がboolean返してもtry、catchの代わりにif文書くだけなんだけどね。
一部の阿呆はエラーが出てても無視できるようになって喜ぶのかもしれんが。
646 :
デフォルトの名無しさん :05/02/09 19:23:38
>>644 クライアントサイドなら一杯あるって具体的にはなんだ?
どう考えてもサーバサイドよりは、極論すれば無視できる
ケースに思うが。
>>645 じゃあ、アンタはclose()の例外処理に何を書いてるんだ?
>>646 クライアントサイドでclose()の例外を無視するのは駄目すぎだろ。
正常に処理を完了できてない事をユーザにダイアログなりで通知すれ。
648 :
デフォルトの名無しさん :05/02/09 19:31:50
>>644 サーバサイドのソケットcloseが失敗したら、クライアントに
再送信するってのも意味不明だ。
closeの例外は、双方の通信間の不備じゃなく完全にこちら側のハードウェアの
問題だから、相手側への影響もないし(closeする事自体が関係あるが)
自己完結する例外のはずだが。
憶測で語ってないだろうか?
649 :
デフォルトの名無しさん :05/02/09 19:34:34
なんかJava厨ってキモイね あんな考えなしのすべて例外処理すりゃいいってアホ仕様でも Javaだからというだけで平気で肯定できるんだ
>>648 はぁ? InputStream とか OutputStream みたいな汎用クラスの設計がどーとか言ってるんでしょ?
例えば BufferedOutputStream の close() で例外食らっても
実際にはソケットの write() で例外食らっている可能性もあるわけなんだが。
>>649 まぁ、close() だけ boolean 返せば良いなんて阿呆な仕様よりは余程マシだからねぇ。
>>648 > クライアントに再送信するってのも意味不明だ。
誰もクライアントなんて言ってないような。
サーバサイドで他のサーバと通信する事も全く考慮しないの?
Javaは他の全ての言語より、何もかもがよっぽどまし。
654 :
デフォルトの名無しさん :05/02/09 19:46:44
あのね Javaは●バカ用言語●なんだよ こうゆう時は例外処理が無意味だとか こういう時は例外処理がパフォーマンス落とすとか バカに判断できる分けないでしょ いいんだよ常に例外処理するってルールに機械的に従ってりゃ バカは頭使わなくていいの
>>654 その通り。
>>654 みたいなバカに判断させるとプロジェクトがガタガタになるから判断させないようにするわけさ。
>>653 Java厨になりすますなよ
Javaやってるやつで
Javaが全ていいなんて言ってるやつ見たことないよ
>>652 どっちにしろおなじだ。
close例外は完全にこちら側の問題であり自己完結するものだから
(closeする事自体は他に影響がある)、通知以外の目的には
する必要がない。他サーバーへの通知なら、
>>643 に書いた
ログ出力と同じようなものだろうが。
658 :
デフォルトの名無しさん :05/02/09 19:51:39
closeで例外処理して、サーバに通信しようとしたらエラーだったら、 またその例外処理でもするの?≧∇≦ブハハハハハ
660 :
デフォルトの名無しさん :05/02/09 19:54:08
>>650 >>659 なんでclose()の最中に、ストリームのwrite()を呼び出すんだよ。
意味不明だな。
>>658 Java以外だったらどうするんだ?
ただ例外と言うだけで特別じゃないだろうが
>>660 FilterOutputStream の close() と
BufferedOutputStream の flush() とか flushBuffer() をみてみろ。
BufferedOutputStream で close() すると間接的に write() 呼ぶから。
>>663 今度はBufferedOutputStreamの実装が……とか言い出す悪寒。
>>663 close()の前にflush()を呼べばいいんじゃない?
と初心者意見を述べてみる
>>663 それは仕様とは無関係。
close() する際に flush() されてないデータが残ってたら例外投げるって「仕様」にするとかなら話は別だが。
667 :
デフォルトの名無しさん :05/02/09 20:07:05
だ・か・ら こうゆう時は例外処理が無意味だとか こういう時は例外処理がパフォーマンス落とすとか バカは頭使わなくていいんだよ 常に例外処理するってルールに機械的に従ってりゃいいの
例外例外と言ってる割には、結局そこで記述する具体例、具体コードが 一つも挙げられないとは、お話にならなかった。
669 :
デフォルトの名無しさん :05/02/09 20:19:47
>>667 いいんでないの、それで。細かいこと考えなくても、きちんとルールに従っていれば、誰でもそこそこの物を作れ
るのが、Java の良い所なんだし。たとえ意味のない例外処理でも、常に記述してれば、ソースに統一性があっ
て良いジャン。
おかげで、あんまり意味のなさそうな例外処理が、ソースのいたるところに記述されてて、可読性が悪いよ(TдT)
671 :
デフォルトの名無しさん :05/02/09 20:27:07
「玄人は例外を重視する」に影響されて、ロクにコードも書いてないのに とかく例外の重要性を叫んでただけってオチか。 頓珍漢な例ばかり出してるし。
BufferedOutputStream の実装すら想像できないような阿呆では 具体的なコード出しても駄目だろうな。たぶん。
そういえば例外処理書くのが面倒くさい彼は BufferedOutputStreamのソースを見たんだろうか?
例外が逐一書かれてるコードが見づらいのは確かだ。 コメントがいちいち挿入されてるコードと同じ感じだ。 昔は、コメントが出来るだけ散りばめられたソースが良いなどと された事があったが、すぐにすたれた。 例外処理の逐次記述ももう少し経てば同じように淘汰されて いくだろうよ。
close() が write() を使う可能性なんて、 他にも特定フォーマットに従ってターミネータを出力するとかイロイロ考えられると思うんだが。 それとも terminate() ってメソッド作って close() の前に必ず terminate() 呼ばなければならない仕様にするの?
InputStream と OutputStream だけで、ログ出力とかすれば良いだけなら static void close(InputStream in){try{in.close();}catch(IOException e){ /*ログ出力とか適当に*/ }} static void close(OutputStream out){try{out.close();}catch(IOException e){ /*ログ出力とか適当に*/ }} とかみたいなユーティリティメソッド作れば良いだけでは?
>>674 >>676 BufferedOutputStream(正確にはFilterOutputStreamだが)を
代表例みたいに挙げる時点でもうお話にならないって事。
バッファを使っても、close()時にflushしないストリーム(したらマズイ)
の実装は幾らでもある。
>>679 スタックトレースの一番上のエレメントが
ユーティリティメソッドになるから
どこで例外発生したか分からなくなって駄目とか言われる悪寒。
>>678 そりゃ典型的な下手な仕様だ。つーかもういいよ。
アンタのキャリアは分かった。
>>680 close() 時に flush() するクラスが一つでもあるなら、
close() 内の flush() が投げる IOException をそのまま投げられる方が良い。
(たった一つだけだと言い切れるなら他にやりようもあるかもしれんが、
>>678 の言うような事もあり得る)
その程度すら分からないのに仕様があーだこーだ言うなんてお話にならないって事。
>>683 アナタもclose()はfinallyプロックに書くだろうが、close()の実装が
flush()を伴うものであっても、そのflush実装機能をfinally節で使うのが
良いコードだと思うか? tryブロックの最後にflush()と一言書く方が
どう考えても自然だ。これは基本レベルの話だ。
>>685 実装やら、実際にどう書くかは全く関係ないよ。
仕様の話をしてるんだから。
つまり、close() する際に flush() されてないデータが残ってたら
close() が(例外投げるなりして)失敗する仕様を支持するわけね?
>>680 FilterOutputStream の close() は flush() は呼ぶけど、write() 呼ぶとは限らんよなぁ……
689 :
デフォルトの名無しさん :05/02/09 21:07:54
「玄人は例外を重視する」ってのはさ 不必要な例外は書かないって前提条件があって 必要な例外をもれなく記述するって事だろ 必要か不要かも考えずに全部書くという前提なら 最初から通用しない話だよな
もう一つ言うと、close()で何故writeを呼ぶのか?って話題に振ったのは 丁度通信の話が出てたから、終了パケット云々の実装の話をしてるかと 思って、もっと詳しく聞きたいと思った訳だが違ったのなら、もう
>>689 InputStream とか OutputStream みたいな汎用クラスの設計に関して言えば
必要、不必要の何れもありうるなら必要と考えて設計すべき。
不必要な場合に面倒だからといって必要な場合を切り捨てるのは最初から通用しない話だよな。
693 :
デフォルトの名無しさん :05/02/09 21:12:50
「素人は例外を全て記述する」 これJavaの鉄則。悪い事でもない。
>>687 仕様の話をしてるなら、なおさらストリームのclose()は
flush()、write()を伴うものではない。
標準APIのFilterOutputStreamはあくまで一つの実装であり
ストリームの話ではない。
696 :
デフォルトの名無しさん :05/02/09 21:17:18
Javaのターゲット技術者は 個々のケースにおいて適切に例外の必要・不必要を判断できる優秀な技術者 ではなくて 決められたルールに従ってルール通り記述できるある程度の技術者 だと思うんだが そういう意味で例外処理は常に記述するで正解
>>695 close() 時にバッファリングしていたものを吐き出す(よーするにflush()する)APIなんて他にもいっぱいあるんだがね?
ストリームに関して言えば非常に一般的な実装と言える。
それを無視するのは現実を見ない暴論と言って良いね。
>>696 そうそう。
本当に「優秀な技術者」だったら良いけど実際には「自分が優秀な技術者だと思い込んでる奴」の場合が多いからね。
>>698 そだね。本当に優秀な技術者なら、こんな阿呆な事で時間潰したりせんだろうし。
>>697 一杯あるのなら、具体クラス名を幾つか出してくれ。
701 :
デフォルトの名無しさん :05/02/09 21:22:57
(´-`).。oO(ソースの30%以上が例外処理の記述なんだけど)
>>700 例えばC言語の fclose() もそうだしね。
>>696 じゃあ、アナタは例外ブロックに具体的に何を書いてるのか?
ログ出力、リトライの為のストック、close()→returnの外に
実例を出してくれ。
初心者は例外処理を常に書けば安全というが、例外処理の中身は
意外と難しいぞ。
そいや、逆にどっかの組み込み系のソケット周りのclose()の実装が close() throws IOException {}だけで中身からっぽだった。
>>697 一杯あるのなら、具体クラス名を幾つか出してくれ。
>>704 えーとさ、俺は
>>696 じゃないけどさ、
参考にするから実例を出してくださいとかみたいに頼むべきなのでは?
>>704 だとなんの実例が欲しいのかもサッパリわからんが。
>>706 一般的であることを示せれば良いので fclose をあげるだけでじゅうぶんだな。
今度は、close()時にflush()するのが一般的でない事をそっちが示してくれ。
709 :
デフォルトの名無しさん :05/02/09 21:35:58
close()の例外処理でログをはこうとしたら ログのclose()でまたエラー それでもまた例外処理を行うのが普通というJava厨の常識は ほかの言語も知っているJava技術者に受け入れられるでしょうか?
>>709 ログに書き込むたびにイチイチopen()とclose()を繰り返すのか……
それはJava厨の常識じゃなくて
>>709 の常識だろう。
ログはclose()しないのが常識
>>710 logging用API使わんで自力でログ出力やってるってトコロに突っ込むべきなのでは?
713 :
デフォルトの名無しさん :05/02/09 21:41:35
>>712 話はそれるが、そういうシステムあったなあ
714 :
デフォルトの名無しさん :05/02/09 21:43:33
まともなJavaの書籍を読めば Javaのエラー処理がどれ程優秀でどれほど必要か書いてある アンチは少しは勉強しろよ
>>714 ちなみにまともなJavaの書籍って何?
716 :
デフォルトの名無しさん :05/02/09 21:49:34
Java工作プログラミング
717 :
デフォルトの名無しさん :05/02/09 21:53:59
てか俺の先輩の全ての例外処理を記述してるソースを見て ちょっと異常だと思ったんだが このスレには先輩みたいな人がいっぱいいるのか? 俺の方が異常だったってオチ?
あんま関係ないんだけど、例外の種類ってどうやって区別する? 一つ一つ例外クラス作るのも大変だし、 かといってkeyに埋めるのも判別が面倒 どういうときに例外クラス作る?
>>717 例外処理書いてないところで例外が起きたら、
ユーザはどうすんだ?サポセンはどう対応すりゃいいんだ?
>>717 全ての例外処理を記述って具体的にどーゆー状態なんだか?
メソッド呼び出しするごとにthrows節に書かれてる例外を全部キャッチしてるとか?
あるクラス内で起きた例外を一くくりにしたい時。
724 :
デフォルトの名無しさん :05/02/09 22:00:37
キャッチが細かい人いるね
>>718 例外の種類が分かれば何らかの対処できるなら面倒でも全部区別する。
種類が分かってもログ出力ぐらいしか対処できないなら一定規模でまとめる、とか。
どんだけ時間を割けるかとか、好みとか、プロジェクトの規約次第だけど。
>>726 なるほど。やっぱそなんだね。
なんかモヤモヤがすっきりした気がしますた。ありがとう
729 :
デフォルトの名無しさん :05/02/09 22:21:17
>>643 お前な、DBでclose()におかしな挙動がおこると
何が起こるかわかってないな。
ほうっておくとDB接続プールがいっぱいになって
新規DB接続ができなくなって大変なことになるっちゅーに。
文句がある奴はO/R-Mappingを使え。
>>677 > 例外が逐一書かれてるコードが見づらいのは確かだ。
> コメントがいちいち挿入されてるコードと同じ感じだ。
> 昔は、コメントが出来るだけ散りばめられたソースが良いなどと
> された事があったが、すぐにすたれた。
> 例外処理の逐次記述ももう少し経てば同じように淘汰されて
> いくだろうよ。
おめぇ、throwの使い方もデザインパターンによるテクニックも知らずに
たかがclose()のためだけに淘汰されると思っているなら相当のアフォだぞ。
731 :
デフォルトの名無しさん :05/02/09 22:39:53
>>693 「素人は例外をすべてExcepitonだけでキャッチする」
をJavaの鉄則にしようとしているヴァカもいるがな。
相当のアフォなレスする前に、レスをよく読みましょう。
>>679 IOException以外の例外は無視されるのか。
それだけじゃIOExcepiton以外どんな例外がでるのかわからんので駄目だな。
staticも癖があるのでもっとましな方法が欲しいところだな。
735 :
デフォルトの名無しさん :05/02/09 22:52:01
Java信者ってイタイね
738 :
デフォルトの名無しさん :05/02/09 22:58:04
>>704 >>696 ではないが
catch内にロガークラスで例外内容をログ出力させることはよくあるぞ。
とくにServetでは。
下手にコンソールに例外スタックトレースを出力させると
顧客がビビってバグやエラーがまだ残っていると勘違いされて
過剰に反応するからな。
例外部分だけは顧客に見せびらかさないように
顧客向けではない別のヶ所にログ出力させている。
>>737-738 久々にこんな自作自演を見たが
こんなスレに自作自演してまでJava叩きに必死になってるチミのほうがレベル低そうだな。
そんなにJavaが嫌いならこんなスレを見ることもなかろうに。
Javaよりも例外処理に優れた言語とやらがあるならそれを示してみればいいのに
それすらもできない。そうなると君の方がイタイ奴なのだが。
>>715 書籍以外にもIBMのサイトでもJavaの例外処理の優秀さが説かれているわけだが。
馬鹿には読んでもわからんだろうが。
>>717 すべての例外処理を記述とはたとえばどんな記述かね。
例をソースコードで示してみるんだな。
catchをする必要がないのに無駄にcatchしているのか
throwsする必要がないのに無駄似throws宣言をしているのか
といった程度のものか?
>>643 >>677 自演乙。図星突かれたからって悔し紛れのバカレスしなくていいよw
余計笑っちゃうから。
つーかclose()の例外なくせの素人丸出しの意見には笑ったね。
特にデータベースじゃ、例外処理の書き方が明暗を分けるっつーのに。
例外処理は一つ一つ書かないと、万が一の事態にも備えられなくなる。
よくExceptionでまとめてるコードを見るけど、即訂正させるよ。
それがパラグラフ単位でやってたらさらに話にならないね。
コード書く前にデザパタの勉強しろっての
>>724 IDEを使えばドラッグしたソースコードにキャッチすべき例外をすべて付加した
try-catch文を自動的に追加してくれるわけだが。
どこかでみたことがあるようなドトニート厨の自演ですね。 自分が自作自演していることを隠すために他人が自作自演しているように 見せかけ自分はさらに他人が自作自演しているところを叩くように 見せかけることで疑われにくくしようとする作戦のようですが どうやら詰めが甘いようですねCがつく言語を崇拝している誰かさん(w
ドトネト厨?
>>746 は
>>746 の気に入らない者と関係ない第三者とをなんとか
争わせようとしているらしい。
子供っぽくておかしい。
C#厨?はそんな幼稚なことまでして自分の例外処理の話題で出た自分の失言を隠したいんだろうか。
750 :
デフォルトの名無しさん :05/02/09 23:27:57
なんだろうね、この人達は。 被害妄想かね、自作自演だとか、ドトネト厨だとか。 プログラムとか以前に、社会生活はちゃんと、おくれてるのかね?
752 :
デフォルトの名無しさん :05/02/09 23:32:47
Javaの学習方法の何がいけないんだろう?
>>752 学習方法なんて人によると思うが?
それともJavaに絶対の学習方法があるのか?
754 :
401 :05/02/10 00:07:56
>>403 さん
ありがとうございます。やっと解決出来ました(o^o^o)!!
しばらく忙しくてなかなかJavaの勉強に手が回らなかったのですが
次の段階の勉強が出来そうです。
ありがとうございましたo(^o^)o
>>750 わざわざドトネト厨と言い出し、さらには自作自演と言い出すあたり
おまいさんが自作自演のドトネト厨であることは図星だということがわかってしまったよワッハッハッハ。
社会生活はちゃんと送っているか? その言葉はそっくりそのままおまいさんにかえしてあげようファッハッハッハッハ。
おまいさんのそのレスは
Javaの例外処理を批判することでJavaスレを荒そうとしたことがバレまいとしたいがためのアンチの最後の言い訳
であることはとっくのとうに見抜かれているのだよ。
さて、Javaよりも優れた例外処理を持つ言語を紹介して貰おうか?
速くググっ来たまえ。
>>752 どんな学習方法に悩んでいるのだ?
目的によって学習方法は異なるぞ。
nioってすごいですか。
ねえ。close()で例外発生するのはそうあるべきだと思うんだけど、 実際問題、close()でIOExceptionが発生したらどうすればいいの? 正常系(例外が発生せずに)finally節内のclose()が呼ばれた時と、 既にIOExceptionが発生してfinally節に入ってclose()が呼ばれた時の 2ケースがあると思うんだけど。 恥ずかしながら5年くらいJavaで飯食ってるけど、ログに出す以外の対処をしたことがないんだ。 例えばファイルIOの場合は?あるいはソケット通信の場合は?
どうしても try-catchを二重にしたくなければ
throwとthrowsで外部に任せればいい。
それか
>>735 を使えばいい。
ネタでも何でもなく、java.sql.Statement#close()とかで 例外飛んできたときの対応ってどーすりゃいいんでしょう。 JDBCドライバ依存のリカバリ処理になるのかな?
close()で馬鹿なレスが続いていますが、 ちょっと質問です。 close()とは関係ないんですが、 コレクション系の Hashtable/HashMap/HashSet って何がどう違うのでしょうか? 天才な方教えてください。 最初に断っときますが、私は馬鹿ですんで聞きました。 インタフェース、スーパークラスが違うとか馬鹿な意見はやめてくださいね。 では、お願いします。
>>761 HashtableはHashMapと同等だが、Hashtableは最初っからMT-Safeになってる。
ただ、HashtableはCollection APIが出来る前の遺物だから、いまから使う理由はない。
HashSetはハッシュテーブルじゃない。名前から明らかなように集合だ。
ただ、集合の実装にハッシュを使ってるので、
「ある要素がその集合に含まれているかどうか」
の判定がO(1)でできる。
>>763 補足。
Hashtableはnullを入れられないが、HashMapはnullを入れられる。
>HashtableはCollection APIが出来る前の遺物だから、いまから使う理由はない。
同意。
HashSetはMapではなく、Setインタフェースのコレクション。
重複しない要素を保持するためにある。SQLでいうところのDISTINCTだな。
Javaやるとバカになるって、昔いわれたことあるけど、違うと思う。 このスレ見て、Java信者の一部がバカ、ってだけだと思った。
766 :
デフォルトの名無しさん :05/02/10 02:29:30
初心者は変態Java厨の意見なんて鵜呑みにするなよ 例外処理中にエラーが発生しても さらに例外処理なんてしないのが普通だからな
767 :
デフォルトの名無しさん :05/02/10 02:49:56
float型で、小数点以下の桁数の指定ってどうやってするんでしょうか?
Exception が発生するのではなく、 boolean で返ってくるとなにがいいのか良く分からん。
Windows環境でエクスプローラの関連付けを使用し、バイトコードを実行する手段はあれば教えてください。
誤字 手段は 訂正 手段が
例外が起こっても処理が続行できるなら、 キャッチしてログって処理を続ける。 処理が続行できないならthrowでぶん投げる。 ステートメントのクローズでエラーがでるなんてのは、 前のコードにバグがあってエラーが放置されているか DBがいかれているかのどちらかなので、 throw new RuntimeException(e)する
http://java.sun.com/j2se/1.5.0/ja/download.htmlから JDK のダウンロード
↓
Windows Offline Installation, Multi-language (jdk-1_5_0_01-windows-i586-p.exe, 49.78 MB)
Windows Online Installation, Multi-language (jdk-1_5_0_01-windows-i586-p-iftw.exe, 221.26 KB)
をDLし、ネットにつながってないパソコンでインストールしましたが
ネットがつながってないとjavaって使用不可能ですか?オフラインだと何も表示されない・・・
>>772 そのページにインストール手順へのリンクがあるだろ?読んだのか?
読んでもわからないのなら2ちゃんで説明を聞いてもわからない可能性が大きいからあきらめろ
カスと屑しかいない哀しいスレ
半分冗談だから、読み飛ばそう!!
>>772 Windows Offline Installation, Multi-language (jdk-1_5_0_01-windows-i586-p.exe, 49.78 MB)
を落としインストしたいパソに入れればいいんじゃないかなぁ…
>769 jarにまとめる。
>>779 そのインストーラーをフラッシュメモリーを使用してネットがつながってないパソコンでインストールしました。
インストール時は「同意する」以外いじっていません。
インストール終了後、[java web start]のショートカットがデスクトップに。
ためしに起動してみたところ、オンラインだと何かしら表示されるのに、オフラインだと何も表示されず。
オンラインだと何かしら表示されましたが、よくわからないので放置。
オンライン、オフライン共にコマンドプロンプトで[javac]とも試しに入れてみましたが、どうやら開発環境が整ってないようで。
とりあえず、もう一度それをインストールしてみます。
説明書は字が小さいのが気になってあまり読んでません。
>>782 ぽかーん
path通さんとjavacと入れても起動しないぞ
>>783 ぽかーん
入門書にも書いてありましたが、「ちょっとよくわからないしいいや」とか思っていました。
これから説明読んで設定してきます。アドバイスありがとうございました。
説明書も読めない人が開発キットを入れて何をするんだ?
+=ってどういう意味ですか?
手裏剣が飛んでるんだよ。
つまらん!おまいのコードはつまらん!
>>786 a += 1 は a = a + 1 を簡略化した書式
792 :
デフォルトの名無しさん :05/02/11 08:24:25
String である文字列を定義したい時に String "文字列"; とコーディングしますよね。 自分の場合その文字列の中に""がありまして、String "A""B";みたいに書くと エラーがおこってしまって困っています。 表現したい文字列の中に""がある場合はどういう処理を行えばよいのでしょうか?
>>793 いろいろためしましたけど、うまくいきません
ぜひ簡単な例を示して頂けないでしょうか
793じゃないけど。 「君は"ほげほげ"だ。間違いない。」って文章を表示したい時に System.out.println("君は"ほげほげ"だ。間違いない。") ってするとエラーになる。どうすればいいの? そういうときは特別な文字列を無効化するエスケープシーケンス \ を使おう。 具体的には System.out.println("君は\"ほげほげ\"だ。間違いない。") ってすればいいのさ じゃあ「君は\ほげほげ\だ。間違いない。」を表示したいときは? System.out.println("君は\\ほげほげ\\だ。間違いない。") これでOK 上はエスケープシーケンスの正しい意味ではないよ、もっと詳しく知りたかったらぐぐろう。
ごめんミス 5行目の「文字列」は「文字」に脳内変換ね。
>>789 普通に考えたら多分無理…
ShellExecuteさせて起動させるだけのフロントエンドっぽいものを
cなどで作ってやればいいと思う
Javaってexe作れないと聞きましたが、アプリは作れないということでしょうか? 作れないことはないとは思いますが、どうやんの?
799 :
デフォルトの名無しさん :05/02/11 12:05:51
Java始めたトコなんですがインタフェースってのが分かりません どういうものかサクっと教えてYO!
800 :
デフォルトの名無しさん :05/02/11 12:15:17
インターフェース・・・ それはJAVA学習者にとって最大の難関であろう。 一見捕らえどころがなく、理屈だけでは全く理解できない。 参考書を読んだだけでは概念すら掴む事はできない。 最大の疑問はそれが何の役に立つのか?だろう。これは当然だ。 未経験者はインターフェースが何の為に存在するのか、さっぱり 分からない。開発者め、訳ワカランのを作りやがってと恨む事 だろう。インターフェースの理解はただ現場でのコーディングの 積み重ねによってのみ得られる。大規模なプログラムを組みにつれ インターフェス無しでは、ソフトウェアデザインが到底不可能な事に 自然と気付き、いつの間にかそれを多用し使いこなしている自分に 気付く事だろう。
>>798 exe ファイルを作りたければ Excelsior JET とか GCJ みたいな AOTコンパイラを使え。
>>800 なんかよく分かりませんがありがとうございます
798はふつーにつりだろ exeしかアプリ実行できないとおもってるのかね
vectorにはJavaアプリ置いてないの?
>>804 それを言うなら "実行" でなくて "アプリ" のとらえ方なのでは?
拡張子xlsをダブルクリックしたら実行された なぜ?というのと同じ話だな
>>810 それは単なる関連付けの話で
アプリを作る(== exeファイルを作る(?))のとは直接関係ないような。
コマンドラインで xxx.xls とタイプするだけでも実行された なぜ?
>>762 おまえも馬鹿なレスする奴と同じじゃねえか。
ドキュメントちゃんと嫁や
>>780 (゚Д゚)ハァ?
Subversionのどこがぬるぽなんだ?
>>816 その時間Tomcatがエラー出していたよ
818 :
デフォルトの名無しさん :05/02/11 15:04:13
ところでこのスレでのSubversion人口比率はどれくらいか? 未だにCVS利用者が多いのか?
819 :
デフォルトの名無しさん :05/02/11 15:30:20
実行したときに、値の計算後「Infinity」と出てしまって値が表示されません。 C言語みたいに指数表現は出来ないのでしょうか?
できる。 double型の扱いが間違ってintやfloat,longのままになっているか 計算ミスで無限になったか ただのオーバーフローで桁が足りないかだけ。 オーバーフローするならBigDecimal使え。
>>819 Infinity って出るのは計算結果が無限大になってるから。
ゼロ除算とか、大きすぎる値を扱ってオーバーフローするとかしたんしょ。
指数表現にしても無限大は無限大なので Infinity と表示されなければならない。
1.5以降ならprintf使えるのでC言語と同じ感覚で指数表現使えるよ。
822 :
デフォルトの名無しさん :05/02/11 15:41:46
>>820 おお。累乗したときに、int型に入れてましたw
ありがとうございました。
>>822 とりあえずJavaによるアルゴリズム事典を読むことをおすすめする。
オーバーフローを避けるテクニック、極力減らす計算方法が
Javaの素のソースコードで沢山載っている。
それと、数値計算も勉強しろ。
同じものを二回掛けてから1回割るなら
一回掛けるだけで終わるほうがオーバーフローが起きる
可能性は低い。そのことについてよくわかる。
あの本ってC版を単にJavaに書き直しただけだから、 アルゴリズムを見るのはいいけどソースの質は最悪だよ。
>>824 アルゴリズム辞典でソースの書き方を勉強しちゃう奴は読むのを止めた方が良いかも。
ソースを無駄にオブジェクト指向っぽくすると
本質に関係ないところでソースがでかくなるような。
826 :
デフォルトの名無しさん :05/02/11 16:53:59
初期化にめっちゃ時間のかかるインスタンスを保存して 使いまわす方法ってないですかね。 ずっと保持し続けてほかのアプリケーションから 要求があった時にインスタンスを返す、みたいな。 インスタンスじゃなくて処理結果を返すだけでも 良いんだけど。 アプリ間の通信(?)ってソケットを使うしかないんですか?
827 :
デフォルトの名無しさん :05/02/11 17:09:28
Javaで再帰メソッド、非再帰メソッドを使ってXのy乗の計算式を書くとしたらそれぞれどうなりますか?
828 :
デフォルトの名無しさん :05/02/11 17:23:37
int func(int x, int y){ if(y==0){ return 1; }else{ return x = x * func(x, y-1); } } int func(int x, int y){ int value; for(int i=0; i<y; i++){ value *= x; } return value; } とかかね。
829 :
デフォルトの名無しさん :05/02/11 17:25:17
おぉ。 どうもありがとうございました!!
>>826 RMI、Serialization、Prototypeパターンあたりで調べてみ。
831 :
デフォルトの名無しさん :05/02/11 18:38:41
ant+jspネタです。
JSPをJava sourceにプレコンパイルしようと思い、
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jasper-howto.html#Web%20Application%20Compilation を参考にbuild.xmlを書いたのですがJasperExceptionが出てしまいます。
原因を探りたいんですがコンソールに出るのが
----
Buildfile: build.xml
jspc:
[jasper2] 2005-02-11 06:23:09 - エラー: ファイル '/main.jsp' は次の例外を発生しました:
BUILD FAILED
/home/tomcat/build.xml:33: org.apache.jasper.JasperException: Error compiling /main.jsp
----
でもうちょっと詳しい情報がほしいのですがどうやればいいでしょうか?
ちなみに<jasper2>タグのverbose属性を9999に設定してもだめでした。
java.nio を使ってみよう、といろいろ遊んでいます。とあるウェブページをデコードして表示する、
というのを試しています。しかし、自分のコードではページの途中までしか表示されません。
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.charset.Charset;
import java.net.URL;
import java.net.URLConnection;
public class Test2 {
public static void main(String[] args) throws Exception {
URLConnection conn = new URL("
http://www.apple.com/jp/ ").openConnection();
int contentLength = 128*1024; //conn.getContentLength();
ByteBuffer buffer = ByteBuffer.allocate(contentLength);
Channels.newChannel(conn.getInputStream()).read(buffer);
buffer.clear();
CharSequence chars = Charset.forName("Shift_JIS").decode(buffer);
System.out.println(chars);
}
}
上のコードの出力結果は、次のような感じです。
毎回、実行されるたびに出力される長さは違うように見えます。
$ java Test2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd ">
<html>
(中略)
function loadRandomA() {
var Aurl = myArrayA[rand(A)-1];
docum
$
おそらくバッファについて理解していないか、それともうっかりミスをしているかだと
思いますが、なにか助言をいただけませんか。
それと、Content-Lengthヘッダが返されない時の適切なバッファの作り方も
教えていただければ幸いです。何回かに分けて読むのかと思うのですが…
>>833 何も考えずvectorとかarraylistとか。
>>834 そういえばArrayListのソースコードとかは勉強になりそうですね。
InputStreamReaderを利用した方法は成功していて、この方法にも特に不満は
ないのですが、せっかくだから nio のやり方も知っておきたいです…。
>>832 readの戻り値使ってまわさないの?
NewIO以前に旧IOでも同じことが必要だよ?
ただし、2回目以降とかローカルファイルはバッファの問題で一見問題なく動くように見えることもある
>>837 ピンと来ました。
これを忘れているようじゃやばいっすね。ありがとうございます。
while(channel.read(buffer)!=-1 && buffer.hasRemaining()); あたりですかね。試した範囲でうまく行きました。 Wikiに書くほどのことなのか、微妙 ともあれ、お世話になっています。ありがとうございました。
840 :
きのぽ :05/02/11 23:33:28
技術的なこととは関係なのですが。。インストール時に感じた素朴な質問です。 SUNのサイトでは英語以外には日本語版のみしかないのですがなぜでしょうか? 他にヨーロッパ言語や中国誤等が入っていてもおかしくないかと。 COBOLのように日本以外ではほとんどJAVAは普及していないのではないのかと 不安になるのですが。。。。
>>840 英語が出来ないのは日本人ぐらいだって馬鹿にされてるだけかもよ?
843 :
きのぽ :05/02/11 23:54:39
いや。。ヨーロッパ系はともかく、中国・韓国他アジア圏と比べるとそうでもないでしょう。 吉田豊氏などJAVAの仕様制定に日本人が深くかかわってるのは知ってましたが。。 英語と日本語だけぽこっとダウンロードページにあるのってちょっと目を引いたのできになりました。
844 :
デフォルトの名無しさん :05/02/11 23:58:07
JavaでGUIを使ったWinアプリって作れますか? exeファイルみたいに単独で実行できるようにしたいのですが どのクラスを利用すればいいんでしょうか
>>843 中国やインドではエンジニアと呼ばれる人間で英語できな人は
少数派だぞ。
日本は世界で最も、Javaのシェアが高い国だからね。 それでもサーバサイドだけなうえ、この程度だから、他の国では(以下略
847 :
きのぽ :05/02/12 00:52:30
>>842
そ、そんな高度なことを。。
それでは日本にいるほかの国の人や海外で作業する時はこまりますね。。
>>845 海外で仕事する人は出来てあたりまえですが、日本人だってそれは同じです。
半年ほど台湾で仕事してましたが、国内で作業する人たちは英語できない人もいっぱいいましたよ。
むしろ英語できる人は給料いいみたいです。
>>846 やっぱりそうなんですか。。
なんだかCOBOLみたいに独自路線で行っちゃうのかもしれないですね。
解答していただいた方たち、どうもありがとうございました。
>>847 別に高度じゃないでしょ。
それに多言語版もすぐ見つけられるし。
特定のURLに飛ばすアプレットを見た気がするのですが あれってどうやってるんでしょうか
java.applet.AppletContext#showDocument(URL url) ですね ありがとうございました
DatagramPacket packet=new DatagramPacket(byte buf[], int length,InetAddress address, int port); 〜(何らかの処理) packet=new DatagramPacket(byte buf[], int length) 〜(何らかの処理) こういう場合ってpacketオブジェクトは一つしか生成されず DatagramPaclet参照用のメモリも一つになりますよね?
853 :
プログラマ見習い :05/02/12 09:27:36
今JDBCを勉強しておりJSPファイル内から下記コードを入力し DBへ登録処理を行なっているのですがなぜか処理されません。 何が原因なのでしょうか? <% String user_name = (String)session.getAttribute("user_name"); /* ここからDBへの登録処理 */ request.setCharacterEncoding("Shift_JIS"); Class.forName("org.gjt.mm.mysql.Driver"); Connection member_table = DriverManager.getConnection("jdbc:mysql://localhost/myservlet_db","root","1234"); Statement state = member_table.createStatement(); try{ int res = state.executeUpdate("insert into member_table set user_name=\"" + user_name + "\""); }catch(Exception ex){ } state.close(); %>
>>853 例外を握りつぶさない。せめてこう書け。
}catch(Exception ex){
ex.printStackTrace();
}
話はそれからだ。これによりコンソールに表示される結果を見てからでないとわからん。
855 :
プログラマ見習い :05/02/12 10:27:02
>>854 ex.printStackTrace();
を記述しもう一度アクセスしてみたのですが
ダイレクトにDOSでテーブルを覗くとやはり処理がされて
いませんでした。何が原因だと思われますか?
857 :
デフォルトの名無しさん :05/02/12 11:54:06
>>853 Statement state = member_table.createStatement();
を
Statement state = member_table.createStatement(ResultSet.TYPE_FORWARD_ONRY,
ResultSet.CONCUR_UPDATABLE);
に
それにmysqlならURLの書き方が違うだろ マルチバイトキャラクタでこけるぞ
マルチバイトにするとBlobが書き込めなくなるからダメ
んなことねぇよ
>>853 >int res = state.executeUpdate("insert into member_table set user_name=\"" + user_name + "\"");
こいつもSQL Injectionされがちだからダメ。PreparedStatement使いなさい。
>>844 そういうことやりたいならVBですな。
javaはクライアントサイドでは負け組なのです。
仕事じゃなくて、趣味とか個人的理由でやるなら、
SWTとかSwingのパッケージを使いなさい。
exeファイルみたいに単独では動かないです。
JREをいれてもらって、javawあたりで動かす。
eclipseとかjavaで出来たアプリも、nativeな言語で起動用の
exeをつくって、内部でJREのインスコフォルダ探して、
javaw Eclipseとかやってると想像。
想像で回答しました。教えてあげてください、えろいひと
>>862 想像いくない
普通にJavaでGUIアプリ使えるし実用的だし仕事で使ってる
趣味こそ何の言語でもいいだろう
サイズは大きくなるがJREとセットにして配布すればインストールの手間もなく動く
どうせVBだって.NETだってランタイムが必須なんだしそれに比べれば
ランタイムをいやがるやつにもJavaは使わせることが出来る
GUIを本格的に作りこむならNetBeansが必須か
>>863 >> javaはクライアントサイドでは負け組なのです。
> 普通にJavaでGUIアプリ使えるし実用的だし仕事で使ってる
> 趣味こそ何の言語でもいいだろう
もちろんJavaで出来ないとはいってないです。
ただ、仕事でGUIのクライアントアプリケーション作るとしたら、
生産性、要員の確保のしやすさ、単価を考えたら
Javaではないだろうと思いますな。
まあここは質問者の判断なので。
javaで作ったクラスを"java クラス名"とか指定させずに
起動したいというのが
>>844 の質問なんだけど、
そんなときはどうするのでしょう?
スクリプト書いてそれを実行させるの?
まあそれでもよいんだけど、
eclipseは、eclipse.exeという実行ファイルがあるけど、
exeはネイティブで作られていて、内部でjavaw クラス名を
やってるのかな?と想像してるんだけどそれは違うかな?
>>864 仕事でSwingで作っている俺は一体・・・
VBは手間のからないコンポーネントでは非常に効率はいいものの
細かい動きをさせようとすると躓く
BCBやDelphiも同じような感じだけど、こちらはオーナー描画とか
比較的考慮されているために対応はしやすいか
Swingを理解していればNetBeansのほうがVBより生産性は上
VBと同じように配置したいのならNullレイアウトでいいし
もしかしてJavaだとGUIがぺたぺた貼り付けれないと思ってるのか?
EclipseVEは正直仕事では使い物にならないし、SWTサポートしてから
Swingやるきないようだし
要員の確保といってもVBが使えることという条件だけでは俺はださないからな
ぺたぺたはりつけてイベントにコードかけるだけのやつしかあつまらんし
.NETになっただけでお手上げのやつすらいる
同じ質問何度も繰り返してるけど、もう結論でてるし、そもそも
過去ログに何度も出てるし
あと、さっきから想像だけで勝手に判断するのやめれ
>>864 gcj + SWT とかで作れば単独で実行できるファイルを作れる。
>>865 >VBは手間のからないコンポーネントでは非常に効率はいいものの
>細かい動きをさせようとすると躓く
そんな事はない。VBは簡単なものから複雑なものまで自由自在に
GUI制作ができる。しかもJAVAの半分の工数でだ。
JAVAはレイアウトがダメだね。現場じゃVBの方がよっぽど重宝
されtるよ。一番働いてるのがVB使いというオチ。
JAVAは尊大なだけで、どうも使いどころがない。
必死なVB使いがいるスレはここですか? Swingと比べないほうがいいよ Swingの機能の多さは異常なほどだ
やめてくれよ。VBつかえまーすとかいうやつにGUI作らせると 環境かえたらラベルがはみ出るとかそんなんばっか作ってくる。 正直Javaのレイアウト程度のことが理解できないやつはVBも ちゃんと理解できてない。
VBでレイアウトマネージャ作るの結構大変だったと記憶してるが。 あれが便利と思わない人もいるんだね。 絶対座標が好きならヌルレイアウトでいいじゃない。
>>844 の質問に対する結論
・javaでGUIは作れる。それはSWTとかSwingとかのパッケージを使え。
・jdkで用意されているものではexeファイルは作れない。
GCJ等のAOTを使ったらできる(制限あり)
>>801 また起動用スクリプトを提供したり、native言語で起動用のexeを
こしらえてもよいが、とにかくそんなことを検討する必要がある。
>>864-870 (除く
>>866 )の結論
・eclipseのexeが何かは謎。想像で語るな。
・javaとvbでともにやろうと思えば何でもできる
・現実としてvb要員はjava要員より遙かに確保しやすく、単価も半額に近い
・Swingは実は高機能だ
・が、vb使えますというヤツは怪しい。疑ってかかれ
ということで。
eclipse.exe Microsoft Visual C++ 6.0
exeにしなくてもちゃんとしたmanifest入れとけば jarからでもダブルクリックで起動するやん。。 何が不満なんだ?
windowsしか知らないせいでexe以外はプログラムじゃないと思ってる予感。
Windowsだと、プログラムの起動はデスクトップやスタートメニューのショートカット からっていうユーザがかなりを占めるから、逆にそのへんとJRE環境だけインストーラが 体裁を整えれば実体がexeかどうかなんて瑣末な話になるんだけどね。exeかどうかに こだわるのって小物をちまちま配布してるフリーウェアかシェアウェアの作者ぐらいではないかと。
>>876 >>873 は単独で動かなくてもいいじゃん
どうせダブルクリックで動くからと言いたいんだろ
誰かが VC/VB/VB.net あたりと Java で全く同じ挙動をする GUI サンプルアプリ作って見せてやればいんでないの? 初心者ほど言葉での説明が難しいし。
VJは?
つーか、VBはランタイム必要なので単体じゃねーだろ
>>876 今時まともなアプリでexe一個で動くなんて珍しいだろ。
WindowsならカレントディレクトリのDLLもロードできるし。
SWT使ってもjarから直で起動できるぞ?
windowsアプリケーション全然しらんので教えて欲しいんだけど、 jarから直起動させるとしたら、そのjarにはアイコンがついて 欲しくなるのが、エンドユーザの心理になると思うのだが、 jarに任意のアイコンってつけれるの? javaの質問じゃない気配もあるが・・・
jarから直接起動ってたとえばVMにたいする 細かいオプション指定とか出来ないし、いまいちだよね。 いまだとJavaの起動用ツールも既成のがあるし、インストーラー 作成ツールも手軽に手に入るしもうちょっと手をかければ いいのになあ。NSISなんか使うと一見ネイティブとかわんないよね。
文字列内の文字の値をチェックしたいのですが、出来ますか? たとえば、文字列に0〜9以外が使っていたらエラーと出す感じです。
>>886 ありがとうございます。
ひとつ聞きたいのですが、aaの変数5桁の文字列から、0〜9とA〜Zを使用しているかでしたら、
("[0-9A-Z]{5}", aa)
でよろしいのでしょうか?
調べるのに時間がかかってしまいました(汗
アルゴリズムを学ぶのに一番いい本教えてください。
892 :
853 :05/02/13 01:14:10
>>856 得にエラーは何も表示されてはいないようです。
>>857 書き換えて実行した所
下記の様なエラーが出ました。???何が原因なのでしょうか?
シンボル: 変数 TYPE_FORWARD_ONRY
場所 : java.sql.ResultSet の インタフェース
Statement state = member_table.createStatement(ResultSet.TYPE_FORWARD_ONRY,ResultSet.CONCUR_UPDATABLE);
^
エラー 1 個
>>861 SQL Injection なんて言う言葉の意味自体知りませんでした。
今ぐぐってやっと意味が分かりました。結構SQLも怖いですね(w
>>889 やってみましたが、出来ません。
aa に A123* との値を入れています。
if(Pattern.matches("[0-9A-Z]{5}", aa))
これでif文に入ってくれませんでした。
分かりませんので訂正お願いします。
すいません。 0〜9とA〜Z以外だったらですので、 if(Pattern.matches("[^0-9A-Z]{5}", aa)) として実行しています。
895 :
デフォルトの名無しさん :05/02/13 01:30:12
>>892 TYPE_FORWARD_ONRY
を
TYPE_FORWARD_ONLY
に
>>853 単にcommitしてないだけなんじゃないの?
898 :
デフォルトの名無しさん :05/02/13 01:34:58
>>894 if(!Pattern.matches("[0-9A-Z]{5}", aa)) {
error
}
簡単にこうするべきでは。。。
>>898 そうでした(汗
("![0-9A-Z]{5}", aa)) {
と変なとこに付けていました。。。
答えて頂いた方々ありがとうございました。
>>852 >DatagramPacket packet=new DatagramPacket(byte buf[], int length,InetAddress address, int port);
>〜(何らかの処理)
>packet=new DatagramPacket(byte buf[], int length)
>〜(何らかの処理)
>こういう場合ってpacketオブジェクトは一つしか生成されず
>DatagramPaclet参照用のメモリも一つになりますよね?
オブジェクトは2つ生成されるが、
new DatagramPacket(byte buf[], int length,InetAddress address, int port);
こちらは、どの変数からも参照されていないのででガーベジコレクションの候補となり
自動的に回収されます。
901 :
853 :05/02/13 10:20:15
>>895 State文ではダメとの事でしたのでぐぐって PrepareState文 でコード
を記述し再チャレンジしてみたのですがやはりダメでした。。。
どうすればMYSQL上へ反映されるのでしょうか?
String aaa = (String)session.getAttribute("user_name");
PreparedStatement pre_state = member_table.prepareStatement("insert into member_table set user_name = ?");
pre_state.setString(1,aaa);
try{
pre_state.executeUpdate();
}catch(Exception ex){
ex.printStackTrace();
}
pre_state.close();
902 :
デフォルトの名無しさん :05/02/13 10:59:48
PreparedStatement pre_state = member_table.prepareStatement ("insert into member_table set user_name = ?"); を PreparedStatement pre_state = member_table.prepareStatement ("insert into member_table set user_name = ?", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); に
903 :
デフォルトの名無しさん :05/02/13 11:07:13
>>901 PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table set user_name = ?");
を
PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table (user_name) values (?);", ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
に
>>869 根拠はアンタの脳内ソースか?
自分はJAVAも使いこなせるを先に言っとくが、JAVAは本当に
帯に短したすきに流しだね。その冗長さに見合うだけの成果が得られない。
同じ開発ならより工数が少ない言語を使うべきだろう。
その冗長な言語を使うJAVAプログラマも増長してる。自分は
凄い言語使ってるんだぞって変な驕りがある。作る物は同じで時間と
労力をかけてるだけなのにね。一般アプリはVB,WEBアプリは
Perl、PHPで十分だ。JAVAは尊大なだけでメリットがない。
これは現場の意見だ。ここでVBを軽んじる輩はどうせ理屈先行の
学生なんだろうが、ちょっと大人気なかったかな。
>>904 >自分はJAVAも使いこなせるを先に言っとくが
(^^;
すれちがいだよ
JavaにはC++でいうオペレーターオーバーロードはありませんか?
>>907 可読性の低下を招く恐れがあるため実装されていません。
ありません
>>940 >これは現場の意見だ。ここでVBを軽んじる輩はどうせ理屈先行の
>学生なんだろうが、ちょっと大人気なかったかな。
ここは笑うところだよね?
>>910 そこはオチだ。ツボは他にもたくさんあるぞ。
言ってみれば吉本新喜劇のような完成された笑いだな。
死滅スレからの誤爆かねぇ
スレ違い。失せろ。
914 :
デフォルトの名無しさん :05/02/13 14:15:02
質問です。 ストリングにバックスペースのエスケープ文字 \b を付け足したのですが、 一文字削除されずに、 . 半角のピリオドが挿入されてしまいます。 これはどうしてか教えて下さい。お願いします。
>>914 それC言語でも文字が消えるとは限らないぞ
>>915 レスありがとうございます。
subStringで一文字除くことにします。
917 :
デフォルトの名無しさん :05/02/13 14:32:48
JSPで画像(GIForJPG)を結合させてアクセスカウンタを作りたいです。 HTML内からimgタグで呼び出したいので一枚の画像として出力させたいのですが 画像を結合して出力可能(response.getOutputStream()に出力)なデータを得る ところまでが上手くいきません。 ご教授ください。
>>917 うまくいかなかったコードを提示してください。
アドバイスできるかもしれません。
>>917 java.awt.image.BufferedImageクラスとjavax.imageioあたりを
使えばできるんじゃないか?
BufferedImage(int width, int height, int imageType);
このコンストラクタで結合後のイメージの大きさを指定して
javax.imageio.ImageIO#read(File input)
でファイルを読み込んで
BufferedImage#getRGB(int x, int y)
BufferedImage#setRGB(int x, int y, int rgb)
を使って結合後のイメージを作成して
javax.imageio.ImageIO#write(RenderedImage im, String formatName, OutputStream output)
で出力する
ドキュメントを見ての想像だからどうなるかわからんが
Javaって速いんですか?
激速。
922 :
デフォルトの名無しさん :05/02/13 16:09:13
>>907 JAVAにも演算子オーバーロードはあります。
923 :
844 :05/02/13 16:27:33
みなさんお答え下さってありがとうございました。 参考にさせていただきます。 なんか、自分の質問で場が荒れてしまってすいません。
java雑談スレッドはありませぬか?
import java.io*; class Sample1 { public static void main(String args[])throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str=br.readLine(); int num=Integer.parseInt(str); System.out.println(num+"が入力されますた。"); } } なにがおかしいんですか?
927 :
デフォルトの名無しさん :05/02/13 23:32:56
OS Win2000 j2sdk1.4.2_07 PostgreSQL 8.0 CLASSPATHの設定.;C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar; C:\Tomcat 5.0\common\lib\servlet-api.jar;C:\j2sdk1.4.2_07\lib\tools.jar; C:\j2sdk1.4.2_07\lib\dt.jar C:\java>javac TestPG.java C:\java>java TestPG java.lang.ClassNotFoundException: org.postgresql.Driver at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at TestPG.main(TestPG.java:12)
928 :
927 :05/02/13 23:33:33
JDBCのテストが実行されません(;_;) Tomcatでサーブレットのテストをする以前のdos窓でのteatエラーです。 何が原因なんでしょう?教えてくださいm(_ _)m
929 :
927 :05/02/13 23:34:52
C:\java>java -classpath C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar Test PG Exception in thread "main" java.lang.NoClassDefFoundError: TestPG C:\java>java -classpath C:\Tomcat 5.0\common\lib\servlet-api.jar TestPG Exception in thread "main" java.lang.NoClassDefFoundError: 5/0\common\lib\servle t-api/jar
930 :
927 :05/02/13 23:38:38
ソース(TestPG.java) import java.sql.*; public class TestPG { public static void main(String argv[]) { Connection conn = null; Statement stat = null; ResultSet rset = null; String sql = null; String url = "jdbc:postgresql://localhost:5432/wdb"; try {Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url,"user","1234"); stat = conn.createStatement(); sql = "select * from gero"; rset = stat.executeQuery(sql); while (rset.next()) { String name = rset.getString("day"); String email = rset.getString("onesy"); System.out.println("VALUES = " + "day" + "\t" + "onesy");} } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try {if (rset != null) rset.close(); if (stat != null) stat.close(); if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }
>>929 うーん、そういう試行錯誤やるくらいならjarの中身見て目的のクラスが
あるかどうか確認するほうがなんぼかましだと思うよ。
あと自分でクラスパスがおかしそうだと思っているようだけど、そういうときは
System.err.println(System.getProperty("java.class.path"));
して実行系中で確認しようね。
クラスパスにjarだけでなくちゃんとカレントパス(.)を加えな。
933 :
927 :05/02/13 23:45:18
>>931 すんません、よく分かりません(^_^;;;
>>932 >CLASSPATHの設定.;C:\PostgreSQL
1番最初に加えてるのですけど・・・
>>933 >1番最初に加えてるのですけど・・・
929では加わってないのを指摘されているんじゃないの?
>>927 おっと失礼。じゃあ多分TestPGがパッケージに属してないのが問題だろう。
>>929 |C:\java>java -classpath C:\Tomcat 5.0\common\lib\servlet-api.jar TestPG
|Exception in thread "main" java.lang.NoClassDefFoundError: 5/0\common\lib\servle
|t-api/jar
ワラタ. -classpathの引数をクォートしてないから引数が分割されちゃってるよ。
あ、あとカレントディレクトリが抜けてる。
>>935 java.lang.ClassNotFoundException: org.postgresql.Driver
だからそれはないね。
940 :
927 :05/02/13 23:54:59
>>934 こんなになりました・・・
C:\java>java -classpath . C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar TestPG
Exception in thread "main" java.lang.NoClassDefFoundError: C:\PostgreSQL\8/0\jdbc
\postgresql-8/0/309/jdbc3/jar
941 :
927 :05/02/13 23:57:21
>>936 >引数をクォート
って何ですか?詳しく
>>940-941 あ、基本的にWindowsでのパスの表現とかコマンドラインでの
作業が理解できてない人なのか。
1. パスを複数指定するときは;で区切る。
2. コマンドラインの複数の引数はスペースで区切られるので、スペースを含む引数は""で囲わないと正しく解釈されない。
>>941 まず問題を整理してみようじゃないか。
・-classpathはCLASSPATH環境変数を無視して再設定する。だからCLASSPATHに指定している
ものも再度設定する必要がある。
・カレントディレクトリも自分でちゃんと設定しないといけない。
・クラスパスの区切り文字はWindowsでは「;」。
だから
java -classpath "C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;." TestPG
でどうだ。
944 :
927 :05/02/14 00:07:08
>>942 C:\java>java -classpath .; C:\PostgreSQL\8.0\...の(.;)しましたが変わらずエラーでした
というか、マイコンピュータ右クリ→プロパティ→詳細→環境変数のところで設定してるのですが・・・
945 :
927 :05/02/14 00:08:30
>>943 ありがとうございます。結果は↓でした(;_;)
C:\java>java -classpath "C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;." T
estPG
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at TestPG.main(TestPG.java:12)
>>945 全部まとめて、""で囲んでいる
>>943 は、間違っている。
それに、
C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar
↑このパスならばスペースを含まないから、""で囲む必要はなし。
java -classpath C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;. TestPG
でどうだ?
C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jarのパスが間違いないことは、確認しとけよ
948 :
927 :05/02/14 00:16:00
>>946 分かりやすい例を出していただきありがとうございます。
だからさ、コマンドラインや環境変数から指定されたクラスパスが ちゃんと設定されているかmain()中で System.err.println(System.getProperty("java.class.path")); しろと。大体ドキュメントにJDBCに必要なjarについて書いてないの?
>>945 すまん、C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jarのところな、C:PostgreSQLじゃなくて、
C:\PostgreSQL だった。
>>950 お前が間違うから、それをコピったおれまで間違ってるではないか!
>>952 ということはいま927の相手をしているのは3人以上いるわけだな。
じゃ、俺は
_∧∧__ / ̄ ̄ ̄
|( ゚д゚)| < 寝る
|\⌒~\ \___
\ |⌒⌒|
954 :
927 :05/02/14 00:30:15
>>950 うおおおぉぉ!
すごすぎ!できました!ありがとうございます。
C:\java>java -classpath C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;. TestPG
VALUES = day onesy
出ました!、、、でもデータベースの中身を引き出せてないような・・・ちょい調べてみます。
956 :
デフォルトの名無しさん :05/02/14 00:47:20
助けてください。 web上にある画像(jpg)を読み込んで、その画像に画像処理を施す、 というプログラムを書いています。 ローカルにあるjpgファイルをImageオブジェクトやPixelGrabberを使って ピクセル値を取り出すところはできたのですが、 「web上にある画像を読み込む」ところがわかりません。 Image img = Toolkit.getDefaultToolkit().getImage( URL url ) というメソッドがあるらしいのですが、 具体的にどのようにすればよいのでしょうか?
そのまま使えば良いんじゃないの?
958 :
927 :05/02/14 01:06:33
>>954 >でもデータベースの中身を引き出せてないような・・・ちょい調べてみます
分かりました、ソース(TestPG.java)の記述が間違ってました(引用したソースのかけらが残ってました)。
>String name = rset.getString("day");
>String email = rset.getString("onesy");
>System.out.println("VALUES = " + "day" + "\t" + "onesy");}
訂正↓
String day = rset.getString("day");
String onesy = rset.getString("onesy");
System.out.println("VALUES = " + day + "\t" + onesy);}
C:\java>javac TestPG.java
C:\java>java -classpath C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;. TestPG
VALUES = 2005-02-01 お父さん
VALUES = 2005-02-01 お母さん
959 :
デフォルトの名無しさん :05/02/14 01:12:02
>>957 そのまま使いたいんですが、
たとえば、
Toolkit.getDefaultToolkit().getImage( new URL(h ttp://www.〜〜.co.jp/a.jpg) )
みたいに指定するだけだと、
action deniedというエラーが出ました。
ファイルのpermissionを確認しましたが、ちゃんと777になっています。
どう対処すべきかわからず、質問した次第です。
対処方法を教えてください。
960 :
デフォルトの名無しさん :05/02/14 01:19:36
959です。 なんか自己解決してしまいました。 classファイルと同じところにある画像を読み込むことができました。 URL url = new URL(getCodeBase(), "〜〜.jpg"); img = Toolkit.getDefaultToolkit().getImage(url); でいけました。 お騒がせしました。 ありがとうございました。
アプレットかよ。 アプレットはアプレットのおいてあるサーバとしかデフォルトでは通信できないだろ。
962 :
917 :05/02/14 09:27:21
919さん、教えていただいた方法でできました。 ありがとうございます。
963 :
デフォルトの名無しさん :05/02/14 09:46:22
ブラウザ上で動くアプレットではなく、 コマンドプロンプトでのCUIアプリでもなく、 普通のWindowsアプリのように ウィンドウを出してその中でツールなりゲームなりを作りたいのですが、 javaでスタンドアロンのアプリってどうやって作ればよいのでしょうか。 とりあえずアプリの自前ウィンドウを出して文字表示でもできればよいのですが、 特別な方法があるのでしょうか。
|∧_∧ |´・ω・`) そ〜〜・・・ |o源 o |―u' | ∧∧ |(´・ω・`) |o ヾ |―u' 源 <コトッ | ピャッ! | ミ | 源 import java.awt.*;import java.awt.event.*;import javax.swing.*; class JFrameSample{ public static void main(String args[]){ JFrame jf = new JFrame("JFrameSample"); JPanel jp = new JPanel(); JLabel jl= new JLabel("おはよう、世界"); JButton jb = new JButton("良し!"); jf.setContentPane(jp); jb.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ Toolkit.getDefaultToolkit().beep();}}); jp.add(jl); jp.add(jb); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setBounds(0,0,150,80); jf.setVisible(true);}}
965 :
963 :05/02/14 12:40:22
>>964 ありがとうございます。でもやはり結局コマンドプロンプトとかから起動するしかないんですかね?
なんかDOS窓とか開くのは気持悪いです。
なんていうか普通のWindowsアプリみたくexeファイルダブルクリックで
即、アプリが単独で起動するような感じに作ることっていうのはJavaでは無理なんでしょうか?
EclipseはJavaで作られてるって聞いたことがあるんですが、
exe形式の実行ファイルで普通に起動しますよね?
これはどういう事なんでしょうか。こういう風にできたら理想なのですが。
過去スレまで調べろとは言わんが、現行スレで既出かどうかぐらい調べろよ #この話題はマジでFAQ入れた方がいいと思う
>>967 まともなインストーラを作らずに圧縮ファイルに適当にまとめて
配布したい人には重要なんじゃないの?
VM上で動くものだっていう認識が薄いんだと思う。 例え、exe経由で実行できるようにしても、 JREまで配布しなければならないと知ったら、失望するんだろうな。
JWSで、署名して云々とかいうとまた「えーっ」とか嫌がられるしな。 そこらの*.exe何も警戒せずに実行している藻前らにそんなこといわれ とうないわ、って感じだ。
メインクラスをmanifestで指定した、JARの場合の不満点 ・一般ユーザにJARファイルが実行可能だという認識がない。(ダブルクリックして実行できると思わない) ・アイコンが設定できない インストーラ作って、アイコンを設定したショートカットファイルを スタートメニューなんかにおけば、おそらく要望は満たされると思うが、 インストーラまで作りたくない。 というのが理由だと思う。
973 :
963 :05/02/14 13:18:24
>>969 VM上で動くってのも分かっておりますし、EXE形式に拘ってるわけではないのであります。
説明のために、WinアプリのEXEみたいな起動方法を例として上げただけで、
あんな風に普通にアイコンダブルクリックで起動できればというのが希望していることです。
なのでそれができれば形式とかは問いません。
自分で起動するにも他人に配るにもいちいちコマンドプロンプト立ち上げて
「java 〜」とか打ち込むのは面倒くさいです。
とりあえずexe化する方法は教えていただけたので参考になりましたが(ありがとうございます)、
どうもすこし大げさな気がします。
他にも方法があったら教えて下さい。お願いします。
>>973 であれば、どれかの方法が考えられる。
a)バッチファイルを作って、バッチファイルにコマンドラインと同じことを記述する
b)jarファイルにmanifestファイルを追加する(Windowsならダブルクリックで起動可)
c)b)で作成したjarに対するショートカットファイルを作って、アイコン設定する。
単にダブルクリックで実行したいだけなら、バッチファイルでも作れば楽だよ。
976 :
853 :05/02/14 13:48:38
>>902 PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table set user_name = ?", ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
と変更して実行したのですがやはりMySQL上に反映されておりませんでした。
何が原因なのでしょうか?全くもって不明です(●>_<●)
>>973 その発言の中のキーワードで検索できるんじゃないか?
>>976 なにか例外はでてない?
例外がでてたら書いてくれ
979 :
853 :05/02/14 13:54:16
>>903 すみません。
>>903 のソースで試したもみたのですが
やはりDBへ反映されません。。。
文法もちゃんと合ってはいると思うのですが、、、
980 :
853 :05/02/14 14:13:52
>>978 例外は得に何も出ていませんでしたので、
自らMySQL上で下記のコード
insert into member_table set user_name="hogehoge";
と入力した所
ERROR 1062: Duplicate entry '' for key 1
というメッセージが表示されました。もしかすると
SQL文自体が間違っているのかもしれませんので
ぐぐって色々試してみます。
(回答頂き申し訳無いのですがこれから仕事へ出かけます)
どうもです(^o^)v
981 :
デフォルトの名無しさん :05/02/14 14:15:02
こんにちは。質問があります。 JavaMailを使用して、受信メール一覧等、指定のフォルダのメール一覧の取得はできたのですが、 アドレス帳に登録されているメールアドレス一覧の取得はできるのでしょうか?
>>975-977 ありがとう!大変参考になりました。
そのmanifestファイルってのがなにやらよさげなので
探ってみます。バッチファイルもよさげです。
色々レスくれた皆様もありがとうございました。
984 :
デフォルトの名無しさん :05/02/14 14:41:22
すいません。 そこらへんも良く分からなくて、アドレスが保管されているものからだったら何でも良いのですが、 メールのように、取得できる方法何か良い方法はあるのでしょうか?
>>983 ちなみに、eclipseなんかを使っているのであれば、
Manifestファイルなんかはあまり意識することなく、
GUIによるウィザード形式で、メインクラスを指定するだけで作れる。
eclipseの場合は、「エクスポート」を使う。
>>984 メールはサーバから受信したり、送信したりする仕様が決まっているが、
アドレス帳は、様々なメールソフトが独自に実装しているもの。
だから、「Outlook Expressだったら、○○の形式で、××というファイルに保存される」
とか、「鶴亀メールは、xxxxの形式で、yyyyというファイルに保存される」
とか、ソフトによって勝手に実現されているわけ。
当然、JavaMailができるのは、全てのメールソフトのアドレス帳形式に
対応するなんてしているわけなくて、仕様が決まっている送受信の部分だけ。
アドレス帳を読みたいのであれば、まずは、
どのメールソフトのアドレス帳なのか決めろ。その上で
・(例えば)Outlook Expressのアドレス帳は、どんな仕様で保存されいるのか?
といった質問から始まる。そして、この質問はJavaと無関係なのでスレ違い。
>>984 どうにでもできるから好きなように実装すればよい。
>>985 Eclipseを前提にしていいのであれば、NSISのフロントエンド
となるプラグインがあるので、それ使ってインストーラー
つくっちゃうほうがいいね。スタートメニューにアイコンできるし、
JREを同梱するかどうかの判断を別にすれば、かなりベストに
近い解だと思う。ただ基本的に有償で、フリーで使えるのは
RCPアプリケーション向けの部分だけだけど。
>>986 さん,987さん
わかりやすい説明ありがとうございます。
とても参考になりました。
使用しているのはMSのOutlookなので、〜.pabと言うファイルを解析すれば上手く取得できそうです。
お忙しいところ答えていただき、ホントにありがとうございました。
990 :
サミー・コリル :05/02/14 15:41:40
,. −===ー- 、_ _ ,. ' ´ 丶、 ,.r' / \ ,ィ//l / ヽ `、 /ミ/// / / n ヽ ヽ ', /ミ///: / / // / l l .l l } i l ヽ lミlトl=l:: / / // / / l | l l l l l / j==|=l: :/ / // / / l l | | l | | < あっボク、サムエル・ワンジル。1000を取るから。ヨロシクね 《(@)}ノ: |//‐/‐!/l/!/ / //l|__/ / / l l \ lー'lξソ_,.r==ト`i! リ /イ/三レ'l|/ / l | l l:: |ξ ヽ {:':::::リ ` ' ,.イ:':::::} ヾレi l l | |:: lξ iヘ,. ''=‐' !;;__ノ ハリ | l _| l:: |:ξt6l /// , /// シ´〉 / /l | |_:: l::ξlート、 ‘ /-'l //::l| l |:: !::ξl:::l::::ヽ、 ‐‐ ィ':::::ノ //::::|l / `ィ!|:: l::::|:::::}. ` 、__ ,. イ:::::}::::/ //::::/!/ i!ヽ、|::::ト、:j |;;;;l;;/;;/ /'´ー.'|/ _ ー`ノ l\__//,_ /:::::\―/ ` `ー-〒コ ト、 ノ:::::::::::::`ヽ、_, ―‐、,,, ,.ー−‐l::l Y::ヽ、 ,.-'::::,へ、::::::::::::`ヽ,_ /:/ l::::::::ヽ=、 /::::::/ : :`ヽ、::::::::`ヾ、、 /:/__|::::::::::i:::〕〕、 ./::::::/ : : `ヽ、:::::::ヽ,`ヽ、 / ̄`ヽヽ\::::::l|:::|: :ヽ /::::::/ : : `ヽ、::::`ヽ,-‐'‐‐==、 l:::|::::::\i!::l : `、 |:::::/ : : `ヽ:::::⊂ニニニ、ー |::|:::::::::::\l : : :ヽ |:::/ : : : : `ヽ;:::ヽ_`> l:::l::::::::::::::::\: : :`、
991 :
デフォルトの名無しさん :05/02/14 15:42:44
java で、C で言うところの、argv[0] を取得する方法ってありますでしょうか? class ファイルが置いてあるディレクトリ名を取得したいのです。
>>989 >使用しているのはMSのOutlookなので、〜.pabと言うファイルを解析すれば上手く取得できそうです。
そうそう、そこからがんばれ。
>お忙しいところ答えていただき、
誰が忙しいといった!皮肉か?それは。
>>991 classファイルはファイルとしておいてあるとは限らないので(JARとかネットワーク経由とか)、だめじゃない?
システムプロパティjava.class.pathを見るとか。
なんのために、classファイルがおいてあるディレクトリ名を知りたいの?
本当はカレントディレクトリが分かれば良いとか、リソースとして取得することで十分とか
他の手段で十分な可能性もある。
994 :
デフォルトの名無しさん :05/02/14 16:02:13
gpg を Runtime.getRuntime().exec() で実行するのですが、 gpg の設定ファイルを class と同じディレクトリに置いておいて、 gpg の引数で指定しようと思っています。なので、ディレクトリ名が欲しいのです。
>>994 new File(".").getAbsolutePath();
997 :
デフォルトの名無しさん :05/02/14 16:20:26
次スレは立てない方針みたいだなw やはり、JAVA言語はすでに廃れてる事が証明されたようだなw JAVA厨たちよ。君らの時代は終わったw プゲラ
>>994 gpgとはなにか知らんが、
File f = new File(new URI(ClassLoader.getSystemResource("hoge.conf").toExternalForm()));
System.out.println(f.getAbsolutePath());
でどうかな?
クラスと同じフォルダとは限らず、カレントディレクトリにおいてあるという前提であれば、
>>995 でもよいと思うが、違うディレクトリからクラスパス指定して動かした場合は、
>>995 ではだめ。
999 :
デフォルトの名無しさん :05/02/14 17:05:37
1000 :
デフォルトの名無しさん :05/02/14 17:19:30
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。