5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

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

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

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

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

2 :デフォルトの名無しさん:05/01/14 17:32:02
>>1.
乙。

3 :デフォルトの名無しさん:05/01/14 17:33:27
Frame を作って setSize でサイズを指定しようとすると、
そのサイズはタイトルバー込みのサイズになってしまいます。
タイトルバーなしのサイズを指定(もしくは取得)したいのですが、
何とかする方法はありませんか?

4 :初心者 ◆Java/isQ.c :05/01/14 17:41:00
>>3
次のページの「タイトルバーを除いたFrame領域の取得方法」が参考になるかもしれません。
ttp://mikilab.doshisha.ac.jp/~junjis/rwiki/index.cgi?cmd=view;name=Java%BB%A8%B5%AD

5 :3:05/01/14 17:59:02
>>4
ぉぉぉ、まさにそれです。
ありがとうございました。

6 :デフォルトの名無しさん:05/01/14 20:05:43
前スレの969さん、ありがとうございます!
これでプログラムでIEEE754の浮動小数点表現が得られ、仮数の桁数も求められる
ようになったわけですが、あと切捨ての有無を調べるにはどうしたら良いでしょうか。
わかる方、教えて下さい!!
以下に今の所できているプログラムを記載します。


class FloatingPoint {
public static void main(String[] args) {
// 文字列 args[0] を float 型に変換
float f = Float.parseFloat(args[0]);
// float 型 f のビット表現を文字列 str に変換
String str = Integer.toBinaryString(Float.floatToRawIntBits(f));

System.out.println(args[0] + " = " + str);

System.out.println("仮数の桁数は" + ((0 <= args[0].indexOf('e') ?
args[0].indexOf('e') : args[0].length()) - (0 <= args[0].indexOf('.') ? 1 : 0) + "です。"));
}
}


7 :デフォルトの名無しさん:05/01/14 20:07:52
>>1
おつかれ。

8 :デフォルトの名無しさん:05/01/14 20:52:48
このスレでいいのかな?
アプレットはJRE無しでも動くものなのでしょうか?
それともアプレットが動くということは、JREが入っているということですか?

9 :デフォルトの名無しさん:05/01/14 21:12:29
JRE無しで動くわけねーだろ

10 :デフォルトの名無しさん:05/01/14 22:15:47
スレ違いだったらすいません。

javaをホームページに載せようとアップロードしてるのですが、
(クラス名)$1.class
(クラス名)$2.class
などのクラスファイルがアップロードできなくて困ってます。

たぶんファイル名に「$」が入ってるからダメだと思うのですが、
何か良い方法はないでしょうか?
プログラムを書き直すしかないですか?
どうかよろしくお願いします。

11 :デフォルトの名無しさん:05/01/14 22:20:55
デジャブってやつか

12 :デフォルトの名無しさん:05/01/14 22:50:46
>>10
外部蔵酢煮汁

13 :デフォルトの名無しさん:05/01/14 22:52:54
>>10
jar で固めろ。

14 :デフォルトの名無しさん:05/01/14 22:53:11
>>10
jarファイルにまとめましょう。

15 :10:05/01/14 23:19:22
既出質問すいませんでした。
前スレ検索して、解決できました。
とてもありがとうございました。

16 :デフォルトの名無しさん:05/01/15 00:30:49
あの〜JAVAの入門書を読んで次に何をやったらいいか途方にくれてます
少し考えたのですが、簡単なブラウザでも作ろうかと思ってるんですがいきなりは厳しいでしょうか?
GUI・ネットワークの勉強にもなるとは思うんですけど・・・

基礎本の後って皆さん何をやるんですかね? いきなりすいません
入門書の後に読む参考書でも買ってJAVAのメカニック・プログラミングでも学ぶんでしょうか?
それともJSPやJDBCとかを勉強するんでしょうか?
こんなおいらに何でもいいんでアドバイス下さい

17 :デフォルトの名無しさん:05/01/15 00:33:28
まず自前ウインドウにhello world!と表示するところから順番に始めたほうがいいと思うな。マジで。

18 :デフォルトの名無しさん:05/01/15 00:58:22
質問です。
参考として本についているCDのプログラムをコピペしてコンパイルしてみると
"Untitled1.java": クラス FirstApplet は public であり、ファイル FirstApplet.java で宣言しなければなりません。
とエラーが出てきました。
他の参考書のサンプルプログラムを記述してコンパイルしても同じようなことが起こってしまいます。
この解決方法を教えてください。


19 :デフォルトの名無しさん:05/01/15 01:00:35
>>18 エラーメッセージのとおりにファイル名を直す。

20 :デフォルトの名無しさん:05/01/15 01:01:20
>>18
FirstApplet.javaに名前を変更してコンパイル

21 :デフォルトの名無しさん:05/01/15 01:01:24
>>18
1つのファイル中では、publicなクラスは1つしか宣言できません。
ファイルを2つに分けましょう。

22 :デフォルトの名無しさん:05/01/15 01:01:57
ソースファイル内に複数のクラスを宣言するときはたった一つだけ
public宣言していなければならない。
また、public宣言をしてあるクラスがソースファイル名になる。

>>18
FirstAppletクラスのpublic修飾子をはずせば動くなり!

23 :デフォルトの名無しさん:05/01/15 01:02:55
みんな速い..。

24 :デフォルトの名無しさん:05/01/15 01:07:12
ところで、Untitled1.javaってファイル名つけるエディタって
なんだろ。メモ帳じゃないよね。

25 :デフォルトの名無しさん:05/01/15 01:09:09
じゃあ、僕も問題出すよ。もっとも早くデータを参照できるクラスをえらんでね。
1.String[]
2.ArrayList
3.Vector
4.HashSet

26 :デフォルトの名無しさん:05/01/15 01:09:55
ぱっと見そういうクラスなのかと思ってたよ。。

27 :デフォルトの名無しさん:05/01/15 01:10:53
>>25
うーん。
じゃあ直感で、1!

28 :デフォルトの名無しさん:05/01/15 01:13:29
>>27
ぶー。

29 :デフォルトの名無しさん:05/01/15 01:24:04
J2EEコンテナに配備したインスタンスに対して、
リモートアクセスするときはJNDI名でlookupするけど、
同じコンテナ上のアプリからのアクセスは
java:comp/env/...という名前になるよね?

なぜこのような違いがあるのか教えてもらえないだろうか。


30 :18:05/01/15 01:46:36
早い返事、どうもありがとうございます。
修正(ファイル名をクラス名に変更、publicを除去)してコンパイルし実行してみましたが
Exception in thread"main"java.lang.NoSuchMethodError:main
との表示がでました(コマンドプロンプトにて)
スレッドに関しての詳しい勉強はまだしていないのですが
mainからプログラムが始まるということは勉強しました。
エラーに関しての詳しいことはよく分からないのですがmainの表記がないことが問題なのでしょうか?
一応次にソースがありますので分かる方教えてください。お願いします。


31 :18:05/01/15 01:47:01
〜始〜
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
/*
<applet code="SelectColor" width=400 height=60>
</applet>
*/

class SelectColor extends Applet
implements ItemListener {
CheckboxGroup cbg;
Checkbox red, green, blue;
Canvas canvas;

public void init() {
cbg = new CheckboxGroup();
red = new Checkbox("Red", cbg, true);
red.addItemListener(this);
add(red);
green = new Checkbox("Green", cbg, false);
green.addItemListener(this);
add(green);
blue = new Checkbox("Blue", cbg, false);
blue.addItemListener(this);
add(blue);
canvas = new Canvas();
canvas.setBackground(Color.red);
canvas.setSize(30, 30);
add(canvas);
}


32 :18:05/01/15 01:47:46

public void itemStateChanged(ItemEvent ie) {
Color color;
Checkbox cb = cbg.getSelectedCheckbox();
if (cb == red)
color = Color.red;
else if (cb == green)
color = Color.green;
else
color = Color.blue;
canvas.setBackground(color);
canvas.repaint();
}
}
〜終〜

(publicは複数記述されていますがメソッドなので問題ない・・・ですよね?
 すいません、よく理解できていなくてm(__)m
 コンパイルは成功しましたし、参考書のものなので間違いはないと思いますが。。。)


33 :デフォルトの名無しさん:05/01/15 01:54:04
>30
そりゃ、「java SelectColor」ってしてるからでそ。
アプレットをブラウザ以外で動かしたかったら、コマンドはjavaじゃなく、appletviewer。
「appletviewer SelectColor.java」でドゾ。

34 :デフォルトの名無しさん:05/01/15 01:56:44
>>33
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/appletviewer.html

35 :デフォルトの名無しさん:05/01/15 01:59:48
>>33
>>1くらいは見ようね。>>1の二つ目のリンクを見たまい。

36 :デフォルトの名無しさん:05/01/15 02:02:23
>>35
class SelectColor extends Applet

37 :デフォルトの名無しさん:05/01/15 02:03:27
> J2EEコンテナに配備したインスタンスに対して、
> リモートアクセスするときはJNDI名でlookupするけど、
> 同じコンテナ上のアプリからのアクセスは
> java:comp/env/...という名前になるよね?

そうとも限らない。
リモートアクセスでもjava:comp/env/...が使えるコンテナなら
使った方がよい。結合が疎になり、アプリケーションの
ポータビリティが高まる。

38 :16:05/01/15 02:07:31
>>17
アプレットも基本的な表示は入門書で勉強しました

だれか僕にもかまってください

39 :デフォルトの名無しさん:05/01/15 02:11:34
うす。

C畑出身なんだけど、

class A {
public String hoge()
{
String s = new String("hoge");
return( s );
}
}

このクラスのメソッドで返してるString[s]ってローカル変数でしょ?
これってアリ?
JAVAのガベージコレクタって、参照カウンタが残ってる限り、値を
保証してくれるの?perlみたいに。


40 :デフォルトの名無しさん:05/01/15 02:14:04
>>39
アリ。

41 :デフォルトの名無しさん:05/01/15 02:15:22
>>37
java:comp/env/ってリモートアクセスでも使えるの?
例えばコンテナ次第で

・ローカルでもリモートでもjava:comp/env/が使える
・ローカルでは使えるがリモートでは使えない
・ローカルでは使えないがリモートでは使える

というパターンがあり得る、ということ?

あと、この辺の話はJ2EEの仕様?それともEJB仕様?JNDI仕様?
この辺の話を明瞭に解説してある資料がうまく探せなくて。

42 :39:05/01/15 02:19:02
>>40
じゃー、明示的にnull突っ込んで参照カウンタ減らさないと破棄してくれないんだな。
ガベージコレクタの信頼性を聞くのは野暮だろうけど。
さんくす。


43 :40:05/01/15 02:24:02
>>42 あ、でも
>String s = new String("hoge");
これはなしだな、糞すぎ。

44 :39:05/01/15 02:29:58
>>43

return(new String("hoge"))

か?

45 :デフォルトの名無しさん:05/01/15 02:38:01
>>44
> >>43
> return(new String("hoge"))
> か?

return "hoge";

だよ。String は new しない。


46 :デフォルトの名無しさん:05/01/15 02:40:01
>>38
マジレスしとくと、ブラウザでも既存部品を使ってやってみるとか、ともかく既存品をいじって
組み立てるようなイメージで作られるものを、ひとつずつ挑戦することだな。

プログラムは結局作ってみなければ分からないことが多い。世に発表するとかじゃなくて、
練習がてら、思いついたことが実現できそうかやってみるとか、作っては作りかけで棄てる
のを繰り返しているうちになんか分かってくる。

そんなことして遊んでいるうちに蓄積した知識で、1本くらいソフトが作れるようになる。
まず完成させる事は忘れて、ともかく実験、実験、実験で遊びまくれ。

たとえばだ、フツーのTextFieldにメールアドレスがあったら青くしてクリックしたら
別の画面が開くようにするにはどうしたらいいか? とかそういうぱっと思いついた
単機能で遊んでみるのが楽しいと思う。

47 :39:05/01/15 02:41:12
>>45
javadocに

String str = "abc";
は、次と同じです。
char data[] = {'a', 'b', 'c'};
String str = new String(data);
と、書いてあるぞ。
しんたくすしゅがーじゃないのか。

もしかして、JAVAって文字列はStringになんの?char[]じゃなくて?


48 :デフォルトの名無しさん:05/01/15 02:41:53
>>41
EJB仕様でもJ2EE仕様でもなく、JNDI仕様の範疇だが
仕様では明確に規定されていない、コンテナ依存の部分だな。
・ローカルでは使えないがリモートでは使える
というパターンも理屈ではあり得るが実際にはほぼ無いと考えていいだろう。
リモートで使うにはグローバルJNDI名と関連づける「何か」が必要。
たとえばJBossだったらjboss.xmlとかjbossweb.xmlなどで関連づけを行う。
明確な資料は思い当たらないな・・・・
JBoss入門(技術評論社)とかはわかりやすいが、ここですべて解説されているかと
いうとそうでもないし。

49 :デフォルトの名無しさん:05/01/15 02:45:23
>>47
文字列はStringクラスのインスタンスだよ。しかも同じ文字列は使い回される。
でもnewしたら使い回さずに新しいインスタンスを作るから非効率。

50 :39:05/01/15 02:47:35
>>49
[String クラスは文字列を表します。Java プログラム内の "abc" などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。 ]
書いてあった。すまんこ。
さんくすこ。


51 :デフォルトの名無しさん:05/01/15 02:48:15
>>47
String str1 = "abc";
char data[] = {'a', 'b', 'c'};
String str2 = new String(data);
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
「同じ」っていったときに二つの意味があるんだよ。
あと、
String str3 = new String("abc");
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
の違いもこのスレだと定番。オブジェクト生成
のコストも違う。

52 :デフォルトの名無しさん:05/01/15 03:28:43
>>48
リモートアクセス→lookupしてPorableRemoteObject#narrow
ローカルアクセス→lookupで直接取れる

という前提はまず正しいだろうか? 

んで、グローバルで一意なJNDI名が定義してあれば、
基本的にローカルでもリモートでもJNDI名で
lookup出来るんだよね。

その上で、java:comp/envを使うと、

・java:comp/env/参照名でアクセスできるので、
JNDI名をソースにハードコーディングせずに済む。

・同一コンテナ上の異なるアプリで同じ参照名が使われた
としても、java:comp/env/参照名としているとコンテナ側
で名前衝突を回避してくれる。

といったメリットがあるから、なるべくjava:comp/env/を
使うべし、ということでいいかな。

53 :デフォルトの名無しさん:05/01/15 03:37:30
> リモートアクセス→lookupしてPorableRemoteObject#narrow
> ローカルアクセス→lookupで直接取れる

> という前提はまず正しいだろうか?

まあそうなんだけど。
JNDIクライアントは、リモートアクセスするのかローカルアクセスするのかは
意識せずに透過的に扱えるのが望ましいから、
リモートだろうがローカルだろうがPorableRemoteObject#narrow()したほうが安全。

> んで、グローバルで一意なJNDI名が定義してあれば、
> 基本的にローカルでもリモートでもJNDI名で
> lookup出来るんだよね。

そう。

> その上で、
〜 中略 〜
> といったメリットがあるから、なるべくjava:comp/env/を
> 使うべし、ということでいいかな。

そう。

54 :デフォルトの名無しさん:05/01/15 03:51:43
>>53
ありがとう。胸のつっかえが取れたよ。


55 :デフォルトの名無しさん:05/01/15 10:54:51
> の違いもこのスレだと定番。オブジェクト生成
> のコストも違う。
C厨じゃねーんだから、百済ねーこと気にする暇あったら、アルゴリズムでも最適化しろ、ボケが!

56 :アーサー ◆YkgOFep6fs :05/01/15 12:16:17
>>55
いや、くだらなくないと思うよ。と釣られてみる。

57 :デフォルトの名無しさん:05/01/15 12:35:30
せこせこ実行速度を気にするやつは、Javaなんかやめちまいな!

58 :デフォルトの名無しさん:05/01/15 12:50:44
直接Javaには関係ないんですが、MYSQLと連携したプログラムを作りたいと思って
います。win98でmysql4.0.13に環境変数PATHを設定する場合、どうしたら良
いでしょうか。(mysqlはC:\の直下にあります)
ちなみにAutoexe.batに付け足すのはわかっているんですが・・・

59 :デフォルトの名無しさん:05/01/15 13:04:29
>>58
Javaと同じように付け足せばいい

60 :デフォルトの名無しさん:05/01/15 13:07:00
>>58
板違いだが特別にヒントをくれてやる。感謝しろ。
http://www.google.co.jp/search?hl=ja&q=MySQL+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB+Windows&lr=


61 :デフォルトの名無しさん:05/01/15 15:15:22
時系列の株価をグラフ表示するアプリケーションを作ろうと思っています。

株価データを取得し、移動平均等を計算するクラスを作って、
SwingのGUIのボタンなどで株価データを扱うようにはできました。

あとは、グラフを表示するところなんですけど、
Canvasを拡張してpaint()をオーバーライドするのかなと思っていますが、
合ってますか?

拡大表示できるようにして、スクロール可能にしたいと思っています。
ScrollPaneに乗せるだけで実現可能でしょうか?

あと、表示するグラフの種類(ローソク足とか移動平均とか)をJCheckBoxで選択したいんですけど
選択したグラフの種類のデータは、
Canvasを拡張したクラスに変数を作ってGUIで操作される度にsetするのと
CanvasにGUIのクラスへの参照を持たせて、JCheckBoxのisSelected()で判断するのと
どちらが良いですか?

以上、よろしくお願いします。


62 :デフォルトの名無しさん:05/01/15 16:09:41
tomcatとapacheと連携させていますが、
サーブレットに対してアクセス制限をかけたいです。
IPアドレスで許可または拒否するにはどうしたらいいでしょうか?
できれば拒否または許可リストを、標準入力で読み込んでできるとナイシなのですが。
ちなみにjspファイルには何もしたくありません。

63 :デフォルトの名無しさん:05/01/15 16:35:55
JAVA逆引き大全500っていう本を前に買ったんですけど、550っていうのが出てるらしいのです。
いったい何が変わったのでしょうか?
後、みなさんはリファレンスとして、やはり本を買って使っているのでしょうか?
もし使っているのでしたら、その本のタイトルも教えていただけるとありがたいです。

64 :デフォルトの名無しさん:05/01/15 17:31:03
>>61
>Canvasを拡張してpaint()をオーバーライドするのかなと思っていますが、
>合ってますか?

それはAWT
Swingの基本なのでテンプレふくめ少し検索してみるといい

わかりやすくヒントをいうとSwingはある意味すべてのコンポーネントがCanvas


65 :デフォルトの名無しさん:05/01/15 18:16:09
import java.io.*;
class testTyping
{
public static void main(String args[])
{
int i;
while(true)
{
System.out.println("小文字の英文字を大文字の英文字にします。");
System.out.println("小文字の英文字を入力して下さい。");
try
{
i=System.in.read();
}
catch(IOException objioexception)
{
System.out.println("input erro");
return;
}
if('E'==(char)i)
{
return;
}
i=i-32; //小文字から32を引くと大文字の英文字になります。
System.out.println((char)i);
}
}
}

66 :65:05/01/15 18:27:26
すいません、ソースだけ先走ってしまった・・・
以下の質問お願いします

http://www.geocities.jp/onearchangela/javaex/javaex0005.htm
このサイトのプログラム(>>65)を実行したのですがうまくいきません
内容は、入力する小文字を一字づつ大文字にして'E'が入力するまで続けるものです

どこがおかしいのかと言うと、例えば

小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい

の時に、'a'を入力すると

小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
a
A
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
?
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
?
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。

となります
何故か?と待ち受けプロンプトがいくつも表示されます
他の入力でも同じ感じです
ソース見てもそうなるとは思えないし、'?'が出てくる事事態が謎です


67 :デフォルトの名無しさん:05/01/15 18:27:37
ArrayListに同じObject型(例:Employee型)のObjectを
たくさん格納しています。

で、この中から同じ社員コードを持ったEmployeeオブジェクトを
排除してしまいたいのですが、何か言い方法はありませんでしょうか。


68 :デフォルトの名無しさん:05/01/15 19:14:09
Tomcat3.3.2+Apache1.3.29(mod_jk1.3)で、
例えば http://hoge/examples/ ってやったときに
(examplesはContextで登録済み)ディレクトリのリストが
表示されるんだが、このリストを表示させないようにしたい。
どうすればいいんだろう?

Tomcat4系だと、web.xmlに
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
にすればいいらしんだけど、
Tomcat3でweb.xmlにこのエントリを買いても
うまくいかない。

教えてエロい人〜






69 :デフォルトの名無しさん:05/01/15 20:33:03
今、初めてこのスレにたどり着いたんだけど、J2SDK5.0ってどうなの?
1.4.2_06から乗り換える価値あり?不具合とかバグとかが心配なんだけど、あんまりそういう話聞かないし・・・

70 :デフォルトの名無しさん:05/01/15 20:40:27
>>66 CRLF

>>69 実務で使うんじゃなければさっさと乗り換えたら?

71 :デフォルトの名無しさん:05/01/15 20:44:25
>>70
実務じゃないけど、趣味でJava系のプログラム(GUI系やWeb系)を配布してるから・・・
しょうもないバグがあったり・・・とかで時間を喰われたくないんだ。


72 :デフォルトの名無しさん:05/01/15 20:52:13
>>71
不特定多数に配るんじゃどっちにしろ5.0系での動作確認は
やることになるだろ。

73 :デフォルトの名無しさん:05/01/15 21:26:40
test.txtというテキストファイルの各行の
10文字目以降の文字を読み込むプログラムを作りたいのですが、うまくいきません。。
substring()を使うと思うのですが、どうすればいいのでしょうか?

現在のソースは以下のようになっています。

FileReader fr = new FileReader("test.txt");
StreamTokenizer st = new StreamTokenizer(fr);
String instring;
while(st.nextToken() == StreamTokenizer.TT_NUMBER){
i++;
a[i-1]=st.nval;
}
fr.close();

74 :デフォルトの名無しさん:05/01/15 21:49:30
>>73
File f = new File("test.txt");
FileChannel channel = new FileInputStream(f).getChannel();
ByteBuffer buffer = ByteBuffer.allocate((int)f.length());
channel.read(buffer);
channel.close();
buffer.clear();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
String s = new String(bytes);
String[] line = Pattern.compile("\\n").split(s);
for(int i=0; i<line.length; i++){
line[i] = line[i].substring(10, line[i].length());
}

こんな感じではだめ?

75 :デフォルトの名無しさん:05/01/15 22:04:35
HogeClass a ; //実体が生成されない
int b ; //実体が生成される

HogeClass c = new HogeClass; //実体が生成される
int d = new int ; //駄目

HogeClass[] e ; //実体が生成されない
int[] f ; //実体が生成されない

HogeClass[] g = new HogeClass[10]; //実体が生成されない
int[] h = new int[10] ; //実体が生成される

何か納得いかないのは俺だけか。
皆、ここで躓かないのか。
C馬鹿の俺に、納得いく説明を誰か頼む。


76 :デフォルトの名無しさん:05/01/15 22:09:40
>>74
java.nioかよ。

>>73
java.ioとsubstringを使ったバージョン。

List resultList = new ArrayList();
BufferedReader fr = null;
try {
fr = new BufferedReader( new FileReader("test.txt"));
for( String line = fr.readLine(); line != null; line = fr.readLine()) {
String wanted = line.substring( 9, 10);
resultList.add( wanted);
}

//内容を表示
for( Iterator iter = resultList.iterator(); iter.hasNext(); ) {
String forPrint = (String)iter.next();
System.out.println( forPrint);
}
} catch( IOException e) {
e.printStackTrace();
System.exit(1);
} finally {
if( fr != null) {
try{
fr.close();
} catch( IOException e) {}
}
}

77 :66:05/01/15 22:11:32
>>70
CRLF・・・キャリッジリターン・・・
解りません、CRLFだけでは読み取れないです
もう少し詳しく教えてください、お願いします

78 :デフォルトの名無しさん:05/01/15 22:14:45
>>66
70じゃないけどな
i = 'a';
i = '\r';
i = '\n';

79 :デフォルトの名無しさん:05/01/15 22:14:51
>>75
1と2は大丈夫でした。
3は少し。
4は何回かミスを。。

プリミティブの変数と普通のオブジェクトは別に考えてるから気にならないのかも。

80 :デフォルトの名無しさん:05/01/15 22:21:30
>>75
「実体」の意味が行によってまちまちじゃないか。だから納得いかんのじゃないか?

HogeClass a ; //変数が作成される
int b ; //変数が作成される

HogeClass c = new HogeClass; //インスタンス(実体)が生成されて、変数cにその参照が代入される。
int d = new int ; //intはclassじゃないんだからnew演算子が使えるわけないだろがボケ。

HogeClass[] e ; //配列型の変数が作成される(中身は空)
int[] f ; //配列型の変数が作成される(中身は空)

HogeClass[] g = new HogeClass[10]; //配列型の変数に、10個分のHogeClass用領域をもったArrayクラスのインスタンス参照が代入される。
int[] h = new int[10] ; //配列型の変数に、10個分のint用領域を持ったArrayクラスのインスタンス参照が代入される。

何の矛盾も無いな。

81 :73:05/01/15 22:23:17
>>74
>>76

jdk1.3を使っているので>>76さんのでうまくいきました。
java初心者でわかりにくい質問だったと思いますが、
早急な解答をお二方ともありがとうございました。


82 :66:05/01/15 22:44:16
>>78
ありがとうございます
つまり、'a'以外にもprintlnの'\n'、リターンキーを押した時の'\r'の事でしょうか?
>>66のサイトにはその事について触れて無いんですけど間違い?

83 :81(73):05/01/15 23:20:53
すみません、>>81(>>73)の者ですが、
ファイルによってはプログラムを実行すると
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -2
というエラーがでます。
各行の10文字目から2文字前を見てみると、半角の英語でした。
(他はスペースか数字)
これはどういったエラーなのでしょうか?

84 :デフォルトの名無しさん:05/01/15 23:37:15
>>83
間違ったインデックスを参照しようとして発生する例外です。
10文字未満しかない行で10文字目以降をsubstringしようとしたりしたせいかも。
長さによって処理を変えましょう。
それと、76のsubstringはline.substring(9, line.length())にしないといけない気が。

85 :76:05/01/15 23:59:04
>>84
あー、そだね。よく見てなくて、10文字目をとってくるように書いてしまった。
あとOutOfBounds(範囲外)例外は10文字目がないから起きてるんでしょうね。というわけで修正してみた。

List resultList = new ArrayList();
BufferedReader fr = null;
try {
fr = new BufferedReader( new FileReader("test.txt"));
for( String line = fr.readLine(); line != null; line = fr.readLine()) {
if( line.length() >= 10) {
String wanted = line.substring( 9, line.length());
resultList.add( wanted);
} else { resultList.add( ""); }
}

//内容を表示
for( Iterator iter = resultList.iterator(); iter.hasNext(); ) {
String forPrint = (String)iter.next();
System.out.println( forPrint);
}
} catch( IOException e) {
e.printStackTrace();
System.exit(1);
} finally {
if( fr != null) {
try{
fr.close();
} catch( IOException e) {}
}
}

86 :デフォルトの名無しさん:05/01/15 23:59:15
stringをdoubleに変換する方法教えてください


87 :81(73):05/01/16 00:04:46
>>84
>>85

ありがとうございました!無事に解決しました!!

88 :デフォルトの名無しさん:05/01/16 00:04:50
>>86
double d = Double.parseDouble(string);

89 :デフォルトの名無しさん:05/01/16 00:05:16
J2SEをインストールしましたが、J2EEも入れる必要はありますか?
そもそもJ2EEとはなんなのでしょうか?

90 :デフォルトの名無しさん:05/01/16 00:06:30
>>89
今のあなたにはたぶんいらない。
J2EEはJSP/Servlet/EJBといったWebアプリケーション用のエディションです。

91 :89:05/01/16 00:07:47
>>90
アプレット作成だけなら不要なんですね。ありがとうございます。

92 :75:05/01/16 00:10:41
>>80
んなこたーわかってんだよ!

HogeClass a ; //(参照を格納できる)変数が作成される
int b ; //(参照ってなんですか)変数が作成される

Cばっかやってると、この二つが心情的に納得いかねーんだよ!
Stringで混乱すんだよ!
String[] s = new String[10];
で、「よーしパパ文字列10個作っちゃったぞ〜」とか勘違いしがちなんだよ!
s[0]とか参照してコンパイラに「何いってんの?」とか言われると
逆切れしたくなるんだよ!


93 :デフォルトの名無しさん:05/01/16 00:18:23
>>92
おれも最初やったなぁ
Object[] objs = new Object[10];
objs[0].toString();
とかやるとぬるぽ

Javaで
HogeClass a;
ってのはC++だと
HogeClass& a;
なんだよ。だから
a = new HogeClass();
って実体を作ってやんなきゃならん

94 :デフォルトの名無しさん:05/01/16 00:54:02
>>66
あー、じゃあ
System.out.println((char)i);
これ、
System.out.println(i);
System.out.println(",");
にして、アスキーコード表とにらめっこしな。


95 :92:05/01/16 01:01:01
>>93
やっぱ、
「JAVAはクラスの場合デフォでエイリアスでその上参照先変更可」
と憶える他無いのか。
俺は気分が悪い!帰るよ!


96 :デフォルトの名無しさん:05/01/16 01:02:45
Eclipseを使い始めてわからない事があり、Eclipseスレで質問したのですが、
Java自体初心者という事で別スレ行けといわれたのでこっちに来て見ました。
というか質問の内容がEclipseってわけじゃないようなんですが・・・

Eclipseでdoclet(javadocのカスタマイズ)を書いているのですが
Eclipseでどうやって実行させればいいんでしょうか?
ファイルのエクスポートからJavadocを選んだのですがどこに何をいれたら
いいのかわかりません・・・

Javadocコマンドにはtools.jarを指定、ドクレット名に自作ドクレットの名前、
ドクレットクラスパスはそのソースのパス、を入れて終了おしたのですが
うまくいきません・・・
エラーメッセージはこんな感じです。
http://www.uploda.org/file/uporg31221.jpg

あとjavadocのソースコードは公開されていると聞いたのですが
どこを探してもみつけれません・・・
どこにあるのでしょうか?
Sunのサイト・・・?

97 :デフォルトの名無しさん:05/01/16 01:03:40
"やさしいJAVA"でオベンキョしてるけど
GUIを作れるようになるのはマダー?
電卓とか作りたいなぁ・・・

98 :デフォルトの名無しさん:05/01/16 01:04:20
Cばっかやってるっていってるんだから、C++じゃなくてCで説明したほうが
よかないか。

・Object objは、HogeRec *hogeRecみたいなもん。
・Object[] objs は、HogeRec *hogeRecsみたいなもん。つまり上と変わらん。
・obj = new Object() は hogeRec = malloc( sizeof( HogeRec)) みたいなもん。
・objs = new Object[5]は、hogeRecs = malloc( sizeof( HogeRec) * 5)みたいなもん。

だからString[] s = new String[10] は stringArray = malloc( sizeof( String) * 10) のようなものに過ぎん。
そりゃCでもstringArray[0]とか参照したら、「なにいってんの?」すら言ってくれずにバスエラーだろ。
「文字列10個つくっちゃったぞー」ではなくて、「文字列10個分のメモリ確保したぞー」なわけだから。

おれは上記のような理解でいったので、そこでは躓かなかったなあ。

誤解を恐れずに言えば、JavaにはCのような意味での「配列」という型はないんだな。
あるのは「Arrayクラス」だけ。でStringが言語仕様に組み込まれているのと同じように、Arrayも
言語仕様に組み込まれている.....というよりも特別扱いされてて、なんとなくCっぽく使えるようになって
るけど、基本的にはやっぱりオブジェクトであることに変わりはない。

99 :98:05/01/16 01:05:22
あ、98は>>92宛です。

100 :デフォルトの名無しさん:05/01/16 01:06:23
>>97
GUIなんてそんなに楽しくないよ。
絵を描くなら別だけど。
言語とかつくるほうが楽しそう。

101 :デフォルトの名無しさん:05/01/16 01:10:14
>>98
っつーか、C にマトモな配列が無いのでは。引数で渡すとポインタに成り下がったりとか。

あと、Arrayクラスってーのは文脈を見るに配列型だね。
Array(java.lang.reflect.Array)はリフレクションで配列にアクセスするためのユーティリティクラス。

102 :デフォルトの名無しさん:05/01/16 01:12:16
>>96
> Javadocコマンドにはtools.jarを指定
そこは使用する javadoc.exe をフルパスで指定する場所。

103 :デフォルトの名無しさん:05/01/16 01:16:00
テキストフィールドに入力した実数をdouble型で宣言してる変数に代入するにはどうしたらいいですか?

104 :96:05/01/16 01:18:56
>>102
javadoc.exeてのは標準javadocですよね?
それはどこにあるんでしょう・・・?

105 :デフォルトの名無しさん:05/01/16 01:20:24
>>103
String string = textField.getText();
あとは>>88
つーかAPI嫁

106 :デフォルトの名無しさん:05/01/16 01:20:37
>>104
JDKをインストールしたディレクトリ\bin\javadoc.exe

107 :66:05/01/16 01:37:03
>>94
やってみました、納得です
System.out.println(i);
に変更して>>66と同様'a'を入力すると結果が三つ
65,-19,-22
i=i-32; を考慮するとアスキーコードで97,10,13
にらめっこした結果'a'とCRとNL

System.out.println(","); の結果は三つ','でした
','とリターンキーでwhile分が3回ループしている事がわかりました

どうもです


108 :96:05/01/16 01:40:23
>>106
おお、ありがとうございます、とりあえず実行はできました!
ところがまたエラーが・・・

javadoc: doclet クラス DocSearch が見つかりません。
エラー 1 個

というやつなんですが。
読み込むソースはJavadocが生成される型の選択 てとこで
指定するんですよね?
ちなみにDocSearchてのが自分で作った奴です。
クラスパスはEclipseで作ったのがここにあるのでこんな感じで
指定してるのですが・・・
C:\Program Files\eclipse\workspace\DocSearch\src

109 :デフォルトの名無しさん:05/01/16 01:43:03
>>108 ソースパス示してどうするよ。いちどエクスプローラで
そこみてごらん。classファイルないから。

110 :デフォルトの名無しさん:05/01/16 01:45:25
>>108
勘でレス。
>C:\Program Files\eclipse\workspace\DocSearch\src
最後のsrcはいらないと思う。
これはEclipseの話です。

あるいはカレントディレクトリにクラスパスが通ってない??
クラスパスに.(ピリオド)があるかどうか確認してください。
これはJava一般的な話。問題の切り分けが難しいですね。

111 :96:05/01/16 01:48:38
>>109、110
おお!無事できました!
ありがとうございました!


112 :デフォルトの名無しさん:05/01/16 01:51:14
java.lang.NumberFormatException: empty String
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:983)
at java.lang.Double.parseDouble(Double.java:220)
at test3.init(test3.java:19)
at sun.applet.AppletPanel.run(AppletPanel.java:353)
at java.lang.Thread.run(Thread.java:534)

上のエラーは何ですか?

113 :111:05/01/16 01:52:11
あ、それでjavadoc(標準doclet)のソースコードはどこにあるか
わかるかた、教えてもらえたらありがたいです・・・

114 :デフォルトの名無しさん:05/01/16 01:53:14
>>113 SDK全体のソースと同じとこ。

115 :デフォルトの名無しさん:05/01/16 01:54:15
というか、日本語ドキュメントの標準docletの説明読めば
そこからリンクされてる。

116 :デフォルトの名無しさん:05/01/16 01:58:53
                        |
                        |  
      ∩___∩              |  ぷらぷら
      | ノ  _,  ,_ ヽ        ((   |
     /  ●   ● |         (=)>>112
     |    ( _●_)  ミ _ (⌒)    J  ))
    彡、   |∪|  ノ  
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ

117 :デフォルトの名無しさん:05/01/16 01:59:49
>>112
「Stringオブジェクトに空文字が入ってるのでdoubleに変換できない」と言っているのです。

http://pc5.2ch.net/test/read.cgi/tech/1100565043/485n
>>86
>>103
http://pc5.2ch.net/test/read.cgi/tech/1100565043/505n

着実に進んでるみたいですね(プ

118 :111:05/01/16 02:16:17
>>114
それって C:\j2sdk1.4.1_07 にある src.zip というやつでしょうか?
その中には見当たらないのですが・・・

>>115
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/javadoc/standard-doclet.html
ここの一番したのやつのことですよね?
Page Not Found で見つからないのですが・・・
周辺をうろうろしてみたけど見つからずダウン・・・

119 :デフォルトの名無しさん:05/01/16 02:17:54
>>118 そのページの英文よく読め。

120 :111:05/01/16 02:24:45
>>119
ttp://www.sun.com/software/communitysource/j2se/java2/download.html
ここがそれっぽいなとJava 2 SDK 1.4.2のDownload押してみたのですが、
登録しないとだめだ見たいな事がでるのですが、登録しないとソースコードは
見れないのでしょうか?
何度もすいません・・・

121 :デフォルトの名無しさん:05/01/16 03:08:06
Eclipseに関してはこちらもご利用ください

【SDKから乗換】EclipseでJAVAの勉強【初心者大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1105811745/

122 :92:05/01/16 03:32:34
>>98
>・objs = new Object[5]は、hogeRecs = malloc( sizeof( HogeRec) * 5)みたいなもん。
あら、そうなのか。
hogeRecs = malloc( sizeof( hogeRec) * 5)
だと思ってたよ。
つまり、Cで言うポインタ配列。
ぶっちゃけ
HogeRec *hogeRec[5];
これと等価かと思ってたんだが、めんどくせぇな、おい!


123 :デフォルトの名無しさん:05/01/16 03:36:52
>>92
Stringで混乱するのは単に、Cが本来は「文字の配列」でしかないchar[]を
「文字列」として扱っているところに問題があるかと。
JavaやC#では「文字列」は本当に「文字列」として扱う(C++はやや微妙)。

あと実体が生成されたりされなかったりと言ってるけど
単に初期値がnullか0かの違いに過ぎないわけで。その意味で
>String[] s = new String[10];
>で、「よーしパパ文字列10個作っちゃったぞ〜」とか勘違いしがちなんだよ!
ってのは別に勘違いじゃないじゃん。
初期値のnullが入ってるけどStringは10個あるんだから。
(もちろんint[] i = new int[10];ならintの初期値の0が入ってるだけ)。

124 :デフォルトの名無しさん:05/01/16 03:49:14
>>122
98が間違い。
Object[] objs = new Object[5]はHogeRec **hogeRecsみたいなもん。
その意味でポインタ配列みたいなもんというのはあってるがHogeRec *hogeRec[5]ではない。

だからhogeRecs = malloc(sizeof(HogeRec *) * 5)となる。
もちろんhogeRecs[0]を使う前にはhogeRecs = malloc(sizeof(HogeRec))が必要なのはいうまでもない。

125 :98:05/01/16 09:05:37
>>124
たしかに間違ってたよ。ポインタの配列だからね....

126 :デフォルトの名無しさん:05/01/16 10:46:38
>>125
ポインタの配列へのポインタね。

127 :デフォルトの名無しさん:05/01/16 12:24:28
object[] objs = new Object[10];
オブジェクトを作成、参照を配列の要素に格納
objs[0] = new Object();
objs[1] = new Object();
objs[2] = new Object();



128 :デフォルトの名無しさん:05/01/16 12:40:53
あのObjectInputStreamを継承したクラスのコンストラクタで

public class MyObjectInputStream extends ObjectInputStream {
public MyObjectInputStream(InputStream in)throws IOException{
super(in);
     //その他の処理が続く
}
//続く
}
と、スーパークラスのコンストラクタにInputStreamを渡しています。(使用時はソケットから得たInputStream)
大抵の場合はこれでうまくいくのですが、たまに、super(in);のところでEOFExceptionが出ます。
データの読み込みのところでEOFExceptionが出るのであればまだわかるのですが、
ここででるのはさっぱり意味がわかりません。
で、今手元にスタックトレースの結果がないので(諸事情で)、わかりにくいかもしれませんが
スーパークラスのコンストラクタの処理の中のreadFullyメソッドで最終的にはEOFExceptionが出てしまっている
ようです。
 このような症状を経験された方いらっしゃらないでしょうか?

129 :デフォルトの名無しさん:05/01/16 14:52:06
htmlを表示するアップレットを作ろうと思っています。
どうでしょうか?


130 :デフォルトの名無しさん:05/01/16 15:30:36
JavaDocumentのFileChannelの説明で
>RandomAccessFile インスタンスの getChannel メソッドで取得したチャネルは、
>インスタンスがモード「r」で作成された場合は読み込み可能、
>モード「r」で作成された場合は読み込みと書き込みが可能です。
ってかいてあるけど
2番目の「ら」は「w」だよね


131 :デフォルトの名無しさん:05/01/16 15:37:30
ブッブー

132 :デフォルトの名無しさん:05/01/16 17:01:11
文字列の考え方ってこれであってる?

String[] hogeA = new String[1];
String[] hogeX = new String[1];
hogeA[0] = "ABC";
hogeX[0] = hogeA[0];
hogeA[0] += "DEF";
// hogeA[0] = "ABCDEF" , hogeX[0] = "ABCDEF"

String hoge1 = "ABC";
String hoge2 = hoge1;
hoge1 += "DEF";
// hoge1 = "ABCDEF" , hoge2 = "ABC"

133 :デフォルトの名無しさん:05/01/16 17:20:28
指定したファイルを読み出して!で始まる命令でその命令に従って
ファイルの内容を変換して出力するというプログラムを作ろうと思うのですが

その命令というのは!RIGHT で右寄せ !CENTERで中央寄せ !LEFTで左寄せという風にしてます。
readLineメソッドで読み込んでif分で比べていき、
その後出力するという方法なのですがだと思うのですが。

出力は一行ずつすればよいのかまとめて出力するものなのかよくわかりません。
どなたか力を貸してもらえないでしょうか?

134 :デフォルトの名無しさん:05/01/16 17:31:20
>129
どうでしょうかと言われても。作りたければお好きなように。

>132
なぜそこまで書いて、mainメソッドとクラス宣言書いてコンパイルする手間を惜しむ?
(訳: 自分でやってみれ)

>133
どっちでもいいと思うが普通はバッファ処理はBufferedWriterに任せて
プログラムからは1行ずつたらたら書き出すもんじゃないかと思われ。

135 :デフォルトの名無しさん:05/01/16 17:46:05
イベントリスナの実装は、一般的にどのタイミングで、
実装されるべきもの何ですか?

136 :デフォルトの名無しさん:05/01/16 18:14:35
String型の文字列をchar型の配列に代入(コピー)したいんですが、どのようにすればいいんでしょうか?

test2.java:53: 互換性のない型
検出値 : java.lang.String
期待値 : char[]
s=str1; /* そのまま入れるとコンパイルエラーになります。 */
^
エラー 1 個

お願いします。

137 :初心者 ◆Java/isQ.c :05/01/16 18:19:45
>>136
java.lang.String クラスの getChars メソッドを使ってみてはどうでしょう?
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/String.html#getChars(int, int, char[], int)

138 :デフォルトの名無しさん:05/01/16 18:35:33
>>136
s = str1.toCharArray();

139 :133:05/01/16 18:47:41
>>134
なるほど・・・。
一応ストリームの分でBufferedWriterを見たのですが
ちょっといまいち自信がありませんでした。

頑張って解いてみます

140 :136:05/01/16 19:07:16
>>137
>>138
さん、ありがとうございます。
おかげで解決できました。

141 :デフォルトの名無しさん:05/01/16 21:03:05
import com.oreilly.servlet.MultipartRequest;
でエラーになるんだけど
このパッケージって何かのjarファイルをダウンロードして
CLASSPATH通せばいいんですか?

環境はTomcat5 です

142 :初心者 ◆Java/isQ.c :05/01/16 21:18:54
>>141
ttp://www.servlets.com/cos/

143 :デフォルトの名無しさん:05/01/16 22:32:29
キーボードから入力した文字の一番目と二番目の文字を取り出し、さらにそれを
整数に変換するため、

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

char ch1 = str.charAt(0);
char ch2 = str.charAt(1);

int res1 = Integer.parseInt(ch1);
int res2 = Integer.parseInt(ch2);

と売ったのですが
int res1 = Integer.parseInt(ch1);
int res2 = Integer.parseInt(ch2);
のところでえらーがでます。原因はなんでしょうか?



144 :デフォルトの名無しさん:05/01/16 22:33:22
売った×→打った

145 :133:05/01/16 22:36:44
先ほど質問をしたものです。
作っていたところに新たに疑問点が生じましたのでご教授ください。

133でいっていた命令で

!LEFT これ以降の行を左寄せで出力
!begin これ以降の行を出力
!end  これ以降の行を出力しない
命令がない場合は!LEFTと同等の効果が現れるようにしたいと思ってます。

!LEFT
プログラム作成中

とすると
プログラム作成中 と表示されるとしたいのですが。
なまじ命令がないところは!LEFTと同じようにしないといけないためちょっと混乱しています。

BufferedReaderで1行ずつ読み込んでいこうとは思ったもののちょっと壁にぶち当たっています。

146 :デフォルトの名無しさん:05/01/16 22:55:41
JAVAでOS依存と言うのは邪道かもしれませんが、
COMオブジェクトを作成する方法は何かありますか?

147 :デフォルトの名無しさん:05/01/16 23:06:12
オレが最近までしていた思い込み。

char = -128〜+127
byte = 0〜255

148 :デフォルトの名無しさん:05/01/16 23:08:56
>>145
どっち寄せかという情報と、出力するかどうかというフラグを変数で持て。
そのものを書くと意味ないからヒントだけにしておくが。

aが0なら左、1なら中央、2なら右
pが0なら出力しない、1なら出力する

149 :デフォルトの名無しさん:05/01/16 23:16:17
>>143
そんなメソッドなかった気が。

150 :デフォルトの名無しさん:05/01/16 23:38:35
>146
JComとかどうよ。漏れ自身は試したことないけど。
ttp://download.seesaa.jp/contents/win/data/appdata/09877/

151 :デフォルトの名無しさん:05/01/16 23:47:56
>>147
俺が今現在進行中で思い込んでるんだが、俺を救ってくれ


152 :デフォルトの名無しさん:05/01/16 23:54:56
>>150
おお、正にぴったりな感じですね。どうもです。
ちょっと試してみます。

153 :デフォルトの名無しさん:05/01/16 23:56:37
>>151
char 0u0000〜0uFFFF (int換算で0x0000〜0xFFFF)
byte -128〜+127

154 :デフォルトの名無しさん:05/01/17 00:00:16
>>153
そうそう、charが2バイトだって知ったときはめちゃめちゃショックだった。
char=1文字=UNICODEだから2バイトなんだよね。

155 :デフォルトの名無しさん:05/01/17 00:06:51
>>151
char 0〜65535
byte -128〜127

156 :デフォルトの名無しさん:05/01/17 00:09:08
げ、かぶった。スマソ

intが速くて、十分でかいからshortとかlongとか
ほとんど使ったことないなあ。。。

157 :デフォルトの名無しさん:05/01/17 00:13:15
最近のCPUって4バイト単位の処理が一番速いんだっけ?
メモリに余裕があるなら小さな数値しか扱わなくてもbyteよりintの方が速いとか。

158 :153:05/01/17 00:16:10
>>154
UNICODEなのか!
だから、OBEXのNameHeaderをchar[]に受け取れるのか。
今まで、Hoge((char)byteBuff)とか書いてた俺は馬鹿ですか。

そして、byteはunsignedじゃないのか。
なんか、自分が小さく見えてきたよ。


159 :デフォルトの名無しさん:05/01/17 00:20:30
>>158
8ビット時代からやってる人にとっては今までの常識が通用しないこともある。

160 :153:05/01/17 00:27:43
>>159
unsigned byte無いの?

byte b = 0xff;

これOK?

161 :デフォルトの名無しさん:05/01/17 00:32:47
>>160
符号付整数型
整数のリテラルは内部的には int 型に解釈されます。
byte, short 型変数へ代入すると、自動的に型変換されて代入できます。
byte, short への代入は、代入先の変数の型に合わせて自動的に型変換されます。
無論、データ型の表現できる数値の範囲を超えたリテラルは代入できません。


だそうだ。
そもそも基本データ型に符号無しが存在しないから、特に事情がない限りは
整数はintかlongで扱えということなんじゃなかろうか?


162 :デフォルトの名無しさん:05/01/17 00:44:26
JSPの勉強しようと思ってます
http://www.atmarkit.co.jp/fjava/rensai2/jspservlet03/jspsevlet03_1.html
このサイト参考にしてJDK、Tomcat、Apache(version2.*)をインストールしました(OSはXP)

あとはApacheとTomcatの連携をとるためにコンテナmod_jk2が必要になるそうですが
ジャカルタHPの何処から選んでいいかよく解りません
http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/release/v2.0.1/bin/win32/
ここのTomcat Web Server Connectors (including mod_jk, mod_jk2, and mod_webapp (the deprecated WARP connector))
からJK 2 Binary Releases →Win32→...tors-jk2.0.4-win32-IIS.zip(一番上)で合ってますか?
よろしくお願いします

163 :デフォルトの名無しさん:05/01/17 00:46:11
16進数表記のアルファベット部分を小文字にしようか大文字にしようか迷っています。
どちらが好きですか?

164 :デフォルトの名無しさん:05/01/17 00:51:07
>>163
アセンブラなら大文字、他の言語なら小文字。

個人的には大文字のほうが好きだけど、大きいプロジェクトで
多人数でやるときに困るから小文字で書くクセをつけた。


165 :デフォルトの名無しさん:05/01/17 00:52:24
>>162
JSPの勉強をするのにApacheはいらない。Tomcat単体で勉強すれ。
書き込みのように、JSPではないよけいな箇所でつまづくし
問題が起こったときに原因の切り分けも難しいだろう。

166 :デフォルトの名無しさん:05/01/17 00:53:27
>>161
じゃ、通信バッファをint配列で扱うのか。
RAM無駄にしてる気がしてやだなぁ。
特にiαppliとか作ってると。

JAVAじゃ無理な事なんだろうが、ROM書き換える時とか、面倒そうだな。


167 :デフォルトの名無しさん:05/01/17 00:56:14
>>166 いや普通byte使うよ。

168 :デフォルトの名無しさん:05/01/17 00:57:23
>>166
iアプリだと速度とメモリの兼ね合いじゃない?
端末によってコアも違うから、必ずしもintが最速とは限らないし。

169 :デフォルトの名無しさん:05/01/17 00:57:27
>>165
そうなんですか、>>162のサイトを参考にしてたんですが・・
確かに処理はTomcatとApacheで区別するってありますね
それでも、コネクタをダウンロード・解凍してみたのですがなんか違うっぽい・・・

170 :デフォルトの名無しさん:05/01/17 01:03:22
>169
いや、162で書いてるのってIIS(マイクロソフト製Webサーバ)とのコネクタだし。
ついでにJK2コネクタはもうメンテされないそうだから忘れてよし。

171 :166:05/01/17 01:11:42
>>167
byte b = (byte)(0xff & in.read());
こういうの、だいじょぶ?

>>168
だな。
ただ、俺の携帯SH系で16ビット最速のはずだし、やっぱintか。


172 :デフォルトの名無しさん:05/01/17 01:13:05
byte a = 255; // エラー
byte a = 0xff; // エラー

byte a = (byte)255; // a = -1
byte a = (byte)0xff; // a = -1
byte a = (byte)0xffff; // a = -1
byte a = (byte)0xff80; // a = -128
byte a = (byte)0x80ff; // a = -1

(byte)NでキャストすることでN & 0xffされて、その結果を符号付byteとして格納されるっぽい。

173 :166:05/01/17 01:18:33
>>172
俺 お前 好き

174 :デフォルトの名無しさん:05/01/17 01:18:40
もし符号なしの0〜255の1バイト長データの配列があったとして、
それをソートしようと思ったらJavaだとどうするのが最も効率がいいんだろう?


175 :デフォルトの名無しさん:05/01/17 01:18:57
>>170
わかりました、忘れます。有難うございました

技術が枯れるのははやいですね

176 :166:05/01/17 01:19:01
>>172
俺 お前 食う

177 :デフォルトの名無しさん:05/01/17 01:22:13
>>171
|byte b = (byte)(0xff & in.read());
|こういうの、だいじょぶ?
言いたいことはわかるが、in.read()が-1を返したときに
判別できなくなるから、だいじょばない。

178 :166:05/01/17 01:24:11
>>177
そ、それぐらい知ってるよ!
ばーか、ばーか


179 :デフォルトの名無しさん:05/01/17 01:28:04
read()は結局のところ、一旦intで受け取るかbyte配列に読むしかないんだね。

180 :デフォルトの名無しさん:05/01/17 01:29:10
顔を真っ赤にしてうつむき加減にキーボードを叩く>>178の姿が目に浮かぶようです。

181 :デフォルトの名無しさん:05/01/17 02:10:29
>>178の必死さにワロタ
超ガンガレw

182 :デフォルトの名無しさん:05/01/17 02:30:03
jarファイルをダブルクリックしてソフトが起動出来るようにしたいのですが
そうするには
C:\Program Files\Java\jdk1.5.0\bin\java.exeに関連づけすれば良いのでしょうか

183 :デフォルトの名無しさん:05/01/17 03:09:52
>>146>>150
見て思ったが、JavaBeansでは無理?

Java(Beans)をActiveXにできるんだから、
「JavaでActiveXを叩く何か」も用意されてて良いような
気がするんだが・・・ぐぐっても見つからなかったorz
あまり需要ないのかな。

184 :デフォルトの名無しさん:05/01/17 03:44:51
今日からつかえるJSP&サーブレットサンプル集を見て、勉強しているのですが、行き詰っています。
スレッド式掲示板を作るというサンプルがあって、新規投稿の部分を作っています。

************
 new.jsp
************

bean_bbs objBbs = new bean_bbs();

//sbmがnullのとき、すなわち初めてこのページが開かれたとき
if(request.getAttribute("sbm") == null){
           <form method="post" action="new.jsp" name="fm">
             件名<input type="text" name="title" size="70" maxlength="25">
             名前<input type="text" name="nam" size="70" maxlength="10">
             パスワード<input type="password" name="passwd" size="15" maxlength="15"></td>
             <textarea name="article" cols="70" rows="15"></textarea>
             <input type="submit" name="sbm" value="投稿">
           </form>

}else{
//bbs_beanのsetArticleメソッドでは、引数で渡されたもの
         (掲示板の投稿内容)をbbsテーブルにINSERTしています。
       objBbs.setArticle((String)request.getAttribute("title"),
         (String)request.getAttribute("nam"),
         (String)request.getAttribute("article"),
         (String)request.getAttribute("passwd"),"0","0");
}

185 :デフォルトの名無しさん:05/01/17 03:56:08
>>182
JREかJDKをちゃんとWindowsにインストールするときに
それはできているはず。

それ+マニフェストファイルの設定がいる。
http://www.javadeveloper.jp/members/general/Article.category_topic_article_tips_issue_008.dhtml

186 :デフォルトの名無しさん:05/01/17 04:07:44
>>183
SWT

187 :デフォルトの名無しさん:05/01/17 06:24:24
>>185
そうなんですか
参考書を読みながらやってたのですが
C:\Program Files\Java\jdk1.5.0\demo\jfc\Notepadにある
jreをダブルクリックして起動してみましょうと書かれてたのですが、動かなかったのでおかしいなぁと
再インストールしたら出来ました。ありがとうございます

188 :デフォルトの名無しさん:05/01/17 08:09:48
Cで scanf("%d %d", &h, &w);は、javaではどのように記述したらいいんでしょうか?
あと
123
456
789
のようなデータを
num[0][0]=1,num[0][1]=2,num[0][2]=3
num[1][0]=4,num[1][1]=5,num[1][2]=6
num[2][0]=7,num[2][1]=8,num[2][2]=9
の2次元配列に格納するにはどのようにしたらいいんでしょうか?

189 :デフォルトの名無しさん:05/01/17 08:48:14
>>188
int[][] num=new int[3][3];

num[0][0]=1,num[0][1]=2,num[0][2]=3
num[1][0]=4,num[1][1]=5,num[1][2]=6
num[2][0]=7,num[2][1]=8,num[2][2]=9





int[][] num={{1,2,3},{4,5,6},{7,8,9}};

こんな感じ

190 :デフォルトの名無しさん:05/01/17 09:09:19
クライアントPC:Windows
サーバ:UNIX
上記環境でクライアントPCのローカルディスク上のファイルをWEBブラウザ(JSPページ)を通してサーバ側にアップロードするものを作りたいのですが、
サーバ側のプログラムでC:\〜と言うパスを認識させることって可能なのでしょうか?


191 :デフォルトの名無しさん:05/01/17 09:13:02
>>190
サーバ側でクライアントのパスを認識する必要はない


192 :デフォルトの名無しさん:05/01/17 09:35:27
>>186 SWTでのCOMサポートは限定的なものだからお勧めしない。

193 :190:05/01/17 10:19:29
>>191さん
ありがとうございます。
クライアント側からデータを送信して、
それをサーバ側が受け取り、所定の場所に吐き出すようにすれば良いのでしょうか?


194 :デフォルトの名無しさん:05/01/17 10:27:46
>>193
その通り。
Jakarta-commonsのFileUploadでも使うがいい

195 :デフォルトの名無しさん:05/01/17 10:36:50
恐れ入ります。
staticのクラスの中からstaticでない別のクラスの変数を参照したり、
変数に値を代入する方法はありますでしょうか?

196 :デフォルトの名無しさん:05/01/17 10:40:37
引数でオブジェクトもらえ。
クラスにはアクセサメソッド実装しておけ。

197 :190:05/01/17 10:41:04
>>194さん
ライブラリまで教えていただき、ありがとうございました。
早速とりかかってみます!

198 :195:05/01/17 10:48:57
>>196さん
ありがとうございます。

199 :デフォルトの名無しさん:05/01/17 11:57:33
散々既出な質問かもしれんが、教えてください。

ぶっちゃけ、Java2 SE 5.0(1.5) ってどうよ?

使用用途は個人でプログラミングする程度なんだけど
どこか恐くていまいち踏み切れない…。
いまのところ、バグとか不具合とか大丈夫?

導入に値しますか? それとも 1.4.2 使ってたほうがセーフ?

200 :デフォルトの名無しさん:05/01/17 12:01:33
個人ならそれほど気にする必要ないだろ

201 :デフォルトの名無しさん:05/01/17 12:14:55
>>200
そんなレスいらね 消えろ

202 :デフォルトの名無しさん:05/01/17 12:17:25
どんなレスが欲しいんだよ?

203 :デフォルトの名無しさん:05/01/17 13:28:10
>>201
おまえのその一言は
親切なおせっかいを
皆引かせるのに十分な一撃だ

204 :デフォルトの名無しさん:05/01/17 13:30:18
いまんとこ個人的には1.4xに戻りたくなるようなバグには遭遇していない。


205 :デフォルトの名無しさん:05/01/17 13:31:40
すでに1.5.0.01がでてるけどな

206 :デフォルトの名無しさん:05/01/17 14:41:57
なあ
byte[] = { 0xf0, 0x01 } ;
これ書くと

「0xf0はintなんだけど?解ってる?あなたお馬鹿ちゃん?」

とか言われて激しくむかつくんだが、俺が悪いのか。
通信データだからbyteじゃないと駄目なんだが。
おまいら
byte[] = { (byte)0xf0, 0x01 } ;
とか書いてるの?

207 :デフォルトの名無しさん:05/01/17 14:56:22
>>206
Javaのbyteは符号付1バイト整数、つまり範囲は-128 〜 127、
16進表記でいうと-0x80 〜 0x7fまで。
0xf0 = 240は大きすぎます。

208 :デフォルトの名無しさん:05/01/17 15:02:09
>>207
んじゃ、通信バッファにはint配列使ってんの?


209 :デフォルトの名無しさん:05/01/17 15:06:01
byte[] bs = {-0x10, 0x01};
と書けばいいのかな・・・スマン自信がなくなってきた。
-0x10 = 1111 0000
0x01 = 0000 0001
だよね?

210 :デフォルトの名無しさん:05/01/17 15:44:28
>byte[] bs = {-0x10, 0x01};

気持ち悪いな。
いや、まあ、それしか手が無いなら好みを言ってる余地は無いんだが。



211 :206:05/01/17 16:03:12
馬鹿馬鹿しいけど、全部
(byte)0x**
にしたよ!もりもり!

212 :デフォルトの名無しさん:05/01/17 17:45:55
>>206
10レス前くらい嫁。>>166-172


213 :デフォルトの名無しさん:05/01/17 18:25:56
TextAreaから一行ずつ読込んで2次元配列に一文字ずつ格納するにはどうすればいいでしょうか?
例) 12345
7d6r5
99y66
を num[0][0]=1,num[0][1]=2,num[0][2]=3,num[0][3]=4,num[0][4]=5
num[1][0]=7,num[1][1]=d,num[1][2]=6,num[1][3]=r,num[1][4]=5
num[2][0]=9,num[2][1]=9,num[2][2]=y,num[2][3]=6,num[2][4]=6

見たいな感じです。

214 :デフォルトの名無しさん:05/01/17 18:33:13
>>213
つ[hogechar = hogestr.charAt(int index)]

215 :デフォルトの名無しさん:05/01/17 18:37:47
>>213
間違ってたらごめん、動作確認してないから
String lines[] = textArea.getText().split("\n");
char num[][] = new char[lines.length][256];
for(int i = 0; i < lines.length; i++)
num[i] = lines[i].toCharArray();

216 :デフォルトの名無しさん:05/01/17 18:41:41
ありがとうご
ざいます

217 :デフォルトの名無しさん:05/01/17 18:42:30
まちがえま
した

218 :213:05/01/17 18:50:28
>>215
できました!ありがとうございました><

219 :デフォルトの名無しさん:05/01/17 20:16:54
Javaは特に学習サイトが充実してるよね。
もしかして書籍全く買わないでネットだけで習得
できちゃうんじゃない?って思う。

今まで計6冊のJava本を買い勉強してきた身としては
悲しい事実なんだけども。
ぶっちゃけ本買わないでネットの情報のみで
Javaを習得しちゃった人いる?
またはネットで習得可能だ!って思う人はなぜ
そう思うのか詳細キボヌ

220 :デフォルトの名無しさん:05/01/17 20:33:56
drawLine()とかの線の太さを変えたり、
点線を描いたりするにはどうすれば良いですか?

221 :初心者 ◆Java/isQ.c :05/01/17 20:42:59
>>220
線の太さを変える件に関しては次のWebページの末尾が参考になるかもしれません。
ttp://www.sun.ac.jp/Siebold/hemmi/JAVA_Manual_Graphics.htm

点線(破線)を描く件に関しては次のMLの投稿から情報を辿れるかもしれません。
ttp://java-house.jp/ml/archive/j-h-b/035277.html

222 :220:05/01/17 22:42:48
>>221
ありがとうございます
試してみます

223 :デフォルトの名無しさん:05/01/17 23:02:11
こんばんは、よろしくお願いします。
int 型は、32ビットで、
-2147483647から2147483647です。
補数も使って負の数も出力
以下こんな感じなのですが、
class Hosuu{
public static void main(String args[]){
int i = 0;
int ii = 0;
for(int j = 0;j<31;j++){
i = i+(int)Math.pow(2,j);
ii = ii + (~((int)Math.pow(2,j))) + 1;
System.out.println("負"+ii);
System.out.println("正"+i);
}}}
これだと32ビット使ってないような気がするのですが。

224 :デフォルトの名無しさん:05/01/17 23:36:54
>>223
ii = ii + (~((int)Math.pow(2,j))) + 1; ←

225 :デフォルトの名無しさん:05/01/17 23:50:33
>>224さんありがとうございます。
最後、1足してますから、ですね。
負の数をだすのに、1bit 必要ということですね。
失礼しました。

226 :デフォルトの名無しさん:05/01/18 00:11:20
ものすごく基本的なことなのだと思いますが、なぜか調べても分からなかったので教えて下さい。
メソッドの引数が、 | で区切られているソースを見たことがあるのですが、
これはどういう意味なのですか?

public void method( A | B | C | D ) {

}

Javaの勉強を始めた頃に見たので、そのときは単純に4つの引数を渡してるだけなんだと
思って見てましたが、今考えてみると、ここで渡されるのはtrueかfalseになるように思います。
でも、そのとき見たメソッドは、A,B,C,Dのどれとどれが指定されているかによって違う動きを
するものだったと思うんです。
つまり、

A

A | B

A | B | C

A | B | C | D

の4パターンの指定は、全て違う結果になったと思います。
trueかfalseなら、2パターンにしかなりませんよね?
でも確かに違う指定だったと思うんです。。。うろ覚えですみません。


227 :初心者 ◆Java/isQ.c :05/01/18 00:28:13
>>226
次のWebページが参考になるかもしれません。
ttp://www.hellohiro.com/basic/bit.htm

228 :デフォルトの名無しさん:05/01/18 01:55:54
http://www.geocities.jp/paid_to_chobits/aaa
にプログラムを作ったんですが、num[count]の部分が1回目は問題なく動作するんですが、
2回目(連続して実行)すると1回目のnum[count]の状態が残ってしまいます。
どうにかしてnum[count]の状態を初期化できないでしょうか?

229 :デフォルトの名無しさん:05/01/18 02:49:39
的外れなこと言ってるかもしれないけど、String num[]=new String[XX*YY];を
メインクラスに置かないでそれ専用のクラスを別に作って、必要時に作って
要らなくなったら破棄する方法はどう?これならサイズも動的に変えれる希ガス。

思いつきで書いてるから正しいかどうかもわからんが、これで想像してくれ。

hoge num = new hoge(XX*YY); // 使い始め
num.sethoge(count, "hoge");
str = num.gethoge(count);
num = null;  // 不要になったら

public class hoge {
  static num[];
  public void hoge(int maxcount) {
    num = new String[maxcount];
  }
  public void sethoge(int count, String str) {
    num[count] = str;
  }
  public String gethoge(int count) {
    return num[count];
  }
}

230 :デフォルトの名無しさん:05/01/18 02:50:37
ゴメン。

public class hoge {
  static num[];

じゃなくて

public class hoge {
  private String num[];


231 :デフォルトの名無しさん:05/01/18 03:01:08
>>228
ここまで凄いソースを書けるとは尊敬するよ。

232 :デフォルトの名無しさん:05/01/18 03:50:33
お薦めの入門書教えてください。

233 :デフォルトの名無しさん:05/01/18 06:10:58
>>221
便乗質問ですが、Graphics2D を使わないで、つまり ver.1.1 で同じことをやる
方法はないんでしょうか。

234 :初心者 ◆Java/isQ.c :05/01/18 06:56:34
>>232
少し前に私が調べてみた頃には、次の書籍が好評なようでした。
ttp://www.hyuki.com/jb/

235 :226:05/01/18 07:32:30
>227
理解しました! ありがとうございます!

236 :デフォルトの名無しさん:05/01/18 09:48:52
ファイルの中の行をBufferedReaderで読み込んでファイルに出力するというプログラムを作っているのですが
出力した行を最大で30文字に揃えなければならないのです。一行が30文字を超える場合は31文字以降を次の行に折り返すとなっています。

考えた方法としてはleadLine()で読み込んだ行をlength()で文字数をカウントして
if分で30文字を超えた場合は31文字以降を次の行に折り返す処理を行い、
そうでない場合にはそのまま処理を続けるという風にしたいのですが折り返す処理というものがいまいち理解できません。

新たに変数を作って一文字ずつ出力していき変数が30を超えたらprintlnで改行して
次の行に出力していけばいいのでしょうか?
FileReader fr; FileWriter fw;
try{
BufferedReader in = new BufferedReader(fr);
PrintWriter out = new PrintWriter(fw);

String s;
int length = 0;
while((s = in.readLine()) != null) {
length = s.length();
if(length > 35){
}else{
}

237 :206:05/01/18 10:42:11
>>212
超遅レスだが
それは受信のときだろ?
通信アプリでは固定送信データが必要になるじゃねーか。

それを
int txData[] = {0x10, 0x03, 0xff・・・・};
とintで書くのはまあ、別に構わん。

だが、OutputStreamはbyte[]しか受け取ってないのにどうするんだって話だ。
int渡しでループさせるのか。


238 :デフォルトの名無しさん:05/01/18 11:02:35
>>237
まあ落ち着け。おまいの当初の疑問は、>>160-161>>172読めば解決しないか?
キャスト無しにこだわるなら>>209だが。
通信だの送受信だのは関係ないよ。
この場合、java.ioパッケージの問題ではなくJava言語仕様の問題だから。

239 :デフォルトの名無しさん:05/01/18 12:33:09
>>236
1文字ずつやらんでも、readLineで読んだ1行の中には改行が含まれないから
30文字ずつやればいいじゃん。
例えば、50文字読んだら、30、20。

240 :デフォルトの名無しさん:05/01/18 12:37:28
Runtemi rt = Runtime.getRuntime();
Process P;
P = rt.exec(s);
P.watiFor();
で実行中のプロセスをP.destroy()で任意のときに強制終了させるにはどうすればよいのでしょうか?

241 :デフォルトの名無しさん:05/01/18 12:41:30
C# の char[] GetChars(byte[] bytes) に代わるようなメソッドは Java にはないでしょうか?
もしくは実現する方法があれば教えてください。

242 :デフォルトの名無しさん:05/01/18 12:50:07
>>241
new String(bytes).toCharArray()とか。

243 :236:05/01/18 12:56:28
>>239
そうですね。readLine()で呼んだ行の中にどうやって\nをいれようか悩んでいたんですがどうしてもわからなかったんです。
30文字ずつやるというのは
read()で1文字ずつ読み込み 変数などで文字数が30以上になるかなどを調整する
ということでいいのでしょうか?

244 :206:05/01/18 13:11:26
>>238
うむ、落ち着いた。すま。
JAVA曰く「キャストしましょう」か。
JAVA好感度-5
めそめそ。

245 :デフォルトの名無しさん:05/01/18 13:25:12
java超初心者なんですが,hello.javaというファイルを
コンパイルしたいのですが、コマンドプロンプトでjavac hello.java
としたのですが
'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

とでてコンパイルできません。どうすればよいのでしょうか・

246 :デフォルトの名無しさん:05/01/18 13:26:27
>>245
パスが通ってません。
>>1
をよく読め。

247 :デフォルトの名無しさん:05/01/18 13:38:54
>>245

おまいさん SDK インストールしたんだろ?
そのなかの bin っていうディレクトリーにパスを通せ。

例)
C:\Program Files\j2sdk1.4.2_04\bin

「パスの通し方が〜」「パスってなんですか?」なんていう質問したらやさしく抱きしめるぞ!

248 :デフォルトの名無しさん:05/01/18 13:41:38
>>242
説明不足でした。

C# では次のコードを実行すると "a]?RvE!a?iisPoa" が表示されます。

public class MyClass {
  public static void Main() {
    byte[] bs = {
      226, 93, 159, 82, 31, 118, 200, 33,
      97, 190, 237, 238, 115, 80, 243, 229
    };
    char[] c = System.Text.Encoding.GetEncoding(1252).GetChars(bs);
    string str = "";
    for (int i = 0; i < c.Length; i++) {
      str += c[i];
    }
    System.Console.WriteLine(str);
  }
}

Java で次のようにしてみると "[B@1be2d65" が表示されます。

public class MyClass {
  public static void main(String[] args) {
    char[] cs = {
      226, 93, 159, 82, 31, 118, 200, 33,
      97, 190, 237, 238, 115, 80, 243, 229
    };
    System.out.println(new String(cs));
  }
}

249 :248:05/01/18 13:42:11
つまり、
226, 93, 159, 82, 31, 118, 200, 33, 97, 190, 237, 238, 115, 80, 243, 229
が格納されている配列から、
C# の実行結果と同じ文字列を取得したいのですが、
実現する方法があれば教えてください。

250 :デフォルトの名無しさん:05/01/18 13:43:13
1.1.xでwebゲームを公開してるのですが、そろそろ1.2.x以降に乗り換えても大丈夫でしょうか?
それともflashに乗り換えたほうがいいですか?できればjavaの方がいいんだけど普及してない!?

251 :デフォルトの名無しさん:05/01/18 13:50:02
>>248
new String(new byte[]{ (byte)226, (byte)93, (byte)159, (byte)82, (byte)31, (byte)118, (byte)200, (byte)33, (byte)97, (byte)190, (byte)237, (byte)238, (byte)115, (byte)80, (byte)243, (byte)229 }, "windows-1252");

252 :デフォルトの名無しさん:05/01/18 13:53:07
>>250
素直にflashに乗り換えた方がよさげ。

253 :デフォルトの名無しさん:05/01/18 14:08:46
>>252
そうですか。
グラフィックはメモリイメージソースをいじって何とかなってたのですが、
サウンドがどうしようもないんですよね。1.2.x以降の普及を待つつもりだったのですが
flash陣営にかないそうにないみたいな意見がおおいですからね。
javaは好きだからしばらくはつづけつつも裏でflashの勉強でもしますかにょ。

254 :デフォルトの名無しさん:05/01/18 14:20:45
>>250
いいかげんMSJVMに頼るのは止めれ。
Appletプラグイン使って最新のJREをインストールしてもらうようにすべき。

255 :デフォルトの名無しさん:05/01/18 14:28:02
>>254
に1票。
5.0使えばいいじゃない。

256 :デフォルトの名無しさん:05/01/18 14:29:13
>>251
ありがとうございます。
ただ、"?]?Rv?!a???sP?? " と表示されてしまいます……

257 :245:05/01/18 14:34:24
読んだんですが
java.exeが
C:\Program Files\Java\j2re1.4.2_01\bin
というディレクトリにあるんですが
C:\Program Files\Java\j2re1.4.2_01\bin\javac
としても、パスが見つかりませんとなります・・
どうすればよいのでしょうか


258 :デフォルトの名無しさん:05/01/18 14:38:34
>>257
SDKをインストールしてないわけだ

J2SE SDK のダウンロード
http://java.sun.com/j2se/1.4.2/ja/download.html

259 :257:05/01/18 14:42:59
いや、学校のパソなんですけど、javaは入ってるんですよ。

260 :デフォルトの名無しさん:05/01/18 14:44:56
質問。
JavamailでX-Mailerの設定は無理ですか?

261 :デフォルトの名無しさん:05/01/18 14:47:08
>>259
ドライブ内をjavac.exeで検索してみたら

262 :デフォルトの名無しさん:05/01/18 14:50:22
>>259
SDKじゃなくてJREが入ってるんだろ

263 :デフォルトの名無しさん:05/01/18 14:51:15
>>256
C#とJavaで一文字ずつ16進表示させて比較してみたら?

264 :デフォルトの名無しさん:05/01/18 15:00:00
>>256
C#だとサーカムフレクスアクセントとかの無いASCII文字に成り下がるのか。
それをやると再変換しようとしても元に戻せないって事だから問題あるような。
まぁ、どの時点でそーなったかにもよるんだけど。

Javaの場合は小細工なしに出力して日本語のエンコーディングで扱えない文字は
全部'?'に変換されてるから予想された結果だけど。

265 :デフォルトの名無しさん:05/01/18 15:02:31
JFrame1のJButtonを押したらJFrame2が呼び出されて、
JFrame2でごちゃごちゃ計算した結果をJFrame1に返したいんですけど
どうしたらよいのか検討がつきません。ご教授願います。


266 :デフォルトの名無しさん:05/01/18 15:13:22
>>259
その「学校のパソ」とやらの管理者に聞けば良いんじゃない?

267 :1/2:05/01/18 15:25:29
>>265
class Manager{
 private JFrame1 frame1;
 private JFrame2 frame2;

 public static void main(String[] args){
  //自身のインスタンス化とJFrame1の表示
 }

 public void requestAction(){
  action(); // 何か複雑な処理
  frame2.showResult();
 }
}


268 :2/2:05/01/18 15:26:28
class JFrame1 extends JFrame implements ActionListener{
 private Manager maneger;
 public void actionPerformed(ActionEvent e){
  Thread t = new Thread(new Runnable(){
   public void run(){
    manager.requestAction();
   }
  });
  t.start();
 }
}


269 :257:05/01/18 15:28:22
>>262
そうっぽいです。JREの場合パス指定方法は
どのように?
C:\Program Files\Java\j2re1.4.2_01\bin\javac
ではパス指定になってないのですか?

270 :デフォルトの名無しさん:05/01/18 15:28:25
JDKの最新バージョンで1.5ですよね
じゃあJVMの最新バージョンは? JVMのバージョン意識する必要あるの?

271 :3/2 残った・・・:05/01/18 15:28:38
class JFrame2 extends JFrame{
 public void showResult(){
  SwingUtilities.invokeLater(new Runnable(){
   public void run(){
    // 表示
   }
  });
 }
}

ざっくり省いたので使うときは補ってくれ。それから、引数が必要な時は適宜クラス作れ。

272 :初心者 ◆Java/isQ.c :05/01/18 15:30:30
>>269
JREにはjavacは含まれませんよ。

273 :デフォルトの名無しさん:05/01/18 15:31:15
>>257
JREにはjavacはない。
しっかりしろ。

>>270
同じだ。

274 :初心者 ◆Java/isQ.c :05/01/18 15:33:42
>>270
JVMを含むJREとJDKは同じバージョンのものが同時にリリースされています。
最新のJDKで提供される機能をフルに用いた場合、最新のJVMが必要かと思います。

275 :デフォルトの名無しさん:05/01/18 15:34:38
>>270
なってない。javacっていうのはコンパイラを示す。
\bin\javacは意味不明になっちゃうの。

環境設定をしなさい。

276 :275:05/01/18 15:35:35
すまん>>269のまちがひ

277 :270:05/01/18 15:49:33
>>273
同じ?JDKとJVMのバージョンがですか?

>>274
JVMはJREとJDK両方に含まれてますよね
JREとJDKが同時にリリースされるのでバージョンが一緒になるのはわかるのですが
JVMも一緒になるのでしょうか?

というのもさっきSystemクラスのpropertyメソッドで自分のJDKとJVMのバージョン確認してみたら
JDKが1.4.**、JVMが1.0.**となりました


278 :デフォルトの名無しさん:05/01/18 16:04:33
public void init(){
JTabbedPane base=new JTabbedPane(SwingConstants.TOP);
getContentPane().add(base);
JPanel tab1=new JPanel();
JPanel tab2=new JPanel();
JPanel tab3=new JPanel();
base.add(tab1,"1");
base.add(tab2,"2");
base.add(tab3,"3");
tab1.setLayout(new BorderLayout());
tab1.add(new JButton("A"));
tab2.setLayout(new BorderLayout());
tab2.add(new JButton("B"));
tab3.setLayout(new BorderLayout());
tab3.add(new ScrollPane());
}

↑みたいにScrollPaneとJTabbedPaneを組み合わせると
起動直後はタブの1枚目や2枚目にもScrollPaneが表示される…

順番の入れ替え以外で対処できないんですかね?

279 :初心者 ◆Java/isQ.c :05/01/18 16:10:28
>>277
> JVMはJREとJDK両方に含まれてますよね
> JREとJDKが同時にリリースされるのでバージョンが一緒になるのはわかるのですが
> JVMも一緒になるのでしょうか?

同じになるものと理解しています。

> というのもさっきSystemクラスのpropertyメソッドで自分のJDKとJVMのバージョン確認してみたら
> JDKが1.4.**、JVMが1.0.**となりました

私の環境で次のコードを実行してみたところ、
JRE は 1.4.2_06 で、JVM は 1.4.2_06-b03 という結果が得られました。

public class Test {
public static void main(java.lang.String args[]){
System.out.println("JRE: "+System.getProperty("java.version"));
System.out.println("JVM: "+System.getProperty("java.vm.version"));
}
}

JDK のバージョンはどのように確認されていますか?

280 :デフォルトの名無しさん:05/01/18 16:11:32
全然関係ないんだけどさ、
System.arraycpy( trg, 0, src, 0, len )
って書いたこと無い?
紛らわしいんだよ!普通
trg, src の順だろうが!

281 :デフォルトの名無しさん:05/01/18 16:14:57
>>277
JDKにもJREは含まれていて、JREがJVMを提供しているので
JDKにJVMが含まれているとも言えるし、バージョンも同じと言える。


282 :デフォルトの名無しさん:05/01/18 16:21:08
「バージョン」って一言でいっても、規格のバージョンと
実装系のバージョンは別物だから気をつけようね。

283 :デフォルトの名無しさん:05/01/18 16:22:35
>>259
まさか""で囲んでないとか?
"C:\Program Files\Java\j2re1.4.2_01\bin\javac"

284 :デフォルトの名無しさん:05/01/18 16:36:58
>>283
ふつうに考えてそのパスにjavac.exeがあるか?

285 :283:05/01/18 16:42:47
>>284
見間違えてた…
ふつうに考えてそのパスにjavac.exeはないね

286 :デフォルトの名無しさん:05/01/18 18:39:08
>245
hello.javaファイル内の
public class helloのところをHelloに変えて、
ファイル名もHello.javaに変えてみ。

287 :デフォルトの名無しさん:05/01/18 18:49:53
>>286
javacが見つかってないんだからそういう問題じゃないと思う。

288 :デフォルトの名無しさん:05/01/18 19:36:26
横幅の長いHTML文書をswingコンポーネント上(JLabelとか)に表示させ、
指定した幅で折り返ししたいのですが、どのようにすれば良いのか分かりません。

setPreferredSizeメソッドで横幅を指定すれば、折り返しは出来ますが、
高さが不明であるため、上下に無駄な空白が出来たり、途中で切れていたりして
制御できません。

どなたかご教授お願いします。

289 :デフォルトの名無しさん:05/01/18 19:59:49
>>243
ちがう、読むのは1行ずつよむ。
1行読み込んだら、その1文字を30文字単位に分割して、
30文字単位で出力する。
30文字単位で、printlnすれば改行は付くでしょ?(\nを入れる必要はない)

1行読む→
1行が50文字だった→
最初の30文字をprintln→
残りの20文字をprintln



290 :236,243:05/01/18 20:11:53
先ほどプログラムを作っておりまして、改行に関してはある程度解決できました。
readLine()で行を読み込んでlength()で30文字を超えるかどうかを判定し、
readLine()で読み込んだ文字列をString型の変数にいれたあと

while(y <= 30){
System.out.print(charAt(y));
y++;
}

以上のプログラムを使って出力ができました。おそらくヒントとはちょっと違うと思いますが
非常に参考になりました。どうもありがとうございました。

291 :デフォルトの名無しさん:05/01/18 20:12:59
>>289
if文ではなくwhile文になりそうだな。

292 :デフォルトの名無しさん:05/01/18 21:09:12
えーと。。。

class FrameTest extends Frame
{
}

class Test extends FrameTest
{
.
.
.


とやればTestにはTestFrameが継承されて、Frameの機能をTestクラスで使えるようになるのですか??

293 :デフォルトの名無しさん:05/01/18 21:19:49
>>292
大体そんな感じです。

294 :デフォルトの名無しさん:05/01/18 22:09:15
Genericsを試しているのですが、2箇所でコンパイルエラーが発生しています。(※の箇所)

final class Foo { // 改造禁止のクラス
 public Foo() {}
 public void setId() {...}
};

class Bar<Child> { // 試しに作ったクラス
 public Child child;

 public Bar() {}

 public void createChild() {
  child = new Child(); // ※1 Childはインスタンス化できない
 }

 public void setChildId(int id) {
  child.setId(id); // ※2 setId()はChildで未定義
 }
}

void test() { // ためしに作ったクラスを使う例
 Bar<Foo> bar = new Bar<Foo>();
 bar.createChild();
 bar.setChildId(1);
}

こういう場合、どうやって回避するのが良いでしょうか?

295 :デフォルトの名無しさん:05/01/18 22:12:56
>>294
test()ってどのクラスのメソッド?

296 :デフォルトの名無しさん:05/01/18 22:14:37
>>295
任意のクラスのメソッド、という意図です。

297 :デフォルトの名無しさん:05/01/18 22:18:13
>>294
悪いがソースを全部コピペしてくれ。
コピペミスしてそうだから>>294のような状況を再現することすら出来ない。
クラスFooの最後にセミコロンあるしクラスChildの定義ないし。

298 :デフォルトの名無しさん:05/01/18 22:24:03
>>297 貼り付けます。 なおコンパイルエラーは正確には、以下の二つです。
Cannot instantiate the type Child
The method setId(int) is undefined for the type Child

public class Test {
final class Foo { // 改造禁止のクラス
public Foo() {}
public void setId() {}
};

class Bar<Child> { // 試しに作ったクラス
public Child child;

public Bar() {}

public void createChild() {
child = new Child(); // ※1 Childはインスタンス化できない
}

public void setChildId(int id) {
child.setId(id); // ※2 setId()はChildで未定義
}
}

void test() { // ためしに作ったクラスを使う例
Bar<Foo> bar = new Bar<Foo>();
bar.createChild();
bar.setChildId(1);
}
}


299 :デフォルトの名無しさん:05/01/18 22:29:51
>>294
>  child = new Child(); // ※1 Childはインスタンス化できない
そーゆーもん。
不満があるなら interface や class で定義された特定の引数型のコンストラクタを
実装クラスで定義しないとコンパイルエラーになるように言語仕様を変更しろと
JCP や Sun の掲示板やメーリングリストで騒ぐとかしろ。

>  child.setId(id); // ※2 setId()はChildで未定義
静的型言語で定義されていないものが呼べないのは極めて正常。
不満があるなら実行時にメソッド呼び出しを解決するスクリプト言語でも作れ。

300 :デフォルトの名無しさん:05/01/18 22:31:54
>>299
不満があるのではなく、こういう場合の逃げ方のパターンがあれば教えて欲しい、のですが...

301 :デフォルトの名無しさん:05/01/18 22:32:36
>>298
> child.setId(id); // ※2 setId()はChildで未定義
setId()はjava.lang.Objectで未定義の間違いだな。

302 :デフォルトの名無しさん:05/01/18 22:36:34
>>300
ちなみに、どーゆーシチュエーションで使いたいわけ?

303 :デフォルトの名無しさん:05/01/18 22:39:03
コンパイラを導入しようと思ってます。
http://java.sun.com/j2se/1.4.2/ja/download.html
このページのJ2SE SDKをクリックしても「ページを表示できません」になってしまいます。
このページのリンクが切れているからでしょうか?
それとも私のPCの環境のせいでしょうか?

304 :デフォルトの名無しさん:05/01/18 22:39:19
createChild() と setChildId(int id) はどういう目的のメソッドなんだろう?

305 :デフォルトの名無しさん:05/01/18 22:40:16
>>303
つながる。
httpsの接続環境を確認してみましょう。

306 :303:05/01/18 22:41:22
>>305
了解です。
どもでした。

307 :デフォルトの名無しさん:05/01/18 22:43:03
>>302,304
実際にはタブブラウザを作成していて、
タブ内に表示す子るビューとそのモデルをパラメータとする、タブビューテンプレートクラス、
のようなものを作っています。

308 :307:05/01/18 22:44:17
す子る...「タブ内に表示する子ビュー」です。orz

309 :デフォルトの名無しさん:05/01/18 22:44:56
ネストクラスを使わなくても、、という気はする。

310 :デフォルトの名無しさん:05/01/18 22:47:13
JScrollPane なんですが
この中に組み込む GUI オブジェクトが、もしプログラムの実行中にサイズ変更された場合って
JScrollPane 自体を再描画するしか反映させる方法って無いですよね?
GUI オブジェクト内部で getParent().paintAll(…) ってやる以外に、変更をトリガする方法って無いですよね?

311 :デフォルトの名無しさん:05/01/18 22:52:15
>>300
setIdの方は、setIdを持つ適当なインタフェースHogeを定義して
Bar<Child extends Hoge>とする。
new Child()できないのは仕様なので、適当なファクトリメソッドを持つ
ファクトリをテンプレートパラメタに与えるようにする。

>>310
いいえ。

312 :300:05/01/18 23:26:13
>>311
ファクトリクラスをテンプレートパラメタに与えるやりかただと、
ファクトリクラスのインスタンス化の際に、同様の問題が発生しませんか?

313 :デフォルトの名無しさん:05/01/18 23:39:49
>>312
ファクトリクラスはコンストラクタで与えるなり
テンプレートクラスの名前を設定ファイルとかから読み出して
reflection とかでインスタンス生成するなり
どっかのクラスに静的ファクトリメソッドを用意するなり

314 :デフォルトの名無しさん:05/01/18 23:51:24
>>313 コンストラクタにファクトリを与えるようにしてみました。

interface ChildCreator<Child> {
 Child createChild();
};

void test() {
 Bar<Foo> bar = new Bar<Foo>(new ChildCreator<Foo>() {
  public Foo createChild() { // ※
   return new Foo();
  }
 });

 ...
}

※のところで以下のような警告が出たのですが、意味が分からない…。
(Eclipse3.1M4+jdk1.5.0_01使っています)

Type safety: The return type Foo of the method createChild()
of type new ChildCreator<Foo>(){} needs unchecked conversion
to conform to the return type Child of inherited method

new ChildCreator<Foo>(){}の中にあるメソッドcreateChild()の返却値の型
Fooは、継承されたメソッドの返却値の型Childに一致させるために、
チェック無しの変換が必要...???

315 :デフォルトの名無しさん:05/01/18 23:53:44
>>314の続き
あと、調子に乗って、以下のようにしてみました。

interface ChildDelegate<Child> {
 Child createChild();
 void setChildId(Child child, int id);
};

void test() {
 Bar<Foo> bar = new Bar<Foo>(new ChildDelegate<Foo>() {
  public Foo createChild() {
   return new Foo();
  }

  public void setChildId(Foo child, int id) {
   child.id = id; // ※コンパイルエラー
  }
 });

 ...
}

※のところで、「child.id cannot be resolved or is not a field」と、
前と同じようなエラーがでます。

何か基本的なところで間違えている予感...

316 :デフォルトの名無しさん:05/01/19 00:05:14
初心者な質問なのですが、内部クラスの必要性って、どのような事なのでしょうか?

317 :デフォルトの名無しさん:05/01/19 00:21:51
synchronized って、排他制御だよな。
俗に言うクリティカルセクション。
何で
synchronized - 同期
って名前なんだろう。排他制御以外にも利用されるからか?
誰か俺を救え。

318 :デフォルトの名無しさん:05/01/19 00:33:57
ならばまず俺を信じろ。

319 :デフォルトの名無しさん:05/01/19 00:36:15
そして自ら学べ。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=synchronized+%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1&num=50

320 :デフォルトの名無しさん:05/01/19 00:38:12
>>317
マルチスレッドプログラミングで各スレッドの「同期」を取るために「排他制御」を使う。
同期が排他制御以外にも利用されるんじゃなくて、同期のために排他制御を使ったりもするの。

321 :デフォルトの名無しさん:05/01/19 00:42:46
>>314-315
全然問題外なので自分でもう一度genericsの仕様を調べることを勧める。

322 :デフォルトの名無しさん:05/01/19 00:44:33
30文字毎に云々


String hoge1 = "目的の文字列";
String hoge2 = "";
while(hoge1.length() > 30) {
  hoge2 = hoge1.substring(0, 30);
  hoge1 = hoge1.substring(30);
  // ここでhoge2を出力
}
if(hoge1 != "") // ここでhoge1を出力

323 :デフォルトの名無しさん:05/01/19 00:49:48
interface Child{
}

class ChildCreator<? extends Child>{
Child createChild();
}

Bar<Child> bar = new Bar<Child>(new ChildCreator<ChildImpl>);

324 :323:05/01/19 00:51:30
適当に書いてみたがこれだめそうだなsage

325 :デフォルトの名無しさん:05/01/19 01:44:21
>>318-320
色々さんくす。ただ、セマフォとの違いが見えん。
結局鍵を取り合うだけだろ?セマフォのようにカウンタ無いっぽいけど。
名前の由来がしっくりこないな。



326 :デフォルトの名無しさん:05/01/19 01:45:04
使う前。
interface Factory<T> { T create(); }
Bar<T extends Factory<U>> {}

使うとき。
class FooFactory implements Factory<Foo> {
  Foo create() { return new Foo(); }
}
Bar<FooCreator> bar = new Bar<FooCreator>();

setIdも対応するともっと長くなるがこんな感じだろ。

327 :デフォルトの名無しさん:05/01/19 01:46:24
おっと。Bar<FooFactory> bar = new Bar<FooFactory>(); な。

328 :デフォルトの名無しさん:05/01/19 02:14:32
>>321 氏ね

329 :310:05/01/19 02:14:42
>>311
具体的にはどんな方法があるんでしょうか?

330 :デフォルトの名無しさん:05/01/19 02:24:43
>>325
マルチスレッドで同期化されてないのをつかったりするとよくわかる

VectorとArrayListとかクラス変数の宣言にvolatileありなしとかやってみそ

あるスレッドの動作で他のスレッドでも使われる変数の中身がかわらないから
各スレッドはスタックを別に持つはずだからまぁ言いたいことはわかるべ


331 :315:05/01/19 02:52:41
>>315
アフォでした、「child.id」は「child.setId()」の誤りでした...。
直したところ、コンパイルエラー消えました。>>294からしてすでにおかしいし。orz

>>326
interface Factory<T> { T create(); }

class FooFactory implements Factory<Foo> {
 public Foo create() { return new Foo(); }
}

これだと>>314と同じ警告が出ます。
初心に帰って"javac Test.java"してみたところ、両方とも、
特に警告は出ませんでした。実行しても特にエラーは出ないようなので、
Eclipse周りをあたって見つつ、これでいきたいと思います。

>>321
言語仕様の最新Fix版はどこで見れますか?
JDKのスタートページから「Java言語仕様」のリンクをたどると、古いようなのですが。
JSRとかいうところをグルグルとさまよっている最中です...。

332 :331:05/01/19 02:56:06
参考までに、最終版を書いておきます。
public class Test {
 final class Foo { // 改造禁止のクラス
  public Foo() {}
  public void setId(int i) {}
 };

 interface Adapter<Child> {
  Child create();
  void setId(Child child, int id);
 }

 class Bar<Child> {
  public Child child;
  Adapter<Child> adapter;
 
  public Bar(Adapter<Child> adapter) { this.adapter = adapter; }
  public void createChild() { child = adapter.create(); }
  public void setChildId(int id) { adapter.setId(child, id); }
 }

 void test() {
  Bar<Foo> bar = new Bar<Foo>(new Adapter<Foo>() {
   public Foo create() { return new Foo(); }
   public void setId(Foo child, int id) { child.setId(id); }
  });

  bar.createChild();
  bar.setChildId(1);
 }
}


333 :デフォルトの名無しさん:05/01/19 10:08:18
http://www.objectclub.jp/technicaldoc/java/java_gene
ここに
>Genericクラスの中で,型パラメータ(<T>)をnewできない. -- new T はだめ
ってあるから
new Adapter<Foo>() {
   public Foo create() { return new Foo(); }
ができないんじゃない?

334 :デフォルトの名無しさん:05/01/19 10:24:26
>>315 Eclise3.1内蔵コンパイラにおける未検査例外チェックの
bugは以前からknown bug。Eclipseスレの過去スレでも話題に出てた。
milestone buildを試すときにはbugzillaとにらめっこしながら
試すのを心がけよう。
まあ1.5サポートが不完全なmilestone buildで新しい言語仕様
を勉強するのは無茶だとおもうよ。
あとそもそもEclipseはJDKのjavac使ってないのは知ってますか?


335 :デフォルトの名無しさん:05/01/19 11:06:40
>>334
しらんかった。

336 :デフォルトの名無しさん:05/01/19 11:11:54
>>331
> 言語仕様の最新Fix版はどこで見れますか?
Fix版は無い。あるのは差分だけのはず。JSRにあるのは
http://jcp.org/aboutJava/communityprocess/review/jsr014/index.html

一番新しいのは adding generics についてる pdf だったと思われ。
http://java.sun.com/developer/earlyAccess/adding_generics/

それより新しいのがあったら俺も知りたい。

337 :デフォルトの名無しさん:05/01/19 15:03:52
初歩的な事かも知れんが、修飾子省略すると、
クラスのstaticメソッドってパッケージをまたげないの?

自動でpublicだと思ってたんだが。


338 :デフォルトの名無しさん:05/01/19 15:07:34
自動でprotectedさ

339 :デフォルトの名無しさん:05/01/19 15:29:20
>>337
スコープを勉強してこい

340 :デフォルトの名無しさん:05/01/19 15:37:20
>>339
絶対 い ・ や ・ だ !
つか、教えろ!オマエが!

341 :デフォルトの名無しさん:05/01/19 15:37:47
>>337
通称 package private とか package protected とか呼ばれているアクセス制限になる。

http://www.y-adagio.com/public/standards/tr_javalang2/names.doc.html#36154
> 6.6.5 フィールド,メソッド及びコンストラクタのデフォルトアクセスの例
>
> アクセス修飾子public, protected又はprivate をいずれも指定していなければ,
> クラスメンバ又はコンストラクタは,そのクラスメンバを宣言しているクラスの
> 宣言を含むパッケージの全体からアクセス可能とする。しかし,そのクラスメン
> バ又はコンストラクタは,他のパッケージからはアクセス不能とする。

342 :デフォルトの名無しさん:05/01/19 15:39:14
>>338
protected は継承クラスならパッケージ外からでもアクセス可能だな。

343 :デフォルトの名無しさん:05/01/19 15:44:14
protected じゃなくて デフォルトアクセスだ。

344 :デフォルトの名無しさん:05/01/19 15:53:23
おう、そうだった。
わりわり。

345 :デフォルトの名無しさん:05/01/19 16:12:52
>>341
君のスコープは?

346 :デフォルトの名無しさん:05/01/19 18:12:26
質問がありますが、Timerクラスを利用すると、マルチスレッドと呼べますか?
ちなみに、Runnableインターフェースを実装し、そのrunのなかでTimerクラスを用いてます。

347 :デフォルトの名無しさん:05/01/19 18:18:52
上のものです。あの、アニメーション的な動作はTimerクラスで行っているんですよ。
何秒ごとに描写、と。描写はpaintですけど。。

スレッドを継承しているわけではないから、違うのかなぁ。

348 :デフォルトの名無しさん:05/01/19 19:04:56
スレッドは譲り合いで複数作業を平行して進める。
タイマーは奪い合いで複数作業を平行して進める。

349 :デフォルトの名無しさん:05/01/19 19:44:17
>>348
ここでいうTimerはJavaのクラスとしてのTimerであって、
タイマーという概念全般のことではないだろ?



350 :デフォルトの名無しさん:05/01/19 20:38:28
古い話ですが、EJB1.x系ではパフォーマンスの低さが
問題視されていましたよね。

その原因を調べる過程で、以下の記事を見つけました。

ttp://www.atmarkit.co.jp/fjava/special/ejb20/ejb20.html

この記事の中段付近でコンテナによるダーティーフラグや
キャッシュについて述べられています。しかし、ダーティ
フラグやキャッシュが有効なら、パフォーマンスにそれほど
問題が出ないような気がします。

EJB1.x系のパフォーマンスが低い原因について、より詳細な
説明をして頂けないでしょうか?>識者の皆様

351 :デフォルトの名無しさん:05/01/19 21:05:35
Javaプログラム内で、外部コマンドを別プロセスで実行する機能を実装してます。
そのとき、そのコマンドを実行するカレントディレクトリを指定したいんですけど、
Javaでやる場合って、どうやればいいですかね?
"cd c:\〜"ってなコマンドをJava内で実行するとエラーになります。

352 :デフォルトの名無しさん:05/01/19 21:14:26
>>351
\をエスケープしてないとか。

353 :デフォルトの名無しさん:05/01/19 21:58:51
public static void main(String[] args)

public static void main(String args[])

何が違うんですか?

354 :デフォルトの名無しさん:05/01/19 22:01:16
>>353
[]の位置

355 :デフォルトの名無しさん:05/01/19 22:04:28
Webアプリ開発をメインに学習してるJava初心者です。
Webアプリでは様々なツールを連携させて開発するので
一応下記の物を入手しましたが

J2SE 5.0
J2EE 1.4
Eclipse 3.0.1
Tomcat 5.5.4
mysql 4.1.7
Apache 2.0.52
JBoss 4.0.1
Struts 1.2.4
jakarta-taglibs
Ant 1.6.2
JUnit 3.8.1
Cactus 1.6.1

これらを連携させるとの概念で少し詰まっています。
それぞれのツールのインストーラーを起動させてプラグインするのは
分かるのですが、それをどれに対してするのかが曖昧です。
標準的な組み合わせ法を教えてください。


356 :デフォルトの名無しさん:05/01/19 22:05:06
>>354
なぜ2通りの書き方があるんですか?

357 :デフォルトの名無しさん:05/01/19 22:09:45
>>356
仕様

358 :デフォルトの名無しさん:05/01/19 22:25:09
>>356
ロートルにたいするサービス

359 :デフォルトの名無しさん:05/01/19 22:34:51
>>355
連携の概念も糞も無いというか、俺としては連携に苦労した記憶が一切無いんだが・・・
普通に教科書どおりにやってうまく動かないの?

360 :デフォルトの名無しさん:05/01/19 22:38:22
>>355
なんか前にもまったく同じの見たな


361 :デフォルトの名無しさん:05/01/19 22:46:12
>>352
eclipseでコーディングしてるんで、エスケープシーケンスはチェックが入るんで、
ちゃんと実装してますよ。

362 :デフォルトの名無しさん:05/01/19 23:02:17
>>351
java.lang.Runtime.exec(String, String[], java.io.File) とか
java.lang.Runtime.exec(String[], String[], java.io.File) とかを使え。

あと、cd は外部コマンドじゃないな。

363 :デフォルトの名無しさん:05/01/19 23:36:56
>>350
そりゃすべてのEJB呼び出しがリモート呼び出しになる環境で
パフォーマンスなんか出るわけないわな。
メソッド呼び出すために、オブジェクトがシリアライズされて渡される
んだぞ。ローカルですら。

EJB2.0でローカル呼び出しが可能になって、ローカルを使う分には
速くなった。ものの記事によると、Hibernate(O/Rマッピングツール)
と、EJBローカルエンティティと比べると、一部EJBの方が速かったり
するらしいし。

ただあの複雑さと無駄な単純作業の多さは、まともな人間が設計した
とは思えん。なんか頭のいい人がユーザーのことなんて考えずに作った
ような感じがする。

364 :デフォルトの名無しさん:05/01/19 23:51:22
>>362
ありがとうございます。
execは多々オーバーロードされた関数でしたか。
この第三引数で指定したディレクトリが、カレントとみなされるわけですね。
なるほどー。

cdで例外が起こったのは、外部コマンドでないからでしたか。
勉強になりました。

365 :デフォルトの名無しさん:05/01/19 23:52:12
行間についての質問なのですがどなたかお願いします。

環境は  JDK1.3.x   Win2000   エクリプス3.0

 下記のソースなのですが、1行目の「あいうえお」を表示した後に
子供のコンポーネントをインサートして図1の様に1行目の上側の
スペースをそろえたいのですが、どうしても図2のようになってしま
います。理由はわかるのですが、何とかならないでしょうか?

長文、駄文、スレ汚し申し訳ありません。


 図1
--------------------------------
 「あいうえお」|「2あいうえお」|
                  |                   |
                  |「2かきくけこ」 |
                  -------------

 「かきくけこ」
--------------------------------
 図2
--------------------------------
                  |「2あいうえお」|
 「あいうえお」|                   |
                  |「2かきくけこ」 |
                  -------------

 「かきくけこ」
--------------------------------
次に サンプル・ソースを乗せます。

366 :デフォルトの名無しさん:05/01/19 23:54:35
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;

public class LineSpacingTset extends JFrame
{
    public LineSpacingTset()
    {
        super("LineSpacingTset");
        setBounds(200, 160, 500, 250);
        JTextPane jTP = new JTextPane();
        SimpleAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setLineSpacing(attr, 20.5f);
        // JTextPane全体に属性を設定
        jTP.setParagraphAttributes(attr, true);
        JTextPane jTP1 = new JTextPane();
        jTP1.setParagraphAttributes(attr, true);
        Document doc1 = jTP1.getDocument();
        try
        {
            doc1.insertString(0, "2あいうえお\n", attr);
            doc1.insertString(8, "2かきくけこ", attr);
        }

367 :デフォルトの名無しさん:05/01/19 23:55:17
つづき
        catch (BadLocationException e)
        {
            e.printStackTrace();
        }
        
        Document doc = jTP.getDocument();
        try
        {
            doc.insertString(0, "あいうえお\n", attr);
            doc.insertString(7, "\nかきくけこ", attr);
        }
        catch (BadLocationException e)
        {
            e.printStackTrace();
        }
        jTP.setCaretPosition(5);
        jTP.insertComponent(jTP1);

        getContentPane().add(jTP, BorderLayout.CENTER);
    }
    public static void main(String[] args)
    {
        LineSpacingTset cTester = new LineSpacingTset();
        cTester.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        cTester.setVisible(true);
    }
}

368 :デフォルトの名無しさん:05/01/19 23:56:05
連続投稿うざくてすいません

  ためしに、SimpleAttributeSet();を(attri, -16.5f)として
StyledDocument.setCharacterAttributes(0, 7, attr, true)

を使って「あいうえお」を選択してその文字属性だけ上に
持ち上げようとしたのですがうまくいきませんでした・・・

なにとぞ、お願いします。

369 :デフォルトの名無しさん:05/01/20 00:05:17
java にはグローバル変数はないと聞いたのですが、dialog で値を変更した変数を Frame で使用したい場合は、変数をどう扱ったらよいのでしょうか?
引数で渡すだけだと変更されてなくて方法が分かりませんでした^^;

370 :デフォルトの名無しさん:05/01/20 00:09:22
>>363
あなたも知識だけの人ですね。
ローカルインタフェースが仕様化されたのは2.0からですが
実際にはほとんどのEJBコンテナ製品では物理的にリモート配置
していない限りは内部で勝手に最適化してローカル参照していました。
それが後付で仕様として取り込まれたというのが実状です。
現行の製品でもリモートインタフェースを作成しても
実際には内部で最適化されてローカル参照しているのがほとんどです。

371 :デフォルトの名無しさん:05/01/20 00:12:34
ふむ、じゃああとはあの鬱陶しい仕様だけなんとかすればいいんだな?

372 :デフォルトの名無しさん:05/01/20 00:13:41
JFrame の背景色を Windows のシステムカラーにするには
どうしたらよいでしょうか?

373 :デフォルトの名無しさん:05/01/20 00:16:01
import java.awt.*;
import java.awt.event.*;

class Frame1 extends Frame
{
Frame1(String title)
{
super(title);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
}
}

public class FrameApplication
{
public static void main(String [] agrs)
{
Frame1 f1 = new Frame1("ふれーむ");
f1.setSize(200,200);
f1.show();
}
}


374 :デフォルトの名無しさん:05/01/20 00:16:33
>>373の続き
というのを作ったんですが、コンパイルすると

c:\MyApplet>javac Frame1.java
Frame1.java:19: クラス FrameApplication は public であり、ファイル FrameApplicat
ion.java で宣言しなければなりません。
public class FrameApplication

とでます。どういうことですか?

375 :デフォルトの名無しさん:05/01/20 00:18:05
ファイル名をFrameApplication.javaにしろってこと。
Javaのファイル名は、ファイル内に一つだけ書いていいことになっている
publicなクラス名と同じでないといけない。

376 :デフォルトの名無しさん:05/01/20 00:19:43
なるほど!
ありがとうございます。>>375


377 :デフォルトの名無しさん:05/01/20 00:26:02
文字列を一文字ずつ配列に入れたいのですがどうしたらよいでしょうか?

コマンドライン引数というのがありますが、これは
java *** a b c
と実行したとき
args[0]=a
args[1]=b
args[2]=c
となります。

そうではなく、半角スペースなしに
java *** abc
と実行したとき
args[0]=a
args[1]=b
args[2]=c
こうなって欲しいのですが、どうしたらよいでしょうか?






378 :277:05/01/20 00:28:51
亀レスです

>>279>>282
返事貰ったのにおくれてすいません

以下にJVM確認のプログラムと実行結果を書きます

<プログラム>
System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.vm.specification.version"));
System.out.println(System.getProperty("java.vm.version"));

<実行結果>
1.4.2_03
1.0
1.4.2_03-b02

僕が報告したのは2行目でした
APIリファレンス見たら(http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
>>282さんの言うとおり仕様のバージョンと実装のバージョン二種類があるのを知りました
一体それぞれの違いは何なんですか?教えてください、お願いします

379 :デフォルトの名無しさん:05/01/20 00:39:46
>>373-375 は初心者だと中々解らないだろうし、>>1 のテンプレに
追加しておいてはどうだろうかと提案してみるテスト。

380 :デフォルトの名無しさん:05/01/20 00:43:47
>>377
toCharArrayか、Substring。

381 :デフォルトの名無しさん:05/01/20 01:00:34
>>378
仕様が確定しても、製品としての実装物はいくらでも改良できるだろ。仕様をさえ
満たせばいいわけだから。

だから仕様バージョンはなかなかあがらないが、実装バージョンはどんどんあがる。

382 :378:05/01/20 01:12:07
>>381
例えてくれると解りやすいですけどこの場合JVMの仕様バージョンとは・・・?
バージョンと言ってもプログラムではないという事?

1、ある偉い人達(サンの人達?)がJVMにはこういう機能を持たせよう(ドキュメント)
  →JVMの仕様バージョンになる
2、その仕様バージョンにあわせて実装・プログラミングする→JVMの実装バージョンになる
3、JVMの仕様は変わらないけど2で実装したJVMのバグを直す、改良・昨日補足する→JVMの実装バージョンUP

こういう理解であってる?



383 :デフォルトの名無しさん:05/01/20 02:37:22
そんな感じ。

384 :デフォルトの名無しさん:05/01/20 03:22:44
>>383
うす

385 :デフォルトの名無しさん:05/01/20 04:23:43
JavaのVMはクソばかり。仕様を満たしているものなんてない。シヨウモクソダケド

386 :デフォルトの名無しさん:05/01/20 04:35:25
君のお勧めのVMは?

387 :デフォルトの名無しさん:05/01/20 04:42:56
VMware

388 :デフォルトの名無しさん:05/01/20 05:07:10
JAVAでは動的にクラスを作ることは出来ますか?

(eval (read) )
>>(defclass CA()());クラスCAが定義される
みたいな。

389 :デフォルトの名無しさん:05/01/20 05:17:57
できます

390 :デフォルトの名無しさん:05/01/20 05:29:20
>>389
マジすか?
差し支えなければ方法を教えていただけないでしょうか?

391 :デフォルトの名無しさん:05/01/20 07:12:24
>>363
>>370
レスありがとうございます。
ちょっと私の言葉が足りなかったようです。

知りたかったのはエンティティ・ビーンの永続化の
パフォーマンスが低い原因について、でした。
コンテナがダーティーフラグやキャッシュを用意して
いるにもかかわらず、パフォーマンスが出ないのは
なぜか、と思いまして。

392 :デフォルトの名無しさん:05/01/20 08:50:09
>>390
クラス名 a = (クラス名)Class.forName( "クラス名" ).newInstance();

393 :デフォルトの名無しさん:05/01/20 11:10:49
IBMのランタイムは1.4.2止まりでしょうか?
1.4.2_03以降のものはIBMからは提供されていませんか?
探してみたんですが見つからないので。

394 :デフォルトの名無しさん:05/01/20 11:31:40
>>379
賛成。
案1
publicなクラスは同名のファイル(クラス名.java)中に宣言しなければなりません。
名前を揃えましょう。大文字と小文字の違いにも注意しましょう。
またこのことによって1つのファイル中に2つ以上のpublicなクラスを宣言することもできません。
可視性を変更するか、ファイルを分割しましょう。

395 :デフォルトの名無しさん:05/01/20 11:32:30
>>393
SunのJDKとの対応はしらないけど、知っている限りで一番
新しいbuildはIBM Rational Web Developerに入っているやつ
だった。 http://www.ibm.com/developer/java/jdk/
手に入るものより数ヶ月は新しかった。

396 :デフォルトの名無しさん:05/01/20 11:33:09
wikiへの誘導でいいかな。

397 :デフォルトの名無しさん:05/01/20 11:34:25
eclipseの5.0対応はいつになるんだろう。。

398 :デフォルトの名無しさん:05/01/20 12:12:09
>>397
6月頃。
Eclipseのサイトにロードマップがあるんだからそれぐらい見ろよ

399 :デフォルトの名無しさん:05/01/20 12:26:04
>>398
知らなかったよ。ありがとう。
6月か。。

400 :デフォルトの名無しさん:05/01/20 12:35:42
ちょっとすれ違いかもしれませんが、質問です。
VB.NETで、javaを実行したいんですが、
java.exeは起動はできるんですが、ファイルを実行できません。
エラーからクラスパスに問題があることがわかりました。
それで環境変数設定しても、うまくいきませんでした。
だれか、他のプログラムから、javaのクラスファイル実行するの
わかるひといませんか?


401 :デフォルトの名無しさん:05/01/20 12:37:25
> だれか、他のプログラムから、javaのクラスファイル実行するの
> わかるひといませんか?
いる。

402 :デフォルトの名無しさん:05/01/20 12:40:48
>>372
SystemColorの定数にいろいろあるから使え。

403 :デフォルトの名無しさん:05/01/20 13:01:29
>>400
エラー内容は書いてない・・・自分の行った環境変数設定は書いてない・・・
どのようなVB.NETのプログラムで、どのようなJavaプログラムを呼び出すかも書いてない・・・
独り言口調・・・

典型的なエスパー募集の広告だな。

404 :400:05/01/20 13:07:21
>>401
>>403
うるさいよ。わからない奴はだまってみてろっつーの。
俺は、知ってる人に聞いてるんだから、ちゃちゃ入れるだけの初心者は引っ込んでろ。

405 :デフォルトの名無しさん:05/01/20 13:16:19
クラスパスに問題があることがわかったんなら、javaのオプションでクラスパスを渡してやればいいじゃない
バカじゃなかろか?

406 :デフォルトの名無しさん:05/01/20 13:31:48
あえて、packager.exeに挑戦してみろと言ってみる。

407 :デフォルトの名無しさん:05/01/20 13:56:38
java.exeもつかえないやつが初心者は黙っていろってのもすごいな
詳細なエラーメッセージ出すとかなにもないしねぇ

408 :デフォルトの名無しさん:05/01/20 13:58:03
>>405
わからないなら書き込むんじゃねえよ、カス

409 :400:05/01/20 13:58:50
>>406
うるせー。カス。引っ込んでろ

410 :デフォルトの名無しさん:05/01/20 14:04:58
>>408
>>409

411 :デフォルトの名無しさん:05/01/20 15:17:21
>>375
ちょっと補足。
ファイル名と異なる名前の非publicクラス群*のみ*
からなるソースコードも作れる。


412 :デフォルトの名無しさん:05/01/20 15:17:46
webアプリの文字化け対策が判らない素人です。
どこを直すべきか、アドバイス頂けませんでしょうか?

ブラウザからPOSTした文字列をbeanで受け取って、それをpostgresqlのDBに書く、
という処理を行っています。関係しそうな所を抜粋して書きます。


---- javaBean内で
request.setCharacterEncoding("euc-jp");

String params = request.getParameter("params");

String sSql = "insert into TEST values (?)";
ps = conn.prepareStatement(sSql);

ps.setString(1, params);

result = ps.executeUpdate();
----

---- Database (postgresql)
createdb -E EUC_JP foo

---- OS
unix

DBに挿入された日本語は全く無関係な漢字の羅列に化けます。

素人ながらの推測ですが、Unicodeな文字列をそのままEUCのつもりでDBに書いてるん
じゃないかという気がするんですが(←根拠なし)



413 :デフォルトの名無しさん:05/01/20 15:24:32
>>412
HTMLはEUC_JPで表示してるの?

414 :デフォルトの名無しさん:05/01/20 15:58:57
JAVAアプレットを使用して、1つのボタンを押すたびに
画像をランダムに表示するプログラムを作っているのですが、
なかなかうまくいきません。
どなたか教えていただけませんでしょうか。


415 :デフォルトの名無しさん:05/01/20 16:00:55
どなたか >>414 が何を教えて欲しいのか教えていただけませんでしょうか。

416 :本当の400:05/01/20 16:02:08
へんじ遅れてしまってすいません。
>>404 >>409は偽者です。

エラーは、Exception in thread "main" java.lang.NoClassDefFoundError: Hello
こんなのです。
javaのプログラムとしては、試験的なものなので、
ただhelloを表示させるものです。
環境変数設定は、マイコンピューターのプロパティでPATH,CLASSPATHを
設定しました。コマンドプロンプトでは、普通に実行できました

417 :本当の400:05/01/20 16:09:46
コマンドから指定ではなく、
javaのプログラム内で、クラスパス指定ってできますか?

418 :デフォルトの名無しさん:05/01/20 16:19:16
>>417
おいおい、そーじゃねーだろ。
おまえさんの作ったHelloすらjavaはどこにあるかわからんから、
java.lang.NoClassDefFoundError (クラス定義がみつかんねー)
を出してるわけだ。
javaのオプションに-classpathがあるから、それ使っておまえさんの作ったHello.classがあるディレクトリを指定してやればいいんだよ

419 :デフォルトの名無しさん:05/01/20 16:21:26
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class ekaki extends Applet implements ActionListener, MouseListener, MouseMotionListener{
int x,y;
Button btn;

public void init(){

btn=new Button("消去");
setLayout(new BorderLayout());
add("South",btn);

btn.addActionListener(this);
addMouseMotionListener(this);
addMouseListener(this);
img=getImage(getDocumentBase(),"1.gif");
addMouseMotionListener(this);
}

public void mouseDragged(MouseEvent e){
Graphics g;
g=getGraphics();

g.drawLine(x,y,e.getX(),e.getY());
x=e.getX();
y=e.getY();
}

420 :419:05/01/20 16:22:49
続き
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
}

public void actionPerformed(ActionEvent e){
repaint();
}

Image img;

public void mouseMoved(MouseEvent e){
x=e.getX();
y=e.getY();
showStatus("X: "+x+", Y: "+y);
repaint();
}

public void paint(Graphics g){
if((x==100)&&(y==100)){g.drawImage(img,x+5,y+5,this);}
if((x==200)&&(y==200)){g.drawImage(img,x+5,y+5,this);}
if((x==300)&&(y==300)){g.drawImage(img,x+5,y+5,this);}
if((x==100)&&(y==200)){g.drawImage(img,x+5,y+5,this);}
if((x==200)&&(y==300)){g.drawImage(img,x+5,y+5,this);}
if((x==300)&&(y==100)){g.drawImage(img,x+5,y+5,this);}
   if((x==100)&&(y==300)){g.drawImage(img,x+5,y+5,this);}
if((x==200)&&(y==100)){g.drawImage(img,x+5,y+5,this);}
if((x==300)&&(y==200)){g.drawImage(img,x+5,y+5,this);}
else {}
}

421 :419:05/01/20 16:27:08
public void mouseReleased(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseClicked(MouseEvent e){}

}

上記のプログラムで描いた線を消去ボタンで消えるようにして、
あるポイントにいったら画像を表示するようにするにはどのように直せばいいのでしょうか?

422 :デフォルトの名無しさん:05/01/20 16:28:44
>>417
コマンドプロンプトで,
-classpath入力してクラスパスを指定するってことですよね?


423 :デフォルトの名無しさん:05/01/20 16:46:04
>>422
これでも嫁。
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html
javaコマンドの使い方のマニュアルぐらい読んでから質問しろよヴォケ

424 :412:05/01/20 18:14:01
412です。
あれからもう少し実験しました。

request.setCharacterEncoding("euc-jp");//←(1)
String params = request.getParameter("params");
String sSql = "insert into TEST values (?)";
ps = conn.prepareStatement(sSql);
params = "日本語がちゃんと登録されるか確認わはー";//←追加
ps.setString(1, params);
result = ps.executeUpdate();

これで、DBに日本語が正しく登録される事を確認しました。
という訳で、おそらく「POSTされた文字列がUnicodeとして正しくparamsに
入っていない」のが化ける原因だと思われるのですが、そうなると(1)の記
述がまずいか、根本的に勘違いしているのか・・・

setCharacterEncodingではなく、一旦バイトデータに変換してから再エンコ
ードする方法しかないのでしょうか?


>413
EUCです。ブラウザのメニューで確認しました。


425 :デフォルトの名無しさん:05/01/20 18:33:55
params = "日本語がちゃんと登録されるか確認わはー";//←追加
より以前で、System.out.println(params);で確認したら?

426 :412:05/01/20 19:25:32
>425
確認しました。やっぱり化けています。正しくUnicodeで入っていないのは
確かみたいです。という訳で、結局教科書どおりの

s = new String(s.getBytes("iso-8859-1"), "EUC_JP");

として再エンコードする事で日本語化けは解消しました。それはそれで
原因と対処方法がわかってよかったのですが、何故 setCharacterEncoding
がちゃんと機能しなかったのかイマイチ納得できない感じです。

書き忘れていましたが、環境は

postgresql 7.4.6 + postgresql-jbdc 7.4.6
apache 1.3.29 pl3
jdk 1.3.1
jakarta-tomcat 4.1.31

です。>412 のソースでsetCharacterEncodingの使い方のまずい点がありま
したら何方かご指摘下さい。



427 :デフォルトの名無しさん:05/01/20 19:37:07
 あの、どこかにソケット関係の例外処理をどんな風にするといいか解説してる
サイトありませんでしょうか?
 Javaソケットプログラミングをやっているのですが、うまい例外処理がいまいち
よくわかりません。
 どなたか教えてくださいorz


428 :412:05/01/20 19:44:00
あぁぁ、連投すみません>ALL。これで最後です。
原因はわからないけど解決しました。

一連の処理はMVCmodel2なんですが、コントローラ内でsetCharacterEncoding
を書いてやれば文字化けしなくなりました。

-- in Controller.class --
doPost(HttpServletRequest request, ・・・) {
 request.setCharacterEncoding("EUC_JP"); //<-ここに書けばOK
 Model.updateDB(request);
}
--

-- in Model.class --
updateDB(HttpServletRequest req){
 req.setCharacterEncoding("EUC_JP"); //<-ここに書いても機能しない
 //DB処理
}


なんでなのか理由は判りませんが・・・
って、requestをモデルに丸投げする事自体が多分論外なのかもしれませんが。


429 :デフォルトの名無しさん:05/01/20 20:39:02
http://www.ehime-u.ac.jp/ICPC/problems/domestic/d2004/A.jp/A.html
誰かこのC++をCに直してくれませんか?問題は↑
#include <iostream>
#include <vector>
using namespace std;
void print(const vector<int>& v){
for (int i = 0; i < v.size(); ++i) {
cout << v[i] << ' ';
}
cout << endl;
}
int main(){
int n, r;
while (cin >> n >> r, n || r) {
vector<int> card(n);
for (int i = 0; i < n; ++i) { card[i] = n - i; }
for (int i = 0; i < r; ++i) {
vector<int> target(card);
int p, c; cin >> p >> c;
for (int j = 0; j < p - 1; ++j) {
target[c + j] = card[j];
}
for (int j = p - 1; j < p + c - 1; ++j) {
target[j - p + 1] = card[j];
}
swap(card, target);
}
cout << card[0] << endl;
}
}

430 :デフォルトの名無しさん:05/01/20 20:49:06
>>429
誤爆だよね?

431 :デフォルトの名無しさん:05/01/20 22:15:00
int i = Integer.parseInt(args[0]);



int i = Integer.valueOf(args[0]).intValue();

の二つがあるけど、どう違うのですか?僕は同じだと思うんですが・・・

432 :デフォルトの名無しさん:05/01/20 22:27:50
明らかに違う

433 :デフォルトの名無しさん:05/01/20 23:01:30
>>392
これはクラスからインスタンスを作るだけで>>390の「クラスを動的に作る」
という目的とは全然違うだろ?

>>390
クラスを動的に作る方法は
1.バイトに対応するバイト列を動的に生成してClassLoader#defineClassする(難易度高)
2.JavassistやBCELなどのライブラリを使う(難易度中)
3.動的にソースファイルを作って動的にコンパイルし、それを読み込む(難易度低)
なんかがある。

434 :デフォルトの名無しさん:05/01/20 23:25:18
>>431

後者は、内部的に引数に対して前者と同じことをやった後、
その結果からIntegerインスタンスをつくって、あらためて
中にある結果を取り出すというまわりくどいことをしている。
詳しくはjava/lang/Integer.javaを見ること。

作ってその場でintValue()を呼ぶようなケースなら前者のほう
がいいのは当然だが、文字列からIntegerオブジェクトを作る
目的ではvalueOfにも存在意義がある。

new Integer(argv[0])でもいいじゃん、という話もあるが、
APIドキュメントによれば、valueOfで返されるIntegerオブ
ジェクトはキャッシュされるので、ラッピングインスタンス
を作りまくるようなケースではvalueOfを使ったほうがいい
らしい。

435 :デフォルトの名無しさん:05/01/20 23:33:18
VectorとArrayListってどちらもスレッドセーフですか?

436 :デフォルトの名無しさん:05/01/20 23:35:36
>>433
invokeじゃダメ?

437 :デフォルトの名無しさん:05/01/20 23:40:21
>>435
ちっとも糞

438 :デフォルトの名無しさん:05/01/21 00:30:26
javaで作ったプログラムって、
javaコマンド使わなきゃ実行できないじゃないですか。
どうにか、.exeとかにならないですかね?
この場合マルチプラットフォームとかは抜きで。
とりあえずexe生成方教えてください。

439 :デフォルトの名無しさん:05/01/21 00:34:57
バッチファイルでも作れば?

440 :デフォルトの名無しさん:05/01/21 00:38:51
誤爆承知で、C/C++の腕を再確認するつもりで429やってみたが……
いやー、Cマンドクセ……Javaに慣れると辛いね、いろいろと……
とりあえず、bccでコンパイルして、例題通りの入力で>429と同じ出力が出ることのみ確認。
素敵なソースうpろだのup0711に晒したので暇な人はどぞ。

441 :デフォルトの名無しさん:05/01/21 00:41:13
>438
ダブルクリックで起動したいだけならjarにまとめてMANIFEST.MFを適切に書けばなんとかなるよ。
(JREは要るが)

Cygwinでgcj使えばCygwin環境内で動く(てことは、cygwin絡みのdllがあれば何とかなる?)exeが
作れるかも知らんが、やったことないのでワカンネ

442 :デフォルトの名無しさん:05/01/21 00:42:09
>>438
おカネ払う覚悟があるのなら方法はあるよ

443 :デフォルトの名無しさん:05/01/21 00:42:34
>>438
excelor JETというソフトを使う。
Wクリックで実行できる.jarの形にして
変換すると.exeにしてくれる。

444 :デフォルトの名無しさん:05/01/21 00:46:08
exeがほしいという人に対してgcjという
初心者こそ使い物にならないのをすすめるのはどうだろう

445 :デフォルトの名無しさん:05/01/21 00:50:16
jarにまとめるか
バッチファイルですね。
どうもありがとうございます
一番楽なのはバッチファイルですね
何とか色々ためしてみます

446 :デフォルトの名無しさん:05/01/21 00:57:08
個人的に>>428がすっきりしてないのだが、わかるやついるか?
4.1.31なんてJDK1.4系でしかBuildされてないはずだしLinux+1.3はクラッシュするとか
いろいろと問題あるのはわかるが、あの書き方でかわるのか?
結局出してない部分で不具合だしてるってことかね

447 :433:05/01/21 02:46:19
>>436
invokeとクラスの動的生成がどうつながる?
すでにクラス定義があるところからインスタンスを作る話じゃないぞ?
>>390がLisperなところを見ても実行時に動的にクラス定義を作る話だろうに。

それとも、>>392もそうだがJava(ないしそれに類する静的言語)しか知らないせいで
動的にクラスを作るという意味が理解できないのか?

448 :デフォルトの名無しさん:05/01/21 02:57:01
そこで逆ギレですよ。

449 :デフォルトの名無しさん:05/01/21 03:01:35
>>428,446
読むタイミングでうまくいってないってことは、モデルクラスでsetCharactorEncoding()したとき
よりも前に、どこかでリクエスト・パラメータを読むなり、getReaderでストリームを取ったりし
ちゃってるんじゃないの?

setCharactorEncoding()は、リクエスト・パラメータを読むよりも前に実行しないといけない
から、doPostに移しただけで動くようになったんなら、そのdoPostからモデルに行くまでに
どっかでなんかHttpServletRequestを使った処理が挟まってるんじゃないか?

450 :デフォルトの名無しさん:05/01/21 03:05:49
まあ動的クラス作成なら、BCELよりはJavaAssistだろうなあ。
でもJSPの例もあるわけだから、>>433の上げた、ソースコードを生成して
コンパイラを起動するのが、クラス生成の頻度が少ないなら一番現実的な解かも。

451 :デフォルトの名無しさん:05/01/21 03:07:40
「クラスを作る」っていうのがインスタンスを作ることだと
思ってる香具師がいるが、そもそもクラスとインスタンスの区別
も付いてないようだしね。
もとの質問が最初から「動的にクラスを定義する」(作るじゃなく)
って書いてあればまだ脊髄反射で答える香具師も出なかったんだろうが。



452 :デフォルトの名無しさん:05/01/21 06:36:13
これがJava厨って生き物ですか≧∇≦ブハハハハハ

453 :デフォルトの名無しさん:05/01/21 07:00:35
とオブジェクト指向のオも分からないC厨が申しております

454 :デフォルトの名無しさん:05/01/21 08:57:35
動的にクラスを作るっていってもさ、
1.バイトに対応するバイト列を動的に生成してClassLoader#defineClassする(難易度高)
2.JavassistやBCELなどのライブラリを使う(難易度中)
3.動的にソースファイルを作って動的にコンパイルし、それを読み込む(難易度低)
なんかがある。

2と3はなんとなくイメージつくけど、1ってVMの知識無いと無理じゃね?Class clをcl.toString()してbyte変換とかするだけじゃ無理っしょ?

455 :デフォルトの名無しさん:05/01/21 09:23:09
JTabbedPaneを使ってるJFrameで起動直後に
あるフィールドにフォーカスを当てたいんですけど
どうしたらいいでしょうか?
Field.requestFocusInWindow();でいいんですか?
入れるタイミングがわかりません。

456 :デフォルトの名無しさん:05/01/21 09:50:54
>>454
VMの知識っつーか、class ファイルの知識だね。

あと、Javassist は 3. と同程度、BCEL は 1. と同程度の難易度だな。
他にも Groovy とか pnuts みたいなスクリプト言語を使うって手もあるし。

457 :デフォルトの名無しさん:05/01/21 13:03:05
初心者の質問で申し訳ない。

j2sdk1.4.2_06でメール配信プログラムを書いています。
(activation.jarとmail.jarを使用して)

セミコロン区切りのメールアドレスを配列にsplitしようと
思っているのですが
コンパイルはできるのですが、実行すると
java.lang.NoSuchMethodError
となってしまいます。

基本的なことが分っていない気がするのですが、ご教授お願いします。
(情報が足りなかったら補足します)

よろしくお願いします・・


458 :デフォルトの名無しさん:05/01/21 13:03:13
話題違いだが、Gnoovyって意味あるのか?
Javaのプロジェクトって5の利益を得るために、10の労力がいる様なのが
多いから、いい加減にしてくれって思う事が度々ある。
工数が減るたって後になれば、実はそうでもなかった。だがGrooby独特の
仕様はJavaにない世界を生み出したって結局完全な別言語に進化するのが
オチだろうよ。
回りの新しい物好きのマニアがやり出すと、結局自分も学ばなきゃいかん
ようになるし、それで幾つものフレームワークやライブラリに時間
潰されたからな。

459 :デフォルトの名無しさん:05/01/21 13:24:23
>>457
どのメソッドが原因でjava.lang.NoSuchMethodErrorだったのか不明確ですが、
前後から察するに、java.lang.String#split(String)でしょうか?
その場合、コンパイル時と実行時で異なるバージョンを使っていると思います。
javac に -verboseオプションをつけてコンパイルした時の結果と
java -versionと実行したときの結果を比べ、
本当に1.4.2を使っているのか確認してください。

実行時だけ1.3、というのがありがちです。Oracle入れたときとか。

460 :デフォルトの名無しさん:05/01/21 13:26:39
Javaだけの利用を前提条件とすると、
リッチクライアントは必然的にAppletしかない?
最近のアプレットって、ビジネスアプリへの適用に耐えうる?

461 :457:05/01/21 13:34:39
>>457
ありがとうございます!

javac *** -verbose ではj2sdk1.4.2_06で、
java -version は1.3.1_01でした・・

1.3.1_01をインストールした記憶はないんですけど・・

対処方はありますか?

よろしくお願いします。

462 :デフォルトの名無しさん:05/01/21 13:41:00
>>461
実行環境がよくわからんが、実行環境がJAVA_HOMEをただしく認識するように設定する
としか言いようがないな・・・

463 :459:05/01/21 13:42:40
>>461
そこまでわかったのなら、環境変数PATHを調べるなり、
PATHの通ったディレクトリにjava.exeがあるか調べるなり、
自分ですることはあるでしょう。

それから、1.3.1なんてインストールした記憶はないといっていますが、
ソフトによっては自前でJREをインストールし、
あまつさえPATHの先頭に追加してしまう厄介なものも存在します。
>>459でもちょっとだけ触れましたけど、Oracleとか。
これが原因で「○○動かない」という声を良く聞きますね。

>>460
それならJavaWebStartですよ。JavaWebStartで作ったソフトを挙げるスレがどこかにあったような。

464 :デフォルトの名無しさん:05/01/21 14:24:04
分かり難い説明で恐縮ですが
htmlを作成しているのですがチェックを入れた項目をフォームのページの
ラジオボタンに引き継ぐプログラムを教えてください

465 :デフォルトの名無しさん:05/01/21 14:25:11
>>464
それはjavaと何か関係あるのか?

466 :デフォルトの名無しさん:05/01/21 14:25:34
>>461
Windows のシステムディレクトリに 1.3.1_01 の java.exe と javaw.exe があるのではないかと推測。

467 :デフォルトの名無しさん:05/01/21 14:35:29
>>463
なるほど、JWSですか。盲点でした。
チェックしてみます。ありがとう。

468 :デフォルトの名無しさん:05/01/21 14:42:26
>>460
Webstartにもアプリケーションとアプレットがある

まぁ最近のといういい方してるけど、1.2以降は十分実用的だよ
1.3で実用的なアプリにも耐えられ、1.4で描画速度がネックにならなくなったしね

1.4以上対応アプリでMemoryImageSource使ってた人を見たときは殴り倒したくなったけどな

リッチクライアントということで業務用と仮定、となると安定度も重要だろうから1.4.2がベストだろうね


469 :とおりすがり:05/01/21 16:20:07
>>468
>1.4以上対応アプリでMemoryImageSource使ってた人を見たときは殴り倒したくなったけどな

特殊なグラフィックローダとかでもだめ?




470 :デフォルトの名無しさん:05/01/21 17:16:46
引数って、書いた後はどんな値を記述してもいいのでしょうか?
抽象から具象ってことでOK?

public class Param
{
public static void main(String[] args)
{
Method method1 = new Method();
method1.setMessage("ええんか");
method1.messageOut();
}

class Method
{
protected String message;
// コンストラクタ略

public void setMessage(String s)
{
message = s;
}

public void messageOut()
{
System.out.println(message);
}

}//おわり

471 :デフォルトの名無しさん:05/01/21 17:25:32
>>470の質問が理解できる人っているの?

472 :デフォルトの名無しさん:05/01/21 17:41:03
うんとね、setMessage(String s)と書いとけば、
後はmainメソッドに書いてるように
method1.setMessage("ええんか");のように
括弧の中に具体的な値を好きなようにかけるんですよね?

473 :デフォルトの名無しさん:05/01/21 17:48:18
>>472
当たり前だ。
固定値なら引数で取る意味ねーよ。

474 :デフォルトの名無しさん:05/01/21 19:23:17
>1.4以上対応アプリでMemoryImageSource使ってた人を見たときは殴り倒したくなったけどな
なんでだめなの?

475 :デフォルトの名無しさん:05/01/21 20:29:19
クラスの名前がメソッドってどういう頭してるのさ?

476 :デフォルトの名無しさん:05/01/21 21:09:01
Java2DではBufferedImageというのがあって柔軟性や速度ではるかに勝る


477 :デフォルトの名無しさん:05/01/21 21:24:14
>>473
ありがとう
そうですよね。ちょっと気になってたもんだから・・・

>>475
即席ですから堪忍してーな

478 :デフォルトの名無しさん:05/01/21 21:28:34
>>475
マジレスするとMethodクラスがあるわけだが・・・ConstructorクラスもFieldクラスも

479 :デフォルトの名無しさん:05/01/21 22:38:54
javaアプレットって使われてるんですか?役に立つのこれ?

480 :デフォルトの名無しさん:05/01/21 22:47:36
>>470
使われてるところでは使われてる。
役に立つかどうかは作る人と使う人次第。

481 :デフォルトの名無しさん:05/01/21 22:48:39
s/470/479/

482 :デフォルトの名無しさん:05/01/21 23:04:40
昔はJavaプログラミング=アプレットプログラミングであるかのような時代もあった……
1.1は遠くになりにけり。

483 :デフォルトの名無しさん:05/01/21 23:19:50
>>480
それを言っちゃーおしまいよ
俺が知りたいのは一般的な話や>>482のよう話
仕事で使う技術なのかどうか?
アプレットを好き好んで使う人は居るのかどうか?
今、入門書でアプレットの章読んでるんだけどツマンネ


484 :デフォルトの名無しさん:05/01/21 23:24:12
Java=アプレットの時代

Webアプリの普及によるServlet/JSPなどのJ2EEプログラミングの時代

リッチクライアント導入においてアプレットという選択肢が登場する時代

485 :デフォルトの名無しさん:05/01/22 00:13:55
>484
しかし既に市場はFlashが席巻している時代、でもある。
JREよりFlashプラグインの方が導入の敷居は低いし

だが、「Javaでリッチクライアントが作れる」ということでJava使いにとって
(そして、Java使いを擁する開発チームにとって)旨味のある選択肢ではある。
Flash作者と業務PGの集合はほとんど重なってないし、ね。

486 :デフォルトの名無しさん:05/01/22 00:17:23
>JREよりFlashプラグインの方が導入の敷居は低いし
アプレットも今の時代はプラグイン構造だから
敷居はFlashと変わらないはずなんだけど、情報が全然
広まらないんだよな。

487 :デフォルトの名無しさん:05/01/22 00:40:44
>>476
BufferedImage>>MemoryImageSourceってことなんですね

488 :デフォルトの名無しさん:05/01/22 00:41:38
結局 -target 1.1 というオマジナイが手放せないわけで。。。

489 :デフォルトの名無しさん:05/01/22 00:59:59
ケータイのJavaではアプレットチックなものが使われているわけで。。。

サーバサイドプログラマながらiアプリを作らされる羽目に。orz

490 :デフォルトの名無しさん :05/01/22 01:13:55
javaの概念がよくわかりません。
クラスを作ってメソッドを定義して、
インスタンス化するとオブジェクトになる
こんな感じでいいんすか?
えろい人教えてください。

491 :デフォルトの名無しさん:05/01/22 01:15:23
>>485
使える範囲がFlashでは弱い
主にリッチクライアントの土俵は業務系だと思うが、
ここではさすがにJavaとFlashではやれる範囲が違いすぎる

そして不特定多数のところではWEBアプリのままで行くと思われ
動的な部分はFlashで
つまり現状維持

Flash方面しらべればわかるがとにかく人手が足りない
というのは鯖のアプリをJavaや.NETでかくのだが、Flashはまた別言語で習得が難しいのだ
たとえばIDEでの生産性の高さとかいろいろと問題山積み

これがJavaや.netでは同一言語でクライアントと鯖をこなすことができて
教育のコストとかいろいろと恩恵がある

492 :デフォルトの名無しさん:05/01/22 01:21:43
>>487
そういうこと

あとはBufferedImageはたとえばWindowsではDIBによるアクセラレーションがきいたりする
まぁG400とか古めでもその辺とくいなビデオチップは今でもJavaの体感速度早かったりするのさ

ちなみにレスポンスはUMAである855GMEとか結構いいのとPentiumMのほうがPentium4より
Javaの動作速度が速いこともあって不思議とデスクトップよりノートのほうが快適だったりする


493 :デフォルトの名無しさん:05/01/22 01:24:56
>>488
今時のリッチクライアントの選択肢としてのアプレットなら -target 1.1 なんてやらんだろ。
-target 1.1 なんてのは絶滅寸前の趣味のアプレットぐらいでしか使われて無い。

494 :デフォルトの名無しさん:05/01/22 03:22:03
すいません。
tomcat5.xで、servletなしでjspとbeanだけで動かすことは
出来ますか?

--web-inf--classes(ここのフォルダはなにもなし)--model(package)-xxx.class(bean)
|
--xxx.jsp

こんな構成でbeanをxxx.jspで
<jsp:useBean id="??" class="model.xxx" />
としてもservletを生成してくれないでコンパイルのエラーがでます。(エラー500)

web.xmlとか設定の問題でしょうか?それともservletなしで、jsp+beanだと
ダメなんでしょうか?


495 :デフォルトの名無しさん:05/01/22 03:34:30
>>494
> tomcat5.xで、servletなしでjspとbeanだけで動かすことは
> 出来ますか?
できる。

>コンパイルのエラーがでます。(エラー500)
そのエラーの内容を書かないと適切な回答は得られないぞ

496 :デフォルトの名無しさん:05/01/22 06:23:52
Netbeansは無償ですか?

497 :デフォルトの名無しさん:05/01/22 06:40:07
>>496
無償どす

498 :488:05/01/22 07:15:49
>>493
某県庁の仕事を請け負って開発しているのだが、
未だにWin98やMeが稼働してたりするのでつ。。。

499 :デフォルトの名無しさん:05/01/22 07:16:16
おはようございます

Servlet+JSP+Bean+データベースで、実行ボタンをクリックしたら
データベースの一覧がJSPで表示されるようなものを考えます。
その際に、Beanはどのように定義するのがよろしいんでしょうか。

自分がやったのは、
1.UserDataというBeanでidとnameをフィールドに持つ。

2.Servletの部分でデータベースと接続し、
ArrayList objAry = new ArrayList();

while(rs.next()){
UserData userData = new UserData();
userData.setId(rs.getString("id"));
userData.setName(rs.getString("id"));
objAry.add(userData);
}

session.setAttribute("user_list",objAry);
そしてJSPに転送。

3.JSPで表示

というものなのですが、3.のところでどう呼び出したらよいか分からないのが一点。
Strutsなら簡単なのですが、Struts使わないとよくわかりません。

もう一つはArrayListもBeanにするべきかどうかという点。
Beanの定義に簡単なsetter,getter以外のメソッドをぐちゃぐちゃかくはめになりそうで嫌なんですが・・。

どなたかよろしければ教えてください。
情報が足りない、とかあれば随時かきこみます。

500 :デフォルトの名無しさん:05/01/22 08:21:13
JSPで・・・

<c:forEach var="row" items="${user_list}">
<c:out value="${row.id}" /> <br>
<c:out value="${row.name}" /> <br>
</c:forEach>



501 :デフォルトの名無しさん:05/01/22 10:17:48
>>491
flash知らなさ杉

502 :デフォルトの名無しさん:05/01/22 12:14:38
>>498
MEも98も1.4.2の動作リストに入ってるし
1.1って遅いんだよ?

503 :デフォルトの名無しさん:05/01/22 12:16:19
>>501
Flashとサーバーサイドと2つとも書ける技術者あまりいませんぜ
動的なコンテンツかける人だけならそれなりにつかまえれるけど、
業務系の画面や考え方となるとね

そもそも開発効率がJavaや.NETとくらべて絶対的に悪すぎ

504 :デフォルトの名無しさん:05/01/22 12:31:16
>>499
> Strutsなら簡単なのですが、Struts使わないとよくわかりません。
何も理解しないでStruts使ってるんだな・・・・

505 :デフォルトの名無しさん:05/01/22 13:43:21
金額を計算するのに浮動小数点は信用できない。
なぜ固定小数点というデータ型がないの?

と、ここで愚痴を言ってもしかたないんだけどねw

506 :デフォルトの名無しさん:05/01/22 13:51:14
>>505
BigDecimal か BigInteger 使え。

507 :デフォルトの名無しさん:05/01/22 13:59:27
>>502
>>498 とは別人だけど、
plug-in のインストールが前提になっただけでお手上げのユーザがいるのよ。

508 :デフォルトの名無しさん:05/01/22 14:05:52
>>507
ユーザではなく開発者ではないのか?
ちゃんと作ればユーザは単にボタンを押していくだけで
プラグインのインストールはできたと思ったが。

509 :デフォルトの名無しさん:05/01/22 14:26:35
>>508
まず、ユーザがインターネット接続環境であることが保証されていない。

それから、これは自分は知らないので教えてもらいたいんだけど、
ネットのないユーザに対して、plug-in も一緒に配布したとして、セキュリティソフトが
あれこれメッセージを出したりしない?
それがあるとユーザがビビってしまって問合せをしてきて、ユーザが使っている
セキュリティソフトの情報をしなきゃいけなくなるんだが。

510 :デフォルトの名無しさん:05/01/22 14:27:21
>>509
最後の行 「情報」→「情報収集」 の間違い。

511 :デフォルトの名無しさん:05/01/22 14:59:39
>>506
おお、神がいた!さんくす。

それで、“BigDecimal”でぐぐってみたらこんなページが
http://msugai.fc2web.com/java/class/BigDecimal.html
求めていた答えがぁぁぁぁぁ。どうも有難う!

512 :デフォルトの名無しさん:05/01/22 15:00:32
>>506
本当にどうも有難うぅぅぅぅ!

513 :デフォルトの名無しさん:05/01/22 15:06:55
>>507 だからFlashと同じようにプラグインを自動インストールできる
仕組みを使うんだけどな。

514 :デフォルトの名無しさん:05/01/22 16:06:13
>>504
釣られたかな?
strutsには、ActionMappingとActionForwadrdというサーブレットと
JSPを明確に関連つける機能があり、さらに任意のパラメーターも
ワンタッチで設定できるので、相互間のやり取りが簡便になります。
従来みたいに、直接パス名からgetRequestDispacherとかして
さらにデータを渡すのにrequest.setAttributeなんてしなくてもいいし
forward時の例外処理も書かなくていいんです。
これ位常識だと思うのですが・・・

515 :デフォルトの名無しさん:05/01/22 16:23:51
>>514
なんで今までStruts使ってたの?
なんで今回はStruts使わないの?

516 :デフォルトの名無しさん:05/01/22 16:43:20
>>514
>ActionMappingとActionForwadrdというサーブレットと
サーブレットではありません

> 従来みたいに、直接パス名からgetRequestDispacherとかして
従来でもそんなことしません

> さらにデータを渡すのにrequest.setAttributeなんてしなくてもいいし
Struts使ってもそうします

517 :デフォルトの名無しさん:05/01/22 16:45:32
>>514
だからStrutsを使ってない段階でStrutsがやってくれてる事は自分で
やらないといけないに決まってるだろ? それが分からんと言ってるって
ことは、Strutsが何をやってくれるもんなのかもよく分からんまま使って
たってことじゃん。

518 :デフォルトの名無しさん:05/01/22 16:47:37
RequestDispacherまで取れてるんだったらforward()するだけだろ。
何の質問なんだこれ?

519 :デフォルトの名無しさん:05/01/22 16:52:55
>>516
・・・・釣り師なら天才かな

>サーブレットではありません
サーブレットの意味分かってる?

>従来でもそんなことしません
RequestDispacherを生成するのにパス名以外の方法なんてありません。

>Struts使ってもそうします
strutsじゃ、属性をセットする事なくパラメーターとして(つまりクエリ文字列)
として渡せます。それに属性のセットもワンタッチでできます。


520 :デフォルトの名無しさん:05/01/22 16:56:30
おいおい、ActionMappingやActionForwardはただのStrutsフレームワーク
内のクラスだろが。いつからサーブレットになったんだよ。

521 :デフォルトの名無しさん:05/01/22 16:56:32
>>515
パフォーマンスの問題です。
さらに経験上、画面遷移数が30を超えるWebアプリだと
strutsでは収集がつかなくなるので、マイフレームワークで今回
試験的に作成する事にしました。

522 :デフォルトの名無しさん:05/01/22 17:02:07
>>517
strutsの限界(ちょっと大げさですが)を感じたから、今回struts抜きの
マイフレームワークで作成して、で、今までstrutsに依存してた部分に
ついての質問をしただけなのですが・・・
何故これでstrutsを分かってない等と言われねばならないのか疑問を
感じます。まあどうでもいい事なんですがね。
単なる煽り厨だったら恥ずかしいし・・

523 :デフォルトの名無しさん:05/01/22 17:05:14
>>519
あなたがどう思おうと、ActionMappingやActionForwardはサーブレットでは
ありません。サーブレットなのは唯一 ActionServletだけ。

ActionForwardを作る方法も最終的にはパス名しかないな。
結局Servlet APIの上で動いているんだから。ただパス名がプログラム内に
出てこないようにXMLとして外だししているだけで。そのXMLは自分で書くん
だし。ActionMappingの定義書いたことあるんでしょう?

最後のは
String path = "/path/to/you/hoge.jsp?param=value"
ってしてRequestDispacherに渡せばいいだけじゃないのか?

ネタでなければただの馬鹿ってことになるんだが。

524 :デフォルトの名無しさん:05/01/22 17:07:27
>>519
> サーブレットの意味分かってる?
この質問はそのままお返ししましょう。

「直接パス名からgetRequestDispacherとか 」
「パス名を引数に渡してjavax.servlet.http.HttpServletRequestオブジェクトから」ならわかりますが「パス名からgetRequestDispacher」は意味不明です。

> strutsじゃ、属性をセットする事なくパラメーターとして(つまりクエリ文字列)
として渡せます。
Struts使わなくても同じです。Strutsだからできると思っているんですか?

>それに属性のセットもワンタッチでできます。
激しく意味不明。


525 :デフォルトの名無しさん:05/01/22 17:09:07
Struts使わないとよくわかりませんってことは
Strutsが何をやっているのかよくわかってないで使っているってことだろ

526 :デフォルトの名無しさん:05/01/22 17:12:02
>画面遷移数が30を超えるWebアプリだと
>strutsでは収集がつかなくなるので、
収集つかなくなるやり方しかしてないんだろうな。
XDocletとか使ったこと無いだろ?

527 :デフォルトの名無しさん:05/01/22 17:12:45
>>523
>>ActionForwardを作る方法も最終的にはパス名しかないな。
ActiomMapping#findFowrawr(String name)
の引数のどこがパス名なんですか?
これで「ネタでなければただの馬鹿」ってもう話になりませんね。

サーブレットについては言葉遊びになってるので、これ以上の不毛な
議論はもういいでしょう。
最後のテーマについてもワンタッチできます。

528 :デフォルトの名無しさん:05/01/22 17:13:39
Strutsに限界を感じて、Strutsが何をやっているのか知らないまま、
StrutsがServletのどの部分を吸収しているのか理解しないまま
「分かってます」「マイフレームワークです」とかいっても、そりゃ
「なにも理解しないでStruts使ってるんだな」と言われても仕方がないと思う。

まず「分かってません」ってところから始めないと、まともなものが
出来ないと思うよ、本気で。

529 :デフォルトの名無しさん:05/01/22 17:16:58
>>526
不可能です。struts-configを別エンティティに分割したりしましたが
結局は、本質的に同じです。
もっと、ビジュアルなマッピング図が必要だと考えてます。
strutsは何より凡用性を重視してますので、それ以上を求めるのは酷だってのは
理解してるんですけどね。

530 :デフォルトの名無しさん:05/01/22 17:18:25
>>527
> ActiomMapping#findFowrawr(String name)
> の引数のどこがパス名なんですか?

本当に何もわかってないで使ってたんだな。

HttpServletRequset#getRerquestDispatcher() の引数に
直接パス名を指定しないで、外部設定ファイルにパスを設定し
それを読み込む、という方法にすれば同じじゃないか。

> これで「ネタでなければただの馬鹿」ってもう話になりませんね。
これはそっくりそのまま返すよ

531 :デフォルトの名無しさん:05/01/22 17:20:31
>>528
これ以上の煽り意見につき合う気はないので、そろそろ
最後にしますが、私がstrutsを分かってないって
明確なソースは何なのか?
まあ、どうでもいいのですけどね。実際に私がWEBアプリを
開発してるのは事実なんですから・・・

532 :デフォルトの名無しさん:05/01/22 17:23:26
>>531
> Strutsなら簡単なのですが、Struts使わないとよくわかりません。
これにつきる

533 :デフォルトの名無しさん:05/01/22 17:24:27
>>527
おまえ、ほんとに>>523読んだのか? findForwardしたらActionForwardが
返ってくるが、ActionForwardにはパス名が必要。だって最後にはServlet API
のforward()を呼ぶんだから。

# ついでにいえば、getNamedDispacher()ってのもあるんだぞ。

だからそれをstruts-config.xmlに<ActionMapping>やらで定義するんだろ。
XMLにパス名を書くだろが。必要なんだからどっかに書くしかないよな。
だれかがXML書いてくれるんでxmlなんて書いたことないのか?

念のためいっとくが、この、具体的なパス名を抽象化してフォワード名として
扱うような機能な、おまえがマイフレームワークで自分で実現しないといけない
機能の一つなんだぞ?

さらにいえば、ActionMappingがServletでないのは言葉遊びでもなんでもなく、
明確な事実だよ。web.xmlに設定するサーブレットはActionServletだけだし、
そもそもActionMappingもActionForwardもHttpServletクラスを継承してない。
当然web.xmlに設定してサーブレットとして呼び出すことも出来ない。
ActionServletが内部で使う一つのクラスに過ぎない。

何言ってんのほんと?

534 :デフォルトの名無しさん:05/01/22 17:25:07
>>531
このスレは十分に明確なソースだと思うが....

535 :デフォルトの名無しさん:05/01/22 17:27:00
おれはStrutsで画面遷移数が30以下のものを開発したことのほうが少ないが...
ちゃんと収集がついてるけどねえ。

536 :デフォルトの名無しさん:05/01/22 17:35:20
>>535
そこら辺は人によりけりでしょう。
人によっては、OOP無し書かれた大規模なソースも、上手く構造化
されてると見ますからね。
自分はソフトウェア理論から入りましたので、actiom-mappings内の
羅列には抵抗を覚えます。設計に厳しい面がありますので・・

537 :デフォルトの名無しさん:05/01/22 17:36:06
>>536
だから、XDoclet使えって

538 :デフォルトの名無しさん:05/01/22 17:39:20
ActionMappingをビジュアルに表現してくれるソフトを使ったら
いいんでない?

まあStruts自体に問題ありだとは思うけどね。おれはActionMappingより
特にActionFormの存在意味がほとんどないのがな....

539 :デフォルトの名無しさん:05/01/22 17:43:10
だから使い方を教えろって

540 :デフォルトの名無しさん:05/01/22 17:47:53
ここまで読んだ。



>>531は正直言って開発者に向いてないと思う。
100あることを100知ってるような発言するくせに、他人の意見についてなんら検証してないでしょ。
自分が正しいことを証明するのは難しいかもしれないけど、他人の意見に間違いがあるなら
それをちゃんと理由付きで説明できないと仕事でやってく人間としては失格だよ。

541 :デフォルトの名無しさん:05/01/22 17:48:39
ビジュアルに見たいのならStrutsIDE使えば?

542 :デフォルトの名無しさん:05/01/22 17:50:12
>>540
531は他人についてのみならず
自分のしたいことや、自分のわかっていること・わかっていないことを
他人に説明する能力も著しく欠けているよ

543 :498:05/01/22 17:51:28
>>500
ありがとうございます。JSTLという存在をおかげさまで知ることができました。
一覧作成もできました。

>>504
はい、Java暦3ヶ月で・・まごうことなき初心者です
Strutsはサンプルとしてコードをみせてもらったことがあるぐらいで、
自分ではほとんど書いたことはありません。

Strutsでここまで議論になっているところをみると、
みなさん使っているんですねー。

544 :デフォルトの名無しさん:05/01/22 17:54:45
>>538
ActionFormの欠点は、大きなファイルのアップロード時にメモリ不足に
なりやすい事ですね。全部読み込んでActionFormインスタンスに
してしまうのですから・・・
データを部分的に順に読み込んで、順次データベースに転送するって
方法が使えないので、そこら辺は仕方なくコールバックタイプの
フォームデータ読み込みBeanを作成しました。

545 :デフォルトの名無しさん:05/01/22 19:08:54
Object.wait()
Object.notify()
がObjectクラスにある必要がよくわからんです。
MutexクラスやRockクラスを用意するより基底クラスで実装するもんなんでしょうか。


546 :デフォルトの名無しさん:05/01/22 20:11:03
簡単に文字列を暗号化できるクラスを探しています。

たとえば、
//文字列strをpassを使って暗号化
String encode = EncryptClass.encrypt(str, pass);

//暗号化した文字列encodeをpassを使って復号化
String decode = DecodeClass.decode(encode, pass);

こんな感じで簡単に使用できるクラス・メソッドって
ないでしょうか?暗号の強度などは気にしません。
パッと見てよくわからない文字列になればいいです。

どなたかよろしくお願いします。


547 :デフォルトの名無しさん:05/01/22 20:17:07
>>546
文字列もpassもchar[]かbyte[]にしてxorして16進文字列に変えるとかどう?
それくらいなら自前で作れるでしょ。

548 :デフォルトの名無しさん:05/01/22 20:17:10
>>546 じゃBASE64とかunicodeエスケープとかでいいじゃん。

549 :デフォルトの名無しさん:05/01/22 20:22:34
めっちゃ簡単でいんだったら適当な値でxorすりゃいいな
で、もう一回同じ値で xor して元に戻す

550 :デフォルトの名無しさん:05/01/22 21:51:29
>>546
Jakarta Commons CodecでBase64かHexに変換したらいい。
ttp://jakarta.apache.org/commons/codec/

Base64 codec = new Base64();
byte[] encoded = codec.encode( "なんか文字列");

という感じで使えるよ。

551 :デフォルトの名無しさん:05/01/22 21:59:48
>>545
非常に便利であっても、それを素人が使うと
問題が出てくる可能性のある場合、
その芽は予め摘み取っておく。

これが Java の思想。


552 :デフォルトの名無しさん:05/01/22 23:42:48
>>431です
>>434さんありがとうございます。ちょっと理解できました

553 :デフォルトの名無しさん:05/01/23 01:26:09
Tomcatを用いたWebアプリケーションについて質問します。

webapp
|
+--myApp
   |
   +-lib
     + bar.jar
     |
     +subLib
      + foo.jar

こういうディレクトリ構成の場合、bar.jar、foo.jar共にクラスパスを通してやりたいと
思っています。しかしながら、通常Tomcatの場合はlib直下のディレクトリには
クラスパスが通りますが、subLibディレクトリ以下のjarファイルにはクラスパスは
通りません。
みなさん、このような場合は、どのように解決すればよろしいでしょうか。

554 :デフォルトの名無しさん:05/01/23 01:27:16
libの下に全部おくべき

555 :デフォルトの名無しさん:05/01/23 01:38:03
「おかなければならない」ではなく「おくべき」ということは
技術的な制約ではなくなにか別の理由でサブディレクトリを
作ってはいけないのですよね。その理由をお聞かせください。

556 :553:05/01/23 01:44:26
早速のレスありがとうございます。
そうですね。理由といえば、論理的にライブラリディレクトリを分けておきたいといったところでしょうか。

大規模なwebアプリになってくるとjarファイルだけでも数十になってきたりします。
特にオープンソースのコンポーネントを多数使っている場合に数が多くなってしまいますので
せめてディレクトリを分けることにより、開発者に「このコンポーネントはこのディレクトリ配下の
jarファイルで構成されている」ということを認識してもらいたいからです。

たとえディレクトリに分けてjarを配備してもAppコンテナから見れば並列に扱われればいいので
なんとかして上記のような構成にしたいと思っています。

557 :デフォルトの名無しさん:05/01/23 02:05:14
グレースケールのjpeg画像の強度を得るには
どうしたいいのでしょうか
BufferedImageのgetRGBメソッドを使っても
ぜんぜん違う値になってしまいます

以下ソースです

BufferedImage bi = ImageIO.read(new FileInputStream("hoge.jpg"));
int pixel = bi.getRGB(0,0);
System.out.println((pixel & 0xff));

画像がRGB画像の場合では上記のソースで正しくRGBの強度
を得ることができました


558 :デフォルトの名無しさん:05/01/23 02:09:47
>>556
Servlet仕様では/コンテキスト/libではなく
/コンテキスト/WEB-INF/libなのだが。


559 :556:05/01/23 02:13:34
>>558
すまん。間違った。
WEB-INF/libとして話を進めてくださいませ。
引き続き、宜しくお願いします。

560 :デフォルトの名無しさん:05/01/23 02:17:18
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class A extends JFrame implements Runnable, ActionListener {
String[] str = { "1", "2", "3", "4" };
JButton jButton = new JButton("Draw"),jButton2 = new JButton("Stop"),
jButton3 =new JButton("Open");
JComboBox jComboBox = new JComboBox(str);
Image image;
Graphics g, buf;
Thread thread = null;
private boolean flag;
public static void main(String[] args) {
A jFrame = new A();
}
A() {setBounds(0, 0, 400, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.WHITE);
Container con = getContentPane();
con.setBackground(getBackground());
con.setLayout(new FlowLayout());
jButton.addActionListener(this);
jButton2.addActionListener(this);
jButton3.addActionListener(this);
con.add(jComboBox);con.add(jButton);
con.add(jButton2);con.add(jButton3);
setVisible(true);g =getGraphics();
image = createImage(getWidth(),getHeight()
- (getInsets().top + getInsets().bottom
+ jButton.getY() + jButton.getHeight()));
buf = image.getGraphics();
}

561 :デフォルトの名無しさん:05/01/23 02:17:59
public void run() {
while (flag) {
myPaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
}
}
private void myPaint() {
buf.setColor(Color.BLUE);
buf.fillOval(50,50,100,100);
g.drawImage(image, 0, getInsets().top + jButton.getY()
+ jButton.getHeight(), this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButton) {
if (thread == null) {
flag = true;
Thread thread = new Thread(this);
thread.start();
}
}
if (e.getSource() == jButton2) {
flag = false;thread = null;
}
if(e.getSource()==jButton3){
JOptionPane.showMessageDialog(this,"test");
}
}
}

562 :デフォルトの名無しさん:05/01/23 02:19:18
すみません。
上のプログラムでDrawボタンを押した後、コンボボックスをクリックすると
(drawImageで上書きされて?)すぐに消えてしまいます。
消えないようにするためにはどうすればいいですか?
また、しかしながら、Openボタンを押した後ならすぐに消えません。それはなぜですか?
教えてください。

563 :デフォルトの名無しさん:05/01/23 02:28:32
>>557
BufferedImageのピクセルフォーマットが何になってるかとかしらべてみそ

564 :557:05/01/23 02:49:38
>>563
すみません,ピクセルフォーマットの情報は
bi.toString()
のなかにありますか?

いちおうBufferedImage.javaやColorModel.java等の
ソースを見てみましたが,さっぱりわかりませんでした

565 :556:05/01/23 03:05:45
こちらのスレより適切そうなスレがありましたね。
自ら誘導されて行ってきます。。。
スレ汚し失礼しました。

566 :デフォルトの名無しさん:05/01/23 04:55:28
>>564
bi.getType()


567 :デフォルトの名無しさん:05/01/23 05:02:29
Strutsまったく使ったこと無いんですが、>>514は、

>ActionMappingとActionForwadrdという/
>サーブレットとJSPを明確に関連つける機能

という具合に切って読むんですよね?なんか、

>ActionMappingとActionForwadrdというサーブレット/
>とJSPを明確に関連つける機能

という感じで話が進んだようですが、微妙に気になる。。。

568 :デフォルトの名無しさん:05/01/23 07:43:16
すみません、だれか >>509 の相手をしてくれませんか?

569 :デフォルトの名無しさん:05/01/23 07:59:14
public class exsample3{
public static void main(String arg[]){
int siire_ne1, teika1, kosuu1, goukei;
int siire_ne2=200, teika2, kosuu2=3;
siire_ne1=100; kosuu1=2;
teika1=siire_ne1+10;
teika2=siire_ne2+15;
goukei=teika1*kosuu1+teika2*kosuu2;
System.out.println(goukei);
double zeikomi1, zeikomi2;
zeikomi1=houhou1(teika1); //メソッドの利用
zeikomi2=houhou1(teika2);
System.out.println("1:\t"+zeikomi1); //タブの出力
System.out.println("2:\t"+zeikomi2);
/* ここから2行は、特殊文字の説明です */
System.out.println("1234"+"5678901234567890"+"\n");
System.out.println("1234\t123\t12.");
}
/* ここからはメソッドhouhou1の定義です */
public static int houhou1(int teika){
double waribiki, urine_ne, zei;
waribiki=0.2; zei=0.05;
uri_ne=teika*(1-waribiki);
return(int) (uri_ne*(1+zei));
}
}

23、24行目でシンボルが解決できないそうです。何故なんでしょうか?

570 :初心者 ◆Java/isQ.c :05/01/23 08:08:56
>>569
宣言されていない変数 uri_ne が使われているからだと思いますが。
21行目の urine_ne を uri_ne にすれば良いんじゃないでしょうかね。

571 :デフォルトの名無しさん:05/01/23 08:18:49
>>570ありがとう!マジでわかんなかった・・・orz

572 :デフォルトの名無しさん:05/01/23 12:56:57
>>567
なるほど!
おれも後者で読んでたクチですな。

573 :デフォルトの名無しさん:05/01/23 13:13:48
>>572
大多数は後者で理解してるでしょ。
ていうか書いた本人も後者の意味で書いていると思う。
ActionMappingとActionForwadrdサーブレットじゃないという
レスにも何も返答できてないし。

574 :デフォルトの名無しさん:05/01/23 15:43:52
ブラウザのウィンドウを最大表示する書き方はありますか。
最小化、最大化、閉じるボタンは表示したいです。
<a href="" onclick='window.open( "GAMEN.HTML", "maxsize")'>GAMEN</a>の様な感じです。
IEとネスケで開きたいです。



575 :デフォルトの名無しさん:05/01/23 15:58:20
>>574
>>1
> JavaScriptの質問は、ここでは受け付けていません。
> Web製作板をご利用ください。http://pc5.2ch.net/hp/

576 :デフォルトの名無しさん:05/01/23 15:59:21
>>574
>>1の下2行

577 :デフォルトの名無しさん:05/01/23 16:01:29
>>575
>>576
すみませんでした。
吊ってきます。

578 :デフォルトの名無しさん:05/01/23 19:00:47
誘導してんだから吊らずに移動しる

579 :557:05/01/23 19:33:07
>>566
thanks

580 :デフォルトの名無しさん:05/01/23 20:54:38
質問をします。

ある文字列が整数かどうかを判定する時に、
Integer.parseInt(id);
でエラーがでるか否か以外にシンプルな方法ありますでしょうか。
よろしければ教えてくださいませ。

581 :デフォルトの名無しさん:05/01/23 20:57:18
正規表現

582 :デフォルトの名無しさん:05/01/23 21:16:34
http://internet.watch.impress.co.jp/cda/news/2005/01/21/6159.html
バージョン5.0に乗り換えた方がよかですか?

583 :デフォルトの名無しさん:05/01/23 21:19:22
Sunが乗り換えキャンペーンとは珍しいですね

584 :デフォルトの名無しさん:05/01/23 21:22:43
JRE、1.4.2_06だった、大丈夫ですかね?

585 :デフォルトの名無しさん:05/01/23 21:38:11
質問させてください。

public class Oya{
  // 略
 equals(Object o){ // equalsの実装
  // 略
 }
}

public class Ko extends Oya{
  // 略
 equals(Object o){
  // 略
 }
}

という2つのクラスがあり、

あるところで

boolean oyadehikaku(Oya o){
 Oya oya = (Oya)getObj(); // getObj()はKoを返すメソッド
 return oya.equals(o);
}

といった感じでOyaレベルで比較したいのですが、
getObjで返されるオブジェクトがKoなのでKoのequalsメソッドで
比較してしまいます。
このような場合どのようにしてOya#equalsを利用するのでしょうか?


586 :585:05/01/23 21:39:59

上の2つのメソッドの前に戻り型のboolean付けるの忘れてました
すいません

587 :デフォルトの名無しさん:05/01/23 21:46:48
(´-`).。oO(コボラーと同レベルだな)

588 :デフォルトの名無しさん:05/01/23 21:48:54
カスの余計なレスがうざいね
プログラマは性格がねちねちしてるやつ多すぎ

589 :デフォルトの名無しさん:05/01/23 21:50:27
まあ、あまりにもレベル低いからだろね

590 :デフォルトの名無しさん:05/01/23 22:20:20
>>588-589
例えば?

591 :デフォルトの名無しさん:05/01/23 22:22:49
>>590みたいなレスをスルーしとけばスレもマターリするよ

592 :デフォルトの名無しさん:05/01/23 22:27:56
>>590
>>590

593 :デフォルトの名無しさん:05/01/23 23:22:45
>>591-592
おまえらもスルーしたらいいんじゃない

594 :デフォルトの名無しさん:05/01/23 23:53:59
P3(int i, int y, int o)
{
this.i=i;
this.y=y;
this.o=o;
}

というインスタンスメソッドがあるとします。これを

P3(int i, int y, int o)
{
this(i, y, o)
}

というふうに書いてたら間違いですか?


595 :デフォルトの名無しさん:05/01/24 00:05:09
推薦で情報学科に合格している高3です。

一年次からJAVAが必修になっているらしいので、JAVAを初めから勉強したいと思います。

おすすめの本を教えてください。



596 :デフォルトの名無しさん:05/01/24 00:05:34
>>594
無限ループになるのでは?

597 :デフォルトの名無しさん:05/01/24 00:05:49
立ち読みして気に入ったら買え。

598 :デフォルトの名無しさん:05/01/24 00:09:12
>>595
高橋麻奈 やさしいJava

599 :デフォルトの名無しさん:05/01/24 00:09:57
>>595
お勧め本スレがどっかにあったはず。

600 :初心者 ◆Java/isQ.c :05/01/24 00:19:24
>>595
|д・)つ ttp://www.hyuki.com/dp/index.html

601 :595:05/01/24 00:26:59
>>597-600

参考になりました。ありがとうございました。

602 :デフォルトの名無しさん:05/01/24 01:25:32
>>595
焦るな。やりたいことを、やりたいだけやっとけ。

603 :デフォルトの名無しさん:05/01/24 01:33:11
スタンドアロンとAppletと両方使えるjarを作りたいのですが
画像の読み込みで同一のクラスで読み込めるものってありますか?


604 :デフォルトの名無しさん:05/01/24 02:22:22
>>595
本もいいけど、JAVAのドキュメントはかなり丁寧に解説してると思う。
たいていの本に書いてある、Hello worldから始まって、OOPが云々・・・
というのもチュートリアルにある。

http://java.sun.com/j2se/1.4/ja/docs/ja/
http://java.sun.com/docs/books/tutorial/index.html

605 :デフォルトの名無しさん:05/01/24 02:46:28
>>585
オブジェクト指向の原理的に無理。

それとは関係ないがそもそもその例では
Ko クラスで equals メソッドをオーバライドしてるので
a.equals(b) が true なのに b.equals(a) が false になるようなことが
起こる可能性があり、非常によくない。

どうしてもやりたかったら static boolean equals(Oya o1, Oya o2)
みたいなメソッドを Oya クラスに追加するのが簡単。

606 :デフォルトの名無しさん:05/01/24 04:25:58
javaにも、.NETみたいにプロパティというものを作りたいのですが、

javaにインスタンスのフィールドの値が変更されたときに呼ばれるリスナーのメソッドってありますか?


607 :デフォルトの名無しさん:05/01/24 06:07:25
>>606
ない
よってむり
Cでオブジェクト指向やるようなもん

608 :デフォルトの名無しさん:05/01/24 06:17:33
import java.io.*;
import java.util.*;
public class e12{
public static void main(String arg[]){
String line,s1;
int i,j;
double sum=0.0;
try{
//JDK1.0.対応;1.1の時「推奨されないAPI」の警告メッセージ
// dataInputStream fi =
// new DataInputStream(new FileInputStream("data3.txt"));
//JDK1.1.対応;
BufferedReader fi=
new BufferedReader(new FileReader(data3.txt));
while((line=fi.readLine())!=null){ //最終行か?
StringTokenizer tk=new StringTokenizer(line,",");
j=tk.countTokens();
System.out.println("["+j+"]tokens ->");
for(i=0; i<j; i++){
s1=tk.nextToken(); //トークン抽出
System.out.print("\t"+s1);}
System.out.println();}
fi.close();}
catch(FileNotFoundException e){ //ファイルがない時
System.err.println("FileStreamsTest:"+e);}
catch(IOException e){ //入出力エラーの時
System.err.println("FileStreamsTest:"+e);}
}
}

実行時に読み取るファイルをコマンドラインで指定できるように修正せよ。上で修正したプログラムを存在しないファイル名で指定して実行し、ディスプレイにメッセージを表示させよ。
マジわかりません、教えてください

609 :デフォルトの名無しさん:05/01/24 06:19:52
フォームで、あるデータを送信するのと、
再読込みで同じデータが送信されてしまうのを
区別する方法ってありますか?

JSPでじゃんけんプログラムで困っています・・。

610 :デフォルトの名無しさん:05/01/24 06:35:44
>>608
どの部分がわからないのかが不明だから答えようが無い。

>>609
フォームにhiddenでフォーム表示時の時分秒+IPを埋め込む。
JSPのセッション管理で前回の時分秒+IPを保持しておき、
同じ値だったらリロードされたと判断できる。

611 :デフォルトの名無しさん:05/01/24 06:38:38
ゴメン。>>610の+IPは無くてもいい。
但しこの方法だと1秒に1回しか送信できない。
マイクロ秒まで埋め込むことができれば問題ないが。

hiddenで時分秒を埋め込むには、フォームをperlかPHPで表示するか、
JavaScriptのOnLoadかOnSubmitを使う。

612 :608:05/01/24 06:46:35
>>610 すいません、コマンドラインで指定するっていうのもイマイチわかりません。
修正ってどこ修正するのかもわかりません。

613 :デフォルトの名無しさん:05/01/24 06:47:51
>>612
そのレベルは質問以前の問題だから、入門サイトを隅から隅まで嫁。

614 :デフォルトの名無しさん:05/01/24 06:52:02
>>610
>>611
返事はやっ
ありがとうございます!!なるほどなぁ、やってみます。



615 :デフォルトの名無しさん:05/01/24 06:53:35
それだけじゃ可哀想だからヒントを。


コマンドラインから入力した文字を表示する
public static void main(String[] args) {
  System.out.print(srgs[0]);
}



616 :デフォルトの名無しさん:05/01/24 06:53:53
>>613わかりました。頑張ってみます

617 :585:05/01/24 09:58:31
>>605
ありがとうございます。教えていただいた静的メソッドでやってみるとこにします。

618 :SQRT ◆1udXdvAcZc :05/01/24 10:34:12
>>595
京○コ○ピ○ー○学○?

619 :デフォルトの名無しさん:05/01/24 11:19:06
質問させてください。

mysqlのdate型で0000-00-00という値をgetDateやgetStringで取り出そうとするとエラーがでてしまいます。
普通の日付だったらうまく取り出せるんですが…

何かいい方法はないでしょうか?よろしくお願いします。

620 :デフォルトの名無しさん:05/01/24 11:42:44
>>619
0月0日って有り得ないだろ。
データを見直せ。

621 :デフォルトの名無しさん:05/01/24 12:07:17
>>619
データを入力するときに日時を指定しなかったり、間違った日時を入力したとき、
デフォルトで0000-00-00という値が入るようになっているんですが、これは間違った使い方なのでしょうか?

mysqlのリファレンスでも0000-00-00という値が入ると書いてあるので問題ないと思っていました。
まだ初心者なので見当違いのことを言っていたらすみません。
できるだけ仕様を変えたくないのでうまく取り出す方法がありましたら教えてください。

622 :デフォルトの名無しさん:05/01/24 12:15:03
mysqlってDate型にNULL無いの?

623 :デフォルトの名無しさん:05/01/24 12:22:08
default値を変えませう

624 :デフォルトの名無しさん:05/01/24 12:55:35
>>621
入力が無いならまだしも、間違った日時が入力できるっていうのは駄目だろ。

それは置いといて、もしnullがないのなら日付が有効か無効かを示すための項目を一つ増やせ。
それで無効の時は日付に1990-01-01とかなんでもいいから入れとけ。


625 :デフォルトの名無しさん:05/01/24 15:03:14
Tomcat5.5.4を使ってJSPの勉強をしています。

自分で作ったclassファイルを使いたいのですが
どのように置けばよいでしょうか?

とりあえず
\WEB-INF\classes\aaa
の中に入っていて

package aaa;

とJSPの中で書いて呼び出していますが

The server encountered an internal error ()
that prevented it from fulfilling this request.

とエラーが出ます。

tomcatをインストールしたときに
一緒にサンプルも入れたのですが
そちらのWEB-INFにはweb.xmlというファイルが入っていました。

このxmlファイルで登録(?)とかしないと駄目なんでしょうか?


626 :デフォルトの名無しさん:05/01/24 15:31:14
>>625
JSPの書き方が間違ってるんじゃねーの?

627 :デフォルトの名無しさん:05/01/24 15:36:34
>>625
Tomcatではデフォルトパッケージ(パッケージ宣言無し)のクラスは
インポートされないので、クラスはパッケージ宣言付きで実装し、
/WEB-INF/classes/パッケージ名に配置するべし

628 :625:05/01/24 16:10:28
625です。ご返信ありがとうございました。
JSPの書き方を間違えていた模様です。恥ずかしき。

ただちょっと気になったのですが
staticで書いたメソッドは
インスタンスを作らなくても呼び出せる
と本にあったのですが

実際は
作らなかったらエラーで
作ったら正常に動作しました。

そういうものなんでしょうか?

629 :デフォルトの名無しさん:05/01/24 16:34:45
>>628
またJSPの書き方かメソッドの定義の仕方間違ってるんじゃねーの?

630 :デフォルトの名無しさん:05/01/24 16:53:54
きっとこんなところだろう。
package foo;
class Bar{
 public void buz(){}
 public static void hoge(){}
}

で、JSPでこう書いたと。
<jsp:useBean id="bar" class="foo.Bar" scope="request"/>
<% bar.buz(); %>
なら上手くいって

<% Bar.hoge(); %>
で怒られるとか。

631 :U ◆CZtFsGiu0c :05/01/24 16:54:50
>>609
POSTリクエストを処理した後、次画面をリダイレクトで表示すればいいのでは
ないですか?



632 :デフォルトの名無しさん:05/01/24 16:59:45
>>628
> そういうものなんでしょうか?
あなたのコードが間違っている可能性大。

633 :デフォルトの名無しさん:05/01/24 19:24:22
SocketChannelからreadしたByteBufferを
sjisに変換したいのですが、どうしたらよいのでしょうか?

634 :デフォルトの名無しさん:05/01/24 20:37:08
>>633
つ java.nio.CharSet, java.nio.CharSetDecoder


635 :デフォルトの名無しさん:05/01/24 21:25:56
thisでロックをかける書式がよくわからない。

class Lock{
public foo(){
synchronized(this){
hoge();
}
}
}

で複数スレッドが
Lock lock = new Lock();
lock.foo();
したときってlockインスタンス別なんだから期待したロックが
かからないんじゃーって思う。
馬鹿にもわかるように解説してくれる方はおりませぬか。.

636 :デフォルトの名無しさん:05/01/24 21:42:12
cronでJavaを実行させると出力が文字化けしてしまいます。
例) System.out.println("日本語を出力");

サーバーは、redhat9です。
sshから実行した場合は、問題ありません。

いろいろ調べてみたのですが、どうしても解決できません。
cronでの文字化けを解決するには、どのようにすればよいのでしょうか?

637 :デフォルトの名無しさん:05/01/24 22:13:26
Javaの勉強を再開した者です。

classが作られディレクトリにパッケージのホルダーを作って
いるのですが、それを使うソース(classと同じディレクトリ
に置いている)をコンパイルすると、

  パッケージ xxxxx は存在しません。
  import xxxxx.*;

sdk1.3のとき問題なくコンパイルできたのにj2sdk1.4.2_06
だとうまくいきません。
なぜでしょうか?

と、エラーになるのですが。


638 :デフォルトの名無しさん:05/01/24 22:15:15
>>637ですが、文を訂正します。

Javaの勉強を再開した者です。

classが作られディレクトリにパッケージのホルダーを作って
いるのですが、それを使うソース(classと同じディレクトリ
に置いている)をコンパイルすると、

  パッケージ xxxxx は存在しません。
  import xxxxx.*;

と、エラーになるのですが。
sdk1.3のとき問題なくコンパイルできたのにj2sdk1.4.2_06
だとうまくいきません。
なぜでしょうか?





639 :デフォルトの名無しさん:05/01/24 22:19:26
>>636
環境変数が設定されてないね。
cronから実行されるスクリプトに
echo $LANG > /var/log/cron.log
とか追記してから、cronに実行させて、
日本語に対応したロケールが設定されているか確認して。

640 :デフォルトの名無しさん:05/01/24 22:58:27
>>635
その例ではまったく意味ない。
複数スレッドで「一個」の Lock オブジェクトを使う場合に意味がある。

例えばこんな感じ。

final Lock lock = new Lock();
for (int i = 0; i < 10; i++) {
  new Thread() {
    public void run() {
      lock.foo();
    }
}.start();
}

641 :デフォルトの名無しさん:05/01/24 23:17:28
ダブルクリックで動くようにJARファイルにまとめようとしたら、
こんな表示がでてJARになりません。JARになっても中身がからっぽです。

c:\MyApplet>jar cvfm Sentou.class Mikata.class Teki.class WinLose.class
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:355)
at java.util.jar.Manifest.read(Manifest.java:162)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:124)
at sun.tools.jar.Main.main(Main.java:904)

どうしたらいいのですか?

642 :デフォルトの名無しさん:05/01/24 23:19:58
>>641
> jar
と打って出てくる文章を読め。

643 :デフォルトの名無しさん:05/01/24 23:19:59
try{
 System.out.println(java.net.InetAddress.getLocalHost());
}catch(UnknownHostException ex){
 //ここでは何をするべきなんでしょうか。
 //というかどんな場合にここに来るんでしょうか。
}

644 :デフォルトの名無しさん:05/01/24 23:40:20
>>643
ttp://www.geocities.co.jp/SiliconValley/6064/java_link.html

645 :デフォルトの名無しさん:05/01/24 23:49:44
私の知人の公立中学校教師がこの前結婚したんだが結婚祝いに
組合(いわゆる日教組)から30万円も貰ったんだと嬉しそうに言っていた。
組合のおかげで1年間病気で休んでも給料は普通に出るそうだ。
日教組が反日教育を行っており日本の子供たちにどんどん悪影響を及ぼしているにも関わらず、
日本の馬鹿教師達は、日本の将来を背負ってたつ希望に満ちた学生たちに対して
毎日のように反日教育を繰り返しているのである。
「学生にオススメの新聞は朝日新聞だよ」などと学生たちに吹き込みながら。
日本の教育は今後どうなっていくのだろうか

646 :デフォルトの名無しさん:05/01/24 23:57:46
>>642
JARファイルは作成できました!
が、ダブルクリックでは何も起こりません。どうしたらダブルクリックで起動するようにできますか?

647 :デフォルトの名無しさん:05/01/25 00:04:50
大学が入試問題に朝日の記事を使うのを止めさせなきゃいかんな

648 :636:05/01/25 00:43:22
>>639
ありがとうございます。

スクリプトの先頭に、
export LANG=ja_JP.ujis
を記述することで、解決しました。

649 :デフォルトの名無しさん:05/01/25 00:48:42
>>606
一応書いておくけど、単なるプロパティ(Getter/Setter)にデフォルトでそういう機能はないけど、
JavaBeans仕様の一部としては、バウンドプロパティというのがある。プロパティの値が変更さ
れると、PropertyChangeListerとして登録されてるリスナにPropertyChangeEventを送るという
仕様がある。

むろんBean作成者が自前で実装するわけだが、さすがにそんなもん実装してられないので、
PropertyChangeSupportというクラスに移譲すれば良きに計らってくれる。
addPropertyChangeListenerもfirePropertyChnageも全部こいつに移譲で幸せになれる。

650 :635:05/01/25 00:50:27
>>640
うぉーサンクス!納得しますた。
java言語仕様にスレッド関連の項目いっぱいあるけど、
そこらへんについて書いてあるところが上手く探せなかった。
本当ありがとう。

651 :デフォルトの名無しさん:05/01/25 01:28:04
>>635
LockインターフェースなるものがJ2SE5にあるので
紛らわしい名前は控えたほうがいいかと

ちなみにこうやって書く

lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock()
}

クリティカルセクションとかやってた人にとってはこっちがわかりやすいかな?
パフォーマンスもsynchronizedよりかなり高い

652 :デフォルトの名無しさん:05/01/25 04:20:21
あいかわらずの厨の溜まり場

653 :デフォルトの名無しさん:05/01/25 04:39:48
はい、もちろん手前も厨です。質問いきます。恐縮です。

何故子クラスが親クラスのインポート受け継がないんです?
ご支援ご鞭撻の程宜しくお願い申し上げます。
願わくば、自分のキャパが狭いので簡潔に教えてください。


654 :デフォルトの名無しさん:05/01/25 04:44:06
インポートも受け継いだら・・・どうなる?

655 :デフォルトの名無しさん:05/01/25 07:13:07
finally文って使う時ありますか?なくてもcatchのあとにかけばよいような・・

656 :質問です:05/01/25 08:42:40
今、Java1.4でゲームを作っています。
それでUSB接続のゲームパッドを使いたいのですが、ボタン入力を
KeyListenerで取れるかなーと思っていたら、取れませんでした。
Σ(>д<;)ショーック!

[Java ゲームパッド]で物知りなGoogleさんに聞いみたのですが、
分かりやすい答えが返ってきませんでした。
ΣΣ(>д<;)ダブルショーック!

ゲームパッドの入力を取るにはどうしたら良いのでしょうか?
m(>_<;)m ム板の皆さん、教えてください!!!


657 :656:05/01/25 08:46:36
>>655 私はこういうときに使うよ。

Connection conn = null;
try {
  conn = myDatabase.getConnection();
  // 例外が投げられるかもしれない処理…
} catch (Exception e) {
  return result;
} finally {
  if ( conn != null ) conn.close();
}

// 続きの処理…

658 :デフォルトの名無しさん:05/01/25 08:52:12
>>655
士郎よ、お前は何もわかっておらん!
finallyはtry、catchの中でreturn、throwしてても必ず通る。
catchの後に書いた文などとは格が違うのだ!

659 :656:05/01/25 09:20:28
>>655
えーとね、>>657を実行して例外が投げられるとね、あたかも

Connection conn = null;
conn = myDatabase.getConnection();
// 例外が投げられるかもしれない処理…
if ( conn != null ) conn.close();
return result;

って書いたように実行されるんだよ。でね、例外が投げられないときには、あたかも

Connection conn = null;
conn = myDatabase.getConnection();
// 例外が投げられるかもしれない処理…
if ( conn != null ) conn.close();
// 続きの処理…

って書いたように実行されるの。
必ずやらなきゃいけない後始末の処理を finallyブロック に書くと、
すっごく便利だよね!(>_<)b


660 :デフォルトの名無しさん:05/01/25 09:28:20
すみません、原理がさっぱりわからないので質問させてください。
ヒントだけでもお教えいただければ幸いです。

アプレットでするプログラムをアプリケーションで実行させようと試み、以下のように変更いたしました。

import java.applet.Applet;

↑を削除

public class Image2 extends Applet implements Runnable {

↑をpublic class Image4に変更

上記のように変更したところ、エラーがたくさん出てきました。
もしかしてアプレットで使えてもアプリケーションでは使用できないような記述があるのでは、と考えましたがさっぱりわかりません。
よろしければご教授願います。

661 :660:05/01/25 09:29:57
記述の間違いがありましたので訂正します。

public class Image2 extends Applet implements Runnable {

ではなく、

public class Image4 extends Applet implements Runnable {

です。



662 :デフォルトの名無しさん:05/01/25 09:51:58
>>660
まずextends Appletという時点で違うだろ

663 :660:05/01/25 10:00:11
>>662
そのプログラムはサイトから参照したものなので、よくわからないまま使ってました・・・
アプリケーションで実行するためにはどうしたらいいでしょうか?

664 :デフォルトの名無しさん:05/01/25 10:33:28
>>663
ttp://www.hellohiro.com/swing.htm
ここでも見て初めから勉強し直せ


665 :デフォルトの名無しさん:05/01/25 11:28:13
>>660
public static void main(String[] args) {
Image2 apl = new Image2();
apl.init();
JFrame frm = new JFrame();
frm.getContentPane().add(apl);
frm.setSize(600, 480);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}

このコードをアプレットクラスImage2内に含めればOK。
で、普通に実行する。

666 :デフォルトの名無しさん:05/01/25 11:37:22
((String)null).length();

667 :660:05/01/25 11:54:22
>>664
ありがとうございます。
参考にさせていただきます。

>>665
含めてみましたが、その文にもエラーが出てしまいました・・・
使用ソフトはeclipse3.0です

668 :デフォルトの名無しさん:05/01/25 11:56:16
>>667 エラー貼ったら?


669 :デフォルトの名無しさん:05/01/25 12:02:28
どこで聞いて良いか分からないので、ここに書いちゃう。
Mavenをプロジェクトで使ってる人って居る?
何か既存のプロジェクトにMavenを使おうとしたんだけど
難しくて良く分からん・・・。

670 :デフォルトの名無しさん:05/01/25 12:05:21
>>669
いる

671 :660:05/01/25 12:58:47
>>668
Syntax error on tokens, InterfaceHeader expected instead
Syntax error on token "init", Identifier expected after this token
Syntax error on token "getContentPane", Identifier expected after this token

このようなエラーが出てきます。

672 :デフォルトの名無しさん:05/01/25 13:31:04
>>670
おおっ、すげぇ。
どうやって使い方マスターしたんですか?やっぱapacheのサイトを熟読?
もし参考サイトとかあったら教えてくれぃ。

673 :655:05/01/25 14:12:35
>>656
>>658
ありがと!

catchの中でプログラムが終了して困る場合に有効なわけですね。
finallyは敗戦処理野郎と。

んでもcatchの中って、
catch (Exception ex) { ex.printStackTrace ();}
とか、
catch (SQLException ex) {
System.err.println("SQL State : "+ ex.getSQLState());
System.err.println("ErrorCode : "+ ex.getErrorCode());
}
ぐらいしか今の所書いたことないなくて・・
あんまりありがたみが・・。

674 :デフォルトの名無しさん:05/01/25 14:49:48
>>673
例えばtry〜catchの間でDBに対する何らかの処理を行っていて、その処理が
正常終了出来ずにExceptionが発生した場合でも、finallyにDB接続のクローズ処理を
書いておけば、間違いなくクローズされるようになる。

多分こんな感じ。

675 :デフォルトの名無しさん:05/01/25 16:59:13
finallyはなんらかのIOがあるアプリでは必須だよ

676 :sasa:05/01/25 17:21:57
Jビルダーを使っているのですが、Jpanelに画像を貼るにはどうしたらよいのですか
?教えてください。

677 :デフォルトの名無しさん:05/01/25 17:27:06
>>674
すいません。言われるとおりDB接続の例外、finally、クローズ処理を
描いてみたのですが・・・

Connection con = ds.getConnection();
try {
  Statement st = con.createStatement(・・・
} catch (Exception ex) {
} finally {
  try {
    con.close();
  } catch (Exception ex2) {
    try {
      con.close();
    } catch (Exception ex3) {
      (ここにさらに入れ子になる・・・)
    }
  }
}
って無限入れ子ループに陥ってしまいました。どうすれば完全確実に
Connectionをクローズできるのでしょうか?

678 :sasa:05/01/25 17:28:02
Jビルダーを使っているのですが、Jpanelに画像を貼るにはどうしたらよいのですか
?教えてください。

679 :デフォルトの名無しさん:05/01/25 17:29:47
>>678
JPanelをボーダーレイアウトにして、JLabelを配置する。JLabelに画像をセットする。

680 :デフォルトの名無しさん:05/01/25 17:40:08
JPanelに描画したいのなら普通にpaintComponentでもいいけどな


681 :デフォルトの名無しさん:05/01/25 17:52:44
>>677
おまいはアホか。
一旦クローズで失敗したら、あきらめろ。
例外をログにでも吐いて抜け出せ。

682 :sasa:05/01/25 17:58:03
ありがとうございます!JLabelのどこに画像をセットすればよいのですか?
何度もすいません。

683 :sasa:05/01/25 18:14:26
ありがとうございます!JLabelのどこに画像をセットすればよいのですか?
何度もすいません。

684 :sasa:05/01/25 18:23:37
課題の締め切りが迫ってますのでお願いします。
Jlabelのどこに画像をセットすればよいのですか?
ほんとにすいません。

685 :初心者 ◆Java/isQ.c :05/01/25 18:34:13
>>646
|д・)つ ttp://www5b.biglobe.ne.jp/~masai/java/jgui02.htm

686 :デフォルトの名無しさん:05/01/25 19:44:50
宿題なら宿題すれへ
APIマニュアルくらい読んだのかなぁ・・・・

687 :デフォルトの名無しさん:05/01/25 19:45:29
ぬるぽ

688 :デフォルトの名無しさん:05/01/25 19:49:57
静的メンバを格納したユーティリティクラスがあるのですが、
このクラスを継承したクラスから、先の静的メンバにアクセスするのは良くないのでしょうか。
Eclipseに怒られるのですが。

689 :デフォルトの名無しさん:05/01/25 20:01:08
privateにでもなってるんじゃねーの

690 :688:05/01/25 20:17:23
すいません、書き方が悪かったです。
Aクラスがpublic staticなメソッドaを持っていて、BはAを継承するとき、
B.aにアクセスしています。
これが警告を受けるんです。

691 :デフォルトの名無しさん:05/01/25 20:32:50
>>690
継承では、staticなメンバは引き継がれない。

692 :デフォルトの名無しさん:05/01/25 20:38:26
質問者じゃないけど、
こんなのはできるで、
class tesuto333{
public static final int v = 99;
tesuto333(){
}}

class tesuto3333 extends tesuto333{
public static void main(String args[]){
System.out.println(new tesuto3333().v);
}
tesuto3333(){
}}

693 :デフォルトの名無しさん:05/01/25 21:00:03
>>690
継承する時にアクセスなんてできるわけないだろう。
エラーの読み間違いじゃない?

694 :デフォルトの名無しさん:05/01/25 21:18:58
>>691
馬鹿
氏ね

>>690
作法の一つだと思ってくれ。
コンパイル時のオプションがデフォルトだと注意される。
オプションで警告でないように出来るよ

695 :デフォルトの名無しさん:05/01/25 21:43:23
継承ではstaticメンバは引き継がれないというのは正しいぞ。
そもそもstaticはクラスに属しているものだから。

名前が同じstaticフィールドをそれぞれ変更してみればわかる

696 :デフォルトの名無しさん:05/01/25 21:45:37
Date と Calender クラスが死ぬほど使いづらいような気がするんですが
こんなもんでしょうか。設計失敗してんじゃねぇか?って思う。

697 :デフォルトの名無しさん:05/01/25 21:49:41
日付関連は設計が悪すぎるね。
日付処理(計算)関係のクラスも少ないし

698 :デフォルトの名無しさん:05/01/25 22:09:47
>>685
>なんだか拡張子が[.jar]っていうのが実行に戸惑ってしまいそうなので、
>拡張子を[.exe]にファイル名を変えてみたりコンパイルの際に出来る
>ファイル名の指定を「guisample.exe」にしてみたりしたのですが、
>有効なwin32アプリケーションではないらしくて実行できませんでした。

ワラタ

699 :デフォルトの名無しさん:05/01/25 22:19:31
694みたいなのがいるから
staticフィールドが継承されると勘違いする奴が増えるんだ

700 :sasa:05/01/25 22:21:37
いろいろ調べたのですが、JPanelに画像を張るやり方がわかりません。
どうか助けてください。

701 :デフォルトの名無しさん:05/01/25 22:34:15
>>700
あせってるのは分かるがいい加減ウザイよ。

702 :デフォルトの名無しさん:05/01/25 22:34:37
ウザイ

703 :デフォルトの名無しさん:05/01/25 22:38:52
>>700
ttp://www.javadrive.jp/tutorial/jlabel/index3.html

704 :デフォルトの名無しさん:05/01/25 22:51:47
オブジェクト指向らしいソースの書き方ってどんな感じですか?

705 :DNS未登録さん:05/01/25 22:56:21
JSPは板違いですか?


706 :デフォルトの名無しさん:05/01/25 23:19:40
 A is 14.1421 B is -2.4362 C is 3.1415
という文字列の、アルファベットとスペースを消し、
数値間に「,」(カンマ)を入れた

 14.1421,-2.4362,3.1415

という文字列の作り方が分かりません。
見当として、replaceとdeleteの使用を試みましたが
上手くいきませんでした。

 アドバイス願います。


707 :デフォルトの名無しさん:05/01/25 23:21:56
複数のスレッドから同時にstaticなメソッドを呼び出すとき
staticメソッドにsynchronized修飾子をつけなければいけない時ってどういうときなんでしょう?

今までメモリ上の同じ場所にアクセスしているから、
スレッドを使うときはsynchronizedにしないといけないのかと思ってましたが、
CoreのMathクラスとか、Jakarta Commons Lang の StringUtilクラスとかは
synchronized指定をしてないですよね。
staticメソッドから他の共有するもの(たとえばファイルとか)がある場合のみ
synchronizedにすればいいのか、
いまいち、どういったときにsynchronizedをつければよいのかがわかりません。
法則みたいなのがあれば教えていただけませんか?

708 :デフォルトの名無しさん :05/01/25 23:26:06
TOMCATのインストールがうまくいきませn
OSはXPSP2 VERは4.127
C直下にstrというフォルダを作ってそこに入れました。そしてserver.xmlに
<!-- School Lesson Context -->
<Context path="/str" docBase="C:\str"
crossContext="true" debug="0" reloadable="true">
</Context>

に編集しました。

そしたら
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: com/sun/tools/javac/Main (Unsupported major.minor version 49.0)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
at javax.servlet.http.HttpServlet.service(HttpServlet.java以下略

というエラーが出ました。どうしてでしょうか?アドバイスお願いします



709 :デフォルトの名無しさん:05/01/25 23:30:48
>>707
>staticメソッドから他の共有するもの(たとえばファイルとか)がある場合のみ
>synchronizedにすればいいのか、

そのとおり。

710 :デフォルトの名無しさん:05/01/25 23:33:31
>>707
同じ場所にアクセスしてる場合でも、
- そこに格納されてる値を読む
- その値から何か新しい値を計算する。
- 新しい値を書き込む
って一連の操作をアトミックにする必要がなければ、synchronizedはいらないよ。

単純な例をあげると、どのスレッドも読むだけの場合はsynchronizedはいらない。
あと、synchronizedにしなきゃいけない場合でも、あんまりstaticメソッドにはつけないなあ。
staticメソッドにsynchronizedつけると、そのクラスオブジェクトがロックされちゃうから色々不便なこともある。

711 :デフォルトの名無しさん:05/01/25 23:38:51
>>706
String s = "A is 14.1421 B is -2.4362 C is 3.1415";
String 答え = s.replaceAll("[^1-9.]+", ",");

712 :デフォルトの名無しさん:05/01/25 23:47:22
>>710
マルチスレッドの場合読むだけでもsynchronized必要なんだが・・・


713 :688:05/01/25 23:47:49
お答え頂き、ありがとうございます。
staticメソッドは継承出来ないんですね。
ということはコンパイラが吸収しているわけだから、
逆コンパイルするとクラス名が変わっているのかな?

714 :710:05/01/25 23:53:16
>>712
ん?なんで?
どういう状況で必要?

715 :デフォルトの名無しさん:05/01/25 23:53:16
>>712
スレッドによるローカルコピーの問題は値を読むだけなら発生しないんじゃないの?

716 :710:05/01/25 23:53:51
ああ、volatileの話がしたいの?

717 :デフォルトの名無しさん:05/01/25 23:54:15
>>712
どんな場合に?

718 :デフォルトの名無しさん:05/01/25 23:54:29
他のスレッドが書き換えた場合

719 :デフォルトの名無しさん:05/01/25 23:55:14
それは「読むだけ」の条件に反してるだろ。。

720 :デフォルトの名無しさん:05/01/25 23:56:30
>>707
> スレッドを使うときはsynchronizedにしないといけないのかと思ってましたが、
> CoreのMathクラスとか、Jakarta Commons Lang の StringUtilクラスとかは

ローカル変数しか使っていないメソッドも synchronized 不要。

721 :poponach:05/01/25 23:59:56
プロとして働く為に趣味で勉強を続けている  J a v a
ある程度の基本はマスターしたのですが、

趣味 〜→ プ ロ( グ ラ マ ) へのシフトに苦労しています。

どうすれば、開発現場で使えるという風に見なされるので
しょうか?Eclips3で勉強中です。

722 :デフォルトの名無しさん:05/01/26 00:01:19
>>721
まずはeclipseなしである程度書けるようになれ。

723 :デフォルトの名無しさん:05/01/26 00:02:09
EJB覚えろ ハッタリでいい

724 :デフォルトの名無しさん:05/01/26 00:09:27
>>721
変なクセをなくして誰が見ても無難と思えるコーディングできるようにしる
趣味で勉強してるヤシはやたらと独自なコード書いちゃったり、
既存コードを改変しちゃったり、で迷惑なときがある

725 :デフォルトの名無しさん:05/01/26 00:09:41
EJBなんて無駄に重くて使う価値ないよ。

・・ていうハッタリはダメ?

726 :デフォルトの名無しさん:05/01/26 00:17:55
>>721
ぶっちゃけ無理っす。実務経験がなければ何を知ってても開発現場
で使えるという風には見なされません。
今の現場は1に実務経験、2に新卒、3〜4がなくて、5に職歴だから
何が使えればどうなるってもんじゃない。
学生ならとにかくがむしゃらに入社する事だけを考える。
既に社会人なら派遣に登録してみる。今時は実務経験がないと派遣
でも仕事が取れないと聞いてるけど、取れたらめっけもんのつもりで
とにかくどんな形であれ実務経験を手に入れるのが大切。

727 :715:05/01/26 00:29:04
>>716 寝ぼけ半分で書いたのだがよくvolatileのことわかったな(w

728 :706:05/01/26 00:35:08
文字列の変換の質問
 A is 14.1421 B is -2.4362 C is 3.1415 → 14.1421,-2.4362,3.1415

で、>>711さんから s.replaceAll("[^1-9.]+", ","); を使うアドバイスを
頂きましたが、JDKが1.3なのでこのメソッドは使えません。

他の仕事の関係上バージョンアップができないので、別の方法を教えて下さい。


729 :710:05/01/26 00:41:44
>>727
一応Cでマルチスレッドプログラミングはバリバリしてましたから。
Javaだとsynchronizedが(Cで言うところの)volatileも兼ねてるんだよね。

最初、何故Javaだと、synchornizedでアクセスしてる変数にvolatileが付いてなくて
大丈夫なのか、すごく悩んだ記憶がある。

730 :デフォルトの名無しさん:05/01/26 00:55:09
>>728
だったら真面目にパーズすればいいでないの?
あるいは、↓みたいにjava.util.StringTokenizerでがんばるとかw

stk = new StringTokenizer("A is 14.1421 B is -2.4362 C is 3.1415",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ");
StringBuffer sb = new StringBuffer();
while (true) {
if (stk.hasMoreTokens()) {
sb.append(stk.nextToken());
if (stk.hasMoreTokens()) {
sb.append(',');
} else {
break;
}
}
System.out.pritln(sb);

731 :デフォルトの名無しさん:05/01/26 01:11:45
>>726
ところで、実務経験と職歴って何が違うの?

732 :デフォルトの名無しさん:05/01/26 01:58:50
>731
職歴は捏造し、実務経験は水増しするもの。
ってのは笑えない冗談として、
職歴……役割で見た履歴。PGやってたとかPMやってたとか
実務経験……具体的な技術、言語の経験履歴。Struts使ったことありまつとかiアプリ作りますたとか

733 :デフォルトの名無しさん:05/01/26 03:02:04
「あの本とこの本を読みました。
eclips でペイントプログラム作ったことがあります。
実務経験はありません。」 <- 実社会じゃ汚物以下

734 :デフォルトの名無しさん:05/01/26 03:22:46
eclipseすら綴れない奴も相当無能だと思う

735 :706:05/01/26 03:39:09
文字列の変換の質問の件

>>711さん,730さん、有難うございました。


736 :デフォルトの名無しさん:05/01/26 04:58:52
>>734
>>721

737 :デフォルトの名無しさん:05/01/26 07:32:59
>>728
半角スペースでスプリットして配列に入れて、英字はスキップして数値だけ連結する。

738 :デフォルトの名無しさん:05/01/26 07:35:18
>>728

>>737に補足。スプリットはindexOfとsubstringでできる。

739 :デフォルトの名無しさん:05/01/26 08:16:36
String str = "A is 14.1421 B is -2.4362 C is 3.1415";

String s = str;
char x = '!';
while(x <= '~') {
s = s.replace(x, ' ');
x++;
if(x == '+') x = ':';
}
String y = "";
String z = "";
int i = 0;
while(i < s.length()) {
if(s.substring(i,i+1).compareTo(" ") != 0) {
z += s.substring(i,i+1);
y = ",";
}
else {
z += y;
y = "";
}
i++;
}

System.out.println(str);
System.out.println(z);

740 :デフォルトの名無しさん:05/01/26 08:32:36
あれ?オレなんでfor使わないでwhileで書いたんだろ?

741 :デフォルトの名無しさん:05/01/26 10:19:24
ITドカタ
昔はコボラー
今はJava厨

742 :デフォルトの名無しさん:05/01/26 11:15:30
今iアプリプログラミングをやっていて
String s = "...some string...";
char[] chars = new char[s.length()];
s.getChars(0, s.length(), chars, 0);
このやり方でStringの文字をChar配列に変換したのですが、日本語で実行
するとjava.lang.ArrayIndexOutOFBoundsExceptionてゆうエラーがでてうまく行きません、
このやり方では、日本語は使えないのでしょうか?


743 :デフォルトの名無しさん:05/01/26 11:37:28
toCharArray()を使いませう。

744 :デフォルトの名無しさん:05/01/26 11:37:50
何故素直に
String str = "ぬるぽ";
char[] arrayChar = str.toCharArray();
こうしない

745 :デフォルトの名無しさん:05/01/26 17:02:33
sun java studio creatorについての質問はどこですればいいですか?

746 :名無し ◆774/GPwwww :05/01/26 17:11:09
>>745
|д・)つ ttp://suned.sun.co.jp/

747 :初心者 ◆Java/isQ.c :05/01/26 17:13:53
>>745
|д・)つ ttp://sdc.sun.co.jp/jive3/forum.jspa?forumID=1

748 :デフォルトの名無しさん:05/01/26 18:03:14
>>774
"ガッ".toCharArray();

749 :デフォルトの名無しさん:05/01/26 18:30:52
つい最近まで、クラス(static)フィールドに複雑な初期化を施すのに
いちいち初期化用のクラスメソッドを書いて
アプリケーション起動時に呼び出していたのですが、
最近、static ファクトリー なる存在を知りました。
Java 5.0 のドキュメントには EnumMap の初期化に使われていましたが、
他のクラスフィールドにも応用でき、大変便利です。

これって java のいつのバージョンから入っていたものなのですか?

750 :デフォルトの名無しさん:05/01/26 18:41:29
1.1で書けた様な気が駿河

751 :デフォルトの名無しさん:05/01/26 18:57:21
>>750
御返答ありがとうごさいます。
こんなに基本的で便利なことを
手持ちの入門書4冊には書いてありませんでした。


752 :デフォルトの名無しさん:05/01/26 19:11:19
テキスト処理の質問です。例えば、
1: IEブラウザ破壊スクリプト (20) 
2: VB.NET質問スレ (Part9) (117) 
3: 【初心者】Java質問・相談スレッド60【大歓迎】 (751) 
4: すれ立てるまでもない質問はここで 第64刷 (92) 

という、行先頭にスペース&行末で改行の文章があったとき、これを1行に詰めて
1: IEブラウザ破壊スクリプト (20)  2: VB.NET質問スレ (Part9) (117)  3: 【初心者】・・・

の形にする方法を教えて下さい。JDKのバージョンは1.3です。


753 :752:05/01/26 19:14:01
上の質問を書いた者です。

表示上スペースが消えていますが、対象テキストではスペースが入っています。


754 :デフォルトの名無しさん:05/01/26 19:34:11
JPanelの上に載せたJLabel(複数)をTABでフォーカス移動して
回るにはどうすればよいでしょうか?


755 :デフォルトの名無しさん:05/01/26 19:37:56
static ファクトリーってなんですか?
解説ページ見つけれないorz

756 :名無し ◆774/GPwwww :05/01/26 19:42:24
>>755
|д・)つ ttp://hamasyou.com/archives/Programming/javaeffectiveiessoaeeanoca.php

757 :755:05/01/26 19:53:01
>>756
名前が自由につけられるコンストラクタ?
良さげな本なんで買おうかな。

758 :デフォルトの名無しさん:05/01/26 20:00:07
静的初期化子の話じゃなかったの?

759 :デフォルトの名無しさん:05/01/26 20:01:25
s/子/ブロック/

760 :デフォルトの名無しさん:05/01/26 20:25:46
String str = "test1";
の「1」を切り出して、int型にする方法を教えてください。

761 :名無し ◆774/GPwwww :05/01/26 20:45:58
>>760
|д・)つ int i = (new Integer(str.substring(str.indexOf("1"),str.indexOf("1")+1))).intValue();

762 :デフォルトの名無しさん:05/01/26 20:57:34
|д・)つ Javaダメポ

763 :デフォルトの名無しさん:05/01/26 21:00:45
オブジェクトをC言語とかのsizeof()するにはどうしたらよいでしょうか?

764 :デフォルトの名無しさん:05/01/26 21:17:01
>>761
ヒントになりました。
ありがとうございました。

765 :デフォルトの名無しさん:05/01/26 21:21:17
volatile つけたら syncronized って無駄?

766 :デフォルトの名無しさん:05/01/26 21:36:29
そもそも volatile はちゃんと実装されてない可能性があるから
使わない方がいいとか言う話を聞いた事があるよ。

767 :デフォルトの名無しさん:05/01/26 22:05:24
>>766ってマジですか?
聞いたことないけど

768 :656:05/01/26 22:44:49
ちょっと!早く答えなさいよ!(=_=#)

769 :デフォルトの名無しさん:05/01/26 22:44:59
古い情報だから今どうなのかは知らんが
http://www-6.ibm.com/jp/developerworks/java/020726/j_j-dcl.html
「volatileを使ってみますか?」のところに
>多くのJVMでは、順序の一貫性について、volatile が正しく実装されません。
と書いてあって、以下それについて実験してる。

770 :デフォルトの名無しさん:05/01/26 22:45:54
同期ってなんですか?
クラスの説明とか見てると時々でてくるのですが。教えていてでけますか?

771 :デフォルトの名無しさん:05/01/27 00:30:47
volatileとsynchronizedって全然違うもんだと思うけど。

772 :デフォルトの名無しさん:05/01/27 00:34:56
メモリ同期の話だろが

773 :デフォルトの名無しさん:05/01/27 00:37:33
>>766
うそつき

Cなら確かに実装の違いがあるが

774 :デフォルトの名無しさん:05/01/27 00:51:21
volatileしてもsynchronizedと同じことする実装は存在するらしい。

775 :デフォルトの名無しさん:05/01/27 01:04:39
>>773
>>769 の話なんだけど。
何かずれてた?

776 :デフォルトの名無しさん:05/01/27 01:06:33
>>775
一番大事な「順序の一貫性」って部分とるなよ
同期化についてはどちらもおなじ

777 :デフォルトの名無しさん:05/01/27 01:51:08
volatileって順序の一貫性まで保証してたんだ。
知らなんだ。
Cのvolatileってそこまで保証してたっけ?
でも、gccでvolatile asmとか書くと保証してくれたがw

778 :デフォルトの名無しさん:05/01/27 02:08:37
JavaってVMの実装に違いありすぎ(´∇`)


779 :デフォルトの名無しさん:05/01/27 02:28:57
>>757
名前が自由につけられるコンストラクタというのを
コードで教えてくれませぬか。
static{
...
}
って名前ないよなぁ。

780 :デフォルトの名無しさん:05/01/27 02:37:59
javaではないんだけどさ、カキコするとコードの空白が
飛んじゃうやつ。どっかに便利な整形CGIない?

781 :デフォルトの名無しさん:05/01/27 02:40:42
タブコードをスペースに置き換えるなんざ、大抵のIDEには備わってるだろ

782 :デフォルトの名無しさん:05/01/27 02:52:09
>>779
757で言ってるのは静的初期化ブロックの話ではないよ。

例えばHogeクラスの場合。

Hoge()、Hoge(int)、Hoge(String)、、、
コンストラクタは引数をいろいろ変えてオーバロードしても名前はHogeしかない。
しかも同じ引数の並びで別のコンストラクタは当然定義できない。

でもHogeインスタンスを返すstaticメソッドだったら名前は自由に付けられる。
static Hoge hoge()、static Hoge hogeInt(int)、static Hoge hogeString(String)、、、
名前が自由につけられるから同じ引数の並びであっても問題ない。
static Hoge hogeInt1(int)、static Hoge hogeInt2(int)、、、

たいていはコンストラクタではフィールドの設定くらいしかしないけど
複雑な初期化がしたい、あるいはいろいろな方法で初期化したいという場合は役に立つ。

783 :757:05/01/27 03:46:18
>>782
( ・∀・)つ〃∩ ヘェーヘェーヘェー
APIドキュメントにあったコードはそういう意味だったんですね。納得。

784 :デフォルトの名無しさん:05/01/27 04:28:46
>>752
それなら>>739をちょっと改造すればできる。

785 :752:05/01/27 04:32:59
テキスト処理の再質問です。
 1: IEブラウザ破壊スクリプト (20) 
 2: VB.NET質問スレ (Part9) (117) 
 3: 【初心者】Java質問・相談スレッド60【大歓迎】 (751) 
 4: すれ立てるまでもない質問はここで 第64刷 (92) 

という、行先頭にスペース&行末で改行の文章があったとき、これを1行にまとめて
1: IEブラウザ破壊スクリプト (20)  2: VB.NET質問スレ (Part9) (117)  3: 【初心者】・・・

の形にする方法を教えて下さい。JDKのバージョンは、1.3 → 1.4に上げました。


786 :706:05/01/27 04:37:09
>>737,738,739,740 さん有難うございます。


787 :デフォルトの名無しさん:05/01/27 04:51:05
>>785
普通に改行コードをスペースか空文字に置換するんじゃだめなのか?

788 :デフォルトの名無しさん:05/01/27 05:15:27
>>787
オレもオモタ
文字列Aから一文字ずつ文字列Bへコピーしていって、
その際改行コードが見つかったら代わりに空白文字をコピーすればいいんじゃね?

789 :752&785:05/01/27 05:58:19
>>787,788さん、どうも。

目的のテキストをSample.txtとして
File txt = new File("Sample.txt");
BufferedReader br = new BufferedReader(new FileReader(txt));
br = br.replace('\n' , ' ');
System.out.println("文 = " + br );

と、replace()を使って試してみましたが、下記のエラーが出ました

Trim3_1.java:17: シンボルを解釈処理できません。
シンボル: メソッド replace (char,char)
位置 : java.io.BufferedReader の クラス
br = br.replace('\n' , ' ');
  ^
※ioはimportしています


790 :デフォルトの名無しさん:05/01/27 06:01:31
>>789
落ち着け
BufferedReaderにreplaceなんてメソッドないぞ

791 :デフォルトの名無しさん:05/01/27 06:05:06
>>790
Stringクラスにはreplace(char, char)メソッドは存在するけど、BufferedReaderクラスには存在しないよ
replaceメソッドを使いたいならプログラムを変えるしかないよ

792 :789:05/01/27 06:37:50
>>790,791

File txt = new File("Sample.txt");
BufferedReader br = new BufferedReader(new FileReader(txt));
String st = br.toString();

st = st.replace('\n' , ' ');
StringBuffer sb = new StringBuffer(st);

System.out.println("文 = " + sb );

と、toString()でString型に変換したところ、コンパイルは成功しましたが

 文 = java.io.BufferedReader@42719c

と表示されました。アドバイスを願います。


793 :デフォルトの名無しさん:05/01/27 07:05:43
>>792
toStringメソッドの使い方間違ってるょ
java.io.BufferedReader@42719c はオブジェクトbrのJVM上のメモリアドレスが文字列で表示されてるだけ
って、まぁここら辺はいいとして、
BufferedReaderオブジェクトからStringオブジェクトへの変換は、readLine()かread()メソッドを使うよろし

// readLine()の場合
String st;
String copy;
while((st = br.readLine()) != null) {
  copy += br.readLine(); // これOKなのかちょっと不安、少なくともパフォーマンスは悪い
}

// read()メソッドを使う場合
StringBuffere sb = new StringBuffere();
while(br.read() != -1) {
 sb.append(br.read());
}
String st = sb.toString();  // このtoString()はOK.なぜならStringBuffereクラスはの内部は文字列表現だから

※BufferedReaderクラスはバイトであり、文字列表現ではない。
このように内部が文字列表現でないクラスの場合、そのオブジェクトが配置されているJVM上のメモリアドレスが示される

794 :デフォルトの名無しさん:05/01/27 10:45:02
JAVAに限らないアルゴリズムの問題になるかもしれないんだけど、
例えばApplet等で大戦略のようなユニット型シミュレーションを作るとしたら、
ユニットのアニメーションは

1.一つのスレッドですべてのハンドルを登録して管理する方法を執る
2.ユニットのクラスごとにスレッドを走らせてアニメーションする

どちらが良いかね。
俺は前者で行こうと思ってるんだけど、後者はアニメーションの速度を柔軟に
調節できたりする面もあるし、判断に迷ってて。
助言よろ。

795 :デフォルトの名無しさん:05/01/27 11:44:19
設計のしやすさなら 2 を
チューンアップするなら 1 を

びっくりするほどのパフォーマンスが出てるときに、
開発者に仕組みを尋ねるとたいてい 1。
そこに独自のノウハウを突っ込んであるケースが多い。

でもね、俺は 2 を勧めるよ。
1 は同業他社に差を付ける為のプロ仕事だと思う。

796 :デフォルトの名無しさん:05/01/27 11:49:19
てか2なんて使うバカは、現実より脳内自己満足を優先する、ソースヲタだけ。ソレガJavaジャン テノハナシネ

797 :デフォルトの名無しさん:05/01/27 11:50:31
作ったプログラムが動いている間(JFrameなんかで)、(Windows)システム全体のマウスカーソル画像を任意のものに固定させることはできますか?
プログラムのウィンドウ内だけなら簡単に変更できる確認はできましたが・・・

798 :デフォルトの名無しさん:05/01/27 11:59:58
きゃぷっちゃえ

799 :デフォルトの名無しさん:05/01/27 12:00:10
>>793
BufferedReader.toSringが文字列表現を返すかどうかは
内部表現とはなんら関係ない。BufferedReaderはtoString()を
オーバーライドしていないのでObject$toString()が呼ばれる。
で、Object#toString()が返すのはVM上のメモリアドレスなんていう
不思議アイテムではなく、オブジェクトのハッシュコードを
16進表現したもの。ただそれだけ。

あとStringBuffer#toString()が文字列表現を返すのも
APIの仕様上バッファの中身に相当する文字列を
返すって決められてるからであって、内部が文字列かどうか
には関係が無い。

800 :デフォルトの名無しさん:05/01/27 12:12:08
>>794
2は論外

801 :デフォルトの名無しさん:05/01/27 12:43:06
>>800
アニメーションをする場合の話ですよね?
ユニットごとに別のスレッドで処理をするのも論外ですか?

802 :デフォルトの名無しさん:05/01/27 12:49:20
描画用のインターフェースを各オブジェクトが持つ
そしてそのインターフェースを管理クラスがプライオリティ順に呼ぶ
マルチスレッドにする利点はないよ

どうせ垂直同期やらタイマー管理やらにしろフレーム単位で結果出すだけだから
スレッドでやったら描画順位どうするんだ?

803 :1/2:05/01/27 13:02:26
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class WindowEvent {

public static void main(String[] args) {
//アプリケーションウィンドウの生成
Frame win = new Frame("窓作り");
win.setBounds(10,10,400,300);
win.show();//ウィンドウを表示
win.addWindowListener(new WindowListener(){
//WindowListenerの実装(匿名内部クラス)//////////////////////
public void windowOpened(WindowEvent e){
System.out.println(e.paramString());
}
public void windowClosing(WindowEvent e){
System.out.println(e.paramString());
e.getWindow().dispose();
}
public void windowClosed(WindowEvent e){
System.out.println(e.paramString());
}


804 :2/3:05/01/27 13:03:16
public void windowIconified(WindowEvent e){
System.out.println(e.paramString());
}
public void windowDeiconified(WindowEvent e){
System.out.println(e.paramString());
}
public void windowActivated(WindowEvent e){
System.out.println(e.paramString());
}
public void windowDeactivated(WindowEvent e){
System.out.println(e.paramString());
}
////////////////////////////////////////////////////////////
});
}
}

805 :3/3:05/01/27 13:06:29
改行が多いので分割させていただきました。
上のプログラムを実行したいのですが、下から3行目の
「});」の部分の「;」をつければたくさんエラーが出て、消せば「}」の部分にエラーが出ます。

出てきたエラーは以下のとおりです。
黷ス抽象メソッド WindowListener.windowOpened(WindowEvent) をインプリメントする必要があります。
クラスは継承された抽象メソッド WindowListener.windowActivated(WindowEvent) をインプリメントする必要があります。
クラスは継承された抽象メソッド WindowListener.windowDeiconified(WindowEvent) をインプリメントする必要があります。
メソッド paramString() は型 WindowEvent で未定義です。
メソッド paramString() は型 WindowEvent で未定義です。
メソッド getWindow() は型 WindowEvent で未定義です。
メソッド paramString() は型 WindowEvent で未定義です。
メソッド paramString() は型 WindowEvent で未定義です。
メソッド paramString() は型 WindowEvent で未定義です。
メソッド paramString() は型 WindowEvent で未定義です。
メソッド paramString() は型 WindowEvent で未定義です。

at WindowEvent.main(WindowEvent.java:12)
Exception in thread "main"

何故エラーが出るのかわかりません。
よろしければお教えください。

806 :デフォルトの名無しさん:05/01/27 13:06:39
deiconifyって変だよ。restoreにしろ

807 :デフォルトの名無しさん:05/01/27 13:10:02
>806
ごめん、間違い?

808 :794:05/01/27 13:30:34
ふむ、二つともメリットデメリットは有るんですねぃ。

描画順位については、そのオブジェクトが指している画像リソースを一定時間毎に
差し替えて(インデックスをインクリするだけでも良いや)
メインスレッドで
unitobj.getImage
とかで全てのユニットのImageを取って来て描画する、と。

いやぁ、3コマのアニメーションと5コマのアニメーション等のようにコマ数(セル数?)
の違うモノを混在させて表示するにはどうしたら良いかと思って、2を考えたんだYO。
フレームのカウンタで計算しろ、というのが面倒だなと思ってさ。

809 :デフォルトの名無しさん:05/01/27 13:41:18
>>803

文法的には問題なさそうだが、
public class WindowEventというクラス名が悪い。

あなたの作ったクラス名がWindowEventであるために、
WindowListener の java.awt.event.WindowEvent を引数に取るべき
メソッドが、未定義のままになっている。
また、java.awt.event.WindowEvent.paramString() などのメソッドも
当然あなたの作ったWindowEventクラスにはないので、未定義と見なさ
れている。

クラス名を適当に変えるか(外から呼び出すpublicクラスだから
ファイル名ごと変える)、どうしてもWindowEventという名前の
クラスとして作りたいなら、WindowListenerを実装する方の引
数のWindowEventを、java.awt.event.WindowEventとFQCNで書く。

810 :デフォルトの名無しさん:05/01/27 14:07:47
宿題スレで質問したのですが、こちらで質問するようとのことで書き込みます。

ツールバーをコンテナに追加したいのですが、
その際、BorderLayoutで配置させる必要があると調べました。
しかし、コンテナのsetLayoutをnullにしてあるので、
BorderLayoutでの配置ができません。
この場合、どうしたらよいのでしょうか?
宿題スレでは、
BorderLayoutのCENTERの部分のレイアウトをNULLにする
といわれたのですが、もう少し詳しく知りたいと思っています。

811 :803:05/01/27 14:07:50
>>809
ありがとうございました。
しかし、クラス名・ファイル名共に全く関係なさそうな「Kuma」という名前に変更してみましたが
エラーはなくなりませんでした・・・
未定義の部分が消えないんです。
別のインポート宣言をする必要がありますか?

812 :bus:05/01/27 14:21:13
以前質問したものですが、Stringで文字列を取得してChar型の配列に変換したところ
日本語の入力をするとエラーが出てしまいます。教えてもらったとおりに
やっては見たもののできません。
stext = ttextbox.getText();
char[] text = stext.toCharArray();
このようにしました。どうすればよいのか教えてください

813 :デフォルトの名無しさん:05/01/27 14:23:02
エラーなのか?

814 :デフォルトの名無しさん:05/01/27 14:25:41
>>812
NullPointerExceptionじゃあるまいな

815 :デフォルトの名無しさん:05/01/27 14:29:03
>>814
Gats

816 :デフォルトの名無しさん:05/01/27 14:57:15
>>810

ツールバーをaddしたいコンテナ container (getContentPane()の返値とか)に、
container.setLayout(new BorderLayout());
する。(いまsetLayout(null)してるハズ)

で、
JPanel panel = new JPanel();
panel.setLayout(null);
container.add(panel, BorderLayout.CENTER);
して、今コンテナに直接addしている諸々の部品はpanel.addで
panelに載せていく。

ツールバーは
container.add(toolBar, BorderLayout.NORTH);
で。

>>811
こっちではpublic class Kumaにして、問題なく動いてるけど……
Visual J++ 1.0とかだと動かんとは思うが……

817 :bus:05/01/27 14:57:51
以前質問したんですけどString で取得した文字列をChar配列に変換する際に
stext = ttextbox.getText();
char[] text = stext.toCharArray();
のようにしたら日本語を入力するとやはりエラーが出てしまいます。
どのようにしたらうまくいくのでしょうか

818 :デフォルトの名無しさん:05/01/27 15:00:52
>>808
フレーム数でのカウントが面倒とかいってるうちはゲーム作れないと思うぞ
それにオブジェクト数が200こだったらスレッド200個作るのか?

行き当たりばったりで作るよりもなれてないならまずは設計書を書くようにしよう


819 :デフォルトの名無しさん:05/01/27 15:02:42
>>815
ハハハ、こやつめ!

820 :デフォルトの名無しさん:05/01/27 16:08:22
突然ですがJavaっぽい壁紙ないですか?
昨日からJavaを始める事になったんで、俺はJavaで開発してるんだ〜
って意気込みを感じれるような奴。ど〜もC++抜けないんで
気持ちを朝一から入れ替えたいの。

821 :sage:05/01/27 16:17:17
ウホッ

822 :デフォルトの名無しさん:05/01/27 16:20:48
>>816
ありがとうございます。
コンテナに直接追加することばかり考えていて、
パネルを中間に使うのを見落としていました。目からうろこでした。
これからコード書き換えます。ありがとうございました。

823 :デフォルトの名無しさん:05/01/27 16:21:33
>820
ホットコーヒーはいかがですか?

824 :デフォルトの名無しさん:05/01/27 16:34:57
初めの頃JavaとHSPの見分けがつかんかった

825 :810:05/01/27 16:42:17
>>816
今、コードの書き換えが終わりました。成功しました。
どうもありがとうございました。

826 :デフォルトの名無しさん:05/01/27 16:49:37
Windows標準のに、Javaの旧ロゴにも似た珈琲カップの壁紙があったと思う。


827 :794:05/01/27 18:10:58
>>818
全く以ってその通り。
いやあ、色々テストがてら簡単なゲーム作っててさ。
まだ言語仕様勉強中の身なわけさ。

多重継承が無いのがちょいと辛い……。


828 :デフォルトの名無しさん:05/01/27 19:00:53
>>827
多重継承が必要な場面ってほとんどないけどなぁ
インターフェースってわかるか?

829 :デフォルトの名無しさん:05/01/27 19:06:37
すいません先生方、JAVA3Dで物体を連続して直線移動させたいのですが・・
うまくいきません。直線移動だけならばPositionInterpolatorを使えば
できるのですが、直線に移動するだけに終わってしまいます。
なんとか右に3移動した後上に5移動する・・といった
簡単なものでよいので作りたいのですが、
方法などご存知なかた居られましたら是非ご教授くださいませ。

830 :デフォルトの名無しさん:05/01/27 19:49:23
今、マルチエージェントシミュレーションのプログラムを書いているのですが、
すべてのエージェントが同じ行動をしてしまうという現象が起こっていて、
原因がわかりません。簡単に書くと、次のようなプログラムになります。
→次へ

831 :830:05/01/27 19:50:15
エージェントクラス
public class CAgent {
  private Random m_rn = new Random();
  private int m_rand;
  private int m_change;
  public int m_value;
  private int m_action;

  public void setAgentState(int num) {
    m_value = 100 * num;
    m_change = 0;
  }

  public void setAction(int i) {
    m_rand = m_rn.nextInt(3);
    m_action = m_rand;
    System.out.println("agentID : " + i + "\t" + "action : " + m_action);
    switch(m_rand) {
      case 0 : m_change = 0; break;
      case 1 : m_change = 1; break;
      case 2 : m_change = -1; break;
    }
  }

  public void takeAction() {
    m_value += m_change;
  }
}

832 :830:05/01/27 19:50:46
メインクラス
public class Test2 {
  private static final int NUM_AGENT = 100;
  private static final int NUM_STEP = 10;

  public static void main(String[] args) {
    CAgent[] agent = new CAgent[NUM_AGENT];
    for(int i=0;i<NUM_AGENT;i++) {
      agent[i] = new CAgent();
      agent[i].setAgentState(i+1);
    }
    for(int step=0;step<NUM_STEP;step++) {
System.out.println("step : " + step);
      for(int j=0;j<NUM_AGENT;j++) {
        agent[j].setAction(j);
        agent[j].takeAction();
      }
    }
  }
}

833 :830:05/01/27 19:52:01
エージェントをNUM_AGENT個作り、それぞれのエージェントに初期値を与えます。
ステップごとにそれぞれのエージェントは行動をランダムに選択(setActionメソッド)し、
値を更新(takeActionメソッド)するというものです。
しかし、このプログラムを実行結果は、
step : 1
agentID : 0action : 1
agentID : 1action : 1
(省略)
agentID : 99action : 1
step : 2
agentID : 0action : 0
agentID : 1action : 0
(省略)
agentID : 99action : 0

ステップごとにはランダムに選択されるのですが、
それぞれのステップではすべてのエージェントが同じ行動になってしまっています。
自分では原因が分からないので、どなたか教えてください。
それぞれのステップでエージェントが違った行動をとるには、どうすればいいのでしょうか…?

834 :デフォルトの名無しさん:05/01/27 20:02:31
>>799
おお!何々、そうなのか。どうやらオレはとんだ勘違いをしていたようだ・・・
StringBuffer#toString()はオーバーライドしたメソッドってことなんだね

いや、>>792さんスマソ、間違ってました


ところでハッシュコードって何だ?バイトコードとは別のもの?何に使うの?

835 :デフォルトの名無しさん:05/01/27 20:03:39
CAgent() {
  m_rn = new Random(System.currentTimeMillis());
  try {
    Thread.sleep(1);
  } catch (InterruptedException e) {
  }
}
このコンストラクタを入れてくだふぁーい

836 :デフォルトの名無しさん:05/01/27 20:04:12
>>830-833
特定しますた

837 :デフォルトの名無しさん:05/01/27 20:05:08
おっと、割り込んじゃってごめんね

838 :デフォルトの名無しさん:05/01/27 20:15:10
これ?
m_rand = m_rn.nextInt(3);

839 :デフォルトの名無しさん:05/01/27 20:34:29
>>828
C++みたいな多重継承が必要な場面は多くないけど
RubyのモジュールみたいなMixinあればいいなと
思うこともちょっとある。

別クラスに委譲すればいいだけの話なんだけど
委譲ってコード書くのが少しめんどう。

840 :デフォルトの名無しさん:05/01/27 20:39:14
>>834
ネタだよな?と思ったがメール欄はsageか。

Object#hashCode();



841 :デフォルトの名無しさん:05/01/27 21:07:18
コマンドを呼んでコマンドの実行が終了するまでに時間がかかるような処理を
JAVAのプログラムで呼んでいます。その待機状態になるときの、一行目に表示
されるものをbr.readLine();(read()もためしました)ですぐに取得したいのですが,
どうやってもコマンドが終了したあとにしか取得できません。

[test @test test]コマンド
testtesttest ← コマンド実行と同時に表示される
実行が終わるまで空白

testtesttestを実行が終わる前にどうにか取得したいと思っています。
困りはてているので、もし何か手がありましたらご教授いただけるとうれしいです。

842 :デフォルトの名無しさん:05/01/27 21:49:49
Javaというよりeclipseなんだけど、それらしきスレが見つからないのでスマソ・・・

本家から最新版3.0.1はダウンロードできたんだけど、日本語化に必要な
NLpack-eclipse-SDK-3.0.x-win32.zip ってのがさっぱり見当たらない。

日本語化を解説してるサイトの説明にはみんな普通に載ってるんだが、消えてしまったんだろうか?


843 :デフォルトの名無しさん:05/01/27 21:56:06
http://ftp.jaist.ac.jp/eclipse/downloads/drops/L-3.0.1_Translations-200409161125/index.php

844 :初心者 ◆Java/isQ.c :05/01/27 22:10:05
>>842
|д・)つ ttp://pc5.2ch.net/test/read.cgi/tech/1106406752/

845 :デフォルトの名無しさん:05/01/27 22:30:00
http://afterbeatclub.hp.infoseek.co.jp/frame.html
広めて下さいorz

846 :デフォルトの名無しさん:05/01/27 22:38:50
>>763
sizeof()するのってシリアライズしてデータ量測定
してオーバーヘッド分マイナス する、として
オーバーヘッドの計算式どっかにないカニ。

847 :792:05/01/27 22:40:52
複数行のテキストを1行にするコードを書いている者です。
 >>793,799 さんありがとうございました。

実際にコードを組んで、複数行のテキストSampleEV_3d.txt
 SampleEV -40.73947 -39.38199
  -19.25768 -17.72609 -17.31405
 End

を読み取りみましたが、
 C:\j2sdk1.4.0_01\java_tests>java Trim3_4b
 EV = 9711210186454855575545575149571045575055564555555457455551525310110-1

というエラーになりました。原因が分かりません。

実際のコードは http://haiiro.info/up2/file/3531.txt 
に、うpしています。

 ご指摘願います。


848 :デフォルトの名無しさん:05/01/27 22:41:47
>>669
とりあえずこれ使え
http://eclipsewiki.net/eclipse/index.php?Maven

されどまだまだ問題点がありありでバージョン違いのJARの依存関係が
まだまだ駄目すぎる。

これではPerl CPAN, *BSDのPorts, Linuxのyumにも劣る自動アップデート機能だ。

そこでMaven2に期待している。

こやつのブログによると大幅に書き直されるらしい。
http://blog.goo.ne.jp/ikkoan/e/bfe6fda9790199a2b0c15dbbb6c3ea24



849 :デフォルトの名無しさん:05/01/27 22:47:23
Mavenはまだかなり改良の余地あるけど、Antでやるよりは楽だね。

850 :830-833:05/01/27 23:15:04
>835
解決しました!ありがとです。
乱数のシードの問題だったんですね…


851 :デフォルトの名無しさん:05/01/27 23:24:30
>>847
http://www.aluha.com/~javaKingdom/javaSample/readFile.html

852 :デフォルトの名無しさん:05/01/27 23:29:18
>>846
シリアライズしたのは実際のサイズとは全然関係ないよ。それなら以下のほうがいい。

一度GCしてから空きメモリ量を測定する。
10000個ほど測定したいクラスのインスタンスを作る。
もう一度GCしてから空きメモリ量を測定する。
空きメモリ量の差分を10000で割る。

フィールドに別オブジェクトを持ってるクラスだと多少ややこしいけど
Object 一個だと 8 バイトほどなのがわかる。

853 :デフォルトの名無しさん:05/01/28 00:21:09
int 型変数を double 型に変換したいのですが、

Double.parseDouble(num);

とすると、parseDouble は int 型に適用できないと言われてしまいました。
他に int > double と変換する方法はあるのでしょうか?

854 :デフォルトの名無しさん:05/01/28 00:23:03
>>853
(double)xxx

855 :デフォルトの名無しさん:05/01/28 00:29:38
>854
なるほど、C と同じように double(xxx) でうまくいかなかったのでちょっとハマってしまいました^^;
助かりました、ありがとうございました^^

856 :デフォルトの名無しさん:05/01/28 00:43:41
いや、その文法ではCでも無理じゃないか?

857 :デフォルトの名無しさん:05/01/28 00:46:24
その文法はMLとかか?

858 :794:05/01/28 00:51:32
>>828
インタフェースだと、変数を継承出来ないでしょ?


859 :デフォルトの名無しさん:05/01/28 01:11:17
>>858
そういうのはゲッターセッターメソッド作るわけだが

860 :デフォルトの名無しさん:05/01/28 03:29:04
変数を継承って・・・極めて危険な使い方してる可能性高いな

861 :847:05/01/28 05:12:32
>>851 http://www.aluha.com/~javaKingdom/javaSample/readFile.html

これは2行のTxtを2行のまま表示するコードですね。
コードを改造しましたが、動作しませんでした、


862 :デフォルトの名無しさん:05/01/28 05:22:49
改めて質問します。
 SampleEV -40.73947 -39.38199
  -19.25768 -17.72609 -17.31405
 End

などという、複数行のTextを一行にするにはどうすればいいでしょうか?

JDKバージョンは1.4です。なお最終的には一行にした後に、数字以外を消し、
数値間にカンマを入れて、
  -40.73947,-39.38199,-19.25768,-17.72609,-17.31405

という形にします。
 

863 :デフォルトの名無しさん:05/01/28 06:45:42
>>862
こんな俺が答えていいのかわからないけど
StringTokenizerと正規表現使えばいいんじゃ・・・

864 :862:05/01/28 09:08:06
>>863ありがとうございます。

ついさっき、改行問題(1番の課題)は append()を使って後段の行
を前の行に追加する、という手法で解消しました。

どうも、お騒がせしました。


865 :デフォルトの名無しさん:05/01/28 09:12:12
あるDOS窓のプログラムAに対して入出力を行いたいのですが、
この場合パイプで処理をしたらどうなるでしょうか。

866 :デフォルトの名無しさん:05/01/28 09:52:03
クラス名の後にextends JWindowとextends JComponentを同時に使用したい場合はどうしたらいいでしょうか?

867 :デフォルトの名無しさん:05/01/28 09:53:37
多重継承はできません

868 :866:05/01/28 09:57:06
>>867
ありがとうございました。
どちらか一つに絞るしかないんですね・・・_| ̄|○

869 :866:05/01/28 10:03:40
改めて質問します。
フレームレスウィンドウで画像のみを表示することは可能でしょうか?
ヒントだけでもいいのでお教え願えれば幸いです。

870 :ふぁsf:05/01/28 10:18:33
double型もしくはfloat型で定義された少数を、少数第一位までだけで表示したいんですが
どうすればよいでしょう?

871 :794:05/01/28 11:03:15
うーん、どう言ったら良いかな。
例えば任意の描画クラスと任意のコントロールクラスがあったとする。

あるコントロールにイベントが発生したときに、それと対になったグラフィックス
にある特定のアクションを起こさせたいとする。
そして、そのアクションは、基本的に共通動作だが、コントロールごとに実装がやや違うとする。

多重継承あると、楽だろ?

setActionClass((ActionClass)ac);
こんなバインド(リンク?)をしなくても済むわけだし。

いや、「こういう方法でやればいい」ってんじゃなくて、「多重継承があったらなぁ」
と思う場面が偶に有るという話だ。
俺はC畑出身だからJAVAのデストラクタが無いのとか、いまいち『気持ち悪い』感じが
まだ抜けてないから、まだ慣れてないだけなのかとも思うが。

スレ違いな話になってきてるみたいでゴメム。


872 :デフォルトの名無しさん:05/01/28 12:18:03
SAXでXMLを解析したら、コメントが無視されてしまいました。
コメントを文字列として認識できるXMLパーサってありますか?

873 :デフォルトの名無しさん:05/01/28 12:45:02
>>869
コンポーネントに任せる方法
・JWindowのLayoutをBorderLayoutに
・JLabelをCENTERにadd
・JLabelにsetIconでImageIconを設定

自分で描画する方法
・JWindowでpaintメソッドをオーバーライドし、
Graphics#drawImageで、画像を描画

ちなみに1.4以降ならば、JWindowの代わりにJFrameつかって、
setUndecorated(true)とすることで、タイトルバーは消せる。

874 :デフォルトの名無しさん:05/01/28 12:52:55
あなたのコメントの定義がわかりません。

875 :デフォルトの名無しさん:05/01/28 12:55:23
>>871
>そして、そのアクションは、基本的に共通動作だが、コントロールごとに実装がやや違うとする。

それってインターフェースで共通化するんじゃないの?
List list = new Vector();
List list = new ArrayList();
のように


876 :デフォルトの名無しさん:05/01/28 13:08:17
>>875
いや違うよ。俺が言ってるのは
描画機能とアクション機能の二つを備えたオブジェクトを多種作成するって
事なんだよ。
で、描画、アクションともに全オブジェクトに共通する基本動作があるから
二つの基本クラスを継承するのは不可欠だって事なんだよ。
インターフェースで共通化したら、基本メソッドまでコピペしなきゃ
いけなくなるじゃん。

自分のようにビジュアルアクション系で複雑なプログラムを組む者には
多重継承がないのはマジでつらい。
JavaにしろC♯にしろ単一継承にしたのは問題の先送り、解決の放棄と
しか思えない。だから何時までもソフトウェアの生産性が上がらないんだな。

最近のOOPじゃ、継承よりも委譲によるクラス拡張を重視してるが
これはクラス機能間の構造をさらにややこしくしてしまう。
結局、委譲重視に走ったのは多重継承を放棄したが故の副産物と
言わざる得ない。単一継承言語が主流となってしまったOOPの未来は
暗いな。


877 :デフォルトの名無しさん:05/01/28 13:12:42
>>874
すいません。
Javaソースコードのコメントです。
// や /* */ で定義される。

878 :デフォルトの名無しさん:05/01/28 13:13:28
xmlのコメントは <!-- -->なんですが・・・

879 :デフォルトの名無しさん:05/01/28 13:14:05
多重継承が必要な場合は大体設計がおかしい場合が多いけどな
基本メソッドをコピペって・・・

880 :デフォルトの名無しさん:05/01/28 13:50:59
多重継承ではなく、多次元継承みたいな感じにすればいいじゃん
継承に構造を持たせるの
まぁオレの論文の事なんだけど

881 :デフォルトの名無しさん:05/01/28 14:19:50
は?

882 :デフォルトの名無しさん:05/01/28 14:34:43


883 :デフォルトの名無しさん:05/01/28 15:07:07
>>878
そのとおりです。
<!- -> を内を、文字列として認識できるXMLパーサってありますか?

884 :デフォルトの名無しさん:05/01/28 15:42:36

<!-- -->
に訂正

885 :デフォルトの名無しさん:05/01/28 15:47:10
つーかJAXPって普通にコメント扱えるはずだが

そもそもその文字列に意味があるのならコメントにすなとかおもっちまうが

886 :デフォルトの名無しさん:05/01/28 15:59:31
もう、勝手なんだから

887 :デフォルトの名無しさん:05/01/28 16:01:41
>>886
誰に対して言ってるんだろう

888 :デフォルトの名無しさん:05/01/28 16:42:36
Javaに(C++でいう)templateやoperatorはないの?

889 :デフォルトの名無しさん:05/01/28 16:50:02
templateは5.0で追加された
演算子オーバロードはない

890 :デフォルトの名無しさん:05/01/28 16:54:13
誰か>>865お願いします

891 :デフォルトの名無しさん:05/01/28 17:04:57
教えて下さい。JSP初心者です。
inputのvalueの値を変数に入れたいのですが
下記のような事ではだめですか?

<input name="box1" type="text" value="あいうえお"/>

<c:set var="tmpset">
<c:out value="${box1.value}"/>
</c:set>


892 :デフォルトの名無しさん:05/01/28 17:06:53
>>889
サンクス。
なんかトータルで見るとC++の方が使いやすい気がするなぁ…

893 :デフォルトの名無しさん:05/01/28 17:09:11
>>883
あります。

894 :デフォルトの名無しさん:05/01/28 17:10:50
>>890
やってみればわかると思います

895 :デフォルトの名無しさん:05/01/28 17:16:20
あほな質問になるかもしれませんが、グローバル変数や定数ってどこで宣言するんですか?
GlobalClassみたいなのを作って、その中でstatic finalして、それを各クラスでimportするのでしょうか?

896 :デフォルトの名無しさん:05/01/28 17:17:39

「static final」は定数か…間違いました。

897 :デフォルトの名無しさん:05/01/28 17:41:29
>>895
それがいいかも。
static importすればそのまま使えるし。
でもスコープはできるだけ狭い方がいいと思います・・。

898 :895:05/01/28 17:43:46
>>897
ありがとうございます。
GlobalClass作ってみます。

899 :デフォルトの名無しさん:05/01/28 17:46:23
ageてしまった。。

900 :名無しさん:05/01/28 18:36:49
すいません、QuickTime For Java をやりたいのですが、
どこかにおすすめのページありませんか?英語でも大丈夫です!

901 :デフォルトの名無しさん:05/01/28 18:55:48
>>891
<c:set var="tmpset" value="${param.box1}" />
としませう


902 :デフォルトの名無しさん:05/01/28 19:13:37
>>900 あれ基本的にただのラッパーだからQuickTime SDKが
理解できてないとだめ。for Javaを勉強するのはそれから。
つーか、SDKわかってればfor Javaなんて勉強するまでもない。

903 :デフォルトの名無しさん:05/01/28 20:27:50
booleanって扱いづらくないですか?
int型のBOOL型を作りたいんだけど、どうやって作ればいいのでしょうか。

904 :デフォルトの名無しさん:05/01/28 20:36:15
>>903
よくわからん癖に独自の型を作ろうとするのはヤメレ。素直に
 boolean hogeflag=true;
とかやっとけ。

念のため言っておくが、Java の boolean 型は C でよく使うような
 #define BOOL int
 #define TRUE 1
 #define FALSE 0
みたいなインチキブーリアンじゃないぞ。

905 :デフォルトの名無しさん:05/01/28 20:38:39
>>904
>念のため言っておくが、Java の boolean 型は C でよく使うような
では、それに期待してboolean使うことにします。
ありがとうございました。

906 :904:05/01/28 20:46:49
>>905
「もしかして全くのド素人じゃなかったら失礼かも」とか思って念のため
書いておいてヨカタw

補足すると、boolean 型の変数には true/false しか代入できない。
数値との比較をしようとするとエラーになる。
C++の BOOL よりはずっと素直(とおいらは思った)。

907 :905:05/01/28 20:52:18
>>906
なるほど、参考になります。
でもその素直さが自分には受け入れられないかもしれません。
booleanで演算(boolean*intとか)できないと痛いので、その辺を色々試してみる事にします。

908 :デフォルトの名無しさん:05/01/28 20:54:40
C++ に BOOL なんてねーよ

909 :デフォルトの名無しさん:05/01/28 20:57:49
> C でよく使うような

910 :デフォルトの名無しさん:05/01/28 21:01:23
C++ にあるのは bool だったような。
でもC++のboolも簡単にintに成り下がるんだよね。

911 :デフォルトの名無しさん:05/01/28 21:02:04
明日の学校のプログラミングの試験すげえ不安…

912 :デフォルトの名無しさん:05/01/28 21:06:24
>>911
雑談なら板違いなのでマ板へどうぞw
http://pc5.2ch.net/prog/
# 試験ガンガレ

913 :905:05/01/28 21:13:07
すみません、やっぱりboolean使いにくいです。
新しい原始型(?)を作るにはどうすればいいのでしょうか?

914 :デフォルトの名無しさん:05/01/28 21:33:23
>>913
郷に入っては郷に従え
Javaの型や表記にも馴染んでみてくれ。
なんで推奨されないかが後々解ってくるよ。
'Write once, Run anywhare' の意味が解ってくるよ。

915 :905:05/01/28 21:39:46
そうですか…じゃあ頑張ってみます。(Cのboolは死ぬほど使い辛かったけど)

916 :デフォルトの名無しさん:05/01/28 22:19:59
boolean hoge;
hoge = true;
(hoge)?1:0;

こうだろ?

917 :デフォルトの名無しさん:05/01/28 22:23:06
unionはないの?

918 :デフォルトの名無しさん:05/01/28 23:40:58
true/falseを1/0にキャストできんことには文句を言うくせに
nullを0にキャストできんことには文句を言わない不思議。

919 :デフォルトの名無しさん:05/01/28 23:41:05
>>876
コントロールクラスでイベントが発生したら、画像用オブジェクトの特定の
メソッドを呼ぶようにしたAbstractクラスを作ったらいいだけじゃん。

コントロールクラスのコンストラクタで勝手に画像オブジェクトをnewして
所有するようにしておけば問題ないだろ。画像のクラスは内部クラスとしておく。

コントロールクラスの動作を変えたいならコントロールクラスを継承して
イベント処理用メソッドをオーバーライドする。画像側の動作を変えたい場合も
やっぱりコントロールクラスを継承して、内部クラスとして画像クラスを継承した
クラスを定義して、コンストラクタでその継承画像クラスをnewして所有するように
変えるだけ。

だいたいコントロールクラスと画像クラスを分けてる段階で、コントロールクラスの
コンストラクタに任意の画像クラスを渡せるようにした方がよっぽど素直な実装だ
と思うけどね。コントロールクラスの継承クラスをつくらなくても画像クラス差し替え放題だし。

920 :デフォルトの名無しさん:05/01/29 00:11:31
>>919
池沼には触れるな

921 :デフォルトの名無しさん:05/01/29 00:25:43
UNIX オフ
UNIXや最新技術に興味のある人や
プログラマー・SEになりたい人・業界に興味のある人あつまれ!
http://off3.2ch.net/test/read.cgi/offevent/1105369044/

922 :デフォルトの名無しさん:05/01/29 00:26:24
エンクロージング型とはなんでつか?

923 :デフォルトの名無しさん:05/01/29 00:28:58
jarに入っているクラス郡がどの外部ライブラリに依存しているか調査するツールってないすかね?

924 :デフォルトの名無しさん:05/01/29 00:30:20
>>923
readme.txt

925 :デフォルトの名無しさん:05/01/29 01:18:49
多重継承の良し悪しはおいといて
Javaで例えばHogeクラスとFugaクラスを多重継承させるように扱いたい場合は

・Hoge、Fugaをインタフェースにして
・もともとのHoge、Fugaの実装をHogeImpl implements Hoge、FugaImpl implements Fugaにしてから

class HogeFuga implements Hoge, Fuga {
 private Hoge hoge = new HogeImpl(); // Hogeインタフェースのメソッドはhogeに全部委譲
 private Fuga fuga = new FugaImpl(); // Fugaインタフェースのメソッドはfugaに全部委譲
...
}

のようにするのが常套手段。委譲メソッドを書くのがめんどくさいが。
しかし「インタフェースにすると実装をコピペしなきゃいかん」とか思ってるようじゃアホすぎるぞ。

926 :デフォルトの名無しさん:05/01/29 01:34:28
Eclipse使うと委譲メソッドは楽々書ける。

927 :デフォルトの名無しさん:05/01/29 01:38:33
argsってなんて読むんですか?

928 :デフォルトの名無しさん:05/01/29 01:53:22
素直にアーギュメンツでいいんじゃねーの?
argumentsの略だし。
もしくは「引数」だな。


929 :デフォルトの名無しさん:05/01/29 01:53:47
>>922
内部クラスを取り囲んでいる(enclosing)外側のクラスのこと。

930 :デフォルトの名無しさん:05/01/29 02:17:24
Image image;

[@] image=Toolkit.getDefaultToolkit().getImage("hoge.jpg");
[A] image=Toolkit.getImage("hoge.jpg");

[A]の方だとgetImageがstaticでないので無理なのはわかるのですが[@]だと大丈夫
getDefaultToolkit()の戻り値はToolkit型だからメモリ確保されて出来るようになるんですかね?
あと、getImageって抽象メソッドなのに何でそのまま使えるの?
以上二つ、ご教授お願いします

931 :デフォルトの名無しさん:05/01/29 02:22:21
漏れはアーグスって読んでる

932 :デフォルトの名無しさん:05/01/29 02:42:39
>getDefaultToolkit()の戻り値はToolkit型だからメモリ確保されて出来るようになるんですかね?

Toolkitクラスのインスタンスを作ってるように誤解してるっぽいが違うぞ。
「何らかのToolkitのサブクラス」のインスタンスが戻ってくるだけだ。

>あと、getImageって抽象メソッドなのに何でそのまま使えるの?

戻ってきた「何らかのToolkitのサブクラス」ではちゃんと実装されているから。

933 :デフォルトの名無しさん:05/01/29 02:44:46
Toolkit.getDefault() (staticメソッド)の中で、
プラットフォーム固有のWindowsToolkitとかMacOSToolkit(名前は適当)
とかいったToolkitのサブクラスのインスタンスを返しています。
こいつらにはgetImageの実装があるわけです。


934 :デフォルトの名無しさん:05/01/29 03:52:36
>>922
正確には enclosing instance のことでは?

内部メンバクラスはそれを字句的に直接取り囲むクラスのインスタンスがなければ生成できません.

例えば

class Outer { public class Inner { public class InnerMost { } } }

のクラス Outer.Inner.InnerMost を生成するには,

class Test {
public static main(String[] args) {

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.Inner.InnerMost im = inner.new InnerMost();

}
}

としなければならい.以下のように継承しておくと,変な構文が隠蔽されていいかも,って誰も使わんよこんな機能.

class C extends Outer.Inner.InnerMost {

public C() { ((new Outer()).new Inner()).super(); }

}


935 :デフォルトの名無しさん:05/01/29 04:36:27
まあスコープの問題はあるにせよ実質的には
class Outer { private Inner inner; public Outer(Inner inner) { this.inner = inner; }}
class Inner { private InnerMost im; public Inner(InnerMost im) { this.im = im; }}
class InnerMost {}

InnerMost im = new InnerMost();
Inner inner = new Inner(im);
Outer outer = new Outer(inner);
とするのと同じだからな。

>以下のように継承しておくと,変な構文が隠蔽されていいかも
それじゃ他からnew Outer()、new Inner()したインスタンスにアクセスできないだろ。

936 :デフォルトの名無しさん:05/01/29 05:07:01
>>935
逆.外から中のインスタンスへの参照は無い.
* Outer にとって Inner は Inner という名で参照できるクラス Outer.Inner にすぎない.
* Inner にとって Outer は Outer.this という隠れたフィールドで参照されているインスタンス.

class Outer { }
class Inner { private Outer outer; public Inner(Outer outer) { this.outer = outer; }}
class InnerMost { private Inner inner; public InnerMost(Inner inner) { this.inner = inner; }}

Outer outer = new Outer();
Inner inner = new Inner(outer);
InnerMost im = new InnerMost(inner);

>>以下のように継承しておくと,変な構文が隠蔽されていいかも
>それじゃ他からnew Outer()、new Inner()したインスタンスにアクセスできないだろ。

メンバクラスの最適の用途は Adapter パターン(外部インタフェースに現存のクラス適合させるためのラッパー)だから,
アクセスできなくてもかまわないケースはあると思うけど.

まあいずれにしてもメンバクラスを囲むクラス以外から弄るなんて無いな.

class Outer {
    private class Inner implements ISomeInterface {
    // Outer のフィールド,メソッドにはフリーアクセス
    }
    public ISomeInterface getAdapter() { return new Inner(); }
}
普通はこんな感じ.


937 :デフォルトの名無しさん:05/01/29 14:09:08
Javaで階層的・非階層的クラスタリングアルゴリズムクラスを実装してソース公開してる
ところってご存じありませんか?K-means法とか
無ければ自分で実装するのですが、既に誰かが作って公開してるのなら
車輪を再発明するのは馬鹿馬鹿しいので…

938 :930:05/01/29 14:22:03
>>931-932
有難うございます
ソースの定義だけ見ると戻り値は普通のツールキットだと思ってました
デフォルトのツールキット=プラットフォーム固有のツールキット=ツールキットクラスのサブクラス
そしてそれには抽象メソッドが実装されている、この考えてOKですかね?

public static Toolkit getDefaultToolkit(){・・・}
デフォルトのツールキットを返します。
"awt.toolkit" という名前のシステムプロパティがある場合、そのプロパティは、
Toolkit のサブクラスであるクラスの名前として扱われます。

戻り値:
デフォルトのツールキット

939 :デフォルトの名無しさん:05/01/29 15:07:44
超初心者です。質問させてください。

ボタンを押したらpdfファイルが表示される画面を作りたいのですが、方法が分かりません。
試しに以下のように書いたのですが、うまくいきません。

OutputStream out = response.getOutputStream();
FileInputStream in = new FileInputStream("C:/sample.pdf");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=sample.pdf");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
out.close();
in.close();

ちなみにpdfではなくjpgファイルだとうまく表示されました。
どのようにしたらいいのでしょうか?
ご教授お願いします。


940 :初心者です。:05/01/29 17:13:12
今現在、Eclipseを使用しTomcatを立ち上げ
JSPの勉強をしているのですがなぜか
私の購入した【EclipseではじめるJavaプログラミング入門】
のP271において
JSPソース上に
<%=new java.util.GregorianCalender().getTime() %>
と入力すれば正常に 例:Thu May 13 15:01:05 JST:2004
といった具合に表示されるハズなのですが

>The server encountered an internal error () that prevented it from fulfilling this request.

と表示されてしまいます。一体なぜなのでしょうか?
誰か詳しい人教えて下さい。お願い致します。


941 :デフォルトの名無しさん:05/01/29 17:17:57
>>939
response.setHeader("Content-Disposition", "attachment; filename=sample.pdf");

response.setHeader("Content-Disposition", "inline; filename=sample.pdf");
にする。
あと、ストリームへの書き込みはバッファ使え。

942 :デフォルトの名無しさん:05/01/29 17:19:25
>>940
その行じゃない部分が違っている可能性は?
また、他のJSPは実行可能か?そのソースじゃなくて環境の問題は無いのか?

943 :初心者です。:05/01/29 17:20:02
org.apache.jasper.JasperException: JSP???????????????

JSP????: /mysql_1_f.jsp ???14?????????????

?????????????????:
[javac] Compiling 1 source file

C:\eclipse\workspace\mysql_1\work\org\apache\jsp\mysql_005f1_005ff_jsp.java:56: ?????????????
????: ??? GregorianCalender
?? : util ? ?????
out.print(new java.util.GregorianCalender().getTime() );
^
??? 1 ?


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:553)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

こんな意味不明のエラーが表示されます。
なぜか全然検討が付かないです(´Д⊂ モウダメポ 。

944 :初心者です。:05/01/29 17:22:08
>>942さん
一応、
<%=new java.util.GregorianCalender().getTime() %>
を抜いてhtml文を書き込む文には問題無く表示されるのですが
なぜか<%= *** %>を付けるとおかしくなってしまいます。



945 :デフォルトの名無しさん:05/01/29 17:51:48
>>937
あります。英語の情報源も対象に含めて検索してみよう。

946 :939:05/01/29 18:01:52
>>941
解決しました。
どうもありがとうございました。


947 :デフォルトの名無しさん:05/01/29 19:58:21
>>940
うろ覚えで申し訳ないけど
CalendarクラスのgetTime()メソッドは昔はprotectedで最近publicになった経緯があったような気がします。
古いJDK使ってない?

948 :デフォルトの名無しさん:05/01/29 19:59:28
assert文を含めたソースはJavadocでエラーになるのですが、なぜ?
なんかこんなエラーでした。
警告: リリース 1.4 では assert はキーワードなので識別子として使うことはできません。
だれか知ってる方、納得いくように説明して。

949 :947:05/01/29 20:14:22
昔protectedだったのはCalendar#getTimeInMillis()だったわ。

で。エラーの原因分かった。
GregorianCalend"e"r
じゃなくて
GregorianCalend"a"r

950 :デフォルトの名無しさん:05/01/29 20:44:43
Javaに限らず何ですが、自作クラスでどこまでエラートラップかけていいのか分からない…。
予期せぬエラーとかあんまりないでしょ?

951 :デフォルトの名無しさん:05/01/29 21:47:11
とりあえず例外投げるようにしとけばいいだろ。
そうすれば上位のプログラムがエラー処理できるから。

952 :デフォルトの名無しさん:05/01/29 21:49:11
局所的に処理できるものは処理する
それ以外は投げまくる

953 :デフォルトの名無しさん:05/01/29 22:18:27
サーブレットのことで質問させてください。
get,post両方から呼ばれる可能性がある場合、書籍ではdoPostからdoGetをそのまま呼び出したりしているのが多いです。
こういった方法を使うとシンプルでわかりやすいのですがこれで後々に問題が起きるようなことはないのでしょうか?

954 :デフォルトの名無しさん:05/01/29 22:28:39
>>948
ソ・ー・ス! ソ・ー・ス!

955 :デフォルトの名無しさん:05/01/29 22:41:53
>>953
どいういう問題が起きることを想定している?
何が不安なのかさっぱりわからん

956 :デフォルトの名無しさん:05/01/29 22:49:40
まあ後々getとpostで動作を変えたくなったら問題が起きるかもしれん。

957 :デフォルトの名無しさん:05/01/29 23:56:54
> 948
-source 1.4 つけれ
ttp://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/javadoc/whatsnew-1.4.html

958 :デフォルトの名無しさん:05/01/29 23:58:55
StringクラスのreplaceAll()を使うと、正規表現に一致する文字列の置換が行われますが、
正規表現を使わない置換をするのに良い方法はないでしょうか?

959 :デフォルトの名無しさん:05/01/30 00:04:51
>>958
言いたいことがよく分からんが。。
string.replaceAll("abc","def");
ってこと?

960 :デフォルトの名無しさん:05/01/30 00:09:54
>>953,955
個人的には投げまくった例外をどこで受け止めるかがうまく
切り分けられないんですが、なんか指標ってあるんですかね?

たとえばDBアクセス、データ取得、bean、データ加工、業務、表示みたいにMVCを
もうちょっと細かくパッケージングしたときとか、DBの例外をどこで誰が受け止めるか
とかよく悩む。モデリングはうまく行っているけれども処理ロジックの切り分けができてないからだ
ってよく言われるんですがね。その通りだと頭でわかってても・・・。

961 :デフォルトの名無しさん:05/01/30 00:15:44
>>950
ファイル、ネットワーク、データベース等は
予期せぬ(プログラム側では防げない)エラーだと思うけど。

962 :960:05/01/30 00:16:41
失礼ミスった。
>>950-952

963 :958:05/01/30 00:17:28
>>959
レスありがとうございます。

abcの部分に正規表現が使ってあっても、正規表現の機能を使わず
単純に指定された文字列を置き換えたいんです。

例えば、

"[abc]".replaceAll("[abc]","def")

の結果を、

[defdefdef]

ではなく、

def

にしたいんです。

964 :958:05/01/30 00:22:19
なぜそうしたいかと言うと、

my name is [name]

と書いたテンプレートを作っておいて、"[name]" を "Yamada"に置き換えたいんです。
これをreplaceAll("[name]","Yamada") としてしまうと、期待する結果にならないので。
置換対象の文字列を、正規表現になってしまうような形にしなければ良いのでしょうが、
他に良い書き方が思いつきません。
もしこういうケースで、一般的に使われる書き方があれば教えて下さい。

965 :デフォルトの名無しさん:05/01/30 00:24:38
>>963
"[ABC]".replaceAll("\\[ABC\\]","def")

JavaDocちゃんと読め。

966 :デフォルトの名無しさん:05/01/30 00:28:45
>>963
[]はメタ文字だぞ?それやるならこうだろう。
"[abc]".replaceAll("\[abc\]","def")

967 :デフォルトの名無しさん:05/01/30 00:38:28
>>965が正解

968 :958:05/01/30 00:40:53
>>965
>>966
ありがとうございます。
たしかにそうなのですが、\\[ABC\\]の部分を[ABC]と入力して置換出来るようにしたいんです。
つまり、置換文字列を指定する人が、正規表現を知らなくても使えるように、
単純な文字列の置換機能にしたいんです。
そういう考え方が間違ってるのかも知れませんが。。。

969 :デフォルトの名無しさん:05/01/30 00:45:02
>>968
正規表現の特殊文字を先に置き換えるか、自分で実装するか。


970 :958:05/01/30 00:47:13
[ABC]を他の書き方にしようと思いましたが、良い書き方が思いつきません。
例えば、{ } ( ) だとやはり正規表現で使われるようですし、
#ABC#にしてしまうと開始と終了が同じ記号なのでイマイチな気がします。


971 :デフォルトの名無しさん:05/01/30 00:53:51
>>958
Java1.5の新メソッドに、String#replace(CharSequence c1, CharSequence c2)
がありますが・・・

972 :958:05/01/30 01:03:31
>>969
>>971

Java1.4では、自分で作るしかないようですね。
Java1.5も見てみます。

他のレスをくれた方もありがとうございました。

973 :デフォルトの名無しさん:05/01/30 01:06:03
>>968
もとの文字列=my name is [***]の*以外が固定の文字列なら、
Tokenizerで"["までパースしてってのは駄目かな。
Tokenizerじゃないにしろ、一気にやろうとしないで、最初に[]の中身を取り出すようにしたらいいと思う。


974 :958:05/01/30 01:09:05
>>973
[ ] は固定なので、そんな感じに一つずつ検索して置換するような処理を書くことになりそうですね。
ありがとうございます。

975 :940:05/01/30 01:16:11
>>947さん
そうなのですか?知りませんでした。
今のJDKは参考書に付属のCDからのコピーを使用して
いる為古いかもしれません。(´A`|||)
Calend a r が原因の様でした。申し訳ありません。
そしてありがとうございました(o^o^o)¥


976 :デフォルトの名無しさん:05/01/30 03:22:28
プログラミングにはあまり関係ない質問なんだけど・・

SunのサイトでJ2SE 1.4の日本語版ドキュメントをダウンロードしようと思ったら、
英語版のファイルしか見つかりませんでした。
どなたか、ありかを教えてくださいませ。

977 :デフォルトの名無しさん:05/01/30 03:36:37
>>976
これでしょうか。
http://java.sun.com/j2se/1.4.2/ja/download.html

978 :デフォルトの名無しさん:05/01/30 03:38:34
>>976
ttp://java.sun.com/j2se/1.4.2/ja/download.html


979 :デフォルトの名無しさん:05/01/30 03:39:46
2分も遅れてかぶった...orz
寝る.


980 :デフォルトの名無しさん:05/01/30 04:26:08
JAVAってメタ文字に\付けてくれる関数なかったっけ?
なんかの言語にあったんだよな。

981 :デフォルトの名無しさん:05/01/30 04:27:33
あ、メタ文字を先にreplaceしてから、本番のreplaceする手はどう?

982 :デフォルトの名無しさん:05/01/30 05:11:11
>>980
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/regex/Pattern.html#quote(java.lang.String)
ただし @since 1.5


983 :デフォルトの名無しさん:05/01/30 06:53:35
class Sample6
{
public static void main(String args[])
{
System.out.println("10進数の10は"+10+"です。");
}
}

学習で上記の文をコンパイルしたのですが

C:\javac sample.java

C:\>java sample6
Exception in thread "main" java.lang.NoClassDefFoundError: sample6 (wr
Sample6)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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)

このようなエラーが出てしまいます・・・なにか間違っているのでしょうか・?

984 :976:05/01/30 07:19:10
>>977 >>978
おはようございます

いやいや、そのページにはもう何度となく飛んだんですよ。
でも、そこの「日本語版 J2SE 1.4.0 ドキュメント Download」というのを押しても、
ダウンロードできるファイルが英語版のドキュメントしかないんです。

がんばって英文を読んでみても、言語を指定できるような項目はなさそうだし、
これは俺の探し方が悪いのか、それとももとから存在しないのかと疑問に思って質問しました。

いっそのこと、HP巡回ソフトで必要な部分だけもらってくべきでしょうか?

985 :デフォルトの名無しさん:05/01/30 09:28:45
>>984
"LICENCE AGREEMENT"の次のページに
(j2sdk-1_4_0-doc-ja.zip, 33.13 MB)
というリンクない?

986 :mysql:05/01/30 11:02:38
を勉強しているのですけれど、大文字・小文字は
どうやら関係無いのでしょうか?

テーブルを作成(大文字)し
小文字でinsert文を使用しても何ら問題無く動きます。。

987 :958:05/01/30 12:05:47
>>981
そうですね。こんな感じなら、コードは短くて済みそうです。

preReplace("[abc]").replaceAll(preReplace("[abc]"),"def")

public static String preReplace(String s) {
return s.replaceAll("\\[","#FROM").replaceAll("\\]","#TO");
}

ありがとうございます。

988 :デフォルトの名無しさん:05/01/30 12:16:11
>>983
自分で気付ける範囲でしょうがー

989 :デフォルトの名無しさん:05/01/30 12:32:15
>>983
ファイル名を Sample6.java にする。(sample6.java ではNG)


990 :989:05/01/30 12:34:36
>>983
すまん間違えた。
java Sample6
でもファイル名も Sample6.java にした方がいい


991 :デフォルトの名無しさん:05/01/30 12:41:15
次刷れ
【初心者】Java質問・相談スレッド61【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1107056382/l50


992 :デフォルトの名無しさん:05/01/30 12:51:38
>>984
Sunに文句言うか、あきらめて
http://java.sun.com/j2se/1.5.0/ja/download.html
これ使う


993 :デフォルトの名無しさん:05/01/30 13:16:22
>>992
>>985
ファイルはあるんだって。

994 :デフォルトの名無しさん:05/01/30 13:23:38
>>984
ファイルはあるけどリンクが間違ってる。
英語のページに飛ばされたあと、もう一度そこから選ぶと出てくる。

995 :デフォルトの名無しさん:05/01/30 13:48:19
>>986
Windows版MySQLはテーブル名の大文字小文字も区別しない
(というか全部小文字に揃えられてしまう)。
しかしLinux版MySQLはテーブル名の大文字小文字を区別するので注意。

どっちもSQLは大文字小文字を区別しないけど(selectでもSELECTでもいいという意味で)。

996 :983:05/01/30 15:43:23
>>989
>>990
簡単な質問に回答して頂いてありがとうございました。
大文字、小文字の違いに気付けなかった・・・・orz

997 :986:05/01/30 15:43:58
>>995
丁寧にどうもありがとうございます(^-^)¥
そうだったんですか。何かおかしぃーなぁーと思っていました。
自分の今持っているSQLの本は因みにACCESS(SQL)様
の本を見て今勉強しています。
ありがとうございましたo(^o^)o

998 :デフォルトの名無しさん:05/01/30 16:41:31
よくわかりませんが1000近いので挨拶にきました。

999 :デフォルトの名無しさん:05/01/30 16:42:10
こんにちは

1000 :デフォルトの名無しさん:05/01/30 16:44:19
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1107056382/

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

307 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)