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

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

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

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

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

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

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
2デフォルトの名無しさん:04/12/23 00:26:39
2さま
3デフォルトの名無しさん:04/12/23 00:53:41
4様上陸ドゾー↓
4デフォルトの名無しさん:04/12/23 00:55:16
    ,,r 、,r'"⌒`゙゙ヽ、     +
   /  "~ ヽ、    `ゝ    +
. ./ ,r彡"   、ノ彡' ヽミ`\   +
 r、r.r 、 ソ/ノ     ヽ `ゝ   + 
 _ ,|_,|  ノ   ⌒    ⌒ヾ|ミヾ   + 
 ノ ノノノノ--<-●>-,(-●>ミ ミ    + 素敵な微笑とともに4様上陸!
 ノ ノノノノ   ""    )  " ミ    +
ノ .彡| |     トーー/| | ミ   
   ∧ | \  ..ヾ____/  ..|
   |ノ \  \  "⌒  ノ\
   ヽ 《   ..~ ー--/   /
5デフォルトの名無しさん:04/12/23 01:00:59
Smithマダー
6デフォルトの名無しさん:04/12/23 01:01:57
      /!/{  / ヾ--r
   _  /     ̄    <_
 _>`´    >>4 __<_
  >    r‐'" ̄ ̄ ノ ̄ ̄`ヽ、―ニ 二
/ ,    |  `ヽ/ ´`ヽ _  三,:三ー二
 ̄/    |   ノヽ--/ ̄ ,    ` ̄ ̄ ̄
 / /⌒ヽ,|  ミ }  ...|  /!
 レ l d     _}`ー‐し'ゝL _
  | ヽ、_,   _,:ヘr--‐‐'´}    ;ー------
  |/|  \   ノ`ヾ:::-‐'ーr‐'"==-
    ヽ/l/|` ー------r‐'"    ̄ ̄
      |└-- 、__/`\-:、   
     __,ゝ,,_____/ \_」 \
7デフォルトの名無しさん:04/12/23 01:02:21
Smith! Smith! Smith!
8デフォルトの名無しさん:04/12/23 01:46:42
JavaTMプログラムのTMってどういう意味ですか?
あと、TMって上半分に打ち込むにはどうしたらいいですか?
IME使ってます
9デフォルトの名無しさん:04/12/23 01:49:19
JNIのDefineClass関数を使った人いますか?
任意に作成したオリジナルのクラスをバイト配列からクラスオブジェクトを生成したり、
インスタンスを戻り値に返したりとか。
どこの板でも「使う意味ない」とか、「Javaで出来るんだからJNIでも出来るはず」
などはぐらかされてばかりなんです。
正しい実装方法知ってる人いますか?
出来ればソースレベルで説明できて、実際に試したことある人が
ありがたいです。

というか、↑の質問に暗号ってどこに書いてある?
あと試してもいないのにと思っているが、
試してだめだって、atmarkitにも記載されてある。
もっち良心的にになろうよ。あげあしとるのもほどほどに。
10デフォルトの名無しさん:04/12/23 01:58:14
staticメソッドにするか、オブジェクトにするかをどうやって判断すればいいのでしょうか。
例えばDiceというクラスを作った場合、
staticメソッドでshake(int facet)を呼んで値を取得することもできますし、
Dice(int facet)コンストラクタを使ってオブジェクトを生成したのち、
dice.shake()として値を取得することも出来ます。

どっちが良いのでしょうか・・・?
11初心者 ◆Java/isQ.c :04/12/23 01:58:38
>>8
TM は trademark のこと。日本語で言うと商標とか。
上半分に打ち込む方法はソフトウェアごとにそれぞれ。
いずれも Java に関する質問では無いような気がします。
12デフォルトの名無しさん:04/12/23 02:00:29
>>8
>JavaTMプログラムのTMってどういう意味ですか?
Trademark; 商標

>あと、TMって上半分に打ち込むにはどうしたらいいですか?
&trade; ™
13デフォルトの名無しさん:04/12/23 02:11:38
>>11-12
有難うございます

>™ ™
ごめんなさい、意味が解らないです
コピペしたら変わってるし(´・ω・`)
ソフトによって変わるというのはこの事だと思うのですが
どうしたらいいんですか?
OpenJane使ってます
これが解ったら去ります
14デフォルトの名無しさん:04/12/23 02:15:33
>>13
「商標」については国語辞書引けば普通に見つかるので調べて。
ウェブで上付の「TM」を表示したいならアンパサンドtradeセミコロンを入力しろということ。
「実体参照」というものだが、これは国語辞書では出てこないのでGoogleで調べて。


ところでJ2SE5.0を利用できる開発環境って何になるでしょうか。
Eclipseは未対応ですが、他環境ではどうなのでしょう?
15デフォルトの名無しさん:04/12/23 02:15:45
16デフォルトの名無しさん:04/12/23 02:23:11
>>13
どっちかっつうとこの世から去って
17デフォルトの名無しさん:04/12/23 02:23:49
>>10
その例なら、現実のDiceを考えればfacetはDiceの属性なんだから、Dice(int facet)コンストラクタが正解。

staticで用意するにしてもあくまでそれはユーティリティメソッドであって
内部で return new Dice(facet).shake(); するだけ。

・・・shakeってのが激しく気持ち悪いが
1813:04/12/23 02:24:22
>>14-15
有難うございます
投稿した後、また変換されてるのを見て
自分でも気づきました
迷惑かけてスイマセンでした
19デフォルトの名無しさん:04/12/23 02:26:17
>>14
Eclipse3.1 M4
2010:04/12/23 02:46:07
>>17
ありがとうございます。よくわかりました。

確かにshakeは一考の余地がありそうですね。
rollか、shootあたりが良さそうです。
21デフォルトの名無しさん:04/12/23 02:53:44
import java.util.Random;
public class Test
{
public static void main( String[] args )
{
Random random = new Random();
int[] array = new int[5000000];
for( int i = 0 ; i < array.length ; i ++ )
array[i] = random.nextInt();

int loop = 10;
int[] buf = new int[ array.length ];
System.out.println("array copy");
long start;
for( int i = 0 ; i < loop ; i ++ )
{
start = System.currentTimeMillis();
System.arraycopy( array , 0 , buf , 0 , array.length );
System.out.println( System.currentTimeMillis() - start );
}

System.out.println( "assignment copy" );

for( int i = 0 ; i < loop ; i ++ )
{
start = System.currentTimeMillis();
for( int j = 0 ; j < array.length ; j ++ )
buf[j] = array[j];
System.out.println( System.currentTimeMillis() - start );
}
}
}
22デフォルトの名無しさん:04/12/23 02:54:37
>>21
array copy
220
220
160
170
270
220
170
270
170
220
assignment copy
320
330
330
330
280
380
280
380
270
330
になった。
微妙にarraycopyつかったほうが早いな
23デフォルトの名無しさん:04/12/23 03:13:08
>>14
JBuilderの新しい奴も5.0対応してる
24デフォルトの名無しさん:04/12/23 03:14:10
>>14
Netbeans 4.0
25デフォルトの名無しさん:04/12/23 05:49:15
>>21,22
まあ配列アクセス時の(内部的な)添字チェックのせいだろうな。
26デフォルトの名無しさん:04/12/23 07:36:18
いきなり躓きました、助けてください
エラーメッセージのs"Hello World"は最初に作ったソースのsです
その時エラーが出て(以下のエラー)見直しても解らなかったのでもう一度sを変更し
ソースを書き直して(以下のソース)コンパイルしてみたのですが
エラーメッセージも変わりませんでした。
ソースじゃなくて何か違う問題があるのかな
アドバイスください

//ソース
public class Smp1{
public static void main(String args[]){
String s="My First java.";
System.out.println("文字列sの値は"+s+"です");
}
}

//エラーメッセージ
検出値 : java.lang.String
期待値 : String
String s = "Hello World";
^
エラー 1 個
27デフォルトの名無しさん:04/12/23 08:11:30
>>26
普通にコンパイル通るよ、なんか環境壊れてない?
2826:04/12/23 08:34:12
>>27
そうですよね
エラーメッセージすら変わらない時点で
何かがおかしいと思ってたんだけどその何かがわからん
環境変数もしっかりやったし何故だろうか
もう一度ダウンロードからし直すかな('A`)
29デフォルトの名無しさん:04/12/23 08:58:07
え?
30デフォルトの名無しさん:04/12/23 12:42:13
>>26
パスの通っているどこかにStringという名前のクラスがあるんだと思います。
とりあえずそれを消しましょう。
31デフォルトの名無しさん:04/12/23 13:45:31
つい先ほどJDL1.3から1.5にインストールしなおしたのですが
1.5にしてからアプレットを作るとIEで表示されなくなりました左下にload class not foundとでる
(1.3でコンパイルしたときは表示されました)
アプレットビューワーを使うと表示できました

そのためHTML CONVERTERをインストールして使用してみたのですが
左上に変なマークがでてそれが消えるとアプレットがインストールする部分がなくなってしまいました
簡単に言うとHTMLの背景一色になってしまいます

これ何が悪いのでしょうか?
どうしたらアプレットを表示できるようになるか分かる方いたらお願いします
32デフォルトの名無しさん:04/12/23 13:48:06
JDL
3331:04/12/23 13:50:10
JDLじゃないですJDKです
タイプミスすみません
34初心者 ◆Java/isQ.c :04/12/23 14:07:05
>>26
String を java.lang.String に書き換えてみては?
もし String という名前のクラスを自作したことがあれば、
java.lang.String でなく、そちらを参照している可能性が。
35初心者 ◆Java/isQ.c :04/12/23 14:10:17
>>30
PATH ではなく CLASSPATH ですよね?
CLASSPATHに含まれる String クラスを消さなくても、
>>29 の対応で良いかと思いますが、いかがでしょう?
36デフォルトの名無しさん:04/12/23 14:14:43
>>31
1.3でもターゲットかえないとダメだよ
たまたま動いていたに過ぎない

たぶん5.0で問題でたということはStringBuilderまわりかな
3731:04/12/23 14:21:35
StringBuilderってどこのことだかちょっと分からないのですが

import java.applet.Applet;
import java.awt.*;
public class applet extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello from Java!",60,100);
}
}
ソースです
38デフォルトの名無しさん:04/12/23 14:27:08
>>26
開発環境を教えてください。
JBuilderなどのIDEの前バージョンを使ってると、IDEのコンパイラと
JDK1.5の環境の不整合が出るケースがあり
"xxx" + text + "xxxx" の様な文字列連結式を使うとエラーが出ます。
39デフォルトの名無しさん:04/12/23 14:38:11
>>35
全てのjava.lang.Stringを完全限定名で指定しなければならなくなりますよ。
せめてパッケージに入れるべきでは。
40デフォルトの名無しさん:04/12/23 14:49:10
String A="0123456789";
String B="ABCDEFGHIJ";
main(){
start();
System.out.print(B);
}
run() {
System.out.print(A);
}


これ実行したら

>>012345AB678C9

たまにこんなふうに出力されるでしょうがどうやって対処できますか?
41デフォルトの名無しさん:04/12/23 15:08:57
>>40
System.out.print(B); のまえに、スタートしたスレッドに対してjoin()を呼び出す。
42デフォルトの名無しさん:04/12/23 15:28:02
>>31
javac -target 1.1 HelloApplet.java

1.4ではデフォルトターゲットが1.2に、1.5ではデフォルトターゲットが1.5に
変わったから-targetオプションなしではMS-JVM(1.1.4)環境で動くクラスファイルが生成されない。
43デフォルトの名無しさん:04/12/23 15:33:12
printlnは同期化されてるだろ
44デフォルトの名無しさん:04/12/23 15:38:39
>>39
ご回答ありがとうございます。納得しました。

自分の場合、言語の処理系を開発していた際、その中で String や Integer など、
java.lang パッケージ内のクラスと名前が被るクラスを作る機会があったため、
その後、java.lang.String などと完全限定名で指定する癖がついていました。

このため、特に面倒には感じなかったのですが、
普通に考えると、完全限定名の使用は面倒かもしれませんね。
45初心者 ◆Java/isQ.c :04/12/23 15:39:41
>>44
名前を入れ忘れました。orz
46デフォルトの名無しさん:04/12/23 16:29:12
お願いしまふ。以下はデータベースを利用するためのユーティリティクラスで、
JNDIを利用してコネクションを取得するのだが、sqlもアクセスも使わずテキストファイルを
書き込んだり読み込んだりするかたちにしたい。
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public final class DBUtil {
private static DBUtil obj = null;
private Connection con = null;
private Statement stmt = null;
//このクラスのインスタンスを取得するための唯一のメソッド
//ServletContextを渡し、この中でコンテキストパラメータを取得する
public static synchronized DBUtil createInstance()
throws Exception {
if(obj == null) {
obj = new DBUtil();
}
return obj;
}
//このコンストラクタはprivateであるので、外部からは利用することができない
private DBUtil() throws Exception {
Context ctx = new InitialContext();
47デフォルトの名無しさん:04/12/23 16:29:47
>>46続き
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/yasaishop");
con = ds.getConnection();
stmt = con.createStatement();
}
//新規ユーザを登録するメソッド
public synchronized boolean addUser(User user) throws Exception {
//登録しようとしているIDが存在するかチェック
String sql = "SELECT * FROM USER WHERE user_id='";
sql += user.getId() + "';";
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()) {
rs.close();
return false;
}
rs.close();
//新規ユーザを登録する
sql = "INSERT INTO USER VALUES('";
sql += user.getMail() +"','"+user.getId()+"','";
stmt.execute(sql);
return true;
//仮登録したユーザを削除する
sql = "DELETE FROM PROVISIONAL_USER WHERE user_id='";
sql += user.getId() + "';";
stmt.execute(sql);
return true;
}

}
48>>46:04/12/23 16:32:55
テキストファイルに
userid1;usermail1;
userid2;usermail1;
 ・
   ・
   ・
という形で書いていけたらいいと思うのだが…
よろしくお願いします
49デフォルトの名無しさん:04/12/23 17:10:01
>>46スレ違いで死た
いってきまふ…
失礼しました。
5031:04/12/23 17:26:47
>>42
なんとなく言いたいことは分かりました。
しかしjavac -target 1.1 applet.java
見たいにDOSでやりますと

javac: ターゲットリリース 1.1がデフォルトのソースリリース1.5と競合しています
とでてうまくコンパイルできないのですが・・
51デフォルトの名無しさん:04/12/23 17:37:30
正規表現なんですが、
<TAG bar="foo" aho="hoge">ごにょごにょ</TAG>
みたいな文字列から、barとahoの値とタグで囲まれた部分を取ってくるのって
Pattern p = Pattern.compile("<TAG bar=\"(.*)\" aho=\"(.*)\">(.*)</TAG>");
でどこが間違ってます?
Macherのgroup(1)の中身が
foo" aho="hoge">ごにょごにょ</TAG>
となってしまって、二個目の\"を見てくれてないみたいなのです
52デフォルトの名無しさん:04/12/23 17:54:24
>>51
XML文書のパースしたいのなら、XMLパーサ使った方が簡単だと思う。
53デフォルトの名無しさん:04/12/23 18:05:20
>>50
それなら javac -target 1.1 -source 1.1 HelloApplet.java
54デフォルトの名無しさん:04/12/23 18:08:10
>>51
.には"も含まれるから。
せめて
Pattern p = Pattern.compile("<TAG bar=\"([^"])\"\\s+aho=\"([^"]*)\">([^<]*)</TAG>");
ぐらいしとけ
5531:04/12/23 18:13:54
>>53
javac -target 1.1 -source 1.1 HelloApplet.java
だと1.1は向こうなソースバージョンです。って出てしまったので
javac -target 1.1 -source 1.2 HelloApplet.java
にしてみたらうまくできました
いろいろありがとうございました
56デフォルトの名無しさん:04/12/23 19:18:39
JAVAでデスクトップアプリケーションを作りたいと思っています。

Win32ネイティブのデスクトップアプリケーションの場合、
アプリケーションのユーザー設定を、iniファイルやWindows Registryに
記録するのが一般的だと思いますが、JAVAのデスクトップアプリケー
ションの場合、一般的にはどのような方法で設定を記録するのでしょうか?
57デフォルトの名無しさん:04/12/23 19:27:52
>>56
アプリならご自由に、としかいえんが
それは人それぞれの考え方だし

Linux等へ持っていくことを考えればXMLかなんかのファイルで最初から扱ったほうが楽だろうね

Preferencesはそれなりに使いやすいし、プラットフォームを変えるためのロード命令とか
準備はされているんだけれども・・・
58デフォルトの名無しさん:04/12/23 19:31:34
質問です。
空文字かどうかを判定するのに
equals("")を使うのとlength()==0を使うのって
どっちがいいんですか?好みの問題ですか?
59デフォルトの名無しさん:04/12/23 19:33:04
>>52,54
XMLパーサ弄ってます
なんかよく分かんないっすね
60デフォルトの名無しさん:04/12/23 19:38:47
>>57
とりあえず、Preferencesを使ってみようと思います。
回答ありがとう。
61デフォルトの名無しさん:04/12/23 19:55:30
>>58
String str が空文字列かを調べるとき
str が null になることがないなら str.equals("") でも str.length()==0 でも
(さらには "".equals(str) でも) 好みの問題。

str が null になることがあるなら "".equals(str) 一択。
62デフォルトの名無しさん:04/12/23 20:12:37
>>58
length()==0が一番良い。

>str が null になることがあるなら "".equals(str) 一択。

これは、「strがnullでない」かつ「strの内容が""である」ことを示すだけだから
ほとんど役に立たない。
63デフォルトの名無しさん:04/12/23 20:17:55
>>62
length() < 1 だろ。
64デフォルトの名無しさん:04/12/23 20:28:14
>>62
strがnullだとstr.length()でぬるぽ。
それがいやだから"".equals(str)なんだと思うが
65デフォルトの名無しさん:04/12/23 20:32:18
すいません。
java.sql.*で
スキーマが分かっていて
その全テーブル名を取得したのですが、
どうすればいいのですか?

66デフォルトの名無しさん:04/12/23 20:35:10
show tables
67デフォルトの名無しさん:04/12/23 20:37:37
SQLとかdb依存じゃなく、javaで
68デフォルトの名無しさん:04/12/23 22:06:10
>>65
DBに依存しないのは無理。
69デフォルトの名無しさん:04/12/23 22:14:56
>>65
使用するJDBCドライバが対応しているのなら、
DatabaseMetaData#getTables(String,String,String,String[])
でできる。

JDBCドライバの実装に依存するが、一応これがJDBC標準の方法。
70デフォルトの名無しさん:04/12/23 23:14:30
ボタンがクリックされるごとに現在の日付と時刻を画面の中央に表示するアプレットを作成せよ。

上記の問題でプログラムソースをお願いします。
71デフォルトの名無しさん:04/12/23 23:20:25
>>70
スレ違い。
ttp://pc5.2ch.net/test/read.cgi/tech/1100565043

自力でやりたいのなら、java.util.Date、java.applet.Applet、
java.awt.Button、java.awt.Labelあたりを調べるといい。
72デフォルトの名無しさん:04/12/23 23:33:30
ありがとうございます。テーブル取得できました。
すみませんが、もうひとつ教えてほしいのですが、

カラムのデータ型とかLENGTHを取得したいのですが
どうすればいいでしょうか?
73デフォルトの名無しさん:04/12/23 23:50:33
ResultSetMetaDataでも調べておけ。
とれるのはあくまでJavaの型であってDB依存部分はとれないだろうがな。
74デフォルトの名無しさん:04/12/23 23:50:37
classのファイルからjavaのファイルに戻すことはできるんですか?
できるならやり方を教えてください
いろいろなプログラムを見て勉強したいんですが
class(完成したもの)しかない場合が多いのでお願いします
75初心者 ◆Java/isQ.c :04/12/23 23:58:34
76デフォルトの名無しさん:04/12/24 00:08:58
>>64
"".equals(str)の後にstrがnullかどうかのチェックはしないのか?
するんだったらここでnullチェックをしない意味が無い。
しないんだったら常にNullPointerExceptionの可能性がある。
strがnullになり得ないのならstr.length()==0で十分。

結局同じこと
77デフォルトの名無しさん:04/12/24 00:25:41
>>76
equalsにnull渡してもぬるぽしねーよ。
78デフォルトの名無しさん:04/12/24 00:35:22
Eclipse3.01にTomcatプラグインの3.0乗せて
Tomcat5.0動かそうとしてるんですが、どうにも動かないんです。
こういうときってどこで聞けば良いんでしょう?
OSはWinXP SDKは、1.42_06です
79デフォルトの名無しさん:04/12/24 00:41:36
>>76
こんばんは、Smith君
80デフォルトの名無しさん:04/12/24 00:51:50
TOMCAT_HOME
81デフォルトの名無しさん:04/12/24 00:51:53
Smith君にはまいるよ。
82デフォルトの名無しさん:04/12/24 01:03:30
Vector v = new Vector(1);
v.add("Hello");
v.add("Hello2");
v.add("Hello2");
System.out.println(v.capacity());

コレ出力したら4になりました!!
最初からなにか入ってるんですか?
83デフォルトの名無しさん:04/12/24 01:10:56
>80
Tom君が5.0ならCATALINA_HOMEじゃないの?
84デフォルトの名無しさん:04/12/24 01:14:06
>>82
要素数を知りたいなら、size()。
capacity の仕組みを知りたいなら、Javadoc 読め。
8510:04/12/24 01:20:37
>>17氏の助言に従ってDiceクラスを使ってみました。
ついでにstaticメソッドでDiceを振ることもできるようにしてみたのだけど、
これがどうも芳しくなかったりします。
シードをミリ秒時刻で初期化しているため、サブミリ秒オーダーで
乱数が生成されると同じ値が連続してしまう。
シードを設定せずにRandomオブジェクトを作れば
毎回違う値が出るんですが、
これって何を種にしてるんでしょう? JavaDocの説明を読んでもよくわからない・・・
86デフォルトの名無しさん:04/12/24 01:22:22
>>85
シードを設定をループの外へ
8710=85:04/12/24 01:39:24
>>86
コンストラクタでシードを初期化している。

staticメソッド(サイコロを振る)はコンストラクタを呼ぶ

staticメソッドを高速で呼ぶと同じ数値が並ぶ

というオチなのです。
結局、staticメソッドは高速で呼ばないようにするか、
そもそも用意しないでオブジェクトを作らせるか、
というふうにすべきなのでしょうね。
88デフォルトの名無しさん:04/12/24 02:03:09
>>87
すべてを知るGodクラスを作って、すべてのDiceは単一のGodへの参照を持つ形にする。
実際の値を生成するのはGod

public class God {
 public Dice createDice(int facet) {
  return new Dice(this, facet);
 }
}
8988:04/12/24 02:10:18
>>87
参照を持つのが嫌ならseed値を与えるだけのクラスとかもアリだし、
Diceだけで完結させるなら
class Dice {
&nbps;private static int getNextSeed(){...}
}
とかもあり。
90デフォルトの名無しさん:04/12/24 02:10:58
俺スパルキア軍ね
91デフォルトの名無しさん:04/12/24 02:12:49
>>77
よく読め。equals()の後の話
92デフォルトの名無しさん:04/12/24 02:18:48
>>76
>だから str.length() < 1 だって言ってるだろ
このトンヌラ
93デフォルトの名無しさん:04/12/24 02:21:55
>>85
1.4と1.5でRandomコンストラクタのアルゴリズムが変わってる。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Random.html#Random()
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Random.html#Random()

1.5では同じミリ秒内に複数Randomを作っても違うシード値を割り当てるようだ。
試してないけど。
多分private staticでRandomかintか持ってるんじゃないかな。
94デフォルトの名無しさん:04/12/24 05:04:28
J2SE SDKがダウンロードできないのは僕だけですか
95デフォルトの名無しさん:04/12/24 05:15:36
Yes.
96デフォルトの名無しさん:04/12/24 05:22:06
97デフォルトの名無しさん:04/12/24 10:38:11
Eclipse 3 + Java5の組み合わせで使われている方いますか?
安定感とかどうでしょう?

すでに、使われている方いかがでしょうか?
98デフォルトの名無しさん:04/12/24 10:43:24
自分で試せばいいじゃない
99デフォルトの名無しさん:04/12/24 12:54:28
>>92

>このトンヌラ

ワラタ
100デフォルトの名無しさん:04/12/24 13:22:32
マルチモニタのためのAPIってJ2SEにゃついてないんすかね

何台ついてるかとか、解像度はどうかとか、別のモニタにもっていくとか
101デフォルトの名無しさん:04/12/24 13:23:49
マルチモニタの質問だからってマルチポストしなくてもいいじゃない
102デフォルトの名無しさん:04/12/24 13:25:11
独習javaを一応終わらせたのですが
次に読むおすすめ本は何でしょうか?
103デフォルトの名無しさん:04/12/24 13:29:18
>>102

もう本はいいんじゃない?

どういうコードを書くのが生産的か考えるのに、アジャイルソフトウェア開発についての本を読むのはいいかもしれん。
104デフォルトの名無しさん:04/12/24 13:39:27
>>100
AGPと旧PCIビデオカード二枚差しだったら
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
で GraphicsDevice が二つ出てくるね。

一枚のビデオカードでマルチモニタしてるとどーなるのかは知らん。
MatroxとNVidiaで挙動が違ったりするかもしれないし、同じかもしれない。
105デフォルトの名無しさん:04/12/24 13:45:51
>103

アジャイルソフトウェア開発ですか検索して調べてみます

いま独習javaの本紹介のところを見たら応用本として独習JSPって本があるのですが
どうでしょうか
自分はJSPという単語は持ち合わせておらず
辞書検索しても日本社会党がでてくるだけです
106デフォルトの名無しさん:04/12/24 13:51:09
>>105

JSPなんて、大手の派遣会社にでも行ってJSP使わせてくれる仕事くれといえば
やらせてもらえるとこ行けるから、そこでカネもらいながらがんばれ。
10731:04/12/24 14:33:19
すいませんIEでJavaをアプレットを起動させたいのですが
-target1.1だとTimerクラスがサポートされていないみたいで困っています

何か方法はないものでしょうか?
お願いします
108デフォルトの名無しさん:04/12/24 14:38:21
>>107
JRE1.4でも入れておけ
109デフォルトの名無しさん:04/12/24 14:39:35
>>107
なら動くように1.4とかででつくればいいじゃない
11031:04/12/24 14:41:45
>108
JREは自分のPCには入っているのですが入ってない人にも見れるようにしたいのですが・・

HTML CONVERTERというものを使ってみたのですが
初めアプレットが表示される領域が出た後
DLが終わったと思われるとそのアプレットが表示される領域がなくなるという現象になっているんですけど
何が悪いんでしょうか
111デフォルトの名無しさん:04/12/24 14:48:39
>>110
じゃあ1.1対応で作るしかないじゃない
11231:04/12/24 15:03:01
うー・・・どうにかならないですかね・・
<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<OBJECT classid="clsid:E19F9331-3110-11d4-991C-005004D3B3DB"
WIDTH = 500 HEIGHT = 300 codebase="http://java.sun.com/products/plugin/1.3.0_02/jinstall-130_02-win32.cab#Version=1,3,0,2">
<PARAM NAME = CODE VALUE = type.class >
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.3.0_02">
<PARAM NAME="scriptable" VALUE="false">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=1.3.0_02" CODE = type.class WIDTH = 500 HEIGHT = 300 scriptable=false pluginspage="http://java.sun.com/products/plugin/1.3.0_02/plugin-install.html"><NOEMBED>
</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
<!--
<APPLET CODE = type.class WIDTH = 500 HEIGHT = 300>
</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->
こういうふうに変換されて表示するときは左上に赤と青と緑のぽちぽちがでてきて
それが消えるっていう感じなんですが・・・

HTML CONVERTERの使い方が間違ってるとかないですかね?
それとも、もともとHTML CONVERTERを使ってもTIMERクラスはIEではできないんでしょうか?
113デフォルトの名無しさん:04/12/24 15:17:52
>>112 自分で書いた動作の怪しいコードじゃなくて、SDKのデモについてる
Clockとか簡単で確実なコードとhtmlつかってまずhtmlconverterの使い方
を確認してみたら?
11431:04/12/24 15:34:10
>>112
よく分かりませんけど簡単なアプレットではできたので
PC再起動してもう一回やったらできました。
HTML CONVERTERすごいですね
ありがとうございます
115デフォルトの名無しさん:04/12/24 15:34:41
>>110
JREがないところでアプレットはうごきませんがな
XPsp1a以降MSのVMもないんだし
116デフォルトの名無しさん:04/12/24 16:15:42
C:\dirにあるabc.txtのファイル名をxyz.txtに変更したいんですが、
以下のようなコードではうまく行きません。どこが違うのでしょうか。
existsメソッドで元のファイルは存在することを確認できているので、
パス名が違うということはないはずなんですが。

File old_file = new File("C:\\dir\\abc.txt");
File new_file = new File("C:\\dir\\xyz.txt");
old_file.renameTo(new_file)
117デフォルトの名無しさん:04/12/24 16:19:35
>>116
普通にできるけど?
強いて上げるなら、3行目の最後に;が付いてないくらいか
118デフォルトの名無しさん:04/12/24 16:28:01
>>116
「うまく行きません」としか書かないでどうなるのかを書かないのはよくない。
ファイル名が変更できないだけなのか、例外が起こるのか、等。
エラーや例外が発生するのならそのメッセージもそのままコピペしろ。
119116:04/12/24 16:28:44
>>117
最後のセミコロンがないのは、ただの書き忘れです。

old_file.renameTo(new_file)の結果を出力すると、何故かfalseを
返しているんですよね。old_file.exists()の結果はちゃんとtrueを
返しているのに。どこが違うのかさっぱり分からない。
120116:04/12/24 16:30:37
>>118
例外は一切発生しません。ファイル名が変更できないんです。
あとは>>119の通りです。
121デフォルトの名無しさん:04/12/24 16:39:27
パーミッションとかいうオチだったりして。
122デフォルトの名無しさん:04/12/24 16:39:46
>>116
ファイルの書き込み、変更権限がないだけじゃねーの
123デフォルトの名無しさん:04/12/24 17:51:00
システムドライブのルートはデフォでアクセスできないからな
124デフォルトの名無しさん:04/12/24 18:47:32
XMLのエレメントからAttrのデータを取得して、そのデータをコンストラクタのパラメータに使ってオブジェクトを作っています。
エレメントは複数あり、ループで生成したオブジェクトをArrayListに代入していきたいのですが、
その際全く同じ内容のものは代入したくありません。
そこでこのようにしてみました。

for(int i=0; i<nodeList.getLength(); i++){
 Element elem = (Element)nodeList.item(i);
 MyObj myObj = new MyObj(
  elem.getAttribute("attr1"),
  elem.getAttribute("attr2") );
 if(!myArrayList.contains(myObj))
  myArrayList.add(myObj);
}

この例で言うと、attr1とattr2の両方が同じものが既にmyArrayListに追加されているなら、
もう追加したくないのです。

しかし、これを実行すると(!myArrayList.contains(myObj))の評価が
必ずtrueとなり、全てのオブジェクトがmyArrayListに追加されてしまいます。

どうすればよかとですか?
125デフォルトの名無しさん:04/12/24 18:52:12
>>124
MyObjクラスのequalsメソッドを実装しろ
126デフォルトの名無しさん:04/12/24 18:59:40
Set
127デフォルトの名無しさん:04/12/24 19:00:38
>>124
なんかあぶなっかしいから、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/List.html#contains(java.lang.Object)
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Object.html#equals(java.lang.Object)
の二つも必ず読んでおくようにね。
128デフォルトの名無しさん:04/12/24 23:26:19
>>91
実にアホだなあ。
もともとの質問では「空文字列と等しいかどうか調べる」としか言ってないのに
勝手に自分で都合のいいように解釈して
鬼の首でもとったかのようにぎゃーぎゃー言って。
129デフォルトの名無しさん:04/12/25 00:10:40
>>124
それがしたいなら、ArrayListよりはSetのどれかを使った方がいいね。Setは
同じオブジェクトを入れられないコレクションだと思いねえ。Listがいいなら、LinkedHashSetだろうか。

ただ、>>125が言っているように、どちらにせよequalsをきちんと定義することが必要。
「同じもの」というのは「equalsがtrueを返すもの」という意味なんで、MyObj#equalsを
君の望む「同じ」という概念にあわせて実装する必要がある。

ちなみに仮にMyObjがObjectのサブクラスで、equalsを独自に実装していない場合の
動作は「同じインスタンスならtrue」なので、違うインスタンスである限りかならずfalseに
なる。なのでいくらでも追加できる。
130デフォルトの名無しさん:04/12/25 01:05:31
TEST
131デフォルトの名無しさん:04/12/25 02:55:36
動的にクラスパスを変更する処理を行いたいのですが
C:\classpathにHello.classファイルを置いてjavaプログラム中で

System.setProperty("java.class.path", "C:\\classpath;");
Class.forName("Hello");

としてHelloクラスをロードしようとするとjava.lang.ClassNotFoundExceptionを吐かれてしまいます
getPropertyで確かめるとクラスパスの値は確かに変更されてるようです
Hello.classは普通に-cpオプションでC:\classpathを指定すると起動出来ます

クラスパスを動的に変更することは不可能なのでしょうか?
環境はWindowsXPHomeでj2sdkは1.4.2_05です
132デフォルトの名無しさん:04/12/25 03:28:28
>>131
確か起動後に設定しなおしてもクラスの読み込みには反映されない。
クラスパスをいじるんでなくクラスローダを何とかするがよい。
133デフォルトの名無しさん:04/12/25 09:25:50
クラスAAAに別のクラス型のメンバー変数を持たせて、AAAのコンストラクターに
このメンバー変数のクラス名を引数として渡して動的に異なるクラス型の変数を
生成させるにはどのようなコーディングをすればよいでしょうか?
(このようなことをググるためのキーワードだけでも教えていただければ助かります)
134デフォルトの名無しさん:04/12/25 09:58:44
Class Class#forName(String) Class#newInstance() Reflection reflect リフレクション
135デフォルトの名無しさん:04/12/25 11:44:18
コマンドラインって、どういうこと?ですか?
136デフォルトの名無しさん:04/12/25 11:49:06
Windows だと MS-DOSプロンプトとかコマンドプロンプトとか。
とりあえず Java の質問じゃないので他所行って勉強してください。
137デフォルトの名無しさん:04/12/25 12:08:38
class In
{
public static void main(String args [])
{
int i = Integer.valueOf(args[0]).intValue();
if((i%2)==0)System.out.println("偶数");
if((i%2)==1)System.out.println("奇数");
if((i%2)==-1)System.out.println("奇数");
}
}


をやると、

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at In.main(In.java:5)

が、出ます。どこがまずいのでしょうか?
138デフォルトの名無しさん:04/12/25 12:12:50
引数付けて起動してないから

あるいは、引数の数をチェックしてないから
139デフォルトの名無しさん:04/12/25 12:15:32
>>138
i = 10;
とかですか?
140デフォルトの名無しさん:04/12/25 12:18:56
>>139
C:\Documents and Settings\username>java In 10
とか
141デフォルトの名無しさん:04/12/25 12:19:31
Java 入門 | コマンドライン引数と配列
http://msugai.fc2web.com/java/array.html
142デフォルトの名無しさん:04/12/25 12:34:07
(args[0])に、何も入ってないということですね?

class Multiply {
public static void main(String[] args) {
double a = Double.parseDouble(args[0]);
double b = 1.05;
System.out.println(a * b);
}
}

これの(args[0])には、どうやって値を入れてるのかを教えてもらえますか?
このソースには、代入式がないようですが・・・
143デフォルトの名無しさん:04/12/25 12:35:47
>>142
EclipseとかNetbeansとかつかってない?
それだと最初はわからんかもなあ。
144デフォルトの名無しさん:04/12/25 12:39:58
>>141のサイトと、僕の本に>>142こうやって書いてありました。
145デフォルトの名無しさん:04/12/25 12:45:09
>>142
args[0] は存在しない。

財布に何も入ってないのと財布が無いのとはちょっと違う。
146デフォルトの名無しさん:04/12/25 12:51:19
class In
{
public static void main(String [] args)
{
System.out.println(args[0]);
}
}

これをコンパイルして、
javac In.java

java In Hellow

とやると、次の行にHellowと出ますが。
そういうことだったのでしょうか?
147デフォルトの名無しさん:04/12/25 13:02:33
もしかして: Hello
148デフォルトの名無しさん:04/12/25 13:04:52
>>147そうHello
149デフォルトの名無しさん:04/12/25 13:31:21
>>144
そのサイトの、配列説明のところの実行例は間違ってるね。
コマンドライン説明のところの実行例はあってるみたいだけど。

java In じゃなくて、java In 引数 とすると、引数が配列に入る。
150133:04/12/25 14:28:18
>>134
おぉー。リフレクションて言うんですか。早速調べて勉強します。
ありがとうございます。
151124:04/12/25 16:22:11
レスしてくれた方々ありがとうございました。
教えて頂いたことを調べてすこし変更し、このようにしました。

for(int i=0; i<nodeList.getLength(); i++){
 Element elem = (Element)nodeList.item(i);
 myHashSet.add(
  new MyObj(
   elem.getAttribute("attr1"),
   elem.getAttribute("attr2") )
  )
 );
}

このクラスの変更と言えば、ご指摘頂いたように
ArrayListをHashSetに変更した点です。
(Setの中でも今回はHashSetが一番向いていると思うのでこれにしました)

そして、MyObjにequalsメソッドを実装しました。
public boolean equals(MyObj myObj){
 if( p1 == o.getP1() && p2 == o.getP2() )
  return true;
 else
  return false;
}

これで実行してみたのですが、相変わらず全てのMyObjがmyHashSetに追加されてしまいます。
Setがaddする時に、どのように重複データか判定するのか、Setインターフェイスのドキュメントを読んでみると
>つまり、セット内に、(o==null ? e==null : o.equals(e)) に該当する要素 e がなかった場合は、指定された要素 o をセットに追加
とあるのですが、上のコードで言うMyObj#equalsをreturn true;だけにしても結果は同じで、
デバッグで確認しても、MyObj#equalsは呼ばれていません。

自分の考えの間違えをご指摘頂けませんでしょうか?
152デフォルトの名無しさん:04/12/25 16:29:27
>>150
リフレクションはツールが使うならいいが
アプリが使うなら設計ミスだと思ったほうがいい
153デフォルトの名無しさん:04/12/25 16:36:26
それにつけても、Java2D/AWTってマジおそかですよ
30fps, 640x480でTImerTaskでjava.awt.Canvasのpaintループ回したらCPU100%張り付きっぱなしっすよ

なんかイイ方法ないわけ?
154デフォルトの名無しさん:04/12/25 16:39:29
>>151
equals()の引数の型が違うためにオーバライドできていません。
そのために、相変わらずObject#equals(Object)が呼び出されてしまいます。

equalsの引数の型をObjectに変えて以下のように修正すれば正しく動くでしょう。
public boolean equals(Object obj){
 MyObj myObj = (MyObj)obj;
 if(...){
155124:04/12/25 17:12:48
>>154
ご指摘ありがとうございます。
教えて頂いたとおりにオーバライドしてみたのですが、
相変わらずMyObj#equalsは呼ばれていません。
Object#equalsも呼ばれていないようなので、他にも間違いが
あったようです。
いろいろ調べていたら、hashCodeを実装しないといけないのかな
と考えています。
(hashCodeの概念が全くわかっていないので今勉強中です)

ちなみに>>151のequalsメソッドは記述ミスです。
oじゃなくてmyObjですね。
156デフォルトの名無しさん:04/12/25 17:20:58
wiki逝ってない?
157デフォルトの名無しさん:04/12/25 17:23:17
あー、equalsを実装したらhashCode()も実装しないといけない。たしかに。
equalsがtrueならhashCode()は同じ値を返さないといけない。

ただ、Object#equals()も呼ばれてないなんてことがあるのかな?
158124:04/12/25 17:26:13
>>157
HashMapクラス内にこのようなところがありました
if (e.hash == hash && eq(k, e.key)) {

HashMap#eqはreturn x == y || x.equals(y);という内容です。
先にハッシュのチェックをして等価でなければその後は処理しないために
Object#equalsが呼ばれていないようですね。
159デフォルトの名無しさん:04/12/25 17:29:54
>>158に補足すると、HashSet#add(Object)はHashMap#put(Object,Object)に処理を委譲しているので、
この文脈で上記のコードが実行される。
160153:04/12/25 17:30:23
ダブルバッファするのにComponent.createVolatileImageからComponent.createImageに変えたら
少しマシになった
なんだこれ
161デフォルトの名無しさん:04/12/25 17:36:58
>>153
なにをやってそうなったかかいてもらわんと
重い描画と軽い描画があるし
コードによって速度は大幅に変わるよ

Java2DのWindowsでの実装はGDIでDIBやらDDBやらDirectXなわけだが
アクセラレーションがきく描画とそうでないものとあるわけで
162デフォルトの名無しさん:04/12/25 17:38:14
>>160
ダブルバッファの仕組みとかわかってないとどうしようもないな
Imageの確保の命令を理解していないとね

Windowsおせーとかいいつつアクセラレーションの聞かないGDI+を
使ってゲーム作ろうとしているのと似ている

検索すればいろいろ出てくるだろう
163デフォルトの名無しさん:04/12/25 17:55:32
>>162
それ位知ってるって。
理解してないなどと思ってるのはアンタだけ。
あまり頓珍漢な事言わんでくれ。
164デフォルトの名無しさん:04/12/25 18:13:36
>>153
三流メーカ提供の腐ったビデオドライバ(アクセラレータ使用)よりも
超一流のエンジニアが書いた転送ルーチン(アクセラレー? アクセラレーションがきく描画とそうでないものとあるわけで
165デフォルトの名無しさん:04/12/25 17:38:14
>>160
ダブルバッファの仕組みとかわかってないとどうしようもないな
Imageの確保の命令を理解していないとね

Windowsおせーとかいいつつアクセラレーションの聞かないGDI+を
使ってゲーム作ろうとしているのと似ている

検索すればいろいろ出てくるだろう
166デフォルトの名無しさん:04/12/25 17:55:32
>>162
それ位知ってるって。
理解してないなどと思ってるのはアンタだけ。
あまり頓珍漢な事言わんでくれ。
167デフォルトの名無しさん:04/12/25 18:13:36
>>153
三流メーカ提供の腐ったビデオドライバ(アクセラレータ使用)よりも
超一流のエンジニアが書いた転送ルーチン(アクセラレータ未使用)の方が
速い事もある。

これ、画像扱う奴の常識。
168153(not 163) ◆iKwMOjCT4s :04/12/25 18:41:42
>>164
そうか、ウチで使ってるビデオドライバはヘボで鈍いシロモノで、
ビデオメモリわ使わないJavaの画像転送ルーチンのほうが速かったわけか
169デフォルトの名無しさん:04/12/25 19:33:39
>>132
レスありがとうございます
クラスローダを自作することでなんとかクラスのロードまでは出来るようになりました
170124:04/12/25 19:43:51
hashCode()を実装することで問題なく動きました。
教えて頂いた方々本当にありがとうございました。
171デフォルトの名無しさん:04/12/25 20:55:44
>>163
これが釣りってやつか・・・

>>165
さらにいうと
VolatileImageはVRAMから確保
BufferedImageはDIBやDDBでの確保

基本的にメモリからビデオへの転送はバスがネックになるから
ビデオ内での転送じゃないと遅い

これはJavaに限らずDirectXでも同じことね

ただし、描画先がVolatileImageで描画元(スプライト)がBufferedImageで
ピクセルフォーマットがVolatileImageとBufferedImageが同じ場合に
DirectXによるアクセラレーションがきく

ピクセルフォーマットを同じにしたい場合はコンパチブルイメージを使う

とまぁ、ゲーム製作板ではあたりまえのことだけどね
作ってるのがゲームならそっちできいたほうがいいかも
172デフォルトの名無しさん:04/12/26 00:42:10
String s = br.readLine();
StringTokenizer st = new StringTokenizer(s, ",");
でa,b,cからaとbとcを取ってListに入れたいのですが,このときa,b,cだけではなく
a, b, cやa,b,c, ,,, , からもaとbとcを取れるようにしたいです
要するに空文字とスペースを全て排除したいのですが,どうするのが一般的なやり方でしょうか?
いちいち正規表現でスペースを空文字に置換してから,ifで空文字じゃないときだけ
Listに追加する,といった,なんかスマートには見えない方法しか思いつかないのです
173デフォルトの名無しさん:04/12/26 00:44:05
String#split
174デフォルトの名無しさん:04/12/26 00:55:42
s.split(",\s*")
であってますかしら
175デフォルトの名無しさん:04/12/26 00:55:51
new StringTokenizer(s, ", "); //カンマだけでなくスペースも区切文字に
ってのは?
でもこれだと、a b,c,もaとbとcに分割されてしまう。
StringTokenizerなら、,,,のような区切文字の連続は1つのトークンとみなされるから、
空文字の心配はしなくていいはず。
176デフォルトの名無しさん:04/12/26 00:57:02
s.split(",\\s*")
StringTokenizerは既にdeprecated扱い。
177デフォルトの名無しさん:04/12/26 01:02:42
>>173
それいまいちわからないんですが,\sの前についてる\はどういう意味なんでしょうか?
エスケープじゃないですよね
178デフォルトの名無しさん:04/12/26 01:06:52
エスケープだよ。Javaでは\で始まるとunicode指定だから、エスケープしないといけない。
179デフォルトの名無しさん:04/12/26 01:08:01
「\s」という文字列をJavaソース上で表す場合は"\\s"と書かないといけない。
正規表現という以前に、Javaソース内の文字列表現だから。
180デフォルトの名無しさん:04/12/26 01:19:05
>>175-176
にゃるほど
ありがとうございました
181デフォルトの名無しさん:04/12/26 01:35:59
>>173
えーとちょっと待って下さい
a, b ,cとかの場合もあるから
s.split("\\s,\\s*")
ですよね.でもこれだと末尾の空文字列は無視してくれるのですが,
a,b, , ,,,,cという文字列の場合,bとcの間の空文字列が全て要素として
含まれてしまいます.これはどう解決したらいいのでしょうか?
182デフォルトの名無しさん:04/12/26 01:41:26
>>178
まず実現したい仕様を正確に説明しろ。お前の頭の中なんで誰もわからん。
"a,b, , ,,,,c" をどう分けたいんだ?
183179:04/12/26 02:08:04
>>178 >>169
なんとなくわかった。
s[0]: "a", s[1]: "b", s[2]: "c"
なのか。それなら
s.split("\\s*(,\\s*)+")
184デフォルトの名無しさん:04/12/26 02:08:10
aとbとcを取り出したいのです
あらゆる空文字・スペースを無視したいのです
s.split("\\s,\\s*")だとbとcの間の空文字が全て要素として含まれてしまうのです
185デフォルトの名無しさん:04/12/26 02:14:19
>>180
おー,でけました
ありがとうございます
186 :04/12/26 03:58:25
実習Javaに簡単なメールクライアントのプログラムが載ってるのですがその中に

Address[] senders = message.getFrom();
if (senders != null || senders.length > 0) {
to = senders[0].toString();
}
to = message.getFrom()[0].toString();

というコードがあります。messageはjavax.mail.Massage型だそうです。
if文は必要ないように見えるのですが間違ってるのでしょうか?
187デフォルトの名無しさん:04/12/26 04:53:04
>>183
必要ないと思う理由は何だ
188デフォルトの名無しさん:04/12/26 04:57:51
>>183
スマン、if文の後見落としてた
そこだけ見ると確かに意味不明だな
189デフォルトの名無しさん:04/12/26 04:59:21
184晒しage

とても不思議なコードだ
190デフォルトの名無しさん:04/12/26 05:13:18
実は初版が
to = message.getFrom()[0].toString();
になってて、
読者からぬるぽ&out of bounds指摘されて修正したは良いが
元の行消すの忘れたとか言う落ちでは?
191デフォルトの名無しさん:04/12/26 05:40:56
参考書のサンプルコードに厳密なエラーチェックを求めるなってことだな。
192デフォルトの名無しさん:04/12/26 06:41:58
>>183
フイタw
193デフォルトの名無しさん:04/12/26 06:55:25
double型の2つの変数の大小を比較するときに、
その変数の中の数の大きさによって処理時間は変わるものでしょうか?
具体的には、if(AB<CD){CD=AB} ・・・というような比較を繰り返すのですが、比較される数字が1.0ぐらい同士のときと
10^18ぐらいのときとでは処理にかかる時間は違うのか、ということです。
194名無しさん:04/12/26 07:08:03
サンプルコード書いてみたら?
100000回くらいその計算をしてかかった時間を出力。
結果教えてね。
195デフォルトの名無しさん:04/12/26 07:19:40
>191
やるたびに時間変わってだめなんです。
sshで大学にリモートログインしてるんですけど、他の人の処理のせいで影響を受けているのかもしれません。
(timeコマンドを使っても処理が終わるまで実際にかかった時間しか計測できない環境です)
196デフォルトの名無しさん:04/12/26 07:55:29
>>192
自分のPC使えよ。ダウンロード&セットアップに10分もかからんだろ
197デフォルトの名無しさん:04/12/26 08:59:56
皆さんはimport staticってどの程度使います?
定数や静的メソッドが名前だけで呼べるのは楽なんですが、
使いすぎると出所がわかりにくくなります。
Eclipse環境(3.1M4)だとメソッドの指名インポートは通りませんし。

とりあえず私は
自パッケージ内のクラス、自分と同列かより上位のcommonパッケージ内のクラス、
java.*パッケージについては、非常によく使う場合に限って(技術計算が多くて
Mathメソッド内の静的メソッドを沢山使う、など)import staticするようにしています。
198デフォルトの名無しさん:04/12/26 11:25:27
今の方針: 絶対に使わない
199デフォルトの名無しさん:04/12/26 13:11:09
いちいち否定するな。
スタチックインポートの王道的使い方じゃないか。
200デフォルトの名無しさん:04/12/26 13:12:48
使い方を否定してる訳じゃない。
import static そのものを使わないと言っているんだ。
201デフォルトの名無しさん:04/12/26 13:53:40
java scriptをインストールしようとしたところ、「このプログラムは、
ご使用のインターネット接続設定では実行できません。
詳細はインストールノートをご確認ください。」と表示されてインストールできないんですが
どうしたらよいでしょう?
202デフォルトの名無しさん:04/12/26 14:04:37
>>198
java script の話題は別スレでどーぞ。
203デフォルトの名無しさん:04/12/26 14:08:10
>>199 ふん、このくずめが
204デフォルトの名無しさん:04/12/26 14:23:16
お金払って代わりにソース書いてくれる人を探すときって、どうやって探せばいいのかな?

205デフォルトの名無しさん:04/12/26 14:23:16
JavaScriptも中身は違っても名前は同じjavaなんだから、
ケチケチしないで答えてあげたらどうなのかね?
次スレのテンプレには、JavaScriptもOKですって入れても
いいかもしれん。
それとも単に分からないだけなのかな?
だったら失礼。
206デフォルトの名無しさん:04/12/26 14:35:21
jarファイルにexeファイルをいれてそのexeを実行ってできないのですか?
exeファイルはjavaじゃありません。
207デフォルトの名無しさん:04/12/26 14:40:59
>>203
JSmooth
208デフォルトの名無しさん:04/12/26 14:41:34
>>202
..まさか本気で書いてる?冗談だよね?
209デフォルトの名無しさん:04/12/26 14:42:13
>>202
晒しage
210デフォルトの名無しさん:04/12/26 14:42:51
202晒し上げ。
211デフォルトの名無しさん:04/12/26 14:44:26
>>204
ごめんなさい、言葉足らずでした
javaをexeで実行したいのではなく、java以外で作ったexeファイルをjarに入れて
その中で実行できる方法はないかと聞きたかったんです。

ためしにjarにexe突っ込んだんですけど実行できませんでした
なにかPathかなにか必要ですか?それとも実行は無理ですか?
212デフォルトの名無しさん:04/12/26 14:44:56
そんなに簡単に釣られんなよ
213デフォルトの名無しさん:04/12/26 14:47:54
>>204,208
それなら、.jarの中にhello.exe入れて、
Class#getResorceAsStream("/hello.exe")かなんかでInputStream取り出して、
FileOutputStreamで外の世界にファイル保存、
Runtime#execで実行。

できるかどうか知らん。
214デフォルトの名無しさん:04/12/26 14:58:31
>>204,208
javaでCPUエミュレートするとかな。

冗談みたいな話だが、その方法でlinuxを動かしているのを見たことがある。
(開発元も消えてしまったし、詳しいことは知らん)
215デフォルトの名無しさん:04/12/26 15:23:30
MS-DOS程度のメモリ管理とファイルアクセスだったら結構簡単に作れるかも。
216デフォルトの名無しさん:04/12/26 15:47:43
202=198 だろ。こんな非常識な奴がそうそういるわけない。
217デフォルトの名無しさん:04/12/26 15:55:24
>>213
m9(^Д^)プギャー
218デフォルトの名無しさん:04/12/26 15:58:30
>>213
>>200>>214 も同一人物っぽいかも。
同一人物でないとしても、同レベル。
219デフォルトの名無しさん:04/12/26 16:00:18
>>192
ソースコード晒せば、たぶん試してくれる人とか居そう。
220デフォルトの名無しさん:04/12/26 16:27:59
>>213
いやむしろ>>202のほうが>>198よりひどい。
よって別人の可能性もあり。
>>214はそういう意味だろ?
221デフォルトの名無しさん:04/12/26 16:31:18
ん?名前が似ているという理由で多言語の質問もOKになの?
222デフォルトの名無しさん:04/12/26 16:34:08
>>218
>>1を読めばわかるんじゃない?
223デフォルトの名無しさん:04/12/26 18:08:53
そもそもなんでJava Scriptなんて名前にしたんだろうか・・・
224デフォルトの名無しさん:04/12/26 18:13:45
>>220
m9(^Д^)プギャー
225デフォルトの名無しさん:04/12/26 18:15:19
>202のような厨房を量産するため。
(少なくともNetscapeが意図的にJavaと紛らわしい名前にしたのは確か)
226デフォルトの名無しさん:04/12/26 18:19:47
1990年サンは、家電など電子機器に搭載されるマイクロコンピュータの
為の、組み込み用共通プログラミング言語の開発に着手し、当初それは
コードネームOAKと呼ばれていた。
小さいメモリ、貧弱なCPUでも問題なく動作するように、当初は
徹底的に言語仕様のスリム化が図られ、結局スクリプト言語に近い
仕様にまとまった。
OAKではインパクトが弱いという理由で、(ちなみに製品のネーミングの
重要さは、フレッシュソックスが「通勤快足」と改名した途端、売り上げが
爆発的に伸びた事で証明されている)新しくJavaと名づけられたのと
同時に、当時のスクリプト的正確から、「Java Script」と正式に命名された。

その後、サンはJavaをパーソナルコンピュータ市場にも参入させる事にし
Java Scriptを大幅に拡張した言語「Java」を1995年に発表した。
これが現在私達が愛用しているjava言語の誕生である。
227デフォルトの名無しさん:04/12/26 18:25:15
>>223
どこの便所の落書きですか
228デフォルトの名無しさん:04/12/26 18:41:31
Javaで形態素解析をやらせたいのですが,
一般的にはどのようなものが使われているのでしょうか?
Googleで探し回ったところ,MeCabとSenというものしか見つかりませんでした.
導入が簡単な物があれば助かるのですが….
229デフォルトの名無しさん:04/12/26 19:15:39
>>225
Sen簡単だよ。「しか」とか言うな。
230デフォルトの名無しさん:04/12/26 19:26:33
>>226
ごめんなさい
231デフォルトの名無しさん:04/12/26 19:31:13
>>226
ていうかSenのサイトらしきものが404で,ディレクトリ上に上がっていったら
閉鎖しましたとか書いてるんですが,現在配布してるところご存じでしょうか
232228:04/12/26 19:57:16
見つけました
http://yamaguch.sytes.net/~tora/opensource/sen/
↑ではなく
https://sen.dev.java.net/
ですね
233デフォルトの名無しさん:04/12/26 19:58:30
いまぐぐってみたところ、java.netに移っているようですぞ。
https://sen.dev.java.net/
234 :04/12/26 20:10:30
J2SE5.0はバグとか少ないですか?
初心者なので自分のプログラムがおかしいのか、言語環境のバグなのか区別がつかないだろうからどの知りたいです。
1.4でやったほうがいいのですか?
235デフォルトの名無しさん:04/12/26 20:20:59
>>231
プログラムをしない方がいいでしょう。
236デフォルトの名無しさん:04/12/26 20:47:14
>>231
初心者なら自分を疑え!

#だが初心者ほどコンパイラのせいにしたがるんだよな〜
237デフォルトの名無しさん:04/12/26 21:23:17
そんな事はない。
プロの方が責任転嫁の傾向が強い。
238デフォルトの名無しさん:04/12/27 00:05:25
プロはプロでも仙人クラスのプロが
「んー、これは流石に処理系のバグっぽいな〜」
と言ったんなら多少聞く価値はあるが。
239デフォルトの名無しさん:04/12/27 00:07:40
>234
責任転嫁はするが普通その相手は人間。
親請「外注のせいで〜」
外注.PM「SEがバカなせいで〜」
外注.SE「PGどもがタコなせいで〜」
外注.anonymousCompanies.PG「仕様が(=仕様を書いた人間が)タコなせいで〜」
240デフォルトの名無しさん:04/12/27 00:29:21
仕様がタコ、はしょっちゅうだけどな
241デフォルトの名無しさん:04/12/27 01:53:28
http://f57.aaa.livedoor.jp/~newbooks/
オライリーの新刊はJava関連、しかもTiger本キタ━━━(゚∀゚)━━━ !!!
242デフォルトの名無しさん:04/12/27 02:41:22
senのインストールの話で恐縮なのですが,antで辞書を作るところまでは良かったのですが,
sen/bin/sen.shを実行するとExceptionが出てしまいます.
こちらがDebian woody + Java1.3.1

export ANT_HOME=/usr/local/ant
export SEN_HOME=/usr/local/sen
export JAVA_HOME=/usr/lib/j2se/1.3
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$ANT_HOME/bin:$JAVA_HOME/bin

$ bash /usr/local/sen/bin/sen.sh
done.
Please input Japanese sentence:
Exception in thread "main" java.lang.NoClassDefFoundError: org/xml/sax/SAXException
at StringTaggerDemo.main(StringTaggerDemo.java:33)

こちらがcygwin + Java1.4.2_05
/usr/local/antとsenは/cygdrive/f/なんとかかんとか/antとか/senとかの
シンボリックリンクです

export ANT_HOME=/usr/local/ant
export SEN_HOME=/usr/local/sen
export JAVA_HOME=/cygdrive/f/bin/Java/j2sdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$ANT_HOME/bin:$JAVA_HOME/bin

$ bash /usr/local/sen/bin/sen.sh
Exception in thread "main" java.lang.NoClassDefFoundError: StringTaggerDemo

どなたかお力をお貸し下さい….
243デフォルトの名無しさん:04/12/27 05:27:43
JAVAのSDKは制作に必要
JREは実行に必要って事ですよね。
でも、作って確認するときJREが必要だと思うんですけど
まだJRE入れてないのにhello java!のプログラムが動きました。
これって、SDKの中にJREが入ってるからなんですか?
244初心者 ◆Java/isQ.c :04/12/27 05:37:28
>>240
そうです。
245242:04/12/27 05:39:46
apacheとtomcatの連携ではまりました。
server.xmlファイルのポート8080の記述をコメントアウトして、
ポート8009の記述を有効にして、以下のような設定で
webappsのexamples以下や、index.jspにアクセスすると
Internal Server Errorになって以下のエラーログが吐かれる状態です。

[Mon Dec 27 05:26:12 2004] [jk_uri_worker_map.c (445)]: Into jk_uri_worker_map_t::map_uri_to_worker
[Mon Dec 27 05:26:12 2004] [jk_uri_worker_map.c (459)]: Attempting to map URI '/index.jsp'
[Mon Dec 27 05:26:12 2004] [jk_uri_worker_map.c (539)]: jk_uri_worker_map_t::map_uri_to_worker, Found a suffix match wo
rker1 -> *.jsp
[Mon Dec 27 05:26:12 2004] [jk_worker.c (90)]: Into wc_get_worker_for_name worker1
[Mon Dec 27 05:26:12 2004] [jk_worker.c (94)]: wc_get_worker_for_name, done did not find a worker

以上がmod_jk.logに吐き出されるエラーで、did not find a workerと言われてしまうのが
どうしても解決できません。
246242:04/12/27 05:42:38
上の続き

httpd.confには以下のような記述のmod_jk.confをIncludeしてあります。
LoadModule jk_module libexec/apache/mod_jk.so
<IfModule mod_jk.c>
JkWorkersFile /usr/local/etc/apache/workers.properties
JkLogFile /var/log/mod_jk.log
JkLogLevel warn
JkMount /*.jsp worker1
JkMount /examples/* worker1
</IfModule>

workers.propertiesはこんな感じです。
JkWorkersFile /usr/local/etc/apache/workers.properties
worker.list=woker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

どうかご教授のほど、よろしくお願いします。

環境は、FreeBSD4.7R linux-blackdown-jdk1.3.1 apache1.3.31
tomcat4.1.30, mod-jk-connector1.2.6 です。
247デフォルトの名無しさん:04/12/27 06:13:09
>>241
お返事ありがとうございます
次はif文というのをやってみます。
248239:04/12/27 06:29:07
eclipse2.1.3でプロジェクトに外部ライブラリーとしてsen.jarとcommons-logging.jar
を追加して,形態素解析させて見たところ,
java.lang.IllegalArgumentException: M:\中略・プロジェクト名\null\conf\sen.xml (指定されたパスが見つかりません。)
という例外がでました.sen.jarとcommons-logging.jarはプロジェクトがある
Mドライブとは別のドライブにありますし,そちらのパスを追加したはずなのですが….
この症状も>>239のクラスが見つからないという例外と関係があるのでしょうか….
249デフォルトの名無しさん:04/12/27 08:37:50
>>239
Linuxのほうは、XMLプロセッサが入ってないから。
JREのバージョンで揃えるかXercesを入れるかどうかは
antのインストールマニュアルを読んで自分で判断すべきこと。
Windowsのほうは、シンボリックリンク。
250246:04/12/27 08:41:27
間違えた。antは関係ないや。ともかく
JREのバージョンを上げるかXercesを入れるかする。
どちらがいいかは自分の要件を考えて判断すること。
251デフォルトの名無しさん:04/12/27 09:04:06
>>246
cygwinのbashを使わずに,sen.batを使えば動きました.
というか最初からこっちを使えって話ですね….
Linuxの方は今弄れないので,後で試してみます.
eclipseの方は何が原因でしょうか?
プロジェクトのプロパティ→Javaのビルド・パス→ライブラリー→外部JARの追加
でsen.jarとcommons-logging.jarを追加しただけなのですが….
252デフォルトの名無しさん:04/12/27 13:36:59
POIのHSSFを用いてExcelを操作しているのですが、一つ質問があります。
複数のシートで例えばセル(1,A)と(1,D)にデータが入力されていて、
そこに囲まれる(1,B)と(1,C)のデータについて、
同様なパターンで入力されていても、シートによって
HSSFCell.getCellType()で、HSSFCell.CELL_TYPE_BLANKが返ってくる場合と
NullPointerExceptionが返ってくる場合があるのですが、
この2つの違いって何なのでしょうか?
253デフォルトの名無しさん:04/12/27 13:57:58
>>249
セルに空白が入っている場合とセル自体が無い場合との違いじゃない?
POI(というかExcel?)では両者は区別される様子。
セルのヌルチェックするなら、HSSFRow#getCell()がnullかどうかを先にしとけ、ということかと。
254デフォルトの名無しさん:04/12/27 14:16:09
>250さんありがとうございます。
HSSFRow.getCell()でnullのチェックをするようにしていたのですが、
何も編集が行われていないもの、何か入力した後にDeleteキーを用いてブランクにしたもの、
どちらもシートによってnull pointer exceptionだったり、CELL_TYPE_BLANKだったりしてしまう状況でしたので
空白セルと認識される基準が気になって質問させていただきました。
255デフォルトの名無しさん:04/12/27 15:01:57
class My2D {
private int x;
private int y;
public My2D(){}
public void setX(int x){this.x=x;}
public void setY(int y){this.y=y;}
public int getX(){return x;}
public int getY(){return y;}
public Object clone(){My2D m2 = new My2D(); m2.setX(getX()); m2.setY(getY()); return m2;}
}

class My3D extends My2D{
private int z;
public My3D(){}
public void setZ(int z){this.z=z;}
public int getZ(){return z;}
public Object clone(){My3D m3=(My3D)super.clone();m3.setZ(getZ());return m3;}
}
256デフォルトの名無しさん:04/12/27 15:03:07
すいません、間違ってソースだけ投稿してしまいました。

cloneについて教えてください。
上記のようにMy2Dクラスと、My3Dクラスを作成しました。
それぞれのクラスにcloneを実装したのですが、上記の実装では3Dクラスのcloneで継承元クラスのcloneを無理やり使用しようとしてる為、当然ClassCastExceptionが発生します。
やりたいこととしては親クラスのcloneをうまく活用し、継承したクラスでは新規に追加した分だけコピー機能を実装するようにしたいのです。
なにか、良い実装方法があればご教授下さい。
よろしくお願いいたします。
257デフォルトの名無しさん:04/12/27 16:11:30
>>253
 public Object clone() throws CloneNotSupportedException {
  return super.clone();
 }
↑を実装すると中身もコピーされる(シャローコピーね)
My2DもMy3Dもこれだけでいいはず。
258デフォルトの名無しさん:04/12/27 16:13:49
>>253
Object#clone()が呼ばれたときにthisがClonableであればシャローコピーを帰すって事。
特別その後で何か何か値を変えたいのでなければそのままでOK
259U ◆CZtFsGiu0c :04/12/27 16:29:04
>>253
コンストラクタに引数付きの物を作った方が早いとは思いますが、もしそれがダメ
ならこんな感じでどうですか?

// My2D
public Object clone(){
My2D m2 = new My2D();
copyParams(m2);
return m2;
}
protected void copyParams(My2D m2) {
m2.setX(getX());
m2.setY(getY());
}

// My3D
public Object clone(){
My3D m3 = new My3D();
copyParams(m3);
return m3;
}
protected void copyParams(My3D m3) {
super.copyParams(m3);
m3.setZ(getZ());
}
260デフォルトの名無しさん:04/12/27 16:41:34
>>254
なるほど、こういうことか。知らなかった。252じゃないがサンクス。
public class CloneDemo {
 public static void main(String[] args) throws CloneNotSupportedException {
  CB c1 = new CB();
  c1.x = 10;
  c1.y = 20;
  CB c2 = (CB) c1.clone();
  System.out.println(c2.x);
  System.out.println(c2.y);
 }

 static class CA implements Cloneable{
  int x;
  protected Object clone() throws CloneNotSupportedException {
   CA c1 = (CA) super.clone();
   c1.x = x;
   return c1;
  }
 }

 static class CB extends CA implements Cloneable{
  int y;

  protected Object clone() throws CloneNotSupportedException {
   CB c1 = (CB) super.clone();
   c1.y = y;
   return c1;
  }
 }
}
261デフォルトの名無しさん:04/12/27 16:46:56
よろしくお願いします。
jspの中で自作クラスを使いたいのですがnewできずに困っています。
そのクラスはpackageにしていないのですが、packageにしないデフォルトの今の状態で
jspの中でも使えるようにするためにはどうすればいいのでしょうか?
教えてください。
262デフォルトの名無しさん:04/12/27 16:54:10
>>257
そのcloneの中でc1.x = xとかやる必要ないぞ、
ちゃんとthisの中身がコピーされたオブジェクトが新規に帰ってくるから。
cloneの中で値の一部変更(たとえば生成順序コードみたいなシリアルとか)の必要がある時だけ代入する必要があるけど。

263デフォルトの名無しさん:04/12/27 17:00:29
>>257
補足:
class CloneDemo implements Clonable {
 private SomeObject anObject;
 private int intValue;

 public Object clone() throws CloneNotSupportedException {
  CloneDemo copy = (CloneDemo) super.clone();
  copy.anObject = anObject.clone(); // need deep copy
  return copy;
 }
}
↑こういうふうにインスタンスにオブジェクトがいるときにそれすらcloneしたい時だけ代入するのだ。
264デフォルトの名無しさん:04/12/27 17:01:30
>>258
少なくとも、Tomcatではできない。
package宣言のないクラスはデフォルトパッケージに属するのだが、
Tomcatではデフォルトパッケージのクラスをimportできないため。
265デフォルトの名無しさん:04/12/27 17:07:38
>>261
レスありがとうございます。
そうなのですか…。
現在eclipseを使って他のservletとの連携をとっています。
パッケージ化すると
http://localhost/(自分で作ったフォルダ)/servlet/クラス
というふうにアクセスできなくなるのでデフォルトの状態で勉強していました。
例えばpackという名前でパッケージ化すると、
http://localhost/(自分で作ったフォルダ)/servlet/pack/クラス
というふうにアクセスすることもできないようなのです。
どうすればアクセスできるようになるのでしょうか?
266デフォルトの名無しさん:04/12/27 17:22:10
>>262
/servlet/pack.クラス
ね。「.」で区切った完全修飾名で指定する。
それよりもservlet-mappingを書けといいたいが、勉強中じゃ面倒か。
267デフォルトの名無しさん:04/12/27 17:22:15
>>262
/servlet/クラス名
でできるはず。ただしクラス名はパッケージ名から始まる完全限定クラス名で。

しかし言わせてもらえばそもそも/servlet/クラス名 なんてやり方はダメ。
web.xmlにServletを登録し、URLパターンをマッピングしなさい。
268デフォルトの名無しさん:04/12/27 17:33:36
>>263
レスありがとうございます。やってみます!
初心者の私に気配りをしてくださってどうもありがとうございます。

>>264
レスありがとうございます。
mappingですよね、少し調べてみたのですが難しそうなのでやめてしまっていました。
web.xmlは(自分で作ったフォルダ)/WEB-INF/web.xml
のことですか、それともtomcat/conf/web.xml
のことですか、どちらでしょうか?
269デフォルトの名無しさん:04/12/27 17:50:05
>>264
(自分で作ったフォルダ)/WEB-INF/web.xml のほう。
この、(自分で作ったフォルダ)がアプリケーションのルートディレクトリになっているから、
アプリケーション固有の設定や固有のリソース(html、jsp、コンパイル済みクラスファイル、このアプリでしか使わないライブラリ等)は
全部このフォルダの下。
270デフォルトの名無しさん:04/12/27 17:54:55
>>266
挑戦してみますができるかどうかはわかりません…。
あの、質問が初心者で申し訳ないのですが、どうして、
/servlet/クラス名でアクセスしてはだめなのでしょうか。
271デフォルトの名無しさん:04/12/27 18:21:26
>>267
主にセキュリティ上の理由から。詳しくは以下を参照。
ttp://jakarta.apache.org/tomcat/faq/misc.html#evil
jajakartaがダウンしてるので本家のドキュメントね。
272デフォルトの名無しさん:04/12/27 18:41:24
>>268
invokerとかですよね。
そういえば、<!--とかをはじめにはずした記憶があります。
勉強してみます!ありがとうございました!
273デフォルトの名無しさん:04/12/27 19:32:02
ビジュアルノベルアプレットを自作しようとしているのですが
効果音を鳴らそうとしたときに
鳴るファイルと鳴らないファイルに分かれてしまいます
現在使おうとしているファイル種類は
au、wav(8-16bit/22-48KHz/176-1563kbps)で
それぞれにse[no]と言う名前をつけています([no]は通し番号
auが鳴らない、wavが鳴らないというわけではなく
au、wav混在しているため混乱しています

String checkSound(String fileName){
 String[] extention={".au",".AU",".wav",".WAV",".midi",".mid",".MIDI",".MID",".mp3",".MP3"};
 String file="Not found";
 URL check;
 for(int i=0;i<extention.length;i++){
  try{
   String proto=getCodeBase().toString()+fileName+extention[i];
   check=new URL(proto);
   check.openStream();
   file=fileName+extention[i];
   return file;
  }catch(Exception e){}
 }
 return file;
}
でファイルの存在確認と拡張子の限定を行います
274デフォルトの名無しさん:04/12/27 19:32:34
上の続き

init()内で
for(int i=0;i<se.length;i++){
 String dir="sound/se/se";
 System.out.println(checkSound(dir+i));
 if(checkSound(dir+i).equals("Not found")) break;
 else se[i]=getAudioClip(getDocumentBase(),checkSound(dir+i));
}
初期化して

別に用意してあるテキストファイルに
SE noを発見したらStringTokenizerで分割して
se[Integer.parseInt(no)].play();
というようにして演奏するようにしています

現状ではファイル、配列、テキストファイルでの出現位置
そのいずれも原因としては特定できていません
wavの形式も範囲内だと思うのですが・・・
御助言よろしくお願い致します
275デフォルトの名無しさん:04/12/27 19:57:13
文字列の改行コードをLFに統一する処理って
str = str.replaceAll("\r\n", "\n");
str = str.replaceAll("\r", "\n");
であってます?
276デフォルトの名無しさん:04/12/27 20:43:02
>>272
それでいい。

s = s.replaceAll("(\r\n)|(\r)", "\n");
これでちょっといい気分になれる。
277デフォルトの名無しさん:04/12/27 22:14:35
>>273
それが改行ができてないんですよねぇ
String str = "ほげ\rふー\rばー\r";
str = str.replaceAll("(\r\n)|(\r)", "\n");
System.out.println(str);
とやると、
ほげふーばー
と表示されてしまいます。
278デフォルトの名無しさん:04/12/27 22:46:25
>>274
OSは?
WinXP/J2SE5では改行されるけど。

String s2 = s1.replaceAll("(\\r\\n)|(\\r)", "\n");でもいいようだ。
279デフォルトの名無しさん:04/12/27 23:03:23
>>275
すいません、他の部分に問題がありました。
アドバイスありがとうございました。
280デフォルトの名無しさん:04/12/28 00:26:19
TreeMapにオリジナルの順序のソートを与えるときに
keyの整数の大きさが大きい順でソートして、
さらにkeyの数が同じ時はそのkeyが対応している文字列の辞書順に並べ替えようと思うんですけが
keyの整数でのソートはできるんですが、辞書順でのソートができません。
281277:04/12/28 01:03:06
すいません、解決しました。
282デフォルトの名無しさん:04/12/28 01:05:25
>>277
そういうときKey,Valueをひとまとめにして取り出して、ArrayList<Entry<K,V>>をソートする。
283デフォルトの名無しさん:04/12/28 01:59:15
Javaの文法って行末に;がついてるけど
あれって必ず改行することにすればいらないような・・・
284デフォルトの名無しさん:04/12/28 02:07:23
それはまずC言語にいってください

というか改行が区切りってのは違ってると思うぞ

昔は一画面プログラムというもの(ry
285デフォルトの名無しさん:04/12/28 03:08:51
>>280
VB屋さんでつか?
分の途中で開業できないと恐ろしく読みにくくなりますよ。
286デフォルトの名無しさん:04/12/28 03:09:28
「文の途中で改行」だった・・・orz 逝ってきます
287YahooBB218129112033.bbtec.net:04/12/28 03:10:40
a
288デフォルトの名無しさん:04/12/28 03:19:33
SunのJRE1.4.2インストールしたのですが
何処にインストールしたのか解りません
インストーラに従ってインストールしたのですがフォルダ指定とかもありませんでした
何処に行ったのか教えてください
289デフォルトの名無しさん:04/12/28 03:21:47
>>285
OSは?
290285:04/12/28 03:35:22
すいません。XP,Homeです
291初心者 ◆Java/isQ.c :04/12/28 03:48:15
>>285
あなたが見逃しただけで、フォルダ指定する機会はあったはずですよ。
デフォルトのインストール先は C:\j2sdk1.4.2_<version> だったかと思います。
<version> のところは、あなたがインストールしたものにあわせて読み替えてください。
現時点で最新のものをインストールしたのであれば、C:\j2sdk1.4.2_06 かと思います。
292初心者 ◆Java/isQ.c :04/12/28 03:49:37
>>288
と、思ったら、JDK じゃなく JRE だったみたいですね。失礼しました。
293初心者 ◆Java/isQ.c :04/12/28 03:51:29
>>285
JRE のインストール先は C:\Program Files\Java\j2re1.4.2_<version> だったかと思います。
<version> のところは、あなたがインストールしたものにあわせて読み替えてください。

現時点で最新のものをインストールしたのであれば、
C:\Program Files\Java\j2re1.4.2_06 になっているかと思います。
294285:04/12/28 03:54:32
>>290
>C:\Program Files\Java\j2re1.4.2_06 になっているかと思います。
発見しました、有難うございました
295デフォルトの名無しさん:04/12/28 06:01:09
クラスのjavaとjavaxの違いは何ですか?
296初心者 ◆Java/isQ.c :04/12/28 06:23:26
>>292
パッケージの話でしょうか?だとすると次の記事が参考になるかもしれません。
ttp://www.javaworld.com/javaworld/jw-12-1998/jw-jbe-stand-ext.html
297デフォルトの名無しさん:04/12/28 06:58:35
>>293
パッケージの間違いです
いきなり英語サイトに飛ばされる訳ですね・・・
すいません、教えてもらったのに愚痴言ってしまい
有難うございました
298デフォルトの名無しさん:04/12/28 08:29:02
質問がいくつかあります。まとめて面倒見ていただけるとありがたいです。

1:コレクションのiteratorメソッドが返すIteratorは毎回コピーを生成して返すのか。
つまり、いくつかのスレッドが自分用のiteratorを得て、ぐるぐる回してもOKなのか?

2:static変数であるオブジェクトの中で宣言されたコレクションクラス(包含関係になっている)から
要素を取り出して(HashSetでもArrayListでもいいです)、得た要素に対して変更を加えても、コレクションの中の
要素には変更が反映されません。
ちなみに、複数のスレッドから行っています。volatileでコレクションを宣言してもダメで、結局変更後にコレクションにaddし直す
という事を行わざるおえなくなっています。これはstatic変数という事に何か関連があるのでしょうか?、コレクションから要素を得る場合
参照を返すので本来、変更は反映されると思うのですが。

駄文で申し訳ないですが、教えてください。よろしくおねがいします。
299デフォルトの名無しさん:04/12/28 09:05:16
>1:コレクションのiteratorメソッドが返すIteratorは毎回コピーを生成して返すのか。
Iteratorは別のもの。元になったCollectionがコピーされるかどうかはIteratorの実装次第。
ただしIterate中に構造変化が起こった場合は

>つまり、いくつかのスレッドが自分用のiteratorを得て、ぐるぐる回してもOKなのか?
NG.
ただし、CopyOnWriteArrayListなどはIteratorが生きている間もとの構造を維持する。

複数スレッドから使いたければCollections.synchronizedList()で同期化する。
同期化されていれば途中で構造が変更されたときにきちんとConcurrentModificationExceptionがスローされる。

>2:static変数であるオブジェクトの中で宣言されたコレクションクラス(包含関係になっている)から
>要素を取り出して(HashSetでもArrayListでもいいです)、得た要素に対して変更を加えても、コレクションの中の
>要素には変更が反映されません。

同期化されたコレクションなら構造が反映されれば「安全に」ConcurrentModificationExceptionがスローされる。
300デフォルトの名無しさん:04/12/28 09:18:07
>>296
ご返答ありがとうございます。
2についてなのですが、とりあえず、同期とかそういう事は置いておいて(複数スレッドとかじゃなく)
、static変数だと変更が反映されず、特にExceptionが出るわけでもありません。これはなぜでしょうか?
staticでなければちゃんと変更が反映されるのですが。
301デフォルトの名無しさん:04/12/28 09:25:15
>>297
得た要素に対して変更を加えるって、入れてる要素のクラスはImmutableじゃないよな?
302295:04/12/28 09:51:29
Immutableとは、生成時に設定した値から変更不可なクラスという意味でしょうか。
それともそういったインターフェースがあるのでしょうか?
知識不足ですね。すいません。
303295:04/12/28 09:52:14
ちなみに、Immutableではありません。
static変数でない場合にはちゃんとできます。
304デフォルトの名無しさん:04/12/28 09:57:24
>>299
immutableなクラスってのはStringとかみたいに「生成時に設定した値から変更不可なクラス」
staticの時だけ変更できないってのはなんか変だな。
305295:04/12/28 10:01:29
>>301
メモリ上の配置とかそういうのに関係あるのかなと自分なりに考えているのですが、
原因不明です。volatileでもだめですし。
306デフォルトの名無しさん:04/12/28 10:06:24
>>302
こんな感じでテストしたけど、普通に中身変更できるぞ?
俺の認識間違ってる?

private static ArrayList list;
static {
list = new ArrayList();
list.add( new StringBuffer( "aaa" ) );
list.add( new StringBuffer( "bbb" ) );
list.add( new StringBuffer( "ccc" ) );
list.add( new StringBuffer( "ddd" ) );
}
public void execute() throws Exception {
for ( Iterator i = list.iterator(); i.hasNext(); ) {
System.out.println( i.next() );
}

StringBuffer a = (StringBuffer)list.get( 0 );
a.append( "_add" );

for ( Iterator i = list.iterator(); i.hasNext(); ) {
System.out.println( i.next() );
}

}
307253:04/12/28 10:20:16
遅くなりましたがcloneの件ありがとうございました。

かなり勉強になりました。
これ、知ってるのと知ってないのじゃ大違いですね。
ありがとうございました。
308デフォルトの名無しさん:04/12/28 14:46:30
すいません。学校で問題を出されたのですが、さっぱりわかりません。
どなたかご教授お願いできないでしょうか?

問・適切な状況を考えて、abstractクラスを一つ作りなさい。そのサブクラスを
  3つ以上作ってスーパクラスのabstractメソッドを全て実装しなさい。
  また、そのテストプログラムを書きなさい。

という問題なんです。
abstractクラスは数とか抽象的なモノを表すってのはわかるんですが・・・。
309デフォルトの名無しさん:04/12/28 14:50:27
>>305
宿題スレへ行け
310デフォルトの名無しさん:04/12/28 14:50:52
311305:04/12/28 16:18:55
スレ違いでした。スミマセンm(__)m
312デフォルトの名無しさん:04/12/28 16:27:32
"HOGEほげ\nHOGEひげ\nHOGEはげ\n\nなんとかかんとか\n"
などという複数行からなる文字列から、行頭がHOGEで始まる行は無視して、
該当しない行のみ(空行も含む)を抽出したいのですが、どのようにパターンを書けばいいでしょうか?
この場合は抽出したい文字列は"\nなんとかかんとか\n"となります
313デフォルトの名無しさん:04/12/28 18:00:36
ここでOKな質問なのかわからないんですが、もしよかったら教えてください。
初心者なもので、すみません・・・

JBuilder2005をインストールしたんですが、
SDK1.5の文法の使用を許可する方法がわかりません。
どなたかご教授ください。
お願いします。
314初心者 ◆Java/isQ.c :04/12/28 18:03:25
>>310
JBuilderスレで質問する方が良いのではないでしょうか?
私も初心者なので、よくわかりませんが。
ttp://pc5.2ch.net/test/read.cgi/tech/1054149131/
ttp://pc5.2ch.net/test/read.cgi/tech/1092170897/
315デフォルトの名無しさん:04/12/28 18:19:23
javaで正規表現を使用してダブルクォーテーションとマッチさせたいのですが、
以下のように記述したらfalseが返ってきてしまいました。

ダブルクォーテーションとマッチさせる方法はありますでしょうか。

----
Pattern pattern = Pattern.compile("\"");
Matcher matcher = pattern.matcher("\"text\"");
boolean b = matcher.matches();

System.out.println(b);
----
316デフォルトの名無しさん:04/12/28 19:19:49
"\\""
317デフォルトの名無しさん:04/12/28 20:42:49
>>313
ありがとうございます。

結果は、
「文字列リテラルが閉じられていません。」
となってしまいました。

引き続き調べてみます。

----
Pattern pattern = Pattern.compile("\\"");
Matcher matcher = pattern.matcher("\"text\"");
boolean b = matcher.matches();

System.out.println(b);
----

318デフォルトの名無しさん:04/12/28 20:52:18
>>314
matches()
は文字列全体と比較しますので、この場合は使い方が間違ぐあなにをす
319デフォルトの名無しさん:04/12/28 22:15:20
>>315
ありがとうございます。

ご指摘のとおり、matches()メソッドの仕様を理解できていないようです。

以下のように置換してみますと、問題なくダブルクォーテーションが置換されます。

対象の文字列中にダブルクォーテーションがあった場合に、
trueを返してもらうには、別のメソッドを使用する必要がありそうです。

なんにせよ、解決の糸口が絞れてきて前進しました。ありがとうございました。

----
Pattern pattern = Pattern.compile("\"");
Matcher matcher = pattern.matcher("\"text\"");
//boolean b = matcher.matches();

String str = matcher.replaceAll(" - replaced - ");
System.out.println(str);
----


320デフォルトの名無しさん:04/12/28 23:57:56
>>277,279
何とおりもソートしたいんなら別だが
Comparatorを引数にとるコンストラクタもあるだろ?
321デフォルトの名無しさん:04/12/29 01:12:25
>>317
その引数にとられるComparatorが参照する(Tree)Mapはどこにありますか?
322デフォルトの名無しさん:04/12/29 01:42:29
String fileName = "test.log";
String[] fileNameSplit = fileName.split("\\.");
String string01 = fileNameSplit[1]
String string02 = "log";
if(string01 == string02){
return true;
} else {
return false;
}

というソースを実行するとfalseが返ってきてしまいます。
lastIndexOfなどを使ってStringを分割してもみたんですが,結果は同じです。。
拡張子を判別したいだけなのですが,上手い方法ないものでしょうか?
ご教授下さい。
323デフォルトの名無しさん:04/12/29 01:47:59
>>319
== は参照が同じインスタンスを指してる場合に true になる。
string01.equals(string02) を使え。
324デフォルトの名無しさん:04/12/29 02:00:49
>>320
でけました。多謝多謝であります!
Stringはオブジェクトなんですよね。。
忘れてました。
325デフォルトの名無しさん:04/12/29 03:25:24
>>318
お前バカだろ?何でComparatorがTreeMapを参照する必要があるんだか。
326デフォルトの名無しさん:04/12/29 13:21:01
Jarファイルの中に含まれた、Jarファイルのクラスを読み取るには
どうすればいいのでしょうか?
app.jarファイルの構造は

app.jar
  main/Main.class
 lib.jar
    sub/Sub.class

となっていて、app.jarを、main.Mainから実行した時に
Mainクラス内から、lib.jarに含まれてる Subクラスを使用したいのですが、
マニフェストファイルに Class-Path: lib.jar などと記述しても
lib.jar内のsub.Subクラスを読み取ってくれません。

jarファイルに含まれているjarファイル内のクラスを、読み取る方法を
教えてください。
327デフォルトの名無しさん:04/12/29 13:33:23
>>323
実行時にlib.jar はクラスパスに含まれているのか?
328デフォルトの名無しさん:04/12/29 14:22:13
>>323 できない。自分でクラスローダを自作するか
どっかから探してくるかすること。
329デフォルトの名無しさん:04/12/29 14:22:21
List list = Collections.synchronizedList(new LinkedList());

という方法でLinkedListを同期化できる事は知っているのですが、これでは
LinkedListにあって、Listにはないようなメソッドは使用できなくなってしまいます。

LinkedList list = (LinkedList) Collections.synchronizedList(new LinkedList());
のような結果を得る事はできないのでしょうか?   ↑ちなみにこの方法は使えない。
330デフォルトの名無しさん:04/12/29 14:40:12
そんなに繰り上がり足し算風な書き方がお好きなら、こう書けば?

a =
2 \
+ 3 \
+ 4 \

p a

331デフォルトの名無しさん:04/12/29 16:54:30
0x0000,0x0000,0,15,1,
0x0001,0x0001,15,0,2,
0x0002,0x0001,14,0,2,
0x0003,0x0003,15,0,3,

こういったテキストファイルの内容を
何行目か指定してその行の内容をカンマで区切ってある部分ごとに配列に格納したいのですが
どのようにすればいいでしょうか?
332デフォルトの名無しさん:04/12/29 17:03:53
>>325
ええっ出来ないんですか?
信じられません・・・・
じゃあ、ライブラリJarファイルを、単独起動jarファイル内から使用する時は、
まさかそのライブラリからclassファイルを抽出して、
単独実行jarファイルに含めねばならないのですか?
なんて事だ・・・
333デフォルトの名無しさん:04/12/29 17:04:28
SunのJREとIBMのJREってどう違いますか?
内部実装が違っても言語仕様はまったく同一と見て良いのでしょうか?
334デフォルトの名無しさん:04/12/29 17:05:18
どなたか>>309にアドバイス頂けませんでしょうか?
335デフォルトの名無しさん:04/12/29 17:08:41
>>329
jarファイル内に別のjarファイルを格納したりしないで、
素直にmainを含むjarファイルと、ライブラリのjarファイルと、起動用バッチを用意すればいいのでは。
336デフォルトの名無しさん:04/12/29 17:12:27
>>329
そんなことはない。同一ディレクトリにjarを置いて、MANIFESTファイルに
Class-Path: lib.jar
などと書けば参照してくれるよ。
MANIFESTファイルにMain-Classを書いておけば起動用スクリプトも不要。
337デフォルトの名無しさん:04/12/29 17:12:32
([^H]|H[^O]|HO[^G]|HOG[^E])
338デフォルトの名無しさん:04/12/29 17:54:50
>>328
自己解決しました
失礼いたしました
339デフォルトの名無しさん:04/12/29 17:58:20
>>328
そのファイルはCSV形式と呼ばれるものです。試しに拡張子を .csv にして
みてください。あーら不思議、Excel で開けちゃうんですよ。
・・・というわけで「CSV」をキーワードにして調べてみてください。
340336:04/12/29 17:58:56
ちっ、遅かったかw
341デフォルトの名無しさん:04/12/29 18:06:34
>>333
それじゃ「単独」起動じゃないからイヤなんです。
そのJarファイルを実行するのに、同じディレクトリにライブラリを置かねば
ならないって制約がイヤなんです。
そのjarファイル一つだけを自由に移動させて、一つだけで実行したいんです。
jarファイル内の奥までクラスパスが通せないなんて、Main-Path: app.jar\lib.jar
みたいに記述できないなんて、本当にひどいです・・・・(T_T)
342デフォルトの名無しさん:04/12/29 18:07:54
>>333
それじゃ「単独」起動じゃないからイヤなんです。
そのJarファイルを実行するのに、同じディレクトリにライブラリを置かねば
ならないって制約がイヤなんです。
そのjarファイル一つだけを自由に移動させて、一つだけで実行したいんです。
jarファイル内の奥までクラスパスが通せないなんて、Class-Path: app.jar\lib.jar
みたいに記述できないなんて、本当にひどいです・・・・(T_T)
343デフォルトの名無しさん:04/12/29 18:21:11
>>338
どうしても1つのJarにまとめたいなら、
ライブラリのjarをばらして1つのjarファイルにすればいいじゃない。
面倒なら、それを自動的にやってくれるツールもあるよ。
ttp://fjep.sourceforge.net/
Eclipseのプラグインだけど。
しかし、そんなのはAntスクリプト書けばすぐできるよね。

しかし、「本当にひどいです・・・・(T_T)」なんて涙ながらに書くことか?
344デフォルトの名無しさん:04/12/29 19:24:39
>>334
それって行頭でなく行中にHOGEがある場合も弾かれません?
345デフォルトの名無しさん:04/12/29 20:23:05
>>340
おお、かなり便利なmんおがあるじゃないか。
346デフォルトの名無しさん:04/12/29 20:34:10
341
解決したか? 頭に^つけてみ
347デフォルトの名無しさん:04/12/29 21:26:44
>>343
要するに、"^([^H]|H[^O]|HO[^G]|HOG[^E])(.*)"
としてgroup(2)を取れば、行頭に弾きたいパターンを持たない行のみを
取ってこれるということでしょうか?
348デフォルトの名無しさん:04/12/29 21:44:11
聞く前にやってみればいいのではないでしょうか?
349デフォルトの名無しさん:04/12/29 22:11:30
>>345
やってみたんですが、うまく行かないんですよね
文字列が単一行の場合のみヒットして、かつ抽出した文字列は
行頭の一文字が無くなっています
350デフォルトの名無しさん:04/12/29 23:51:02
351デフォルトの名無しさん:04/12/30 04:53:59
JREダウンロードするとするとバージョン1.4.2_01〜1.4.2_06までいくつかインストールされるじゃないですか?
これって一個残してアンイストールしても問題無?
352初心者 ◆Java/isQ.c :04/12/30 05:09:34
>>348
一回のダウンロードでいくつかインストールされるわけではなく、
ダウンロードした際、それぞれの最新版をインストールしているのかと。

現在の最新版は 1.4.2_06 ですから、
それ以外はアンインストールしても構わないと思います。

実際、自分は最新版を残し、古くなったものはアンインストールしていますが、
これまでのところ、特に問題が発生したことはありませんでした。

ただし、(1)JRE導入⇒(2)何か追加でインストール⇒(3)新JRE導入、とした場合、
(2)で導入したものがJREのフォルダに変更を加えるタイプのものだとすると、
当然ながら(3)で導入した新JRE環境には(2)が導入されませんので、お気をつけて。
353デフォルトの名無しさん:04/12/30 05:25:55
>>349
親切な回答有難うございます

>一回のダウンロードでいくつかインストールされるわけではなく、
>ダウンロードした際、それぞれの最新版をインストールしているのかと。
今見たら私の文章変ですね
JRE自体はかなり昔にインストールしたのでその辺の記憶が曖昧なんです
PC軽くするため何か削除できるソフトがないかとアプリケーションの削除見ていたら
JREがたくさんあったので気になりました
有難うございました
354デフォルトの名無しさん:04/12/30 08:30:34
>>326
答えてやって下さい。orz
355デフォルトの名無しさん:04/12/30 08:39:55
>>351
何故スルーされるのか考えてみよう
356デフォルトの名無しさん:04/12/30 08:45:31
わからないから
357デフォルトの名無しさん:04/12/30 08:54:20
346
正規表現勉強しろ
358デフォルトの名無しさん:04/12/30 09:19:13
>>353
それでいいや
359デフォルトの名無しさん:04/12/30 09:52:19
>>326

Vectorの同期化が役に立たないのと同じ理由で
Collections.synchronizedListの同期化も役に立たない。

LinkedListをどうして同期化したいと思ったのだ?
LinkedListのまま使って、必要なときはsynchronizedブロックを使うのが正しい。
360デフォルトの名無しさん:04/12/30 11:04:09
>>356
なるほど。最終的にはそれなんですね。
361デフォルトの名無しさん:04/12/30 13:17:52
JARの中のファイルからテキストを読み出すときは
 getClass().getResourceAsStream(filename)
でInputStreamを取り出すと思うのですが、このInputStreamを使ってBufferedReaderのreadLine()のようにテキストを読み出したい場合はどうすればよいでしょうか。
InputStreamからBufferedReaderをどうやって作ればいいのかが分かりません。アドバイスお願いします。
362デフォルトの名無しさん:04/12/30 13:29:30
JSTLで配列やマップの要素に値を設定するにはどうしたらいいでしょうか。
<c:set var="array_list[0]" value="foo"/>
とか
<c:set target="hash_map" property="key1" value="value1"/>
とかしてもうまくいかないんですが。

Tomcat5.0.28 + Jakarta Taglibs 1.1.2
363デフォルトの名無しさん:04/12/30 13:38:33
>>358
new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(filename)));
364デフォルトの名無しさん:04/12/30 13:50:57
>>360
ありがとうございます。それでできました。
365デフォルトの名無しさん:04/12/30 14:00:28
>>352-355
質問スレの意味無いやん
366デフォルトの名無しさん:04/12/30 14:02:57
>>362
ちゃんと回答される質問も少なからず存在する以上、質問スレの存在する意味はあるよ。
367デフォルトの名無しさん:04/12/30 14:15:09
>>363
つまり>>352-355のようなノイズが混ざるのはある程度我慢しろって事か
368デフォルトの名無しさん:04/12/30 15:05:34
>>359
<jsp:setProperty name="set" property="var" value="array_list[0]" />
<jsp:setProperty name="set" property="key1" value="value1" />
369デフォルトの名無しさん:04/12/30 15:13:35
またネタ師か・・・・
370デフォルトの名無しさん:04/12/30 17:30:50
ジェネリックで躓いてます、神様お助けを!
public class X<T> {
T[] m = new T[ 1 ];
}
などとすると、「汎用配列を作成します」とエラーになってしまいます。
何故なんでしょう???
371デフォルトの名無しさん:04/12/30 17:57:37
>>367
erasure だから。

erasure がクソだとか言うのは作者に言え。
もしくはクソでない仕様と実装を作ってから文句言え。
372デフォルトの名無しさん:04/12/30 19:07:01
>>365
うまくいかなんですけど。
つーか、365のとおりなら、 set.setVar(array_list[0]); や set.setKey1("value1"); となるから、ぜんぜん違うような。
373デフォルトの名無しさん:04/12/30 21:07:11
javaを始めようと思い、java2SDKをインストールしてautoexec batで
環境変数の設定を行おうとしたのですが、autoexecのテキスト内に
PATHという文字がなかったので、
PATH = D:[javacの保存場所]
と追加しましたが正しくコンパイル出来ません。
上記のように追加した後でDOSで ECHO %PATH%[ENTER]
と入力するとなぜか、 c:\windows\command と出ました。
この場合どうすれば正しくパスが設定できるのでしょうか?
アドバイスどうかお願いします。
ちなみにOSはwin95です
374デフォルトの名無しさん:04/12/30 21:20:36
>>370
コンパイル前にDOSプロンプトで
SET PATH = D:[javacの保存場所]
としてからjavacコマンド実行じゃダメ?
375デフォルトの名無しさん:04/12/30 21:29:08
うう・・この時代にWindows95なんてかわいそう・・・(T_T)
376デフォルトの名無しさん:04/12/30 21:34:26
>>370
スペースを入れない
377デフォルトの名無しさん:04/12/30 21:52:43
Win95 も 10年前の OS になっちゃうんだなぁ……
378デフォルトの名無しさん:04/12/30 21:57:35
SET PATH=D:\XXX\bin;%PATH%
379デフォルトの名無しさん:04/12/30 21:58:39
SET PATH=%PATH%;D:\XXX\bin
380370:04/12/30 22:37:50
>>371-376
即レス本当にありがとうございます。早速371さんのアドバイスから順に
試してみたのですが、コンパイルできず、DOSでPATHと入力しても
C:\WINDOWS;C:\WINDOWS\COMMAND と出てしまいます。もしかしたら
autoexec.batの内容に問題があるかもしれませんので、見て頂けないでしょうか?
381370:04/12/30 22:38:18
SET PATH=%PATH%;D:\riyou2\bin

@echo off
SET BLASTER=A220 I5 D1 T4

REM ===================
REM Notes for OEM:
REM - You should remove these remarks for the final disks you send to customers.
REM - You MUST explicitly specify the CD ROM Drive Letter for MSCDEX.
REM - You must switch to the CDROM drive, and then CD to the directory.
REM - the string CD001 must explicitly match the same string in CONFIG.SYS.
REM - The file DRVCOPY.INF MUST be modified to refer to the proper
REM - real-mode CD ROM driver. This driver will be copied to the
REM - hard disk during installation by the DRVCOPY.INF file.
REM - (Note: The user will have to type in the drive letter for the floppy disk
REM - when prompted at the end of setup.)

ECHO Warning - This system may not be setup to use the CD ROM.
ECHO Please contact your PC Manufacturer if Setup does not start automatically.
PAUSE
REM ===================

MSCDEX.EXE /D:OEMCD001 /L:D
d:
cd \win95
oemsetup /k "a:\drvcopy.inf"
382デフォルトの名無しさん:04/12/30 22:49:14
>>377-378
既にJavaに関する質問ではない気が
383デフォルトの名無しさん:04/12/30 22:49:39
>>378
SET PATH=%PATH%;D:\riyou2\bin
↑を最後の行にしたら
384デフォルトの名無しさん:04/12/30 22:56:47
>>377-378
Win9x系OSの場合はOSを再起動するか
コマンドラインで直接c:\autoexec.batを実行しないと
パスが有効にならないぞ。

これをどうしてもやりたくないというなら

コマンドラインで直接 set PATH=%PATH%;c:\j2sdk.1.4.2_06\bin
と入力すると手っ取り早い。
だが再起動するとこの設定は結局無効になるので
autoexec.batにはちゃんと書いた方がいい。
もちろんファイルの最後尾にPATHを追加だ。
385370:04/12/30 23:10:58
>>380-381
レスありがとうございます。
autoexec.batで SET PATH=%PATH%;D:\xxx\bin
と入力し上書き保存して再起動しましたがダメでした。

うーん、何がいけないんでしょう・・・。
ところで、私が今使っているautoexec.batは2chで分類するとどの板が
適当なのでしょうか。379さんがおっしゃるようjavaというよりautoexecの
問題のような気がしてきましたので。
386初心者 ◆Java/isQ.c :04/12/30 23:28:42
387デフォルトの名無しさん:04/12/30 23:28:51
なんつーかPATHの設定を直して再起動してから、PATHが設定されてるかどうか
setコマンドやPATHコマンドで実際の環境変数を確認するプロセスが欠けてるよね。
388デフォルトの名無しさん:04/12/30 23:35:40
やさしいJava活用編でJavaBeansを勉強してます
リクエストを受けてサーブレットでBeanを設定してJSPで結果を出力するという
プログラムを作成したのですが結果に何も出力されず、うまくいきません
付録のサンプルプログラムを使用してもおなじでした
Tomcat4.1.31を使ってます
これは環境設定がいけないのでしょうか
対処法を教えてください…
389デフォルトの名無しさん:04/12/30 23:38:55
>>385
この情報から何をどう判断したものやら
まずは質問の仕方を勉強してみてはどうでしょう
390デフォルトの名無しさん:04/12/30 23:40:11
>>382
まず、そのautoezec.batは一体どこに入っているのだ?
autoexec.batはCドライブに入っているのか?
ちゃんとc:\直下に存在するのか?

コマンドmsconfigは弄ったか?

なぜwin95を使っているのだ?

本当に
D:\xxx\bin
の中に java.exe, javac.exeが存在しているのか?

Win95が起動するドライブは本当にcドライブか?

マシンはDOS/Vマシンか? それともNECのValueStarNX以前のPC9821, 9801シリーズか?
391デフォルトの名無しさん:04/12/30 23:45:07
>>385
> やさしいJava活用編でJavaBeansを勉強してます
> リクエストを受けてサーブレットでBeanを設定してJSPで結果を出力するという

誰が、いったいいつ、どこで、どのようにして、どんなリクエストを受けた?
どんなBeanを設定した?
CMP Entity Beanを設定したのか?
それともStateless Session Beansを設定したのか?
それともStatefull Session Beansを設定したのか?
それともMessage Driven Beansを(ry

質問が曖昧すぎて答えづらくて頭に来る!!!!!!!
>>386が訴えている意味が分かったか?
5W1Hくらいははっきりさせろ!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!


> プログラムを作成したのですが結果に何も出力されず、うまくいきません
どこで結果を表示した!!!!!!!!!!!
どういうエラーメッセージが出た!
どういう環境で実行した!!!!
質問が曖昧すぎてむかつくんだわ。殺したくなるほど!!!!!!!!!!!!!
殴りたくなるほど!!!!!!!!!!!!!
FUCK YOU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

> 付録のサンプルプログラムを使用してもおなじでした
どこのどういうサンプルだ!
392デフォルトの名無しさん:04/12/30 23:48:01
あ→0、い→1、・・・、ん→55
のようにひらがなを数値に変換したいんですがハッシュ以外で方法はありませんか?
CでアルファベットだったらA-'A'というふうにできますがJavaで似たことやりたい場合はどうすればいいでしょうか?
393初心者 ◆Java/isQ.c :04/12/30 23:51:00
>>389
java.lang.Character クラスの
getNumericValue メソッドはどうでしょう?
394デフォルトの名無しさん:04/12/30 23:56:32
>>390
ありがとうございます。
System.out.println(Character.getNumericValue('あ'));
System.out.println(Character.getNumericValue('い'));
日本語だと-1になってしまいますorz
395デフォルトの名無しさん:04/12/30 23:57:09
>>390
Character.getNumericValue() ってのは引数に '1' を指定して呼んだら 1 が返るとかゆーメソッドだから、
>>389 の用途には使えない。
396初心者 ◆Java/isQ.c :04/12/31 00:00:26
>>391-392
見当違いな回答をしてしまい、失礼しました。
397デフォルトの名無しさん:04/12/31 00:01:56
>>392
でも'A'を指定したら10が'B'だったら11が返ってきましたよ。ひらがなじゃなくてアルファベットだったら望みどおりの結果です。
398370:04/12/31 00:04:56
>>384
毎回再起動した後、DOSで ECHO %PATH% と入力しているのですが
これとはまた別のことでしょうか?
>>387
autoezec.batはc:\windows\options\Cabsに入っていました。修正します。
コマンドmsconfigはまだいじってません。弄り方調べてみます。
WIN95を使っているのはお金がないからです。
javacはbinの中に入っています。
WINが起動するドライブはおそらくcだと思います。
マシンはFMV SV205だと思います。
アドバイスありがとうございます。
399デフォルトの名無しさん:04/12/31 00:06:26
自己レスですが
System.out.println('い'-'あ' + "");だと2
System.out.println('う'-'あ' + "");だと4
System.out.println('え'-'あ' + "");だと6
が返ってきたので2でわってやれば何とかなりそうです。
400デフォルトの名無しさん:04/12/31 00:07:21
>>395
autoexec.bat の話題はスレ違いかと
既に誘導されてる通り、こちらで続けては?
ttp://pc5.2ch.net/test/read.cgi/win/1100212974/
401370:04/12/31 00:13:40
>>395
分かりました。

みなさん、レスありがとうございました。
402デフォルトの名無しさん:04/12/31 00:21:13
>396
(できればUnicodeの) 文字コード表を眺めてみろ
表を眺めてればその方法がとんちんかんだということに気づくはずだ
403デフォルトの名無しさん:04/12/31 00:40:11
賢者のみなさん、どうかお知恵を。
長いので何回かに分けて書き込みます。
以下のプログラムを実行して、textPaneにTest!などと文字列を入力し、encode !ボタンを押すと
textPaneのStyledDocumentがxml形式でシリアライズされます。
/**************** コード開始 ****************/
import java.awt.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.io.*;
import java.beans.*;
import javax.swing.*;
public class XMLEncoderTest extends JFrame implements ActionListener{
JTextPane textPane;
JScrollPane scrollPane;
public static void main(String[] args){
JFrame f=new XMLEncoderTest();
f.setSize(400,400);
f.setVisible(true);
}
public XMLEncoderTest(){
Container cP;
JButton button;
cP=getContentPane();
button=new JButton("encode !");
button.addActionListener(this);
textPane=new JTextPane();
scrollPane=new JScrollPane(textPane);
cP.add(scrollPane,BorderLayout.CENTER);
cP.add(button,BorderLayout.SOUTH);
}
404400:04/12/31 00:42:03
続きです。
public void actionPerformed(ActionEvent e){
StyledDocument doc=textPane.getStyledDocument();
try{
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("bean.xml"));
XMLEncoder encoder=new XMLEncoder(out);
encoder.writeObject(doc);
encoder.close();
}catch(FileNotFoundException ex){
}
}
}
/**************** コード終了 ****************/
ところが、出来上がったbean.xmlを開いてみると、以下のような内容になっています。
/**************** xmlファイルの内容 ****************/
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2_05" class="java.beans.XMLDecoder">
<object class="javax.swing.text.DefaultStyledDocument">
<void property="documentProperties">
<void method="put">
<object class="java.awt.font.TextAttribute" field="RUN_DIRECTION"/>
<boolean>false</boolean>
</void>
</void>
</object>
</java>
/**************** xmlファイルの内容終了 ****************/
ここにはDefaultStyledDocumentの内容(Test!という文字列)の情報が全く含まれていません。
これではXMLDecoderでデシリアライズすることは不可能と思われます。実際、以下のプログラムを
実行して、decode !ボタンを押してみましたが、やはりTest!とう文字列は表示されませんでした。
405400:04/12/31 00:43:30
続きです。
/**************** コード開始 ****************/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.beans.*;
import javax.swing.*;
import javax.swing.text.*;

public class XMLDecoderTest extends JFrame implements ActionListener{
JTextPane textPane;
JScrollPane scrollPane;
public static void main(String[] args){
JFrame f=new XMLDecoderTest();
f.setSize(400,400);
f.setVisible(true);
}
public XMLDecoderTest(){
Container cP;
JButton button;
cP=getContentPane();
button=new JButton("decode !");
button.addActionListener(this);
textPane=new JTextPane();
scrollPane=new JScrollPane(textPane);
cP.add(button,BorderLayout.SOUTH);
cP.add(scrollPane,BorderLayout.CENTER);
}
406400:04/12/31 00:44:32
続きです。(最後)
public void actionPerformed(ActionEvent e){
StyledDocument doc;
try{
BufferedInputStream in=new BufferedInputStream(new FileInputStream("bean.xml"));
XMLDecoder decoder=new XMLDecoder(in);
Object b=decoder.readObject();
decoder.close();
doc=(StyledDocument)b;
textPane.setStyledDocument(doc);
}catch(FileNotFoundException ex){
System.out.println("File not found !");
}
}
}
/**************** コード終了 ****************/
同様のプログラムでJFrameやJButton、また適当に作ったbean仕様のクラスは
みなうまくシリアライズ、デシリアライズできました。PlainDocumentや
DefaultStyledDocumentはどのようにすればシリアライズ、デシリアライズができるのでしょうか。
407デフォルトの名無しさん:04/12/31 00:48:27
>>399
そのとおりでしたorz
'お'まではうまくいったのに'か'から変になりました。ユニコード表見てみます。
408デフォルトの名無しさん:04/12/31 00:50:35
なるほど間にがとかが入ってるのかorz
409デフォルトの名無しさん:04/12/31 02:03:16
>>394
まずドキュメントを読む癖をつけろ。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Character.html#getNumericValue(char)
> 指定された Unicode 文字の表す int 値を返します。
> たとえば、文字 '\u216C' (ローマ数字の 50) は、値 50 の int を返します。
>
> A 〜 Z を表す大文字 ('\u0041' 〜 '\u005A')、小文字 ('\u0061' 〜 '\u007A')、
> および全角形式 ('\uFF21' 〜 '\uFF3A'、'\uFF41' 〜 '\uFF5A') は、10 〜 35 までの数値を形成します。
> これは Unicode 仕様 (これらの char 値に数値を割り当てない) からは独立しています。
>
> 文字が数値を持たない場合は、-1 が返されます。
> 文字の数値を負でない整数として表現できない場合 (小数値など) は、-2 が返されます。
410デフォルトの名無しさん:04/12/31 07:36:42
System.out.println()じゃなくてprintln()で済ますことってできないんですか?
Systemクラスはlangパッケージ内だからインポートしなくてもいいですよね
してもできませんでしたが
411デフォルトの名無しさん:04/12/31 08:07:14
test
412デフォルトの名無しさん:04/12/31 09:00:58
>>407
J2SE5.0なら static import で out.pritln() までは削れたはず
でも楽したいならEclipseとかコード補完出来るエディタ使った方がいいと思うが
※Eclipseだとsysoutって打ってCtrl+Space押すとSystem.out.println()になる
413初心者 ◆Java/isQ.c :04/12/31 09:03:00
>>407
自分が作成するクラスに println() メソッドを用意して、
そこから System.out.println() を呼び出す、というのはどうでしょう?
414407:04/12/31 09:31:03
>>409-410
返事どうもです
すいません、環境はSDK1.4+Eclipseです
まずプログラミングに慣れたいんでJ2SE5.0は今は使う気はないです
Eclipseは昨日ダウンロードしたばっかりで詳しく解らないですけどコード補完は利用してます

>※Eclipseだとsysoutって打ってCtrl+Space押すとSystem.out.println()になる
スゴイ、感動しました。sysoutでできるなんて知りませんでした
printlnの様なよく使われるメソッドもできるんでしょうか?一覧で教えてくれるサイトとか
あったら教えて欲しいです

あと>>407の質問ですけど思いっきり勘違いしていました
Systemクラスをインポートした所でそのクラスを省略できないですよね_| ̄|○
でもoutってクラスじゃなくてフィールドなんだ・・・フィールドって何だろう
Systemがoutを継承しててoutクラスのメソッドprintln()を使ってると思ってたのに
ああ、混乱してきた
415デフォルトの名無しさん:04/12/31 09:44:33
インポート(import java.util.Listの類)
java.util.ListをList、
java.lang.SystemをSystemなどと略記できるようになる。
(java.lang配下のものはやらんでも略記できること、と決まっているので不要)

スタティックインポート(import static java.lang.Math.sinの類)
JDK1.5以降で使える。クラスの静的メンバーのクラス名を略記できるようになる。
import static java.lang.System.out;
と書けば、out.println(...)などと書けるようになる。

outはSystemクラスのサブクラスではない(継承していない)。
Systemクラスの静的フィールド。

sysoutとタイプして補完するやつは自分でも定義できる。
メニューから、Window>Preferences>Java>Editor>Templates参照。
416デフォルトの名無しさん:04/12/31 11:05:10
JARファイルをWebサイトにアップしてIEでダウンロードしようとするとかってに拡張子がZIPに変わってしまいます。
自己実行型JARを作ってもZIPにされてしまってはダブルクリックで解凍されてしまって困っています。
なるべくユーザに.zipから.jarに拡張子を変える手間を持たせたくないのですが方法はないでしょうか。
417デフォルトの名無しさん:04/12/31 11:50:54
サブパッケージって何ですか?

例えばJava.awtのサブパッケージは何?
APIリファレンス見てもトップのJAVAプラットフォームパッケージしか見つかりません
418414:04/12/31 12:29:57
失礼しました、逝ってきます
419デフォルトの名無しさん:04/12/31 13:30:36
>413
IEでなければ大丈夫なん?
そうだとしたら鯖の問題な悪寒。「.htaccess」とかぐぐってみそ。
420デフォルトの名無しさん:04/12/31 14:09:43
JAVA経験2日目でコツコツ一人で調べながら頑張っています・・・
年明けにコーディングが始まってしまうので
年末休暇中自宅でJAVAでHELLOWORLDから初めて
今やっとSevlet,JSP,JDBC編が終わりました。
年明けまでになんとかSTRUTSを理解して雛形を作成したいのです。

これからSTRUTSでHelloWorldに取り掛かる所なのですが
次の仕事の端末側がi-mode(携帯電話)なので少し疑問に思ったことがあって。

struts-blank.warを元に作成しようかと思ってます。
疑問は
struts-blank.warを元に作成してしまって携帯電話で使えるのでしょうか?
というのも携帯電話ではCookieeが使えないので・・・
データの受け渡し方法がよくつかめなくて・・・
セッションで受け渡しているんでしょうか?

タグライブラリでの記述もよく分かっていませんが、とにかく自分で調べてみます。
上の疑問も今ソースを追って調べているんですが、焦っているのになかなか分かりません。
どうか宜しくお願いします。
421デフォルトの名無しさん:04/12/31 14:21:31
>>417
ActionFormのscopeは選択できるよ。
application、session、request。
422デフォルトの名無しさん:04/12/31 14:37:10
>>417
Cookieが使えなくてもSessionの維持は可能。
Servlet API にはURLRewritingという仕組みがあって、
Strutsはデフォルトで対応・実装されている。
423デフォルトの名無しさん:04/12/31 14:39:08
ていうかまずデータの受け渡しをセッションでやると思っているあたり
ちょっとまずいけどな
424デフォルトの名無しさん:04/12/31 15:37:12
>>418
>>419
有り難うございます。2人の書き込みでi-mode(携帯)でもいけそうだと分かり嬉しいです。
きちんと全部のソースを読んでみます。
あまりにも分かっていないのでプリントアウトして
一行ごとに日本語で調べた内容を書こうかと・・・
今日明日中には基本的なことを理解したいです。
そして2日間かけて自分なりの雛形が作ろうかと思います。
>>420
お恥ずかしいかぎりです。とりあえず皆さんが教えてくれたことをググってきちんと理解してきます。
425デフォルトの名無しさん:04/12/31 15:54:16
Integerクラスとかのラッパークラスは抽象クラスでないなの
何故にオブジェクト作らなくてクラスを指定してオーケーなのでしょうか?
Integer.parseInt()とかの事です
426デフォルトの名無しさん:04/12/31 15:58:11
>>422
ラッパークラスかどうか何て全く関係ない。
「staticメソッドだから」が答え。
427デフォルトの名無しさん:04/12/31 16:04:18
>>416
IEでなければ大丈夫です。.htaccess調べてみます。
428デフォルトの名無しさん:04/12/31 16:16:57
描画についてですが1秒おきに1文字ずつ画面に文字が表示されるようにしたいと思ってます。
下のように書いたのですが1秒スリープしてから全部の文字が表示されてしまいます。
1文字drawStringした時点で画面を必ず更新させることはできるでしょうか。

 for (int i=0; i<text[0].length(); i++) {
  g.drawString(text[0].charAt(i)+"", 20+i*12, 150);
  repaint();
  try {
   Thread.sleep(1000);
  } catch (InterruptedException e) {}
  }
429デフォルトの名無しさん:04/12/31 16:56:37
下記@Aはコンパイルできるのに、Bだけ
Exception in thread "main" java.lang.NoClassDefFoundError
と表示されてしまいます。pathは通ってると思うので原因がよくわかりません。
宜しくお願いします。
@
class Example1 {
public static void main(String args[]) {
System.out.println("This is the output from Eample1");
}
}
A
class Example2 {
public static void main(String args[]) {
System.out.println("This is on the first line.");
System.out.println("This is on the second line.");
}
}
B
class DisplayFloat {
public static void main(String args[]) {
float price;
price = 45.35f;
System.out.print("The price is");
System.out.println(price);
}
}
430426:04/12/31 16:58:38
すいません、通りました。ごめんなさい。
ホントに427ですね…
431デフォルトの名無しさん:04/12/31 17:21:53
>>427
イ`。
432デフォルトの名無しさん:04/12/31 20:04:33
>>417
二日目でServlet,JSP,JDBCまで理解したってのはスゴイ
他言語での開発経験は、あるのだろうが・・・
433デフォルトの名無しさん:04/12/31 20:47:20
>>429
そんな。3年間出向でCOBOLのバッチ処理を組んでいました。会社に帰ったらJAVA一色で・・・
覚えは悪い方だと思います。STRUTSで失速中ですし・・・なんとか今夜頑張ってみます。
雑談すみません。
434デフォルトの名無しさん:04/12/31 21:38:24
>>425
invokeLater
435デフォルトの名無しさん:04/12/31 22:48:36
Java3Dを始めようとして最初のところで行き詰ってしまいました。
皆さん、どうか助けてください。

下のソースはコンパイルは通るのですが、プログラムを実行するとウインドウは表示されるのですが中の画像が表示されません。
コンソールには「wglCreateContext Failed: ピクセル形式が無効です。」と表示されています。
なにがいけないのでしょうか?

PG実行時の状態
http://uploader.zive.net/file/2882.gif

環境
OS:XP SP2
JDK:1.5.0_01
Java3D:1.3.1(OpenGL)

以下ソース
import javax.swing.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;

public class Sample3D extends JFrame {
436デフォルトの名無しさん:04/12/31 22:50:16
>>432 のつづき

public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();

/* この例では、ColorCubeクラスを使ってます */
objRoot.addChild(new ColorCube(0.4));
objRoot.compile();

return objRoot;
}

public Sample3D() {
getContentPane().setLayout(new BorderLayout());

GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

Canvas3D canvas = new Canvas3D(config);
getContentPane().add("Center", canvas);

BranchGroup scene = createSceneGraph();
SimpleUniverse universe = new SimpleUniverse(canvas);

universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(scene);
}
437デフォルトの名無しさん:04/12/31 22:51:24
>>433 のつづき

public static void main(String[] args) {
Sample3D sample = new Sample3D();

/* サイズ指定 */
sample.setBounds( 10, 10, 240, 240);

/* 終了処理を追加 */
sample.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});

/* 実際に表示する */
sample.setVisible(true);
}
}


どうかよろしくお願いします。
438初心者 ◆Java/isQ.c :05/01/01 01:29:28
>>424
IEでなければ大丈夫なら、IEの問題なのではないでしょうか。。
jarファイルはzipファイルと同様の形式で圧縮されていますから、
IEがダウンロードするファイルをzipファイルと認識しているものと思います。
439デフォルトの名無しさん:05/01/01 04:51:21
正規表現で単語を抜き出すときに特定の単語、例えばorangeなどの単語を省くのはどうすればいいのでしょうか。
440初心者 ◆Java/isQ.c :05/01/01 05:12:51
441デフォルトの名無しさん:05/01/01 09:15:41
>>435
そうですか・・・MSはとことんJavaがきらいってことですねorz
実行型JAR落としてもらっても解凍されちゃってなにこれってなってゴミ箱行きになるのが目に見えるようだ。
442デフォルトの名無しさん:05/01/01 10:41:18
                          , '",':.:.:.:', `  、
                           , ':.:.:.:/:.:.:.:.:.:'、:.:.:.:.:` 、
                      /:.:.:.:.:, 'r'"~`ヽ:.:ヽ:.:.:.:.:.:.:.:\
                      /:.:.:.:.:/:.:.:'"~ ヽ:.:.:.:.:\:.:.:.:.:.:.:.',
                        |-ー':.:.:.:.:.:ヽ _ノ:.:.:.:.:.:.:.:`ー-:.:.:!
                        !:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:!
                     l--ー― ''''''""""````'''''' ―ー-l
                 __,,,,  -―''''''"" ̄ ̄ ̄ ̄ ̄ ̄ ̄` ''';;;;―- ,,,,__
             ,  ''":.:.:.:.:.:.:.:.:.:._,, -ー=ニニ;, ""i!r=ニニ==''ー-、:.:.:.:.:.:.:.:.:.゛`  、
              (:.:.:.:.:.:.:.:.:.:.:.:.:.ヾ'i;;;| ;=ニ( )ヽノi  ミ{;<( )ニ=、   |;;;il/:.:.:.:.:.:.:.:.:.:_ノ
               ``''' ―ー- ;;_:i`! /` - '", ';;; ⌒ ;;;`,;;`'''  ヾ l,'"`;―ー '''"´
                        l |      /i   ;;ハ `    ノ l.ソ .l
                     .| l.    ./`-=、_,=-ノ、   i   !/ .,'
                     !.' ,   i!    l !   ゙i!  l!  .,' /
                     `-ゝ   i! ;,'"⌒゛ヽ,; .i!   .,' ‐"
                       ',   i! (~i ̄ ̄i~! .|   ./
                ,,-―、   /:..l .l! |! ',t--ーt/ i! / ,'
                  /i  :::',  ,./:.:.:.', ',',  ` -ー' . ノ .,' /,,,__
                 ノ.i ',  :::! '゙:.:.:.:.:.:.ヽヽ   `''''''"   / ,' ',`-ヽ二二ニ'' ー-、
            __,,,.! .ヽゝ ,,,_:!:.:.:.:.:.:.:.:.:.:` \.、    __ノ./  ',:.:.:.:\:.:.:.:.:.: ̄ ̄` 、
443デフォルトの名無しさん:05/01/01 13:09:15
来春の就職に備えてJDBC勉強しようと思ってます
まず何からやったらいいでしょうか?
わかりやすいサイト・本等ありましたら紹介してください
444440:05/01/01 13:18:42
来春×
今春○

いきなり間違えたorz
445デフォルトの名無しさん:05/01/01 14:47:37
配列宣言するとその変数でlengthメソッドが利用できますよね
このlengthメソッドはどのクラスのメソッドですか?
446デフォルトの名無しさん:05/01/01 14:55:35
メソッドじゃねえよ
447442:05/01/01 16:20:31
すいません

配列宣言するとその変数でlengthフィールドが利用できますよね
このlengthフィールドはどのクラスのフィールドですか?
448デフォルトの名無しさん:05/01/01 16:49:07
>>444
配列型のフィールド。
449デフォルトの名無しさん:05/01/01 16:52:40
>>445
配列型のフィールド??
それってAPIレファレンスのどこに載ってますか?
450デフォルトの名無しさん:05/01/01 17:03:42
>>446
APIリファレンスには載っていない。
配列オブジェクトは特殊なオブジェクトで、配列型の
lengthフィールドに関する仕様等はJava言語仕様で決められている。
ttp://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
451デフォルトの名無しさん:05/01/01 17:17:19
>>447
なるほど、言語仕様だったんですね
有難うございました
452デフォルトの名無しさん:05/01/02 13:38:31
iアプリを制作する際、画面にリストボックスを組み込みたいのですが
指定した位置に組み込みたい場合はどのようにすればいいのでしょうか?
ちなみにアドベンチャーゲームのような選択肢欄として使う予定です。

453初心者 ◆Java/isQ.c :05/01/02 14:42:40
454デフォルトの名無しさん:05/01/02 17:44:29
>>435
Zip解凍ソフトでファイルの関連付けをしているので、
適当なJARファイルを一つ選んでほかの物に関連付けすれば、
直りますよ。
わからないようであれば、あとで詳しく書き込みます。
455初心者 ◆Java/isQ.c :05/01/02 18:00:57
>>451
ご返答ありがとうございます。

自分の環境ではjarファイルはjavaw.exeに関連付けされていますが、
Webサーバ上のjarファイルのダウンロードを試みると、
>>413 さんが報告されている通り、zipファイルとして認識されてしまいました。

元々の質問者である >>413 の要求を満たすか否かは不明ですが、
個人的に設定方法に興味がありますので、ご教示いただけますか?
456デフォルトの名無しさん:05/01/02 19:18:22
jstlで
<c:out value="${123 + 124}" />
と式言語を記述してるのですが
${123 + 124}が文字列としてそのまま出力されてしまいます。
何故なのでしょうか?
247と表示されるようにするには、どうすればいいのでしょうか?
457デフォルトの名無しさん:05/01/02 19:20:44
こんにちわ(はじめまして)。

バイトコードをいじっている(そういうプログラムを書いている)のですが、こんなエラーがでてしまいます。
Exception in thread "main" java.lang.VerifyError: (class: Test, method: getTest signature: (I)Ljava/lang/String;) Illegal type in constant pool

JVMのベリファイアに引っかかっているというのはわかるのですが、このエラーだけだと、どこがおかしいのか突き止めづらいのです。
もし、フリーのJVMベリファイアがありましたら、紹介していただけますか。
よろしくお願いします。
458デフォルトの名無しさん:05/01/02 20:34:03
とりあえず Test.getTest のシグネチャをエラーと見比べてはみたのかね?
459デフォルトの名無しさん:05/01/02 21:54:28
質問です。文字列を入力して、その文字列が合っていればループを抜けるという
プログラムを作成しようと思っています。
import java.io.*;
public class test {
public static void main (String arg[]) throws IOException
{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);

do{
System.out.println("Your ID.");
String str = br.readLine();
if(str.equals("hoge")){
System.out.println("OK.");
}
else{
System.out.println("NG");

}
}while(str!=("hoge"));
}
}
こうするとwhileのあとに「シンボルを解決できない」エラーがでます。
ループを外すとちゃんと動くのですが、何が原因でしょうか?
460デフォルトの名無しさん:05/01/02 22:04:00
変数のスコープ
461デフォルトの名無しさん:05/01/02 22:33:56
>>455
見比べてはみました。けれど、問題はないです。
javapやjadでも、正常に動くのですが、
javaやjdbなんかでは、エラーが出ます。

>>456
do{}while() の内側で、String strを定義してますが、
これだと、strの有効範囲は do{}while()の内部のみです。

String str;
do{

str = br.readLine();

}while(…)
とすればOK。
462458 = 454:05/01/02 22:35:39
すいません。458は454の者と同一です。
463デフォルトの名無しさん:05/01/02 23:02:09
class Test
{
public static void main(String [] args)
{
System.out.println(Float.POSITIVE_INFINITY);
}
}

これだと INFINITY しか表示されません。
どうやって、floatの最大を表示するのですか?
464デフォルトの名無しさん:05/01/02 23:06:37
465デフォルトの名無しさん:05/01/02 23:44:02
10進数の文字コードってありますか?
466デフォルトの名無しさん:05/01/02 23:48:13
>>452

以前「*.jar」ファイルを解凍しようとして解凍ファイルをダウンロードして
解凍したら全ての「*.jar」ファイルが「*.Zip」になってしまったことがあります。

解凍ソフトの関連で「jar」が関連付けしてあったら関連を外してください.
適当な「*.jar」を選択して右クリック、「プロパテイ」を選択「変更」ボタンをクリック
「ファイルを開くプログラムを選択」で「javaw」を選択。

質問に対する回答が違ったらゴメン。

467456:05/01/03 00:12:44
>>457,458
ありがとうございます。さきほどの問題は解決したのですが、
違う文字列を入力してもループを抜けてしまいます。
while(str!=("hoge"))の!=が問題だと思うんですが、わかりません。
どこを変更すればいいでしょう。
468456:05/01/03 00:15:40
↑間違いました。
「正しい文字列を入力してもループから抜けない」でした。
お詫びして訂正致します。
469デフォルトの名無しさん:05/01/03 00:18:53
470454:05/01/03 00:28:19
簡単なjavaプログラムを書き、バイナリエディタでいろいろ書き換えてみたところ、
どうやら、Illegal type in constant pool エラーは、
「コンスタントプール内での参照がおかしい」のではなく、
「(コード属性などからの)コンスタントプールへの参照がおかしい」ときに出ることがわかりました。

>>454の例だと、
コンスタントプール内でのgetText()メソッドの記述がおかしいのではなく、
Test.getTest()メソッドが持っているCode属性中のコンスタントプールへのインデックスが違うみたいです。

ちなみに、バイトコードを直にいじることはあまりなさそうなので、ちょっとすれ違いかも…ですね。笑
471454:05/01/03 00:33:41
>>456 >>464
string型の文字列の比較は、equals()メソッドを使うんだったと思います。
上の場合だと、str!="hoge"の代わりには、
!str.equals("hoge") もしくは !"hoge".equals(str) と。
(!は、否定の演算子です。)

ちなみに、一般的には、前者のように書くと、strがnullのときには、NullPointerExceptionがでてしまうので、後者で書いた方が安全だと思います。
472初心者 ◆Java/isQ.c :05/01/03 00:34:40
>>463
ご回答ありがとうございました。

ご教示いただいた設定は既に当方の環境で設定済みでした。
ご教示いただいた設定は、Windows 上にて、
jarファイルをダブルクリックした際に起動するプログラムの設定ですね。

ご教示いただいた設定にて、念のため再度確認してみましたが、
今回の件の元々の質問者である >>413 さんが期待される結果にはなりませんでした。

既に >>435 でも言及しましたが、>>413 さんが直面されている問題は、
IEがデータのダウンロード時に行うデータ形式チェック機能にて、
zipファイルとjarファイルの圧縮形式が同じであることから、
IEが勝手にzipファイルと判断して保存しようとする、というのが原因かと思います。

今回の場合、jarファイルはダウンロードされた時点で、
既にzipファイルの拡張子を付与されてしまいますので、
ご教示いただいた設定を行っても、残念ながら状況は好転しませんでした。
473デフォルトの名無しさん:05/01/03 01:51:50
>>469
お役に立たずスミマセンでした。
解凍ソフトをインストールした後に同じ現象が起きたものでしたので、
全ての「*.jar」が「*.zip」に変わり、
新規にダウンロードした「*.jar」ファイルが「*.zip」になってダウンロードされたもので、
同じ現象かと思いました。

474470:05/01/03 02:10:51
ダウンロード先フォルダーが
関連付けされていませんか?
475デフォルトの名無しさん:05/01/03 02:13:11
>462
\uFF11、\uFF10、\u9032、\u6570、で順に'1'、'0'、'進'、'数'。

ん? 何か間違えてる?
476470:05/01/03 02:43:35
「*.zip」をダブルクリックしたときに起動するソフトに「*.jar」の関連付けが
されていませんか?

皆さんに怒られるといけないので、これを最後にします。

477デフォルトの名無しさん:05/01/03 05:08:59
JTableで、スクロールバーのイベントを捕まえる
にはどうすればよいですか?
478初心者 ◆Java/isQ.c :05/01/03 08:03:19
>>473
私の環境では、*.zipはWinZipに、*.jarはjavaw.exeに、
それぞれ関連付けされています。
479デフォルトの名無しさん:05/01/03 09:47:29
>>475
まだ続いてたんですね。413です。ありがとうございます。
私も自分の環境では.zipはlhaca、.jarはjavawになってるのでダブルクリックすればちゃんと区別されます。
やはり.jarをダウンロード時にかってに.zipにされるのが問題ですね・・・
IE以外のブラウザやダウンロードソフトでは.jarのままでダウンロードできるのでやはりIEに問題があると思われます。
480デフォルトの名無しさん:05/01/03 10:34:14
>>474
JScrollPaneに入れて使うことになると思うので、こんな感じかね。

JScrollBar vBar = scroll.getVerticalScrollBar();
BoundedRangeModel range = vBar.getModel();
range.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
...;
}
});
481デフォルトの名無しさん:05/01/03 10:57:40
>>477
サンクスです♪
482デフォルトの名無しさん:05/01/03 15:47:20
JOptionPaneで入力テキストエリアを2つほしいのですが、何かいい手はありませんでしょうか?
483デフォルトの名無しさん:05/01/03 16:08:20
import java.io.*;
class P2
{
public static void main(String args[])throws IOException
{
System.out.println("三角形の高さと底辺を入力してください。");
BufferedReader br=
new BufferedReader(new InputStreamReader(System.in));
String str1=br.readLine();
String str2=br.readLine();
double height=Double.parseDouble(str1);
double width=Double.parseDouble(str2);
    double ans=(height*width)/2;
System.out.println("三角形の面積は"+ans+"です。")
}
}
これで、底辺と高さに少数を含むとエラーになります。
なぜでしょうか?よろしくお願い致します。
484デフォルトの名無しさん:05/01/03 16:26:25
エラーにならなかった
485デフォルトの名無しさん:05/01/03 17:34:56
>>479
引数に、入力フィールドを2個持ってるパネル渡そう。
486デフォルトの名無しさん:05/01/03 20:11:57
Timerクラスのことなのですが、

例えば、
Task task = new Task();
Timer timer = new Timer();
timer.schedule(task,10000L,500L);

とやれば、きちんと動くのですが、
Task task = new Task(String1,String2);  ←※
Timer timer = new Timer();
timer.schedule(task,10000L,5000L);
というようにすると、一回目はきちんと動くのですが、それ以降だと、
※のところをもう一度読んでくれていないので、String1,String2がnullとして
作動します。
  timer.schedule(new Task(String1,String2),10000L,5000L);
というようにしても同じでした。
TimerというクラスはTaskクラス(これはわたしが作ったクラス)のvoid run()メソッド
を読み込むので、こういう現象が起きるみたいなのです。
どうすれば、コンストラクタもちゃんと読んでもらえるようになるのでしょうか。
教えてください。
487デフォルトの名無しさん:05/01/03 20:33:49
>483
Taskに、コンストラクタに渡す文字列をセットしておくフィールドを設けて、
Task#run()では自分(this)のフィールドの方を見に行く

ってすれば解決な気がするが。これでうまくいかなかったら、Taskのソース
(run()メソッドだけじゃなく、全体)を晒してもらった方が解決が早いと思われ。
488デフォルトの名無しさん:05/01/03 21:06:11
素朴な疑問です。

ImageクラスとGraphicsクラスは何故分かれているのでしょう?
大抵の場合、一つのImageに対し一つのGraphicsを割り当てます。

img.drawImage(略);
であってもなんら問題はないように思えるのですが…。

くだらない質問だとは思いますが、悩み始めたらなんだか気になってしまいまして。
489>>483:05/01/03 21:23:32
>>484さんお願いします。
public class Task extends TimerTask {
private String _String1;
private String _String2;
public Task(String string1,String string2) {
_String1=string1;
_String2=string2;
}
public void run() {
this.doIt();
}
public void doIt() {
いろいろ
}
}
とこんな感じです。コンストラクタで初期化しています。
お返事の内容が、初心者のため、よくわからなかったので、
さらしてみました。宜しくお願いします。
490デフォルトの名無しさん:05/01/03 22:14:03
>>485
確かにそうですね。
私も無闇なクラス分割はやめて欲しいと思ってる一人なのですが、
何故いちいち分担するのかというと、プログラムマニア特有の
格好つけから来てる面が大きいと思います。
マニアほど一の手順で済む所をわざと十にしたりしますからね。
わざとこねくり回して複雑化する事によって、凄そうに見せたがる
格好つけの部分が、JavaのAPIには多いように思えます。
やたらクラスとインターフェースを量産してますし。

将来の拡張性、柔軟性を維持する為とかの理由がありますけど、どう考えても
標準一つしか使わないようなクラスまで、基本動作定義と拡張実装に分けて
しまいますからね。一で済むのをわざと十にしてるのが本当に多い。
それでいてクラス拡張を完全に放置してるパッケージも多いですからね。
一体何なんだって思います。

とかくマニアは一般的なのをわざと嫌います。GUI登場時も真のパソコンは
コマンドプロンプトのみとか言ってやたら否定してましたし、IDE登場時も
真のプログラマはエディタとコンパイラとデバッガのみとか言ってこれも
否定してましたからね。マニアの言う事を聞いてるとロクな事になりません。

491デフォルトの名無しさん:05/01/03 22:15:33
>>487
以上APIをそのまま使うことしか出来ない低能の戯言でした。
492デフォルトの名無しさん:05/01/03 22:23:23
>>488
氏ね。オタク。彼女いない歴30年。ブサイク。バーカ。
493デフォルトの名無しさん:05/01/03 22:29:09
鏡外し忘れてるよ
494デフォルトの名無しさん:05/01/03 22:56:18
>486
Task#doIt()の中で_String1、_String2を見て処理してる?
コンストラクタにnullを渡してでもいない限り、そいつらがnullになるはずはないんだけど……
まだダメだったらdoIt()の中身もきぼん。
495デフォルトの名無しさん:05/01/03 23:20:14
ImageのオブジェクトとGraphicsのオブジェクトは
いつも一対一には対応しているとは限らないんですよ。
役割が違うから。

表示用のデータとしてImageをメモリ上に複数持っておいて
それをまとめて一つのGraphicsに描画するなんてのは
ゲームなんかではあたりまえのことですし、
ImageとGraphicsを一対一に対応付けないといけないとしたら
Graphicsごとに表示用のデータを持たないといけなくなるわけですし。
496デフォルトの名無しさん:05/01/03 23:22:39
>>487
おっしゃる意味は解らないではありませんが、もっと見聞を広げましょう。
たにんが作った成果物を利用するだけではなく、一から自分で作るという
くろうを経験してみると、とても奥が深い事に気付くでしょう。
消えていった多くの言語は、それらの持っていた問題点を提示して消
えていったのです。自分のポリシーの確立を放棄するのは「マニア」にも劣
ろうと自ら泥沼に入り込むようなものです。がんばってください。
497デフォルトの名無しさん:05/01/03 23:24:02
>>485
上手くまとまらないなぁ・・・こんなところか?
・Imageクラスを使わない状況でGraphicsクラスの役割を必要とする状況がある(ボタンの描画など)。
・Graphicsの実装は環境依存で、実行時に適切なクラスに切り替える必要がある。

識者の修正求む。

Graphicsは、GoFデザインパターンのStrategyパターンを使ってる、と理解しているけどね。
線や点の描画ロジックをGraphicsクラスとして抜き出し、それをFrameやButton等のウィジェットや
Imageクラスで使っている、Graphicsの実装を変えればWindowsでもUnixでも動く、と。
498デフォルトの名無しさん:05/01/04 00:05:46
javaでは音声圧縮フォーマットをストリーム再生するのは難しいでしょうか?
wavやauは非圧縮フォーマットですし。
一応、ネット上ではjavaでoggを再生しようと言うプロジェクトもあるようですが・・・
ゲームでBGMに効果音を載せるような場合、MIDI(BGM)とWAV(効果音)を合わせるしかないのかなあ・・・
499デフォルトの名無しさん:05/01/04 00:11:10
フォームの入力を受け取ってデータベースに保存するプログラムを組んでるのですが
データベースを扱うプログラムはクラスに分けるべきですか?
それとも直接書くべきでしょうか?
500デフォルトの名無しさん:05/01/04 00:14:50
ぼやけすぎ
501デフォルトの名無しさん:05/01/04 00:22:59
普通のプログラマなら、ImageなしでGraphicsを使うことの方が多いはずですが。

502デフォルトの名無しさん:05/01/04 00:50:14
>>485
Graphics は「グラフィックコンテキスト」であって、大雑把に言えば
描画についての機能を提供する。
対して Image は「画像そのもの」を表すもの。
描画するのは Image に対してだけではなく、
フォームやプリンタへの出力にも描画するし、
その描画先が画像によって出力を管理しているとは限らない。

「描画」と「画像」は分けておいた方が何かと都合がいい。
503デフォルトの名無しさん:05/01/04 01:29:36
「描画領域」と「画像」は、普通に考えてhas-a関係じゃないかねえ。
504デフォルトの名無しさん:05/01/04 10:23:18
501?
505デフォルトの名無しさん:05/01/04 11:43:10
>>487はいつの時代の遅れた人間なのだろうか?
こいつは「分割統治」の意味も理解できていないのだろうな。
506>>483:05/01/04 12:02:15
>>491
さん!解決しました。
私の勘違いだったのです…。
ごめんなさい!

ですが、心強かったです。プログラムを一人で作るのってだんだん
さみしくなってきますが、相談にのっていただいて元気がでました!
ありがとうございました。またお世話になります。
507デフォルトの名無しさん:05/01/04 12:11:03
初々しいねぇ、がんがれ
508デフォルトの名無しさん:05/01/04 13:54:21
>>502
487ではないがお前も理解できていないと思う。
487は分割統治なんて出てくる文脈じゃないぞ。
509デフォルトの名無しさん:05/01/04 14:01:53
プリンタやフォームも、Imageを継承してれば(GraphicsがImageに統合されていても)なんら問題なくね?
510デフォルトの名無しさん:05/01/04 14:20:46
511デフォルトの名無しさん:05/01/04 14:33:06
>>506
問題ありまくり。Imageクラスの責務⊆Componentクラスの責務ではない。
Imageクラスで必要だがPriterJobやComponentで不要なメソッドやフィールドがある。
継承は注意して使うべき。「UMLによるJavaオブジェクト設計」を読んでみることをお薦めする。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894711524
512デフォルトの名無しさん:05/01/04 14:49:15
最終的に絵になるわけだから、Imageに集約されるほうが良いと思う
513デフォルトの名無しさん:05/01/04 15:26:57
>>509
Imageの責務を、Componentまたはそのスーパクラスに持たせた場合、
Graphicsの実装が環境ごとに異なるという、
マルチプラットフォームゆえの問題を解決するのが面倒になりそう。
Bridgeパターンつう手もあるけど、コーディングが面倒だからなぁ・・・
Graphicsだけ抜き出してStrategyパターンってのが無難だろうねぇ。

ともかく、506や509は、いっぺんAWT相当のライブラリの縮小版を頭の中で設計してみるといいと思う。
そうすればAPIの設計者の意図が読めるんじゃない?
514デフォルトの名無しさん:05/01/04 21:59:58
↓こんな感じで描写していた複数のオブジェクトにイベント処理の追加を行い

for(int i=0;i<tablename.size();i++){
tabledata[i].addMouseListener(new Mouse());
}

クリックしたときにオブジェクトの座標が分かるようにしたのですが

public class Mouse implements MouseListener{
public void mouseClicked(MouseEvent e) {
System.out.println("click");
int x = e.getX();
int y = e.getY();
//座標を表示
System.out.println("click "+x+" "+y);
}



クリックした座標を一つのクラスに返すにはどうしたらいいのでしょうか?
最初は継承を利用すればいいのかと思ってたのですが、複数の親クラスができて、
そこにそれぞれ値が返る結果になってしまいました。

すいませんが教えてもらえないでしょうか。
515デフォルトの名無しさん:05/01/04 22:18:42
>クリックした座標を一つのクラスに返すにはどうしたらいいのでしょうか?
もっと詳しく。意味がわからん。
516 :05/01/04 22:26:01
SunのWebからJ2SE1.4の日本語のJavaDocダウンロードできたんだけど、これのhtmlじゃなくてxml版ありますか?
517デフォルトの名無しさん:05/01/04 22:31:26
>>513 ぐぐればいくつかdocletが見つかるから自分で生成すること。
ただし日本語コメントが埋め込まれたソースが必要なので、それは
mergedocかなんか使って事前に準備しておくこと。
518 :05/01/04 22:39:56
>>514
お答えありがとう。
でもdocletもmergedocも何も知らない自分。
これからググって勉強します。Sunとかは用意してくれてないのか。
519デフォルトの名無しさん:05/01/04 22:57:24
>>512
すいません

目標とするプログラムは
「表示している複数のオブジェクト(それぞれ名前のある四角の物体)があって、ユーザがクリックすることでこれらのうち2つ選択する」
といったもで。

実際のプログラムは
クリックしたときに座標にあるオブジェクト名の表示を行ってます。(現時点)

public void mouseClicked(MouseEvent e) {
System.out.println("click");

int x = e.getX();
int y = e.getY();

       //オブジェクト名の表示
System.out.println("click " + ((GraphPanel)e.getComponent()).getVisualGraph().getNode(x,y));



ここで、クリックして選択されたオブジェクト名を上記のリスナークラスからのある特定のクラスに持っていくということがしたいのですが・・


いろいろ知識がなくてすいません、これで意味が通じるでしょうか・・・
520デフォルトの名無しさん:05/01/04 23:24:14
リスナークラスのクラス変数に,ある特定のクラスのインスタンス持たせてsetするだけだと思うが。
521デフォルトの名無しさん:05/01/05 01:15:41
Java5に追加されたAutoBoxing/Unboxingなんですが、
僕は解説を読んだ時点ではなんとなくC++で言うところの演算子のオーバーロード
が記述できるようになったという解釈をしていたのですが、
実際にいじってみたところ、どうもint/Integerやlong/Longといった特定の
クラスと型の間でしか使用できないように思えます。

実際のところ、このAutoBoxing/Unboxingという機能は、これらの特定の
型に決め打ちでコンパイラに実装されているものなのでしょうか?

要は自分で作ったクラスに、「intで解釈されようとしたときにどう解釈されるべきか」
を記述してそれが自動的に呼び出されるような機能を実装できるのか、ということです。

Integerクラスのソースなど見てみましたが、特に変わったインターフェースを
実装しているように思えなかったのです・・・・・

この辺の事情に詳しい方いらっしゃいますか?
522デフォルトの名無しさん:05/01/05 01:25:36
ラッパクラス←→基本データ型
程度の物だろう。しかしこれだけでも今までからしたら便利
523デフォルトの名無しさん:05/01/05 01:43:40
>>519
まぁ便利になったのは事実だと思うんですが、
実際にコンパイラを作る側の感覚としては、コンパイラが
クラスライブラリの特定のクラスに依存するように作るというのは
それなりに抵抗感があるもんじゃないかと思うのです。

Java作ってる人たちって、あんまりそういう感覚ないんですかねぇ・・・

僕からしてみると、Javaのクラスライブラリ作ってる人は、コンパイラ作ってる
人から特別待遇されているようでなんかずるい感じ。

コンパイラってクラスライブラリからは中立であるべきだと思うのですが。
524デフォルトの名無しさん:05/01/05 01:50:42
基本データ型は決まった物しかないじゃない
やまない雨は無いじゃない
カロリーハーフでいいじゃない
525デフォルトの名無しさん:05/01/05 01:53:46
>>520
どうしたら満足してくれるんだい
526デフォルトの名無しさん:05/01/05 01:55:06
基本データ型とラッパクラスは、クラスライブラリというより言語仕様の一部じゃないの?
527デフォルトの名無しさん:05/01/05 01:57:39
>>521
ディク・トレイシー
528デフォルトの名無しさん:05/01/05 01:58:35
>620
それを言ったら、Stringクラスなんて最初から特別扱いですが何か。
529デフォルトの名無しさん:05/01/05 02:02:02
>>525
ボケるにしてももっと近い番号にしてくれ
530デフォルトの名無しさん:05/01/05 02:02:36
>>521
基本データ型は有限ですが、僕が記述するクラスをその基本データ型に自動的に
相互変換する機能が実装できないように思えるところが気になっているのです。
Java付属のクラスライブラリにはできるのに。

>>522
>>518 にあるように
> 要は自分で作ったクラスに、「intで解釈されようとしたときにどう解釈されるべきか」
>を記述してそれが自動的に呼び出されるような機能を実装できるのか、ということです。

が可能なら僕としては満足なのです。

C++は演算子のオーバーロードをすることでこれが可能になっていて、
一般的なクラスライブラリの多くがこの機能を使っていますし、僕自身が書くクラスにも
Java5でいうところのAutoBoxing/Unboxingが実装できるようになっています。
コンパイラから見ればMFCもSTLも僕が書いたクラスも完全に等価です。

>コンパイラってクラスライブラリからは中立であるべきだと思うのですが。
というのはそういうことです。
531デフォルトの名無しさん:05/01/05 02:03:45
>>527
じゃあがんばってJava開発チームの一員になってくれ。
532デフォルトの名無しさん:05/01/05 02:03:51
1.0のころからExceptionやThreadのような言語仕様に密着したクラスがある。
533518:05/01/05 02:08:23
>>525
まぁそうなんですよね。
Stringの連結がStringBuilderに自動的に展開されたりするのもそういうものですね。

Javaはコンパイラ作っている会社がクラスライブラリも提供しているので、
「これもアリ」と認知されているのだと思います。

これはJavaの長所とも言えるでしょうが、ナンダカナァ・・・という感じもしますね。
534518:05/01/05 02:12:04
>>530
間違えた。StringBufferっすね。
535デフォルトの名無しさん:05/01/05 02:12:53
5ではStringBuilderになってるんじゃなかったか。
536518:05/01/05 02:16:44
>>532
どうなんでしょうか・・・僕も調べたわけじゃないですが、
自動的に展開されてしまう文字列の連結がスレッドセーフでないというのは
ちょっとヤバイと思うので、"AAA" + "BBB" はJava5でもStringBufferに
展開されるのではないかと思うのですが。
537デフォルトの名無しさん:05/01/05 02:58:07
>自動的に展開されてしまう文字列の連結がスレッドセーフでないというのは
>ちょっとヤバイと思うので

スレッドセーフでなくても単一スレッドからしか
操作しなければ問題ないのにバカじゃねーの?

>コンパイラってクラスライブラリからは中立であるべきだと思うのですが。

どうでもいいがauto boxing/unboxingはStringの扱いと同じく
「言語仕様」ですのでお間違えのないよう。
intをオブジェクトとして扱う文脈ではクラスライブラリの中のIntegerなどとして
扱うように「コンパイラを実装しなければならない」ので。

>Javaはコンパイラ作っている会社がクラスライブラリも提供しているので、
>「これもアリ」と認知されているのだと思います。

何度も言ってるように言語仕様ですから。Sun製だけでなくIBM製、
その他のものでも関係ありませんから。

>僕は解説を読んだ時点ではなんとなくC++で言うところの演算子のオーバーロード
>が記述できるようになったという解釈をしていたのですが、

そもそもこの解釈が大間違いですから。
538デフォルトの名無しさん:05/01/05 03:07:09
会社で嫌なことでもあったの?
539デフォルトの名無しさん:05/01/05 05:35:16
すいません。
Tomcat + MySQL でプログラミングしているのですが
MySQLには日本語を書き込めるのですが、MySQLから読み出そうとすると
文字化けしてしまいます。
JDBCドライバを呼び出す時は
jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=SJIS&mysqlEncoding=sjis
とし
my.ini には
default-character-set=sjis
としています。
それでもデータベース側から読み込むと文字化けしてしまうのです。
(サーブレットから書き込む事はできます。)
どうか対策法を教えてくださいませ。
540デフォルトの名無しさん:05/01/05 09:31:36
以下雑文。

俺は C から Java 覚えた口なので、言語仕様が特定のクラスに依存しているのに
違和感を感じた。これは>>518が感じた疑問と同じものかもしれない。
しかしやってみればその方が便利で自然。ObjectやExceptionって便利だよね?
オブジェクト指向言語の仕様ってのはこれでいいと思う。
C++ みたいに C に後付けしてオブジェクト指向を入れる形で言語設計するよりもいいかな。

演算子オーバロードについては功罪共に語られているけど、
JCPでは罪の方を重く見たということなんでしょう。
この辺はTigerリリース前にさんざん語られたので、割愛。
541デフォルトの名無しさん:05/01/05 09:58:34
こういう質問ありなのかどうかわかりませんが

JAVAってお給料いいですか?
542デフォルトの名無しさん:05/01/05 10:04:31
>>538
板違い。情シス板か、プログラマ板に行け。以上。
543デフォルトの名無しさん:05/01/05 10:08:07
Javaを使う側ですか?
Javaを作る側ですか?
544デフォルトの名無しさん:05/01/05 10:18:23
545デフォルトの名無しさん:05/01/05 10:18:52
サンプルのStylepadってやつはSwingで作られてるんですか
なんかやけに軽く感じますがどうでしょうか
546デフォルトの名無しさん:05/01/05 10:23:28
>>542
そんなもん。
軽い Swingアプリは起動も(JBuilderとかNetBeansとかEclipseとかみたいな重量級アプリよりは)早いし。
547デフォルトの名無しさん:05/01/05 10:24:22
>>542
Swingですよ。
起動してしまえばそんなに重く感じないんだよね、ガリガリ画面書き換える訳じゃないし。
548デフォルトの名無しさん:05/01/05 10:41:47
自動箱詰め/取り出しという意味しかないのに
518が勝手な解釈で過剰な期待をしただけに見える。
549デフォルトの名無しさん:05/01/05 11:48:36
SwingのJDialogのタイトルバーに最大化ボタン・最小化ボタン
を表示させるにはどうすればいいのでしょうか?

どなたかご存知の方教えてください。
550JDialogくん:05/01/05 11:54:34
そんな事したら僕とJFrameの違いがますますなくなっちゃうよ・・・・
お願い。最大化と最小化は使わないで・・・
551デフォルトの名無しさん:05/01/05 12:02:03
>>547
確かに最小化ボタンは必要ないんですが
最大化ボタンだけはどうしても便利機能として付けておきたいんです。
何か方法はないでしょうか・・・(T_T)

逆にJFrameでモーダル化出来る方法があれば、そちらでも構わないのですが・・・。
552デフォルトの名無しさん:05/01/05 12:30:12
>>505
嘘臭えな。>>487と同じが>>487と同類の考え方しかできない奴だろ。
「分割し、統治せよ」という鉄則が恰好つけるためにやっていると勘違いしとるとはな。
奴は「一般」の基準もいい加減。
>>487は依存度を下げることの意味もわかってない。
クラスを何のために分割しているかもわからずに
<<487のソースコードはすべての処理を全部一つのクラス、メソッドに
まとめてしまう汚いコードを書いてしまっているんだろうな。
553デフォルトの名無しさん:05/01/05 12:34:59
>>518
autoboxingは演算子のオーバーロードとは関係ねえよアフォ
554デフォルトの名無しさん:05/01/05 12:41:02
>>520
> >>519
> まぁ便利になったのは事実だと思うんですが、
> 実際にコンパイラを作る側の感覚としては、コンパイラが
> クラスライブラリの特定のクラスに依存するように作るというのは
> それなりに抵抗感があるもんじゃないかと思うのです。
>
> Java作ってる人たちって、あんまりそういう感覚ないんですかねぇ・・・
>
> 僕からしてみると、Javaのクラスライブラリ作ってる人は、コンパイラ作ってる
> 人から特別待遇されているようでなんかずるい感じ。

文句があるならJCPに何か提案するか自分でJakartaのようなAPIを作れ

> コンパイラってクラスライブラリからは中立であるべきだと思うのですが。
お前にとっての「中立」の定義とはなんぞや。はっきりしろや。

中立の定義がコンパイラに関係なくクラスライブラリを作れるということなら
とっくに「中立」状態にあるわけだしお前が不満に思うことは何も無いわけだが。
Jakarta Projectのコントリビュータになるなり、
自分でAPIを作って公開してしまえばいい。
それをずるいなんぞ餓鬼みたにぶーぶー文句たれてる奴は
何もしていないのに批判ばかりしているバカ学生と同類。

555デフォルトの名無しさん:05/01/05 12:47:37
>>527
> >>521
> 基本データ型は有限ですが、僕が記述するクラスをその基本データ型に自動的に
> 相互変換する機能が実装できないように思えるところが気になっているのです。
> Java付属のクラスライブラリにはできるのに。

そもそもプリミティブ型の自作に拘ることがアフォだ。
そんなにプリミティブ型自作したい変換したいならC#でもやっとけ。
だがそういう機能は便利だが副作用も大きくコードが煩雑になる。
実際に使って経験を積んでみればわかることだが、
お前の考え方には落とし穴があり、
綺麗なコードを書きやすい言語と汚いコードを書きやすい言語との
違いが現れてくることがわかってくるだろう。

> >>522
> >>518 にあるように
> > 要は自分で作ったクラスに、「intで解釈されようとしたときにどう解釈されるべきか」
> >を記述してそれが自動的に呼び出されるような機能を実装できるのか、ということです。

そういうことはクラス同士だけにしておけ。
オブジェクト指向の利点をよくわかっているならintなどのプリミティブ型の問題点に
気づくはずだ。

> C++は演算子のオーバーロードをすることでこれが可能になっていて、
演算子オーバーロードの問題点は検索して調べてみろ。


言っておくと、大概のお前の不満はC#を使えば解消されることばかりだ。
文句があるならJavaを使わずにC#を使え。
556デフォルトの名無しさん:05/01/05 13:33:43
ファイルダウンロードについて質問があります。
JSPにてファイル一覧が表示され、そのファイル名のリンクをクリックすると、
onclickのwindow.openにてダウンロードボタンを含む子画面を表示させてい
ます。その子画面内でダウンロードを行った場合、ファイル名が適切に設定
されず、『FileDownloadc23bebaa』のようなファイル名でファイルが作成
されてしまいます。(ファイル内容はあっています。)

子画面にてダウンロード機能を実装する場合に、ファイル名が設定できない
現象というのはあるのでしょうか?
557デフォルトの名無しさん:05/01/05 13:49:58
>>548
WindowStateListenerとWindowクラスのtoFront()、toBack()を使えばできるんじゃない?
めんどくさそうだけど
558デフォルトの名無しさん:05/01/05 15:25:45
質問でーす。

アプレットをつくり(JApplet)その中にいろいろとコンポーネントをはめ込みました。
それらのコンポーネントはJPanelを継承して作った自作のコンポーネントです。

基底のアプレットはカードレイアウトです。カードレイアウト二枚目の自作パネルに
自作コンポーネントとJButtonをはめ込みました。

ここでJButtonが押されたら、基底アプレットのconnectメソッドを呼びだしたいの
ですが、うまくいきません。コンパイルの時点で基底アプレット.connect()が見つ
かりませんとなります。

それぞれの自作コンポーネントには、作成時にそのつど引数で基底アプレットを
渡しているのですが、そこから基底アプレット.connect()ではメソッドを呼び出せ
ず間違いのようです。

こういった場合、どのようにすればいいのでしょうか?
オタスケーm(_ _)m
559デフォルトの名無しさん:05/01/05 15:35:03
>>555
インスタンス変数の宣言がこうなっているのなら
private JApplet applet;
型を、connectメソッドを持つ自作アプレットの型に変更する。例えばこう。
private MyBaseApplet applet;
560555:05/01/05 15:56:33
>>556
すみません、おっしゃっていることが理解できません…(泣

それっぽいコードを書きます(ちょっとケズってます)

public class TestApplet extends JApplet {
    private CardLayout cl;
    private MyPanel myPanel_001;
    private MyPanel myPanel_002;
    public void init() {
         cl = new CardLayout();
         setLayout(cl);

         myPanel_001 = new MyPanel(this, getContentPane(), cl);
         getContentPane().add(myPanel_001, "001");

         myPanel_002 = new MyPanel(this, getContentPane(), cl);
         getContentPane().add(myPanel_002, "002");

         cl.show(getContentPane(), "002");
    }
    public void connect() {
         System.out.println("インしたお!");
    }
}

(つづく)

561555:05/01/05 15:57:11
(つづき)

class MyPanel extends JPanel {
    private JButton connect;
    MyPanel(final JApplet applet, final Container container, final CardLayout cl) {
         setLayout(new BorderLayout());
         connect = new JButton("インする");
             connect.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent ae){
                 cl.show(container, "001");
                 applet.connect();   //ここがうまくいきません!
             }
         });
         add(connect, BorderLayout.SOUTH);
    }
}

ご助力をば…m(_ _)m
562デフォルトの名無しさん:05/01/05 16:06:53
MyPanel.javaの3行目
誤: MyPanel(final JApplet applet, final Container container, final CardLayout cl) {
正: MyPanel(final TestApplet applet, final Container container, final CardLayout cl) {

そもそもここのactionPerformed()の処理はTestAppletに書くべき内容じゃないか?
MyPanelはTestAppletに処理の開始を要求するだけにすれば、
レイアウトやコンテナを受け取る必要は無くなる。
563デフォルトの名無しさん:05/01/05 16:19:34
相変わらず低レベルなクズが多いな、このスレは。
564555:05/01/05 16:21:12
あああああああ!
あ・り・が・と・う・ご・ざ・い・ま・し・た!

でけた!ヒャッホウ(・∀・)

アドバイスいただいたとおり、connectメソッド内でカードレイアウトの
処理もまとめるようにしました。

ホントにありがとうございました!
565555:05/01/05 16:23:18
(@盆@) >>560
566デフォルトの名無しさん:05/01/05 16:27:26
>>560
まあ、スレタイにもある通り「初心者大歓迎」ですからね。
Javaの初心者に限らず、いろんな初心者が来てますね。
567デフォルトの名無しさん:05/01/05 16:30:14
>>560
と、低レベルなクズの代表者が書き込んでるわけですな
568デフォルトの名無しさん:05/01/05 17:01:46
なんで560が「質問者がクズ」という趣旨だと思うんだ?
なんで回答者がクズ呼ばわりされているとは思わないんだ?
569デフォルトの名無しさん:05/01/05 17:21:27
荒らしがやってきて壊れました。
誰かここのチャットログを流してください。

http://www.aizunpo.or.jp/cgi-local/schat.cgi
570デフォルトの名無しさん:05/01/05 17:28:20
>>565
どこに「質問者がクズ」という趣旨だと思っている書き込みが?
571デフォルトの名無しさん:05/01/05 21:27:07
文盲が来ました。
誰か567を流してください。
572デフォルトの名無しさん:05/01/05 22:04:26
ここはウジ虫の溜まり場かよ(´∇`)ケラケラ
573デフォルトの名無しさん:05/01/05 22:05:59
>>568のダメっぷりに愕然とした。
574デフォルトの名無しさん:05/01/05 22:33:31
なんか必死な香具師がいるな (・∀・) ニヤニヤ
575デフォルトの名無しさん:05/01/05 22:36:17
>>570=567
そういうところがバカにされる原因なんだよ
自分のことじゃないと思ったら無視しとけ ヴォケ
576デフォルトの名無しさん:05/01/05 22:37:15
FAQを見てもそれらしきものがなかったのですが既出でしたら申し訳ありません。

PCを新しくしたところ、IEでJavaアプレットが実行できなくなってしまいました。
インターネットオプションで確認したところ、IEにはJava2 v1.4.2_05が入っているようなのですが・・・
原因としてはどのような事が考えられますでしょうか。
577デフォルトの名無しさん:05/01/05 22:38:41
Java2 v1.4.2_05が入っているから
578デフォルトの名無しさん:05/01/05 22:38:47
そこのアドレス教えてみ
579デフォルトの名無しさん:05/01/05 22:39:20
>>574
よお、クズの典型
580デフォルトの名無しさん:05/01/05 22:41:36
>>573
Microsoftのjavaでないと動かないのがある
581デフォルトの名無しさん:05/01/05 22:42:00
>>574
どういうことでしょうか?

>>575
他のPCでは見られるのでその新しいPCの設定の問題だと思われます。
582デフォルトの名無しさん:05/01/05 22:43:02
はやく06にしないと危ない
583デフォルトの名無しさん:05/01/05 22:43:07
>>577
今まではSunのVMで正常に動作していました。
新しいPCでは動作しないのです・・・
584デフォルトの名無しさん:05/01/05 22:46:57
>>580
答えがほしいはずなのに何故自分の環境詳しく書かないの?
情報があればあるほど答えが返ってくる確率が上がると言う
当たり前のことが何故わからないの?
585デフォルトの名無しさん:05/01/05 22:50:26
>>581
スレタイに初心者って書いてあるししょうがないんじゃない。
でもここはム板だから無視したい気分。
586デフォルトの名無しさん:05/01/05 22:52:07
じゃあどこだったら相手にしてくれるのさ?
すぐ作りますから
587デフォルトの名無しさん:05/01/05 22:53:30
>>581
申し訳ありません・・・
どこをお伝えすればいいかわからないもので。
実はPCを新しくしたのは知人なので自分のものではないので詳しい使用はわかりません。
ただ、VAIOのノートであったのは確かです。
また、実行を試したアプレットの開発バージョンはv1.4.2_01でした。
他に何を書けばよいでしょうかね?
588デフォルトの名無しさん:05/01/05 22:54:07
釣りか?自分の環境の調べ方もわからないでプログラムやってんの?
589デフォルトの名無しさん:05/01/05 23:01:46
String str = String.(何らかのメソッド)

っていう式があると思うのですが、strにはメソッドの戻り値が入りますよね。
それで、これはString型のクラスのインスタンスを作成していることになると思うのですが、
newを使っていなくてもコンストラクタは呼ばれているのでしょうか?
590デフォルトの名無しさん:05/01/05 23:02:41
わかりにくいかもしれませんが、
(何らかのメソッド)の前にはピリオドが入ってます(汗
591デフォルトの名無しさん:05/01/05 23:03:14
>>585
えーと・・・
開発したのは私で、友人の新しいPCで実行できないのです。
あまり余計な情報を事を書くと混乱するかと思って最初には書きませんでした。
592デフォルトの名無しさん:05/01/05 23:05:29
「何らかのメソッド」の中でnewを呼んでインスタンスを作って、それをメソッドの戻り値として
返してる。
593573:05/01/05 23:10:12
Javaアプレットが実行できない環境では、今まではJREを最新にすれば大体実行できるようになったのですが・・・
アプレットが実行できない原因はJVM以外にある場合もあるのでしょうか。
594デフォルトの名無しさん:05/01/05 23:10:50
さらに言えばStringのstaticメソッドの中でね
595デフォルトの名無しさん:05/01/05 23:13:43
NullPointerException nullpo() {
    return new NullPointerException();
}
596デフォルトの名無しさん:05/01/05 23:13:44
>開発したのは私
こんなやつでも開発できるのか。
597デフォルトの名無しさん:05/01/05 23:15:03
>>589
Stringクラスのメソッドの中自体でStringクラスのインスタンスを作成して、
その値を返しているということでいいのでしょうか?
うーん。むずかしいですね。
598デフォルトの名無しさん:05/01/05 23:16:12
>>590
アプレットでどんなことをやってるのかも書いとけば?
俺はアプレット使ったこと無いからわからないけど
599デフォルトの名無しさん:05/01/05 23:17:32
>>594
何が難しいのかわからんのだが・・・
600デフォルトの名無しさん:05/01/05 23:18:07
釣れるなあ。すでに573の目の前に問題のノートがない以上、
なにいったって無駄なのはあきらかなのだが。
601デフォルトの名無しさん:05/01/05 23:18:41
トップページにアプレット置いてるサイトほど鬱陶しいものは無いな
602デフォルトの名無しさん:05/01/05 23:21:50
うざ度
BGM>アプレット>Flash>JavaScript>クッキー>糞でかい画像
603デフォルトの名無しさん:05/01/05 23:23:11
>>597
Javaなら知らない環境で動かされるのも不思議ではないだろう
604495:05/01/06 00:06:47
>>507
ありがとうございます。
機種依存するか、使い物にならないぐらい遅いか、という感じなんですね。
色々考えてみます・・・
605デフォルトの名無しさん:05/01/06 00:07:28
417で質問した者です。
みなさんのおかげで今回のシステムで大まかに必要な
機能だけつけた雛形のプログラム2つの内が1つ出来ました。予定より遅くなってしまいましたが、
初めてプログラムが動いた時のように嬉しいです。
これでなんとか周りのプログラマーについていけそうな気がしてきました。ありがとうございました。
606573:05/01/06 00:31:40
>>593
趣味で作った程度なので開発というと大げさかも知れませんね。

>>595
内容は単なるパズルみたいなものなのですが・・・
私が作った物以外の他のJavaアプレットの動作もできないみたいなので問題はPCかIEにあるような気がします。
IEでアプレットを実行する場合に気を付けなければいけない設定とかがあるのでしょうかね?

>>597
釣ってはいないですよ。
確かに今この場で頂いたご意見をすぐに試すことはできないのですが、
後日それを元に再設定したいと思っています。
607デフォルトの名無しさん:05/01/06 00:34:07
なんだろう。
一昨年の年末、よく似たやりとりがあったような気がする……
デジャ・ブか。
608デフォルトの名無しさん:05/01/06 00:34:50
ユーザーエージェント偽装してたらアプレット動かないよ
609デフォルトの名無しさん:05/01/06 02:12:12
コンパイル時にエラーが出て困ってます・・・
エラーはこんな感じです。

.\Finder.java:24: 変数 agree は初期化されていない可能性があります。
agree[num] = temp.containingClass();

ソースなんですが、agreeの宣言のところは
ClassDoc[] agree;
これだけです。
上のエラーのところまでにagreeはこの2箇所しか出てきません。
agreeにはClassDoc型のものを複数(数は不明)入れておきたいのですが、この宣言じゃだめでしょうか?

ClassDoc[] agree = new ClassDoc[];

とやってもうまくいきません。
どうやったらうまくいくのでしょうか?
よろしくお願いします。
610デフォルトの名無しさん:05/01/06 02:27:17
agreeの要素数が不明らしいのでなんとも言えんが、とりあえず


private final int YOUSO = 100;

(中略)

ClassDoc[] agree = new ClassDoc[YOUSO];


とかでやってみてはいかが。
611デフォルトの名無しさん:05/01/06 02:48:26
>>606
>new ClassDoc[]
コンパイルエラーだと思うが。

宣言時に初期化している場合はそのエラーは出ないはず。
中途半端に省略せずに、ちゃんと貼り付けてみな。

「初期化されていない可能性があります」は、宣言だけして
一度も代入されてない変数を参照した時のみ出るはず。

ローカル変数意外だと、finalなインスタンス変数の問題かも。
612デフォルトの名無しさん:05/01/06 02:49:25
>>607
これは適当に大きな数を入れてるてことでしょうか?

例えば配列で int a[]; と宣言しておけば、

for(int i=0 , i<b.size ;i++)
a[i]=1;

なんて感じで、b.sizeが可変でも対応できますよね?
要素数が不明というか可変て感じです。
こういう感じでつかえないのでしょうか?
613デフォルトの名無しさん:05/01/06 02:53:18
>>609
そういう時は
int[] a = new int[b.size];
とする。
614デフォルトの名無しさん:05/01/06 02:54:24
アホだ・・・b.lengthだよ寝ぼけてるなオレ(;´д`)
615デフォルトの名無しさん:05/01/06 03:31:30
>>611
寝ぼけてるんじゃなくて、元々頭が悪いんだよ。早く気づいてよかったね。
616デフォルトの名無しさん:05/01/06 04:50:18
初歩的な質問ですいません、初心者なもので、
コンパイルソフトはどこで手に入れればいいですか?
617デフォルトの名無しさん:05/01/06 04:55:12
sunのホムペ
618デフォルトの名無しさん:05/01/06 05:05:10
Java覚えたら、まず初めに何を作ればいいんですか?
619デフォルトの名無しさん:05/01/06 05:09:39
HelloWorld
620デフォルトの名無しさん:05/01/06 05:22:30
class Hello
  public static void main(String args[]){
   System.out.println("HelloWorld");
 }
}

621デフォルトの名無しさん:05/01/06 08:12:10
失礼します
javaのチェック例外と非チェック例外のそれぞれの一覧リストみたいなのってありますか?
622デフォルトの名無しさん:05/01/06 08:29:09
>>618

java.lang.Errorは非チェック

java.lang.Exceptionは基本的にチェック

 ただし子クラスの
  java.lang.RuntimeExceptionおよびその子クラスは非チェック。

以上。
623デフォルトの名無しさん:05/01/06 08:50:48
>>619
ありがとうございます
lang.errorとlang.ExceptionってAPI仕様の例外の概要とエラーの概要にそれぞれ該当しますよね
前からこの二つの違いについても疑問に思っていたんですが
これはチェック例外と非チェック例外の違いという事でいいんでしょうか?
624デフォルトの名無しさん:05/01/06 09:05:36
>>620
errorはエラー。アプリケーション中でハンドリングしてはいけない・できない。
Exceptionは例外。Javaアプリケーション中でcatchして例外発生時の処理を実装可能。
625デフォルトの名無しさん:05/01/06 09:07:59
>>620
java.lang.Errorとjava.lang.ExceptionのAPI仕様を読めばわかると思います。

ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Error.html
「Error は Throwable のサブクラスで、通常のアプリケーションであれば
キャッチすべきではない重大な問題を示します。そうしたエラーの大部分は異常な状態です。」
「このようなエラーは、絶対に起きてはならない異常な状態であるためです。」

ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Exception.html
「Exception クラスとそのサブクラスは、通常のアプリケーションでキャッチされる
可能性のある状態を示す Throwable の形式の 1 つです。」
626デフォルトの名無しさん:05/01/06 09:14:10
>>621
揚げ足取りの様でスマンが、
java.lang.Errorに対する例外処理は「できない」のではなく「すべきでない」だけだぞ。
発生したとしても、状況を考えればできることは限られるが。
627デフォルトの名無しさん:05/01/06 09:32:21
>>621-623
有難うございました
628デフォルトの名無しさん:05/01/06 10:00:27
またまた失礼します
例外処理には例外が発生したらその場で処理する方法とスロー宣言を用いて
冷害が発生したら呼び出し側メソッドで処理してもらう二つの方法がありますよね
後者の方のメリットって何ですか?
自分の中ではtry文中のコードが長いと時にコードが見やすくなるかな
と思っているんですが他にもありますか?
629デフォルトの名無しさん:05/01/06 10:20:38
>>625
前者だと例外が発生したのか、正常終了したのか、呼び出しもとで判断できない。
630デフォルトの名無しさん:05/01/06 10:23:50
>>625
自分のルーチンで処理しきれない例外を呼び出し元に投げて処理してもらう
631625:05/01/06 10:32:56
>>626-627
すいません、もうちょっと噛み砕いて説明してくれませんか?

>>626
rhrows使わなくても例外が発生したら例外処理されるので判断は出来ると思うのですが・・・
最後の元に投げて処理してもらうというのがイマイチ

>>627
>自分のルーチンで処理しきれない例外
例えばどんな例外ですか?
632626:05/01/06 10:40:19
>>628
呼び出しもとでは、その先で事故ったのか正常にコトが進んだのかがわからないだろ?

例えば、Servletからデータベース検索処理を呼び出したとする。
検索が正常終了したら検索結果の表示、
データベース障害が発生したら「ただいまシステム障害のため、ご利用になれません」
みたいなエラー画面の表示をしたいとする。
ところが、データベースアクセス周りで発生した例外をcatchしてしまうと呼び出し元のServletでは
障害が発生したのか、検索が正常に終了したのか判断できないだろ?
検索結果一覧画面を表示していいのかシステムエラー画面を表示していいのかわからないだろ?
呼び出し元のServletまでthrowしてServletでcatchすれば、
Servletでは「この型の例外が発生したらこのエラー画面でこのメッセージを表示」
「例外が発生しなければこの画面を表示」のような処理分岐ができる。
633626:05/01/06 11:15:04
>>629
なんとなくですがイメージは掴めました
でもServlet、データベースについては詳しく解らないのでダメですね
もうちょっと勉強してこういう状況に当たった時にあなたのアドバイスを思い出し
throwについて考えてみたいと思います
有難うございました
634デフォルトの名無しさん:05/01/06 12:41:49
>>630
この問題はお前には対処できないから、先輩のところへ上げろ(throws)
先輩でも無理だと判断したら、先輩はそのまた上司に上げるから。
上司は大きな問題をそれなりに対処してくれるはずだ。

自分で対処すべき問題は、お前がちゃんと処理しろよ(catchして処理)
全部先輩に上げると、先輩は「そんな細かいことまで俺が知るか!」って困るからな。
635デフォルトの名無しさん:05/01/06 13:10:44
>>631
sennsunaine
636デフォルトの名無しさん:05/01/06 13:55:29
>>632
オマエガナー
637デフォルトの名無しさん:05/01/06 14:31:28
servletからJSPにforwardさせる場合、
表示させるフレームの指定をすることは可能でしょうか?

左右二分割の画面の左にあるメニューより、ログアウトを選択すると
ログイン画面(フレーム分割なし)に遷移させたいです。

現状:
ServletConfig scfg = hs.getServletConfig();
ServletContext sc = scfg.getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher( address );
rd.forward( req , res );

addressにログイン画面にforwardさせるservletのアドレスを記述すると、
二分割画面のまま遷移してしまいます。
638デフォルトの名無しさん:05/01/06 14:36:33
>>634
JSP,Servlet以前の話じゃないか。
<a href="login.jsp" target="top">ログアウト</a>
じゃダメなのか?

639634:05/01/06 14:41:58
>>635さん
ご返答ありがとうございます。
logoutServlet.javaにて、不要なセッションオブジェクトなどを破棄させてから
ログイン画面に遷移させたいと思っていました。

ですが、ログイン画面で不要なセッションオブジェクトを保持している
場合に削除すれば良いですね・・・。ありがとうございます。
640デフォルトの名無しさん:05/01/06 15:00:04
Stringクラスって何故にnew演算子を使わなくても大丈夫なの?
API見てもクラスメソッドではないのにね
これはjavaの仕様で決まってることですか?
641デフォルトの名無しさん:05/01/06 15:19:34
>>637
うん
642デフォルトの名無しさん:05/01/06 15:21:20
>>637
またその質問か・・・。

以下を100回読め。
http://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html#101083

つまり言語仕様。
643デフォルトの名無しさん:05/01/06 17:00:59
サーブレットで
HttpServlet.getServletContext().getRequestDispatcher

HttpServletRequest.getServletContext().getRequestDispatcher
はどうちがうの?
644デフォルトの名無しさん:05/01/06 17:04:25
>>640
相対パスを指定できるか、コンテキスト相対パスのみを指定できるかの違い
645デフォルトの名無しさん:05/01/06 17:11:24
>>641
Thinks
646デフォルトの名無しさん:05/01/06 17:30:04
指令行の引数に正の整数 n を指定すると, 2^0, 2^(-1), 2^(-2), ..., 2^(-n) を順に各行に出力していくプログラムを作ってください。
n が大きな値になっても,小数点以下100桁までほ正確に結果を出力するようにしてください。

すいませんが、教えてもらえませんでしょうか?
647デフォルトの名無しさん:05/01/06 20:42:15
つい先ほどからJavaを始めた初心者です。
helloworldをコンパイルして、DOS上で
>java helloworld
を実行して上手く実行できたのですが、
エクスプローラでjavaのフォルダを見てみるとhelloworld.exeがありません。
javaはそういったものなのでしょうか?
実行ファイルは無いのでしょうか?
648デフォルトの名無しさん:05/01/06 20:59:12
実行ファイルはjava.exeだ。
649デフォルトの名無しさん:05/01/06 21:39:20
>>644
Excelのマクロのようなものと思えばいい。
EXCEL.EXEを実行してHelloWorld.xlsを開くと、マクロが実行される。
それと同じように、java.exeを実行してHelloWorld.classを開くと、Javaアプリケーションが実行される。
650デフォルトの名無しさん:05/01/06 21:55:06
>>646 天然?
651644:05/01/06 22:12:30
>>645-647
dです。
さっきからちょこちょこいじってるんですが、
JAVAってCよりも簡単な感じですね。
ありがとうございました。
652デフォルトの名無しさん:05/01/06 22:56:47
また一人新たなJava厨誕生のオカン
653デフォルトの名無しさん:05/01/06 23:03:19
PHP厨の一人もここで引き取ってもらえないかな(w
654デフォルトの名無しさん:05/01/06 23:25:56
Javaには変態さが足りない
655デフォルトの名無しさん:05/01/06 23:45:50
J2SE 1.4 と 5.0 の共存は可能なのでしょうか?
可能であれば何か注意することなどあれば教えてください。
656デフォルトの名無しさん:05/01/07 01:52:33
>>652
可能かどうかは、どのように共存させたいのかによる。
657デフォルトの名無しさん:05/01/07 06:28:57
ある数(3.55など小数点以下もある数)の整数部分だけを取り出すメソッド
ってないでしょうか?Mathクラスなど検索したのですが見つからない(;´ρ`)
658デフォルトの名無しさん:05/01/07 06:39:37
(int)3.55
659デフォルトの名無しさん:05/01/07 06:48:32
>>654
>Mathクラスなど検索したのですが見つからない
あやまれ!floorにあやまれ!(AA略
660654:05/01/07 08:14:44
〈 ドモッ、スミマセン>floor 〈 スミマセンスミマセン...。 〈 コノトオリデス!
  ∨ ̄ ̄ ̄ ̄ ̄ ̄  ∨ ̄ ̄ ̄ ̄ ̄ ̄  ∨ ̄ ̄ ̄ ̄ ̄
 (´Д`;)ヾ       (;´Д`)             ヾ
   ∨)        (  八)         (´Д`;)、
   ((          〉 〉           ノノZ乙
661デフォルトの名無しさん:05/01/07 09:48:04
教えてください。

jSpinner.((DateEditor)getEditor()).getTextField().setDocument(new SampleTextDocument());

こんな感じで、setDocumentに独自のDocumentクラスを設定しているのですが
insertStringメソッドが呼ばれずに、困っています。
原因とかわかる方、いらっしゃらないでしょうか。
662デフォルトの名無しさん:05/01/07 11:25:48
Javaで
「現在読み入力中である。」というのは判断可能ですか?
※IME起動し、ヨミガナが未確定の状態か否か

可能でしたら実装方法教えてください。

よろしくおながいします。
663デフォルトの名無しさん:05/01/07 11:49:00
>>659
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/text/JTextComponent.html#addInputMethodListener(java.awt.event.InputMethodListener)
で、未確定の文字列が取得できるから、これで判別できない?
取得するコードはすげー昔の過去スレに書いた記憶があるけど、
もう探せないかも。
664デフォルトの名無しさん:05/01/07 13:02:54
をしえてください。

String配列を格納したListがあります。
そのList中のString[0]を取り出すにはどうすればよいのですか?????
665デフォルトの名無しさん:05/01/07 13:05:05
>>661です。
Listの1番目のString[0]です。かさねてよろ。
666デフォルトの名無しさん:05/01/07 13:08:48
>>661-662
((String[])list.get(0))[0]
667デフォルトの名無しさん:05/01/07 13:15:26
>>663
はやいですねぇ!
ありがとうございました。感謝!
668659:05/01/07 15:16:53
>>660

ありがとーございます。

InputMethodListenerのinputMethodTextChangedで
getText()を呼びだし、
nullか否かの判断で読み入力中か否か(キャンセルor確定済み)
判断つきそうです。

助かりますた♪
669デフォルトの名無しさん:05/01/07 15:54:15
Linuxにeclipse入れたいけどイマイチ踏ん切りがつかん。
あんまりLinuxの使い方わからないしなぁ。
でも勉強のために入れようかなぁ。。。
670デフォルトの名無しさん:05/01/07 16:35:11
LinuxにEclipseを入れる勉強したいなら入れれば?
671デフォルトの名無しさん:05/01/07 17:14:40
EclipseならWindowsでも動くから、無理してLinux使わなくてもEclipse使ってみたいだけなら
取敢えずはWindows版を入れてみたら。
672デフォルトの名無しさん:05/01/07 18:42:38
教えていただきたいことがありまふ。

Timer(本当はなんでもいいのですが)を使って、
一般的なタイマーを作りたいのです。
それで、途中でストップさせるようなことはできるでしょうか。
そのストップの合図というのは、いつくるのか、わからない、という
かんじなのですが。
(他のクラスのメンバ変数を見させて命令するようなかんじ)
しかも、ひとつのクラスでたくさんのタイマーをつくるみたいな。

わかりにくいでしょうか。
おねがいします。
673デフォルトの名無しさん:05/01/07 20:16:19
TimerのAPIにかいてあること

void cancel()というメソッド
現在スケジュールされているタスクを破棄して、このタイマーを終了します。

複数のTimerは
Timer t1 = new Timer();
Timer t2 = new Timer();
これで2つのTimerができます

これでいいですか?
674デフォルトの名無しさん:05/01/07 20:19:46
わるいTimer勘違いしてた
javax.swing.Timerの方だよね?

こっちだったら
public void stop()
Timer を停止し、リスナーへのアクションイベントの送信を停止します。
というメソッドがある

複数生成は
Timer t1 = new Timer(1000,this);
Timer t2 = new Timer(1000,this);
第二引数は適当に変えてもいいよ
とすればできます
675デフォルトの名無しさん:05/01/07 22:06:04
>>669
ttp://doryuu.k-server.org/Foo.java.html

もうやっつけも良いところだけど、タイマーのサンプルに
一応、例外対策はしてると思うけど…変なエラー出たら(*_ _)人ゴメンナサイ
タイマーとして使用してるのは java.utilのTimerとTimerTaskね

見当違いなことやったら、他の誰かに聞いて下さい。
Swingのタイマーも面白そうだけどねぇ
676デフォルトの名無しさん:05/01/07 22:21:20
>>631
素晴らしい。
よく解かった!!
677デフォルトの名無しさん:05/01/08 00:07:23
javaのドキュメントには、そのクラスなどの使い方は載ってますか?見てみたんですがよくわかりませんでした。
どのようにみればいいのですか?
678デフォルトの名無しさん:05/01/08 00:14:04
>674
詳しく載ってるのもある(大概、メンバ一覧表の前にだーっと説明がある)が、
基本的に「リファレンスマニュアル」というものなので、使い方まで書いてあるのは少ない。
それはそれとして、Webなり本なりの解説を見た方が、「使い方」を覚えるには良いかと。
679デフォルトの名無しさん:05/01/08 00:15:37
>>674
APIリファレンス
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html

ちなみに君の言うドキュメントって何?
680デフォルトの名無しさん:05/01/08 01:29:14
>>99
どこで?
681デフォルトの名無しさん:05/01/08 01:37:13
>>677
おまえののろさ
682デフォルトの名無しさん:05/01/08 01:42:06
かなりの初心者な質問なんですが・・
サーブレットの実行についてなのですが
環境
Windows XP
Tomcat 5.5

Tomcatをインストールし
http://localhost:8080
にてindex.jspが表示されることは確認できました。

次にTomcat Webアプリケーションマネージャ にて
コンテキストパス (省略可): /My
XML設定ファイルのURL:
WARファイル又はディレクトリのURL: C:/My
と設定し

そして"C:\Tomcat 5.5\webapps\My\Sample1.java"のファイルを
http://localhost:8080/My/Sample1
にアクセスしても404エラーでページが表示されません。


何か設定が足りていないのでしょうか?
どなたか教えてください。よろしくお願いします。
683デフォルトの名無しさん:05/01/08 02:01:04
がっくし
684デフォルトの名無しさん:05/01/08 02:01:08
Calendar myCalen=new myCalen();

カレンダーオブジェクト作ろうとしたら具象で無いみたいなエラーが出ました
抽象クラスもオブジェクト作れるはずなのにwhy?
685デフォルトの名無しさん:05/01/08 02:04:30
そいつは初耳だな
686デフォルトの名無しさん:05/01/08 02:09:34
>>681
がっくし
687デフォルトの名無しさん:05/01/08 02:13:18
Calendar myCalen=new Calendar();

でねーの?
688デフォルトの名無しさん:05/01/08 02:16:08
>>678
がっくし
689デフォルトの名無しさん:05/01/08 02:27:07
>>681
かまって下さい

>>684
間違えた・・・でもダメです
Calendar myclnd=new Calendar();

エラー
java.lang.Error: コンパイル問題が未解決です。
Calender は解決できないか、型ではありません。
型 Calendar は具象クラスでないため、そのインスタンスを生成できません。

at testUtil.main(testUtil.java:33)
Exception in thread "main"

getInstanceメソッド使わないとダメなのでしょうか?
690681:05/01/08 02:29:12
タイム、未だ突っ込まないで下さい
少々お待ち
691デフォルトの名無しさん:05/01/08 02:30:07
エラー
java.lang.Error: コンパイル問題が未解決です。
型 Calendar は具象クラスでないため、そのインスタンスを生成できません。

at testUtil.main(testUtil.java:33)
Exception in thread "main"
692デフォルトの名無しさん:05/01/08 02:36:08
>>679
デプロイ場所が違うし、デプロイに必要なものも足りないし、手順も足りない。
メールや掲示板じゃ伝えきれない量なので、本でも買って勉強すべし。
693デフォルトの名無しさん:05/01/08 02:37:29
>>688
> getInstanceメソッド使わないとダメなのでしょうか?
普通はそうする。

自分でCalendarのサブクラスを作っても良いが。
694デフォルトの名無しさん:05/01/08 02:51:02

protected Calendar();

コンストラクタは
protected ダヨ

695681:05/01/08 02:57:16
>>690-691
有難うございました
コンストラクタには気づきませんでした、納得です
696デフォルトの名無しさん:05/01/08 03:47:44
入れ子クラスって何ですか?
例:Component.FlipBufferStrategyはクラス java.awt.Componentの入れ子クラス
FlipBufferStrategyクラスはComponentクラスを普通に継承してるんですか?
また、Componentクラスを継承しているAppletクラスは
FlipBufferStrategyクラスも継承していると考えていいんでしょうか?
697デフォルトの名無しさん:05/01/08 08:45:16
>>693
> 入れ子クラスって何ですか?
クラス内で宣言されたクラス。継承とは関係ない。

class Outer { class Inner {} }
Inner は入れ子クラス。メンバークラスとも呼ばれる。
少し意味が違うがインナークラスとも呼ばれる。
698693:05/01/08 10:45:03
>>694
レスどうもです

>クラス内で宣言されたクラス
なるほどそんなのがあるんですね。クラスの中はフィールドとメソッドだけだと思ってました
話し戻りますが、継承とは関係なくAppletクラスを継承したクラスから
FlipBufferStrategyクラスのメソッドは使えるんですか?
699デフォルトの名無しさん:05/01/08 11:01:18
> Appletクラスを継承したクラスからFlipBufferStrategyクラスのメソッドは使えるんですか?
使える。

ただし、FlipBufferStrategy を使うアプレットは 1.4以降で追加されたクラスを使ってるので
InternetExplorer標準だった 1.1 レベルの MSJVM や 1.3 の古い Sun のJavaプラグインでは動作しない。
700初心者ですみません:05/01/08 11:37:31
Windowsベースのアプリケーションをつくりたいのですが、
やはり高価なJBuilder等を使用するしか方法は無いのでしょうか?

今、Eclipseを使って勉強をしているのですが、どうもエディター
としての使い道しか無い気がします。
コレをどの様に使えばアプリが作れるのでしょうか?
701デフォルトの名無しさん:05/01/08 11:46:32
>>697
そのエディターだけでもGUIアプリは作成可能だ。
GUIデザインをマウスでポトペタ風にやりたいならばVisualEditorプラグインを使えば、
JBuilderのように、GUIアプリのデザインも可能。
だが、JBuilderとは違った使い勝手であるし、(GUIのデザインに関しては)JBuilderほど親切ではないと思う。
702デフォルトの名無しさん:05/01/08 11:49:34
配列は配列をメソッドに渡すときは参照渡しだと思うのですが、
メソッドから配列をreturnしたときは、値渡しになるのでしょうか?
703デフォルトの名無しさん:05/01/08 11:57:38
>>699

return したときも参照渡しだ
値渡ししたければ、return (Type[])array.clone() だ
704デフォルトの名無しさん:05/01/08 12:00:53
>>698
でもさ、とってつけたようなポトベタのフォームのUIなんざ、
死んだようなソフトだよね。しっかりレイアウト使えと。
705デフォルトの名無しさん:05/01/08 12:19:16
>>700
私がが持っている本には、メソッド内で宣言した配列を平気でreturnしているのですが…
スタックから解放されるはずなのに、どないなっとんでしょ
706702:05/01/08 13:08:06
ソースコード晒すとこんな感じです。

class ArrayFactory
{
public int[] getNewArray()
{
int array[] = {1, 2, 3, 4, 5};

return array;
}
}

public class app
{
public static void main(String args[])
{
ArrayFactory af = new ArrayFactory();

int array[] = af.getNewArray();

for (int loop_index = 0; loop_index < array.length; loop_index++){
System.out.println("array[" + loop_index + "] = " + array[loop_index]);
}
}
}
707デフォルトの名無しさん:05/01/08 13:12:17
>>702
> スタックから解放されるはずなのに、どないなっとんでしょ
Java の配列、クラスのインスタンスはスタック上に生成されない。
スタック上に置かれるのは配列やインスタンスへの参照だけ。

ちなみに、Javaには「参照渡し」は無い。「参照値」を「値渡し」する。
>>700 は単なる間違いか、キミの言葉遣いに合わせただけ。
708>>669:05/01/08 13:18:41
昨日、Timerクラスのことで書き込んだ者です。
>>670 >>671 >>672
さん、たぶん同じ人ですよね。お返事ありがとうございます!
java.util.timerクラスのことでした。説明が足りずすみません。
>>672のプログラムがちょうどよかったです。ありがとうございます。

それで、もう少し教えていただきたいのですが、
私は、actionPerformedで命令を待つ方法ではなくて、
例えば、1.txtにtrueという文字があるときは
タスクを実行するタイマーが生成されて、
今度は1.txtが更新されてfalseという文字があったとき、
タイマーを取りやめる、
みたいなのを作りたいと思っています。

ちょっと書いてみたのですが
flag = true;
if(flag) {
timer.schedule(new TaskIroIro(),0,1000);
}
if(テキストファイルを見てfalseだった)) {
flag = false;
timer.cancel();
}
とこんな感じでしたのですが、きちんと実行されなくて…。
どういうふうにすればいいのでしょうか?
709デフォルトの名無しさん:05/01/08 13:32:07
>>704
返答ありがとうございます。私にはまだ、C言語とごっちゃになってるところがあるようです。
もっと深く勉強して以降と思います。
710デフォルトの名無しさん:05/01/08 13:33:04
「して以降」は誤字です。どうもスマソ
711デフォルトの名無しさん:05/01/08 14:17:52
>>704
>ちなみに、Javaには「参照渡し」は無い。「参照値」を「値渡し」する。

どう違うのか、さっぱり分からん・・・。
もっかい本引っ張り出して勉強し直さんと(鬱
712デフォルトの名無しさん:05/01/08 14:26:32
>>708
void method(int[] array){ array = null; }

int[] a = new int[0];
method(a);

みたいなコードがある場合、
「参照渡し」する場合は a が null になる。
「参照値」を「値渡し」する場合は a は変化しない。
(aは要素数0の配列のインスタンスへの参照値を保持しつづける)
713デフォルトの名無しさん:05/01/08 14:59:45
>>708
>>1の一番上のリンクでも見ろ。
714デフォルトの名無しさん:05/01/08 15:39:53
Javaでは、「参照渡し」はなく「参照値」を「値渡し」する
と言う方が正しいって意見はナンセンス。
多くのJava参考書で「参照渡しする」と書いてあるのだから
「参照渡し」の表現を使っても別に間違いではない。
参照変数でなく変数の実体から見れば、参照渡しされてるの
だからね。俺は参考書の呼び方に従う。
715デフォルトの名無しさん:05/01/08 15:58:54
>>711
Javaに限った話ではないんですが。
単に参考書が間違っているだけ。
昔C++ができる前、Cで「参照渡し」といっていたものが今でも使われている
(というか参考書を書いてる人間が昔の言い方を引きずっている)だけ。

本来参照渡しというのはfortranのような渡し方を言う。
C++ではそういう渡し方ができるようになったので
昔参照渡しと間違って呼んでいたものは「参照値の値渡し」に改められ、
本来の「参照渡し」と区別するようになった。

わざわざJavaで、Cの昔の混乱を再現する必要はない。
Javaのは明らかに参照渡しではないのだから。
716デフォルトの名無しさん:05/01/08 16:14:06
jfreechartを使いたいんですが、
ライブラリの使い方を詳しく書いたwebとかないですか?
717デフォルトの名無しさん:05/01/08 16:28:03
>>713
ちょっとググればザクザク出てきますが。
718デフォルトの名無しさん:05/01/08 16:31:33
その議論はもういいって
719デフォルトの名無しさん:05/01/08 17:31:02
_____________(
|                   \
|  //  / ̄ ̄ \ ズン    \乂八    へ
|//|  (([]匚●二])) ∧ ズン   | \  | |         \|/
|ゝ| ̄ ̄|7 (((((曰)))))/  ヽ>     |   )  | |\     \   /
| ____     |=_  )     丿 ι(  ||  |    ― き ―
| |II II II II II|(〇 /◆く丿ヽ/     /     ) | |  |     ― た ―
|()⌒| ̄\/_/へ /        | ι   ( 丿   |      ― ぁ ―
|人(ξ厂1、巛《丿ー′         |  ι   (   //     ― ! ―
|    L「 \      |        |      \/ イ     /   \
|    /|| \◎   || ||\        |         丿人    / |\
|  / || ||  | ̄|  || || |        \           )     
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \        ん
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\  / ____
                       / ̄ ̄ ̄ ̄ ̄ ̄
720デフォルトの名無しさん:05/01/08 19:01:58
>>713
あ、おれドキュメント買ったよ。
でも、内容はヒ・ミ・ツ!
721デフォルトの名無しさん:05/01/08 19:38:52
>>712
おっしゃっている事がよくわからないので、具体例を示して私たちに教えてください。
722デフォルトの名無しさん:05/01/08 20:35:07
>>712ではありませんが。

>>718
Javaの変数には「プリミティブ型」と「参照型」があります。
「プリミティブ型」はbyte,short,boolean等で実際に値がはいります。
「参照型」の変数に格納されるのは、オブジェクトそのものではない。
格納されるのは「オブジェクトへの参照(オブジェクトリファレンス)」
「参照」とは「オブジェクトがメモリ中のどこに存在するか(オブジェクトの
のアドレス)」を知らせる情報のこと。
「参照」はいわゆる「ポインタ」に似ている。
プログラマは参照型変数に実際にどのような値が入っているか知る必要は
ありません。

Head First Javaより
723719:05/01/08 20:38:29
Classは全て参照型です。
724デフォルトの名無しさん:05/01/08 21:57:14
Javaには、C++とちがって、参照以外でオブジェクトにアクセスする方法はない。
このせいで「参照=オブジェクト」と思っている人頻発で、「参照を渡すんなら参照渡し
だろが!」という勘違いくんが続発している。
725デフォルトの名無しさん:05/01/08 22:05:08
>>721
別に勘違いしててもいいよ。どの言語にしても最初は騙し騙し教えるわけだし。
それに最初に教えるよりも自分で後でおかしいことに気づいた方がいいって
いきなり真実を教えても初心者は混乱するだけです
726デフォルトの名無しさん:05/01/08 22:06:12
参照を渡すんなら参照渡しだろが!
727デフォルトの名無しさん:05/01/08 22:12:36
>>723
一応ウケタってことにしといてあげるよ。
728デフォルトの名無しさん:05/01/08 23:20:23
Javaでは、メソッドに「値を渡す」といいます。

メソッドに渡す値のことを「引数」あるいは「パラメータ」と呼びます。

Javaでは、引数として指定された値がすべて「コピー」されて
メッソドに渡されます。(これを「値渡し」といいます)

値は「ビットのパターン」がコピーされて渡されます。

プリミティブ型の変数の値は、数値や文字です。

参照型の変数の値は、「オブジェクトの存在場所」
を知らせる情報(アドレス)です。


729デフォルトの名無しさん:05/01/08 23:34:47
もしかして、ぬるぽは実体がないのではなくて、アドレスがないということですか?
730デフォルトの名無しさん:05/01/09 01:58:37
アドレスがないというのがどういう意味か不明瞭ですが
変数がどの実体とも結びつけられていないという意味ならそのとおりです。

# ちなみに言語仕様的にはnullはプリミティブ型でも参照型でもない
# null型という特別な型の値ということになってます。
731デフォルトの名無しさん:05/01/09 03:15:10
型(type)
型はプリミティブ型と参照型に大別でき,プリミティブ型には整数型(byte, short, int, long),
浮動小数点数型(float, double),真偽値型(boolean),Unicode形式の文字型(char)が用意されており,
参照型にはクラス型,インタフェース型,配列型が用意されている。

null型(null type)
nullリテラルが表す値の型。


Object o = null;

nullがリテラルです。

   
mainのあるクラスでActionListenerをimplementsしてあったら、
別のクラスでActionListenerは使えませんか?

実行したら、ウィンドウが立ち上がってメニューを選択すると
新しいウィンドウを立ち上げて、そのウィンドウにボタンとかでイベントを
追加したい、という仕様なのですが・・・。

ちなみに、新しいウィンドウの方はmainとは別のクラスで作っています。
733デフォルトの名無しさん:05/01/09 10:19:06
>>729
適切なウィジェットにaddActionListenerしてあげればいくらでも使えます。
734デフォルトの名無しさん:05/01/09 10:50:43
初心者質問ですみませんがお願いします。

言葉でうまく説明できないのですが、
例えば、
int a と、String s="a" があるときに、何らかの方法、例えば
Class.method(s) = 1 というような感じで間接的に a を操作する方法はないでしょうか。
735デフォルトの名無しさん:05/01/09 10:53:37
質問です

class Family{
public Object mother;
public Object father;
public Object chiled;
}
というクラスがあったとします(フィールドの型はプリミティブじゃなければなんでもいいです)


どこかのクラスの内部で
public volatile Family house;
と宣言したとします。
この場合、Familyクラスの内部のフィールドをいじる事に対しても、一貫性が保障されるんで
しょうか?、それともフィールドもすべてvolatileで宣言しなくてはならないのでしょうか?

調べてもコレだ!!という情報がないので質問させていただきました。よろしくおねがいします。
736672 !670 !671 :05/01/09 11:12:34
>>705
OKOK,叩かれなくて良かったよ。
ソース晒すの久しぶりだから叩かれないか少し不安だったんだ。
良くも悪くも2chだからね。

ハッΣ(゜ロ゜〃) まさかどこかで叩かれてるとか…
まぁ何にせよ参考になったのなら幸いだわ。

んじゃ、ファイル消しておくべさ
737デフォルトの名無しさん:05/01/09 11:31:09
クラスの再利用についての質問なんですが、よくクラスは再利用や改変されることを
念頭に置けって言われますよね。でも具体的にはどういう感じに整理しておくのが一般的なのでしょうか?
例えばProjectAとかいうパッケージでHogeというクラスのfoo()というpublicなメソッドを
作ったとして、後々にProjectBというパッケージ内でfooを再利用したいとすると、fooはどのようにして
保存され、再利用されるべきでしょうか?
ProjectB内にfooを利用するための新しいクラスを作ってそこにfooを再定義するとか、
Hoge.javaを丸ごとProjectB内にコピーしてくるとか、またはそもそもMyToolsとかいうパッケージを
別に定義して、そこにMyTools.Tool.foo()のような感じで、fooを定義しておいて、
MyTools.jarに固めて、ProjectAもProjectBもMyTools.Toolをインポートして使うとか、
色々考えられると思うのですが…。
738デフォルトの名無しさん:05/01/09 12:01:47
>>734
質問の主題と付随する例示の関連が薄いのでどちらに答えてあげるべきかわからんが。

主題の方は再利用される事を念頭に置いて書かなくてもプロジェクトを複数こなす間に
何度か似たようなクラスが頻出する経験をするはずで、そういう時に過去のコードをリファクタリング
して行くことで汎用性のあるインターフェースを持ったクラスができあがる。
そのようなクラスをまとめて意味のあるパッケージとする事でチームが共有するライブラリができる。
そのようなライブラリはライブラリ単体のプロジェクトとして管理するようになる。

例を上げてもらった状況下を2つの性格の似たプロジェクトが同時進行すると仮定してみると
共有部分をライブラリ管理のプロジェクトとして取り上げ、成果物をMyTools.jarとしてA,B両プロジェクトで利用する。

自分の経験から言えば2つのプロジェクトで使われるライブラリを最初から作成するよりも
複数のプロジェクトを経て生き残った共通性に着眼したクラス群の方が寿命は長い。
739デフォルトの名無しさん:05/01/09 12:32:21
[bbs2ch.properties]
bbs2ch.mona=モナー
bbs2ch.giko=ギコ

[Bbs2chPropertyKeys.java]
class Bbs2chPropertyKeys {
 static final String BBS2CH_MONA = "bbs2ch.mona";
 static final String BBS2CH_GIKO = "bbs2ch.giko";
};

こんな感じで、プロパティファイルのキー値を解析して
javaファイルを自動生成するコマンドラインツールない?
740デフォルトの名無しさん:05/01/09 13:01:42
>>736 echoとsedで出来るレベルだから、自分ならちょっとしたシェルスクリプト
組んで終わりだな。
741デフォルトの名無しさん:05/01/09 13:05:56
>>734
Hogeクラスのfoo()を使いたいところで、

import ProjectA.Hoge;

ってすればいいんでないの?
742デフォルトの名無しさん:05/01/09 14:13:32
>>731 の補足です。
クラスの場合は,
String s = "MyClass";
Object obj = Class.forName(s).newInstance();
という感じで,クラスを間接的に参照できますが,これと同じようなことを
変数でやりたいんですが,できないでしょうか?
743デフォルトの名無しさん:05/01/09 14:23:48
>>739
フィールドならリフレクションでとってこれそうだが
744デフォルトの名無しさん:05/01/09 14:24:54
>>739
局所変数は基本的に無理。

クラスフィールドやらインスタンスフィールドは
java.lang.Class の getField() とかで
java.lang.reflect.Field のインスタンスを取ってきて
int型のフィールドだったら getInt(Object) と setInt(Object, int) でアクセスできる。
745デフォルトの名無しさん:05/01/09 15:29:16
㋀㏨  
ゔ〲〰 ゔ〲〲〰〰 ゔ〲〰 ゔ〲〰 ゔ〲〰ゔ 〲〰ゔ 〲〰ゔ〲〲〰ゔゔ
〳〵ヷヷヷヷ〰〰〰〳〵ヷヷヷヷ〰〰〰〳〵ヷヷヷヷ〰〰〰
(♛Д)(*゜∀゜)〜♡ℳℴℯ❤ℒℴνℯ..._〆(゜▽゜*)㌰㌰
☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠
(・∀・)/ヾ~~╋┓!㋦㋸㋭°
|壁|」゜ρ゜)」 ノ ヽ``〜 力㋦㋸㋭°
     / ⌒ヽ  
   / ´_ゝ`) 荒れてますね、 β α κ α にはコピペできませんよ・・・
  |     /
   | /|  |
  // |  |
 U   .U  
☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠
746デフォルトの名無しさん:05/01/09 15:44:40
>>732
> この場合、Familyクラスの内部のフィールドをいじる事に対しても、一貫性が保障されるんで
> しょうか?

調べたわけではないのだが、それは無理だろう。

というか、そんなことをなぜする必要が?
747デフォルトの名無しさん:05/01/09 16:24:05
>>741
たびたびすみません。
> int型のフィールドだったら getInt(Object) と setInt(Object, int) でアクセスできる。
この引数の Object は何を指定するんでしょう?
748デフォルトの名無しさん:05/01/09 16:29:38
>>744
ポカーン( ゚Д゚)
749デフォルトの名無しさん:05/01/09 16:43:00
わざわざポカーン( ゚Д゚) なんて、幼稚なコピペする事ないでしょ。
いい年して。だから周りからガキっぽいって言われるんですよ。
身に覚えがあるでしょう。
真面目に聞いてるので誰か教えてください。

750デフォルトの名無しさん:05/01/09 16:51:34
行き詰まったから気分転換に再び登場

>>705よ Java起動時にテキストの内容を取得したいんだったらStringBufferとStringTokenizerの組み合わせがオイシイですよ。(基本か?)
それか、本気でちょっとした内容(trueとかfalseとかウインドウのサイズなど)を保存しておくだけならPropertyクラスでやってみるとかね。
確か後者のはWinのiniと同じような感覚で扱ったはずだわ。
今回はソース投げてる時間もなさそうなんで参考リンクだけな。

ファイルの入出力
ttp://milkyway.merseine.nu/main.shtml
↑のJava講座 53〜55章辺りを読んでみそ。

Propertyクラス
ttp://www.techscore.com/index.html
↑のJava→6.『ロケール/プロパティ/リソースバンドル』に少しだけ載ってた。

まぁ、これ読んで頑張ってくれぃ
751デフォルトの名無しさん:05/01/09 16:52:33
>>745
>>746 は僕じゃないです。

getField() は Class のメソッドなので、参照しようとするフィールドを含むクラスから
Class.forName() で Class オブジェクトを作るとして、それから Field のインスタンスを
取ってきて、まではいいんですが、じゃあ、getInt() の引数のオブジェクトは何にするのか
真面目にわかりません。
getField した時点で、対象フィールドは確定してるので、引数なしで getInt() でいけそうに
思うのですが、引数を要求されます。

なんか根本的にわかってないんだと思うんですが、どこがおかしいか指摘してもらえませんか。
お願いします。
752初心者 ◆Java/isQ.c :05/01/09 17:00:32
753デフォルトの名無しさん:05/01/09 17:02:23
754デフォルトの名無しさん:05/01/09 17:02:47
>>748
APIdocぐらい引けよ
755デフォルトの名無しさん:05/01/09 18:06:10
>>749
ありがとうございました。Class オブジェクトが何なのかがわかってませんでした。
Class インスタンスを生成するときに存在する、そのクラスのインスタンスの情報まで
含むものだと思ってました。

下記のコードを書いてみて、理解しました。

import java.lang.reflect.*;

class Ex {
int name;
public static void main( String[] args ) {
Ex obj1 = new Ex();
Ex obj2 = new Ex();
obj1.name = 1;
obj2.name = 2;
try {
Class c = Ex.class;
Field f = c.getDeclaredField("name");
System.out.println( f.getInt(obj1) );
System.out.println( f.getInt(obj2) );
}catch(Exception ex) {
System.out.println(ex.toString());
}
}
}
756デフォルトの名無しさん:05/01/09 20:24:07
昔戦車の戦闘ロジックを作って戦わせる(うろ覚え)のがあったとおもうんだけど、
あれってどうなったんですか?
同じようなものはまだありますか?
757デフォルトの名無しさん:05/01/09 20:26:49
ロボコードのこと?
後継のゲームがまた始まってた気がする。
758デフォルトの名無しさん:05/01/09 21:53:36
>>674です
>>675そうですか、書いてませんか・・・自分でやってみます

>>676例えば、java.utilのRandomクラスがありますよね?それを使って乱数を発生させるやり方とかです。これは知っているのですが、そのほかのTimerクラスは使い方がわかりません。

public Timer()

このあとは、どうすれば?
などのことです。
759デフォルトの名無しさん:05/01/09 22:00:25
BASICしかやったことがなく、JAVAをはじめて4ヶ月になるのですが、コツってありますか?
また、JAVAをやるにしたがってどんなことに注意したらいいですか?
760デフォルトの名無しさん:05/01/09 22:02:44
後継といえばコードラリーやカブロボのことか?
761デフォルトの名無しさん:05/01/09 22:05:18
>>756
BASICとはVBのことか? それとももっと昔のN88BASIC時代あたりのことか?
今までBASICで何を作った?
これから何を作ろうとしている?
それがわからんでは質問に答えにくい。というか曖昧なことを言う奴や
自分で決断する能力が無い奴には具体的に答える気にもならん。
762デフォルトの名無しさん:05/01/09 22:18:55
>>756
自分もFORTRAN以外ほとんど知らない状態からJavaに手を染めて
1年くらいになるが、自分の考える、手続き型言語からの乗換えの
「コツ」をひとつ挙げると、「なぜオブジェクト指向か?」を意識して、
理解しようとしながら触ることだと思うね。
763デフォルトの名無しさん:05/01/09 23:09:14
教えてください。
ヤフーのページをjavaのプログラムで読み込むとき、
HttpURLConnection uc = (HttpURLConnection) (ヤフーのURL).openConnection();
InputStream in = new BufferedInputStream(uc.getInputStream());
BufferedReader r = new BufferedReader(new InputStreamReader(in,"EUC_JP"));
で読めるようになるのはいいのですが、
波ダッシュ「〜」は「??」となってしまいます。
その他の日本語は正しく表示されるのですが…。

どうすればよいのでしょうか。
ぐぐってみても具体的な解決方法って無くって…。
よろ。
764デフォルトの名無しさん:05/01/09 23:41:20
ときどきプログラムを実行すると
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_PRIV_INSTRUCTION (0xc0000096) at pc=0x0006ca7a, pid=1720, tid=2424
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0-b64 mixed mode, sharing)
# Problematic frame:
# C 0x0006ca7a
#
というエラーが出ます。再起動すれば直るのですがこのエラーが出る原因をご存知ないでしょうか?
765デフォルトの名無しさん:05/01/10 01:55:32
>>732

synchronizedキワードを使ったほうがよくありませんか。

volatile修飾子が言語仕様どうり実装されていない実行環境があるそうですよ。

また、インスタンス変数はprivateにしてセッター、ゲッターメッソドで

アクセスしたほうがよいです。

でも、なにか特別にpublic にする必要があったらゴメン。


766デフォルトの名無しさん:05/01/10 03:30:03
>>761
VMがコケてる。

VMのバージョンをいろいろ変えてみるか、
落ちる原因となっているコードを変えて回避するしかない。
それか不安定なJNIコード使ってる、ってとこだろ。
767デフォルトの名無しさん:05/01/10 03:42:26
>>760
一番簡単な解決策は、
出力するときにMS932やWindows-31Jを使わずに、Shift_JISを使う。
768デフォルトの名無しさん:05/01/10 03:53:18
質問なのですが、javax.servlet.*とjavax.servlet.http.*がインポートできませんというエラーになってしまいます。
本に載っているリストをうつしたのですが、コンパイルできません。
どなたか助けてくださいm(_ _)m
769デフォルトの名無しさん:05/01/10 03:58:11
>>765
servlet.jar にCLASS_PATHが通ってないんだろう。
本に載ってるはずだからその通りにやりなさいな。
770デフォルトの名無しさん:05/01/10 04:03:50
「PATH」、「CLASSPATH」の「環境変数」は正しく設定されていますか?
771デフォルトの名無しさん:05/01/10 04:18:49
>>767
初心者に環境変数でCLASSPATHを設定することを教えるんじゃねぇ!
最低限でもjavac の -classpath オプション。
その先は ant や IDE だ。
772デフォルトの名無しさん:05/01/10 04:28:51
>>768
うるせーハゲ

お前みたいなヲタばかりじゃないんだから
いちいち -classpath xxx\xxxx\xxx.jar;yyy\xxxx\xxx.jar;. なんてちまちま打ってられるか
773デフォルトの名無しさん:05/01/10 04:44:38
774デフォルトの名無しさん:05/01/10 08:24:38
ここにゃ臭いオタと厨房しかいないな
775デフォルトの名無しさん:05/01/10 10:29:45
synchoronized (A){}
で囲まれたカッコ内とかAのクラスのsynchronizedメソッドを実行するためには
Aさんの心(モニター)をゲットしないと実行できないという解釈でよろしいですか?

また、普通のメソッドやフィールド(もちろんpublic等)はとくにAさんの心(モニター)をゲットしなくても実行できる(たとえよそのスレッドがAのsynchronizedメソッドを実行中でも)という解釈でよろしいですか?

あと、「ロックを獲得する」と「モニターを獲得する」は同じ意味ですか?
776デフォルトの名無しさん:05/01/10 11:03:42
javaプログラマーの職業っていいの?
給料とか、やりがいとか、どうですか?
777デフォルトの名無しさん:05/01/10 11:04:41
最新の環境を試そうとJava1.5とMaven1.0.2を入れてみたんだけど
Mavenの初回起動時に以下のエラーメッセージが出ました
同じ組み合わせで動かしている人っていますか?
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_FLT_STACK_CHECK (0xc0000092) at pc=0x00ed0618, pid=288, tid=296
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_01-b08 mixed mode)
# Problematic frame:
# v ~RuntimeStub::init_check_patching Runtime1 stub
778767:05/01/10 11:14:32
>>769さん
応援有難う!!
779デフォルトの名無しさん:05/01/10 11:29:29
780デフォルトの名無しさん:05/01/10 11:45:11
>>769
ビルド用のバッチファイルかシェルスクリプト使えよ。
分かってきたらantに移行しろ。
781761:05/01/10 12:55:22
>>763
なんでコケてるんだろう・・・1.5使ってからときどき出るようになったような

>>774
>>761ですが同じエラーが出ます。Mavenってのは知りませんがJDKは1.5使ってます。
再起動すればたいてい直るんですがどうでしょう?
782デフォルトの名無しさん:05/01/10 13:35:54
>>772
>あと、「ロックを獲得する」と「モニターを獲得する」は同じ意味ですか?

基本的には同じと考えていいが、
あるスレッドがロックを獲得しているときに
同じスレッドが同じロックを獲得しようとするとデッドロックに陥る。
一方モニターを獲得しているときに同じモニターを獲得しようとしてもデッドロックに陥らない。

その意味ではJavaのsynchronizedはロックではなくモニター。
ただJ2SE5.0で導入されたLockクラス関係は
ロックだが同じスレッドが再獲得可能なロックもあったはず。
783デフォルトの名無しさん:05/01/10 14:02:20
このスレでよく出てくる「正規表現」をみなさんはどこで修得しましたか?
784デフォルトの名無しさん:05/01/10 14:09:34
785デフォルトの名無しさん:05/01/10 14:10:38
>>780
unixユーザなので普段から使っておりました。
最初はgrep、次がviでかな。

イマドキだとperlあたりの本からじゃないかな?
786デフォルトの名無しさん:05/01/10 14:16:59
>>779
Lock系もいろいろあるし、セマフォやカウントアップバリアとか
各種FIFOとかJ2SE5.0の一番の売りは目立たないが
この辺の制御のしやすさなんじゃないかと思う

組み込み系を意識しているのかね
1.4.2までせっせと作っていたのがばからしくなる
787デフォルトの名無しさん:05/01/10 14:32:54
>>781-782
System.out.println("ありがとう");
788デフォルトの名無しさん:05/01/10 14:37:34
必要なクラスパスは
アプリケーションによってそれぞれ違うし
コンパイル時と実行時でも違う。
環境変数なんかに設定するのは糞。
789デフォルトの名無しさん:05/01/10 15:14:05
>>783
APサーバの実装なんかにも便利じゃない?
スレッドプールの実装も持ってるしさ。

オプソ系のAPサーバってプール系のコードが
バギーなこと多いから、その辺が改善されそう。

他にも、NIOと組み合わせたプロデューサ/コンシューマ
パターンを実装しやすくもなってるね。

スレ違いスマソ
790デフォルトの名無しさん:05/01/10 15:44:36
>>785
そうそう。
「環境変数に設定しろ」と教えた次は、
「実行時にクラスが見つからないようなんです。ちゃんと本のとおり、
クラスの置いてあるディレクトリでコンパイル、実行しているんですが…。」
なんていう質問がくるぞ。
今度は、.(カレントディレクトリ)も環境変数CLASSPATHに追加しろか。
791デフォルトの名無しさん:05/01/10 16:45:30
下のサイトを見てて(Java並列プログラミングについてのサイト)
ttp://www.netgene.co.jp/java/concurrentTips.html#synchronizedMethod

二種類のモニタを明確に区別し,使い分ける
Javaにはクラスに対応したモニタとインスタンスに対応したモニタの二種類のモニタがある.
前者はstaticなsynchronizedメソッド/文で,後者は non-staticなsynchronized メソッド/文で使われる.
これらは異なるモニタに対応した処理なので,お互いに排他的には実行されない.
(つまり同時実行される可能性がある.ここまで来ると完全に初心者向け.)

とあるのですが、初心者向けって俺分かんないよ!!と恐ろしくなって質問してみました。
これはどういう意味でしょうか?
今マルチスレッドのプログラムを書いているのですが、上の内容を知らなくてデッドロックとか
まじ嫌なんで。
よろしこです。

792デフォルトの名無しさん:05/01/10 16:47:53
上のサイトを見てて、
int tmp=0;
tmp++;とかいうコードがアトミックにならないと書いてあって、青ざめました(汗。
793デフォルトの名無しさん:05/01/10 16:58:52
>>788
staticメソッドとnon-staticメソッドがそれぞれ
synchronized修飾されているとする。この場合

staticメソッドの方はメソッド内でsynchronized(this.getClass()) {・・・}とするのと同じ。
non-staticメソッドの方はメソッド内でsynchronized(this) {・・・}とするのと同じ。

モニターを獲得するオブジェクトが異なるんだから同時に実行される
可能性があるのはあたりまえ。
794デフォルトの名無しさん:05/01/10 17:21:38
>>773
つまらん仕事多い。コンソール系ばっか。
やりがい感じたければC++でテトリスでも作ってた方がいい。
795790:05/01/10 17:42:38
>>790訂正
staticメソッドでthisはないな。Hogeクラスのstaticメソッドだとしたら
synchronized(Hoge.class) {・・・}と読み替えてください。
796デフォルトの名無しさん:05/01/10 17:43:11
%JAVA_HOME%\jre\lib\ext
ってディレクトリはどのようなjarファイルを入れる為につかうべきでしょうか?
797デフォルトの名無しさん:05/01/10 18:11:33
>>793 基本的にはJ2SEになにか機能を付け加えるときに使う。
大体はSunで出してるJava3DとかJMFとかのoptional APIを追加するときくらいかな。
自分で使うのはやめたほうがいい。バージョン管理できなくなるからね。
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/findingclasses.html
798793:05/01/10 18:23:18
>>794
サンクス
799デフォルトの名無しさん:05/01/10 18:29:44
参加するぜよ。
800デフォルトの名無しさん:05/01/10 18:32:53
Javaの例外系に詳しい人いますか?
801デフォルトの名無しさん:05/01/10 18:37:50
>>797
詳しい人の基準が知りたい
802デフォルトの名無しさん:05/01/10 18:40:20
>>761
何をやってるときにでるかはわかるんじゃない?
原因はわからなくてもどこででるかを調べてみたら?
803デフォルトの名無しさん:05/01/10 18:45:02
>>797
聞きたいことを直接書いちゃえよ
804デフォルトの名無しさん:05/01/10 18:51:42
>>793
>>794の言うとおり。J2SEそのものにパッチをあてる感覚かな。
805デフォルトの名無しさん:05/01/10 20:31:46
環境変数を知ってから作業が楽になったのを
憶えています。
Javaでも「PATH」と「CLASSPATH」という2つの「環境変数」は重要な意味を持っています。
ないがしろにしない方がよいとおもいます。

しかし、その時々で自分が便利な方を使い分けましょう。

806デフォルトの名無しさん:05/01/10 20:36:34
>>793
自分で作ったjarファイル。
自分が管理しやすければ何でもかまわない。
807デフォルトの名無しさん:05/01/10 20:49:31
>>777
最初の質問者はJavaに初めてふれた方だと思います。
黒帯ではなく白帯ですから、最初は柔軟体操から。


808デフォルトの名無しさん:05/01/10 21:21:10
>>798
このスレでいう詳しい人とは、
ろくな実務経験も実績もないのに、本だけ読んで勘違いしてるような人。
809デフォルトの名無しさん:05/01/10 21:57:23
>>805
投げる、つかむ、処分する、とか言いたくなるような漠然とした質問にはつっこまないのかよ〜
810デフォルトの名無しさん:05/01/10 22:09:37
イヤミの好きな人は気の毒な人と思ってみるか、
退屈しのぎにたのしむか。
何でもいいけど人々が生活しているなと思うか。
反応がないとサビシ〜。
しかしどうせ賑やかにしたいなら、楽しくなるほうの
書き込みがいい。
その人が本からだろうと、実務の体験からだろうが、
教えてくれればありがたい。
811デフォルトの名無しさん:05/01/10 22:16:37
>>777
antもbatも同じタイプを何度も打ち込むなということです。
タイピストになる訓練じゃないんだから。
何度も通すディレクトリなら一度環境変数にうちこめば一発ですむぞ。

812デフォルトの名無しさん:05/01/10 22:18:36
すいません。意味不明なエラーが出て困ってます。

ResultSet#updateBytes("image", imagedata) で画像データを設定した後に
ResultSet#inserRow()をすると、例外が発生してしまうのです。

例外のメッセージは
"Syntax error or access violation message from server:
"You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for
the right syntax to use near
'\\'I\\'z\\'ォ\\'ワ(\\r(?(q(「(ヤ))8)k)�)ミ**5*h*�*マ++6+i+�+ム,,9,n,「,ラ-\f-A-v-ォ-�..L.�.' at line 1""

というものです。ちなみに同じ容量のバイト配列でも new byte[10000]とか
でただ作成したものなら、何の例外も発生せずにDBに書き込めます。
どうすればDBのBlobカラムに画像データが書き込めるのか教えてくださいませ。
813デフォルトの名無しさん:05/01/10 22:19:36
>>808
コピペを知らないお前は負け組
Eclipse使ってラクチンの俺は勝ち組
814デフォルトの名無しさん:05/01/10 22:28:03
>>810
とっくの昔から私はEclipse使ってますが、
勝ち負けにはこだわりません。
勝ったの負けたのクダラナイ、クダラナイ。

815デフォルトの名無しさん:05/01/10 23:03:02
>>809
JDBCドライバがカス
816808,811:05/01/10 23:06:52
>>810
ホント「コピペ」ってムズカシー。
Googleで勉強してくら。
817デフォルトの名無しさん:05/01/10 23:13:31
>>808
環境変数はそのためにあるものなのか?

818デフォルトの名無しさん:05/01/10 23:21:40
>>811
優れた道具も使用者如何でガラクタにもなると言うことだな。
819デフォルトの名無しさん:05/01/10 23:25:21
class TasiHikiByte
{
public static void main(String [] args)
{
byte a = 5;
byte b = 2;
byte c = 3;
byte d = 6;
byte ans = a + b - c + d;

System.out.println( ans );
}
}

を実行すると

TasiHiki_2.java:9: 精度が落ちている可能性
検出値 : int
期待値 : byte
byte ans = a + b - c + d;
   ^

と出ますがなぜ?ですか?全てbyte型なのに・・・
820デフォルトの名無しさん:05/01/10 23:30:23
>>816
整数型の四則演算はオペランドをintに変換した後に行われるから。言語仕様。
byte ans = (byte(a + b - c + d);
でおけ
821デフォルトの名無しさん:05/01/10 23:35:32
>>817なるほどです!ありがとうございました!
822デフォルトの名無しさん:05/01/11 00:14:08
class TasiHikiDouble
{
public static void main(String [] args)
{
double a = 5.5;
double b = 2.3;
double c = 3.1;
double d = 6.6;
double ans = a + b - c + d;

System.out.println( ans );
}
}

をやると

11.299999999999999

という答えが返ってきます。11.3なのになぜこうなるのでしょうか?
連投すみません
823デフォルトの名無しさん:05/01/11 00:18:27
丸め誤差について勉強しろ
824デフォルトの名無しさん:05/01/11 00:20:39
丸め誤差?
初めて聞いた・・・
825デフォルトの名無しさん:05/01/11 00:23:42
浮動小数点は言語以前の電子計算機概論レベルの話だからなぁ
826デフォルトの名無しさん:05/01/11 00:23:51
ま、小数点以下の計算をちゃんとやりたきゃBigDecimal使え
827デフォルトの名無しさん:05/01/11 00:25:09
丸め誤差ってjavaにも関係してくるから、知っといたほうがいいですか?
828デフォルトの名無しさん:05/01/11 00:25:16
829デフォルトの名無しさん:05/01/11 00:27:26
ありがとうございます。しらべてきます
830デフォルトの名無しさん:05/01/11 03:08:24
>>810
同じコピペでも、
Eclipse使ってコピペのプログラムは最低だぜ!!
板のコピペはいいけど。
831デフォルトの名無しさん:05/01/11 04:20:17
Javaの演算子の優先順位を定めた公式文書を探してます。
チュートリアルには、載ってるんですけど、
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/expressions.html
言語規定には見当たらないようで、困ってます。
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
どなたか、アドバイスを...。
832デフォルトの名無しさん:05/01/11 04:32:05
>>828
言語規定にちゃんと書いてある。

http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#23302
> Primary:
>     PrimaryNoNewArray
>     ArrayCreationExpression
>
> PrimaryNoNewArray:
>     Literal
>     Type . class
>     void . class
>     this
>     ClassName.this
>     ( Expression )
>     ClassInstanceCreationExpression
>     FieldAccess
>     MethodInvocation
>     ArrayAccess

http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#36254
> PostfixExpression:
>     Primary
>     ExpressionName
>     PostIncrementExpression
>     PostDecrementExpression

以下、Expression に至るまで延々と続く。

あと、そのチュートリアルはJava言語規定と同じ用語を使ってないので注意。
例えば、postfix operators として列挙されてるもののうち、
Java言語規定で postfix operator として扱われてるのは expr++ expr-- だけ。
833デフォルトの名無しさん:05/01/11 04:43:42
>>829
即レス、ありがとうございます。
なるほど。構文規則に従って式を評価していくと、
チュートリアルに書いてある優先順位に従って、
計算したことになるわけですね。
どうも、ありがとうございました!
834デフォルトの名無しさん:05/01/11 04:46:09
>>828,829
真面目なのを見ると、
くだらない書き込みをしているとはづかしくなる。
835デフォルトの名無しさん:05/01/11 06:36:57
ドカタ言語Java
負け組専用言語
836デフォルトの名無しさん:05/01/11 06:46:26
「はづかしくなる」とか書くバカでも、Javaで得意になってるのをみると、はずかしくなる。
837デフォルトの名無しさん:05/01/11 06:54:39
private static Hoge getHoge(Hoge[] hoges)
{
 処理; return hoge;
}

のようなメソッドを使いたいんですが、
Hoge hoge = getHoge(hogeList.toArray());
のようにすると、hogeList.toArray()はObject[]ですからコンパイル時にはねられますよね
けど、(Hoge[])(hogeList.toArray())のように配列→配列のキャストもできませんよね
こういう場合はどうやってHoge[]を作るのがベターなのでしょうか?
838デフォルトの名無しさん:05/01/11 06:56:19
書き忘れ
hogeListはListです
839デフォルトの名無しさん:05/01/11 07:06:23
hoge だの hage だの まだ使ってる時代錯誤がいるんだ・・・
840デフォルトの名無しさん:05/01/11 07:09:39
int nHoges = hogeList.size();
Hoge[] tmpHoges = new Hoge[nHoges] ;
System.arraycoypy(hogeList.toArray(), 0, tmpHoges, 0, nHoges) ;

こんなかんじでどうだろう。
841デフォルトの名無しさん:05/01/11 07:57:30
>>834
public Object[] toArray(Object[] a)
842デフォルトの名無しさん:05/01/11 08:14:44
>>837
ありがとうございました
843デフォルトの名無しさん:05/01/11 08:44:27
アプレットを作ってサイトに載せようとしたのですが、コンパイルをして生成されたclassファイルの中に、名前に $ が入っているものがあったのでアップロードできませんでした
生成されるclassファイルの名前に $ が入らないようにすることはできないのでしょうか
できないのなら、 $ がファイル名に入っていてもアップロードできるサーバはないのでしょうか
よろしくおねがいします
844デフォルトの名無しさん:05/01/11 08:50:54
845デフォルトの名無しさん:05/01/11 09:53:48
>>841
実にアホだなあ。
勝手に自分で都合のいいように解釈して
846デフォルトの名無しさん:05/01/11 10:00:56
で、どうすりゃいいのよ?
なぜ?841で解決すると思うけど。

そもそもクラス名にかってに$をつけるときって、ひとつの
ソースファイルに二つ以上クラスがあるとき?
別ファイルにすればいいのでは。
848デフォルトの名無しさん:05/01/11 10:34:41
初心者の840と、説明不足な841と、頭の悪い842のために説明しましょう。

名前に$が入っているファイルは、匿名クラス(無名クラス)を使った為にできたクラスファイルです。
匿名クラスについてはこちらを読んでください。
ttp://sjc-p.obx21.com/word/jt/anonymousclass.html
匿名クラスを使わないようにコードを修正すれば
$の入ったクラスファイルが生成されることはなくなりますが、
コードを修正しない方法もあります。
それは、jarというツールを使用して、全てのクラスファイルを、
$の付かない1つの圧縮ファイルにまとめてしまうことです。
これにより、$の付かない任意のファイル名を付けることができますので、
ファイル名に関する文字や長さの制限から解放されます。

jarの使い方は>>841のとおりですが、こちらも参考になります。
ttp://www.hellohiro.com/jar.htm
アプレットもそうですがJavaでは、このjarにより圧縮されたファイルから
クラスを読み出すことができるようになっています。
それをアプレットで行う場合のHTMLの書き方は以下のページが参考になるでしょう。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/jar/jarGuide.html
849845:05/01/11 10:40:04
>>844
あ、そうか$つきのファイルって、1ファイルに複数クラス入れたらできるんだ・・・無名クラスに限らないんだった。
めったにしないから忘れてた
850デフォルトの名無しさん:05/01/11 10:55:04
>>845
staticメンバクラスや他のインナークラスとかは無視ですか?
851デフォルトの名無しさん:05/01/11 13:35:07
>>834
Hoge hoge = getHoge((Hoge[])hogeList.toArray(new Hoge[hogeList.size()]));
852デフォルトの名無しさん:05/01/11 14:25:44
>>846

public class Hoge { class InHoge {} }
class Fuga {}

という2行のHoge.javaをコンパイルしてみよう。
853デフォルトの名無しさん:05/01/11 14:59:31
>>845
またバカが1人・・・
854デフォルトの名無しさん:05/01/11 15:11:02
てか自演でしょ
855デフォルトの名無しさん:05/01/11 15:11:59
>>851
自演の目的は?
856デフォルトの名無しさん:05/01/11 15:25:03
>>852
質問の意図は?
857デフォルトの名無しさん:05/01/11 15:26:22
質問に質問で返すのは感心しない
858デフォルトの名無しさん:05/01/11 15:26:34
>>852
その質問の意図は?
別に理由なんていいじゃん
859デフォルトの名無しさん:05/01/11 15:27:02
>>854
誰に洗脳された固定概念?
860デフォルトの名無しさん:05/01/11 15:27:42
>>855
理由もないこと聞くなよ(w
861デフォルトの名無しさん:05/01/11 15:28:25
なんでも聞けば答えるのが当然と勘違いしてるのがいるな
862デフォルトの名無しさん:05/01/11 16:00:02
男「おい、おまえのパンツ何色だ?」
女「なんでそんな事聞くんですか?」
男「質問に質問で返すのは感心しないな。別に理由なんていいだろ。」
863デフォルトの名無しさん:05/01/11 16:09:33
パンツの色は重要だろ
864デフォルトの名無しさん:05/01/11 16:12:11
もしかしてパンツフェチ?
865デフォルトの名無しさん:05/01/11 16:40:53
内容:
質問です。
double percent1 = 42.5;System.out.println(percent1);
double percent2 = 57.5;System.out.println(percent2);
このような数値を表示すると、問題なく小数点第一桁まで表示できるのですが、
double percent1 = 42.0;System.out.println(percent1);
double percent2 = 58.0;System.out.println(percent2);
こう記述すると、42と58という数値になってしまい、小数点部分が表示されなくなります。
強制的に指定した小数点の桁数まで表示させるにはどのようにしたらいいでしょうか。
また、この数値はJFreeChart(ttp://www.jfree.org/)でのグラフ生成に使い、パーセンテージを小数点第一位まで表示させたいのです。
グラフ生成するメソッドにはdoubleで渡す必要があるので、Stringなどに変換というのは無理なのです。

それとも、double型は小数点部位で0があると強制的に0の桁まで認識させるというのは無理なのでしょうか。
866デフォルトの名無しさん:05/01/11 16:47:11
>>862
java.textパッケージ以下のFormat関連を調べるんや!
867デフォルトの名無しさん:05/01/11 16:49:04
>グラフ生成するメソッドにはdoubleで渡す必要がある
とある以上、そのライブラリに手を加えない限り、どうしようもないんじゃない?
868デフォルトの名無しさん:05/01/11 17:05:26
>>862
軸にはNumberFormatを指定する事ができるみたいだけど
Eclipseかなにかで作っているならNumberFormat指定して参照箇所を探してみることできないですか?
869デフォルトの名無しさん:05/01/11 17:22:03
ウィンドウを出してそこに部品を配置したのですが、ウィンドウサイズを変更されると
微妙なレイアウトが崩れてしまいます。そこで、ウィンドウサイズを変更できないようにする
方法があれば教えてください
870デフォルトの名無しさん:05/01/11 17:30:02
windowFrameObject.setResizable(false)で大きさ変更不可になりまっせ。
871デフォルトの名無しさん:05/01/11 17:35:34
ソースコードをフォルダごとカウントしてくれるステップカウンタってないかな?
872デフォルトの名無しさん:05/01/11 17:40:05
>>867
感謝感激解決しました
873デフォルトの名無しさん:05/01/11 17:48:46
>>768
おや? Mavenを忘れていないか?
MAVEN_REPOだろ
874デフォルトの名無しさん:05/01/11 17:49:20
>>868
LineNumberReader
875デフォルトの名無しさん:05/01/11 17:51:40
>>774
見覚えのあるメッセージだ。
多分おそらくMavenとは全く関係ないだろう。
Javaを再インストールしたほうがよさげな気がする。
876デフォルトの名無しさん:05/01/11 17:52:12
>>871
こんなのがあるとは、サンクス!
877デフォルトの名無しさん:05/01/11 17:56:50
>>868

Runtimeクラスで かくディレクトリ毎にwc -lを実行。
878デフォルトの名無しさん:05/01/11 17:57:11
>>868
Eclipseのメトリクスプラグイン
879840:05/01/11 18:07:06
jarにまとめたらうpできました ちゃんと動きました!
皆さんありがとうございます!
880デフォルトの名無しさん:05/01/11 18:16:01
JavaからUSBおよびRS-232Cを使うプログラムを作っているんですが、
JUSB、Java Comminucation APIを使えば、出来るというのはわかったんですが、
使い方がわかりません。誰か、お教え願います。
881デフォルトの名無しさん:05/01/11 18:22:14
>>869
こういうところで躓く段階なら、在ってもいいじゃないかとか思う機能は大抵存在するのでjavadocを検索する癖を付けるといいよ。
今回ならresizeで検索していれば見つかったはずだから。
882デフォルトの名無しさん:05/01/11 20:57:26
jUSB と Java Communication API の使い方はわかっているのですが、
>>877 にわかるように説明する方法がわかりません。誰か、お教え願います。
883デフォルトの名無しさん:05/01/11 22:48:34
自作でアプレット作成中に質問だ出てきたのでお願いします
1 ボタンを配列のようにできるのか(たとえば同じ働きをするボタンをfor文などで何個か作るなど)

2 1ができる場合配置(add(btn);)などを(btnはボタンの名前とする)for文で何個も配置させれるか

3 アプレットを表示する場所の横の最大より先に表示を次の行にいくことはできるのか
  (ボタンが10個横に表示できる状況でボタンの大きさを変えずに3個表示して次の行(高さを変える)に3個表示することができるか)

この3個ができるといろいろやりやすくなると思ってできるのか気になり質問します
わかるかたお願いします
884デフォルトの名無しさん:05/01/11 23:02:41
>>880
1:できる
2:普通だ
3:GridBagLayout使え
885デフォルトの名無しさん:05/01/11 23:09:05
>>877
まずサンプルソースは動いたか?ポートリストの表示はできたか?
http://www.okakogi.go.jp/People/miwa/program/how2com/how2com.html
とかはちゃんと読んだか?

サンプルソースにはボーレート指定で115200bpsとすると動かないバグが
あるが、まぁソースを追っかければすぐに見つかる些細なものだ。がんがれ。
886デフォルトの名無しさん:05/01/11 23:17:51
>>881
すいません
javaの本は一通り読んだんですがよくわからなかったので
えっとできるということはintの配列などと同じやり方でいいのでしょうか?
2もforを使って配列の番号を変えていけばadd(btn[x])みたいな感じでできるのでしょうか?
最後のは言葉を教えてもらったので自分で調べてみたいと思います
詳しく教えていただきたいです
お願いします
887デフォルトの名無しさん:05/01/11 23:23:17
>>883
同じボタンのインスタンスを複数出したいってのならできない。
1を読んで配列にボタンインスタンスを入れたいと受け取ったのでボタンもオブジェクトだから配列要素にできると答えた
2は配列の参照をforループで解決したいと見たのだが違うのか?

つか日本語で書いてあるんだけど情報の欠落があるんで答えにくいよ。
888デフォルトの名無しさん:05/01/11 23:30:28
わかりにくくてすいません
なにぶん初心者でどう説明したらいいかわからなくて・・・
僕がやりたいことを言います
1は押したボタンに表示する文字を1回押したら1と表示2回なら2と表示させたいを
10個作りたいとします
そうした場合プログラムを減らすために配列を使ってfor文でボタンを作れたら便利だなぁと思ってたわけです
2もやりたいことは同じで配列でボタンを作れたらadd(btn);とかの部分もfor文を使ってまとめれるかを聞きたかったわけです

・・・ん〜説明ってむずいですねTT
889デフォルトの名無しさん:05/01/11 23:57:59
>>885
できるから思った通りに書いてみるといい。
class ButtonCount implements ActionListener {
int count;
public void actionPerformed(ActionEvent e) {
count++;
JButton btn = (JButton) e.getSource();
btn.setLabel(String.valueOf(count));
}
};
↑こんなアクションをボタン設定することでボタンを押した回数がボタンに表示される。
for (int i = 0; i < 10; i++) {
JButton button = new JButton();
button.setLabel("おされてないよ");
button.addActionListener(new ButtonCOunt);
/// ボタンをレイアウトしたいならこのあたりでなんかしろ
myPanel.add(button);
}
↑こんなループでボタンは作れる。
890デフォルトの名無しさん:05/01/12 00:18:26
わざわざプログラムをありがとうございます
わからない部分を質問させてください
ボタンを作ってる部分はわかるのですが配列にしてる場所がよくわかりません
僕の勉強不足かもしれませんが見てみるとbuttonというボタンを10個作っているように見えて
ほかのところのプログラムから何番目のボタンというようには呼び出せないのですか?
起動しようといろいろ試してもエラー(for文のところ)が出てしまいできません
891デフォルトの名無しさん:05/01/12 00:31:22
連続投稿すいません
僕のイメージではほんとにintの配列と同じように
int[5] (5は配列の数)のようにボタンも作れないかなぁ?と思ってるわけです
こんなやり方でボタンを作ることはできないでしょうか?
892デフォルトの名無しさん:05/01/12 00:48:32
// これインスタンス変数として定義(意味ないよ
JButton [] buttonArray = new JButton[10];
for (int i = 0; i < buttonArray.length; i++) {
JButton button = new JButton();
buttonArray[i] = button; // 配列へいれる(でもこのサンプルならButtonCountのインスタンスの方が便利だろう?,カウンタ持ってる側だし
button.setLabel("おされてないよ");
button.addActionListener(new ButtonCount);
/// ボタンをレイアウトしたいならこのあたりでなんかしろ
myPanel.add(button);
}
893デフォルトの名無しさん:05/01/12 00:55:28
わざわざ僕の希望したように書き直していただきありがとうございます
buttonArray がボタンの配列に必要とみてよろしいんでしょうか?
それがあってるならば僕が考えていたこともできそうです
いろいろありがとうございました
894デフォルトの名無しさん:05/01/12 01:06:19
>>890
まず言語勉強して・・・
895デフォルトの名無しさん:05/01/12 01:20:54
ImageをBufferedImageに変換する方法があればご教授願いたい
896デフォルトの名無しさん:05/01/12 02:07:44
Win2k + j2se1.42_06 でデフォルト以外の XML-Parser を使いたいと思っていますが、
実行時に使われている Parser を確認する方法はないでしょうか?

Piccolo を例として、いま設定してあるのは以下の通りです。

1. %JAVA_HOME%\jre\lib\ext に Piccolo.jar をコピー
2. %JAVA_HOME%\jre\lib\jaxp.properties に
  javax.xml.parsers.SAXParserFactory = com.bluecast.xml.JAXPSAXParserFactory
  と書く
3. CLASSPATH を .;%JAVA_HOME%\jre\lib\ext\Piccolo.jar;%JAVA_HOME\lib\tools.jar とする

まではやってみました。しかしSAXのコードを書いて動かしてみても、
いまひとつ確信が持てません。
897デフォルトの名無しさん:05/01/12 02:28:00
日本語の入力できないTextFieldはどうやれば作れるのでしょうか?
KeyEventを拾えばいいのかと思ったのですが、どうも日本語だけは
制限できません。

英数での文字数制限、英文字の入力禁止(数字は可能)などは出来たのですが。
898デフォルトの名無しさん:05/01/12 02:39:49
JAVA5入れてみたけど、サイズが小さくなってるね。1.42に比べて1/3くらいに
899893:05/01/12 02:41:42
自己解決しました。
http://www.utj.co.jp/xml/dev/java/dxjava_1.html
より実感するにはベンチでもするしかないか・・・。
900デフォルトの名無しさん:05/01/12 07:44:56
>>850
俺と同類のバカ類がいた。
仲良くしよう同じバカ類同士。
901デフォルトの名無しさん:05/01/12 07:54:23
>>850
チョットいかれてねえか。
902デフォルトの名無しさん:05/01/12 08:22:38
基地外同士仲良くやってくれ(出来れば別スレで)
903デフォルトの名無しさん:05/01/12 08:59:46
今頃粘着レスかよ・・・
904デフォルトの名無しさん:05/01/12 10:29:05
>>850
喜べ釣れたぞ釣れたぞ。
905デフォルトの名無しさん:05/01/12 17:06:44
これからJAVAを勉強しようと思うんですが、
開発ツールやコンテナの種類が多すぎて何がよいのか
わかりません。
そこで質問なんですが、皆さんはどんな環境がBESTだと
思いますか?
答えにくい質問ですみませんが、適当に教えて下さい。
あとは調べますんで、よろしくお願いします。
906デフォルトの名無しさん:05/01/12 17:08:25
> そこで質問なんですが、皆さんはどんな環境がBESTだと
> 思いますか?

そんなもんない。スキル・要件・要求による。
907デフォルトの名無しさん:05/01/12 17:20:11
とりあえず流行り物を選んでおけば、困った時に聞ける人が多い分楽そうな気がする。
「JDEE使ってるんですが・・・」といって質問するより
「エディタ+JDKでやってるんですが」とか「Eclipse使ってるんですが」の方が
答えてくれる人が多いと思う。
908デフォルトの名無しさん:05/01/12 17:30:10
「スタートボタンを押したら音楽が鳴る」ということをしたいのですが、
うまくできません。
java.Applet.AudioClipをimportして、
AudioClip audを宣言。
initの中で
aud=getAudioClip(getDocumentBase(),"ongaku.au");
aud.play();  としてます。
コンパイル時にエラーは出ないのですが、
実際にボタンを押したときに固まってしまいます。
(コンソール画面に何かでてます)
初心者で見当違いのことをいってるかもしれませんが、
どうすれば音楽を鳴らせるのでしょうか?
よろしくお願いします。
909デフォルトの名無しさん:05/01/12 18:01:28
"test"をtestではなくて"test"を文字列とし認識させることはできるのでしょうか?
String a = ""test""では当然無理なので。。よろしくお願いします。
910デフォルトの名無しさん:05/01/12 18:03:28
String a = "\"test\""
911デフォルトの名無しさん:05/01/12 18:04:03
>>906
String a = "\"test\"";
912906:05/01/12 18:10:44
>>908
ありがとうございます。とても助かりました。
913907:05/01/12 18:13:32
(;`Д´)・・・・・
914デフォルトの名無しさん:05/01/12 18:15:38
>>910
アンカー付けておけばよかったなw
915デフォルトの名無しさん:05/01/12 18:19:09
>>910
ハゲワロ
916デフォルトの名無しさん:05/01/12 18:20:54
>>907
セミコロンがついてない。
917デフォルトの名無しさん:05/01/12 18:29:18
蝉コロンで区切る
918デフォルトの名無しさん:05/01/12 18:41:00
配列を動的確保したく、要素はchar型にしたいのですが、
java.util.Vector の addElement(java.lang.Object) は (char) に適用できません。
と表示されてしまいます。
これは、char型要素の場合は動的確保できないという意味なのでしょうか?
919デフォルトの名無しさん:05/01/12 18:44:29
>>915
プリミティブ型の配列動的確保はできない
ラッパークラスでくるめ
920デフォルトの名無しさん:05/01/12 19:55:05
>>916
でもJ2SE5だとすんなりとおるし
そのあとはなんか配列より遅いんですがとか出てきそうな予感

Java初心者にかかせてみたら予想通りというか
しらないうちにボクシングしていて低速動作したのみたもんでね
921デフォルトの名無しさん:05/01/12 21:42:23
95%の場面でint[]とArrayList<Integer>の速度差は問題にならないだろう。
922デフォルトの名無しさん:05/01/12 21:45:12
>>915
char c = 'A';
ArrayList<Character> list = new ArrayList<Character>(); list.add(c); //J2SE5

ArrayList list = new ArrayList(); list.add(new Character(c)); //J2SE1.4以前

Vectorは捨てろ
923デフォルトの名無しさん:05/01/12 22:43:50
>>915
jakarta commons の primitives に
org.apache.commons.collections.primitives.ArrayCharList がある。

>>919
詳しい説明も無しに Vector 捨てろって言うのはやめろ。
924デフォルトの名無しさん:05/01/12 22:53:41
無条件に捨ててもかまわない。
925デフォルトの名無しさん:05/01/12 23:13:05
>>921に胴衣
926デフォルトの名無しさん:05/01/12 23:54:41
Javaの質問というよりはEclipseの質問かもしれませんが…

*.javaの中でpublic定数の値として2byte文字を定義すると
Eclipseの「プロジェクト(&P)」→「JavaDocの生成(&G)」でJavaDocを生成した際に
「定数フィールド値」に表示される値が文字化けします。

例)"ホスト"を定数値として定義すると、
  JavaDocには"\u30db\u30b9\u30c8"と出力・表示される。

「JavaDocオプションの抽出」で-encodingオプションに"SJIS"を指定しても
("-encoding SJIS"←まんまを入力しました)
結果は変わりませんでした。

当方の環境は以下の通りです。
 ・WinXP Pro SP1
 ・Eclipse ver2.1.3
 ・SDK ver1.4.2_04
 ・「編集(&E)」→「エンコード(&N)」で確認した現在のエンコードは「MS932(デフォルト)」
 ・生成された*.javaの文字コードは「Shift-JIS」(秀丸で確認)
です。

対処方法をご存知の方がいらっしゃいましたら、ご教授願います。
927デフォルトの名無しさん:05/01/13 00:00:40
この板を「Eclipse」で検索かけてごらん。うんこまみれ
928デフォルトの名無しさん:05/01/13 00:05:49
turbine2.3をmavenでビルドできず困ってます。
README.txtを読んだら activation-1.0.2.jarとjavamail-1.3.1.jarとjdbc-2.0.jarと
jndi-1.2.1.jarをとってきて$MAVEN_HOME/repositoryにおきなさい、とあるんですが、そ
れをやってもビルドできません。

$ export MAVEN_HOME=/usr/java/maven-1.0.2
$ mkdir $MAVEN_HOME/repository
$ cp *.jar $MAVEN_HOME/repository
$ cd jakarta-turbine2.3/
$ maven

.....

Attempting to download activation-1.0.2.jar.
WARNING: Failed to download activation-1.0.2.jar.
Attempting to download javamail-1.3.1.jar.
WARNING: Failed to download javamail-1.3.1.jar.
Attempting to download jdbc-2.0.jar.
WARNING: Failed to download jdbc-2.0.jar.
Attempting to download jndi-1.2.1.jar.
WARNING: Failed to download jndi-1.2.1.jar.

*.jarはどこにおけばいいのでしょうか。ほんとに$MAVEN_HOME/repositoryなのか?$
HOME/.maven/repositoryではないのか?(でもここにコピーしてもだめだった)。
助けてえらいひと。
929デフォルトの名無しさん:05/01/13 00:20:16
>>921-922
こーゆー奴らが費用対効果の薄いリファクタリングとかして悦に入るんだろうな。
930デフォルトの名無しさん:05/01/13 00:24:07
>>926
ArrayListよりVectorを使った方が良い場面なんか既に存在しない。
お前みたいな奴がVectorは同期が云々とか言い出すんだろうなあ。
931デフォルトの名無しさん:05/01/13 00:36:41
まぁふつうにつかってるよ

Swingでな

まぁJ2SE5でStringBufferつかってるのとおなじくらいあふぉなことだし
932デフォルトの名無しさん:05/01/13 01:09:43
>>926は10年前冷凍睡眠に入り今年復活した人
933デフォルトの名無しさん:05/01/13 04:25:34
printlnってなんてよむのでしょうか?
プリントルンって読んでいましたがいいのでしょうか?
934デフォルトの名無しさん:05/01/13 04:46:24
プリントランだと思う
俺も聞いた事無いから知らないけど
935デフォルトの名無しさん:05/01/13 05:34:03
Checkbox cbx1=new Checkbox("Chkbox1");
Checkbox cbx2=new Checkbox("Chkbox2");
Checkbox cbx3=new Checkbox("Chkbox3");
Checkbox cbx4=new Checkbox("Chkbox4");
int nbr1,nbr2,nbr3,nbr4;

public void itemStateChanged(ItemEvent e){
if(e.getItemSelectable()==cbx1) nbr=1;
if(e.getItemSelectable()==cbx2) nbr=2;
if(e.getItemSelectable()==cbx3) nbr=3;
       if(e.getItemSelectable()==cbx4) nbr=4;
}

このコードをfor文を使って書いたけどうまくいきません
どうすればいいでしょうか?

public void itemStateChanged(ItemEvent e){
       for(int i=1;i<5;i++){
if(e.getItemSelectable()==(cbx+toString(i)))nbr=i;
}
}
936デフォルトの名無しさん:05/01/13 05:49:28
初心者ですが、今、思いっきり Vector を使ったコードを書いてて、最近のレスを見て
ビビってしまいました。
Vector の欠点を少し列挙してもらえないでしょうか。お願いします。
937デフォルトの名無しさん:05/01/13 06:38:55
(1) 「Vectorは同期化されているからスレッドセーフだぜ!」というどうしようもない馬鹿の台詞を誤って信じてしまいがち。
(2) (1)によってスレッドセーフでない危険なコードを量産してしまいがち。
(3) メソッド名が長い・重複していて無駄。
(4) 古くてダサい。頭が悪そうに見える。
(5) ArrayListに対してメリットが無い。
(6) 原理的にArrayListよりも遅いことになっている。
938デフォルトの名無しさん:05/01/13 06:41:16
(7) 全く無駄な同期処理(synchronized)がすべてのメソッドについてまわる。
939初心者 ◆Java/isQ.c :05/01/13 06:50:19
>>930
私は print line の省略だと思っていたのでプリントラインと読んでます。
940デフォルトの名無しさん:05/01/13 07:02:52
>>934 >>935
なるほど、ありがとうございました。書き換えます。
941デフォルトの名無しさん:05/01/13 07:04:05
>>930
プリントラインの省略だから読み方はプリントイン
942デフォルトの名無しさん:05/01/13 07:14:02
プリンティンでいいじゃない
943デフォルトの名無しさん:05/01/13 09:40:52
Javaアプレットで使用されるJDKのバージョンって
何によって(どこの設定、定義で)決まるもんなんでしょうか?

JAVA_HOMEですかねぇ?

何が知りたいかというと、
HTMLごとに、異なるJDKを使用するアプレットって
作れるのかなと思ったので。。

すみませんが、よろしくおながいします。
944初心者 ◆Java/isQ.c :05/01/13 09:59:32
945930:05/01/13 10:17:17
ググって出てきたのが
ttp://www.google.co.jp/search?q=cache:XjKTeLTRozAJ:www.geocities.jp/web_binary/index14_001.html+%E3%83%97%E3%83%AA%E3%83%B3%E3%83%88%E3%83%AC%E3%83%B3&hl=ja
プリントレンでした
プリントラン
プリントイン
プリンティン
いろいろあるみたいなので自分の好きな読み方で良いような
気がしてきました。
お答え下さった方ありがとうございました
946デフォルトの名無しさん:05/01/13 10:19:54
プリンティンはぐぐるといいぞ
947デフォルトの名無しさん:05/01/13 13:08:22
ある周波数の音を発生させるにはどのように書けばいいですか?
(例えば20Hzの音とか、1000Hzの音とか)
サンプルでもいいので教えていただけるとありがたいです。
よろしくお願いします。
948940:05/01/13 15:50:38
>>941

ありがとうございます!

ちょっと試してみようかと思ったのですが、、、
いまさら、JDK1.3系のJavaPluginって
どこかで落とせたりするんですかねぇ??
949デフォルトの名無しさん:05/01/13 15:53:12
950デフォルトの名無しさん:05/01/13 16:12:26
Current
├MainClass
├Manifest.MF
├resource
├src
└pacages

└panels

のフォルダ構成を実行可能なJARにまとめようとしたんだけど、(Jarには出来るが)起動しない…
JavaでHelloWorldとかのを参考にしてみたりしたけどダメ
マニフェストの中のMain-Class: MainClassと指定してあるんですが…
※ java Main-Class では起動する Faild to load MainClassのエラーが出る

なーんか、初歩的なミスをしてそうで怖い…
入力したコマンドは
C:...\curent>で jar cvfm JarTest.jar Manifest.MF
なんですが…
どなたかミスの指摘をお願いします。
951デフォルトの名無しさん:05/01/13 16:16:55
952デフォルトの名無しさん:05/01/13 16:36:37
commons-httpclient.jar
を使いたいのですが
javac Test.java
とやると
Test.java:1: パッケージ org.apache.commons.httpclient は存在しません。
というエラーがでます。
CLASSPATHの設定だと思うのですが
CLASSPATH .;
を設定しても上記のままです。
どうしたらよいでしょうか?
953デフォルトの名無しさん:05/01/13 16:49:51
こんにちは。Javaのライブラリでftps(ftp secure)ってどこかで提供してるかな?
954949:05/01/13 16:53:05
ひょっとして.jarはCLASSPATHに絶対パスで指定しないと
だめなの?
955KTK.Sqrt♪:05/01/13 16:54:43
最近元氣ないSqrt君
956デフォルトの名無しさん:05/01/13 16:56:03
>>951
ファイル名は書かないとダメだ
957デフォルトの名無しさん:05/01/13 16:58:48
>>949
commons-httpclient.jarをどこに置いた?
それだとTest.javaと同じディレクトリに置かないといけないのでは?
958949:05/01/13 17:03:35
>>953,954
なんとなくわかってきました。
set classpath=.;commons-httpclient.jar
とやってコンパイルしたら逝けました。トンクス
959940:05/01/13 17:21:10
>>946

ありがとうございますた。
無事、落とせますた。

>>948

そうです!

一応、必要なネタは揃ったと思われるので
いろいろ試してみたいと思います。

また何か分からないことあったら
聞くかもしれませんが。。。(*´д`*)
960初心者 ◆Java/isQ.c :05/01/13 17:24:04
>>948
そのようですね。ご指摘ありがとうございます。

>>956
微妙にズレた回答すみませんでした。
961初心者:05/01/13 17:39:32
これからJAVAを始めたいのですが、どういった参考書を買えばよいのか迷っています。
どのような本がBESTなのか、できれば具体的に教えてください。
基本情報技術者試験午後問題の対策になるような本をお願いします。
962デフォルトの名無しさん:05/01/13 17:41:43
Brows:KDDI-SA31 UP.Browser/6.2.0.7.3.129(GUI)MMP/2.0



963デフォルトの名無しさん:05/01/13 17:43:13
964初心者 ◆Java/isQ.c :05/01/13 17:49:35
>>958
少し前に私が調べてみた頃には、次の書籍が好評なようでした。
ttp://www.hyuki.com/jb/

基本情報処理技術者試験については次の各スレが参考になるかもしれません。
ttp://school4.2ch.net/test/read.cgi/lic/1103553467/
ttp://pc5.2ch.net/test/read.cgi/tech/1097165080/
965940:05/01/13 18:28:03
>>957

いえいえ。
おしえていただいたリンクから、
自分が知りたかったこととか
辿れましたから。

助かりましたよ。

今後ともよろしくです。
966デフォルトの名無しさん:05/01/13 18:30:54
あるメソッドの中に
synchronized(myvector){
//いろいろ
}
(ただしmyvectorはVectorクラスのインスタンス)

というコードがあったのですが、これって意味があるのでしょうか?
ArrayListのインスタンスなら同期化されないと聞くので、意味があると思うのですが、
Vectorクラスは同期化されると聞きます。

どうなんでしょうか?
967デフォルトの名無しさん:05/01/13 19:31:43
一メソッドは同期化されてる
が、それが問題ないかというとそうでもない

せいぜいマルチスレッドによって違うデータを取得するということがなくなるという程度
スレッドが違うと同じ変数を使ったところでオブジェクトが一致しないということがあるからね

DBしっていてトランザクションがなぜ必要かとかその辺わからないと
実感はしにくいかもしれない
968HttpClientの質問:05/01/13 19:44:42
Win32で、ある掲示板にログインし、書き込みを行う処理があります。
これを、Jakarta Commons HttpClientを使ってJavaに移植しようとしたところ、
ログイン処理は成功するものの、その後の書き込み処理で失敗します。

ログイン処理成功後、クッキーを表示すると、以下の4つのクッキーが表示されました。

Cookie[] cookies = client.getState().getCookies();
for(int i=0; i<cookies.length; i++) System.out.println(cookies[i]);

nhnuserml=...
CK%5FCS=hangame=...
hgDomain=hangame=...
login=hangame=...

しかし、この後client.executeMethod()で送信されるPOSTの内容をパケットモニタで見ると、
一つ(nhnuserml)しかクッキーが送信されていません。
(Win32の上手く動作している奴だと、4つ全て送信されてます)
原因としては、何が考えられるでしょうか? また、どのように対処するのでしょうか?

なお、サーバからのSet-Cookieのうち、nhnusermlはドメイン指定が
domain=.example.comとなっていますが、他の3つは、
domain=example.comとなっている点が引っかかっています。
しかし、だからどうする的な話が分かりません...。
969965:05/01/13 19:47:58
補足です。

>この後client.executeMethod()で送信されるPOST

これは、ログイン後の書き込み処理に相当します。
POSTの結果、「まだログインしていません」という内容がサーバから返されます。
恐らくは、ログイン用クッキーが送信されていないため、
未ログインとみなされてしまうのではないか、と推測しています。
970965:05/01/13 21:02:15
自己レスです。以下の二つの暫定対処をしたところ、書き込みに成功しました。

○その1:"example.com"となっているCookiを、強制的に".example.com"に変換。

Cookie[] cookies = client.getState().getCookies();

for(int i=0; i<cookies.length; i++) {
 Cookie c = cookies[i];
 String domain = c.getDomain();
 if(domain.charAt(0) == '.') continue;
 c.setDomain("." + domain);
}

これで、4つのクッキーが送信されるようになります。
本当は、もっとちゃんとした対処があるんだろうな...。

4つのクッキーが送信されるのですが、依然として「ログインされていない」と
判断されてしまいます。成功する場合は4つのCookieが一行で(セミコロンで区切って)
POSTヘッダに記述されるのに対し、この対処だと4つのCookieがそれぞれ1行ずつ、合計4行になります。
サーバ側ではこの形式の記述は対応していないのかな?

○その2:HttpClient#setStrictMode(true)にする。

念のためPostMethod#setStrictMode(true)も行っています。
HttpClientのソースを眺めたところ、HttpMethodBase#addCookieRequestHeaderで、
このフラグを見てCookieを各行に分けるか、一行で書くかの分岐をしていました。
このメソッドの意味は、あんまり分かっていません。

以上の対処で、正常に書き込みできました。
でも、きちんとした由緒正しい対処方法キボンヌ。
971デフォルトの名無しさん
以下は十進数の 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);
}
}

実行結果**********************************

C:\java>javac FloatingPoint.java

C:\java>java FloatingPoint 21.6875
21.6875 = 1000001101011011000000000000000

*****************************************

の下に、この場合、仮数の桁数は6です。と表示されるようにしたいわけです。