【初心者】Java質問・相談スレッド59【大歓迎】
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様上陸! ノ ノノノノ "" ) " ミ + ノ .彡| | トーー/| | ミ ∧ | \ ..ヾ____/ ..| |ノ \ \ "⌒ ノ\ ヽ 《 ..~ ー--/ /
Smithマダー
/!/{ / ヾ--r
_ /  ̄ <_
_>`´
>>4 __<_
> r‐'" ̄ ̄ ノ ̄ ̄`ヽ、―ニ 二
/ , | `ヽ/ ´`ヽ _ 三,:三ー二
 ̄/ | ノヽ--/ ̄ , ` ̄ ̄ ̄
/ /⌒ヽ,| ミ } ...| /!
レ l d _}`ー‐し'ゝL _
| ヽ、_, _,:ヘr--‐‐'´} ;ー------
|/| \ ノ`ヾ:::-‐'ーr‐'"==-
ヽ/l/|` ー------r‐'"  ̄ ̄
|└-- 、__/`\-:、
__,ゝ,,_____/ \_」 \
Smith! Smith! Smith!
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()として値を取得することも出来ます。 どっちが良いのでしょうか・・・?
>>8 TM は trademark のこと。日本語で言うと商標とか。
上半分に打ち込む方法はソフトウェアごとにそれぞれ。
いずれも Java に関する質問では無いような気がします。
>>8 >JavaTMプログラムのTMってどういう意味ですか?
Trademark; 商標
>あと、TMって上半分に打ち込むにはどうしたらいいですか?
™ ™
>>11-12 有難うございます
>™ ™
ごめんなさい、意味が解らないです
コピペしたら変わってるし(´・ω・`)
ソフトによって変わるというのはこの事だと思うのですが
どうしたらいいんですか?
OpenJane使ってます
これが解ったら去ります
>>13 「商標」については国語辞書引けば普通に見つかるので調べて。
ウェブで上付の「TM」を表示したいならアンパサンドtradeセミコロンを入力しろということ。
「実体参照」というものだが、これは国語辞書では出てこないのでGoogleで調べて。
ところでJ2SE5.0を利用できる開発環境って何になるでしょうか。
Eclipseは未対応ですが、他環境ではどうなのでしょう?
>>10 その例なら、現実のDiceを考えればfacetはDiceの属性なんだから、Dice(int facet)コンストラクタが正解。
staticで用意するにしてもあくまでそれはユーティリティメソッドであって
内部で return new Dice(facet).shake(); するだけ。
・・・shakeってのが激しく気持ち悪いが
>>14-15 有難うございます
投稿した後、また変換されてるのを見て
自分でも気づきました
迷惑かけてスイマセンでした
>>17 ありがとうございます。よくわかりました。
確かにshakeは一考の余地がありそうですね。
rollか、shootあたりが良さそうです。
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 ); } } }
>>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つかったほうが早いな
>>14 JBuilderの新しい奴も5.0対応してる
>>21 ,22
まあ配列アクセス時の(内部的な)添字チェックのせいだろうな。
いきなり躓きました、助けてください エラーメッセージの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 個
>>26 普通にコンパイル通るよ、なんか環境壊れてない?
>>27 そうですよね
エラーメッセージすら変わらない時点で
何かがおかしいと思ってたんだけどその何かがわからん
環境変数もしっかりやったし何故だろうか
もう一度ダウンロードからし直すかな('A`)
え?
>>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の背景一色になってしまいます これ何が悪いのでしょうか? どうしたらアプレットを表示できるようになるか分かる方いたらお願いします
JDL
JDLじゃないですJDKです タイプミスすみません
>>26 String を java.lang.String に書き換えてみては?
もし String という名前のクラスを自作したことがあれば、
java.lang.String でなく、そちらを参照している可能性が。
>>30 PATH ではなく CLASSPATH ですよね?
CLASSPATHに含まれる String クラスを消さなくても、
>>29 の対応で良いかと思いますが、いかがでしょう?
>>31 1.3でもターゲットかえないとダメだよ
たまたま動いていたに過ぎない
たぶん5.0で問題でたということはStringBuilderまわりかな
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" の様な文字列連結式を使うとエラーが出ます。
>>35 全てのjava.lang.Stringを完全限定名で指定しなければならなくなりますよ。
せめてパッケージに入れるべきでは。
String A="0123456789";
String B="ABCDEFGHIJ";
main(){
start();
System.out.print(B);
}
run() {
System.out.print(A);
}
これ実行したら
>>012345 AB678C9
たまにこんなふうに出力されるでしょうがどうやって対処できますか?
>>40 System.out.print(B); のまえに、スタートしたスレッドに対してjoin()を呼び出す。
>>31 javac -target 1.1 HelloApplet.java
1.4ではデフォルトターゲットが1.2に、1.5ではデフォルトターゲットが1.5に
変わったから-targetオプションなしではMS-JVM(1.1.4)環境で動くクラスファイルが生成されない。
printlnは同期化されてるだろ
>>39 ご回答ありがとうございます。納得しました。
自分の場合、言語の処理系を開発していた際、その中で String や Integer など、
java.lang パッケージ内のクラスと名前が被るクラスを作る機会があったため、
その後、java.lang.String などと完全限定名で指定する癖がついていました。
このため、特に面倒には感じなかったのですが、
普通に考えると、完全限定名の使用は面倒かもしれませんね。
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 スレ違いで死た
いってきまふ…
失礼しました。
>>42 なんとなく言いたいことは分かりました。
しかしjavac -target 1.1 applet.java
見たいにDOSでやりますと
javac: ターゲットリリース 1.1がデフォルトのソースリリース1.5と競合しています
とでてうまくコンパイルできないのですが・・
正規表現なんですが、 <TAG bar="foo" aho="hoge">ごにょごにょ</TAG> みたいな文字列から、barとahoの値とタグで囲まれた部分を取ってくるのって Pattern p = Pattern.compile("<TAG bar=\"(.*)\" aho=\"(.*)\">(.*)</TAG>"); でどこが間違ってます? Macherのgroup(1)の中身が foo" aho="hoge">ごにょごにょ</TAG> となってしまって、二個目の\"を見てくれてないみたいなのです
>>51 XML文書のパースしたいのなら、XMLパーサ使った方が簡単だと思う。
>>50 それなら javac -target 1.1 -source 1.1 HelloApplet.java
>>51 .には"も含まれるから。
せめて
Pattern p = Pattern.compile("<TAG bar=\"([^"])\"\\s+aho=\"([^"]*)\">([^<]*)</TAG>");
ぐらいしとけ
>>53 javac -target 1.1 -source 1.1 HelloApplet.java
だと1.1は向こうなソースバージョンです。って出てしまったので
javac -target 1.1 -source 1.2 HelloApplet.java
にしてみたらうまくできました
いろいろありがとうございました
JAVAでデスクトップアプリケーションを作りたいと思っています。 Win32ネイティブのデスクトップアプリケーションの場合、 アプリケーションのユーザー設定を、iniファイルやWindows Registryに 記録するのが一般的だと思いますが、JAVAのデスクトップアプリケー ションの場合、一般的にはどのような方法で設定を記録するのでしょうか?
>>56 アプリならご自由に、としかいえんが
それは人それぞれの考え方だし
Linux等へ持っていくことを考えればXMLかなんかのファイルで最初から扱ったほうが楽だろうね
Preferencesはそれなりに使いやすいし、プラットフォームを変えるためのロード命令とか
準備はされているんだけれども・・・
58 :
デフォルトの名無しさん :04/12/23 19:31:34
質問です。 空文字かどうかを判定するのに equals("")を使うのとlength()==0を使うのって どっちがいいんですか?好みの問題ですか?
>>52 ,54
XMLパーサ弄ってます
なんかよく分かんないっすね
>>57 とりあえず、Preferencesを使ってみようと思います。
回答ありがとう。
>>58 String str が空文字列かを調べるとき
str が null になることがないなら str.equals("") でも str.length()==0 でも
(さらには "".equals(str) でも) 好みの問題。
str が null になることがあるなら "".equals(str) 一択。
>>58 length()==0が一番良い。
>str が null になることがあるなら "".equals(str) 一択。
これは、「strがnullでない」かつ「strの内容が""である」ことを示すだけだから
ほとんど役に立たない。
>>62 strがnullだとstr.length()でぬるぽ。
それがいやだから"".equals(str)なんだと思うが
すいません。 java.sql.*で スキーマが分かっていて その全テーブル名を取得したのですが、 どうすればいいのですか?
66 :
デフォルトの名無しさん :04/12/23 20:35:10
show tables
SQLとかdb依存じゃなく、javaで
>>65 使用するJDBCドライバが対応しているのなら、
DatabaseMetaData#getTables(String,String,String,String[])
でできる。
JDBCドライバの実装に依存するが、一応これがJDBC標準の方法。
70 :
デフォルトの名無しさん :04/12/23 23:14:30
ボタンがクリックされるごとに現在の日付と時刻を画面の中央に表示するアプレットを作成せよ。 上記の問題でプログラムソースをお願いします。
ありがとうございます。テーブル取得できました。 すみませんが、もうひとつ教えてほしいのですが、 カラムのデータ型とかLENGTHを取得したいのですが どうすればいいでしょうか?
ResultSetMetaDataでも調べておけ。 とれるのはあくまでJavaの型であってDB依存部分はとれないだろうがな。
classのファイルからjavaのファイルに戻すことはできるんですか? できるならやり方を教えてください いろいろなプログラムを見て勉強したいんですが class(完成したもの)しかない場合が多いのでお願いします
>>64 "".equals(str)の後にstrがnullかどうかのチェックはしないのか?
するんだったらここでnullチェックをしない意味が無い。
しないんだったら常にNullPointerExceptionの可能性がある。
strがnullになり得ないのならstr.length()==0で十分。
結局同じこと
>>76 equalsにnull渡してもぬるぽしねーよ。
Eclipse3.01にTomcatプラグインの3.0乗せて Tomcat5.0動かそうとしてるんですが、どうにも動かないんです。 こういうときってどこで聞けば良いんでしょう? OSはWinXP SDKは、1.42_06です
TOMCAT_HOME
Smith君にはまいるよ。
Vector v = new Vector(1); v.add("Hello"); v.add("Hello2"); v.add("Hello2"); System.out.println(v.capacity()); コレ出力したら4になりました!! 最初からなにか入ってるんですか?
>80 Tom君が5.0ならCATALINA_HOMEじゃないの?
>>82 要素数を知りたいなら、size()。
capacity の仕組みを知りたいなら、Javadoc 読め。
>>17 氏の助言に従ってDiceクラスを使ってみました。
ついでにstaticメソッドでDiceを振ることもできるようにしてみたのだけど、
これがどうも芳しくなかったりします。
シードをミリ秒時刻で初期化しているため、サブミリ秒オーダーで
乱数が生成されると同じ値が連続してしまう。
シードを設定せずにRandomオブジェクトを作れば
毎回違う値が出るんですが、
これって何を種にしてるんでしょう? JavaDocの説明を読んでもよくわからない・・・
>>86 コンストラクタでシードを初期化している。
↓
staticメソッド(サイコロを振る)はコンストラクタを呼ぶ
↓
staticメソッドを高速で呼ぶと同じ数値が並ぶ
というオチなのです。
結局、staticメソッドは高速で呼ばないようにするか、
そもそも用意しないでオブジェクトを作らせるか、
というふうにすべきなのでしょうね。
>>87 すべてを知るGodクラスを作って、すべてのDiceは単一のGodへの参照を持つ形にする。
実際の値を生成するのはGod
public class God {
public Dice createDice(int facet) {
return new Dice(this, facet);
}
}
>>87 参照を持つのが嫌ならseed値を与えるだけのクラスとかもアリだし、
Diceだけで完結させるなら
class Dice {
&nbps;private static int getNextSeed(){...}
}
とかもあり。
俺スパルキア軍ね
>>76 >だから str.length() < 1 だって言ってるだろ
このトンヌラ
J2SE SDKがダウンロードできないのは僕だけですか
Yes.
97 :
デフォルトの名無しさん :04/12/24 10:38:11
Eclipse 3 + Java5の組み合わせで使われている方いますか? 安定感とかどうでしょう? すでに、使われている方いかがでしょうか?
自分で試せばいいじゃない
99 :
デフォルトの名無しさん :04/12/24 12:54:28
100 :
デフォルトの名無しさん :04/12/24 13:22:32
マルチモニタのためのAPIってJ2SEにゃついてないんすかね 何台ついてるかとか、解像度はどうかとか、別のモニタにもっていくとか
マルチモニタの質問だからってマルチポストしなくてもいいじゃない
独習javaを一応終わらせたのですが 次に読むおすすめ本は何でしょうか?
>>102 もう本はいいんじゃない?
どういうコードを書くのが生産的か考えるのに、アジャイルソフトウェア開発についての本を読むのはいいかもしれん。
>>100 AGPと旧PCIビデオカード二枚差しだったら
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
で GraphicsDevice が二つ出てくるね。
一枚のビデオカードでマルチモニタしてるとどーなるのかは知らん。
MatroxとNVidiaで挙動が違ったりするかもしれないし、同じかもしれない。
>103 アジャイルソフトウェア開発ですか検索して調べてみます いま独習javaの本紹介のところを見たら応用本として独習JSPって本があるのですが どうでしょうか 自分はJSPという単語は持ち合わせておらず 辞書検索しても日本社会党がでてくるだけです
>>105 JSPなんて、大手の派遣会社にでも行ってJSP使わせてくれる仕事くれといえば
やらせてもらえるとこ行けるから、そこでカネもらいながらがんばれ。
107 :
31 :04/12/24 14:33:19
すいませんIEでJavaをアプレットを起動させたいのですが -target1.1だとTimerクラスがサポートされていないみたいで困っています 何か方法はないものでしょうか? お願いします
>>107 なら動くように1.4とかででつくればいいじゃない
110 :
31 :04/12/24 14:41:45
>108 JREは自分のPCには入っているのですが入ってない人にも見れるようにしたいのですが・・ HTML CONVERTERというものを使ってみたのですが 初めアプレットが表示される領域が出た後 DLが終わったと思われるとそのアプレットが表示される領域がなくなるという現象になっているんですけど 何が悪いんでしょうか
>>110 じゃあ1.1対応で作るしかないじゃない
112 :
31 :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ではできないんでしょうか?
>>112 自分で書いた動作の怪しいコードじゃなくて、SDKのデモについてる
Clockとか簡単で確実なコードとhtmlつかってまずhtmlconverterの使い方
を確認してみたら?
114 :
31 :04/12/24 15:34:10
>>112 よく分かりませんけど簡単なアプレットではできたので
PC再起動してもう一回やったらできました。
HTML CONVERTERすごいですね
ありがとうございます
>>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)
>>116 普通にできるけど?
強いて上げるなら、3行目の最後に;が付いてないくらいか
>>116 「うまく行きません」としか書かないでどうなるのかを書かないのはよくない。
ファイル名が変更できないだけなのか、例外が起こるのか、等。
エラーや例外が発生するのならそのメッセージもそのままコピペしろ。
119 :
116 :04/12/24 16:28:44
>>117 最後のセミコロンがないのは、ただの書き忘れです。
old_file.renameTo(new_file)の結果を出力すると、何故かfalseを
返しているんですよね。old_file.exists()の結果はちゃんとtrueを
返しているのに。どこが違うのかさっぱり分からない。
120 :
116 :04/12/24 16:30:37
パーミッションとかいうオチだったりして。
>>116 ファイルの書き込み、変更権限がないだけじゃねーの
システムドライブのルートはデフォでアクセスできないからな
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に追加されてしまいます。 どうすればよかとですか?
>>124 MyObjクラスのequalsメソッドを実装しろ
Set
>>91 実にアホだなあ。
もともとの質問では「空文字列と等しいかどうか調べる」としか言ってないのに
勝手に自分で都合のいいように解釈して
鬼の首でもとったかのようにぎゃーぎゃー言って。
>>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
動的にクラスパスを変更する処理を行いたいのですが 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です
>>131 確か起動後に設定しなおしてもクラスの読み込みには反映されない。
クラスパスをいじるんでなくクラスローダを何とかするがよい。
クラスAAAに別のクラス型のメンバー変数を持たせて、AAAのコンストラクターに このメンバー変数のクラス名を引数として渡して動的に異なるクラス型の変数を 生成させるにはどのようなコーディングをすればよいでしょうか? (このようなことをググるためのキーワードだけでも教えていただければ助かります)
Class Class#forName(String) Class#newInstance() Reflection reflect リフレクション
135 :
デフォルトの名無しさん :04/12/25 11:44:18
コマンドラインって、どういうこと?ですか?
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) が、出ます。どこがまずいのでしょうか?
引数付けて起動してないから あるいは、引数の数をチェックしてないから
139 :
デフォルトの名無しさん :04/12/25 12:15:32
>>139 C:\Documents and Settings\username>java In 10
とか
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])には、どうやって値を入れてるのかを教えてもらえますか? このソースには、代入式がないようですが・・・
>>142 EclipseとかNetbeansとかつかってない?
それだと最初はわからんかもなあ。
144 :
デフォルトの名無しさん :04/12/25 12:39:58
>>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と出ますが。 そういうことだったのでしょうか?
もしかして: Hello
148 :
デフォルトの名無しさん :04/12/25 13:04:52
>>144 そのサイトの、配列説明のところの実行例は間違ってるね。
コマンドライン説明のところの実行例はあってるみたいだけど。
java In じゃなくて、java In 引数 とすると、引数が配列に入る。
>>134 おぉー。リフレクションて言うんですか。早速調べて勉強します。
ありがとうございます。
151 :
124 :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は呼ばれていません。 自分の考えの間違えをご指摘頂けませんでしょうか?
>>150 リフレクションはツールが使うならいいが
アプリが使うなら設計ミスだと思ったほうがいい
それにつけても、Java2D/AWTってマジおそかですよ 30fps, 640x480でTImerTaskでjava.awt.Canvasのpaintループ回したらCPU100%張り付きっぱなしっすよ なんかイイ方法ないわけ?
>>151 equals()の引数の型が違うためにオーバライドできていません。
そのために、相変わらずObject#equals(Object)が呼び出されてしまいます。
equalsの引数の型をObjectに変えて以下のように修正すれば正しく動くでしょう。
public boolean equals(Object obj){
MyObj myObj = (MyObj)obj;
if(...){
155 :
124 :04/12/25 17:12:48
>>154 ご指摘ありがとうございます。
教えて頂いたとおりにオーバライドしてみたのですが、
相変わらずMyObj#equalsは呼ばれていません。
Object#equalsも呼ばれていないようなので、他にも間違いが
あったようです。
いろいろ調べていたら、hashCodeを実装しないといけないのかな
と考えています。
(hashCodeの概念が全くわかっていないので今勉強中です)
ちなみに
>>151 のequalsメソッドは記述ミスです。
oじゃなくてmyObjですね。
wiki逝ってない?
あー、equalsを実装したらhashCode()も実装しないといけない。たしかに。 equalsがtrueならhashCode()は同じ値を返さないといけない。 ただ、Object#equals()も呼ばれてないなんてことがあるのかな?
158 :
124 :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が呼ばれていないようですね。
>>158 に補足すると、HashSet#add(Object)はHashMap#put(Object,Object)に処理を委譲しているので、
この文脈で上記のコードが実行される。
ダブルバッファするのにComponent.createVolatileImageからComponent.createImageに変えたら 少しマシになった なんだこれ
>>153 なにをやってそうなったかかいてもらわんと
重い描画と軽い描画があるし
コードによって速度は大幅に変わるよ
Java2DのWindowsでの実装はGDIでDIBやらDDBやらDirectXなわけだが
アクセラレーションがきく描画とそうでないものとあるわけで
>>160 ダブルバッファの仕組みとかわかってないとどうしようもないな
Imageの確保の命令を理解していないとね
Windowsおせーとかいいつつアクセラレーションの聞かないGDI+を
使ってゲーム作ろうとしているのと似ている
検索すればいろいろ出てくるだろう
>>162 それ位知ってるって。
理解してないなどと思ってるのはアンタだけ。
あまり頓珍漢な事言わんでくれ。
>>153 三流メーカ提供の腐ったビデオドライバ(アクセラレータ使用)よりも
超一流のエンジニアが書いた転送ルーチン(アクセラレー? アクセラレーションがきく描画とそうでないものとあるわけで
>>160 ダブルバッファの仕組みとかわかってないとどうしようもないな
Imageの確保の命令を理解していないとね
Windowsおせーとかいいつつアクセラレーションの聞かないGDI+を
使ってゲーム作ろうとしているのと似ている
検索すればいろいろ出てくるだろう
>>162 それ位知ってるって。
理解してないなどと思ってるのはアンタだけ。
あまり頓珍漢な事言わんでくれ。
>>153 三流メーカ提供の腐ったビデオドライバ(アクセラレータ使用)よりも
超一流のエンジニアが書いた転送ルーチン(アクセラレータ未使用)の方が
速い事もある。
これ、画像扱う奴の常識。
>>164 そうか、ウチで使ってるビデオドライバはヘボで鈍いシロモノで、
ビデオメモリわ使わないJavaの画像転送ルーチンのほうが速かったわけか
>>132 レスありがとうございます
クラスローダを自作することでなんとかクラスのロードまでは出来るようになりました
170 :
124 :04/12/25 19:43:51
hashCode()を実装することで問題なく動きました。 教えて頂いた方々本当にありがとうございました。
>>163 これが釣りってやつか・・・
>>165 さらにいうと
VolatileImageはVRAMから確保
BufferedImageはDIBやDDBでの確保
基本的にメモリからビデオへの転送はバスがネックになるから
ビデオ内での転送じゃないと遅い
これはJavaに限らずDirectXでも同じことね
ただし、描画先がVolatileImageで描画元(スプライト)がBufferedImageで
ピクセルフォーマットがVolatileImageとBufferedImageが同じ場合に
DirectXによるアクセラレーションがきく
ピクセルフォーマットを同じにしたい場合はコンパチブルイメージを使う
とまぁ、ゲーム製作板ではあたりまえのことだけどね
作ってるのがゲームならそっちできいたほうがいいかも
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に追加する,といった,なんかスマートには見えない方法しか思いつかないのです
String#split
s.split(",\s*") であってますかしら
new StringTokenizer(s, ", "); //カンマだけでなくスペースも区切文字に ってのは? でもこれだと、a b,c,もaとbとcに分割されてしまう。 StringTokenizerなら、,,,のような区切文字の連続は1つのトークンとみなされるから、 空文字の心配はしなくていいはず。
s.split(",\\s*") StringTokenizerは既にdeprecated扱い。
>>173 それいまいちわからないんですが,\sの前についてる\はどういう意味なんでしょうか?
エスケープじゃないですよね
エスケープだよ。Javaでは\で始まるとunicode指定だから、エスケープしないといけない。
「\s」という文字列をJavaソース上で表す場合は"\\s"と書かないといけない。 正規表現という以前に、Javaソース内の文字列表現だから。
>>173 えーとちょっと待って下さい
a, b ,cとかの場合もあるから
s.split("\\s,\\s*")
ですよね.でもこれだと末尾の空文字列は無視してくれるのですが,
a,b, , ,,,,cという文字列の場合,bとcの間の空文字列が全て要素として
含まれてしまいます.これはどう解決したらいいのでしょうか?
>>178 まず実現したい仕様を正確に説明しろ。お前の頭の中なんで誰もわからん。
"a,b, , ,,,,c" をどう分けたいんだ?
>>178 >>169 なんとなくわかった。
s[0]: "a", s[1]: "b", s[2]: "c"
なのか。それなら
s.split("\\s*(,\\s*)+")
aとbとcを取り出したいのです あらゆる空文字・スペースを無視したいのです s.split("\\s,\\s*")だとbとcの間の空文字が全て要素として含まれてしまうのです
>>180 おー,でけました
ありがとうございます
実習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文は必要ないように見えるのですが間違ってるのでしょうか?
>>183 スマン、if文の後見落としてた
そこだけ見ると確かに意味不明だな
189 :
デフォルトの名無しさん :04/12/26 04:59:21
184晒しage とても不思議なコードだ
実は初版が to = message.getFrom()[0].toString(); になってて、 読者からぬるぽ&out of bounds指摘されて修正したは良いが 元の行消すの忘れたとか言う落ちでは?
参考書のサンプルコードに厳密なエラーチェックを求めるなってことだな。
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コマンドを使っても処理が終わるまで実際にかかった時間しか計測できない環境です)
>>192 自分のPC使えよ。ダウンロード&セットアップに10分もかからんだろ
197 :
デフォルトの名無しさん :04/12/26 08:59:56
皆さんはimport staticってどの程度使います? 定数や静的メソッドが名前だけで呼べるのは楽なんですが、 使いすぎると出所がわかりにくくなります。 Eclipse環境(3.1M4)だとメソッドの指名インポートは通りませんし。 とりあえず私は 自パッケージ内のクラス、自分と同列かより上位のcommonパッケージ内のクラス、 java.*パッケージについては、非常によく使う場合に限って(技術計算が多くて Mathメソッド内の静的メソッドを沢山使う、など)import staticするようにしています。
今の方針: 絶対に使わない
いちいち否定するな。 スタチックインポートの王道的使い方じゃないか。
使い方を否定してる訳じゃない。 import static そのものを使わないと言っているんだ。
201 :
デフォルトの名無しさん :04/12/26 13:53:40
java scriptをインストールしようとしたところ、「このプログラムは、 ご使用のインターネット接続設定では実行できません。 詳細はインストールノートをご確認ください。」と表示されてインストールできないんですが どうしたらよいでしょう?
>>198 java script の話題は別スレでどーぞ。
203 :
デフォルトの名無しさん :04/12/26 14:08:10
204 :
デフォルトの名無しさん :04/12/26 14:23:16
お金払って代わりにソース書いてくれる人を探すときって、どうやって探せばいいのかな?
205 :
デフォルトの名無しさん :04/12/26 14:23:16
JavaScriptも中身は違っても名前は同じjavaなんだから、 ケチケチしないで答えてあげたらどうなのかね? 次スレのテンプレには、JavaScriptもOKですって入れても いいかもしれん。 それとも単に分からないだけなのかな? だったら失礼。
jarファイルにexeファイルをいれてそのexeを実行ってできないのですか? exeファイルはjavaじゃありません。
>>202 ..まさか本気で書いてる?冗談だよね?
209 :
デフォルトの名無しさん :04/12/26 14:42:13
202晒し上げ。
>>204 ごめんなさい、言葉足らずでした
javaをexeで実行したいのではなく、java以外で作ったexeファイルをjarに入れて
その中で実行できる方法はないかと聞きたかったんです。
ためしにjarにexe突っ込んだんですけど実行できませんでした
なにかPathかなにか必要ですか?それとも実行は無理ですか?
そんなに簡単に釣られんなよ
>>204 ,208
それなら、.jarの中にhello.exe入れて、
Class#getResorceAsStream("/hello.exe")かなんかでInputStream取り出して、
FileOutputStreamで外の世界にファイル保存、
Runtime#execで実行。
できるかどうか知らん。
>>204 ,208
javaでCPUエミュレートするとかな。
冗談みたいな話だが、その方法でlinuxを動かしているのを見たことがある。
(開発元も消えてしまったし、詳しいことは知らん)
MS-DOS程度のメモリ管理とファイルアクセスだったら結構簡単に作れるかも。
202=198 だろ。こんな非常識な奴がそうそういるわけない。
>>192 ソースコード晒せば、たぶん試してくれる人とか居そう。
ん?名前が似ているという理由で多言語の質問もOKになの?
222 :
デフォルトの名無しさん :04/12/26 16:34:08
そもそもなんでJava Scriptなんて名前にしたんだろうか・・・
>202のような厨房を量産するため。 (少なくともNetscapeが意図的にJavaと紛らわしい名前にしたのは確か)
1990年サンは、家電など電子機器に搭載されるマイクロコンピュータの 為の、組み込み用共通プログラミング言語の開発に着手し、当初それは コードネームOAKと呼ばれていた。 小さいメモリ、貧弱なCPUでも問題なく動作するように、当初は 徹底的に言語仕様のスリム化が図られ、結局スクリプト言語に近い 仕様にまとまった。 OAKではインパクトが弱いという理由で、(ちなみに製品のネーミングの 重要さは、フレッシュソックスが「通勤快足」と改名した途端、売り上げが 爆発的に伸びた事で証明されている)新しくJavaと名づけられたのと 同時に、当時のスクリプト的正確から、「Java Script」と正式に命名された。 その後、サンはJavaをパーソナルコンピュータ市場にも参入させる事にし Java Scriptを大幅に拡張した言語「Java」を1995年に発表した。 これが現在私達が愛用しているjava言語の誕生である。
Javaで形態素解析をやらせたいのですが, 一般的にはどのようなものが使われているのでしょうか? Googleで探し回ったところ,MeCabとSenというものしか見つかりませんでした. 導入が簡単な物があれば助かるのですが….
>>226 ていうかSenのサイトらしきものが404で,ディレクトリ上に上がっていったら
閉鎖しましたとか書いてるんですが,現在配布してるところご存じでしょうか
J2SE5.0はバグとか少ないですか? 初心者なので自分のプログラムがおかしいのか、言語環境のバグなのか区別がつかないだろうからどの知りたいです。 1.4でやったほうがいいのですか?
>>231 初心者なら自分を疑え!
#だが初心者ほどコンパイラのせいにしたがるんだよな〜
そんな事はない。 プロの方が責任転嫁の傾向が強い。
プロはプロでも仙人クラスのプロが 「んー、これは流石に処理系のバグっぽいな〜」 と言ったんなら多少聞く価値はあるが。
>234 責任転嫁はするが普通その相手は人間。 親請「外注のせいで〜」 外注.PM「SEがバカなせいで〜」 外注.SE「PGどもがタコなせいで〜」 外注.anonymousCompanies.PG「仕様が(=仕様を書いた人間が)タコなせいで〜」
仕様がタコ、はしょっちゅうだけどな
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 どなたかお力をお貸し下さい….
JAVAのSDKは制作に必要 JREは実行に必要って事ですよね。 でも、作って確認するときJREが必要だと思うんですけど まだJRE入れてないのにhello java!のプログラムが動きました。 これって、SDKの中にJREが入ってるからなんですか?
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と言われてしまうのが どうしても解決できません。
上の続き 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 です。
>>241 お返事ありがとうございます
次はif文というのをやってみます。
eclipse2.1.3でプロジェクトに外部ライブラリーとしてsen.jarとcommons-logging.jar
を追加して,形態素解析させて見たところ,
java.lang.IllegalArgumentException: M:\中略・プロジェクト名\null\conf\sen.xml (指定されたパスが見つかりません。)
という例外がでました.sen.jarとcommons-logging.jarはプロジェクトがある
Mドライブとは別のドライブにありますし,そちらのパスを追加したはずなのですが….
この症状も
>>239 のクラスが見つからないという例外と関係があるのでしょうか….
>>239 Linuxのほうは、XMLプロセッサが入ってないから。
JREのバージョンで揃えるかXercesを入れるかどうかは
antのインストールマニュアルを読んで自分で判断すべきこと。
Windowsのほうは、シンボリックリンク。
間違えた。antは関係ないや。ともかく JREのバージョンを上げるかXercesを入れるかする。 どちらがいいかは自分の要件を考えて判断すること。
>>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つの違いって何なのでしょうか?
>>249 セルに空白が入っている場合とセル自体が無い場合との違いじゃない?
POI(というかExcel?)では両者は区別される様子。
セルのヌルチェックするなら、HSSFRow#getCell()がnullかどうかを先にしとけ、ということかと。
>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をうまく活用し、継承したクラスでは新規に追加した分だけコピー機能を実装するようにしたいのです。 なにか、良い実装方法があればご教授下さい。 よろしくお願いいたします。
>>253 public Object clone() throws CloneNotSupportedException {
return super.clone();
}
↑を実装すると中身もコピーされる(シャローコピーね)
My2DもMy3Dもこれだけでいいはず。
>>253 Object#clone()が呼ばれたときにthisがClonableであればシャローコピーを帰すって事。
特別その後で何か何か値を変えたいのでなければそのままでOK
>>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());
}
>>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の中でも使えるようにするためにはどうすればいいのでしょうか? 教えてください。
>>257 そのcloneの中でc1.x = xとかやる必要ないぞ、
ちゃんとthisの中身がコピーされたオブジェクトが新規に帰ってくるから。
cloneの中で値の一部変更(たとえば生成順序コードみたいなシリアルとか)の必要がある時だけ代入する必要があるけど。
>>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したい時だけ代入するのだ。
>>258 少なくとも、Tomcatではできない。
package宣言のないクラスはデフォルトパッケージに属するのだが、
Tomcatではデフォルトパッケージのクラスをimportできないため。
265 :
デフォルトの名無しさん :04/12/27 17:07:38
>>261 レスありがとうございます。
そうなのですか…。
現在eclipseを使って他のservletとの連携をとっています。
パッケージ化すると
http://localhost/ (自分で作ったフォルダ)/servlet/クラス
というふうにアクセスできなくなるのでデフォルトの状態で勉強していました。
例えばpackという名前でパッケージ化すると、
http://localhost/ (自分で作ったフォルダ)/servlet/pack/クラス
というふうにアクセスすることもできないようなのです。
どうすればアクセスできるようになるのでしょうか?
>>262 /servlet/pack.クラス
ね。「.」で区切った完全修飾名で指定する。
それよりもservlet-mappingを書けといいたいが、勉強中じゃ面倒か。
>>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
のことですか、どちらでしょうか?
>>264 (自分で作ったフォルダ)/WEB-INF/web.xml のほう。
この、(自分で作ったフォルダ)がアプリケーションのルートディレクトリになっているから、
アプリケーション固有の設定や固有のリソース(html、jsp、コンパイル済みクラスファイル、このアプリでしか使わないライブラリ等)は
全部このフォルダの下。
270 :
デフォルトの名無しさん :04/12/27 17:54:55
>>266 挑戦してみますができるかどうかはわかりません…。
あの、質問が初心者で申し訳ないのですが、どうして、
/servlet/クラス名でアクセスしてはだめなのでしょうか。
272 :
デフォルトの名無しさん :04/12/27 18:41:24
>>268 invokerとかですよね。
そういえば、<!--とかをはじめにはずした記憶があります。
勉強してみます!ありがとうございました!
ビジュアルノベルアプレットを自作しようとしているのですが 効果音を鳴らそうとしたときに 鳴るファイルと鳴らないファイルに分かれてしまいます 現在使おうとしているファイル種類は 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; } でファイルの存在確認と拡張子の限定を行います
上の続き 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の形式も範囲内だと思うのですが・・・ 御助言よろしくお願い致します
文字列の改行コードをLFに統一する処理って str = str.replaceAll("\r\n", "\n"); str = str.replaceAll("\r", "\n"); であってます?
>>272 それでいい。
s = s.replaceAll("(\r\n)|(\r)", "\n");
これでちょっといい気分になれる。
>>273 それが改行ができてないんですよねぇ
String str = "ほげ\rふー\rばー\r";
str = str.replaceAll("(\r\n)|(\r)", "\n");
System.out.println(str);
とやると、
ほげふーばー
と表示されてしまいます。
>>274 OSは?
WinXP/J2SE5では改行されるけど。
String s2 = s1.replaceAll("(\\r\\n)|(\\r)", "\n");でもいいようだ。
>>275 すいません、他の部分に問題がありました。
アドバイスありがとうございました。
TreeMapにオリジナルの順序のソートを与えるときに keyの整数の大きさが大きい順でソートして、 さらにkeyの数が同じ時はそのkeyが対応している文字列の辞書順に並べ替えようと思うんですけが keyの整数でのソートはできるんですが、辞書順でのソートができません。
すいません、解決しました。
>>277 そういうときKey,Valueをひとまとめにして取り出して、ArrayList<Entry<K,V>>をソートする。
283 :
デフォルトの名無しさん :04/12/28 01:59:15
Javaの文法って行末に;がついてるけど あれって必ず改行することにすればいらないような・・・
それはまずC言語にいってください というか改行が区切りってのは違ってると思うぞ 昔は一画面プログラムというもの(ry
>>280 VB屋さんでつか?
分の途中で開業できないと恐ろしく読みにくくなりますよ。
「文の途中で改行」だった・・・orz 逝ってきます
287 :
YahooBB218129112033.bbtec.net :04/12/28 03:10:40
a
288 :
デフォルトの名無しさん :04/12/28 03:19:33
SunのJRE1.4.2インストールしたのですが 何処にインストールしたのか解りません インストーラに従ってインストールしたのですがフォルダ指定とかもありませんでした 何処に行ったのか教えてください
すいません。XP,Homeです
>>285 あなたが見逃しただけで、フォルダ指定する機会はあったはずですよ。
デフォルトのインストール先は C:\j2sdk1.4.2_<version> だったかと思います。
<version> のところは、あなたがインストールしたものにあわせて読み替えてください。
現時点で最新のものをインストールしたのであれば、C:\j2sdk1.4.2_06 かと思います。
>>288 と、思ったら、JDK じゃなく JRE だったみたいですね。失礼しました。
>>285 JRE のインストール先は C:\Program Files\Java\j2re1.4.2_<version> だったかと思います。
<version> のところは、あなたがインストールしたものにあわせて読み替えてください。
現時点で最新のものをインストールしたのであれば、
C:\Program Files\Java\j2re1.4.2_06 になっているかと思います。
>>290 >C:\Program Files\Java\j2re1.4.2_06 になっているかと思います。
発見しました、有難うございました
クラスのjavaとjavaxの違いは何ですか?
>>293 パッケージの間違いです
いきなり英語サイトに飛ばされる訳ですね・・・
すいません、教えてもらったのに愚痴言ってしまい
有難うございました
298 :
デフォルトの名無しさん :04/12/28 08:29:02
質問がいくつかあります。まとめて面倒見ていただけるとありがたいです。 1:コレクションのiteratorメソッドが返すIteratorは毎回コピーを生成して返すのか。 つまり、いくつかのスレッドが自分用のiteratorを得て、ぐるぐる回してもOKなのか? 2:static変数であるオブジェクトの中で宣言されたコレクションクラス(包含関係になっている)から 要素を取り出して(HashSetでもArrayListでもいいです)、得た要素に対して変更を加えても、コレクションの中の 要素には変更が反映されません。 ちなみに、複数のスレッドから行っています。volatileでコレクションを宣言してもダメで、結局変更後にコレクションにaddし直す という事を行わざるおえなくなっています。これはstatic変数という事に何か関連があるのでしょうか?、コレクションから要素を得る場合 参照を返すので本来、変更は反映されると思うのですが。 駄文で申し訳ないですが、教えてください。よろしくおねがいします。
>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でなければちゃんと変更が反映されるのですが。
>>297 得た要素に対して変更を加えるって、入れてる要素のクラスはImmutableじゃないよな?
302 :
295 :04/12/28 09:51:29
Immutableとは、生成時に設定した値から変更不可なクラスという意味でしょうか。 それともそういったインターフェースがあるのでしょうか? 知識不足ですね。すいません。
303 :
295 :04/12/28 09:52:14
ちなみに、Immutableではありません。 static変数でない場合にはちゃんとできます。
>>299 immutableなクラスってのはStringとかみたいに「生成時に設定した値から変更不可なクラス」
staticの時だけ変更できないってのはなんか変だな。
305 :
295 :04/12/28 10:01:29
>>301 メモリ上の配置とかそういうのに関係あるのかなと自分なりに考えているのですが、
原因不明です。volatileでもだめですし。
>>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() );
}
}
307 :
253 :04/12/28 10:20:16
遅くなりましたがcloneの件ありがとうございました。 かなり勉強になりました。 これ、知ってるのと知ってないのじゃ大違いですね。 ありがとうございました。
すいません。学校で問題を出されたのですが、さっぱりわかりません。 どなたかご教授お願いできないでしょうか? 問・適切な状況を考えて、abstractクラスを一つ作りなさい。そのサブクラスを 3つ以上作ってスーパクラスのabstractメソッドを全て実装しなさい。 また、そのテストプログラムを書きなさい。 という問題なんです。 abstractクラスは数とか抽象的なモノを表すってのはわかるんですが・・・。
スレ違いでした。スミマセンm(__)m
"HOGEほげ\nHOGEひげ\nHOGEはげ\n\nなんとかかんとか\n" などという複数行からなる文字列から、行頭がHOGEで始まる行は無視して、 該当しない行のみ(空行も含む)を抽出したいのですが、どのようにパターンを書けばいいでしょうか? この場合は抽出したい文字列は"\nなんとかかんとか\n"となります
313 :
デフォルトの名無しさん :04/12/28 18:00:36
ここでOKな質問なのかわからないんですが、もしよかったら教えてください。 初心者なもので、すみません・・・ JBuilder2005をインストールしたんですが、 SDK1.5の文法の使用を許可する方法がわかりません。 どなたかご教授ください。 お願いします。
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); ----
"\\""
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);
----
>>277 ,279
何とおりもソートしたいんなら別だが
Comparatorを引数にとるコンストラクタもあるだろ?
>>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を分割してもみたんですが,結果は同じです。。 拡張子を判別したいだけなのですが,上手い方法ないものでしょうか? ご教授下さい。
>>319 == は参照が同じインスタンスを指してる場合に true になる。
string01.equals(string02) を使え。
>>320 でけました。多謝多謝であります!
Stringはオブジェクトなんですよね。。
忘れてました。
>>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ファイル内のクラスを、読み取る方法を 教えてください。
>>323 実行時にlib.jar はクラスパスに含まれているのか?
>>323 できない。自分でクラスローダを自作するか
どっかから探してくるかすること。
329 :
デフォルトの名無しさん :04/12/29 14:22:21
List list = Collections.synchronizedList(new LinkedList()); という方法でLinkedListを同期化できる事は知っているのですが、これでは LinkedListにあって、Listにはないようなメソッドは使用できなくなってしまいます。 LinkedList list = (LinkedList) Collections.synchronizedList(new LinkedList()); のような結果を得る事はできないのでしょうか? ↑ちなみにこの方法は使えない。
そんなに繰り上がり足し算風な書き方がお好きなら、こう書けば? a = 2 \ + 3 \ + 4 \ p a
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ファイルに含めねばならないのですか?
なんて事だ・・・
SunのJREとIBMのJREってどう違いますか? 内部実装が違っても言語仕様はまったく同一と見て良いのでしょうか?
どなたか
>>309 にアドバイス頂けませんでしょうか?
>>329 jarファイル内に別のjarファイルを格納したりしないで、
素直にmainを含むjarファイルと、ライブラリのjarファイルと、起動用バッチを用意すればいいのでは。
>>329 そんなことはない。同一ディレクトリにjarを置いて、MANIFESTファイルに
Class-Path: lib.jar
などと書けば参照してくれるよ。
MANIFESTファイルにMain-Classを書いておけば起動用スクリプトも不要。
337 :
デフォルトの名無しさん :04/12/29 17:12:32
([^H]|H[^O]|HO[^G]|HOG[^E])
339 :
デフォルトの名無しさん :04/12/29 17:58:20
>>328 そのファイルはCSV形式と呼ばれるものです。試しに拡張子を .csv にして
みてください。あーら不思議、Excel で開けちゃうんですよ。
・・・というわけで「CSV」をキーワードにして調べてみてください。
ちっ、遅かったか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)
>>338 どうしても1つのJarにまとめたいなら、
ライブラリのjarをばらして1つのjarファイルにすればいいじゃない。
面倒なら、それを自動的にやってくれるツールもあるよ。
ttp://fjep.sourceforge.net/ Eclipseのプラグインだけど。
しかし、そんなのはAntスクリプト書けばすぐできるよね。
しかし、「本当にひどいです・・・・(T_T)」なんて涙ながらに書くことか?
>>334 それって行頭でなく行中にHOGEがある場合も弾かれません?
345 :
デフォルトの名無しさん :04/12/29 20:23:05
>>340 おお、かなり便利なmんおがあるじゃないか。
346 :
デフォルトの名無しさん :04/12/29 20:34:10
341 解決したか? 頭に^つけてみ
>>343 要するに、"^([^H]|H[^O]|HO[^G]|HOG[^E])(.*)"
としてgroup(2)を取れば、行頭に弾きたいパターンを持たない行のみを
取ってこれるということでしょうか?
聞く前にやってみればいいのではないでしょうか?
>>345 やってみたんですが、うまく行かないんですよね
文字列が単一行の場合のみヒットして、かつ抽出した文字列は
行頭の一文字が無くなっています
350 :
デフォルトの名無しさん :04/12/29 23:51:02
351 :
デフォルトの名無しさん :04/12/30 04:53:59
JREダウンロードするとするとバージョン1.4.2_01〜1.4.2_06までいくつかインストールされるじゃないですか? これって一個残してアンイストールしても問題無?
>>348 一回のダウンロードでいくつかインストールされるわけではなく、
ダウンロードした際、それぞれの最新版をインストールしているのかと。
現在の最新版は 1.4.2_06 ですから、
それ以外はアンインストールしても構わないと思います。
実際、自分は最新版を残し、古くなったものはアンインストールしていますが、
これまでのところ、特に問題が発生したことはありませんでした。
ただし、(1)JRE導入⇒(2)何か追加でインストール⇒(3)新JRE導入、とした場合、
(2)で導入したものがJREのフォルダに変更を加えるタイプのものだとすると、
当然ながら(3)で導入した新JRE環境には(2)が導入されませんので、お気をつけて。
>>349 親切な回答有難うございます
>一回のダウンロードでいくつかインストールされるわけではなく、
>ダウンロードした際、それぞれの最新版をインストールしているのかと。
今見たら私の文章変ですね
JRE自体はかなり昔にインストールしたのでその辺の記憶が曖昧なんです
PC軽くするため何か削除できるソフトがないかとアプリケーションの削除見ていたら
JREがたくさんあったので気になりました
有難うございました
354 :
デフォルトの名無しさん :04/12/30 08:30:34
わからないから
357 :
デフォルトの名無しさん :04/12/30 08:54:20
346 正規表現勉強しろ
>>326 Vectorの同期化が役に立たないのと同じ理由で
Collections.synchronizedListの同期化も役に立たない。
LinkedListをどうして同期化したいと思ったのだ?
LinkedListのまま使って、必要なときはsynchronizedブロックを使うのが正しい。
360 :
デフォルトの名無しさん :04/12/30 11:04:09
JARの中のファイルからテキストを読み出すときは getClass().getResourceAsStream(filename) でInputStreamを取り出すと思うのですが、このInputStreamを使ってBufferedReaderのreadLine()のようにテキストを読み出したい場合はどうすればよいでしょうか。 InputStreamからBufferedReaderをどうやって作ればいいのかが分かりません。アドバイスお願いします。
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
>>358 new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(filename)));
>>360 ありがとうございます。それでできました。
>>362 ちゃんと回答される質問も少なからず存在する以上、質問スレの存在する意味はあるよ。
>>359 <jsp:setProperty name="set" property="var" value="array_list[0]" />
<jsp:setProperty name="set" property="key1" value="value1" />
またネタ師か・・・・
ジェネリックで躓いてます、神様お助けを! public class X<T> { T[] m = new T[ 1 ]; } などとすると、「汎用配列を作成します」とエラーになってしまいます。 何故なんでしょう???
>>367 erasure だから。
erasure がクソだとか言うのは作者に言え。
もしくはクソでない仕様と実装を作ってから文句言え。
>>365 うまくいかなんですけど。
つーか、365のとおりなら、 set.setVar(array_list[0]); や set.setKey1("value1"); となるから、ぜんぜん違うような。
javaを始めようと思い、java2SDKをインストールしてautoexec batで 環境変数の設定を行おうとしたのですが、autoexecのテキスト内に PATHという文字がなかったので、 PATH = D:[javacの保存場所] と追加しましたが正しくコンパイル出来ません。 上記のように追加した後でDOSで ECHO %PATH%[ENTER] と入力するとなぜか、 c:\windows\command と出ました。 この場合どうすれば正しくパスが設定できるのでしょうか? アドバイスどうかお願いします。 ちなみにOSはwin95です
>>370 コンパイル前にDOSプロンプトで
SET PATH = D:[javacの保存場所]
としてからjavacコマンド実行じゃダメ?
375 :
デフォルトの名無しさん :04/12/30 21:29:08
うう・・この時代にWindows95なんてかわいそう・・・(T_T)
Win95 も 10年前の OS になっちゃうんだなぁ……
SET PATH=D:\XXX\bin;%PATH%
SET PATH=%PATH%;D:\XXX\bin
>>371-376 即レス本当にありがとうございます。早速371さんのアドバイスから順に
試してみたのですが、コンパイルできず、DOSでPATHと入力しても
C:\WINDOWS;C:\WINDOWS\COMMAND と出てしまいます。もしかしたら
autoexec.batの内容に問題があるかもしれませんので、見て頂けないでしょうか?
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"
>>378 SET PATH=%PATH%;D:\riyou2\bin
↑を最後の行にしたら
>>377-378 Win9x系OSの場合はOSを再起動するか
コマンドラインで直接c:\autoexec.batを実行しないと
パスが有効にならないぞ。
これをどうしてもやりたくないというなら
コマンドラインで直接 set PATH=%PATH%;c:\j2sdk.1.4.2_06\bin
と入力すると手っ取り早い。
だが再起動するとこの設定は結局無効になるので
autoexec.batにはちゃんと書いた方がいい。
もちろんファイルの最後尾にPATHを追加だ。
>>380-381 レスありがとうございます。
autoexec.batで SET PATH=%PATH%;D:\xxx\bin
と入力し上書き保存して再起動しましたがダメでした。
うーん、何がいけないんでしょう・・・。
ところで、私が今使っているautoexec.batは2chで分類するとどの板が
適当なのでしょうか。379さんがおっしゃるようjavaというよりautoexecの
問題のような気がしてきましたので。
なんつーかPATHの設定を直して再起動してから、PATHが設定されてるかどうか setコマンドやPATHコマンドで実際の環境変数を確認するプロセスが欠けてるよね。
やさしいJava活用編でJavaBeansを勉強してます リクエストを受けてサーブレットでBeanを設定してJSPで結果を出力するという プログラムを作成したのですが結果に何も出力されず、うまくいきません 付録のサンプルプログラムを使用してもおなじでした Tomcat4.1.31を使ってます これは環境設定がいけないのでしょうか 対処法を教えてください…
>>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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> 付録のサンプルプログラムを使用してもおなじでした
どこのどういうサンプルだ!
あ→0、い→1、・・・、ん→55 のようにひらがなを数値に変換したいんですがハッシュ以外で方法はありませんか? CでアルファベットだったらA-'A'というふうにできますがJavaで似たことやりたい場合はどうすればいいでしょうか?
>>389 java.lang.Character クラスの
getNumericValue メソッドはどうでしょう?
>>390 ありがとうございます。
System.out.println(Character.getNumericValue('あ'));
System.out.println(Character.getNumericValue('い'));
日本語だと-1になってしまいますorz
>>390 Character.getNumericValue() ってのは引数に '1' を指定して呼んだら 1 が返るとかゆーメソッドだから、
>>389 の用途には使えない。
>>392 でも'A'を指定したら10が'B'だったら11が返ってきましたよ。ひらがなじゃなくてアルファベットだったら望みどおりの結果です。
>>384 毎回再起動した後、DOSで ECHO %PATH% と入力しているのですが
これとはまた別のことでしょうか?
>>387 autoezec.batはc:\windows\options\Cabsに入っていました。修正します。
コマンドmsconfigはまだいじってません。弄り方調べてみます。
WIN95を使っているのはお金がないからです。
javacはbinの中に入っています。
WINが起動するドライブはおそらくcだと思います。
マシンはFMV SV205だと思います。
アドバイスありがとうございます。
自己レスですが System.out.println('い'-'あ' + "");だと2 System.out.println('う'-'あ' + "");だと4 System.out.println('え'-'あ' + "");だと6 が返ってきたので2でわってやれば何とかなりそうです。
>>395 分かりました。
みなさん、レスありがとうございました。
>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); }
404 :
400 :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!とう文字列は表示されませんでした。
405 :
400 :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); }
406 :
400 :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はどのようにすればシリアライズ、デシリアライズができるのでしょうか。
>>399 そのとおりでしたorz
'お'まではうまくいったのに'か'から変になりました。ユニコード表見てみます。
なるほど間にがとかが入ってるのかorz
>>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 が返されます。
System.out.println()じゃなくてprintln()で済ますことってできないんですか? Systemクラスはlangパッケージ内だからインポートしなくてもいいですよね してもできませんでしたが
411 :
デフォルトの名無しさん :04/12/31 08:07:14
test
>>407 J2SE5.0なら static import で out.pritln() までは削れたはず
でも楽したいならEclipseとかコード補完出来るエディタ使った方がいいと思うが
※Eclipseだとsysoutって打ってCtrl+Space押すとSystem.out.println()になる
>>407 自分が作成するクラスに println() メソッドを用意して、
そこから System.out.println() を呼び出す、というのはどうでしょう?
>>409-410 返事どうもです
すいません、環境はSDK1.4+Eclipseです
まずプログラミングに慣れたいんでJ2SE5.0は今は使う気はないです
Eclipseは昨日ダウンロードしたばっかりで詳しく解らないですけどコード補完は利用してます
>※Eclipseだとsysoutって打ってCtrl+Space押すとSystem.out.println()になる
スゴイ、感動しました。sysoutでできるなんて知りませんでした
printlnの様なよく使われるメソッドもできるんでしょうか?一覧で教えてくれるサイトとか
あったら教えて欲しいです
あと
>>407 の質問ですけど思いっきり勘違いしていました
Systemクラスをインポートした所でそのクラスを省略できないですよね_| ̄|○
でもoutってクラスじゃなくてフィールドなんだ・・・フィールドって何だろう
Systemがoutを継承しててoutクラスのメソッドprintln()を使ってると思ってたのに
ああ、混乱してきた
インポート(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参照。
JARファイルをWebサイトにアップしてIEでダウンロードしようとするとかってに拡張子がZIPに変わってしまいます。 自己実行型JARを作ってもZIPにされてしまってはダブルクリックで解凍されてしまって困っています。 なるべくユーザに.zipから.jarに拡張子を変える手間を持たせたくないのですが方法はないでしょうか。
サブパッケージって何ですか? 例えばJava.awtのサブパッケージは何? APIリファレンス見てもトップのJAVAプラットフォームパッケージしか見つかりません
失礼しました、逝ってきます
>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が使えないので・・・ データの受け渡し方法がよくつかめなくて・・・ セッションで受け渡しているんでしょうか? タグライブラリでの記述もよく分かっていませんが、とにかく自分で調べてみます。 上の疑問も今ソースを追って調べているんですが、焦っているのになかなか分かりません。 どうか宜しくお願いします。
>>417 ActionFormのscopeは選択できるよ。
application、session、request。
>>417 Cookieが使えなくてもSessionの維持は可能。
Servlet API にはURLRewritingという仕組みがあって、
Strutsはデフォルトで対応・実装されている。
ていうかまずデータの受け渡しをセッションでやると思っているあたり ちょっとまずいけどな
>>418 >>419 有り難うございます。2人の書き込みでi-mode(携帯)でもいけそうだと分かり嬉しいです。
きちんと全部のソースを読んでみます。
あまりにも分かっていないのでプリントアウトして
一行ごとに日本語で調べた内容を書こうかと・・・
今日明日中には基本的なことを理解したいです。
そして2日間かけて自分なりの雛形が作ろうかと思います。
>>420 お恥ずかしいかぎりです。とりあえず皆さんが教えてくれたことをググってきちんと理解してきます。
Integerクラスとかのラッパークラスは抽象クラスでないなの 何故にオブジェクト作らなくてクラスを指定してオーケーなのでしょうか? Integer.parseInt()とかの事です
>>422 ラッパークラスかどうか何て全く関係ない。
「staticメソッドだから」が答え。
>>416 IEでなければ大丈夫です。.htaccess調べてみます。
描画についてですが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); } }
430 :
426 :04/12/31 16:58:38
すいません、通りました。ごめんなさい。 ホントに427ですね…
432 :
デフォルトの名無しさん :04/12/31 20:04:33
>>417 二日目でServlet,JSP,JDBCまで理解したってのはスゴイ
他言語での開発経験は、あるのだろうが・・・
>>429 そんな。3年間出向でCOBOLのバッチ処理を組んでいました。会社に帰ったらJAVA一色で・・・
覚えは悪い方だと思います。STRUTSで失速中ですし・・・なんとか今夜頑張ってみます。
雑談すみません。
434 :
デフォルトの名無しさん :04/12/31 21:38:24
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);
}
}
どうかよろしくお願いします。
>>424 IEでなければ大丈夫なら、IEの問題なのではないでしょうか。。
jarファイルはzipファイルと同様の形式で圧縮されていますから、
IEがダウンロードするファイルをzipファイルと認識しているものと思います。
正規表現で単語を抜き出すときに特定の単語、例えばorangeなどの単語を省くのはどうすればいいのでしょうか。
>>435 そうですか・・・MSはとことんJavaがきらいってことですねorz
実行型JAR落としてもらっても解凍されちゃってなにこれってなってゴミ箱行きになるのが目に見えるようだ。
, '",':.:.:.:', ` 、 , ':.:.:.:/:.:.:.:.:.:'、:.:.:.:.:` 、 /:.:.:.:.:, '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 ', :::! '゙:.:.:.:.:.:.ヽヽ `''''''" / ,' ',`-ヽ二二ニ'' ー-、 __,,,.! .ヽゝ ,,,_:!:.:.:.:.:.:.:.:.:.:` \.、 __ノ./ ',:.:.:.:\:.:.:.:.:.: ̄ ̄` 、
来春の就職に備えてJDBC勉強しようと思ってます まず何からやったらいいでしょうか? わかりやすいサイト・本等ありましたら紹介してください
来春× 今春○ いきなり間違えたorz
配列宣言するとその変数でlengthメソッドが利用できますよね このlengthメソッドはどのクラスのメソッドですか?
メソッドじゃねえよ
すいません 配列宣言するとその変数でlengthフィールドが利用できますよね このlengthフィールドはどのクラスのフィールドですか?
>>445 配列型のフィールド??
それってAPIレファレンスのどこに載ってますか?
>>447 なるほど、言語仕様だったんですね
有難うございました
452 :
デフォルトの名無しさん :05/01/02 13:38:31
iアプリを制作する際、画面にリストボックスを組み込みたいのですが 指定した位置に組み込みたい場合はどのようにすればいいのでしょうか? ちなみにアドベンチャーゲームのような選択肢欄として使う予定です。
>>435 Zip解凍ソフトでファイルの関連付けをしているので、
適当なJARファイルを一つ選んでほかの物に関連付けすれば、
直りますよ。
わからないようであれば、あとで詳しく書き込みます。
>>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ベリファイアがありましたら、紹介していただけますか。 よろしくお願いします。
とりあえず 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のあとに「シンボルを解決できない」エラーがでます。 ループを外すとちゃんと動くのですが、何が原因でしょうか?
変数のスコープ
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。
462 :
458 = 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の最大を表示するのですか?
10進数の文字コードってありますか?
>>452 以前「*.jar」ファイルを解凍しようとして解凍ファイルをダウンロードして
解凍したら全ての「*.jar」ファイルが「*.Zip」になってしまったことがあります。
解凍ソフトの関連で「jar」が関連付けしてあったら関連を外してください.
適当な「*.jar」を選択して右クリック、「プロパテイ」を選択「変更」ボタンをクリック
「ファイルを開くプログラムを選択」で「javaw」を選択。
質問に対する回答が違ったらゴメン。
467 :
456 :05/01/03 00:12:44
>>457 ,458
ありがとうございます。さきほどの問題は解決したのですが、
違う文字列を入力してもループを抜けてしまいます。
while(str!=("hoge"))の!=が問題だと思うんですが、わかりません。
どこを変更すればいいでしょう。
468 :
456 :05/01/03 00:15:40
↑間違いました。 「正しい文字列を入力してもループから抜けない」でした。 お詫びして訂正致します。
470 :
454 :05/01/03 00:28:19
簡単なjavaプログラムを書き、バイナリエディタでいろいろ書き換えてみたところ、
どうやら、Illegal type in constant pool エラーは、
「コンスタントプール内での参照がおかしい」のではなく、
「(コード属性などからの)コンスタントプールへの参照がおかしい」ときに出ることがわかりました。
>>454 の例だと、
コンスタントプール内でのgetText()メソッドの記述がおかしいのではなく、
Test.getTest()メソッドが持っているCode属性中のコンスタントプールへのインデックスが違うみたいです。
ちなみに、バイトコードを直にいじることはあまりなさそうなので、ちょっとすれ違いかも…ですね。笑
471 :
454 :05/01/03 00:33:41
>>456 >>464 string型の文字列の比較は、equals()メソッドを使うんだったと思います。
上の場合だと、str!="hoge"の代わりには、
!str.equals("hoge") もしくは !"hoge".equals(str) と。
(!は、否定の演算子です。)
ちなみに、一般的には、前者のように書くと、strがnullのときには、NullPointerExceptionがでてしまうので、後者で書いた方が安全だと思います。
>>463 ご回答ありがとうございました。
ご教示いただいた設定は既に当方の環境で設定済みでした。
ご教示いただいた設定は、Windows 上にて、
jarファイルをダブルクリックした際に起動するプログラムの設定ですね。
ご教示いただいた設定にて、念のため再度確認してみましたが、
今回の件の元々の質問者である
>>413 さんが期待される結果にはなりませんでした。
既に
>>435 でも言及しましたが、
>>413 さんが直面されている問題は、
IEがデータのダウンロード時に行うデータ形式チェック機能にて、
zipファイルとjarファイルの圧縮形式が同じであることから、
IEが勝手にzipファイルと判断して保存しようとする、というのが原因かと思います。
今回の場合、jarファイルはダウンロードされた時点で、
既にzipファイルの拡張子を付与されてしまいますので、
ご教示いただいた設定を行っても、残念ながら状況は好転しませんでした。
>>469 お役に立たずスミマセンでした。
解凍ソフトをインストールした後に同じ現象が起きたものでしたので、
全ての「*.jar」が「*.zip」に変わり、
新規にダウンロードした「*.jar」ファイルが「*.zip」になってダウンロードされたもので、
同じ現象かと思いました。
ダウンロード先フォルダーが 関連付けされていませんか?
>462 \uFF11、\uFF10、\u9032、\u6570、で順に'1'、'0'、'進'、'数'。 ん? 何か間違えてる?
「*.zip」をダブルクリックしたときに起動するソフトに「*.jar」の関連付けが されていませんか? 皆さんに怒られるといけないので、これを最後にします。
477 :
デフォルトの名無しさん :05/01/03 05:08:59
JTableで、スクロールバーのイベントを捕まえる にはどうすればよいですか?
>>473 私の環境では、*.zipはWinZipに、*.jarはjavaw.exeに、
それぞれ関連付けされています。
>>475 まだ続いてたんですね。413です。ありがとうございます。
私も自分の環境では.zipはlhaca、.jarはjavawになってるのでダブルクリックすればちゃんと区別されます。
やはり.jarをダウンロード時にかってに.zipにされるのが問題ですね・・・
IE以外のブラウザやダウンロードソフトでは.jarのままでダウンロードできるのでやはりIEに問題があると思われます。
>>474 JScrollPaneに入れて使うことになると思うので、こんな感じかね。
JScrollBar vBar = scroll.getVerticalScrollBar();
BoundedRangeModel range = vBar.getModel();
range.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
...;
}
});
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+"です。") } } これで、底辺と高さに少数を含むとエラーになります。 なぜでしょうか?よろしくお願い致します。
エラーにならなかった
>>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()メソッド を読み込むので、こういう現象が起きるみたいなのです。 どうすれば、コンストラクタもちゃんと読んでもらえるようになるのでしょうか。 教えてください。
>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登場時も
真のプログラマはエディタとコンパイラとデバッガのみとか言ってこれも
否定してましたからね。マニアの言う事を聞いてるとロクな事になりません。
>>487 以上APIをそのまま使うことしか出来ない低能の戯言でした。
>>488 氏ね。オタク。彼女いない歴30年。ブサイク。バーカ。
鏡外し忘れてるよ
>486 Task#doIt()の中で_String1、_String2を見て処理してる? コンストラクタにnullを渡してでもいない限り、そいつらがnullになるはずはないんだけど…… まだダメだったらdoIt()の中身もきぼん。
ImageのオブジェクトとGraphicsのオブジェクトは いつも一対一には対応しているとは限らないんですよ。 役割が違うから。 表示用のデータとしてImageをメモリ上に複数持っておいて それをまとめて一つのGraphicsに描画するなんてのは ゲームなんかではあたりまえのことですし、 ImageとGraphicsを一対一に対応付けないといけないとしたら Graphicsごとに表示用のデータを持たないといけなくなるわけですし。
>>487 おっしゃる意味は解らないではありませんが、もっと見聞を広げましょう。
たにんが作った成果物を利用するだけではなく、一から自分で作るという
くろうを経験してみると、とても奥が深い事に気付くでしょう。
消えていった多くの言語は、それらの持っていた問題点を提示して消
えていったのです。自分のポリシーの確立を放棄するのは「マニア」にも劣
ろうと自ら泥沼に入り込むようなものです。がんばってください。
>>485 上手くまとまらないなぁ・・・こんなところか?
・Imageクラスを使わない状況でGraphicsクラスの役割を必要とする状況がある(ボタンの描画など)。
・Graphicsの実装は環境依存で、実行時に適切なクラスに切り替える必要がある。
識者の修正求む。
Graphicsは、GoFデザインパターンのStrategyパターンを使ってる、と理解しているけどね。
線や点の描画ロジックをGraphicsクラスとして抜き出し、それをFrameやButton等のウィジェットや
Imageクラスで使っている、Graphicsの実装を変えればWindowsでもUnixでも動く、と。
javaでは音声圧縮フォーマットをストリーム再生するのは難しいでしょうか? wavやauは非圧縮フォーマットですし。 一応、ネット上ではjavaでoggを再生しようと言うプロジェクトもあるようですが・・・ ゲームでBGMに効果音を載せるような場合、MIDI(BGM)とWAV(効果音)を合わせるしかないのかなあ・・・
フォームの入力を受け取ってデータベースに保存するプログラムを組んでるのですが データベースを扱うプログラムはクラスに分けるべきですか? それとも直接書くべきでしょうか?
ぼやけすぎ
501 :
デフォルトの名無しさん :05/01/04 00:22:59
普通のプログラマなら、ImageなしでGraphicsを使うことの方が多いはずですが。
>>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 さん!解決しました。
私の勘違いだったのです…。
ごめんなさい!
ですが、心強かったです。プログラムを一人で作るのってだんだん
さみしくなってきますが、相談にのっていただいて元気がでました!
ありがとうございました。またお世話になります。
初々しいねぇ、がんがれ
>>502 487ではないがお前も理解できていないと思う。
487は分割統治なんて出てくる文脈じゃないぞ。
プリンタやフォームも、Imageを継承してれば(GraphicsがImageに統合されていても)なんら問題なくね?
最終的に絵になるわけだから、Imageに集約されるほうが良いと思う
>>509 Imageの責務を、Componentまたはそのスーパクラスに持たせた場合、
Graphicsの実装が環境ごとに異なるという、
マルチプラットフォームゆえの問題を解決するのが面倒になりそう。
Bridgeパターンつう手もあるけど、コーディングが面倒だからなぁ・・・
Graphicsだけ抜き出してStrategyパターンってのが無難だろうねぇ。
ともかく、506や509は、いっぺんAWT相当のライブラリの縮小版を頭の中で設計してみるといいと思う。
そうすればAPIの設計者の意図が読めるんじゃない?
↓こんな感じで描写していた複数のオブジェクトにイベント処理の追加を行い 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); } 略 クリックした座標を一つのクラスに返すにはどうしたらいいのでしょうか? 最初は継承を利用すればいいのかと思ってたのですが、複数の親クラスができて、 そこにそれぞれ値が返る結果になってしまいました。 すいませんが教えてもらえないでしょうか。
>クリックした座標を一つのクラスに返すにはどうしたらいいのでしょうか? もっと詳しく。意味がわからん。
SunのWebからJ2SE1.4の日本語のJavaDocダウンロードできたんだけど、これのhtmlじゃなくてxml版ありますか?
>>513 ぐぐればいくつかdocletが見つかるから自分で生成すること。
ただし日本語コメントが埋め込まれたソースが必要なので、それは
mergedocかなんか使って事前に準備しておくこと。
>>514 お答えありがとう。
でもdocletもmergedocも何も知らない自分。
これからググって勉強します。Sunとかは用意してくれてないのか。
>>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));
略
ここで、クリックして選択されたオブジェクト名を上記のリスナークラスからのある特定のクラスに持っていくということがしたいのですが・・
いろいろ知識がなくてすいません、これで意味が通じるでしょうか・・・
リスナークラスのクラス変数に,ある特定のクラスのインスタンス持たせてsetするだけだと思うが。
521 :
デフォルトの名無しさん :05/01/05 01:15:41
Java5に追加されたAutoBoxing/Unboxingなんですが、 僕は解説を読んだ時点ではなんとなくC++で言うところの演算子のオーバーロード が記述できるようになったという解釈をしていたのですが、 実際にいじってみたところ、どうもint/Integerやlong/Longといった特定の クラスと型の間でしか使用できないように思えます。 実際のところ、このAutoBoxing/Unboxingという機能は、これらの特定の 型に決め打ちでコンパイラに実装されているものなのでしょうか? 要は自分で作ったクラスに、「intで解釈されようとしたときにどう解釈されるべきか」 を記述してそれが自動的に呼び出されるような機能を実装できるのか、ということです。 Integerクラスのソースなど見てみましたが、特に変わったインターフェースを 実装しているように思えなかったのです・・・・・ この辺の事情に詳しい方いらっしゃいますか?
ラッパクラス←→基本データ型 程度の物だろう。しかしこれだけでも今までからしたら便利
523 :
デフォルトの名無しさん :05/01/05 01:43:40
>>519 まぁ便利になったのは事実だと思うんですが、
実際にコンパイラを作る側の感覚としては、コンパイラが
クラスライブラリの特定のクラスに依存するように作るというのは
それなりに抵抗感があるもんじゃないかと思うのです。
Java作ってる人たちって、あんまりそういう感覚ないんですかねぇ・・・
僕からしてみると、Javaのクラスライブラリ作ってる人は、コンパイラ作ってる
人から特別待遇されているようでなんかずるい感じ。
コンパイラってクラスライブラリからは中立であるべきだと思うのですが。
基本データ型は決まった物しかないじゃない やまない雨は無いじゃない カロリーハーフでいいじゃない
基本データ型とラッパクラスは、クラスライブラリというより言語仕様の一部じゃないの?
>620 それを言ったら、Stringクラスなんて最初から特別扱いですが何か。
>>525 ボケるにしてももっと近い番号にしてくれ
530 :
デフォルトの名無しさん :05/01/05 02:02:36
>>521 基本データ型は有限ですが、僕が記述するクラスをその基本データ型に自動的に
相互変換する機能が実装できないように思えるところが気になっているのです。
Java付属のクラスライブラリにはできるのに。
>>522 >>518 にあるように
> 要は自分で作ったクラスに、「intで解釈されようとしたときにどう解釈されるべきか」
>を記述してそれが自動的に呼び出されるような機能を実装できるのか、ということです。
が可能なら僕としては満足なのです。
C++は演算子のオーバーロードをすることでこれが可能になっていて、
一般的なクラスライブラリの多くがこの機能を使っていますし、僕自身が書くクラスにも
Java5でいうところのAutoBoxing/Unboxingが実装できるようになっています。
コンパイラから見ればMFCもSTLも僕が書いたクラスも完全に等価です。
>コンパイラってクラスライブラリからは中立であるべきだと思うのですが。
というのはそういうことです。
>>527 じゃあがんばってJava開発チームの一員になってくれ。
1.0のころからExceptionやThreadのような言語仕様に密着したクラスがある。
533 :
518 :05/01/05 02:08:23
>>525 まぁそうなんですよね。
Stringの連結がStringBuilderに自動的に展開されたりするのもそういうものですね。
Javaはコンパイラ作っている会社がクラスライブラリも提供しているので、
「これもアリ」と認知されているのだと思います。
これはJavaの長所とも言えるでしょうが、ナンダカナァ・・・という感じもしますね。
534 :
518 :05/01/05 02:12:04
>>530 間違えた。StringBufferっすね。
5ではStringBuilderになってるんじゃなかったか。
536 :
518 :05/01/05 02:16:44
>>532 どうなんでしょうか・・・僕も調べたわけじゃないですが、
自動的に展開されてしまう文字列の連結がスレッドセーフでないというのは
ちょっとヤバイと思うので、"AAA" + "BBB" はJava5でもStringBufferに
展開されるのではないかと思うのですが。
>自動的に展開されてしまう文字列の連結がスレッドセーフでないというのは >ちょっとヤバイと思うので スレッドセーフでなくても単一スレッドからしか 操作しなければ問題ないのにバカじゃねーの? >コンパイラってクラスライブラリからは中立であるべきだと思うのですが。 どうでもいいがauto boxing/unboxingはStringの扱いと同じく 「言語仕様」ですのでお間違えのないよう。 intをオブジェクトとして扱う文脈ではクラスライブラリの中のIntegerなどとして 扱うように「コンパイラを実装しなければならない」ので。 >Javaはコンパイラ作っている会社がクラスライブラリも提供しているので、 >「これもアリ」と認知されているのだと思います。 何度も言ってるように言語仕様ですから。Sun製だけでなくIBM製、 その他のものでも関係ありませんから。 >僕は解説を読んだ時点ではなんとなくC++で言うところの演算子のオーバーロード >が記述できるようになったという解釈をしていたのですが、 そもそもこの解釈が大間違いですから。
会社で嫌なことでもあったの?
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 としています。 それでもデータベース側から読み込むと文字化けしてしまうのです。 (サーブレットから書き込む事はできます。) どうか対策法を教えてくださいませ。
以下雑文。
俺は C から Java 覚えた口なので、言語仕様が特定のクラスに依存しているのに
違和感を感じた。これは
>>518 が感じた疑問と同じものかもしれない。
しかしやってみればその方が便利で自然。ObjectやExceptionって便利だよね?
オブジェクト指向言語の仕様ってのはこれでいいと思う。
C++ みたいに C に後付けしてオブジェクト指向を入れる形で言語設計するよりもいいかな。
演算子オーバロードについては功罪共に語られているけど、
JCPでは罪の方を重く見たということなんでしょう。
この辺はTigerリリース前にさんざん語られたので、割愛。
こういう質問ありなのかどうかわかりませんが JAVAってお給料いいですか?
>>538 板違い。情シス板か、プログラマ板に行け。以上。
Javaを使う側ですか? Javaを作る側ですか?
サンプルのStylepadってやつはSwingで作られてるんですか なんかやけに軽く感じますがどうでしょうか
>>542 そんなもん。
軽い Swingアプリは起動も(JBuilderとかNetBeansとかEclipseとかみたいな重量級アプリよりは)早いし。
>>542 Swingですよ。
起動してしまえばそんなに重く感じないんだよね、ガリガリ画面書き換える訳じゃないし。
自動箱詰め/取り出しという意味しかないのに 518が勝手な解釈で過剰な期待をしただけに見える。
SwingのJDialogのタイトルバーに最大化ボタン・最小化ボタン を表示させるにはどうすればいいのでしょうか? どなたかご存知の方教えてください。
そんな事したら僕とJFrameの違いがますますなくなっちゃうよ・・・・ お願い。最大化と最小化は使わないで・・・
>>547 確かに最小化ボタンは必要ないんですが
最大化ボタンだけはどうしても便利機能として付けておきたいんです。
何か方法はないでしょうか・・・(T_T)
逆にJFrameでモーダル化出来る方法があれば、そちらでも構わないのですが・・・。
>>505 嘘臭えな。
>>487 と同じが
>>487 と同類の考え方しかできない奴だろ。
「分割し、統治せよ」という鉄則が恰好つけるためにやっていると勘違いしとるとはな。
奴は「一般」の基準もいい加減。
>>487 は依存度を下げることの意味もわかってない。
クラスを何のために分割しているかもわからずに
<<487のソースコードはすべての処理を全部一つのクラス、メソッドに
まとめてしまう汚いコードを書いてしまっているんだろうな。
>>518 autoboxingは演算子のオーバーロードとは関係ねえよアフォ
554 :
デフォルトの名無しさん :05/01/05 12:41:02
>>520 >
>>519 > まぁ便利になったのは事実だと思うんですが、
> 実際にコンパイラを作る側の感覚としては、コンパイラが
> クラスライブラリの特定のクラスに依存するように作るというのは
> それなりに抵抗感があるもんじゃないかと思うのです。
>
> Java作ってる人たちって、あんまりそういう感覚ないんですかねぇ・・・
>
> 僕からしてみると、Javaのクラスライブラリ作ってる人は、コンパイラ作ってる
> 人から特別待遇されているようでなんかずるい感じ。
文句があるならJCPに何か提案するか自分でJakartaのようなAPIを作れ
> コンパイラってクラスライブラリからは中立であるべきだと思うのですが。
お前にとっての「中立」の定義とはなんぞや。はっきりしろや。
中立の定義がコンパイラに関係なくクラスライブラリを作れるということなら
とっくに「中立」状態にあるわけだしお前が不満に思うことは何も無いわけだが。
Jakarta Projectのコントリビュータになるなり、
自分でAPIを作って公開してしまえばいい。
それをずるいなんぞ餓鬼みたにぶーぶー文句たれてる奴は
何もしていないのに批判ばかりしているバカ学生と同類。
>>527 >
>>521 > 基本データ型は有限ですが、僕が記述するクラスをその基本データ型に自動的に
> 相互変換する機能が実装できないように思えるところが気になっているのです。
> Java付属のクラスライブラリにはできるのに。
そもそもプリミティブ型の自作に拘ることがアフォだ。
そんなにプリミティブ型自作したい変換したいならC#でもやっとけ。
だがそういう機能は便利だが副作用も大きくコードが煩雑になる。
実際に使って経験を積んでみればわかることだが、
お前の考え方には落とし穴があり、
綺麗なコードを書きやすい言語と汚いコードを書きやすい言語との
違いが現れてくることがわかってくるだろう。
>
>>522 >
>>518 にあるように
> > 要は自分で作ったクラスに、「intで解釈されようとしたときにどう解釈されるべきか」
> >を記述してそれが自動的に呼び出されるような機能を実装できるのか、ということです。
そういうことはクラス同士だけにしておけ。
オブジェクト指向の利点をよくわかっているならintなどのプリミティブ型の問題点に
気づくはずだ。
> C++は演算子のオーバーロードをすることでこれが可能になっていて、
演算子オーバーロードの問題点は検索して調べてみろ。
言っておくと、大概のお前の不満はC#を使えば解消されることばかりだ。
文句があるならJavaを使わずにC#を使え。
556 :
デフォルトの名無しさん :05/01/05 13:33:43
ファイルダウンロードについて質問があります。 JSPにてファイル一覧が表示され、そのファイル名のリンクをクリックすると、 onclickのwindow.openにてダウンロードボタンを含む子画面を表示させてい ます。その子画面内でダウンロードを行った場合、ファイル名が適切に設定 されず、『FileDownloadc23bebaa』のようなファイル名でファイルが作成 されてしまいます。(ファイル内容はあっています。) 子画面にてダウンロード機能を実装する場合に、ファイル名が設定できない 現象というのはあるのでしょうか?
>>548 WindowStateListenerとWindowクラスのtoFront()、toBack()を使えばできるんじゃない?
めんどくさそうだけど
558 :
デフォルトの名無しさん :05/01/05 15:25:45
質問でーす。 アプレットをつくり(JApplet)その中にいろいろとコンポーネントをはめ込みました。 それらのコンポーネントはJPanelを継承して作った自作のコンポーネントです。 基底のアプレットはカードレイアウトです。カードレイアウト二枚目の自作パネルに 自作コンポーネントとJButtonをはめ込みました。 ここでJButtonが押されたら、基底アプレットのconnectメソッドを呼びだしたいの ですが、うまくいきません。コンパイルの時点で基底アプレット.connect()が見つ かりませんとなります。 それぞれの自作コンポーネントには、作成時にそのつど引数で基底アプレットを 渡しているのですが、そこから基底アプレット.connect()ではメソッドを呼び出せ ず間違いのようです。 こういった場合、どのようにすればいいのでしょうか? オタスケーm(_ _)m
>>555 インスタンス変数の宣言がこうなっているのなら
private JApplet applet;
型を、connectメソッドを持つ自作アプレットの型に変更する。例えばこう。
private MyBaseApplet applet;
560 :
555 :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("インしたお!");
}
}
(つづく)
561 :
555 :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
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に処理の開始を要求するだけにすれば、 レイアウトやコンテナを受け取る必要は無くなる。
相変わらず低レベルなクズが多いな、このスレは。
564 :
555 :05/01/05 16:21:12
あああああああ! あ・り・が・と・う・ご・ざ・い・ま・し・た! でけた!ヒャッホウ(・∀・) アドバイスいただいたとおり、connectメソッド内でカードレイアウトの 処理もまとめるようにしました。 ホントにありがとうございました!
>>560 まあ、スレタイにもある通り「初心者大歓迎」ですからね。
Javaの初心者に限らず、いろんな初心者が来てますね。
>>560 と、低レベルなクズの代表者が書き込んでるわけですな
なんで560が「質問者がクズ」という趣旨だと思うんだ? なんで回答者がクズ呼ばわりされているとは思わないんだ?
569 :
デフォルトの名無しさん :05/01/05 17:21:27
>>565 どこに「質問者がクズ」という趣旨だと思っている書き込みが?
文盲が来ました。 誰か567を流してください。
572 :
デフォルトの名無しさん :05/01/05 22:04:26
ここはウジ虫の溜まり場かよ(´∇`)ケラケラ
なんか必死な香具師がいるな (・∀・) ニヤニヤ
>>570 =567
そういうところがバカにされる原因なんだよ
自分のことじゃないと思ったら無視しとけ ヴォケ
576 :
デフォルトの名無しさん :05/01/05 22:37:15
FAQを見てもそれらしきものがなかったのですが既出でしたら申し訳ありません。 PCを新しくしたところ、IEでJavaアプレットが実行できなくなってしまいました。 インターネットオプションで確認したところ、IEにはJava2 v1.4.2_05が入っているようなのですが・・・ 原因としてはどのような事が考えられますでしょうか。
Java2 v1.4.2_05が入っているから
そこのアドレス教えてみ
>>573 Microsoftのjavaでないと動かないのがある
581 :
デフォルトの名無しさん :05/01/05 22:42:00
>>574 どういうことでしょうか?
>>575 他のPCでは見られるのでその新しいPCの設定の問題だと思われます。
はやく06にしないと危ない
583 :
デフォルトの名無しさん :05/01/05 22:43:07
>>577 今まではSunのVMで正常に動作していました。
新しいPCでは動作しないのです・・・
>>580 答えがほしいはずなのに何故自分の環境詳しく書かないの?
情報があればあるほど答えが返ってくる確率が上がると言う
当たり前のことが何故わからないの?
>>581 スレタイに初心者って書いてあるししょうがないんじゃない。
でもここはム板だから無視したい気分。
じゃあどこだったら相手にしてくれるのさ? すぐ作りますから
587 :
デフォルトの名無しさん :05/01/05 22:53:30
>>581 申し訳ありません・・・
どこをお伝えすればいいかわからないもので。
実はPCを新しくしたのは知人なので自分のものではないので詳しい使用はわかりません。
ただ、VAIOのノートであったのは確かです。
また、実行を試したアプレットの開発バージョンはv1.4.2_01でした。
他に何を書けばよいでしょうかね?
釣りか?自分の環境の調べ方もわからないでプログラムやってんの?
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で実行できないのです。
あまり余計な情報を事を書くと混乱するかと思って最初には書きませんでした。
「何らかのメソッド」の中でnewを呼んでインスタンスを作って、それをメソッドの戻り値として 返してる。
593 :
573 :05/01/05 23:10:12
Javaアプレットが実行できない環境では、今まではJREを最新にすれば大体実行できるようになったのですが・・・ アプレットが実行できない原因はJVM以外にある場合もあるのでしょうか。
さらに言えばStringのstaticメソッドの中でね
NullPointerException nullpo() { return new NullPointerException(); }
>開発したのは私 こんなやつでも開発できるのか。
597 :
デフォルトの名無しさん :05/01/05 23:15:03
>>589 Stringクラスのメソッドの中自体でStringクラスのインスタンスを作成して、
その値を返しているということでいいのでしょうか?
うーん。むずかしいですね。
>>590 アプレットでどんなことをやってるのかも書いとけば?
俺はアプレット使ったこと無いからわからないけど
釣れるなあ。すでに573の目の前に問題のノートがない以上、 なにいったって無駄なのはあきらかなのだが。
トップページにアプレット置いてるサイトほど鬱陶しいものは無いな
うざ度 BGM>アプレット>Flash>JavaScript>クッキー>糞でかい画像
>>597 Javaなら知らない環境で動かされるのも不思議ではないだろう
>>507 ありがとうございます。
機種依存するか、使い物にならないぐらい遅いか、という感じなんですね。
色々考えてみます・・・
417で質問した者です。 みなさんのおかげで今回のシステムで大まかに必要な 機能だけつけた雛形のプログラム2つの内が1つ出来ました。予定より遅くなってしまいましたが、 初めてプログラムが動いた時のように嬉しいです。 これでなんとか周りのプログラマーについていけそうな気がしてきました。ありがとうございました。
606 :
573 :05/01/06 00:31:40
>>593 趣味で作った程度なので開発というと大げさかも知れませんね。
>>595 内容は単なるパズルみたいなものなのですが・・・
私が作った物以外の他のJavaアプレットの動作もできないみたいなので問題はPCかIEにあるような気がします。
IEでアプレットを実行する場合に気を付けなければいけない設定とかがあるのでしょうかね?
>>597 釣ってはいないですよ。
確かに今この場で頂いたご意見をすぐに試すことはできないのですが、
後日それを元に再設定したいと思っています。
なんだろう。 一昨年の年末、よく似たやりとりがあったような気がする…… デジャ・ブか。
ユーザーエージェント偽装してたらアプレット動かないよ
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]; とかでやってみてはいかが。
>>606 >new ClassDoc[]
コンパイルエラーだと思うが。
宣言時に初期化している場合はそのエラーは出ないはず。
中途半端に省略せずに、ちゃんと貼り付けてみな。
「初期化されていない可能性があります」は、宣言だけして
一度も代入されてない変数を参照した時のみ出るはず。
ローカル変数意外だと、finalなインスタンス変数の問題かも。
>>607 これは適当に大きな数を入れてるてことでしょうか?
例えば配列で int a[]; と宣言しておけば、
for(int i=0 , i<b.size ;i++)
a[i]=1;
なんて感じで、b.sizeが可変でも対応できますよね?
要素数が不明というか可変て感じです。
こういう感じでつかえないのでしょうか?
>>609 そういう時は
int[] a = new int[b.size];
とする。
アホだ・・・b.lengthだよ寝ぼけてるなオレ(;´д`)
>>611 寝ぼけてるんじゃなくて、元々頭が悪いんだよ。早く気づいてよかったね。
616 :
デフォルトの名無しさん :05/01/06 04:50:18
初歩的な質問ですいません、初心者なもので、 コンパイルソフトはどこで手に入れればいいですか?
sunのホムペ
Java覚えたら、まず初めに何を作ればいいんですか?
HelloWorld
class Hello public static void main(String args[]){ System.out.println("HelloWorld"); } }
失礼します javaのチェック例外と非チェック例外のそれぞれの一覧リストみたいなのってありますか?
>>618 java.lang.Errorは非チェック
java.lang.Exceptionは基本的にチェック
ただし子クラスの
java.lang.RuntimeExceptionおよびその子クラスは非チェック。
以上。
>>619 ありがとうございます
lang.errorとlang.ExceptionってAPI仕様の例外の概要とエラーの概要にそれぞれ該当しますよね
前からこの二つの違いについても疑問に思っていたんですが
これはチェック例外と非チェック例外の違いという事でいいんでしょうか?
>>620 errorはエラー。アプリケーション中でハンドリングしてはいけない・できない。
Exceptionは例外。Javaアプリケーション中でcatchして例外発生時の処理を実装可能。
>>621 揚げ足取りの様でスマンが、
java.lang.Errorに対する例外処理は「できない」のではなく「すべきでない」だけだぞ。
発生したとしても、状況を考えればできることは限られるが。
またまた失礼します 例外処理には例外が発生したらその場で処理する方法とスロー宣言を用いて 冷害が発生したら呼び出し側メソッドで処理してもらう二つの方法がありますよね 後者の方のメリットって何ですか? 自分の中ではtry文中のコードが長いと時にコードが見やすくなるかな と思っているんですが他にもありますか?
>>625 前者だと例外が発生したのか、正常終了したのか、呼び出しもとで判断できない。
>>625 自分のルーチンで処理しきれない例外を呼び出し元に投げて処理してもらう
>>626-627 すいません、もうちょっと噛み砕いて説明してくれませんか?
>>626 rhrows使わなくても例外が発生したら例外処理されるので判断は出来ると思うのですが・・・
最後の元に投げて処理してもらうというのがイマイチ
>>627 >自分のルーチンで処理しきれない例外
例えばどんな例外ですか?
>>628 呼び出しもとでは、その先で事故ったのか正常にコトが進んだのかがわからないだろ?
例えば、Servletからデータベース検索処理を呼び出したとする。
検索が正常終了したら検索結果の表示、
データベース障害が発生したら「ただいまシステム障害のため、ご利用になれません」
みたいなエラー画面の表示をしたいとする。
ところが、データベースアクセス周りで発生した例外をcatchしてしまうと呼び出し元のServletでは
障害が発生したのか、検索が正常に終了したのか判断できないだろ?
検索結果一覧画面を表示していいのかシステムエラー画面を表示していいのかわからないだろ?
呼び出し元のServletまでthrowしてServletでcatchすれば、
Servletでは「この型の例外が発生したらこのエラー画面でこのメッセージを表示」
「例外が発生しなければこの画面を表示」のような処理分岐ができる。
>>629 なんとなくですがイメージは掴めました
でもServlet、データベースについては詳しく解らないのでダメですね
もうちょっと勉強してこういう状況に当たった時にあなたのアドバイスを思い出し
throwについて考えてみたいと思います
有難うございました
>>630 この問題はお前には対処できないから、先輩のところへ上げろ(throws)
先輩でも無理だと判断したら、先輩はそのまた上司に上げるから。
上司は大きな問題をそれなりに対処してくれるはずだ。
自分で対処すべき問題は、お前がちゃんと処理しろよ(catchして処理)
全部先輩に上げると、先輩は「そんな細かいことまで俺が知るか!」って困るからな。
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のアドレスを記述すると、 二分割画面のまま遷移してしまいます。
>>634 JSP,Servlet以前の話じゃないか。
<a href="login.jsp" target="top">ログアウト</a>
じゃダメなのか?
639 :
634 :05/01/06 14:41:58
>>635 さん
ご返答ありがとうございます。
logoutServlet.javaにて、不要なセッションオブジェクトなどを破棄させてから
ログイン画面に遷移させたいと思っていました。
ですが、ログイン画面で不要なセッションオブジェクトを保持している
場合に削除すれば良いですね・・・。ありがとうございます。
Stringクラスって何故にnew演算子を使わなくても大丈夫なの? API見てもクラスメソッドではないのにね これはjavaの仕様で決まってることですか?
642 :
デフォルトの名無しさん :05/01/06 15:21:20
643 :
デフォルトの名無しさん :05/01/06 17:00:59
サーブレットで HttpServlet.getServletContext().getRequestDispatcher と HttpServletRequest.getServletContext().getRequestDispatcher はどうちがうの?
>>640 相対パスを指定できるか、コンテキスト相対パスのみを指定できるかの違い
645 :
デフォルトの名無しさん :05/01/06 17:11:24
646 :
デフォルトの名無しさん :05/01/06 17:30:04
指令行の引数に正の整数 n を指定すると, 2^0, 2^(-1), 2^(-2), ..., 2^(-n) を順に各行に出力していくプログラムを作ってください。 n が大きな値になっても,小数点以下100桁までほ正確に結果を出力するようにしてください。 すいませんが、教えてもらえませんでしょうか?
つい先ほどからJavaを始めた初心者です。 helloworldをコンパイルして、DOS上で >java helloworld を実行して上手く実行できたのですが、 エクスプローラでjavaのフォルダを見てみるとhelloworld.exeがありません。 javaはそういったものなのでしょうか? 実行ファイルは無いのでしょうか?
実行ファイルはjava.exeだ。
>>644 Excelのマクロのようなものと思えばいい。
EXCEL.EXEを実行してHelloWorld.xlsを開くと、マクロが実行される。
それと同じように、java.exeを実行してHelloWorld.classを開くと、Javaアプリケーションが実行される。
>>645-647 dです。
さっきからちょこちょこいじってるんですが、
JAVAってCよりも簡単な感じですね。
ありがとうございました。
また一人新たなJava厨誕生のオカン
PHP厨の一人もここで引き取ってもらえないかな(w
Javaには変態さが足りない
J2SE 1.4 と 5.0 の共存は可能なのでしょうか? 可能であれば何か注意することなどあれば教えてください。
>>652 可能かどうかは、どのように共存させたいのかによる。
ある数(3.55など小数点以下もある数)の整数部分だけを取り出すメソッド ってないでしょうか?Mathクラスなど検索したのですが見つからない(;´ρ`)
(int)3.55
>>654 >Mathクラスなど検索したのですが見つからない
あやまれ!floorにあやまれ!(AA略
〈 ドモッ、スミマセン>floor 〈 スミマセンスミマセン...。 〈 コノトオリデス! ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ (´Д`;)ヾ (;´Д`) ヾ ∨) ( 八) (´Д`;)、 (( 〉 〉 ノノZ乙
教えてください。 jSpinner.((DateEditor)getEditor()).getTextField().setDocument(new SampleTextDocument()); こんな感じで、setDocumentに独自のDocumentクラスを設定しているのですが insertStringメソッドが呼ばれずに、困っています。 原因とかわかる方、いらっしゃらないでしょうか。
Javaで 「現在読み入力中である。」というのは判断可能ですか? ※IME起動し、ヨミガナが未確定の状態か否か 可能でしたら実装方法教えてください。 よろしくおながいします。
664 :
デフォルトの名無しさん :05/01/07 13:02:54
をしえてください。 String配列を格納したListがあります。 そのList中のString[0]を取り出すにはどうすればよいのですか?????
665 :
デフォルトの名無しさん :05/01/07 13:05:05
>>661 です。
Listの1番目のString[0]です。かさねてよろ。
667 :
デフォルトの名無しさん :05/01/07 13:15:26
>>663 はやいですねぇ!
ありがとうございました。感謝!
>>660 ありがとーございます。
InputMethodListenerのinputMethodTextChangedで
getText()を呼びだし、
nullか否かの判断で読み入力中か否か(キャンセルor確定済み)
判断つきそうです。
助かりますた♪
Linuxにeclipse入れたいけどイマイチ踏ん切りがつかん。 あんまりLinuxの使い方わからないしなぁ。 でも勉強のために入れようかなぁ。。。
LinuxにEclipseを入れる勉強したいなら入れれば?
EclipseならWindowsでも動くから、無理してLinux使わなくてもEclipse使ってみたいだけなら 取敢えずはWindows版を入れてみたら。
672 :
デフォルトの名無しさん :05/01/07 18:42:38
教えていただきたいことがありまふ。 Timer(本当はなんでもいいのですが)を使って、 一般的なタイマーを作りたいのです。 それで、途中でストップさせるようなことはできるでしょうか。 そのストップの合図というのは、いつくるのか、わからない、という かんじなのですが。 (他のクラスのメンバ変数を見させて命令するようなかんじ) しかも、ひとつのクラスでたくさんのタイマーをつくるみたいな。 わかりにくいでしょうか。 おねがいします。
TimerのAPIにかいてあること void cancel()というメソッド 現在スケジュールされているタスクを破棄して、このタイマーを終了します。 複数のTimerは Timer t1 = new Timer(); Timer t2 = new Timer(); これで2つのTimerができます これでいいですか?
わるいTimer勘違いしてた javax.swing.Timerの方だよね? こっちだったら public void stop() Timer を停止し、リスナーへのアクションイベントの送信を停止します。 というメソッドがある 複数生成は Timer t1 = new Timer(1000,this); Timer t2 = new Timer(1000,this); 第二引数は適当に変えてもいいよ とすればできます
677 :
デフォルトの名無しさん :05/01/08 00:07:23
javaのドキュメントには、そのクラスなどの使い方は載ってますか?見てみたんですがよくわかりませんでした。 どのようにみればいいのですか?
>674 詳しく載ってるのもある(大概、メンバ一覧表の前にだーっと説明がある)が、 基本的に「リファレンスマニュアル」というものなので、使い方まで書いてあるのは少ない。 それはそれとして、Webなり本なりの解説を見た方が、「使い方」を覚えるには良いかと。
かなりの初心者な質問なんですが・・
サーブレットの実行についてなのですが
環境
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エラーでページが表示されません。
何か設定が足りていないのでしょうか?
どなたか教えてください。よろしくお願いします。
がっくし
Calendar myCalen=new myCalen(); カレンダーオブジェクト作ろうとしたら具象で無いみたいなエラーが出ました 抽象クラスもオブジェクト作れるはずなのにwhy?
そいつは初耳だな
Calendar myCalen=new Calendar(); でねーの?
>>681 かまって下さい
>>684 間違えた・・・でもダメです
Calendar myclnd=new Calendar();
エラー
java.lang.Error: コンパイル問題が未解決です。
Calender は解決できないか、型ではありません。
型 Calendar は具象クラスでないため、そのインスタンスを生成できません。
at testUtil.main(testUtil.java:33)
Exception in thread "main"
getInstanceメソッド使わないとダメなのでしょうか?
タイム、未だ突っ込まないで下さい 少々お待ち
エラー java.lang.Error: コンパイル問題が未解決です。 型 Calendar は具象クラスでないため、そのインスタンスを生成できません。 at testUtil.main(testUtil.java:33) Exception in thread "main"
>>679 デプロイ場所が違うし、デプロイに必要なものも足りないし、手順も足りない。
メールや掲示板じゃ伝えきれない量なので、本でも買って勉強すべし。
>>688 > getInstanceメソッド使わないとダメなのでしょうか?
普通はそうする。
自分でCalendarのサブクラスを作っても良いが。
protected Calendar(); コンストラクタは protected ダヨ
入れ子クラスって何ですか? 例:Component.FlipBufferStrategyはクラス java.awt.Componentの入れ子クラス FlipBufferStrategyクラスはComponentクラスを普通に継承してるんですか? また、Componentクラスを継承しているAppletクラスは FlipBufferStrategyクラスも継承していると考えていいんでしょうか?
>>693 > 入れ子クラスって何ですか?
クラス内で宣言されたクラス。継承とは関係ない。
class Outer { class Inner {} }
Inner は入れ子クラス。メンバークラスとも呼ばれる。
少し意味が違うがインナークラスとも呼ばれる。
>>694 レスどうもです
>クラス内で宣言されたクラス
なるほどそんなのがあるんですね。クラスの中はフィールドとメソッドだけだと思ってました
話し戻りますが、継承とは関係なくAppletクラスを継承したクラスから
FlipBufferStrategyクラスのメソッドは使えるんですか?
> Appletクラスを継承したクラスからFlipBufferStrategyクラスのメソッドは使えるんですか? 使える。 ただし、FlipBufferStrategy を使うアプレットは 1.4以降で追加されたクラスを使ってるので InternetExplorer標準だった 1.1 レベルの MSJVM や 1.3 の古い Sun のJavaプラグインでは動作しない。
700 :
初心者ですみません :05/01/08 11:37:31
Windowsベースのアプリケーションをつくりたいのですが、 やはり高価なJBuilder等を使用するしか方法は無いのでしょうか? 今、Eclipseを使って勉強をしているのですが、どうもエディター としての使い道しか無い気がします。 コレをどの様に使えばアプリが作れるのでしょうか?
>>697 そのエディターだけでもGUIアプリは作成可能だ。
GUIデザインをマウスでポトペタ風にやりたいならばVisualEditorプラグインを使えば、
JBuilderのように、GUIアプリのデザインも可能。
だが、JBuilderとは違った使い勝手であるし、(GUIのデザインに関しては)JBuilderほど親切ではないと思う。
702 :
デフォルトの名無しさん :05/01/08 11:49:34
配列は配列をメソッドに渡すときは参照渡しだと思うのですが、 メソッドから配列をreturnしたときは、値渡しになるのでしょうか?
>>699 return したときも参照渡しだ
値渡ししたければ、return (Type[])array.clone() だ
>>698 でもさ、とってつけたようなポトベタのフォームのUIなんざ、
死んだようなソフトだよね。しっかりレイアウト使えと。
705 :
デフォルトの名無しさん :05/01/08 12:19:16
>>700 私がが持っている本には、メソッド内で宣言した配列を平気でreturnしているのですが…
スタックから解放されるはずなのに、どないなっとんでしょ
706 :
702 :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]); } } }
>>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には「参照渡し」は無い。「参照値」を「値渡し」する。
どう違うのか、さっぱり分からん・・・。
もっかい本引っ張り出して勉強し直さんと(鬱
>>708 void method(int[] array){ array = null; }
int[] a = new int[0];
method(a);
みたいなコードがある場合、
「参照渡し」する場合は a が null になる。
「参照値」を「値渡し」する場合は a は変化しない。
(aは要素数0の配列のインスタンスへの参照値を保持しつづける)
Javaでは、「参照渡し」はなく「参照値」を「値渡し」する と言う方が正しいって意見はナンセンス。 多くのJava参考書で「参照渡しする」と書いてあるのだから 「参照渡し」の表現を使っても別に間違いではない。 参照変数でなく変数の実体から見れば、参照渡しされてるの だからね。俺は参考書の呼び方に従う。
>>711 Javaに限った話ではないんですが。
単に参考書が間違っているだけ。
昔C++ができる前、Cで「参照渡し」といっていたものが今でも使われている
(というか参考書を書いてる人間が昔の言い方を引きずっている)だけ。
本来参照渡しというのはfortranのような渡し方を言う。
C++ではそういう渡し方ができるようになったので
昔参照渡しと間違って呼んでいたものは「参照値の値渡し」に改められ、
本来の「参照渡し」と区別するようになった。
わざわざJavaで、Cの昔の混乱を再現する必要はない。
Javaのは明らかに参照渡しではないのだから。
716 :
デフォルトの名無しさん :05/01/08 16:14:06
jfreechartを使いたいんですが、 ライブラリの使い方を詳しく書いたwebとかないですか?
>>713 ちょっとググればザクザク出てきますが。
その議論はもういいって
_____________( | \ | // / ̄ ̄ \ ズン \乂八 へ |//| (([]匚●二])) ∧ ズン | \ | | \|/ |ゝ| ̄ ̄|7 (((((曰)))))/ ヽ> | ) | |\ \ / | ____ |=_ ) 丿 ι( || | ― き ― | |II II II II II|(〇 /◆く丿ヽ/ / ) | | | ― た ― |()⌒| ̄\/_/へ / | ι ( 丿 | ― ぁ ― |人(ξ厂1、巛《丿ー′ | ι ( // ― ! ― | L「 \ | | \/ イ / \ | /|| \◎ || ||\ | 丿人 / |\ | / || || | ̄| || || | \ )  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ ん  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ / ____ / ̄ ̄ ̄ ̄ ̄ ̄
>>713 あ、おれドキュメント買ったよ。
でも、内容はヒ・ミ・ツ!
721 :
デフォルトの名無しさん :05/01/08 19:38:52
>>712 おっしゃっている事がよくわからないので、具体例を示して私たちに教えてください。
>>712 ではありませんが。
>>718 Javaの変数には「プリミティブ型」と「参照型」があります。
「プリミティブ型」はbyte,short,boolean等で実際に値がはいります。
「参照型」の変数に格納されるのは、オブジェクトそのものではない。
格納されるのは「オブジェクトへの参照(オブジェクトリファレンス)」
「参照」とは「オブジェクトがメモリ中のどこに存在するか(オブジェクトの
のアドレス)」を知らせる情報のこと。
「参照」はいわゆる「ポインタ」に似ている。
プログラマは参照型変数に実際にどのような値が入っているか知る必要は
ありません。
Head First Javaより
Classは全て参照型です。
Javaには、C++とちがって、参照以外でオブジェクトにアクセスする方法はない。 このせいで「参照=オブジェクト」と思っている人頻発で、「参照を渡すんなら参照渡し だろが!」という勘違いくんが続発している。
>>721 別に勘違いしててもいいよ。どの言語にしても最初は騙し騙し教えるわけだし。
それに最初に教えるよりも自分で後でおかしいことに気づいた方がいいって
いきなり真実を教えても初心者は混乱するだけです
参照を渡すんなら参照渡しだろが!
>>723 一応ウケタってことにしといてあげるよ。
Javaでは、メソッドに「値を渡す」といいます。 メソッドに渡す値のことを「引数」あるいは「パラメータ」と呼びます。 Javaでは、引数として指定された値がすべて「コピー」されて メッソドに渡されます。(これを「値渡し」といいます) 値は「ビットのパターン」がコピーされて渡されます。 プリミティブ型の変数の値は、数値や文字です。 参照型の変数の値は、「オブジェクトの存在場所」 を知らせる情報(アドレス)です。
もしかして、ぬるぽは実体がないのではなくて、アドレスがないということですか?
アドレスがないというのがどういう意味か不明瞭ですが 変数がどの実体とも結びつけられていないという意味ならそのとおりです。 # ちなみに言語仕様的にはnullはプリミティブ型でも参照型でもない # null型という特別な型の値ということになってます。
型(type) 型はプリミティブ型と参照型に大別でき,プリミティブ型には整数型(byte, short, int, long), 浮動小数点数型(float, double),真偽値型(boolean),Unicode形式の文字型(char)が用意されており, 参照型にはクラス型,インタフェース型,配列型が用意されている。 null型(null type) nullリテラルが表す値の型。 例 Object o = null; nullがリテラルです。
mainのあるクラスでActionListenerをimplementsしてあったら、 別のクラスでActionListenerは使えませんか? 実行したら、ウィンドウが立ち上がってメニューを選択すると 新しいウィンドウを立ち上げて、そのウィンドウにボタンとかでイベントを 追加したい、という仕様なのですが・・・。 ちなみに、新しいウィンドウの方はmainとは別のクラスで作っています。
>>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で宣言しなくてはならないのでしょうか? 調べてもコレだ!!という情報がないので質問させていただきました。よろしくおねがいします。
>>705 OKOK,叩かれなくて良かったよ。
ソース晒すの久しぶりだから叩かれないか少し不安だったんだ。
良くも悪くも2chだからね。
ハッΣ(゜ロ゜〃) まさかどこかで叩かれてるとか…
まぁ何にせよ参考になったのなら幸いだわ。
んじゃ、ファイル消しておくべさ
クラスの再利用についての質問なんですが、よくクラスは再利用や改変されることを 念頭に置けって言われますよね。でも具体的にはどういう感じに整理しておくのが一般的なのでしょうか? 例えばProjectAとかいうパッケージでHogeというクラスのfoo()というpublicなメソッドを 作ったとして、後々にProjectBというパッケージ内でfooを再利用したいとすると、fooはどのようにして 保存され、再利用されるべきでしょうか? ProjectB内にfooを利用するための新しいクラスを作ってそこにfooを再定義するとか、 Hoge.javaを丸ごとProjectB内にコピーしてくるとか、またはそもそもMyToolsとかいうパッケージを 別に定義して、そこにMyTools.Tool.foo()のような感じで、fooを定義しておいて、 MyTools.jarに固めて、ProjectAもProjectBもMyTools.Toolをインポートして使うとか、 色々考えられると思うのですが…。
>>734 質問の主題と付随する例示の関連が薄いのでどちらに答えてあげるべきかわからんが。
主題の方は再利用される事を念頭に置いて書かなくてもプロジェクトを複数こなす間に
何度か似たようなクラスが頻出する経験をするはずで、そういう時に過去のコードをリファクタリング
して行くことで汎用性のあるインターフェースを持ったクラスができあがる。
そのようなクラスをまとめて意味のあるパッケージとする事でチームが共有するライブラリができる。
そのようなライブラリはライブラリ単体のプロジェクトとして管理するようになる。
例を上げてもらった状況下を2つの性格の似たプロジェクトが同時進行すると仮定してみると
共有部分をライブラリ管理のプロジェクトとして取り上げ、成果物をMyTools.jarとしてA,B両プロジェクトで利用する。
自分の経験から言えば2つのプロジェクトで使われるライブラリを最初から作成するよりも
複数のプロジェクトを経て生き残った共通性に着眼したクラス群の方が寿命は長い。
[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ファイルを自動生成するコマンドラインツールない?
>>736 echoとsedで出来るレベルだから、自分ならちょっとしたシェルスクリプト
組んで終わりだな。
>>734 Hogeクラスのfoo()を使いたいところで、
import ProjectA.Hoge;
ってすればいいんでないの?
742 :
デフォルトの名無しさん :05/01/09 14:13:32
>>731 の補足です。
クラスの場合は,
String s = "MyClass";
Object obj = Class.forName(s).newInstance();
という感じで,クラスを間接的に参照できますが,これと同じようなことを
変数でやりたいんですが,できないでしょうか?
>>739 フィールドならリフレクションでとってこれそうだが
>>739 局所変数は基本的に無理。
クラスフィールドやらインスタンスフィールドは
java.lang.Class の getField() とかで
java.lang.reflect.Field のインスタンスを取ってきて
int型のフィールドだったら getInt(Object) と setInt(Object, int) でアクセスできる。
745 :
デフォルトの名無しさん :05/01/09 15:29:16
㋀㏨ ゔ〲〰 ゔ〲〲〰〰 ゔ〲〰 ゔ〲〰 ゔ〲〰ゔ 〲〰ゔ 〲〰ゔ〲〲〰ゔゔ 〳〵ヷヷヷヷ〰〰〰〳〵ヷヷヷヷ〰〰〰〳〵ヷヷヷヷ〰〰〰 (♛Д)(*゜∀゜)〜♡ℳℴℯ❤ℒℴνℯ..._〆(゜▽゜*)㌰㌰ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ (・∀・)/ヾ~~╋┓!㋦㋸㋭° |壁|」゜ρ゜)」 ノ ヽ``〜 力㋦㋸㋭° / ⌒ヽ / ´_ゝ`) 荒れてますね、 β α κ α にはコピペできませんよ・・・ | / | /| | // | | U .U ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠ ☠
>>732 > この場合、Familyクラスの内部のフィールドをいじる事に対しても、一貫性が保障されるんで
> しょうか?
調べたわけではないのだが、それは無理だろう。
というか、そんなことをなぜする必要が?
747 :
デフォルトの名無しさん :05/01/09 16:24:05
>>741 たびたびすみません。
> int型のフィールドだったら getInt(Object) と setInt(Object, int) でアクセスできる。
この引数の Object は何を指定するんでしょう?
わざわざポカーン( ゚Д゚) なんて、幼稚なコピペする事ないでしょ。 いい年して。だから周りからガキっぽいって言われるんですよ。 身に覚えがあるでしょう。 真面目に聞いてるので誰か教えてください。
行き詰まったから気分転換に再び登場
>>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() でいけそうに
思うのですが、引数を要求されます。
なんか根本的にわかってないんだと思うんですが、どこがおかしいか指摘してもらえませんか。
お願いします。
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
昔戦車の戦闘ロジックを作って戦わせる(うろ覚え)のがあったとおもうんだけど、 あれってどうなったんですか? 同じようなものはまだありますか?
ロボコードのこと? 後継のゲームがまた始まってた気がする。
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をやるにしたがってどんなことに注意したらいいですか?
後継といえばコードラリーやカブロボのことか?
>>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")); で読めるようになるのはいいのですが、 波ダッシュ「〜」は「??」となってしまいます。 その他の日本語は正しく表示されるのですが…。 どうすればよいのでしょうか。 ぐぐってみても具体的な解決方法って無くって…。 よろ。
ときどきプログラムを実行すると # # 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 # というエラーが出ます。再起動すれば直るのですがこのエラーが出る原因をご存知ないでしょうか?
>>732 synchronizedキワードを使ったほうがよくありませんか。
volatile修飾子が言語仕様どうり実装されていない実行環境があるそうですよ。
また、インスタンス変数はprivateにしてセッター、ゲッターメッソドで
アクセスしたほうがよいです。
でも、なにか特別にpublic にする必要があったらゴメン。
>>761 VMがコケてる。
VMのバージョンをいろいろ変えてみるか、
落ちる原因となっているコードを変えて回避するしかない。
それか不安定なJNIコード使ってる、ってとこだろ。
>>760 一番簡単な解決策は、
出力するときにMS932やWindows-31Jを使わずに、Shift_JISを使う。
質問なのですが、javax.servlet.*とjavax.servlet.http.*がインポートできませんというエラーになってしまいます。 本に載っているリストをうつしたのですが、コンパイルできません。 どなたか助けてくださいm(_ _)m
>>765 servlet.jar にCLASS_PATHが通ってないんだろう。
本に載ってるはずだからその通りにやりなさいな。
「PATH」、「CLASSPATH」の「環境変数」は正しく設定されていますか?
>>767 初心者に環境変数でCLASSPATHを設定することを教えるんじゃねぇ!
最低限でもjavac の -classpath オプション。
その先は ant や IDE だ。
>>768 うるせーハゲ
お前みたいなヲタばかりじゃないんだから
いちいち -classpath xxx\xxxx\xxx.jar;yyy\xxxx\xxx.jar;. なんてちまちま打ってられるか
ここにゃ臭いオタと厨房しかいないな
775 :
デフォルトの名無しさん :05/01/10 10:29:45
synchoronized (A){} で囲まれたカッコ内とかAのクラスのsynchronizedメソッドを実行するためには Aさんの心(モニター)をゲットしないと実行できないという解釈でよろしいですか? また、普通のメソッドやフィールド(もちろんpublic等)はとくにAさんの心(モニター)をゲットしなくても実行できる(たとえよそのスレッドがAのsynchronizedメソッドを実行中でも)という解釈でよろしいですか? あと、「ロックを獲得する」と「モニターを獲得する」は同じ意味ですか?
776 :
デフォルトの名無しさん :05/01/10 11:03:42
javaプログラマーの職業っていいの? 給料とか、やりがいとか、どうですか?
最新の環境を試そうと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
>>769 ビルド用のバッチファイルかシェルスクリプト使えよ。
分かってきたらantに移行しろ。
>>763 なんでコケてるんだろう・・・1.5使ってからときどき出るようになったような
>>774 >>761 ですが同じエラーが出ます。Mavenってのは知りませんがJDKは1.5使ってます。
再起動すればたいてい直るんですがどうでしょう?
>>772 >あと、「ロックを獲得する」と「モニターを獲得する」は同じ意味ですか?
基本的には同じと考えていいが、
あるスレッドがロックを獲得しているときに
同じスレッドが同じロックを獲得しようとするとデッドロックに陥る。
一方モニターを獲得しているときに同じモニターを獲得しようとしてもデッドロックに陥らない。
その意味ではJavaのsynchronizedはロックではなくモニター。
ただJ2SE5.0で導入されたLockクラス関係は
ロックだが同じスレッドが再獲得可能なロックもあったはず。
このスレでよく出てくる「正規表現」をみなさんはどこで修得しましたか?
>>780 unixユーザなので普段から使っておりました。
最初はgrep、次がviでかな。
イマドキだとperlあたりの本からじゃないかな?
>>779 Lock系もいろいろあるし、セマフォやカウントアップバリアとか
各種FIFOとかJ2SE5.0の一番の売りは目立たないが
この辺の制御のしやすさなんじゃないかと思う
組み込み系を意識しているのかね
1.4.2までせっせと作っていたのがばからしくなる
必要なクラスパスは アプリケーションによってそれぞれ違うし コンパイル時と実行時でも違う。 環境変数なんかに設定するのは糞。
>>783 APサーバの実装なんかにも便利じゃない?
スレッドプールの実装も持ってるしさ。
オプソ系のAPサーバってプール系のコードが
バギーなこと多いから、その辺が改善されそう。
他にも、NIOと組み合わせたプロデューサ/コンシューマ
パターンを実装しやすくもなってるね。
スレ違いスマソ
>>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++;とかいうコードがアトミックにならないと書いてあって、青ざめました(汗。
>>788 staticメソッドとnon-staticメソッドがそれぞれ
synchronized修飾されているとする。この場合
staticメソッドの方はメソッド内でsynchronized(this.getClass()) {・・・}とするのと同じ。
non-staticメソッドの方はメソッド内でsynchronized(this) {・・・}とするのと同じ。
モニターを獲得するオブジェクトが異なるんだから同時に実行される
可能性があるのはあたりまえ。
>>773 つまらん仕事多い。コンソール系ばっか。
やりがい感じたければC++でテトリスでも作ってた方がいい。
>>790 訂正
staticメソッドでthisはないな。Hogeクラスのstaticメソッドだとしたら
synchronized(Hoge.class) {・・・}と読み替えてください。
%JAVA_HOME%\jre\lib\ext ってディレクトリはどのようなjarファイルを入れる為につかうべきでしょうか?
799 :
デフォルトの名無しさん :05/01/10 18:29:44
参加するぜよ。
800 :
デフォルトの名無しさん :05/01/10 18:32:53
Javaの例外系に詳しい人いますか?
>>761 何をやってるときにでるかはわかるんじゃない?
原因はわからなくてもどこででるかを調べてみたら?
環境変数を知ってから作業が楽になったのを 憶えています。 Javaでも「PATH」と「CLASSPATH」という2つの「環境変数」は重要な意味を持っています。 ないがしろにしない方がよいとおもいます。 しかし、その時々で自分が便利な方を使い分けましょう。
>>793 自分で作ったjarファイル。
自分が管理しやすければ何でもかまわない。
>>777 最初の質問者はJavaに初めてふれた方だと思います。
黒帯ではなく白帯ですから、最初は柔軟体操から。
808 :
デフォルトの名無しさん :05/01/10 21:21:10
>>798 このスレでいう詳しい人とは、
ろくな実務経験も実績もないのに、本だけ読んで勘違いしてるような人。
>>805 投げる、つかむ、処分する、とか言いたくなるような漠然とした質問にはつっこまないのかよ〜
イヤミの好きな人は気の毒な人と思ってみるか、 退屈しのぎにたのしむか。 何でもいいけど人々が生活しているなと思うか。 反応がないとサビシ〜。 しかしどうせ賑やかにしたいなら、楽しくなるほうの 書き込みがいい。 その人が本からだろうと、実務の体験からだろうが、 教えてくれればありがたい。
>>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カラムに画像データが書き込めるのか教えてくださいませ。
>>808 コピペを知らないお前は負け組
Eclipse使ってラクチンの俺は勝ち組
>>810 とっくの昔から私はEclipse使ってますが、
勝ち負けにはこだわりません。
勝ったの負けたのクダラナイ、クダラナイ。
>>810 ホント「コピペ」ってムズカシー。
Googleで勉強してくら。
>>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型なのに・・・
>>816 整数型の四則演算はオペランドをintに変換した後に行われるから。言語仕様。
byte ans = (byte(a + b - c + d);
でおけ
821 :
デフォルトの名無しさん :05/01/10 23:35:32
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なのになぜこうなるのでしょうか? 連投すみません
丸め誤差について勉強しろ
丸め誤差? 初めて聞いた・・・
浮動小数点は言語以前の電子計算機概論レベルの話だからなぁ
ま、小数点以下の計算をちゃんとやりたきゃBigDecimal使え
丸め誤差ってjavaにも関係してくるから、知っといたほうがいいですか?
829 :
デフォルトの名無しさん :05/01/11 00:27:26
ありがとうございます。しらべてきます
>>810 同じコピペでも、
Eclipse使ってコピペのプログラムは最低だぜ!!
板のコピペはいいけど。
831 :
デフォルトの名無しさん :05/01/11 04:20:17
>>829 即レス、ありがとうございます。
なるほど。構文規則に従って式を評価していくと、
チュートリアルに書いてある優先順位に従って、
計算したことになるわけですね。
どうも、ありがとうございました!
>>828 ,829
真面目なのを見ると、
くだらない書き込みをしているとはづかしくなる。
ドカタ言語Java 負け組専用言語
836 :
デフォルトの名無しさん :05/01/11 06:46:26
「はづかしくなる」とか書くバカでも、Javaで得意になってるのをみると、はずかしくなる。
private static Hoge getHoge(Hoge[] hoges) { 処理; return hoge; } のようなメソッドを使いたいんですが、 Hoge hoge = getHoge(hogeList.toArray()); のようにすると、hogeList.toArray()はObject[]ですからコンパイル時にはねられますよね けど、(Hoge[])(hogeList.toArray())のように配列→配列のキャストもできませんよね こういう場合はどうやってHoge[]を作るのがベターなのでしょうか?
書き忘れ hogeListはListです
hoge だの hage だの まだ使ってる時代錯誤がいるんだ・・・
int nHoges = hogeList.size(); Hoge[] tmpHoges = new Hoge[nHoges] ; System.arraycoypy(hogeList.toArray(), 0, tmpHoges, 0, nHoges) ; こんなかんじでどうだろう。
>>834 public Object[] toArray(Object[] a)
アプレットを作ってサイトに載せようとしたのですが、コンパイルをして生成されたclassファイルの中に、名前に $ が入っているものがあったのでアップロードできませんでした 生成されるclassファイルの名前に $ が入らないようにすることはできないのでしょうか できないのなら、 $ がファイル名に入っていてもアップロードできるサーバはないのでしょうか よろしくおねがいします
>>841 実にアホだなあ。
勝手に自分で都合のいいように解釈して
で、どうすりゃいいのよ?
なぜ?841で解決すると思うけど。 そもそもクラス名にかってに$をつけるときって、ひとつの ソースファイルに二つ以上クラスがあるとき? 別ファイルにすればいいのでは。
>>844 あ、そうか$つきのファイルって、1ファイルに複数クラス入れたらできるんだ・・・無名クラスに限らないんだった。
めったにしないから忘れてた
>>845 staticメンバクラスや他のインナークラスとかは無視ですか?
>>834 Hoge hoge = getHoge((Hoge[])hogeList.toArray(new Hoge[hogeList.size()]));
>>846 public class Hoge { class InHoge {} }
class Fuga {}
という2行のHoge.javaをコンパイルしてみよう。
てか自演でしょ
質問に質問で返すのは感心しない
>>852 その質問の意図は?
別に理由なんていいじゃん
なんでも聞けば答えるのが当然と勘違いしてるのがいるな
男「おい、おまえのパンツ何色だ?」 女「なんでそんな事聞くんですか?」 男「質問に質問で返すのは感心しないな。別に理由なんていいだろ。」
パンツの色は重要だろ
もしかしてパンツフェチ?
内容:
質問です。
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の桁まで認識させるというのは無理なのでしょうか。
>>862 java.textパッケージ以下のFormat関連を調べるんや!
>グラフ生成するメソッドにはdoubleで渡す必要がある とある以上、そのライブラリに手を加えない限り、どうしようもないんじゃない?
>>862 軸にはNumberFormatを指定する事ができるみたいだけど
Eclipseかなにかで作っているならNumberFormat指定して参照箇所を探してみることできないですか?
ウィンドウを出してそこに部品を配置したのですが、ウィンドウサイズを変更されると 微妙なレイアウトが崩れてしまいます。そこで、ウィンドウサイズを変更できないようにする 方法があれば教えてください
windowFrameObject.setResizable(false)で大きさ変更不可になりまっせ。
ソースコードをフォルダごとカウントしてくれるステップカウンタってないかな?
>>768 おや? Mavenを忘れていないか?
MAVEN_REPOだろ
>>774 見覚えのあるメッセージだ。
多分おそらくMavenとは全く関係ないだろう。
Javaを再インストールしたほうがよさげな気がする。
>>868 Runtimeクラスで かくディレクトリ毎にwc -lを実行。
jarにまとめたらうpできました ちゃんと動きました! 皆さんありがとうございます!
JavaからUSBおよびRS-232Cを使うプログラムを作っているんですが、 JUSB、Java Comminucation APIを使えば、出来るというのはわかったんですが、 使い方がわかりません。誰か、お教え願います。
>>869 こういうところで躓く段階なら、在ってもいいじゃないかとか思う機能は大抵存在するのでjavadocを検索する癖を付けるといいよ。
今回ならresizeで検索していれば見つかったはずだから。
jUSB と Java Communication API の使い方はわかっているのですが、
>>877 にわかるように説明する方法がわかりません。誰か、お教え願います。
自作でアプレット作成中に質問だ出てきたのでお願いします 1 ボタンを配列のようにできるのか(たとえば同じ働きをするボタンをfor文などで何個か作るなど) 2 1ができる場合配置(add(btn);)などを(btnはボタンの名前とする)for文で何個も配置させれるか 3 アプレットを表示する場所の横の最大より先に表示を次の行にいくことはできるのか (ボタンが10個横に表示できる状況でボタンの大きさを変えずに3個表示して次の行(高さを変える)に3個表示することができるか) この3個ができるといろいろやりやすくなると思ってできるのか気になり質問します わかるかたお願いします
>>880 1:できる
2:普通だ
3:GridBagLayout使え
>>881 すいません
javaの本は一通り読んだんですがよくわからなかったので
えっとできるということはintの配列などと同じやり方でいいのでしょうか?
2もforを使って配列の番号を変えていけばadd(btn[x])みたいな感じでできるのでしょうか?
最後のは言葉を教えてもらったので自分で調べてみたいと思います
詳しく教えていただきたいです
お願いします
>>883 同じボタンのインスタンスを複数出したいってのならできない。
1を読んで配列にボタンインスタンスを入れたいと受け取ったのでボタンもオブジェクトだから配列要素にできると答えた
2は配列の参照をforループで解決したいと見たのだが違うのか?
つか日本語で書いてあるんだけど情報の欠落があるんで答えにくいよ。
わかりにくくてすいません なにぶん初心者でどう説明したらいいかわからなくて・・・ 僕がやりたいことを言います 1は押したボタンに表示する文字を1回押したら1と表示2回なら2と表示させたいを 10個作りたいとします そうした場合プログラムを減らすために配列を使ってfor文でボタンを作れたら便利だなぁと思ってたわけです 2もやりたいことは同じで配列でボタンを作れたらadd(btn);とかの部分もfor文を使ってまとめれるかを聞きたかったわけです ・・・ん〜説明ってむずいですねTT
>>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);
}
↑こんなループでボタンは作れる。
わざわざプログラムをありがとうございます わからない部分を質問させてください ボタンを作ってる部分はわかるのですが配列にしてる場所がよくわかりません 僕の勉強不足かもしれませんが見てみるとbuttonというボタンを10個作っているように見えて ほかのところのプログラムから何番目のボタンというようには呼び出せないのですか? 起動しようといろいろ試してもエラー(for文のところ)が出てしまいできません
連続投稿すいません 僕のイメージではほんとにintの配列と同じように int[5] (5は配列の数)のようにボタンも作れないかなぁ?と思ってるわけです こんなやり方でボタンを作ることはできないでしょうか?
// これインスタンス変数として定義(意味ないよ 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); }
わざわざ僕の希望したように書き直していただきありがとうございます buttonArray がボタンの配列に必要とみてよろしいんでしょうか? それがあってるならば僕が考えていたこともできそうです いろいろありがとうございました
ImageをBufferedImageに変換する方法があればご教授願いたい
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のコードを書いて動かしてみても、 いまひとつ確信が持てません。
日本語の入力できないTextFieldはどうやれば作れるのでしょうか? KeyEventを拾えばいいのかと思ったのですが、どうも日本語だけは 制限できません。 英数での文字数制限、英文字の入力禁止(数字は可能)などは出来たのですが。
JAVA5入れてみたけど、サイズが小さくなってるね。1.42に比べて1/3くらいに
>>850 俺と同類のバカ類がいた。
仲良くしよう同じバカ類同士。
基地外同士仲良くやってくれ(出来れば別スレで)
今頃粘着レスかよ・・・
905 :
デフォルトの名無しさん :05/01/12 17:06:44
これからJAVAを勉強しようと思うんですが、 開発ツールやコンテナの種類が多すぎて何がよいのか わかりません。 そこで質問なんですが、皆さんはどんな環境がBESTだと 思いますか? 答えにくい質問ですみませんが、適当に教えて下さい。 あとは調べますんで、よろしくお願いします。
> そこで質問なんですが、皆さんはどんな環境がBESTだと > 思いますか? そんなもんない。スキル・要件・要求による。
とりあえず流行り物を選んでおけば、困った時に聞ける人が多い分楽そうな気がする。 「JDEE使ってるんですが・・・」といって質問するより 「エディタ+JDKでやってるんですが」とか「Eclipse使ってるんですが」の方が 答えてくれる人が多いと思う。
908 :
デフォルトの名無しさん :05/01/12 17:30:10
「スタートボタンを押したら音楽が鳴る」ということをしたいのですが、 うまくできません。 java.Applet.AudioClipをimportして、 AudioClip audを宣言。 initの中で aud=getAudioClip(getDocumentBase(),"ongaku.au"); aud.play(); としてます。 コンパイル時にエラーは出ないのですが、 実際にボタンを押したときに固まってしまいます。 (コンソール画面に何かでてます) 初心者で見当違いのことをいってるかもしれませんが、 どうすれば音楽を鳴らせるのでしょうか? よろしくお願いします。
"test"をtestではなくて"test"を文字列とし認識させることはできるのでしょうか? String a = ""test""では当然無理なので。。よろしくお願いします。
String a = "\"test\""
>>906 String a = "\"test\"";
>>908 ありがとうございます。とても助かりました。
(;`Д´)・・・・・
蝉コロンで区切る
918 :
デフォルトの名無しさん :05/01/12 18:41:00
配列を動的確保したく、要素はchar型にしたいのですが、 java.util.Vector の addElement(java.lang.Object) は (char) に適用できません。 と表示されてしまいます。 これは、char型要素の場合は動的確保できないという意味なのでしょうか?
>>915 プリミティブ型の配列動的確保はできない
ラッパークラスでくるめ
>>916 でもJ2SE5だとすんなりとおるし
そのあとはなんか配列より遅いんですがとか出てきそうな予感
Java初心者にかかせてみたら予想通りというか
しらないうちにボクシングしていて低速動作したのみたもんでね
95%の場面でint[]とArrayList<Integer>の速度差は問題にならないだろう。
>>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は捨てろ
>>915 jakarta commons の primitives に
org.apache.commons.collections.primitives.ArrayCharList がある。
>>919 詳しい説明も無しに Vector 捨てろって言うのはやめろ。
無条件に捨ててもかまわない。
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」(秀丸で確認) です。 対処方法をご存知の方がいらっしゃいましたら、ご教授願います。
この板を「Eclipse」で検索かけてごらん。うんこまみれ
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ではないのか?(でもここにコピーしてもだめだった)。 助けてえらいひと。
>>921-922 こーゆー奴らが費用対効果の薄いリファクタリングとかして悦に入るんだろうな。
>>926 ArrayListよりVectorを使った方が良い場面なんか既に存在しない。
お前みたいな奴がVectorは同期が云々とか言い出すんだろうなあ。
まぁふつうにつかってるよ Swingでな まぁJ2SE5でStringBufferつかってるのとおなじくらいあふぉなことだし
printlnってなんてよむのでしょうか? プリントルンって読んでいましたがいいのでしょうか?
プリントランだと思う 俺も聞いた事無いから知らないけど
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 の欠点を少し列挙してもらえないでしょうか。お願いします。
(1) 「Vectorは同期化されているからスレッドセーフだぜ!」というどうしようもない馬鹿の台詞を誤って信じてしまいがち。 (2) (1)によってスレッドセーフでない危険なコードを量産してしまいがち。 (3) メソッド名が長い・重複していて無駄。 (4) 古くてダサい。頭が悪そうに見える。 (5) ArrayListに対してメリットが無い。 (6) 原理的にArrayListよりも遅いことになっている。
(7) 全く無駄な同期処理(synchronized)がすべてのメソッドについてまわる。
>>930 私は print line の省略だと思っていたのでプリントラインと読んでます。
940 :
デフォルトの名無しさん :05/01/13 07:02:52
>>930 プリントラインの省略だから読み方はプリントイン
プリンティンでいいじゃない
Javaアプレットで使用されるJDKのバージョンって 何によって(どこの設定、定義で)決まるもんなんでしょうか? JAVA_HOMEですかねぇ? 何が知りたいかというと、 HTMLごとに、異なるJDKを使用するアプレットって 作れるのかなと思ったので。。 すみませんが、よろしくおながいします。
プリンティンはぐぐるといいぞ
947 :
デフォルトの名無しさん :05/01/13 13:08:22
ある周波数の音を発生させるにはどのように書けばいいですか? (例えば20Hzの音とか、1000Hzの音とか) サンプルでもいいので教えていただけるとありがたいです。 よろしくお願いします。
>>941 ありがとうございます!
ちょっと試してみようかと思ったのですが、、、
いまさら、JDK1.3系のJavaPluginって
どこかで落とせたりするんですかねぇ??
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 なんですが… どなたかミスの指摘をお願いします。
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)ってどこかで提供してるかな?
ひょっとして.jarはCLASSPATHに絶対パスで指定しないと だめなの?
最近元氣ないSqrt君
>>949 commons-httpclient.jarをどこに置いた?
それだとTest.javaと同じディレクトリに置かないといけないのでは?
>>953 ,954
なんとなくわかってきました。
set classpath=.;commons-httpclient.jar
とやってコンパイルしたら逝けました。トンクス
>>946 ありがとうございますた。
無事、落とせますた。
>>948 そうです!
一応、必要なネタは揃ったと思われるので
いろいろ試してみたいと思います。
また何か分からないことあったら
聞くかもしれませんが。。。(*´д`*)
>>948 そのようですね。ご指摘ありがとうございます。
>>956 微妙にズレた回答すみませんでした。
961 :
初心者 :05/01/13 17:39:32
これからJAVAを始めたいのですが、どういった参考書を買えばよいのか迷っています。 どのような本がBESTなのか、できれば具体的に教えてください。 基本情報技術者試験午後問題の対策になるような本をお願いします。
Brows:KDDI-SA31 UP.Browser/6.2.0.7.3.129(GUI)MMP/2.0
>>957 いえいえ。
おしえていただいたリンクから、
自分が知りたかったこととか
辿れましたから。
助かりましたよ。
今後ともよろしくです。
966 :
デフォルトの名無しさん :05/01/13 18:30:54
あるメソッドの中に synchronized(myvector){ //いろいろ } (ただしmyvectorはVectorクラスのインスタンス) というコードがあったのですが、これって意味があるのでしょうか? ArrayListのインスタンスなら同期化されないと聞くので、意味があると思うのですが、 Vectorクラスは同期化されると聞きます。 どうなんでしょうか?
一メソッドは同期化されてる が、それが問題ないかというとそうでもない せいぜいマルチスレッドによって違うデータを取得するということがなくなるという程度 スレッドが違うと同じ変数を使ったところでオブジェクトが一致しないということがあるからね DBしっていてトランザクションがなぜ必要かとかその辺わからないと 実感はしにくいかもしれない
968 :
HttpClientの質問 :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となっている点が引っかかっています。 しかし、だからどうする的な話が分かりません...。
補足です。 >この後client.executeMethod()で送信されるPOST これは、ログイン後の書き込み処理に相当します。 POSTの結果、「まだログインしていません」という内容がサーバから返されます。 恐らくは、ログイン用クッキーが送信されていないため、 未ログインとみなされてしまうのではないか、と推測しています。
自己レスです。以下の二つの暫定対処をしたところ、書き込みに成功しました。 ○その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 :
デフォルトの名無しさん :
05/01/13 22:16:57 以下は十進数の 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です。と表示されるようにしたいわけです。