【初心者】Java質問・相談スレッド95【大歓迎】
1 :
デフォルトの名無しさん :
2006/12/11(月) 14:00:52 過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
前スレッド
【初心者】Java質問・相談スレッド94【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1164057114/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc5.2ch.net/hp/ 次スレは
>>980 あたりで。
2ゲット禁止
4様
なんか今日javaアップデートなるものがあり、 実行したら空ループ(数秒間固まらせる目的)がとてつもなく遅くなったんだけど、何が起きたん?
空ループじゃなくてThread.sleep()とか使いなよ
6 :
デフォルトの名無しさん :2006/12/11(月) 23:51:46
Javaで複数結果の帰ってくるselect文のストアドプロシージャ(オラクル)をよんで ResultSetに入れようとしています。 オラクルのストアドはselect文が書けないので、カーソルを返すしかないのでしょうか? また、カーソルをストアドに宣言するとエラーになります。 パッケージの宣言句に書くと大丈夫でした。 これはオラクルの決まりなのでしょうか? よろしくお願いします。
------------- private string key=null; public void test0{ test1(); test2(); } public void test1{ URL url = new URL(親ページ); URLConnection uc = url.openConnection(); key=uc.getHeaderField("Set-Cookie"); } public void test2{ URL url = new URL(子ページ) URLConnection uc = url.openConnection(); uc.setDoOutput(true); uc.setRequestProperty("Cookie",key); OutputStream os = uc.getOutputStream(); 略)・・・・ページ内容取得 } ------------ 上記の場合に、 IE などで言えば、親ウィンドウが開かれたままの状態、子ウィンドウも開かれている状態 にするには、どのようにすればいいのでしょうか。 親ページの form 情報を子ページが必要としているケースなどを想定しています。
違うかな? java.sql.Statement#getResultSet() java.sql.Statement#getMoreResults(int) java.sql.Statement#getUpdateCount()
9 :
デフォルトの名無しさん :2006/12/12(火) 01:19:38
JavaでUnixに設定している環境変数をキー指定で取得したいのですが、 どうすればいいのでしょうか?
>>4 原因はよく分からんが、JDK1.5.0_10のupdateにかかったんじゃないのか?
JDK6は昨日午後リリースだと思うが、まだupdateにはかかってないよな??
12 :
デフォルトの名無しさん :2006/12/12(火) 02:16:25
助けてください。下のが出てコンパイル出来ないんです。どうしてですか? C:\java>javac Hello.java 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
>>12 ネタかな?
cd c:\java\bin
javac Hello.java ※ Hello.javaのパスをちゃんと指定する事。
やっぱネタだよな。
>>13 > cd c:\java\bin
ってお前こそネタだよな?
15 :
クリスマスは一人 :2006/12/12(火) 02:49:15
cd c:\java\bin だめだ。勝てない。神だ 12はとっととパス通せよ。 環境設定が間違っているんだよ
17 :
デフォルトの名無しさん :2006/12/12(火) 16:14:19
JMenuBarの高さを取得したいのですがどのメソッドを呼べばいいのか分かりません。 下記を試しましたが結果は「0」でした。 JMenuBar.getHeight() JMenuBar.getY() JMenuBar.getBounds().getHeight() JMenuBar.getSize().height JMenuBar.getSize().getHeight() JMenuBar.getVisibleRect().getHeight()
>>17 setVisible(true)の前で呼んでました
逝ってきます
19 :
デフォルトの名無しさん :2006/12/12(火) 19:53:44
20 :
デフォルトの名無しさん :2006/12/12(火) 22:51:40
switch文でcase1とかcase2とかで表すじゃないですか? これを整数を求めるために0以上にしたいんですが、 switch文であらわす方法はありますか?
21 :
sabu :2006/12/12(火) 23:00:30
以下のプログラムを 1、計算クラス 2、表示クラス 3メインクラス になるよう修正してください。 class Test12{ public static void main(String args[])} int c=10; int d=20; int e=30; int sum=0; sum=c+d+e; System.out.println("合計は"+sum+"です"); } } この問題について教えてもらいたいのですが、 1、計算クラス 表示クラス メインクラスというのは何なのでしょうか? クラスは知っているのですが、これはまったく分からないです。 どのように変更すればこの問題の答えは出るのでしょう。 詳しい方宜しくお願いします。
計算するクラス、表示するクラス、mainを持ったクラスのことじゃないか?
23 :
sabu :2006/12/12(火) 23:03:56
ArrayList クラスを使用して5つの要素を追加して、要素を 1つずつ表示させてください。 という問題の答え 分かりましたらお願いします。 大変申し訳ないのですが、宜しくお願いします。
24 :
デフォルトの名無しさん :2006/12/12(火) 23:16:10
>>19 表示位置を変えたいなら x,y の値を更新した後に描き直せ
質問です。 RandomAccessFileのreadLineメソッドを使って ●●.datファイルから読み出した文章を Stringに代入してSystem.out.printlnでDOS窓に表示することはできるのですが それをsetTextでテキストフィールドに表示することが何故かできません。 System.out.printlnで表示した際、たとえばそれが「kznisikoro」という文字列であった場合 「 k z n i s i k o r o」といった風に半角一文字ずつ空白が入るのが少し気にはなっているのですが…。 「 」を0、「k」を1、「 」を2、「z」を3、「 」を4、「n」を5とした場合(datファイル内でのファイルポインタの位置です) try{RandomAccessFile raf=new RandomAccessFile("ac.dat","r"); String rr=""; raf.seek(1); rr=raf.readLine(); System.out.println(rr); Tf.setText(rr); このようにコーディングすると、「k」という文字だけはテキストフィールドに表示されるのですが…。
>>27 setText ってのが AWT だったら、プラットフォームによっては
文字列の中に '\0' があったらそれを終端とみなすかもしらん。
後は、ac.dat の中身を16進のダンプリストにしたり
RandomAccessFile#readLine() でどーゆー風に変換されるか調べてみるぐらいしか。
29 :
デフォルトの名無しさん :2006/12/13(水) 10:49:48
>>28 そこで言う\0とはStringをcharで配置する時に出来る空白(ac.datはwriteCharsで書き込んでいるので、そうだと思うのですが)
>「 k z n i s i k o r o」といった風に半角一文字ずつ空白が入るのが少し気にはなっているのですが…。
>「 」を0、「k」を1、「 」を2、「z」を3、「 」を4、「n」を5とした場合(datファイル内でのファイルポインタの位置です)
ここで言う「 」のことでしょうか?
>setText ってのが AWT だったら、プラットフォームによっては
>後は、ac.dat の中身を16進のダンプリストにしたり
>RandomAccessFile#readLine() でどーゆー風に変換されるか調べてみるぐらいしか。
で、ここらへんで仰ってることに関しては、正直殆ど意味が分かりません。
すいません素人で…。
31 :
デフォルトの名無しさん :2006/12/13(水) 17:03:41
32 :
31 :2006/12/13(水) 17:24:25
あと、複数のbyte[]を1つのbyte[]にする一番良い方法ってなんですかね? 今はbyte[]をリストにつっこんで、最後にループで回しながら結合してます。 理想としては、サイズに気にせずにbyte[]を追加できて、 getByte()とかして、結合したbyte[]が取れるとうれしいんだけど。作るしかないかな。
ByteArrayOutputStreamでいいんじゃ無いか?
>31 HTTPのリクエスト、ブラウザ名とか偽装すれば良いかも? 憶測ですいません byteからByteにしてSystem.arraycopyしたら・・・んん、違うな。 やっぱなんでもない。
35 :
31 :2006/12/13(水) 18:07:38
>>33 こんな簡単な方法が。。。おかげさまであっさりできました。
ByteArrayOutputStreamって、Streamって書いてあったので無視してましたが、
器の役目もあるんですね。
>>34 System.arraycopyでできそうですね。
ByteArrayOutputStreamのソースを見たら、中でarraycopyを使ってました。
classのアクセス制御にpublicとデフォルトがあってprivateがないのは何故なのですか?
誰からもアクセスできない=使えないクラスに用はないから。
public->どこからでもクラスを使える デフォルト->同じパッケージ内でクラスを使える private->同じソースファイル内でクラスを使える こうするのが普通だと思うのですが・・・
39 :
デフォルトの名無しさん :2006/12/13(水) 20:50:58
じゃあお前が提案してそういう言語でも作れば?
>>36 ,38
内部クラスについてはprivateはある。その場合、
>>38 のようなアクセス制御になる。
ただしトップレベルクラスについてはprivateは許されない。その理由は
>>37 のとおり。
今読んでいる本で public static void main(String[] args){ TurtleFrame f; // 1 f = new TurtleFrame(); ... } 1の時点でfにはnullが代入されていると書いてあるのですが本当なのでしょうか? ローカル変数もデフォルト値で初期化されるのでしょうか? 前に読んだ本ではインスタンス変数とstatic変数だけがデフォルト値を持つと書いてありました あと new int[][] {{2,5,4,2},{2,2,4,1},{1,3,4,2}} が4×3の配列と書いてあったのですが、3×4ではないのですか?
>>41 ローカル変数の初期化に関して、あなたは正しい。
そんな本は、書名さらした上で捨ててしまえ。
セッションの管理方式をstatelessにしたビジネスロジックを実装したいのですが、 しかし、ユーザ認証時に認証した事を示すSESSION-IDをどうしても発行・管理をしたいと 考えています。これを、EJB+DBだけで実現する簡単な方法はないでしょうか? DBにUDDIを各ユーザ毎に登録したとして、それの期限をどうやって判定するかとか その辺が頭の中で想像できていないと思ってます。 もし、そんなことじゃなくてこうしやがれボケとか何かあればなんでもいいので教えてください。
配列の方は4×3と言うのであっていますか?
>>41 では配列のサイズは[3][4]になるので
3×4と言うのが正しいというのは違いますか?
この本、まだ40ページくらいしか読んでないけど不安です
45 :
デフォルトの名無しさん :2006/12/13(水) 21:39:55
失礼します。挿入法による整列のJavaのプログラムInsertSortを完成させよ。配列aにデータが入っていて,その個数をnとする。 /* データが1個のときは整列済みと解釈できる */ iを2からnまで,1つずつ増やしながら,以下を繰り返す。 w = a[i-1]とする.jをi-2から0まで以下を繰り返す。もし a[j] > w なら,a[j+1] = a[j]とする。そうでなければ,a[j+1]=wとして,繰り返しを終える。 以下のコードをベースに変更して、挿入法による整列をやってみたんですが、全く能力不足でできません。どなたかヨロシクお願いします。 public class SelectionSort { public static void main(String args[]) { int a[] = {9, 29, 17, 31, 19, 4, 22, 8, 12, 26}; int n = 10; for (int i=n; i>=2; i--) { int k = 0; for (int j=0; j<i; j++) if (a[j] > a[k]) k = j; { int w = a[i-1]; a[i-1] = a[k]; a[k] = w; } } for (int i=0; i<n; i++) System.out.print(a[i]); System.out.println(""); } }
46 :
45 :2006/12/13(水) 21:49:06
一応こんな感じでやってみたんですが、いうまでもなくエラーが出ます。よろしくお願いします。 public class InsertSort { public static void main(String args[]) { int a[] = {9, 29, 17, 31, 19, 4, 22, 8, 12, 26}; int n = 10; for (int i=2; i<=n; i++) { int w = a[i-1]; for (int j=0; j<(i-1); j++) if (a[j]>w){ a[j+1]=a[j]; } else{ a[j+1]=w; } } System.out.print(a[i]); System.out.println(""); } }
48 :
45 :2006/12/13(水) 22:28:06
>>47 そのあたりは調べたんですが、いざ自分でコードを書くと分からなくなってしまって。。。
コード書いていただけませんか?自分勝手ですいません。
50 :
45 :2006/12/13(水) 23:23:51
51 :
45 :2006/12/13(水) 23:25:43
★★ Java の宿題ここで答えます Part 59 ★★で聞く事にします。どうも
ここ数件の質問って全部学生さん? このレベルで質問してたらプロは無理だろ・・・
>>43 最終リクエスト時間をDBにブチ込んで監視とか?
54 :
デフォルトの名無しさん :2006/12/14(木) 17:05:09
g.drawImage()で表示している画像のある一部分にマウスポインタが来た場合に フラグを立てて何か別の処理をしたいのですが、どうすればいいのでしょうか? ググってみたところmouseEnterdとかmouseMovedが使えそうな雰囲気なのですが、 ある区画に入った時点でイベントが発生するような具体的な書き方について悩んでいます。 アプレットに入った時点で、というならmouseEnterd内にそのまま書けば良さそうに思えますが。。。
>>52 高卒のお前は知らんかもしれんが、大学の場合
人文とかの専門外のやつでも一般教養科目としてプログラミングは普通にやるぞ。
マルチな上に 『パソコンの使い方』の範疇の質問するな
>>54 マウスカーソルが動いた時のイベントを拾ってカーソル座標取得
取得した座標が特定範囲内ならフラグを立てる
ってのはどう?
59 :
デフォルトの名無しさん :2006/12/14(木) 17:57:58
JARに動画ファイルを含めて再生させようとすると失敗します。 JARの外に動画ファイルがある場合は問題はないのですが。 要約したソース URL url = getClass().getResource("/resources/test.mpg"); Player player = Manager.createRealizedPlayer(url); Component component = player.getVisualComponent(); 発生した例外 javax.media.NoDataSourceException: Cannot find a DataSource for: jar:file:/C:/java/workspace/aaa/test.jar!/resources/test.mpg JAR内のイメージファイルを読み込んで表示させてみた所、問題なし。
60 :
58 :2006/12/14(木) 18:04:18
>>58 それでいけそうです!何か変に難しく考えていました。
ありがとうございました!
flame上でshowdocumentと同様の動作をするものがありますか?
64 :
デフォルトの名無しさん :2006/12/14(木) 19:02:02
質問があります。 テキストファイルを編集するプログラムを書きたいと思っています。そこでそのファイルを行単位でスキャンして、先頭がある文字列の行だけ書き換えたいのですが、そのようなクラスは用意されているのでしょうか? テキストファイルが10万行とかなので、テンポラリファイルを使用せずに実現したいです。わかる人いらっしゃったら教えてください。お願いします。
>>64 >そのようなクラス
は無いです
普通にシーケンシャルに読んで、行頭チェックして、新規ファイルに
ある文字列のとき:書き替え出力
それ以外:そのまま行出力
66 :
64 :2006/12/14(木) 19:14:23
>>65 ありがとうございます。
なるほど、ということは既存ファイルの書き換えということもできないということですか??
>>66 書き替えもできるけど
その場合は、書き替え後の行が書き替え前の行と同じバイト数でないと意味無いでしょ?
そういう特殊な条件?
68 :
64 :2006/12/14(木) 19:19:50
>>67 ああ、その行だけ削除して新しい行に置き換えるというような操作はできないわけですね?
ありがとうございました。
その行だけ削除ってファイルはいったいどんな状態に…
>>69 その行だけ削除すんでしょ。
次の行の先頭から終端までを、削除される行の先頭にコピーしてファイルの長さを縮める。
テンポラリ使うのと比べて処理時間は凄く遅くなるだろうけど、
ディスクスペースに空きがない、とかなら仕方ないのかも?
×次の行の先頭から終端までを ○次の行の先頭からファイル終端までを
テンポラリをディスクに書き込まなくてもオンメモリでやれば せいぜい10MB程度でしょ
sed でもあれば一行で済むな。
74 :
デフォルトの名無しさん :2006/12/15(金) 04:59:06
drawLineメソッドでCanvasに線をかくことが出来ますが、 その線を点の集合として得るにはどうしたらいいでしょうか?
76 :
hj :2006/12/15(金) 07:48:45
javaのJPSでレーザープリンタでハガキに印刷したいです。 ソフト側で"厚紙指定"みたいにしないとプリンタ側で 印刷がうまく定着しない、とR社の人に言われました。 JPSのserviceUI.printDialogで出てくる印刷ダイアログの、 プリンタ名の横のプロパティボタンが押せれば、OS側の プリンタドライバのプロパティ画面が出ると予想してるの ですが(そこで"厚紙指定"する)、なぜかこいつが無効に なっている。このボタンって、押せるようにならないんですか? PrintRequestAttributeSetで直に"厚紙指定"のようなことは できなさそうなので…。 詳しい人教えてください。
UNIX秒数(例えば1165813252)から年月日時分秒を取り出したいのですが long sec; //秒数が入っている Calendar calendar=Calendar.getInstance(); calendar.setTimeInMillis(sec*1000); とすると setTimeInMillis(long) は java.util.Calendar で protected アクセスされます と言われます。確かにAPI仕様ではprotected voidが返ることになっていますが どうすればこのエラーを回避することができるのでしょうか? というか、もっと楽な方法があったりするのでしょうか? ※すいませんが、iアプリなのでCLDCでお願いいたします
>>77 calendar.setTime(new Date(sec * 1000));
79 :
77 :2006/12/15(金) 14:32:42
>>78 素早い回答ありがとうございます
こんなところにnewを入れるのがjavaの特徴的なところでしょうか
ついでにAPI仕様のコンストラクタにDate(long date)
って書いているけどDate(long millis)とか書いてほしいのは俺だけですか?
> javaの特徴的なところ 詳しくは知らんけど、クラスのサイズ小さくするため、とかで ライブラリ全体を見て重複するメソッドを削ってったらそうなっただけじゃないかね? > Date(long millis) 確かに。BugDatabase に報告してくれたら嬉しい。
何故Javaにはstaticローカル変数がないのですか?
>>82 どうか理由を・・
何か便利なやり方があるのですか?
staticなローカルって、そのクラスの全インスタンスで常に値が保持される変数? それって private static ではだめなんかね? 違いはスコープぐらいしか思いつかないんだけど・・・
85 :
デフォルトの名無しさん :2006/12/15(金) 19:12:14
SunのStudio Enterprise8を使っています。 アプレットをhtmlファイルとしてインターネット上で使用するにはどうしたらいいのでしょうか? ヘルプを読んでもいまいちそれらしい説明がなく…orz
●●はabstractです。インスタンスを生成することはできませんって言われています このエラーの解決方法って分りますか 無茶を言ってすいません
そのクラスを継承してabstractとなっているメソッドを実装する。 classではなくinterfaceである場合は全部がabstractメソッド。
>>89 迅速なレスありがとうございます
interfaceで作っています
全部がabstracメソッド・・・少し詳しく調べてきます
super(); とだけ書いてあるメソッド?は何をしているのでしょうか。 super()というメソッドは、ソースのどこにも定義されていないのです。 そもそも、メソッドならばその前にクラス名が付くと思いますし… Javaのこういうアバウトなところが苦手です。
それは親クラスのコンストラクタだ。全然アバウトじゃない。
>>91 スーパークラスのコンストラクタ。
超基本的な所も調べない貴方が苦手です。
>>91 > super();
> とだけ書いてあるメソッド?は何をしているのでしょうか。
親クラスの引数ゼロ個のコンストラクタを呼んでる。
> Javaのこういうアバウトなところが苦手です。
自分で調べようとせずに、言語の所為にしようと
一生懸命に御託ならべる初心者は苦手です。
java.lang.NoClassDefFoundErrorのエラーを解決出来ません public static void main(String args[]) throws IOExceptionとmainメソッドはおいています コンパイルは出来るのですが 解決のためのアドバイスをどうかお願いします
怯えてないでソースと叩いたコマンドラインを晒してみ。
>>95 クラスが見つからんと言われてるわけだから、クラスパス関連見直すとか、
大文字小文字間違って無いか確認とかしてみたら良いんじゃないだろか?
package private なクラスの main ってOKだっけ?忘れたけど。
意味合いからしてダメな気がする。>package scope
101 :
デフォルトの名無しさん :2006/12/16(土) 01:45:27
くだ質ですがお願いします・・・。 byte配列を決まったサイズにして切り出すにはどうしたら良いのでしょうか。 byte[] trim(byte[] b, int size) { byte[] buf = new byte[size]; if(b.length > size) { System.arraycopy(b, 0, buf, 0, buf.length); } else { System.arraycopy(b, 0, buf, 0, b.length); } return buf; } 入力byte[]が指定サイズより短い場合は0フィルにしたいと思って、 上の用に書いてみたのですが、いささかスマートじゃない気がします。 入力バイトが何バイトかに関わらず、決まった長さのbyte配列を返したいのですが。 Byteクラスにもそれらしきメソッドが無かったので・・・。
102 :
デフォルトの名無しさん :2006/12/16(土) 01:57:16
プログラムをコンパイルしたら、シンボルを解決できませんと いうエラーが大量に出てきました。 これはどうやって解決すれば良いのでしょうか? サンプルプログラムなのでプログラムには問題ないと思うのですが・・・
>>102 コードの一部しかコピーしてないんじゃ?
106 :
デフォルトの名無しさん :2006/12/16(土) 02:20:13
これです。他にもあるのですが全部同じエラーが出ます。 package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class CheckServlet extends ExServlet { public void doExecute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception { String id = super.sessionCheck(request, response); RequestDispatcher dispatcher = request.getRequestDispatcher("/insert.jsp"); dispatcher.forward(request, response); } }
>>106 J2EE入れてる?
J2SEしか入れてないとか?
109 :
デフォルトの名無しさん :2006/12/16(土) 02:35:44
それを入れてコンパイルを実行すれば上記のエラーは解消するのですか?
少なくとも入れなければ解消しない。
111 :
デフォルトの名無しさん :2006/12/16(土) 02:44:49
入れてコンパイルしてみます
112 :
デフォルトの名無しさん :2006/12/16(土) 03:23:54
このコードが通らないんですけどなんでだめなんでしょう。 どなたか教えていただけませんか。 public class Bar<T> { public int Say() { T hoge = new T(); return 1; } }
すいません。かなりレベル違いの質問なんですが、 .javaをワードパッドで関連付けしてしまったんですが、このまま放っておいても大丈夫でしょうか? regeditで、 HKEY_CLASSES_ROOT を探しても、.javaが見つからないんですけど、 JDK(?)を入れて、関連付けしたほうがいいですか? 答えて頂けると助かります。
>>114 好きなエディタで編集すれば良い。
問題ないよ。
>>115 レスありがとうございます。
放っておいていいものか、悩んでました。
すっきりしました。ありがとう。
117 :
デフォルトの名無しさん :2006/12/16(土) 14:26:42
eclipseってjavaで動作しますか?
120 :
117 :2006/12/16(土) 15:36:31
>>118 情報ありがとうございます。
サイトに掲載されているjavaソースは、Eclipseで作成済みで動作を実行
させるだけなのですが、それがうまくいきません。
例えば、Bubblesortを実行させようとしてもsorttestに設定されているエラーメッセージ
が出るだけです。
実行→構成および実行で何か設定をしたりするとか、あるいは、Javaソースを
自分で追加する必要があるんでしょうか。
サイト掲載のソースを使えば、掲載されているAppletのような動きをすると
思ったのですが。うまくいかないので、実行する順序を教えてください。
説明が悪くてすみません。
121 :
118 :2006/12/16(土) 16:18:14
>>120 自分のEclipseは英語版だけど
・ソースを全部ダウンロード
・Fileメニュー->New->Project->Java Projectを選択->Next->Project nameを適当に入力->Finish
・作ったプロジェクトにソースを全部ドラッグ&ドロップ
・Runメニュー->Run->Java Appletを右クリック->New->AppletにSortAppletかSortApplet2を入力->Runボタンを押す
これでできた。
構文解析をして 文字列の "(12 + 2.34) * 11.23e4 / sin(1.2)"等を数式として計算させたいのですが 参考になるサイトや便利なライブラリはありますか?
123 :
118 :2006/12/16(土) 17:05:45
124 :
117 :2006/12/16(土) 17:15:24
>>118 自分のEclipseは日本語版で
実行->実行->サーバーで実行かBeanで実行しか出てきません。
BubbleSortとかでするからでしょうか。
125 :
デフォルトの名無しさん :2006/12/16(土) 18:14:45
Javaの特徴と課題、プログラミングの作成を行う場合に注意したいと考える事項について教えてくださいm(__)m 情報の授業でレポート(A4で2枚程)を書かなければいけないのですが、pcの苦手な私には何を書いたら良いのか分からなくて困っています。 簡単にでも良いのでどなたか教えていただけないでしょうか??
特徴->ミスを犯しにくい 課題->教育的すぎて面白くない.C++のようにもっと変態的にすべき 注意->長時間せず休憩をはさむ
127 :
118 :2006/12/16(土) 18:38:54
>>125 初心者向けのJavaの本でもよめば書いてあると思うよ^^
129 :
118 :2006/12/16(土) 19:54:56
>>125 すまん・・・・分かっているとは思うんだが・・・・
PCが苦手で何故情報に・・・・
理論だけやってきてる人なんてそうそういないと思うんだが・・・
131 :
デフォルトの名無しさん :2006/12/16(土) 20:11:49
125です!! 126さん>>128さん>>129さん ありがとうございます
>>130 その昔、「マスコミ関係に就職したいんです」といって、筑波大学情報学類に入学した強者がいたそうな。
>>132 就職を見据えて大学を選んでいる部分は慧眼だね
その人に情報の適性があったかはともかく・・・・
先読みする能力がプログラムにもいかせられればいい方向に・・・
# 手の付けられないくらいインターフェース定義だけしまくってしまって
# 肝心の実装ができ上がらないと言う状況も想像できる・・・・
125みたいにマルチするやつはどんな道を進んでもいい方向にはいかないよ 人に迷惑をかける前に自ら存在を消すのが人類への最大の貢献だ
メソッド内のローカル変数をActionPerformedに渡す方法って無いですかね。 ボタンを押すと文字列をファイルに出力するようにしたいんですが、 ActionPerformed内にファイル出力の処理を記述するので、どうしてもその文字列がActionPerformedでも必要になります。 問題のメソッド(簡略化 void str(String str) { String s2 = str: } actionPerformedの内容 BufferedWriter writer = null; try { writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(log.log), "SJIS")); writer.write(s2, 0, s2.length()); writer.newLine(); } catch (Exception e) { e.printStackTrace(); } try { if(writer != null) { writer.flush(); writer.close(); } } catch (Exception e) { } 問題のメソッドのs2をActionPerformedからでも呼び出せるようにしたいんですが、無理……ですかね。 良ければ回答おねがいします。
>>135 いずれにせよ str メソッドが呼び出されるとすれば
actionPerformed 内になりそうなんですが。
String str はどこから取得?
質問させてください。 JSpinner spin = new JSpinner(); int i = spin.getValue(); 戻ってくるのがオブジェクトなんで入らないんです。。 どうやって変換すればよろしいのですか?
138 :
135 :2006/12/17(日) 01:16:36
>>136 ごめんなさい、あまりに大雑把でした。
まず、Javaアプレットを使ってチャットもどきのようなものを作成しようと思い、
そのチャットログの保存を目的としています。
String strはチャットのログ自体の文字列で、他のメソッドがサーバーから受け取った情報を渡されています。
メソッドstrはチャットログの「整形と表示」を担当しています。
本来は
void chatLog(name, message) { です。
整形処理は以下のように行っています。
StringBuffer sb = new StringBuffer(name);
sb.append(" > ");
sb.append("\n");
sb.append(chatLogOutput.getText());
String s = sb.toString();
チャットのログがあまり貯まりすぎるとチャット欄再描画の際に重くなるので、
文字列の長さが一定以上になると文字列を削減するようにしています。
ですが、それではチャットログの完全な保存が出来ないため、文字列削減処理の前にstrをs2に保存しています。
String s2 = str;
if(str.length() > 2000)
str = str.substring(0, 1000);
そしてs2を保存する事によって全てのログが保存できる、と考えているのですが、
ActionPerformedからs2を呼び出せないと全てが水の泡になってしまうのです。
どうにかならんでしょうか、という話です。
139 :
137 :2006/12/17(日) 01:23:57
事故解決 toString+Integer.parseInt()
もっそい単純な話、プロパティに持たせようよ。 Swingはイベントキューで同期するからトリガがひとつならそれで問題なし。
141 :
135 :2006/12/17(日) 02:10:13
>>140 仰られていることが十分に理解できていないのですが、すいません、AWTで作っています。
プロパティに持たせるとはどのようにするのでしょうか?
一応ぐぐってプロパティがどういう物かは分かったのですが、これとプログラムを結びつける方法がさっぱり分かりません。
すごく初歩的なことを聞いてるんだと思いますが、よろしければご教示ください。
>>137 =139
それ最悪。
Integerでキャストしろ。
まさに事故解決・・・・
144 :
デフォルトの名無しさん :2006/12/17(日) 08:34:44
add(cb[0])とか追加すればいいんじゃない?
146 :
144 :2006/12/17(日) 09:55:59
サンクスコ!それであっという間に解決しましたorz
>>138 えーと
メッセージの受信スレッドが居てその中で chatLog() が呼ばれてる、って事なのかな。
ActionListener は何を契機に呼び出されるんでしょう?
どうもプログラムの構成がつかめない・・
140氏が言ってるのは
・s2 を保存するための private 変数と、アクセスするための getter/setter を用意する
・chatLog() で setter 経由で s2 を保存する
・actionPerfomed() で getter 経由で s2 を取得する
って事だと思われます。
Generic の↓の違いはなに? ArrayList<String> list1 = new ArrayList(); ArrayList list2 = new ArrayList<String>(); ArrayList<String> list3 = new ArrayList<String>(); 個人的に cast が減ることよりも <String> って書く方が EoD から遠い
149 :
135 :2006/12/17(日) 15:18:57
>>148 俺も最初そう思った。
HashMap<String, ArrayList<HogeHoge>> listMap = new HashMap<String, ArrayList<HogeHoge>>();
とか書いて、「このやたら長い1行はいったい何だ?」と思った。
でも、1度書いてしまえば、
for(HogeHoge hoge : listMap.get("foo")){
//
}
って書けるし、ちょっとは幸せになったのかもしれないよ?1.4だとこうだし。
for(Iterator iter = ((ArrayList)listMap.get("foo")).iterator(); iter.hasNext(); ){
HogeHoge hoge = (HogeHoge) iter.next();
//
}
そもそもJavaでEoDは限界があるというのなら、同意する。
EoDは、プログラムの安全性を高める意味も含めてEoDだ。 コレクションが間違った使われ方されるのを減らせるだろ? 一人でプログラムを全部書く日曜プログラマには関係ないかもしれんがな。
でもどうせ Generics 対応をうたうなら 後方互換性を多少切り捨ててでも erasure なんて導入しないで欲しかった。
>>150 for(HogeHoge hoge : listMap.get("foo")){
//
}
これは確かに楽だと思う。便利なのも認める。
でも、これを使うために
HashMap<String, ArrayList<HogeHoge>> listMap = new HashMap<String, ArrayList<HogeHoge>>();
を書く方が鬱に感じるのは時代遅れですか!
Listは一時的に値を格納するローカル変数で良く使うけど
別のインタフェースへガンガン渡していくような使い方はあまりしないしなぁ。
>> 151
> コレクションが間違った使われ方されるのを減らせるだろ?
それは部品を提供する側のインタフェース設計の問題と思うけど。
間違った使われ方されないように、されても問題が分かるように作るべきじゃないかなぁ。
安全性といわれると、今までGenericの無かった1.4までのプログラムは
安全じゃなかったということにはならないし。
たしかに想定外の使い方しまくる人も結構いるけどさ(笑)
ビビルというか、焦るよね。
んなことねーよ、Generics登場前のコレクションは ループの中でinstance ofしないのは糞というコードチェッカーもあった。
tiger の generics はかなり制限が多いから 安全性なんてたかが知れてるよ。 バイトコードには型情報入ってないんだから。 限られた状況でIDEの入力補完が期待できたり、 限られた範囲で型チェックしてくれる程度。 それでもないよりはマシ。
javaでrandom()を使って乱数を作ろうと思うんですが、 C言語みたいに "a" + 1 = bってのは保障されてないんでしたっけ? 任意の桁だけ[0-9a-z]で生成したいんですけど・・・。 7a3y1jとか6a8x5dとか、au92r3みたいにバラバラでもいいかなと。
C言語が保障してるんじゃなくて文字コードが保障してるんだが。 UnicodeもASCIIの部分はそのまんまだよ。
>>158 あ、C言語じゃなくてASCII側が保障してるんですね
スレ違いだったかもしれませんけど有難うございました。
>>156 どうしてコンストラクタは型推論しないの?
161 :
156 :2006/12/18(月) 18:44:01
>>160 ごめん、云っている意味がわかんない。
Genericsの仕様のことについて? それとも私が156で書いたコードについて?
162 :
デフォルトの名無しさん :2006/12/18(月) 19:04:41
以下のような簡単なプログラムをつくりましたが、実行するとエラーになってしまいます。 public class UrlDecode { public static void main(String[] args) { try { // "%91S%95%94" は、"全部"を SHIFT_JIS で URLEncode したもの System.out.println("decoded: " + java.net.URLDecoder.decode("%91S%95%94", "SJIS")); } catch (Exception e) { e.printStackTrace(); } } } C:\>java UrlDecode Exception in thread "main" java.lang.UnsupportedClassVersionError: UrlDecode (Unsupported major.minor version 49.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) 環境はWindowsXP(SP1)。Java環境は以下の通りです。 C:\>java -version java version "1.4.2_07" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05) Java HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode) エラーメッセージの意味がいまいち掴めないのですが、何がダメでどうすれば動くようになるんでしょうか?
>>161 160じゃないけど、Genericsの仕様についてじゃないかと。
public static <K,V> Map<K,V> newHashMap()
ってシグネチャで型推論できるんだから、
public HashMap<K,V>()
ってシグネチャのコンストラクタでも型推論できたっていいだろう、
って俺も思った。型の自明さで言えば、コンストラクタの方が
staticメソッドよりもより明らかな訳だし。
164 :
162 :2006/12/18(月) 19:10:16
ちょっと調べたんですが、コンパイルした環境より実行する環境のJavaバージョンが古いと出現するエラーだということでした。 でも同じマシンでコンパイルして、実行しています。 ますますわかりません。
>>164 javac -version して、コンパイラのバージョンも調べてみたら。
後は、パスの順番の問題だろう。
166 :
163 :2006/12/18(月) 19:17:11
167 :
デフォルトの名無しさん :2006/12/18(月) 19:22:15
JAVAソケットプロプログラミングでUDPのTTLを設定したのですが、 どうすればいいのでしょうか? DatagramSocketImplのsetTimeToLive(int ttl) を使えばできそうなのですが、 インスタンスを生成できません。。。 やりたいのは DatagramSocket socket = new DatagramSocket(SERVER_PORT); を生成して、 socketのTTLを2とか3に設定することです。
>162 49.0ってことはコンパイラはJDK5.0使ってる。 たぶんPATHがおかしいのではないか。
169 :
162 :2006/12/18(月) 19:47:36
>>165 ,168
ありがとうございます。
PATHをJDK5.0の方に通して
C:\>java -version
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode, sharing)
となるようにしました。
ですが相変わらず先ほどのエラーのままです。
困りました。。。
なんでそうなるっw
で、結局 Generic の↓の違いはなに・・・ ArrayList<String> list1 = new ArrayList(); ArrayList list2 = new ArrayList<String>(); ArrayList<String> list3 = new ArrayList<String>();
172 :
デフォルトの名無しさん :2006/12/18(月) 21:47:58
swingでGUIプログラムを組んでるんですが やっぱりウィンドウの描画は描画専門クラスにして イベントはイベント専門クラス 各コンポーネントはstaticにするのが定石なんですか?
>>172 staticって、シングルトンかstaticメソッドのみのクラスにするってこと?
コンポーネントのレイヤーによるけどあまり多くはやらないな。
いろいろ作ってみて思ったことはこんな感じ。
・イベント処理は、StrutsのActionみたいな感じで作ると楽。いわゆるコントローラ?ただしStruts同様statelessで。
ここでは、UIからパラメタ取得してドメインオブジェクトのメソッド実行をする。
・イベント処理の結果を画面に反映させる処理は、UIに書いた方が楽。具体的には内部無名クラスに直書き。
無理してコントローラに書くとインタフェースが複雑になる。
・SwingのActionインタフェースは、例外処理とかログ出力とか考えると機能不足。
継承したり独自のActionクラスを作ったりAOPしたりといったカスタマイズが要る。
・Actionのディスパッチは、DI的にすると作りやすい。
GUI部分は、public Action getAction(String key)のようなメソッドを持つコンテナだけを知っている。
・DI的なコンテナはシングルトンで。他にシングルトンは作らない。
・モデルオブジェクトの管理もDI的なコンテナに任せる。
・とあるUIでデータ更新→それに合わせて別のUIでも更新、といった処理は、イベントとして処理。
そのためのイベント処理の枠組みを、DI的なコンテナに実装する。
とか思ってたら、Eclipseプラグインの作り方に似てきたような気がしてきた。
Eclipse Platformって面倒くさいけど、Swingの後に作っただけに便利なところは結構あるね。
Java IDLでのCORBA接続はスレ違いでしょうか?
CORBAスレがほとんどないので質問させてください。
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/idl/GShome.html ここを見てCORBAサーバを作成しました。
対抗もJavaで作ると当然うまく接続できるのですが、
他パッケージで作成したアプリでつなごうとして、
ネーミングコンテキストが分からず詰まってしまいました。
(ネーミングサーバの問い合わせにコンテキストのid/kindを文字列で要求されるので…)
上記CORBAサンプルのHelloクラスへ接続する
ネーミングコンテキストのid/kindは何なのでしょうか?
それともPOAはそういう使い方に適さないのでしょうか?
サーバ側のJ2SDK1.4.2、ネーミングサーバはorbdです。
175 :
172 :2006/12/19(火) 00:10:42
>>173 ありがとう
シングルトンって意味を調べたら
私のしたかった事がわかりました。
デザインパターンの勉強します。
176 :
デフォルトの名無しさん :2006/12/19(火) 05:32:33
何回実行されるかという問題ですが、ちんぷんかんぷんなのでよければ教えてください。 for(a=0; a*a<10) for(a=0;; a++)
意味分からん
ピクセルグラバーって矩形しか抽出できないんですか?
DI的なコンテナってなに?
どこで聞けばいいのかわからなかったのでここで質問させてください。 とあるテキストで、分数を約分するというプログラムが紹介されていたのですが そのアルゴリズム、というか説明で 「約分は、分子と分母の絶対値を比較し、大きい方の値で分子と分母を割っていきます。 割り切れなかったときは値を1減らし、再度割り算を試みます。どちらも余りが0になったときに割り切れたことになるので、 そのときの商を、それぞれの分子と分母の値とします。この繰り返しで、約分を実現します。」 と書いてあったのですが、最大公約数が値の小さい方よりも大きくなることはあるのでしょうか?
>>180 絶対値化した後なら、当然ない。
その説明を書いた人はユークリッドの互除法を知らないんですかね。
182 :
デフォルトの名無しさん :2006/12/19(火) 12:48:13
Javaアプレットで、ボタンを押すとアプレットサイズが変わるようなものを作っているのですが、 HTML側で指定した範囲を超えると、当然ですがはみでた部分が描画されません。 アプレット側から設定を変更するような命令を出すことはできるのでしょうか?
int[] a; と int a[]; は両方使えるんですか? 何か違いはありますか?
184 :
180 :2006/12/19(火) 12:51:41
>>181 技術評論社の本格学習Java入門というテキストなんですが、
書店でぱらぱらっと見た限りではよさそうだったんですが
購入してじっくりと見てみると、誤植の多いこと・・
テキスト買い換えることにします。ありがとうございました
186 :
183 :2006/12/19(火) 12:55:10
>>174 NamingContext と NamingContextExt の違いのせい。
例題を NamingContext で作り変えて試してみるとか。
JavaScriptの経験はありますが、Javaは未経験です。 JSのNumber.toFixed()に相当する物はありますでしょうか。 a = 3.1416; b = a.toFixed(2); // 小数点以下2桁までを文字列化して"3.14"を得る の様な。 Number、Double、String辺りを見ましたが、自分には見付けられませんでした。 TIA.
>>188 b = new DecimalFormat("#.00").format((double)a);
Java5以降であれば、
b = String.format("%.2f", a);
という感じ。
質問させていただきます。 複雑な階層構造をもつ任意のフォルダを引数として渡して、その中身をJarにまとめてくれるメソッドを 探していたのですが、どうもJava APIの中にそこまで強力なものはないようです。自分でJarOutputStreamを 使って実装するしかないのでしょうか。 この機能が無いということは、このようなことをしようと思った場合、Jarにまとめたいフォルダの階層が わかっていて、それに対応したプログラムを毎度書いてやるのが普通なんでしょうか。しかし、プログラマが 必ずしもフォルダの階層構造を知っているとは限りませんし、いちいち対応するというのもどうかと思います。 そこで上記のような強力なメソッドが欲しいわけですが、なにか参考になるページはないでしょうか。
>>190 階層なんて知らなくても、トップのディレクトリだけ渡して
後は再帰的に漁ってJarにでも何でもまとめればいいんでねの?
>>190 jarコマンドの機能が欲しかったら、プログラム内でjarコマンドを起動すれば?
sun.tools.jar.Mainでもいいかも。
193 :
デフォルトの名無しさん :2006/12/19(火) 18:03:37
質問です。 PHP4あるいは5のurlencode関数で「全部」というSJISの文字列をエンコードすると %91S%95%94 となります。 コード↓ print(urlencode("全部")); これをJava組み込みのURLデコードメソッドでデコードすると ?S部 と化けた状態になってしまいます。 コード↓ System.out.println(java.net.URLDecoder.decode("%91S%95%94", "SJIS")); 試しに System.out.println(java.net.URLEncoder.encode("全部", "SJIS")); してみたら %91%53%95%94 となりました。 どうすればPHPでエンコードした値を、Javaで正常に戻すことができるようになりますか? JavaSDKのバージョンは1.4.2です。
195 :
193 :2006/12/19(火) 20:32:39
196 :
デフォルトの名無しさん :2006/12/19(火) 22:51:13
実数値が扱えない状況でval1 / val2を行ったとき, 小数第一位が5以上であれば, val1 / val2で割った値を切り上げるrintメソッドを作りました。 public static int rint(int val1, int val2) throws ArithmeticException{ int rest = val1 * 10 / val2; return (rest % 10) < 5 ? val1 / val2 : (val1 / val2) + 1; } このメソッドの実行速度をもう少し速めたいのですが, 知恵を拝借できませんでしょうか?
sbはStringBufferだからStringにしてやる必要がある
そうだが、大抵はtoString()だよな。 どっちにしても、StringBuffer#toString()でnew String()してるから、結局は一緒なんだけど。
>>196 (val1 * 2 + val2) / (val2 * 2)
>>187 回答ありがとうございました。
こちらでも試行錯誤していて、
NameComponentのkindアトリビュートに無理やり値を入れたら
解決したんですが、これはいいんだろうか…
String name = "Hello";
NameComponent path[] = ncRef.to_name( name );
path[0].kind = "hoge"; // add
ncRef.rebind(path, href);
NamingContextに変えてみるのも試してみます。
ここでよく出てくる#の意味を教えてください。 例えば199さんとか
おしえてあげないよ、ジャン♪
puclic class Hoge { static class A{ } void main() {
すいませんEnter押しちゃいました puclic class Hoge { static class A{ 〜〜〜〜〜 } void main() { while (条件){ if(条件) { enqueue(a); A a = new a(); 処理; } } } みたいな感じでwhileループの中でキューに追加しては次々と新しい同名オブジェクトを 生成するプログラムを書いてるんですが、キュー追加後のオブジェクトがゴミとなるため VMがGCでひどく時間を食うようです。生成するオブジェクトをリンク付きリスト構造でつないで メモリを再利用できるようにしてゴミを出さないようにできるらしいのですが、よく分かりません。 どなたか簡単な感じで教えていただけませんか?
>>202 StringBuffer.toString()
って書いたら違和感感じない?
違和感が湧かん
208 :
デフォルトの名無しさん :2006/12/20(水) 07:30:30
>>208 if-else文の構造が間違ってる
↓これだと処理Bは一生実行されない
if(条件A) {
処理A
}else if(条件A) {
処理B
}
int A=1; int B=2; ・・ switch(C){ case A: ・・ case B: ・・ } がエラーって言われます。 Cの場合はAとBをマクロで記述すればOKだったのですが、javaではどのように 対処するのが一般的ですか? とりあえず、if〜elseをダラダラ書けば解決しますが。。
caseは定数で。
>>210 final int A = 1;
final int B = 2;
LinkedListに要素が[moge|,hoge|,hige] って入っていた場合に、 mogeやhogeの後ろにある"|"だけを消したい場合 はどうすればいいんでしょうか?
214 :
デフォルトの名無しさん :2006/12/20(水) 12:31:48
javax.media.Player.getVisualComponent()で取得したComponentのサイズについて質問です。 ○JRootPaneにaddするとフルサイズで描画される。 ○JPanelにaddするとComponentのデフォルトサイズで描画される。 ?JPanelにaddしたComponentのサイズはsetPreferredSizeを変えても変更できない。JButtonは変えられる。 ?JPanelへaddImpl(component, null, -1)を使用してもComponentのデフォルトサイズで描画される。 JRootPaneのaddとJPanelのaddは大きく何が異なるのかがよく分かりません。 また箇条書きにした?の項目(特にsetPreferredSizeが無効)がよく分かりません。 一瞬だけsetPreferredSizeが有効になり、repaintでサイズが元通りにされるのかと思ったのですがそういう訳でもなさそうです・・・。 大人しくJRootPane使っとけば正解なのでしょうか。
215 :
デフォルトの名無しさん :2006/12/20(水) 18:39:20
GUIについての質問なんですが 1JFrameを継承したMyFrameを作成 2.MyFrameをフィールドとしてJButton button_,JLabel label_および JTextField textField_を持つ。これら3つはコンストラクタ内でMyFrame内にaddされる 3.MyFrameはFlowLayoutでサイズ400×300とする。 4.textField_に数字を入れてボタンをおすと、数字が素数の場合にはlabel_に True,素数でなければFalseが表示される。 以下の問題の4の書き方が分からないです。 GUIに先入観があるから難しいのかもしれませんが、ヒントだけでもくださったら ありがたいです。
216 :
214 :2006/12/20(水) 18:51:31
>>215 ActionListenerでボタンのイベントを拾う
イベントを受けたら素数のチェックを行う
結果を表示する
って感じでどうでしょうか。
217 :
デフォルトの名無しさん :2006/12/20(水) 19:25:27
>>216 ありがとうございます。方針が分からなかったので大変助かりました。
218 :
デフォルトの名無しさん :2006/12/20(水) 20:55:32
魚眼カメラからの画像を射影変換させたいのですが、全くわかりません。 サンプルとか持ってる方いませんか。。。
非常に漠然とした質問で申し訳ないのですが、 ウインドウを複数用意し、中で描画される図・画像が連携して動くようなプログラムは可能でしょうか? また、二つのウインドウA,Bを用意し、Aに描画されたものと同じものを拡大縮小率を変えてBで描画するといったプログラムは可能でしょうか? もし可能であれば具体的にどのように設計をすればよいかをご教授くださればと思います。 よろしくお願いします。
221 :
デフォルトの名無しさん :2006/12/20(水) 21:59:51
ウインドウをマウスでリサイズするときに ウィンドウの外に現れる枠を表示する方法を教えて下さい。
222 :
デフォルトの名無しさん :2006/12/20(水) 22:04:08
できればawtで表示する方法でお願いします。 もしも無ければswingで表示する方法を教えて下さい。
223 :
デフォルトの名無しさん :2006/12/20(水) 23:10:56
javaの数学クラスMathで指定した小数点を四捨五入するメソッドってないの?
#の部分は要らんな。優しすぎて依存しちゃうぞ♥
226 :
215 :2006/12/20(水) 23:38:05
問い1を解いていたら他にも分からないところが出たので、 丸投げスレでも聞いてみます。 (javaの宿題スレなどで)
227 :
223 :2006/12/20(水) 23:43:31
>224 サンクス!!本当にここの人たちはやさしいな。 でも、このfloorは整数にしちゃうつまり小数第1位で四捨五入するんだろ。 小数第2位や3位で四捨五入するように指定できないの?
BigDecimal#setScale使え。
>>227 public static double round2(double val, int digit){
double weight = digit > 0 ? Math.pow(10, digit) : 1/Math.pow(10, -digit);
return Math.round(val / weight) * weight;
}
231 :
困ってます :2006/12/21(木) 02:07:19
次のような課題が出たのですが、どうしても解けません。。よろしくお願いします。 数n を入力し、幅 n で高さ n の以下のような直角三角形を2つ並べて画面に表示するプログラムを書け。 これは n が5の場合の例。 S SS SSS SSSS SSSSS S SS SSS SSSS SSSSS
232 :
困ってます :2006/12/21(木) 02:18:02
S SS SSS SSSS SSSSS S SS SSS SSSS SSSSS
233 :
困ってます :2006/12/21(木) 02:19:49
すいません。Sの並びが逆でした。本当は S SS SSS SSSS SSSSS
234 :
困ってます :2006/12/21(木) 02:22:28
何度もすいません。上のも違います。左右反対にした形です。入力しても上のように 出てしまいます。
質問です。 LG3Dのデスクトップ環境全体の拡大縮小って制御って可能ですか?
237 :
デフォルトの名無しさん :2006/12/21(木) 09:17:30
以下のように処理時間を計測して平均をとりたいのですが、ガベージコレクタが動作して時々異常に高い値が出たりして、データが実情とそぐわないものになってしまいます。 何かよい方法がありますでしょうか?よろしくお願いします。 String stringTest; long beforeTime[]=new long[30]; long afterTime[]=new long[30]; long average=0; for (int i = 0; i < 30; i++) { beforeTime[i] = System.currentTimeMillis(); for (int j = 0; j < 10000; j++) { stringTest = ("a"); stringTest = stringTest + ("b"); stringTest.equals(""); } afterTime[i] = System.currentTimeMillis(); } for (int i = 0; i < 30; i++) { System.out.println(i+":"+(afterTime[i]-beforeTime[i])+"ms"); average+=(afterTime[i]-beforeTime[i]); } System.out.println("平均:"+(average/30)+"ms");
238 :
デフォルトの名無しさん :2006/12/21(木) 09:27:10
まさにそれが実情だわな。
240 :
237 :2006/12/21(木) 09:39:17
>>238 たとえば、
ほとんどの値が20msくらいなのに、2〜3個だけ突然500msとか時間がかかってしまい、
平均値が一気に跳ね上がってしまうんです。
ガベージコレクタを抜いた平均はきっと20msくらいだと思うんですけど。
どうしたらガベージコレクタで跳ね上がった数字を除いた平均がとれますでしょう。
コード上の改良でも、統計っぽい加工でも、どちらでもかまいませんので、ヒントでもいただけると助かります。
よろしくお願いします。
時々GCがおきてそれだけ時間がかかるんだから、それが「実情」だって事じゃないの? 恐らく常にGCは起きてるけど、時々FullGCがあった時だけ跳ね上がってるはず。 GCを起きなくしたいのか? それじゃテスト内容が変わっちゃうぜ? ただ単に跳ね上がった数字をはじきたいだけなら、閾値を超えたら無視するだけのこと。
242 :
デフォルトの名無しさん :2006/12/21(木) 10:07:25
つーかガベージコレクタ関係なくね?
243 :
デフォルトの名無しさん :2006/12/21(木) 10:07:59
stringTest.equals(""); つーか何してるわけ?
テストの内容がわかめ
jdbcの質問です。 192.168.1.93(クライアント)から、192.168.1.2:5432(サーバ)にインストールされたPostgreSQLにアクセスする時(実行時)にエラーを出してしまいます。 実行時エラーログ org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. ソースコード(問題個所のみ抜粋) Class.forName("org.postgresql.Driver");//ここは成功 Connection con = DriverManager.getConnection("jdbc:postgresql:hellodb://192.168.1.2:5432/","postgresql","");//ここでエラー 192.168.1.93(クライアント)のノートンFWのログ 日付: 2006/12/21 時刻: 10:20:09 C:\WINNT\system32\java.exe が初めてインターネットにアクセスしようとしています 192.168.1.2(サーバ)のノートンFWのログ アクセスされた形跡無し。
246 :
デフォルトの名無しさん :2006/12/21(木) 10:50:53
ブラウザのロケール情報からWindowsで使われている文字コードを取得することは可能でしょうか。 ja -> MS932 みたいな感じで。
247 :
237 :2006/12/21(木) 11:04:05
>>返答くれてる方達みんな
ありがとうね!
stringTest.equals("")は、それがないとコンパイラがコンパイル時に最適化してforループ内が実行されない場合があったのでいれてます。テスト内容に意味はありません。分かり難い説明でごめんね。
>>241 カットオフのラインの求め方で何かお勧めの方法はありますでしょうか?
簡単に思いつくのは、一度目はテストとして実行して平均と標準偏差のデータをとり、そこから信頼区間を求めてその信頼区間をカットオフのラインにする方法です。
そして、二回目の実行でカットオフのラインを利用して平均を取り直して値を採用します。
他に何かよい方法やご意見はありますでしょうか?
241様以外の方でも、何かよい方法等が御座いましたらぜひお願いします。
248 :
223 :2006/12/21(木) 11:07:12
>229 サンクスありがとうかぶっててごめん
249 :
245 :2006/12/21(木) 11:48:01
自己解決しました。 書き方が間違ってたらしい。 でも、あたらしいエラーが・・・。 org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "192.168.1.93", user "postgresql", database "hellodb", SSL off また調べなきゃ・・・。
250 :
助けて :2006/12/21(木) 13:32:39
お絵描きをする課題が学校ででたのですがpublic_htmlディレクトリにアップレットのクラスファイルの置き方がわかりません。 どうすればいいのですか?
251 :
デフォルトの名無しさん :2006/12/21(木) 16:14:57
ファイル出力について 出力ファイルを指定した後で Consoleで文字列を打ち出すようにプログラムを組むにはどうしたらいいですか? 空白の行でEnterキー打つまでループするものとします PrintWriter OutputFile; OutputFile = FileIo.fWrite("A.txt", false); (この間です) OutputFile.close();
252 :
デフォルトの名無しさん :2006/12/21(木) 16:26:52
getTimeメソッドを使って処理開始直前と直後の経過時間を調べて処理に要した時間を調べる方法以外に 処理時間を計る方法ないですかね? 分散処理なんかをしていると他のジョブの待ち時間なんかも計測されるみたいなので自分のプロセスだけの時間を調べたいんですが
253 :
デフォルトの名無しさん :2006/12/21(木) 18:18:29
みなさんこんにちは。 Windowsのデータソースにcsvファイルを登録して、ResultsetからgetStringで読み込んだところ(ファイル名がテーブル名になるんですね、初めて知りました)、うまく読み込めたと思ったのですが、なんと長い文字列が255バイトで切られてしまいます。 これは、Accessでいうところのテキスト型に決めうちされ、よってフィールドサイズは最大で255ということにされてしまうのでしょうか? 同僚によると、ドライバの仕様だからどうしようもないとのことなのですが。 なんとかならないものでしょうか?
255 :
デフォルトの名無しさん :2006/12/21(木) 19:42:48
SwingでDB接続するアプリを開発する際、DB接続パスワードを利用者に 知られないようにするいい方法はありますか? 簡単な暗号化をかけても、jarファイルを配布するわけだから、 javaコードを逆コンパイルされたら暗号化ルーチンがばれて駄目だと思うんですが
公開鍵暗号
ダメだろ、認証方式に問題ありだ。 公開鍵方式だろうが、アプリケーションが秘密鍵を持つんだから同じ事。 が、パスワードを知られない方法はパスワードを空にすることです。 無いものは知られようがない。 DBを守るための三層構造だったりするんだけどな。
何いってんだ?
259 :
デフォルトの名無しさん :2006/12/21(木) 22:52:52 BE:218200234-2BP(0)
Javaでテトリス作る場合、どうやってクラス分けすればいい?
>>259 落ちてくる基底物体クラス、それを拡張した各物体
画面クラス、キーアダ・・・あぁー面倒になった。
BitSetをフル活用すればいいと思うよ。
>>255 いい方法は私が知っている限りないけど、
>>257 が云っているように三層構造にするのが無難。
要するにクライアントから直接DBアクセスせずに、WebServiceなどを経由して、DBにアクセスする。
こうするとDBにクライアントがアクセスすることはないからパスワードを保存する必要がない。
クライアント<->WebService<->DataAccessComponents<->DBって感じ。
あと注意点としてできればパスワードなどは、String 型のオブジェクトに格納せずにChar型の配列に格納してください。
上記の注意点については、Java 暗号化拡張機能(JCE)の「パスワードベース暗号化の使用」欄に書いてありますが。
>>255 最終的にはメモリ覗けば分かるんだし、
ある程度のレベルで隠蔽できてれば良いと思う。
それで文句言ってくるようなら、プロンプト出すから勝手に入れろ、で。
おはようございます。 j2sdk-1_4_2_12-windows-i586-p.exe をダウンロードしたいのですが 見当たりません。 どなたかご存知であればお教え願います。 iアプリの開発にはこのバージョンでないとダメみたいなんです。
すいません。自己解決しました。
ともったら1.4.2_11でした。 とりあえずこれで乗り切れるとは思うので試してみます。 もし知ってる方が居られましたら、引き続き宜しくお願いします。
あっ! レスありがとうございます。 1.4.2_13のほうが間違いなく大丈夫そうですね! ありがとうございます!
270 :
:2006/12/22(金) 15:50:11
Swingのイベントディスパイッチスレッドから呼び出されたメソッドの中でRuntimeExceptionが発生してcatchされなくてもアプリケーションは終了しませんよね。 どんなRuntimeExceptionがキャッチされずに無視されてるか知りたいんですが、個々のイベントリスナーにそれぞれcatch節を書かずに、一括してRuntimeExceptionをcatchできる方法はありませんか?
>>270 1.5 以降なら Thread#setUncaughtExceptionHandler() やら
Thread#setDefaultUncaughtExceptionHandler() やらでハンドラをセットするとか
それより前なら ThreadGroup#uncaughtException をオーバーライドしてEDSを登録するとかしてみれば
キャッチできるかもしんない。試してないからわからんけど。
272 :
デフォルトの名無しさん :2006/12/22(金) 19:51:34
273 :
223 :2006/12/22(金) 20:47:33
Checkbox c1 = new Checkbox(); でc1にチャックが入っているかどうかを取得するメソッドってなんですか?
275 :
デフォルトの名無しさん :2006/12/23(土) 04:34:54
JavaBeanのプロパティ一覧を取得する方法ってあるでしょうか? というのも、あるBeanからfor文を使って簡単にデータ連結させたいのです。 例えば↓のようなBeanがあったとして、@の方法ではなく、Aのような方法で Beanを操作したいのです。 class HogeBean implements Serializable String col1; String col2; String col3; ・ ・ @ s = HogeBeanInstance.getCol1 + HogeBeanInstance.getCol2 ・・・ A for( Object property: HogeBeanInstance.getProperties ) s += property.toString()
>>275 つ Introspector & BeanInfo
& PropertyDescriptor
278 :
:2006/12/23(土) 10:20:48
>>271 どうもありがとうございます。試してみました。
で、たしかに一回目のやつはUncaughtExceptionHandlerでcatchできるけど、しかしそれでもSwingのイベントスレッドは死んでしまって、
あらたなスレッドが生成されてそれが処理に当たるみたいなので、何回もUncaughtExceptionHandlerをセットしなくてはいけないみたいです。難しい。
ビックカメラのサイトで注文しようとしたら猛烈に遅いじゃねえか さすがアホjaverの作る物は低品質だな
280 :
デフォルトの名無しさん :2006/12/23(土) 10:39:54
冬休みに入った途端構ってチャンか
ssh(sftpとかshellとか)を使ってみたいのですが、 おすすめクラスライブラリってありますか? jschとかみつけたのですが、ドキュメントが無いみたいorz Ganymedってのも見つけました。 できれば日本語でわかるのがいいんです。
遅いどころじゃないな。「混み合ってます」ばっかりだぞ。 こんなゴミよく納品できたな。
とりあえずビックカメラのサイトでも見てくれ。びっくりの低品質だ
>>284 改善して欲しいならビッグカメラのサポート窓口とかに苦情書いた方が良いんじゃね?
Javaは糞鯖が嫌いです
>>281 Javaでライブラリ漁りたいなら、英語は必須。
jschはexapmlesにサンプルがあるので、それとJavadocを読みながら使い方調べるしかない。
288 :
デフォルトの名無しさん :2006/12/23(土) 14:40:48
システムを開発する上でデザインパターンを意識するものなのですか?
>>288 する。ってか、自分でオリジナルを編み出すより楽だし、
デザパタを知っている他の人にもわかりやすくなるし。
デザパタ知らない奴には「ファイルが増える」と不評だけどね。
291 :
デフォルトの名無しさん :2006/12/23(土) 16:29:47
そういうときはバグが増えるよりはマシだろって返答するな
>>283 脱線するけど、何が適当なんだろう。
Javian? Javist? Javan?
Javanist
nはどこから涌いてきたんだ
>>287 ソースにコメントがないのでjavadocはどうなのかわかりませんが、
もう少し調べてみます。
日本語はほとんどあきらめてます。
(もしかしたらと思って聞いてみました)
296 :
名無しさん@恐縮です :2006/12/23(土) 19:20:32
教えてください。 ファイル名はManで、 ピーっという音と文字化けのようなものが表示され、 コンパイルできません。 原因はなんでしょうか??お願いいたします。 class Air{ public void takeoff(){ System.out.println("fly "); } } class Con extends Air{ public void takeoff(){ System.out.println("It files fast "); } } class Man{ public static void main(String args[]){ Air flyer[]={new Air(),new Con()}; for(int i=0; i<flyer.length;i++){ flyer[i].takeoff(); } } } 正常にコンパイルされると出力結果は、 fly It files fast になるそうです。
298 :
名無しさん@恐縮です :2006/12/23(土) 19:45:38
↑確認してみたんですが、不備はないですね。 おそらく、プログラミングのミスではないかと思っているのですが、 どうでしょうか??
300 :
名無しさん@恐縮です :2006/12/23(土) 20:00:44
そもそも、コンパイル時にピーっという音がでることはあるのでしょうか?
>>296 ファイル名は
Man?
Man.java?
ま、まさかそんな・・・
302 :
名無しさん@恐縮です :2006/12/23(土) 20:12:51
Manです。
303 :
名無しさん@恐縮です :2006/12/23(土) 20:14:30
javac Man.javaでいいんですよね。 で、java Man
304 :
デフォルトの名無しさん :2006/12/23(土) 20:30:11
もうこの問題は解決したのかな?
全角
306 :
名無しさん@恐縮です :2006/12/23(土) 20:42:54
初めの文字は、全角になってます⇒Man
ネタ確定ですか?
308 :
名無しさん@恐縮です :2006/12/23(土) 20:56:29
まちがっているのでしょうか?
309 :
名無しさん@恐縮です :2006/12/23(土) 21:00:19
Man 最初は、半角の大文字ですね。
string以外全角つかうな
311 :
デフォルトの名無しさん :2006/12/23(土) 21:37:11
「すでに作成されて存在するjarの中の.classが間違いなく、 この.javaから生まれたものである。」 ということを確認するにはどうすればよいですか? 最新版のjarと、最新版のソースの在りかは プログラマから聞いていたのですが、 念のため、バージョンの整合を確認したいのです。 そのプログラマは、20日に死にました。 当方、java初心者というか、プログラマですらないので、 わかりません。よろしくお願いします。
>>296 Man.java のコンパイルが成功したら
Air.class Con.class Man.class
の3つのファイルが作成される
これをふまえて
>>297 をよく読む
\a
\an でbeepが鳴ってんの?
Mの2バイト目は\なのか
317 :
311 :2006/12/23(土) 22:07:37
>>314 知らないなら、出て来るな!
プログラマ名人なら、これぐらい簡単ですよね。たぶん。
お願いします。
お前は読めないのか?
>>311 classから逆コンパイルする方法はあるけど完全に元に戻るわけではない。
もう一度コンパイルしてclassを比較してみたらどうだ?
どのみちプロに頼むんだろうから その人に聞けば?
GUIDみたいのは入ってないのか?
GUILDには入ってます
324 :
デフォルトの名無しさん :2006/12/24(日) 00:47:01
もうやめたほうがいい。
325 :
311 :2006/12/24(日) 01:12:44
>>319 >>320 なるほど!!
と思い試してみました。
んで、すべて一致を確認しました。
ありがとうございます。
んで、死んだプログラマの代わりに
これから一部ソースを修正して、
月曜までに修正版リリースを作らなければなりません。
人に聞いた方法で
EclipseのBuild.xml右クリック->実行->Antだと、
修正ファイル以外までもがリビルドされてしまいました。
ヤバイ。
これから、やり方調べますが、
心優しい人が居たら、また教えてください。
ありがとうございました。
>>314 ではないが、そのプログラマが氏んだ理由が知りたい・・・
仕事と無関係な事故/病氏ならともかく仕事関係での圧迫による鬱氏その他だとしたら・・・
>>314 と同じ事を言いたくなるかも
>>326 理由を言うわけないし、言ったとしてもその亡くなった人を悪く言うだけだろ
進んで利用されるなんて馬鹿ばっかりなスレだな
329 :
デフォルトの名無しさん :2006/12/24(日) 10:59:25
んじゃ2泊3日の旅行行ってくる。 お前ら頑張れよw
330 :
デフォルトの名無しさん :2006/12/24(日) 12:37:24
javaの実行時にプロンプトを表示しないようにするにはどうすれば いいですか? swingアプリなので出るとダサイ
>330 javaw.exe
332 :
330 :2006/12/24(日) 12:43:59
SE6になってスプラッシュウィンドウが搭載されたけど jarはまだヒープサイズとか埋め込めない仕様なの?
Cを基本を齧ったことあるんですがそういう人間がJAVAを勉強するのにお勧めなサイト・本などはありませんか?
かじった程度じゃ普通のJava入門書・サイトでいい。
java勉強していいことある?
Linuxだとnioでepoll使うようになったらしいけど jettyとかは更に爆速になってたりするの?
最近派遣会社の案件紹介とか転職サイトとか見なくなったからアレだけど 数年前は猫もしゃくしもJavaだった。 もち募集されてたのは「勉強しました」程度じゃなく 「Javaによるシステム開発Prjいくつこなして経験何年です」の経験者だが 今はどうなの>all ま、触っとく事自体が損、って事はないんじゃない?
343 :
デフォルトの名無しさん :2006/12/24(日) 23:54:05
コアjavaを基礎読み終わって、 応用をやっているのだが、難しいというより、 いらないなと思うところが多いのだが、 セキュリティー、国際化、AWTの高度な機能はいらないと思う。 後javabeansも使ってないので.... どう思いますか? 仕事で使わないのだが.... まあ、一通り読んだけど
>>343 実際現場で必要にならない部分までいる/いらないは判断できないかと・・・
とりあえず勉強だけしといて、実際現場でお客様から要望されたら、「あ、それ一応やってます」
って言える程度でいいんじゃない?
実際Javaとかは拡張しすぎて「いらないんじゃない?」と思う部分も多々あるとは思います。
お前は使わなくても他の人は使うかも知れないだろが
>>343 必要になった時に覚えればいいと思うので、
そういうのがあるんだなぁぐらいでいいのでは?
と言ってみるテスト
GraphicsDevice setFullScreenWindowにてフルスクリーン表示をしているときに JOptionPane を表示するといかんともしがたい状態になるのですが (私の環境ではsetFullScreenWindowで指定した画面上に JOptionPaneのボタンの部分のみ描画されている状態になる) この現象は人によって異なるのでしょうか。
348 :
347 :2006/12/25(月) 16:20:57
自己解決しました。 フルスクリーンにセットするパラメータをJFrameからJWindowに変更したら表示されました。
349 :
デフォルトの名無しさん :2006/12/25(月) 20:49:21
質問です。 class Oya{ int d=10; void print(){ System.out.println(d); } } class Kodomo estends Oya{ int d=100; void print(){ System.out.println(d); } } class Test{ public static void main(String[] args){ Oya oya = new Kodomo(); System.out.println(oya.d); } } と定義して、Testを実行すると"10"が表示されます。 またTestクラスを変更し、 class Test{ public static void main(String[] args){ Oya oya = new Kodomo(); oya.print(); } } とした場合は"100"が表示されます。 なぜこのような違いが出るのかを、誰か説明していただけません でしょうか?
nilぽ
うるせーバカ!
>>349 変数はオーバライドできない。
スーパクラスとサブクラスに同名の変数があった場合、サブクラスのインスタンスには両方の変数が存在する。
そのクラスなら、Kodomo型のオブジェクトには、OyaのdとKodomoのdが両方存在している。
変数の参照は、オーバライドがないので変数の型に従う。つまり、
Oya型の変数 oyaに対して oya.d としたら、Oyaクラスのdを指し、
Kodomo型の変数kodomoを定義して、kodomo.dとしたら、それはKodomoクラスのdを指す。
メソッドの中で変数を参照する場合、自身のクラスで定義された変数を最初に参照する。
だから、Kodomo#print()ではKodomoクラスのdを参照するし、
Oya#print()ではKodomoクラスのdを参照する。
なお、Kodomoクラスのメソッドでも、super.dとすれば、Oyaクラスで定義されたdを参照できる。
353 :
352 :2006/12/25(月) 22:25:19
10行目間違い 誤:Oya#print()ではKodomoクラスのdを参照する。 正:Oya#print()ではOyaクラスのdを参照する。
354 :
349 :2006/12/25(月) 23:39:48
>>352 ありがとうございました。
整理して考えてみます。
kodomo と oya くらいは英語名にしてはどうかと思うんだ。
356 :
デフォルトの名無しさん :2006/12/26(火) 11:11:44
SWTアプリケーションで、iTextを用いて自分で作ったPDFのプレビューをしたいのだけど、JPedal↓以外に選択肢はあるでしょうか?
http://journal.mycom.co.jp/articles/2006/08/25/jpedal/ JPedalはまさに欲しかったモノなのだが、日本語に対応していないのと、ライセンスが(Lがついてない)GPLなのがネック。
無制限配布OK、もしくは数千円程度でクライアントライセンスが購入できれば有償でもいいので、他に選択肢を御存知の方はいらっしゃいますか?
一応、「Java COM bridgeを使えばOK」という製品は見つけたが、これは正直使いたくない。
バッチで呼び出せればPDFから画像に変換して表示、というのも選択肢の一つだと思うが、この点も併せどなたか情報をお持ちの方がいらっしゃれば、御助言を頂ければ幸いです。
以上、よろしくお願いします。
JWindowを表示している時に キーイベントを発生させると何処で拾えるのでしょうか 下記いずれもイベント拾えず・・・。 JWindow.addKeyListener(this); JWindow.getContentPane().addKeyListener(this); Component[] com = JWindow.getComponents(); for (int i = 0; i < com.length; i++) { com[i].addKeyListener(this); } JWindow.getRootPane().addKeyListener(this); JWindow.createRootPane().addKeyListener(this);
>>356 JPedalの有償版、配布無制限のOEMライセンスだと $USD 7,500もするんだね。
商用品だとそんなもんか。
>>357 なんかフォーカスをとってくるメソッドなかったっけ
でもInputMap使った方がいいんじゃね
360 :
デフォルトの名無しさん :2006/12/26(火) 15:07:52
すいません、教えてください String型の変数にClassそのものの名前が入っています それを実行させる方法はありますか? 以上、よろしくお願いします。
>>360 リフレクション(reflection)てやつを使う。
「java リフレクション」で探せば
いくらでもサンプルソースが転がってる。
>>361 リフレクションなぞつかわなくとも、
AnyType foo = (AnyType) Class.forName("クラス名").newInstance();
でいいじゃないか。
>>362 でも、リフレクション使わないと型が分からないから、「実行」させることは出来ないのでは?
>>363 なるほど。言われてみればその通りだ。
できるのはインスタンス化までか。
>>359 回答ありがとうございます。
inputMap&AcionMapで実現できました。
>>362 ん?これもリフレクションじゃないの?
>>363 instance of で調べてキャストすればいいのでは?
>>366 メソッド・プロパティを探しはじめたらリフレクションらしい。
instance of では未知のクラスの未知のメソッドは呼べないと思われ。
>>366 java.lang.reflect のAPIを使って無くてもリフレクションと呼べるの?
>>368 呼ぶ。java.io やら java.nio 使って無くても入出力すりゃIOだし。
370 :
ぴゅあ :2006/12/26(火) 20:19:30
あいかわらずバカばかりだなwww
一番馬鹿っぽい人が来たwww
リフレクションに決まってんだろ。アホか
リフレクションだな
リフレクション=反映
質問です。 readLine()で読み込んだ文字列をsplit()で分割したいのですが、 配列の先頭に何も格納されません。[1]以降にはきちんと格納されています。 具体的にはsplit(" +")で1個以上の空白で分割したいのですが… どなたかよろしくお願いいたします。
>>376 public static void main(final String[] args) {
for (String s : "1 2 3 5".split(" +")){
System.out.println(s);
}
}
↑こうしてみたら、↓こうなったがね。
1
2
3
5
これじゃだめ?
378 :
360 :2006/12/27(水) 15:40:24
みなさん、ありがとうございます リフレクションで調べて自分なりに書いてみました さらに質問になり申し訳ないのですが 実行時、メソッドに与える引数を呼び出し元自身にしたく 色々なのサイト見たのですが、どこもStringやIntegerのものしかなく 以下のようにしてみましたが import java.lang.reflect.Method; --------------------------------------------------- Object[] param = {this}; Class c = Class.forName("HogeHoge"); Class[] paramType = new Class[param.length]; for (int i = 0; i < param.length; i++) { paramType[i] = param[i].getClass(); } Method method = c.getMethod("HogeRun", paramType); param[0] = this; return method.invoke(c, param); 結果は java.lang.IllegalArgumentException: object is not an instance of declaring class で手詰まりです どなたかよろしくお願いします il||li _| ̄|○ il||li
Tabとか入ってるのかな。 split("\\s+")でどう?
380 :
360 :2006/12/27(水) 16:05:54
>param[0] = this; これ間違えです いりません il||li _| ̄|○ il||li
381 :
ぴゅあ :2006/12/27(水) 16:44:51
object is not an instance of declaring class というメッセージでググってみるとか
>>378 どうせソースとスタックトレース晒すなら行の情報までだせば良いのに。
HogeRun がクラスメソッドじゃないのに、
Method#invoke の第一引数に Class のインスタンス渡してるのが原因じゃないかね?
インスタンスメソッドの場合、第一引数には HogeHogeクラスのインスタンスを与えないと失敗する。
384 :
376 :2006/12/27(水) 17:27:57
>>377 ,379
ありがとうございます。
どうやら文字列の先頭に空白があると駄目なようです。
trim()を使うことにより解決することができました。ありがとうございました。
質問があります。 VMが実行毎にバイトコードをコンパイルしているのを、 最初の実行でコンパイルしてどこかに保存しし 次からそれを使う方が速度が上がるし効率的だと思うのですが そうしないのはどうしてですか?
>>385 バイトコード検査できなくなるからじゃないかな。
バイトコード検査後にネイティブに変換したものをファイルに保存したとして、
そのファイルが後で不正な修正を受けていないという保証は得られないし。
メモリにはキャッシュされてるよな。 あと確か6.0からこの機能が実装されるとか聞いた記憶があるんだが、先送りになったんだっけ?
>>387 いや、6.0 で有名なのは VM 共有だから、
>>385 が言ってるのとは違うと思うけど。
>>385 が言ってるようなのは IBM の VM が実装してるとか聞いた。5、6年前に。
他の VM で採用されてないなら、実は大して速くならない、とか理由があるんじゃね?
正直JITの時間はたいしたことない、て事なんかな?
セキュアなバスにストレージがあれば、
>>386 みたいな心配はいらないのかな。
昨今のビデオ周りみたいに。
すみませんプログラムの勉強をしようと思って無料で使えるみたいなので Javaをダウンロードしてインストールしたのですが Pathの設定でC:\Program Files\Java\j2re1.4.2_13\bin としてコマンドプロンプトでjavacと打ち込んでも認識されません 環境設定は正確に打ち込んだと思うのですが、何度やってもだめでした プログラムを語る以前の問題かもしれませんが・・・ うまくいかない原因何か考えられるでしょうか?
jdkの方って設定いらなかったっけ?
393 :
ぴゅあ :2006/12/28(木) 14:06:27
やはりわちきがいないとこのスレは駄目ですね
395 :
デフォルトの名無しさん :2006/12/28(木) 14:36:17
J2SE Runtime Environment 5.0のことで聞きたいのですが Updateされるたびに前にUpdateされた6や7がプログラムに残っているのですが 最新のUpdateバージョンだけ残して残りの古いものはアンインストールしても よろしいのでしょうか?
396 :
391 :2006/12/28(木) 14:53:24
>>392 >>394 ありがとうございます。
なんか、落とすの間違えてたみたいです、sdkというのをダウンロードしていませんでした。
ダウンロードサイト英語ばかりでよくわからなかったです・・・
sdkインストールしてPath設定したら、うまく認識できました。
先は長そうですが...がんばってJavaマスターします。
>>395 消しちゃってOk。
というかその辺不便だよな。自動アップデートついたのはいいけど、
旧バージョン残したままなんてディスクの無駄だ。
それに、VMに穴がある場合残したままだとよくない。
せめて、設定で旧バージョンは自動で消えるように選択できればいいのに。
398 :
395 :2006/12/28(木) 15:10:11
>>397 返答ありがとうございます。
なるほど、旧バージョンは残ってしまう形になっていたのですか。
今からアンインストールしようと思います。
399 :
:2006/12/28(木) 17:28:03
ユーザーがJTreeのNodeを単にマウスでクリックしたのと制御キー(Alt)をおしながらクリックしたのかの区別を TreeSelectionListenerのvalueChangedで知りたいんですけど、どうすればいいのですか?
>>399 KeyListenerも継承したJTreeを実装する
401 :
デフォルトの名無しさん :2006/12/28(木) 18:09:07
>>399 KeyListenerも継承したJTreeを実装する
>>400 お答えどうも有り難うございます。
KeyListenerのKeyPressedの中でAltが押されたかを調べてflagを立てて、
SelectionListerのvalueChangedの中でそれを調べれば確かに分かります。
でもその場合、別のコンポーネントにフォーカスがあって、その後にALTを押しながらJTreeのノードをクリックした場合にvalueChangedの中でAltの検知に失敗してしまいます。
MouseEventだとAltが押されてるかわかるので、それを利用できないか考えてみます。
しかしTreeSelectionEventのほうがMouseEvenより先に発生してるんですよね。JTreeの場合。
404 :
デフォルトの名無しさん :2006/12/28(木) 20:32:01
質問です。 PDFファイルからテキストのみを抽出したいのですが iTextで可能でしょうか? PDFBoxを使ってみたのですが不要な半角スペースが 入ってしまいうまくできませんでした。 WebでiTextを調べるとPDF生成ばかりでテキスト抽出 の方法が分かりませんでした。 教えてください。よろしくお願いいたします。
Threadのjoin()メソッドで停止させたスレッドを、 ボタンをクリックして任意に復帰させたいのですが、 notify()メソッドでは使だめなのでしょうか? 調べてみたのですが良くわからなかったので、 スレッドの復帰のさせ方をどなたか教えて下さい。
スレッドはそもそもjoinでは停止しないんだが。 しかもnotifyなんか全然関係ないし、何がしたいのか。
408 :
405 :2006/12/28(木) 21:58:19
ボタンをクリックする事により、 スレッドのON/OFFができる。 上記のような処理を実現したいのです。
410 :
405 :2006/12/29(金) 03:12:31
>>409 何とか理解できました、ありがとうございます....
演算子オーバーロードってまだ出来ないの?
c++みたいなのじゃなけりゃ欲しいけどな。 BigDecimalとかかなり面倒だし。
C++の演算子オーバーロードって評判悪いの?
まだないんですね。
BigDecimalとかは演算子オーバーロードの対象する計画はあるみたいだね 独自定義は糞設計防止のためにさせないほうがいいと思うけど、interface制約とかで出来てもいい。
Java SEとJava EEの違いを教えてください。 はてな、ウィキペディアを見ましたが分かりませんでした。
大雑把に言えば EE:サーバ用 SE:パソコン用 ME:携帯用
EE : サーバサイドアプリ(Webアプリケーション) SE : 単体アプリ(バッチ〜GUIアプリ)
419 :
デフォルトの名無しさん :2006/12/30(土) 18:55:25
servletとappletの連携ってどうやったら出来るの?
>>415 MathContextの問題があるしな。
うまく遺憾と思う
421 :
:2006/12/30(土) 20:25:49
JFrameの右上にある×印を押したときと同じ動作をするボタンを作りたいんですけど、何を呼べばいいのですか? setDefaultCloseOperationで設定した動作をするようにしたいんです。
>>419 どのような連携を望んでいるのかよく分かりませんが
サーブレットからJSPにパラメータを埋め込んでappletにパラメータを渡すという事でしょうか。
>>421 processWindowEvent(WindowEvent e)で如何でしょうか。
>>422 appletからservletへのパラメタを渡す、あるいはその逆、
sessionを使用した処理などです。
424 :
:2006/12/30(土) 20:58:04
>>422 そういうふうに自分でイベント発生できるとは知りませんでした。
望みどうりできました。どうもありがとうございました。
>>422 HTTPの枠組みでできること、以上の機能は、標準にはない。
javax.servlet.*に依存する機能をアプレット側でも使いたいなら、
自分で作り込む必要がある。
>>423 ソケット通信や
WEB上のファイル(servletのコントロール下にある)を介在してやりとりするというのは如何でしょうか。
428 :
:2006/12/30(土) 22:28:36
メニューというのは実質的には JPopupMenu が割り当てられたボタンのことです。 「ボタン」が押されると JPopupMenu が表示されます。「ボタン」が JMenuBar 上にあれば、そのメニューはトップレベルウィンドウです。 「ボタン」が別のメニュー項目であれば JPopupMenu は「プルライト」メニューです。 とJavaDocに書いてあるんですけど、右クリックしたときに表示されるポップアップメニュー用にのJPopupMenuのインスタンスを、メインメニューのJMenuにも割り当てて共有することはできるのですか?
失礼しました。最後ミスタイプしてました。 メニューというのは実質的には JPopupMenu が割り当てられたボタンのことです。 「ボタン」が押されると JPopupMenu が表示されます。「ボタン」が JMenuBar 上にあれば、そのメニューはトップレベルウィンドウです。 「ボタン」が別のメニュー項目であれば JPopupMenu は「プルライト」メニューです。 とJavaDocに書いてあるんですけど、右クリックしたときに表示されるポップアップメニュー用のJPopupMenuのインスタンスを、メインメニューのJMenuにも割り当てて共有することはできるのですか? つまり JPopupMenu popup = new JPopupMenu(); popup.add(new JMenuItem("copy"); ... .. setComponentPopupMenu(popup); JMenu menu = new JMenu("edit"); menu.add(popup) という感じでJPopupMenuをJMenuに直接割り当てて共有したいんです。でもJMenuにはJPopupMenuをaddできないみたいなんです。
>>427 アプレットでセッション使う方法なんてそもそもあるの?
URL url = new URL("servletのURL"); これでOK
スタンドアロンでという意味だと思うが・・・ セッションってかCookieだよな
スタンドアロンでセッションを利用できるわけが無い。
そもそも何に使用するの?
appletとservletの連携だろ?javaapplicationとしてのappletとservletとの
連携の話だろ?だったら
>>431 でいいじゃん。
ああ、なるほど、間近のレスしか読んでなかった。
435 :
デフォルトの名無しさん :2006/12/31(日) 22:26:42
コンテキストとはどういう意味なんでしょうか?
その場みたいな。カレントみたいな。
実行環境一式みたいな。 コンテキストスイッチ→タスク切り替え 実行時コンテキスト→変数やメソッドのスコープ とかって使われる。
Javaアプリの起動とかを高速化する方法ってあるのかな? 重くて重くてorz
439 :
デフォルトの名無しさん :2007/01/01(月) 11:23:17
質問。 いまJavaで何か作ったらclassファイルが作成されてさらにそっからJavacコマンドで動かしてるけど javac使わずに普通のEXEファイルみたいに使用することは不可能なんですかね? ie上で動かすアプレットならいけるとは思うのですが。単独で動かすことは不可能なんですかね?
>>438 プロファイラでどこがボトルネックか調査した?
442 :
JAVAはじめました :2007/01/01(月) 18:04:15
はじめましてJAVAはじめました。 本当に初心者なのであんまり難しく言われるとわからないのですが、 「はじめてのJAVAプログラミング(SHUWA。SYSTEM)」という本を買ってみました。 本の通りにやっているのですが、はじめのソースコードがコンパイルできません(涙)。 いろいろ設定を変えてみてもいつも「’javac‘はコマンドとして認識されていません」と出てきてしまいます。 本に付属していた「Java2SDK、 Standard Edition1.4.0」をインストールしたのですが… エラーメッセージから考えるとjavacのコマンドが認識されていない(そのままなんですけどね;ω;)って事なんですよね? PCが壊れてるのかな〜?どなたか解決の糸口を教えてください。
同じく初心者の俺が応対しよう 環境変数、パスの設定をしなさい ――終――
446 :
435 :2007/01/01(月) 18:24:14
>>436 ,437さん
レスありがとうございます。
実行環境一式というと、例えばグラフィックコンテキストだったら
・描画領域
・色
・フォント
などの情報を指すのでしょうか?
1が押されたときにx=1;をして、 1以外のキーが押されたときにy=1;をしたいのですが どうやって書けばいいのでしょうか? if(KeyPressed){ if(key=='1'){ x=1; } if の後を教えてください
(key!='1'){ y=1; } }
普通はelseを使うけどね if(KeyPressed){ if(key=='1'){ x=1; } else{ y=1; } }
450 :
447 :2007/01/01(月) 19:35:29
なんか「1以外のキーが押されてるとき」ではなく、「1が押されていないとき」 に反応してるっぽいのですが・・・・
押されてないという情報もkeyに入ってるのか。じゃあ if(key=='2'||key=='3'||key=='4') って感じで想定してるキーを全部書けば?
KeyPressedはちゃんと働いてるのか?
Hello world
>>447 keyPressedとkeyTypedの違い分かってる?
455 :
447 :2007/01/01(月) 21:25:53
わかりません。keyTypedというものを知りませんでした。 調べてきます
456 :
447 :2007/01/01(月) 21:53:48
ざっとみてきたけどわかりませんでした。 keyTypedって何ですか?
457 :
JAVAはじめました :2007/01/01(月) 22:16:08
>>442 です。
分かりました…pathのc:¥がc;¥だったです(苦笑)。コンパイル→実行できました。
質問です。 今日友達から.jarのファイルをもらったんですけど、これはJavaのファイルですよね? これを起動したいんですが、WinRAR入れてて中身がzipのように解凍できるだけで、 ソフトの起動の方法がわかりません。 jarファイルはどのように扱えばいいのでしょうか?
winrarの設定でjarを外せ
465 :
459 :2007/01/02(火) 08:01:26
質問です。 戻り値の型がobject型のメソッドを呼んで、その値を受け取った際、 この値の元の型を判断し、それに変換してくれるようなメソッドはありませんか?
ありません
>>466 キャストの代わりをするメソッドが欲しいってこと?なら言語仕様上ありえないよ。
オブジェクトの型は、getClass()で取得はできるけど。
>>466 通常、Object型が返ると言うことは
何が入ってくるか分からない
それを何かにしたいということは
その後に行う操作が何通りかに決まっているということだろ?
なら自分でそういうベタな分岐作ればいいんじゃない?
↑のgetClassか、instanceofとかで。
470 :
デフォルトの名無しさん :2007/01/02(火) 22:24:56
Commons Modelerで下のようなコードを書いたのだがMbeanとして登録されない。 間違いを教えてください。 MbeanTest test = new MbeanTest(); ObjectName name = new ObjectName("test.MbeanTest:name=tests"); Registry registry = Registry.getRegistry(null, null); registry.registerComponent(test, name, null);
471 :
466 :2007/01/02(火) 22:48:50
>>467 さん、
>>468 さん、
>>469 さん
回答どうもありがとうございます。
そういうメソッドは存在しないのですね…。
勉強になりました。
今回はinstanceofが使えそうなので、そちらで試してみます。
ありがとうございました!
472 :
デフォルトの名無しさん :2007/01/03(水) 00:13:01
C++でオブジェクト指向やデザパタの勉強してこれからJavaの勉強しようと考えるんですが ジェネリクス、リフレクション、アノテーションなんかを詳しく説明した初心者向けのおすすめ本ってありませんか? C++くらいしか知らないんでリフレクションとアノテーションあたりにすごいわくわくするんです。
やさしいJAVAは、無いな
.equals()を使って比較する場合に否定演算子は使えませんか? BufferedReaderを使って文字を入力させる際に文字が入力されていなければ終了させたいのですが while(s = br.readLine()!=null)では上手く動作してくれないので while((s = br.readLine()).equals(null))の逆をやりたいです。 これだとnull以外が入力された場合は終了になってしまうので。 どうかよろしくお願いします。
>>474 > while(s = br.readLine()!=null)では上手く動作してくれないので
演算子の結合順序を調べろって話じゃなくて?
> .equals()を使って比較する場合に否定演算子は使えませんか?
普通に !foo.equals(bar) すりゃいい。
けど、今回の話とは関係ないね。
>>475 レスありがとうございます。
確か文字列は参照型として扱われるので上記の文は使えなく
.equalsを使って比較するという話を聴いたことがありまして…。
>>472 そういうのは初心者向けじゃないから
そういうの抜きで勉強汁
そしたら、どうして導入されたのかがよく分かるはずだ
>>476 equals 使うのは同じ内容かを比較する時で、
同じ参照値か、を比較したいなら == か != でやる。
で、null は参照値なので null との比較は == か != でやる。
479 :
デフォルトの名無しさん :2007/01/03(水) 01:55:10
Effective Javaを読む前にデザインパターンを読んだほうがいい?
480 :
デフォルトの名無しさん :2007/01/03(水) 02:16:56
初心者ですが 最近、JAVAよりC++の方が簡単なような気がするのですが 気のせいでしょうか?
>>478 レスありがとうございます。
その方法ではできなかったので少し探していたらendsWith(String)という便利そうなものを発見。
本文中にif(s.endsWith(".")) break;を入れてとりあえずは解決しました。
ありがとうございます。
>>481 > while(s = br.readLine()!=null)
while((s = br.readLine()) != null)
483 :
デフォルトの名無しさん :2007/01/03(水) 03:51:31
質問なんですが、 創るjavaの454ページのソースを打ち込んだんですが、 76行目のところで、シンボルがなんたらというエラーがでるのですが、 これそのまま打ち込めばできるの? 持っていて読破した方おしえてください。 よろしく。 ほかのスレにも書いてしまいました。 すいません。 なんか気になって眠れなくて。 今からなんとか寝ます。おやすみなさい
484 :
デフォルトの名無しさん :2007/01/03(水) 09:39:17
2D画像の描画について質問なのですが、ビットマップにマスク用ビットマップを使用して別のビットマップを指定位置に貼り付ける(Win32APIのMaskBlt()な感じです)方法はどういったやり方があるのでしょうか? drawImageはマスク指定できないようですし、クリップしようにもビットマップからShapeへの変換がわからず‥‥
485 :
デフォルトの名無しさん :2007/01/03(水) 11:45:45
Java applet+Webサービスのフレームワークってありますか?
487 :
483です :2007/01/03(水) 15:43:53
485さんへ サンプルはダウンロードしました。 それも試してだめだった...... やはり間違いなのかな?
>>483 本を持っていない人でも答えられるように、ソースの該当箇所をプリーズ。
>>485 からダウンロードしたサンプルのファイル名の方がよりいいけど。
>>484 実行環境によるけど、png とかで半透明情報つけておいて、
そのまま drawImage すりゃ、完全に透明なピクセルは表示されない。
490 :
484 :2007/01/03(水) 18:09:40
>>489 プログレスバー系の処理したいので、透過画像を使うと応用効かないのでできるだけ避けたいのですが。
JDKでは用意されてなくて自前でマスクから演算するしかないのかな‥‥
>>490 java.awt.image.IndexColorModel 使ってみるとか。
既存のAPI調べたり工夫したりする知恵がないなら自力で実装しちゃう方が早いと思う。
応用きかないけど。
492 :
:2007/01/03(水) 19:59:20
Swingコンポーネントで、MOUSE_PRESSEDイベントを受け取ったコンポーネントで必ずMOUSE_RELEASEDイベントを受け取るようにするにはどうすればいいのですか?
>>492 基本的に無理。
マウスカーソルがアプリの領域外に出ると JNI とか使わないとイベント取れないし。
マウスカーソルがコンポーネント外に出ちゃっただけで
アプリの領域内にあるならなんとかできるかもしらんけど。
アプリ全体とか、MOUSE_PRESSED されたコンポーネント覚えておいて、
次にきた MOUSE_RELEASED を必ず覚えたコンポーネントに投げるとか
494 :
483です :2007/01/03(水) 20:26:06
SearchSample_2.java です。 guiのdatabaseフォルダーのなかに入っています。 エラーは77行目の ResultSet rs = ps.executeQuery(); の部分です。 よろしくです。
>>494 ダウンロードしたソースだと問題なくコンパイルできたぞ。
スペースが全角になっていないか、行末に「;」がちゃんとあるか、
クラス名は正しく書いているか、importを正しく書いているか、もう一度確認してみたら?
JSPページの中で、下記のようにJSPタグを用いて、nameの値を表示しています。 <jsp:getProperty name="data" property="name"/> 現状、nameが空文字だった場合、もちろん何も表示されません。 そこで、nameが空文字だった場合、"---"と表示するようにしたいのですが JSPの中でどのようにコーディングしたらいいのでしょうか? 下記のように書いてためしたのですけど、やはりだめでした。ちょっと無茶くちゃかな。。 <% String answer = %> <jsp:getProperty name="faqData" property="answer"/> <% ; if(answer.equals("")){ out.println("---"); } %> そもそも、スクリプトレットとJSPタグを用いて、コーディングは できないのでしょうか。
497 :
483です :2007/01/03(水) 23:40:09
ありがとうございます。 また再度やってみます
同一プロセス内で複数のJava仮想マシンが動作したためにエラーになりました。 って出るんだけど、どうしたら直るの? ガイシュツならごめんなさい。
>>498 ググれ。もしくはJavaをインストールし直せ。
500 :
デフォルトの名無しさん :2007/01/04(木) 01:08:58
Timerクラスとかを使用して、ある一定時間同じ事を繰り返すなどの、 バックグラウンド動作ってJavaでできるの?
にだ
>>500 cron みたいのを言ってるなら、できない事はないけど。
素直に cron とかタスクスケジューラとか使った方が良いとは思う。
503 :
デフォルトの名無しさん :2007/01/04(木) 02:32:22
Java6.0って何が変わったんですか? ただのfixですか?
>>503 にとっては、fixくらいの意味にしかならない可能性大。
506 :
デフォルトの名無しさん :2007/01/04(木) 04:26:01
eclipseで、メソッドやクラスの上にマウスを置くと、ポップアップ(?)みたいなjava.docのヒントが 表示されるようにしたんですが、 デフォルトだとヒント表示域が狭くて、F2を押してスクロールさせなきゃいけないんですが このヒント表示域を広げる方法ってありますか?
507 :
デフォルトの名無しさん :2007/01/04(木) 04:35:05
>>502 チャットサーバみたいなものをJavaで作成して、
サーバは常時起動していて、1時間間隔でサーバ管理者に
「サーバは動いてますよ」というメールを送るというような動作を想定しています。
>>507 Mbeanのノティフィケーション使え。
509 :
デフォルトの名無しさん :2007/01/04(木) 04:55:48
>>508 Timerクラスでは実現できないのでしょうか?
>>509 お勧めしないのには理由がある。
・プログラムがとまってしまったら自力で復帰しなくてはいけない。
・メールを送信していない間にも負荷がかかる。
Timerでも実現は出来る。好みの問題
JREについて質問です。 OS: LINUX FedoraCora5 JRE5.0をインストールしたいのですが SUNとJPackageのどちらを利用すべきでしょうか。
512 :
511 :2007/01/04(木) 11:39:21
っていうかfedoraのスレで聞いたほうがいいですよね。 すいませんでした。
すみません、質問させてください。 swingで作成した画面AとBがあり画面AからBを開くことができます。 このBを開くときに同時にAを閉じることはできるのですが、 Aは閉じないで(隠す)Bを閉じるときにAも閉じるという処理を行いたいのです。 人に聞いたところdestroy()を使えばできるようなことを言われたのですが BでAに対しての処理を行う方法がわかりません。 わかりづらい文で申し訳ないのですが 知っている方がいらしたらご教授願います。
514 :
デフォルトの名無しさん :2007/01/04(木) 14:34:04
ここしか質問スレなかったから、擦れ違い気味の質問しますね。 javaのアプリが重いので、高速化したいんですが、 javaの設定で変わりますか? adobe readerの場合、apiを削除したら起動が早くなるんですが、そんなかんじのやつ・・・。
…
516 :
デフォルトの名無しさん :2007/01/04(木) 14:43:58
517 :
ぴゅあ :2007/01/04(木) 16:28:41
>>513 Aは閉じないでBを閉じる
あたりのフレーズでググってみてはいかがでしょうか?
518 :
513 :2007/01/04(木) 16:30:04
>>517 さっそくの回答ありがとうございます!
自己解決しました
519 :
513 :2007/01/04(木) 16:51:54
>>517 回答ありがとうございます。
ですが重要なのは「Bを閉じるときにAも閉じる」ということなので
そのフレーズでは十分な検索結果は得られませんでした。
>>518 感謝レスの代行ありがとうございます。
ですが未だ解決していませんので
もう少し続行させていただくと助かります。
質問自体に問題があるようでしたらその旨
おっしゃっていただければ以降はあきらめますので
お願いします。
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Main extends JFrame{ public static void main (String args[]){ new Main(); } // コンストラクタ public Main(){ 省略 bt.addActionListener(new AL()); } class AL extends ActionListener{ public void actionPerformed (ActionEvent e){ ボタンを押した時の動作 } } } といったプログラムで、ボタンを押した際の動作を終えたら、また最初の画面に戻るようにしたいのですが、どのようにしたらいいものか解らないでおります。どなたかご教授頂けないでしょうか。宜しくお願い致します。
ボタンを押し終えたら閉じるようにすればいいんじゃないの?
>>520 何が分からないのかが良く分からない・・・。
「ボタンを押した時の動作」ってところに
「最初の画面に戻る」って内容を書けばいいんじゃないの?
処理はしてるのに再描画がされないって事???
523 :
520 :2007/01/04(木) 18:19:01
実は最初の画面が 1. 単語を覚える 2. 単語を登録する 3. 終了 というようになっておりまして、 登録してある単語が一巡したら、 また、最初の画面に戻るようにしたかったのです。 CUIですと、do 〜 while なんかで ループさせるようにすれば戻れると思うのですが、 GUIのプログラムはどうしたらよいうのかと 困っている次第です。
>>513 子に対して親を閉じる機能を使わせたいという事でしょうか。
インターフェースクラスやイベントリスナー等で検索すると良いかもしれません。
(親自身を子に渡し、閉じる事も出来ますが)
>>523 不明な個所は「イベントドリブン」という事でしょうか?
>> 522 その「最初の画面に戻る」って内容を どのように書いたらできるのか解らずにおります。 例えば、 public void actionPerformed (ActionEvent e){ new Main(); } としてみたのですが、そうすると当然のことながら 新しいウインドウが立ち上がってしまいました。
>>524 「初期メニュー」「単語を覚える」、「単語を登録する」それぞれをMainの子ウィンドウクラスにして切り替えればいいやん
>>520 setVisible(false)?
こういうこと?
それとも
dispose()?
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
?
>>526 「単語を覚える」画面を描画を行うメソッドを作成し
actionPerformedの中で呼んでみては如何でしょうか。
どのような画面かよく分かりませんが
JTextFieldやJLabelの初期化、repaintやvalidateTreeなど
>>526 ・今までのJFrameを殺して新しくJFrameを起動する
・JFrameの状態を遷移させる
どちらも貴方の条件を満たせそうですが実装方法は異なります。
お好きな方を選んでみては如何でしょうか。
>登録してある単語が一巡 この意味が分からなかった俺はアホなのだろうか。
533 :
520 :2007/01/04(木) 18:50:03
JavaでのMIDIに詳しい方、教えてください。
過去のJavaPressの記事 の
http://cappuccino.jp/keisuken/java/JavaSound/ の中の
MidiKeyboard.java ( MIDIキーボード・記録 )
っていのをコンパイルしたけど、
jreのバージョンによって、音が鳴ったり鳴らなかったり。
## java -version:1.5.0_07 SimpleMidiKeyboard
として起動すると、ちゃんと音が鳴るのだが、
## java -version:1.5.0_10 SimpleMidiKeyboard
だと、動作しているが、音はならない。
なんでだろ??
535 :
ぴゅあ :2007/01/04(木) 19:44:55
VMのバージョンが問題ではないでしょうか?
>>534 バージョンUPして鳴らなくなっているのは問題だな
537 :
520 :2007/01/04(木) 21:05:23
度々、申し訳ありません。 class Test1 extends JFrame{ public static main (String args[]){ new Test2(); } class Test2{ 〜 } } といったようにクラスの中にクラスを書けば 新しいウィンドウが開かずに遷移させることが解ったのですが、 class Test1 extends JFrame{ public static main (String args[]){ new Test2(); } } class Test2 extends JFrame{ 〜 } とクラスを分けて書くと新しいウィンドウが開いてしまいます。 どうすればクラスを分けて書いたときに遷移させることができるのか 教えて頂けないでしょうか。宜しくお願い致します。
>>537 クラスの中にクラスとかそういう問題じゃなくて
継承元のクラスの違いじゃないのか?
>>537 Swingはよく知らんがJFrameじゃなくてJPanelを継承とか
540 :
デフォルトの名無しさん :2007/01/04(木) 21:30:34
HelloWorldアプリケーションを作成したいのですが、
ファイル名HelloWorld.javaで
テキストフォルダの中身は
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello Java World !");
と入力し
コマンドプロンプトで
javac HelloWorld.javadeでコンパイルし、
java HelloWorld.javaと入力すると
Exception in thread "main"java.lang.NoClassDefFoundError:HelloWorld
というエラーがでてうまく行きません。
ttp://javafaq.jp/S002.html#S002-08 このサイトを見て
java -classpath . HelloWorld
と入力するとうまく行くので
CLASSPATHの設定がおかしいと思うのですが
CLASSPATHは環境変数で
.;C:\j2sdk1.6.0\lib\tools,jar と設定しており
ドットも入っている筈なので何が原因かわかりません
>>1 のwikiも見たのですが
クラスパスの設定のしかたの項目の
コマンドプロンプトでset CLASSPATH=%CLASSPATH%;.とやっても改善されず
クラスパスの設定方法は?へのリンクをクリックすると
サーバーが見つからないと出て、八方塞の状態です
プロンプトの再起動もしています。OSはXPでバージョンはJDK1.6です
いったい何が間違っているのでしょうか?
>>537 JFrameは1つにしてgetContentPaneだけ差し替えれば?
>>540 実行ファイルはjavaではなくclassファイルという事で宜しいかな?
543 :
ぴゅあ :2007/01/04(木) 21:35:58
>>540 windowsを再インストールしてみるとか
>>540 j2seはよくわからないんだけど、
mainを拡張しないでい〜んだ
エントリポイントってどこになるの?
545 :
540 :2007/01/04(木) 21:59:02
>>540 そうです
>>544 すいません
C,C++ならほんの少しわかるのですがJavaは今日から勉強を始めたため何を聞かれているのかわかりません
>>545 とりあえず「set classpath」の結果をコピペしてみ
547 :
デフォルトの名無しさん :2007/01/04(木) 22:05:06
プログラムが出来るようになりたいと思い本を買ってのですが最初っから意味不明です どうか教えてください 下に本文を書きます ソースコードをコンパイルする コードを作成したら、次にコンパイルという作業を行ないましょう。 この作業を行なうには、コンパイラと呼ばれるソフトウェアを使います。 コマンドプロンプトを起動して、ソースファイルを保存したディレクトリに移動してください。 そして、次のように入力します。 javac sample1.java すると、ソースコードがバイトコードと呼ばれる形式に変換され、 sample1.classという名前のファイルが作成されます。 このファイルはクラスファイルと呼ばれます。 >ソースファイルを保存したディレクリに移動してください。 とはどういう意味ですか?
>>547 コマンドプロンプト開いてhelp cdと打て。
それ読んでわからなかったらPC一般板かWindows板へどうぞ
コマンドプロンプトで cd ソースファイルを保存したディレクリ
550 :
540 :2007/01/04(木) 22:19:51
set classpath の結果はCLASSPATH=.;C:\j2sdk1.6.0\lib\tools,jar でした
551 :
デフォルトの名無しさん :2007/01/04(木) 22:20:07
すいません ディレクトリの時点でわかりません 僕にプログラムは速すぎますかね?
Java初心者です。 FileReaderクラスを使ってテキストを1文字ずつ読み込みたいんですが、 改行を無視するにはどうすればいいんでしょうか?
553 :
デフォルトの名無しさん :2007/01/04(木) 22:28:09
明日書店に行って、ディレクトリについて調べてみれ そして一歩ずつレベルアップしれ
Java初心者です。 FileReaderクラスを使ってテキストを1文字ずつ読み込みたいんですが、 改行を無視するにはどうすればいいんでしょうか?
ダブった…スマソ
557 :
540 :2007/01/04(木) 22:35:02
>>551 ディレクトリはフォルダの事です
cdはチェンジディレクトリの略でプロンプトで今どこのフォルダにいるのか変えるって感じですね
>>554 読んだ文字が改行だったら無視したら良いんじゃないの?
>>558 すみません、その方法がわからないんです…
>>550 C:\j2sdk1.6.0\lib\tools.jarじゃないのか?ピリオドがカンマになってるぞ
読み込んだ文字と改行文字 '\n' が等しいかどうか調べればいいんじゃないの
563 :
デフォルトの名無しさん :2007/01/04(木) 23:46:18
<SCRIPT language="JavaScript"> <!-- var image= new Array(); image[0]='000.jpg'; image[1]='001.jpg'; image[2]='002.jpg'; image[3]='003.jpg'; image[4]='004.jpg'; image[5]='005.jpg'; function randimage(){ x=Math.floor(Math.random() * image.length); imgframe.src=image[x]; t=setTimeout('randimage()',rtime); } //--> </SCRIPT> <IMG src="000.jpg" id="imgframe"> ↑ブラウザの更新するたびにランダムに画像を変更したいんですけど 上記のようにすると最初に000.jpgが表示されその次にランダムの画像に切り替わるんです。 つまり更新するたびに最初は000.jpgその次にランダムの画像という風になります。 最初にランダムの画像を出すにはどうすればいいでしょうか?
JavaScriptは受け付けてません。 # imgタグの吐き出し自体をスクリプトでやればいんじゃね?
#
>>565 # DOM使ってcreateElementからimg要素生成してappendChildのほうがスマートじゃね?
> よって、複数の同じタイプの変数を受け渡す場合、変数ごとの意味にこだわらずに、 >1つの配列にして扱うと、モジュール強度が高く効率の良いメソッドになります。 俺もこれは理解できないなと思った。 何か、やってることにたいし無理矢理意味の後付しただろ、これ。 見通しや、保守性を考えたらインターフェースの項目の意味は重要だろ。 例に挙げているのは、チェックと設定の対象という意味のある固まりだろ? Cなら構造体を使うような場面だ。
どう考えても思いつきで記事かいてるとしか思えん。 めちゃくちゃだ。
570 :
デフォルトの名無しさん :2007/01/05(金) 04:15:06
>>567 理解は出来る。
ただ俺がそのコード書いたら先輩に殺される。
気が狂ってるとしか思えんtips集だな
ふつうデータクラス作るだろ…
574 :
デフォルトの名無しさん :2007/01/05(金) 13:57:28
改行について教えて頂けますでしょうか? 出力する際に改行を入れたいと思い \n \r \n\r といった文字列を入力してみたのですが、 そのまま出力されてしまい、改行にはなっていません。 コーディングはUTF-8を使っているのですが、 それが問題なのでしょうか? もしUnicodeで改行を出力するにはどうしたらよいのでしょうか? よろしくお願い致します。
キーボード上で \ と n を続けて押したと言う意味であってる?>文字列を入力
576 :
デフォルトの名無しさん :2007/01/05(金) 14:14:53
そういうことだとおもいます。 System.out.println("test"+ "\n" + "test"); 例えば、このように入力しても、 test\ntest というように出力されてしまうのです><
JFrameの画面上にJPopupMenuを表示して JFrameをrepaintするとJPopupMenuが消えてしまいます。 JPopupMenuを消さずにJFrameを再描画する方法はありますでしょうか。 JPopupMenu.setDefaultLightWeightPopupEnabled(false);にしております。
578 :
577 :2007/01/05(金) 16:50:38
public class PopupMenuTest extends JFrame implements Runnable { private Thread repaintThread = null; public PopupMenuTest() { setSize(800, 600); JPopupMenu.setDefaultLightWeightPopupEnabled(false); GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); DisplayMode fullMode = new DisplayMode(800, 600, device.getDisplayMode().getBitDepth(), device.getDisplayMode().getRefreshRate()); device.setFullScreenWindow(this); device.setDisplayMode(fullMode); addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON3) {createPopup().show(PopupMenuTest.this, e.getX(), e.getY());}}}); setVisible(true); if (repaintThread == null) {repaintThread = new Thread(this);repaintThread.start();} } public void run() { while (repaintThread != null) { System.out.println("repaint");repaint(); try {Thread.sleep(10000);} catch (Exception e) {} } } private JPopupMenu createPopup() { JPopupMenu popupMenu = new JPopupMenu(); JMenu menu1 = new JMenu("menu1"); menu1.add(new JMenuItem("TEST")); popupMenu.add(menu1); return popupMenu; } public static void main(String[] args) throws Exception {new PopupMenuTest();} }
579 :
577 :2007/01/05(金) 17:21:37
フルスクリーン時に現象が発生するようです。 すいません。Swingスレッドで聞いてきます。
MySQLからexcuteQueryで抜き出したデータをprintlnで表示させたいんですが while ( result.next() ) { String msg = result.getString("id"); } out.println(msg); をForループ文に書き換えって可能ですか? msgの変数部分を配列に変えたいので、For文に書き換えたいたいのですが。 よろしくお願いします。
for( ;result.next(); )
582 :
580 :2007/01/05(金) 17:45:51
>>581 String[] msg;
for ( i = 0; result.next(); i++ ) {
msg[i] = result.getString("id");
out.println(msg[i]);
}
でokですか?何か違う気もするけど
583 :
513 :2007/01/05(金) 18:06:48
>>524 さん
回答ありがとうございます。
524さんの回答に従い検索したのですが、
ほとんどが自ウィンドウのイベントを取得するプログラムで
他のウィンドウに関連しての物を見つけることができませんでした。
重ね重ね申し訳ありませんが、よろしければ参考ページなども
教えていただけないでしょうか。
584 :
:2007/01/05(金) 21:30:58
日本語のJDK6のJavaDocはどこからダウンロードすればいいのですか?
585 :
デフォルトの名無しさん :2007/01/05(金) 21:35:17
すんません。クラスAで Jlabel 形式の変数JLBを定義しました。 自分で新たにクラスBを作成してこのクラスから変数JLBに適当なテキストをセットするにはどのように書けばいいですか、、、 クラスBを定義するところから教えてもらえませんか、、 クラスA内で処理すればできるんですが。Bからやろうとするとどうすればいいのか思いつきませんでした。
>>584 たぶんまだない
リファレンスの英語は中学生英語レベルだしそんなに難しくないだろ?
語彙の問題はあるかもしれんが
587 :
:2007/01/05(金) 21:44:00
>>586 まだですか。教えてくれてありがとうございました。
>>585 import javax.swing.*;
public class A {
private JLabel label = new JLabel();
public static void main(String[] args) {
B b = new B(new A().label);
try{Thread.sleep(3000);}catch(Exception e){}
b.changeText("もげ");
}
}
class B extends JFrame {
private JLabel label;
public B(JLabel label) {
this.label = label;
setDefaultCloseOperation(EXIT_ON_CLOSE);
label.setText("ほげ");
add(label);
pack();
setVisible(true);
}
public void changeText(String text) {
label.setText(text);
}
}
iアプリを作りたいと思い これからJavaを学びたいのですが 何から手をつけていいかわかりません。 おすすめの本がありましたら 教えてください。
>>588 ありがとうございますーーーー
今からこれコピーして意味理解します。
本当にありがとう。
591 :
585 :2007/01/05(金) 22:06:04
なんどもすんません、、 this.label = label; のthisというのはどこから持ってきたんでしょうか。。 ぐぐってもthisではほかの結果が多すぎて探せんです・・
java this でぐぐれ
java this だとだめでしたが java this 変数。でそれっぽいのが出てきました。ちょっと読んでみます。。 しっかし俺の買った本なんでsuperのっててthis載ってないんだ、、orz
thisは自インスタンスじゃああああああああああああ
>>591 オブジェクトのフィールドやメソッドなどのメンバには
(オブジェクト変数名).(メンバ名)
でアクセスするのが文法だが、
自インスタンスのメンバに限り
「(オブジェクト変数名).」が省略できる
省略しない時に、thisをつける
596 :
デフォルトの名無しさん :2007/01/06(土) 01:07:19
Linux上にroot権限で作成したファイルをJavaから消せるのでしょうか? root権限がないから消せないとか考える必要があるのでしょうか? よろしくお願い致します。
>>590 要はクラスBでクラスAで作成されたインスタンスにアクセスしたいなら、
クラスBに何らかの形でそのインスタンスのリファレンスを渡してやればいい。
B側でこのリファレンスを使って、そのインスタンスのメソッドなりフィールドに(アクセス権があるなら)アクセスできる。
>>588 ではBのコンストラクタの引数としてラベルのリファレンスを与えている。
他にもBにラベルのリファレンスを受け取るメソッドを作ってA側でセットする方法もある。
>>588 ではコンストラクタ内でテキスト変更をするだけでなく、後から変更できるようにするメソッドのために、
渡されたラベルのリファレンスをBのインスタンス変数として保持して、それを使っている。
Aの方にラベルのテキストを変更するメソッドを実装しておき、
BにはラベルのリファレンスではなくA自身のリファレンスを与えておいて、
BはAにテキスト変更のメソッド呼び出しだけをして、
実際の変更はラベルを保持しているA自身にやってもらう手もあるかも。
他にもいろいろと方法はあるかと。
>>596 root権限で作成されていても他のユーザも変更可能なパーミションなら削除できるんじゃまいか。
もしroot権限でしか削除不能なパーミションなら、JVMをroot権限で実行すれば消せると思うが。
このあたりはrmでファイルを消すのと扱いは変わらないと思う。
Javaド素人です。
クリップボードの内容を取得するプログラムが欲しいので色々探してみたところ、
ttp://wisdom.sakura.ne.jp/system/java/awt/Gjava56.html のサンプルコードを見つけたので、コンパイルしてみたのですが、何故か
public App65() {
の部分で
「メソッドの宣言が不正です。戻り値の型が必要です。」
と表示されてしまいます。
自分で色々弄ってみたのですが、解決しませんでした。お助け願います。
また、if文の分岐条件内の「!」には何の意味があるのでしょうか?
良ければこれも教えてください。
>>599 このサンプルはコンパイルを通らない間違ったサンプルだ。
通らないものをそのまま載せてる点でこのサイトは信用できないよ。
クラスの名前とコンストラクタの名前を一致させれば通る。
testとApp65のどちらかに統一する。もちろんソースファイルの名前もそれに一致させる。
!は論理否定。!に続く条件式の否定を意味する。
mainの中でもApp65を使ってるし、クラス名をApp65にする方が修正が楽っぽい。 ファイル名もtest.javaから変更汁
602 :
デフォルトの名無しさん :2007/01/06(土) 06:21:00
Unicode表現の2バイトのバイト列をcharに変換したいのですが 方法がわかりません。 char -> byte[] なら一旦Stringに直して String.valueOf(c).getBytes(); みたいにできるんですが。 これの逆をどなたか教えてください。
String str = new String(bytes, charsetName); // str の assert 処理 char c = str.charAt(0); でどうか。
604 :
602 :2007/01/06(土) 07:03:20
605 :
デフォルトの名無しさん :2007/01/06(土) 09:02:59
588のソースの 一番下のメソッドの引数(String text) のtextってどこからでてきたものなんでしょうか('A`) JFrameクラスの中に存在する変数ってことでいいんでしょうか?
606 :
606 :2007/01/06(土) 09:07:51
すんません、ぜんぜん違いますね、自己解決しました。
607 :
デフォルトの名無しさん :2007/01/06(土) 09:58:19
public Test(){ setSize(200,200); setVisible(true); btn=new Button("test"); btn.addActionListener(this); add(btn); } public void actionPerformed(ActionEvent ae){ repaint(); btn.setBackground(Color.YELLOW); } public void paint(Graphics g2){ if(im==null){ im=btn.createImage(getWidth(),getHeight()); g=im.getGraphics(); } g.setColor(c); g.fillOval(50,50,220,220); g2.drawImage(im,0,0,this); }
608 :
607 :2007/01/06(土) 10:00:35
上のソースコードを実行すると、 ボタンを押したときに背景が黄色にはなるんですが、 赤丸が描画されません。 何処をどう直せばいいのでしょう。
609 :
607 :2007/01/06(土) 10:28:28
getWidth,getHeightの前にbtn付け忘れてました。でも解決してません。 まじでわからんorz
>>607 g.setColor(c);
このcって何色?
611 :
607 :2007/01/06(土) 11:31:06
赤です。 Color c=Color.RED; で、フィールドで指定しています。
612 :
デフォルトの名無しさん :2007/01/06(土) 11:33:52
uncorrelated=あんどう=ヤフーチャットパソコンなんでも相談室常連 のようなカス2ch匿名投稿者のために <発信者情報>同意なしで開示へ ネット被害で業界が新指針 インターネット上のプライバシー侵害や名誉棄損について総務省と業界団体は、情報を書き込んだ発信者の同意がなくても 被害者に発信者の氏名や住所などを開示する方針を固めた。これまでは発信者が開示を拒否すれば、誰が悪質な情報を流したか 被害者側には分からず、泣き寝入りするケースが多かった。業界団体は新たなガイドライン(指針)を年明けに作り、来春から導入する。【ネット社会取材班】(毎日新聞) [記事全文] 2ch七田スレっド匿名投稿者 uncorrelated=あんどう プログラマー たなべまり●やり逃げ男 認知せず 彼女は私生児として子供を養育中。絶対に許すな。 2ch匿名投稿者に絶対に負けるな。社会が変わるまで徹底抗戦!! どんどん情報集まっています。花見写真も随時配信予定。 uncorrelated=あんどう 社会的制裁はこれからですよ。神様はちゃんと見ております。 たなべまり●の人生をめちゃくちゃにした男
Graphicsクラスのオブジェクトを他のクラスのメソッドに渡して drawImageを実行させたくて、引数のImageObserverが必要なんですが、 Graphicsクラスのオブジェクトから描画対象のComponentオブジェクトを得る方法ってありますか?
PDFをiTextを使って読み込んで、ある特定の文字列を置換したいのですがどのようにしたらいいのでしょうか。。 自分なりに調べてみたのですが解りませんでした。。 お手数おかけしますがよろしくお願い致します。
>>600-601 ファイル名とクラス名をApp65にすることで無事コンパイルできました。
!についても納得です。
ご親切にありがとうございました。
616 :
ぴゅあ :2007/01/06(土) 17:28:33
617 :
デフォルトの名無しさん :2007/01/06(土) 22:52:02
〜 前略 Container contena = frame.getContentPane(); JPanel jp = new JPanel(); JLabel display = new JLabel("0" ,RIGHT); GridLayout glayout = new GridLayout(4,4); jp.setLayout(glayout); JButton a1 = new JButton("1"); JButton a8 = new JButton("7"); 〜 JButton a16 = new JButton("16") 中略 jp.add(a1) 〜 jp.add(a16); contena.add(display,BorderLayout.NORTH); contena.add(jp,BorderLayout.CENTER); frame.pack(); frame.setVisible(true); のようにソースを書いたんですが、ラベルの文字が左寄せに戻ってしまいます。 どうすればいいですか('A`)
618 :
デフォルトの名無しさん :2007/01/06(土) 23:59:56
public class Test extends JFrame{ private JPanel panel; private JLabel display; private int btnArray=16; public Test(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setSize(400,400); Container contena=this.getContentPane(); panel=new JPanel(); panel.setLayout(new GridLayout(4,4)); display=new JLabel("0"); JButton[] btn=new JButton[btnArray]; for(int i=0; i<btn.length; i++){ btn[i]=new JButton(Integer.toString(i)); panel.add(btn[i]); } contena.add(display,BorderLayout.NORTH); contena.add(panel,BorderLayout.CENTER); display.setHorizontalAlignment(JLabel.RIGHT); this.pack(); this.setVisible(true); } }
619 :
デフォルトの名無しさん :2007/01/07(日) 00:02:14
>>618 ありがとうございます。
できればなんで617だとダメだったのかも教えてもらえんでしょうか
620 :
デフォルトの名無しさん :2007/01/07(日) 00:02:45
621 :
デフォルトの名無しさん :2007/01/07(日) 00:07:04
いや、俺も初心者なんでそこまでは^^; ひょっとしたら組み込む時に、 JLabelのHorizontalAlignmentってのが初期化されるのかも? ああ、試してないけど、JLabelのコンストラクタの所 JLabel display=new JLabel("0",JLabel.RIGTH); ならいけるのかな?
622 :
デフォルトの名無しさん :2007/01/07(日) 00:13:59
すんません、
>>618 での
main メソッドはどう書けばいいんでしょうか('A`)
617の時。余計なボタンとかパネルとか定義してないときは ちゃんと右寄せになってたんですけどね、、ラベルの文字。 追加したら左寄せになっちゃって。なんでかなーと、、 コンパイルエラー出るたびに何で、何での繰り返しですわ。。 その何でがわからんうちは初心者脱出できないんでしょうけど、、
624 :
デフォルトの名無しさん :2007/01/07(日) 00:24:19
>>622 、623
mainメソッドの中身は
new Test();
これだけです。
コンパイルエラーで駄目な所を教えてくれる間はまだ幸せだという事に、
あなたもきっと気づく時が来ます。
実は607で書き込んだものですが、未だに問題が解決しないorz
625 :
デフォルトの名無しさん :2007/01/07(日) 00:47:16
618で動きました。ありがとうございます もうちょっとさっきの原因調べてみます。。 って、、また新たな質問が。。 メソッド同士の関係がいまいちワカリマセン。 メインメソッド内で定義した変数は他の(同クラス)メソッドでそのまま使うことは無理なんでしょうか。 あと、メインメソッドっていったい何?って感じになってきてしまいましたorz
自己解決しましたorz
627 :
デフォルトの名無しさん :2007/01/07(日) 01:52:17
ファイル操作で、delete()を使ってファイルを削除したいのですが、 簡単なサーバを起動して、ファイルを削除した後、 サーバを起動したまま、消したファイルをまた作り、 消そうとすると、ミスします。 これが何故なのかがわからない状態です。 どうかご存知の方がいましたら、よろしくお願いします。
ミスってナーに?
629 :
デフォルトの名無しさん :2007/01/07(日) 02:02:23
>>628 ファイルが削除できていないというミスです・・・。
630 :
デフォルトの名無しさん :2007/01/07(日) 02:06:36
横からすみません。 中置記法を逆ポーランド記法に変換するプログラムを作ってます。 普通の二項演算子のみを扱うものならば出来たのですが、 ここから単項演算子を扱えるようにするにはどのように改良すればいいのでしょう? 一見、改良しなくてもマイナスくらいならいけそうな実行結果が出るのですが。。。
>>627 消したファイルを作った時に、きちんと close してる?
開いたままのやつを消そうとすると失敗するよ。
632 :
デフォルトの名無しさん :2007/01/07(日) 02:24:45
>>631 レスありがとうございます。
消したファイルを作成するときは、プログラム上ではなく、
フォルダ上で右クリック > 新規作成 > テキスト ドキュメント > 〜
と作成しています。
>>630 具体的なコードが分からないので改良法も含めて何ともいえないが、
マイナスがうまくいってそうな結果になってるのは、
単項演算子として働いているのでなく、
数値の一部の負記号として扱われているからじゃないか?
634 :
デフォルトの名無しさん :2007/01/07(日) 02:27:57
>>633 そんな気もするのですが。。。
例えば
A=-(B+C*D)/E→ABCD*+E/-=
って合ってますよね?
>>634 演算子の優先順位の設定にもよるとは思うけど、
ABCD*+(unary-)E/=
かも。A=(B+C*D)/-EとかA=(-B+C*D)/Eみたいなのもちゃんと解釈できてる?
あと、単項演算子のマイナスと二項演算子のマイナスを区別していないと、
スタックから何個被演算子を取ってくるべきか分からなくなるよ。
635のスタックからうんぬんは、 後置記法をスタックマシンで解釈するとき、ということで
637 :
デフォルトの名無しさん :2007/01/07(日) 03:20:43
A=(B+C*D)/-E→ABCD*+/E-= (さっきのと違いますねorz) A=(-B+C*D)/E→AB-CD*+E/= となりました。 単項演算子の - の場合、その前には左カッコ'('か演算子がくる、 右カッコ')'か文字であれば二項演算子の - とわかる。 これを用いて判別して、単項演算子のほうは(unary-)、みたいな表記にする という方針で改良していけばよいでしょうか?
>>637 A=(B+C*D)/-Eの正しい解釈はたぶんABCD*+E(unary-)/=だろうね。
結果はEで割ってから単項マイナスするABCD*+/E-=と変わらないけど。
単項マイナス、加減乗除、代入演算子、括弧だけの式の解釈なら、
単項演算子と二項演算子のマイナスの区別はそれでいけそうな気がする。
確証はないけど。
その手の式の解釈なら演算子順位文法の利用がパーザの手動構築では便利かも。
既にjavaの話題から離れてしまってるね^^;
単項演算子と二項演算子のマイナスの区別は、 前に項があったら二項、なかったら単項だよ。
640 :
デフォルトの名無しさん :2007/01/07(日) 04:45:56
書き込みねーぞてめーら
test
>>639 前に項があるってのはこの場合前に')'かアルファベットがあるってことじゃないのか
まあそうだけど、そういう認識だとプログラムがすっきりしないような。 必ずしもデザパタ使う必要は無いけど、 インタプリタパターンあたりの話は理解しておいた方が良くない?
実はインストールなのですがすみませんが教えてください。よろしくお願いします。 当方はすでに数回ほどEclipseを触ってみるために一度JAVA関係を インストールしたのでしたが、少なくとも現在までに、Windows2000において J2SE Runtime Environment 5.0 Update2 ・・・(*1) Java 2 Rintime Environment, SE v1.4.2_03 Java 2 Rintime Environment, SE v1.4.2_06 Java 2 SDK, SE v1.4.2_03 までのインストールが行なわれたようでした(「アプリケーションの追加と削除」で確認)。 ここで、今回 Tomcat、Axis らをインストールして準備し、JAVA_HOME 環境変数が 上記の JRE(*1) には当たっていたものの、Tomcat を起動したところ、 ----- M:\apache-tomcat-4.1.34\bin>startup JAVA_HOME\bin\jdb.exe is missing The JAVA_HOME environment variable may not be defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Using CATALINA_BASE: .. Using CATALINA_HOME: .. Using CATALINA_TMPDIR: ..\temp Using JAVA_HOME: C:\Program Files\Java\jre1.5.0_02 ファイル -Dsun.io.useCanonCaches=false が見つかりません ----- というエラーメッセージが出て起動が中断しました。 -Dsun.io.useCanonCaches=false という名前のファイルはなさそうなのですが、この場合はもう一度SDK等をダウンロードして 新しい環境を構成するべきでしょうか?またその場合は、現在のSDK等は一旦アンインストール するべきでしょうか?ご指導のほどよろしくお願い致します。
>>644 あ、、もしかすると
>JAVA_HOME should point to a JDK not a JRE
でしたか、、すみません、JRE(*1)ではだめだったんですね・・・。
ということは、JDK をインストールしないといけないということでしたか・・
この場合、以前の SDK のインストール先のディレクトリーがわかれば、そこに JAVA_HOME 環境変数 を当てればいいのかとは思うのですが、実はこれを探してみたのですが、どこにあるのか わかりませんでした・・ その場合は、「アプリケーションの追加と削除」で一旦アンインストールした上で、 SDK の最新版 j2sdk-1_4_2_13-nb-5_0-win-ml.exe を改めてインストールした方がいいでしょうか?
>>646 eclipse入ってるならeclipseのディレクトリ内にJDK入ってるはずだぞ
>>647 さっそくどうもありがとうございます、、今すぐにその中を探してみます
今みましたところ、 *SDK* の名のつくものは \org.eclipse.sdk.win32_2.1.2\ \org.eclipse.hyades.sdk.nls1_2.1.2\ が見つかりましたが、これらは J2SE SDK ではないようでした、やはり改めて最新版を インストールしたほうがいいでしょうか・・・ その場合は、現在の SDK は一旦アンインストールしてからにするべきでしょうか・・・
それとも、J2SE SDK はアンインストールしないで重ねて最新版をインストールしたほうが いいでしょうか?その方が Eclipse に対して問題を生じないでしょうか? この辺のことをやったことがないのであちこち見て回ったのですがわからないのでした。
651 :
デフォルトの名無しさん :2007/01/07(日) 15:57:43
みなさんありがとうございます。
とりあえず、単項演算子はマイナスだけ、あとは二項演算子の+*/-=とアルファベット
だけを使うってことにして、作ってみます。
>>637 に書いた方針でいこうと思うのですが、
改良前の時点で、
A〜Z → 5
= → 0
( → 4
) → 1
+と− →2
*と/ →3
のように、優先順位を数値にしています(数が大きいほど優先度が高い)
ここもいじる必要あります・・よね??
652 :
デフォルトの名無しさん :2007/01/07(日) 16:28:08
javaでウインドウを作ってそこに指定したURLのページを表示させることは可能でしょうか?
>>652 つ JEditorPane
ただし HTML3.2 相当なので、あまり使い物にならない。
>>649 Eclipse\JDK150ってディレクトリないのか?
>>654 たびたびどうもです、、
現在 Eclipse の構成は
C:\Program Files\eclipse-SDK-2.1.2-win32
eclipse
features
plugins
readme
workspace
となっていましたが、これらの中で *SDK* を検索しましたがないようです・・
どうして目に見える場所に SDK ディレクトリがないのかはまだわからないのですが、
一度現在の SDK を 「アプリケーションの追加と削除」 でアンインストールしても
Eclipse などの動作がおかしくなることはなければ、一回やってみようかと思います。
特に問題が起きる心配はないでしょうか?
>>647 ,654
でたらめ書くなボケ。
>>655 ずいぶんと古いJDKを使ってるね。特に理由がなければ最新の物を使った方がいいよ。
>>1 のwikiに書いてあるここから
ttp://java.sun.com/j2se/1.5.0/ja/download.html 「JDK 5.0 Update 10」というのをダウンロードして、インストールし直すといい。
古いのは消さなくてもいいけど、ディスク容量が気になるなら消してもいい。
インストールが終わったら、デフォルトではC:\Program Files\Java\jdk1.5.0_10というディレクトリに
インストールされるので、環境変数JAVA_HOMEにそのディレクトリのパスをセットする。
これでTomcatが動くようになる。
あと、Eclipseのバージョンもひどく古い。2.1.2って3年も前の物だよ。
最新は3.2.1。面倒くさかったら、All-In-One-Eclipseってのがあるから
それをインストールすると、一通りプラグインが入るので便利。
ttp://aioec.sourceforge.jp/
java.applet.AudioClipでWAVを再生する時に音量(ボリューム)ってどうやって制御するの?
>>657 できない
javaの外側のOS等の機能で制御するしかない
659 :
657 :2007/01/07(日) 17:48:58
>>658 javax.media.Playerで再生してGainControlで制御するしかないっすかね。
660 :
sage :2007/01/07(日) 18:01:59
質問します。 以下のようなソースで getContentPane();というメソッドがありますがこのメソッドを利用するときは JApplet ap = new JApplet(); Container cnt = ap.getContentPane(); のようにオブジェクトを作成して利用しなくてもいいのでしょうか? import java.awt.*; import javax.swing.*; public class Sample_2 extends JApplet { public void init() { Container cnt = getContentPane(); JLabel lb = new JLabel("Welcome Swing!"); cnt.add(lb); } }
661 :
デフォルトの名無しさん :2007/01/07(日) 18:14:14
継承してるから要らないんじゃね?と知ったかしてみる
>>660
662 :
660 :2007/01/07(日) 18:18:18
>>661 まじで教えてください!
どこでオブジェクト作成されているんですか?
javadocを見てもわかりません。
>>656 いろいろすみません。ありがとうございます。
>「JDK 5.0 Update 10」というのをダウンロードして、インストールし直すといい。
>古いのは消さなくてもいいけど、ディスク容量が気になるなら消してもいい。
ということは、古いバージョンがPCの中にどんどん積みあがって行っても
Eclipse には影響しないということなのですね、わかりました。
>All-In-One-Eclipse
わかりました、これを入れてみようと思います。
助かりました。何かありましたらまたよろしくお願い致します。
ではまた。
664 :
660 :2007/01/07(日) 18:49:09
OK! 解決したよ。フハハハハハ
すみません…ファイル入出力でお聞きしたいことが。。。なにぶんjavaが初めてで。 ファイル xyz.txt に 123 345 654\n 32 90 3\n … といった数値データが入っています。 それを変数 x y z にそれぞれ前から値を入れていって x+y+zや、x*y*zなど処理をして出力といったことをしたいのです。。。 cだとfscanf(file,"%d%d%d\n",&x,&y,&z)!=EOF)でやるのと同じなのですが aplletにしないとならず。 ご助言お願いします。
>>665 Stringのスプリットとか
ストリングトークナイザーとかで切り分けて 数値に変換
appletをどう使いたいのかは不明
>>666 ありがとうございます。読み込みはなんとかできました。
Java3Dで点の集合を表示したくて…うまくいかずどなたか御指導願えるとありがたいです。
Point3d[] vertex = new Point3d[10000];
try {
//file read
FileReader file = new FileReader("hoge.dat");
BufferedReader buff = new BufferedReader(file);
StreamTokenizer st = new StreamTokenizer(buff);
st.whitespaceChars(',', ',');
// token 処理
while(st.nextToken() != StreamTokenizer.TT_EOF){
x=st.nval;
if(st.nextToken()==StreamTokenizer.TT_NUMBER)
y=st.nval;
if(st.nextToken()==StreamTokenizer.TT_NUMBER)
z=st.nval;
vertex[count]=new Point3d(x, y, z);
//System.out.println(vertex[count].x + " " + vertex[count].y + " " + vertex[count].z);
count++;
}
file.close();
}
catch(Exception e){ System.out.println("Exception: " + e); } /* PoiintArrayクラスを使って物体の形状を作成 */ PointArray geometry = new PointArray(vertex.length, GeometryArray.COORDINATES); geometry.setCoordinates(0, vertex); /* 各頂点ごとに色を指定 */ /* 作成したGeometryを元に物体を作成 */ Shape3D shape = new Shape3D(geometry); objTrans.addChild(shape); objRoot.compile(); return objRoot; という感じなのですが ファイルから座標は読み込めているのに、ぬるぽが出てしまいます。 座標を配列で手入力しているときは出てくるのですが。。。。お願いしますorz
vertex[0]={0 ,0,0} vertex[1]={1 ,1,0} … のようにすると表示される、ということです
これの意味が文法的に分かりません。 Thread app = new Thread(){ public void run(){ 何やら記述; } }; app.start(); インスタンスを作ると同時にThreadクラスの中身を書いているんでしょうか? Threadクラス独自の書き方なのでしょうか?
JAVA初心者です。 申し訳ありませんが教えてください。 コンパイルして、クラス名を打ち込んでいるのに実行されません。 設定は一通りやっています。 パスも通してます。coldntopenになります。
672 :
デフォルトの名無しさん :2007/01/08(月) 00:30:25
>670 無名クラスで検索汁
675 :
デフォルトの名無しさん :2007/01/08(月) 02:16:17
MouseEventについての質問です。 右クリック、左クリック、ホイールクリックの動作によって それぞれ違う値を返す事はできますか?
676 :
質問age :2007/01/08(月) 06:16:05
JNDI を使わないでピュアJavaでMXレコードを引く方法を探しています。 どなたかご存知でしたらサンプルなどご紹介ください。
すみません質問があります。 .jarにまとめたCUIのプログラムをダブルクリックで一発起動はできないのでしょうか? GUIを使った場合は起動が可能だったのですがプロンプト上で動くものでは無理なのでしょうか? java -jar hoge.jarと入力すれば起動できるようにmanifestファイルも記述済みです。 提出用に使いたいのでできれば簡単に動く方が良いと思いまして。 何かしら方法がありましたらご教授頂きたいです。 よろしくお願いします。
>>671 一応推測だけど
java hoge←クラスファイルに.classはいらないよ?
>>675 俺は携帯開発しかイベント処理わからないけど携帯ならば大体全部のボタンが使える。
だから使えるんじゃない?
APIとかに載ってるのでは?
>>677 OSは?
拡張子の関連付けすればいいのでは?
>>680 OSはXP HOMEのSP2。
普通はコマンドプロンプトが勝手に起動してくれるもんなんですか?
GUIのjar形式ならダブルクリックで問題なく開きます。
今作った奴動かすとプロセスでjavaw.exeが増え続けるだけで全く動きが見られないです。
>>677 キック用にバッチファイルなりシェルスクリプトなり作って、それをダブルクリックしてもらっては?
>>682 それいいね。
Windoswだとバッチだよね?
シェルスクリプトなら少し分かるんだけど。
ありがとう。
ちょっくら勉強してくるわ。
>>683 解決っぽくとヨカッタ♪
それはそうと、誰かおいらの
>>676 に答えてくださいまし。
rawソケット扱わなきゃいけないから JNI じゃなきゃできないのかなぁ。。。
だったらJNDI を強制した方が確実だよなぁ。。。
>>684 力になりたいけど俺にはわかりそうにもないです…。
ちょっと見てみたけどバッチとか全く分からないんだが笑
勝手に終了しちゃうから新しくプロンプト開いてやろうと思ったけどそうしたら処理の一部にならなそうだし。
それなら自動終了しないようにできたりしたらいいなっと。
激しくスレチなのでここらで退散。
>>685 以下2行だけ書いたテキストファイルを hoge.bat で保存すればおっけーですヨ。
java -jar hoge.jar
@pause
2行目は結果を表示して一時停止するためのものです。
おいらの方のは
> nslookup -type=mx yahoo.co.jp
と同じことを Java でどうやったものかな、という相談でした。とりあえず素直に JNDI で
やることにします。どなたかクレバーな方法をご存知でしたら後からでも教えてくださいです。
>>686 自分もそうやって実行してみたのですがどうも開いた場所がカレントディレクトリにならないようで…。
コマンドプロンプトの作業フォルダ %HOMEDRIVE%%HOMEPATH% が開いた時点でのカレントディレクトリになってまして。
そうしたら話にならないじゃないかとか思いましてね笑
nslookupですか。
最近digとhostと共に覚えましたが(Windowsはコマンド違うんだっけ?)Javaではちょっとわからないです。
力になれずにすみません。
688 :
675 :2007/01/08(月) 09:37:42
>>679 APIには、
クリックとホイールのスクロールしか書いてありませんでした
このことについて触れているHPも無いようだし
無理という事なんですかね
JavaのJTextAreaみたいなコンポーネントで特定の文字のフォントだけ変えたり色付けたりしたいんですがそのようなコンポーネントはありますでしょうか?
690 :
デフォルトの名無しさん :2007/01/08(月) 11:58:57
691 :
690 :2007/01/08(月) 12:05:25
書き忘れました。 日本語が表示しないのはlinux上です。 同じアプリをwindows上に載せれば動きます。
「日本語が表示しない」ってtypoだと思ったら天然だったのか・・・ 日本語の勉強からやり直せ。
693 :
690 :2007/01/08(月) 12:20:48
そのまんま、「日本語が表示しない」のですが。。。 数字や英字は表示します。
マジかよ…。 「(何者かが)日本語をしない」か、 「日本語が表示されない」のどちらかだろ? 日本語が何を表示しないんだよ。
695 :
694 :2007/01/08(月) 12:34:06
あー、推敲中に文節が抜けた。 訂正するのもマンドクセ。
696 :
690 :2007/01/08(月) 12:37:21
JFreeChartで出力したグラフ上に、日本語が表示しません。 これ、日本語おかしいですか? 申し訳ないけど、あなたの言われてることは揚げ足取りにしか見えません。
主語とか述語とか受動とか、知らないのかな・・・
揚げ足取りなんて逃げてると、バベルの塔が崩壊するぞ。 客とのコミュニケーションは、プログラマのいちばん大事な仕事だ。
>>696 おかしいです。
本当にそれが正しい日本語だと思っているのなら、それは大きな問題です。
あなたの言葉は読み手に正しく伝わらない可能性があり、
また、他人の言葉をあなたは正しく解釈できない可能性があるからです。
っていうか、そのおかしいところの知識が不足している事を指摘できない 中途半端に知ったかってる香具師の多い事多い事w
こういう人、客やプロジェクトメンバーとちゃんと会話できてるのかな・・・
>>702 まぁメンバーにはいて欲しくない事は確かだ。
>>696 文意通りに解釈すると「日本語」が表示しない訳だから
原因は表示を抑止している日本語にあるという事だよな。
ってことはJavaスレッドで質問しても解決しないぜwwwww
>>696 みんなは意地悪してる訳じゃなくて
貴方の態度・姿勢は、まじめに回答してあげたくなる質問者のそれではありませんよ
という事を教えてくれてるんですよ
つーかようするにわかんないって言う事を難癖つけてごまかしてるだけだろw
っつーか就労ビザはあるのか?
中国人が韓国人を罵倒するスレはココですか?
まぁまぁ、みんな察してやれよ。 日本語で書かれた入門書やWebサイトが読めないんだから(プゲラ
>>690 本気で解決策が欲しかったら、そういうのに反論せず、その前に環境を詳しく書け。
Linuxのディストリビューションとバージョン、Javaのバージョンくらいは必須だ。
アプリケーションサーバもあった方がいいが、この場合は多分書いても変わりないだろうな。
初心者に対して偉そうにするやつは大した能力が無い翔子w
能力があるんだったら答えてやりなよ、低姿勢で。
713 :
デフォルトの名無しさん :2007/01/08(月) 14:27:56
日本語が表示されませんならスッキリ 以下質問 public int getMatchMapIndex(int locX,int locY){ int i=0; while(i<map.length){ int x=map[i].getX(); int y=map[i].getY(); if(locX==x && locY==y){ return i; break; } i++; } } 上記をコンパイルすると"制御が移る事はありません"と駄目だしされるのですが、 どう直せばwhileの中の処理を実行してくれるのでしょうか。 mapはJButtonの配列です
残念ながらJFreeCharなるもののスキルは無いw
いや待て、break;無くしただけだと「値を返さないパスがある」旨のエラーが出る。 メソッドの最後にreturn i;が要る。
>>713 ,716
デバッグをし易くするためにも、旧態然とした表記だが
・変数の宣言は関数の先頭で(この際必ず初期値を入れておく)
・return 文は必ず関数の最後に1回だけ
とした方が良いよ。そうすりゃヘンな値が返ってきた時に
デバッグ出力(またはブレーク)を1箇所書くだけで済む。
>>717 それは賛同できんな。
そうしないとデバッグしにくくなるのはメソッドサイズがでかくなって
可読性が落ちる場合だからな。
メソッドサイズがせいぜい20行くらいだったら問題にはならん。
>>717 > (この際必ず初期値を入れておく)
なんで言語仕様に局所変数の代入チェック機能があるのに、
それを壊すようなルールにするかね?
初期値入れるならコンパイルエラー出てからで良いじゃん。
721 :
デフォルトの名無しさん :2007/01/08(月) 16:30:50
数を含む文字列のリストをソートをするときに、例えば "X88Y" < "X133Y" となるようなComparatorって標準又はオープンソースでありますか? 自分で書かないと駄目?
>>690 「日本語を表示できない」か「日本語が表示されない」かな
この場合「日本語」は操作の対象だから目的語、もしくは受動態の主語
肝心の質問については、分からん
>>717 デバッグしやすくするという名目で
バグを入れやすくするのは本末転倒だと思う。
>>718 が基本。
>>713 public int getMatchMapIndex(int locX, int locY){
for (int i = 0; i < map.length; i++) {
int x = map[i].getX();
int y = map[i].getY();
if (locX == x && locY == y) {
return i;
}
}
throw new IllegalStateException("no match!");
//or return -1;
>>713 public int getMatchMapIndex(int locX, int locY){
for (int i = 0; i < map.length; i++) {
int x = map[i].getX();
int y = map[i].getY();
if (locX == x && locY == y) {
return i;
}
}
throw new IllegalStateException("no match!");
//or return -1;
}
と、坊っちゃまが申しております
哀れなヤツw
(´・ω・)カワイソス
もう、日本語が不自由な方はほっといてあげてくれ。 リアクションも含めて痛い
ていうか流石に釣りだろ スルー推奨
たまに、ポリモルフイックに〜みたいな表現を見掛けるのですが、どういう意味なんですか?
例えばどんな?
コードは同じなのに違うメソッドの実装が呼ばれる
今、どこのサイトか覚えて無いのでうろ覚えになりますが、 クラスの設計の話だったと思います
リロードしわすれてた…
>>735 ありがとうございます
うーん、イマイチわかりません…
ポリモルフィズム でぐぐれ
ポリモルフィズム=多態性、多相性、多様性 利用しているクラスAから見た時、クラスBが抽象的に作られていた場合 class A{ public void hoge(B obj){ obj.hello(); } なわけだが、objの実態は クラス B △ ├───┬───┐ クラス C クラス D クラス E だったりして、クラスC〜Eで、メソッドhelloの振る舞いが個別に定義されたりしている 状態のことをポリモフィックだ、とか逝ったりする。
740 :
ぴゅあ :2007/01/08(月) 17:59:19
やはり私が回答しないと荒れますね
>>739 public class C extends B{
public void hello(){
System.out.println("こんにちは");
}
}
public class D extends B{
public void hello(){
System.out.println("にーはお");
}
}
public class E extends B{
public void hello(){
System.out.println("ぐーてんもるげん");
}
}
B[] objs = new B[]{ new C(), new D(), new E()};
for(int i=0 ; i < objs.length ; i++){
objs[i].hello();
}
結果
こんにちは
にーはお
ぐーてんもるげん
>>739 あ、多相性ですか
つまり、同じクラスを継承していれば同じように扱う、だけど動作は違う
…みたいな感じですかね大分わかってきました
>>738 調べてみます
>>741 おお!分かりやすいです!
どうもありがとうございました
>>743 例は普通の継承だけど、通常はBはinterfaceか、helloメソッドをabstractにした抽象クラス
であったほうがよいでしょう。
ポリモルフィックでぐぐるとウィルス情報ばっかりなんだな 知らんかった
>>744 分かりました
覚えときます
>>745 そうなんですよ
正直、ポリモルフィズムで調べればいいことが
分かっただけでも収穫です
747 :
713 :2007/01/08(月) 18:54:36
みなさんレスありがとうございます。 726のソースコードに直してコンパイルしたらすんなりと通ったのですが、 狙った結果が得られませんでした。 試しにfor文のなかに System.out.println(i); と入れてみたら、JButtonの配列数は108なのに、 ループしないで i=0 のまま return にいってしまっているみたいでした。 IllegalStateExceptionを調べたら、不正な時にメソッドが呼び出されると 検出されるそうですが、ありきたりなコードしか書いてない筈なのにorz
748 :
デフォルトの名無しさん :2007/01/08(月) 18:59:11
711 :名無しの心子知らず :2007/01/08(月) 18:07:37 ID:z9dqgFU5 21:28:02uncorrelated: ナイスバディーの都合の女が(.∀.)イイ!! 21:28:16seikun_lib: いたいめにあってますものねw 【解説】ナイスバディーのハイカムさん(本名 たな◎まり◎)さんは 都合のイイ女ではありませんでした。本気で結婚を考え出産したようです。 許せませんアンコ 養育費を払っていません。確認済! uncorrelated: まあ、クルマに乗らないからな・・・ takemaru123: のればいいのに takemaru123: 彼女とドライブとか ekaru: 息子とドライブとか〜 uncorrelated: んー・・・都内は、やっぱ不便だよ。 uncorrelated: *** ekaru さんを無視します。 【解説】アンコは、彼女のお父さんと会って ”この件は無かったこととさせていただきます” 茶封筒に3万円だけだったと聞きます 確認済!
749 :
デフォルトの名無しさん :2007/01/08(月) 19:00:18
百八か…いや、なんでも無い
>>747 配列数も一緒に表示してみた?
751 :
713 :2007/01/08(月) 21:56:30
>>750 凄く恥ずかしい話ですが、原因がわかりました。簡単でした。
引数に0,0が入っててmap[0]のgetX(),getY()の返り値も0,0、
条件一致 → returnで for文を抜けてたんですね。
715の理由がやっと解った(鬱
しかし今度は、
レイアウトを GridLayout(9,12)に設定してある JPanel に JButton 配列を組み込んでるのに、
ボタンのX座標、Y座標が全部(0,0)っていう新しい問題が orz
Window関係のクラスにヒントがありそうな気がするのでまた悩んできます。
お騒がせしました。
でも、まじで解らなかったらまた来てしまうと思うので、その時はお願いします(汗
webプログラマのスレがマ板にないのはなぜ??
あるよ 使用してる技術ごとに分散してるだけ
>>753 thanks
組み込み系とかはあるのになんでないんだろう
って思ってた。
Javaの質問ではないかもしれませんが・・・ 自分で作ったJavaアプレット付きのHTMLファイルをWindowsの「背景」にしたところ、 あるマシンでは背景でアプレットが正しく動作したのですが、 他のあるマシンではアプレットが表示されるはずの部分が全て灰色になります。 JDK、JREのバージョンはどちらも1.5で、 OSは動くマシンがXP、動かないマシンが2000です。他に大きな違いは思い当たりません。 チェックボックス「Active Desktop に Web コンテンツを表示」はチェックされています。 2000のマシンでもJavaアプレットを動かすには何が足りないのでしょうか? HTMLファイルはこんな感じです。 <html> <head></head> <body> <applet code="HogeApplet" width="400" height="300"/> </body> </html>
756 :
デフォルトの名無しさん :2007/01/08(月) 23:27:12
javaって実行EXEファイルつくれるんですか?
757 :
デフォルトの名無しさん :2007/01/08(月) 23:33:36
758 :
デフォルトの名無しさん :2007/01/08(月) 23:37:44
>>755 本当に同じJREで動かしてる?
2000の方はMSのVMだったりしてない?
windows環境でもmingwやcygwinでgcjを導入できる
>>759 インターネットオプション > 詳細設定 > Java (Sun) がONで
インターネットオプション > 詳細設定 > Microsoft VM が全てOFFなら
SunのJREで動くはずですよね?
書き忘れましたが、
そのHTMLファイルをIE、Firefoxで開いた場合にはアプレットは動作します。
>>761 灰色表示ってことはアプレットであることは理解されてるっぽいけど、
Javaコンソールにクラスが見つからないとかセキュリティエラーとかのエラー表示もなし?
763 :
デフォルトの名無しさん :2007/01/09(火) 06:38:59
java
764 :
デフォルトの名無しさん :2007/01/09(火) 10:31:43
class AA{ void hoge(){ System.out.println("hoge"); } } class main{ public static void main(String args[]){ args[0] rr = new args[0]; rr.hoge(); } } 実行 java main AA っていうふうにはできないの?どうすればAAのインスタンス生成して メソッド呼べるの?
それが出来ると思う理屈が分からん
やりたいことよくわかんが AA rr = new AA(); rr.hoge(); とかじゃだめなのか
>>764 > どうすればAAのインスタンス生成して
AA a = (AA)java.lang.Class.forName("AA").newInstance();
> メソッド呼べるの?
java.lang.Class.forName("AA").getMethod("hoge", null).invoke(a, null);
>>767 無理。AA も hoge も public が付いてないから失敗する。
>>764 リフレクションでぐぐればいいと思う。(スレ内検索でもいいかも)
770 :
デフォルトの名無しさん :2007/01/09(火) 12:05:20
javaって何?ってレベルなんだけど、 iアプリが作りたいです。 作れるようになるには、このスレのテンプレの流れに沿っていけばいい? それともiアプリは別物?
771 :
764 :2007/01/09(火) 12:38:50
ランダムにあるクラスのインスタンスを生成したいの。 その生成したいクラスは、いくつあるのかはわからないという状況
>>771 あのサンプルコードからその意図を読み取るのは神業すぎるような・・・
つーか、だからそれリフレクションだってば。 ググれ。
クラス名でインスタンス生成できるから、ランダムにクラス名を選択するコード書けばいいし。
もっと詳しいことが知りたければ、ある程度は実際の処理の説明が必要だな。
>>771 class main {
public static void main(String[] args) throws Exception {
// args[0]で指定された名前のクラスオブジェクトを取得
Class c = Class.forName(args[0]);
// cのインスタンスを生成
Object o = c.newInstance();
// cからhoge()という名前のメソッドを探し出し、インスタンスoのそれを呼び出す
c.getDeclaredMethod("hoge").invoke(o);
}
}
hogeにpublicが付いていないため
>>767 のgetMethodが失敗するのは代わりにgetDeclaredMethodを使えばいい。
AA,hogeにpublicが付いていないためinvokeに失敗するかどうかは、
mainクラスとAAクラスが同じパッケージに属しているかどうかにかかっている。
>>767 ではAAでキャストしているが、クラス名が実行時まで解決できない場合があるので、
生成されたインスタンスはObjectで受け取る。
もし、AAって分かっているなら、こんな面倒をかけなくても普通に
>>766 のようにできる。
ランダムにいくつかのインスタンスを生成したいなら、c.newInstance()を使って複数回生成すればいい。
生成したインスタンスはObejct配列なりObjectのコレクションなりで管理すればいい。
もし、バージョンが1.4以下とかだったら、
>>767 のように、
c.getDeclaredMethod("hoge", null).invoke(o, null);
にして。5では可変引数に変わったのでnullだと警告がたぶん出る。
どちらのバージョンでも通すなら、
c.getDeclaredMethod("hoge", new Class[]{}).invoke(o, new Object[]{});
かな。
勘違いしてた。インスタンスを複数でなく、生成したいクラスが複数あるのか。
>>772 の言うように、Class.forName("クラス名");で複数のクラスオブジェクトを作って、
その中からランダムに選べばいい。
> どちらのバージョンでも通すなら、 c.getDeclaredMethod("hoge", (Class[])null).invoke(o, (Object[])null); でも良いね。
>>776 うん。試しにコンパイルしてみたら、警告メッセージも、
> 非可変引数呼び出しに関しては java.lang.Class[] にキャストしてこの警告を出さないようにします。
> 非可変引数呼び出しに関しては java.lang.Object[] にキャストしてこの警告を出さないようにします。
になるね。余計なオブジェクトを生成しない点ではnullへのキャストの方がいいかも。
個人的にはオーバーヘッドが気にならないなら避けられるキャストは避けちゃうけど。
自作のJavaソフトウェアを長時間使い続けていると、 メモリ使用量が増え続けていきます。 オブジェクトの参照を全て無くせば、 ガベージコレクトでメモリは解放されていくんですよね? そういったメモリのことや、オブジェクトの参照がわかるツールはありませんでしょうか?
779 :
755 :2007/01/09(火) 20:08:14
>>762 Javaコンソールもトレイアイコンも表示されません。
ブラウザで動作させたときは表示されるのですが。
追記
今になって気付いたんですが、
例のHTMLファイルをappletviewerで表示させようとしたところ
何の表示、出力もなくすぐappletviewerが終了してしまいました。
この現象もXPのマシンでは確認できません。
アプレットのソースコードはこんな感じです
public class HogeApplet extends JApplet {
public void init() {
this.add(new JLabel("hoge"));
}
}
782 :
デフォルトの名無しさん :2007/01/09(火) 21:58:07
>>758 それなら cygwin で作れるんじゃね
783 :
デフォルトの名無しさん :2007/01/09(火) 22:08:18
アプレットの開発をしていて下記のソースで書いたところSDK上のアプレットビューアで 動作しましたがHTMLファイル(JREで動作)で開くと実行エラーが出ます。 FileInputStream inData = new FileInputStream("test.txt"); InputStreamReader readChr = new InputStreamReader(inData); BufferedReader buffChr = new BufferedReader(readChr); エラー文 java.security.AccessControlException: access denied (java.io.FilePermission test.txt read) どのようにすればJREで動作しますか?
>>778 Java6 なら jconsole じゃね?
786 :
デフォルトの名無しさん :2007/01/09(火) 23:50:51
せんせー昨日から初めてとりあえずJDK落として入れてみたんだけど今Javaフォルダをよく見ると jdk1.6.0 jre1.5.0_10 jre1.6.0 の3つのフォルダができてるんですが 初心者用のWeb見回すとjdk1.5.0をDLして来いとかいてあるんだけど俺の1.6.0で問題ないの? HelloWorldで練習してて途中でJDKのAPI 仕様ドキュメントを持っておけって書いてあったけど Webには1.5.0はあるけど1.6.0は見当たらない もしかして1.6.0って出たばっかでドキュメントも出てないってこと?
はぁ・・・ もう1.6って・・・ 1.5も触ってないのに・・・ ドンドン置いていかれる・・・・
789 :
デフォルトの名無しさん :2007/01/10(水) 00:42:49
>>779 htmlファイルの方を
<applet code="HogeApplet" width="400" height="300"/>
から
<applet code="HogeApplet" width="400" height="300">
</applet>
にして試してみて。appletviewerはxhtmlを理解しなかったかも。
2000で動かないのもxhtmlになっているからかもしれず。
>>788 仕事で使ってないからと言って触らなければ置いていかれるだけ。
せいぜい趣味で使ってついていこうや。
今から趣味で遊ぶとして Java6とRubyではどちらがいいか? っと敢えてこのスレで聞いてみるテスト
>>792 両方。
というか、他人にどっちが良いか聞く前に触ってるようでないとダメのような気もする。
794 :
755 :2007/01/10(水) 02:03:36
>>790 HTMLファイルを修正したところ、appletviewer上で正しく動作するようになりました。
ありがとうございます! appletタグの書き方には気をつけます。
アクティブデスクトップ上では変化ありません。
やはりな オレ逝ったああああああぁぁぁぁ・・・・・
下記のローカル環境で、リンクにセッションIDを埋め込むテストをしています。 OS WINDOWS XP HomeEdition SP2 IE 6.0 Java 5.0_08 TOMCAT 5.5 ユーザーがcookieを有効にしていないときを想定して、 サーブレットにおいて、response.encodeURLを使って、 リンクにセッションIDを埋め込もうと思っているのですが、 うまくいきません。 とりあえず、cookieが有効か無効かを確認するために サーブレットにおいて、下記のコードを記述したところ、 結果は、それぞれ、true、falseでしたので、cookieが有効になっているようでした。 request.isRequestedSessionIdFromCookie()); request.isRequestedSessionIdFromURL()); ブラウザの設定で、[インターネットオプション]-[プライバシー]で すべてのCookieをブロックに設定していて、テストするときは、 IEを立ち上げなおしています。 (IEを立ち上げなおして、設定を確認すると、 すべてのCookieをブロックに設定されています。) IEのこの設定だけでは、Cookieをブロックできないのでしょうか? Cookieをブロックするために、ローカル環境での開発において、 なにか特別な設定をする必要がありましたら、教えてください。 よろしくお願いします。
ちなみに、2chでは、Cookieを有効にしないと書き込めませんが、 上記の設定で、Cookieが無効になっていたため、さきほど、書き込むことが できませんでした。 だけど、WEB上の他のサイト(Yahoo!など)では、この設定でも Cookieが有効になっているようで、それらのサイトにアクセスすると、 C:\Documents and Settings\ユーザー名\Cookiesに、きちんとCookieが 格納されます。 どういうことかさっぱりです。。
>798 ありがとうございます。参考になりました。
800 :
770 :2007/01/10(水) 09:29:19
ねー、ここで聞いちゃいけないことだったの?
>>800 Javaってなにのレベルを克服したらこっちのスレがいいかもな
>CLDC+MIDP+携帯電話用Javaスレッド part 6
その昔、MSXでBASICはある程度極めてたんだが、それからパソコンから遠ざかってた。 いまからjavaはじめようと思うんだけど全く別物かな。
>>802 同じ手続き型言語、差異は気の持ちようだ。
805 :
デフォルトの名無しさん :2007/01/10(水) 11:55:09
こんにちわ javaでボタンを押すと画面を切り替えられるようにするには どうすればいいのでしょうか?
806 :
デフォルトの名無しさん :2007/01/10(水) 12:23:23
807 :
デフォルトの名無しさん :2007/01/10(水) 12:23:43
こんにちわ javaでボタンを押すと帳票が出力されるようにするには どうすればいいのでしょうか?
808 :
デフォルトの名無しさん :2007/01/10(水) 12:25:47
こんにちわ どうすればいいのでしょうか?
809 :
デフォルトの名無しさん :2007/01/10(水) 12:26:27
こんにちわ javaでボタンを押すとどうすればいいのでしょうか?
810 :
デフォルトの名無しさん :2007/01/10(水) 12:28:28
こんにちわするには どうすればいいのでしょうか?
さてと はい、次の質問は?
812 :
デフォルトの名無しさん :2007/01/10(水) 13:03:12
こんにちわ Java 世界
813 :
デフォルトの名無しさん :2007/01/10(水) 14:28:06
おじゃましま javaの学習をしようと思うんですが JavaEEとJavaSEがあって何を落とせばいいのかわかりません。 JDK6 with NetBeans5.5とJava EE 5 SDK Update 2 の どちらを落とすのがセオリーですか? 揃えられる物は揃えておきたいのですが…
JDK6 with NetBeans5.5 Java EE SDK は、サーバサイドアプリの作成に必要な追加環境。
ど…独楽回しだ…
817 :
816 :2007/01/10(水) 18:55:54
あ…誤爆だ…
きっと「どくらく」って読んでるんだよ、そっとしておこう。
>>818 どくらくまわしって読むんだよ
javaやる前にまず日本語から勉強したほうがいいようだな
か…漢だ
822 :
816 :2007/01/10(水) 21:30:05
よ…大学院からやりなおすがな ∧__∧ (`・ω・´) .ノ^ yヽ、 ヽ,,ノ==l ノ / l | """~""""""~"""~"""~"
お勉強始めようと思って sunのSDKのページに行って5.0(1.5?)落とそうと思ったら (use 32-bit version for applet and Java Web Start support) ↑このような注意書きがあったんですけど サーブレット、JSPは出来ないと言うことでしょうか? 当方linuxでEM64環境なのですが、 今のところ1.4か32bit版を使わないといけないのでしょうか? ちょっとだけ本読んでみたんですけど 自サバなら1.5使った方がよさげだし やっぱり64bitで32bit使うと、パワーが100%発揮されませんよね?
>>824 アプレットとか web start 使いたかったら 64bit版じゃなくて 32bit版使ってね、って話でしょ。
くっそおおおおおおおおおおおおおおおおお バグだらけで泣けてくる。 何でできないのかがわからん。 HP調べても正解が載っているだけで 何で自分の書き方がダメなのかわからん。
泣く 諦める どこまでちゃんと動くのか調べる
828 :
824 :2007/01/10(水) 23:33:21
829 :
デフォルトの名無しさん :2007/01/10(水) 23:57:42
import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.text.JTextComponent; class test { static JLabel display; static JTextField TX; public static void main (String args[]){ JFrame frame = new JFrame("test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contena = frame.getContentPane(); JPanel jp = new JPanel(); JTextField TX = new JTextField(20); JButton B1 = new JButton("OK"); actionA1 act = new actionA1(); B1.addActionListener(act); display = new JLabel(" "); jp.add(TX); jp.add(B1); contena.add(display,BorderLayout.NORTH); contena.add(jp,BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } } class actionA1 implements ActionListener{ public void actionPerformed(ActionEvent ae){ String pass = test.TX.getText(); test.display.setText("ok"); } } と書くとコンパイルは通りますが実行時にString pass = password.TX.getText();の行のせいでエラーが起きます。どうすればいいですか、、
830 :
829 :2007/01/10(水) 23:58:44
みす、、String pass = test.TX.getText();のところです
>>829 > JTextField TX = new JTextField(20);
局所変数宣言して、そっちを初期化しちゃってるから、
static JTextField TX; の方は何も代入されてない状態なんじゃね?
staticメンバとして static JTextField TX; mainの中でローカル変数として JTextField TX = new JTextField(20); このとき、 String pass = test.TX.getText(); で参照されるのは未初期化の前者。
833 :
デフォルトの名無しさん :2007/01/11(木) 00:10:43
そうなんですか。。 orz じゃあ、そのローカル変数から文字列を取り出すにはどうすればいいですかね、、、
mainの JTextField TX = new JTextField(20); を TX = new JTextField(20); とする。
tomcatとapacheを連携させてtJSP/サーブレットを 自宅PCで実行したいと思ってます。 tomcatはダウンロードできましたがとapacheはどこでダウンロードすればいいのか分かりませんでした。 それと、Apache Software Foundationとは何ですか?
>>835 tomcat と apache の連携を考える人が
apache がどこにあるか分からんてのはありえんと思う。
どこで apache を知ったのか興味がある。
839 :
デフォルトの名無しさん :2007/01/11(木) 01:39:40
>>838 init() 内で buffer を初期化する前に、gameTitle() が呼ばれちゃってて
buffer_g = buffer.getGraphics(); の時には buffer が null のまんまとか。
Eclipseでpackage作ってるんですが、何故かエラー吐きます String pushTitle(String n){ try{ String title; String rss = n; DocumentBuilderFactory doc = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = doc.newDocumentBuilder(); URL adress = new URL(rss); // 対象URLの読み込み InputStream main = adress.openStream(); // 入力ストリームに展開 Document doct = builder.parse(main); Element root = doct.getDocumentElement(); NodeList btitle = root.getElementsByTagName("title"); Element element = (Element)btitle; title = (String)element.getFirstChild().getNodeValue(); return title; } catch(Exception e){ System.out.println("エラー"); } } このメソッドは型 String の結果を戻す必要があります。 というメッセージが出るのですが、titleの型はString指定しているのですが、これでも駄目なんでしょうか?
>>839 たしかAWT/Swingでは無理じゃなかったっけか?
>>842 > catch(Exception e)
こっちのブロックでも String型の値を return するか、
Error か RuntimeException のサブクラスを throw する必要がある。
もしくはメソッドにthrows節つけてExceptionのサブクラスでもいいけど。
>>844 どこさがしてもないんですよねー
なんでないんだろ
意味わからんね
>>845 言われてみれば確かにcatch側でも戻り値設定しなきゃ無理ですよね^^;
ありがとうございました。
エラー処理はpackageを扱う側でやってるので、catchの中に戻り値設定する方法でやってみます。
エラー自体はお蔭様で消えました。
>>846 理由は知らん。Unixだと実装できないとか? そーゆー理由かも?
>>840 これならできそうです。どうもありがとう。
>>843 板違いでしたか。
あまりよく分かってませんでした、ごめんなさい。
851 :
838 :2007/01/11(木) 02:35:45
>>841 ありがとうございます。
具体的にはどんなふうに書きかえればいいのでしょうか?
質問ばかりですいません
>>851 init() の先頭にある
> th = new Thread(this);
> th.start();
を init() の最後にもってくるとか。
853 :
838 :2007/01/11(木) 02:46:36
>>851 ありがとうございます、コンパイルできました!
本当に助かりました。
854 :
デフォルトの名無しさん :2007/01/11(木) 03:02:22
//Bookクラス class Book { //フィールドの宣言 String title; String author; int price; //フィールドの値を返すメソッド //書名を返す String getTitle() { return title; } //著者名を返す String getAuthor() { return author; } int getPrice() { return price; } void setTitle(String title){ t = title; } void setAuthor(String author){ a = author; void setPrice(int price){ p = price; } }
855 :
デフォルトの名無しさん :2007/01/11(木) 03:03:09
class Hon3 { public static void main(String args[]) { Book book1; book1 = new Book(); book1.title = "基礎JAVA"; book1.author = "山田 洋一"; book1.price = 2400; System.out.println("title:"+book1.setTitle()); System.out.println("author:"+book1.setAuthor()); System.out.println("price:"+book1.getPrice()); } }
856 :
854,855,856 :2007/01/11(木) 03:04:56
以下のようなエラーがでます。 改行の関係で分割して載せました。。どこが悪いか教えてほしいのですが・・ C:\Documents and Settings\t\デスクトップ\java>javac Hon3.java Hon3.java:27: 式の開始が不正です。 void setPrice(int price){ ^ Hon3.java:30: ';' がありません。 } ^ Hon3.java:46: '}' がありません。 ^ エラー 3 個
>>856 setAuthor() が閉じてない。
あるいは setAuthor() 内に setPrice() を
定義しようとしたのかも知れないけど
Java では関数内関数の定義は無理。
# 関数内クラスの定義は可能なので冗長で構わないなら同等のことは出来る
BufferedReaderなどを使うプログラムでキーボードから入力させるとき、3文字以内に限定し、 4文字以上ならエラーを出し、もう一度聞きなおすにはどうすればいいのでしょうか?
859 :
854,855,856 :2007/01/11(木) 03:34:27
ありがとう、 }が足りないのは気がついたのですが、まだ残りの二つが・・ 式の開始が不正・・・
>>859 もしかして 854(Book) も Hon3.java に記述してる?
Java は一つのソースファイルに原則一つしかクラス(orインターフェース)定義できないよ。
(クラス内クラスとかなら書ける。)
で、クラス名とソースファイル名が合致してる必要もあり。
854 の内容は Book.java に書く。
861 :
854,855,856 :2007/01/11(木) 03:42:44
もとい、}をsetAuthorのあとにつけたら、エラーがなぜか増えた・・ C:\Documents and Settings\t\デスクトップ\java>javac Hon3.java Hon3.java:23: シンボルを見つけられません。 シンボル: 変数 t 場所 : Book の クラス t = title; ^ Hon3.java:26: シンボルを見つけられません。 シンボル: 変数 a 場所 : Book の クラス a = author; ^ Hon3.java:29: シンボルを見つけられません。 シンボル: 変数 p 場所 : Book の クラス p = price; ^ Hon3.java:42: setTitle(java.lang.String) (Book 内) を () に適用できません System.out.println("title:"+book1.setTitle()); ^ Hon3.java:43: setAuthor(java.lang.String) (Book 内) を () に適用できません System.out.println("author:"+book1.setAuthor()); ^ Hon3.java:44: setPrice(int) (Book 内) を () に適用できません System.out.println("price:"+book1.setPrice());
>>858 入力の確定はEnter?
であるならば普通に readlLine() して
読み込んだ文字数調べて4以上なら
またやり直すように while 文回せばヨロシ。
>>861 変数 t とか変数 a とかどこで宣言してるのさ・・
this.title = title だと脳内で読んじまってたよ。
864 :
854,855,856 :2007/01/11(木) 03:58:22
いや、えーと t=title; と書いたとこは、 ____ = title; となってる穴埋めで、他に思いつかなくてついtと書いてしまったのです。 条件としてはsetTitleで出力を行うことなので、悩んでいます。
宿題ならそれ用のスレに行くヨロシ。
866 :
854,855,856 :2007/01/11(木) 04:09:01
this title = title; this author = author; this price = price; にしたら、エラーがだいぶ減った・・ ただ、まだ3つありますな、。 C:\Documents and Settings\t\デスクトップ\java>javac Hon3.java Hon3.java:42: setTitle(java.lang.String) (Book 内) を () に適用できません System.out.println("title:"+book1.setTitle()); ^ Hon3.java:43: setAuthor(java.lang.String) (Book 内) を () に適用できません System.out.println("author:"+book1.setAuthor()); ^ Hon3.java:44: setPrice(int) (Book 内) を () に適用できません System.out.println("price:"+book1.setPrice()); ^ エラー 3 個
宿題とそれ以外を瞬時に見分ける良い方法を誰か俺に教えて下さい。 パトラッシュ僕疲れたよ。なんだかとっても眠いんだ。
868 :
858 :2007/01/11(木) 04:11:42
>>862 さんありがとうございます。
読み込んだ文字数の調べ方を教えて頂けると助かるのですが
>>868 String#lengthくらいは知っておいても損はないぞ。
正確にはchar数であって文字数じゃないけどね。
870 :
858 :2007/01/11(木) 04:25:41
ありがとうございました。詳しく調べてみます
>>866 宿題スレには宿題スレのルールというものがあるんよ
setTitle, setAuthor, setPriceはどれも値を返さないメソッド
しかもそれぞれ引数を要求する
titleやauthorやpriceを返す別のメソッドを実装してそれをHon3の方で使う
>>834 亀レスですがありがとう、、
ってか思いっきりケアレスミス、、
WEB-INF\classes\testapp\Sample.class
この環境におかれているサーブレット(Sample.class)をURLから
直接呼び出そうとしているんですが、うまくいきません。
web.xmlでURLパターンを記している場合、
そのパターンで指定した論理名でアクセスできることは確認しました。
しかし、web.xmlにサーブレットの情報を記述せずに、
下記のアドレスで、直接アクセスしようとすると、ステータスコード404が
返って来ます。今読んでいる本には、サーブレットに直接アクセスできると
書いていたんですが、どうしたらいいのでしょうか?
http://localhost:8080/testapp/testapp.Sample
>>873-874 Servletクラス名直接指定はセキュリティ上の問題が大ありなので、
デフォルトでは無効になっている。
どうしてもというのなら
「InvokerServlet」でぐぐってみろ。
>>875 いや〜ありがとうございます!
3年ほど前の本で勉強してたので、サーブレットの仕様が変わっちゃったのでしょうかね。
Invokerのデフォルト仕様が変わったのは Servletの仕様じゃなくて、Tomcatの仕様変更。
>>877 TOMCATの変更でしたか。勉強になりました。
キーボードの特定のキー(例えばAとか↑とか)が押されたら処理を開始するようにするにはどうすればいいでしょうか?
>>880 4.1.12からの変更ですか・・・
この本には、特にweb.xmlにInvokerServletについて、設定を記すべきと書いてないので、
この本ちょっと不親切ですね。。
一応報告ですけど、さきほど、web.xmlにInvokerServletに関する設定を記した結果、
サーブレットを直接呼び出すことができました。
WEB-INFの下のweb.xmlか、%TOMCAT_HOME%\conf\web.xmlの
どちらかのweb.xmlにInvokerServletに関する設定を記述しないといけないようでした。
はじめは、自分の手違いから、両方に記述していたので、うまくいきませんでした。
コンテナ起動時に、タグ名がユニークじゃないというエラーが発生。(Child name 'invoker' is not unique)
ある本で、何かの設定について、
WEB-INFの下のweb.xmlと%TOMCAT_HOME%\conf\web.xmlに同じ設定が
記されていた場合、WEB-INFの下のweb.xmlの設定が優先させるということを
読んだことがあったので、両方記述しても大丈夫だろうと勝手に判断していました。orz
InvokerServletの設定に関しては、どちら一方のweb.xmlに記述しないといけないみたいですね。
882 :
デフォルトの名無しさん :2007/01/11(木) 11:20:50
883 :
デフォルトの名無しさん :2007/01/11(木) 13:53:27
質問です。 mainメソッド以外でコマンドライン引数を得るにはどうしたらいいんでしょうか? よろしくお願いします。
884 :
デフォルトの名無しさん :2007/01/11(木) 14:05:48
JSliderを使ってWindowsMediaPlayerみたいに 再生時間を調整できるよにするにはどうしたらいいですか?
HttpServletRequestの文字コードを簡単に判定する方法ってありませんかね? うまい方法が見当たらなかったので・・・・
886 :
デフォルトの名無しさん :2007/01/11(木) 14:17:15
intをbyte配列にするにはどうすればいいのでしょうか?
>>886 1.4 以降で一行で書きたいなら
byte[] array = ByteBuffer.allocate(4).putInt( value ).array();
>>887 すいません。1.3.1でお願いします…
>>888 ByteArrayOutputStream bout = new ByteArrayOutputStream();
new ObjectOutputStream(bout).writeInt( value );
byte[] array = bout.toByteArray();
エンディアンが違ったらダメだけど。
892 :
デフォルトの名無しさん :2007/01/11(木) 15:50:38
これを見る限りでは
ttp://java.sun.com/products/java-media/jmf/2.1.1/formats.html ファイル形式:.wav
サンプル率:44.100kHz
サンプルサイズ:16Bit
チャンネル:ステレオ
は問題なく再生出来そうなのですが再生に失敗します。(下記エラーメッセージ)
Unable to handle format: LINEAR, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 176400.0 frame rate, FrameSize=32 bits
Failed to prefetch: com.sun.media.PlaybackEngine@15c7850
Error: Unable to prefetch com.sun.media.PlaybackEngine@15c7850
また、ステレオ→モノラルにしたファイルは再生が可能です。
ファイル形式:.wav
サンプル率:44.100kHz
サンプルサイズ:16Bit
チャンネル:ステレオ
理由が分かる方、教えて下さい。
893 :
892 :2007/01/11(木) 17:14:07
すいません、再生できました。 しかし、数回に一度上記のような警告が出ます。 タイミング的なものなのでしょうか・・・。
prefetch
よくサンプルプログラムに、複数の.javaソースファイルがあるのを見るのですが、 複数のソースファイルでのプログラミング方法がよく分かりません。 プログラムが長くなると色々不便なので、この分割する方法が知りたいです。 参考URL知りませんか?
分割する方法の前に、Javaを勉強してください。
897 :
892 :2007/01/11(木) 18:50:33
複数ファイルを同時に再生すると起こるようなので
各処理をスレッドにて行うようにしたら現象は出なくなりました。
・・・しかし根本的な解決になっていない気がします。
>>894 もう少し・・・・もう少しだけヒントを下さい。
Prefetchable.isPrefetched()、Controller.prefetch()
ここら辺を勉強すれば良いですか?
898 :
892 :2007/01/11(木) 19:03:58
>>894 助言どおりplayerのprefetchを呼び出したら現象が出なくなりました。
現在、現象を理解できていないのでこれから調査したいと思います。
ありがとうございました。
899 :
ぴゅあ :2007/01/11(木) 19:33:17
ランダムの数字を三つ表示し、その三つの数字の平均の数値も表示する。 そのようなプログラムを作りたいのですが、どのようなプログラムなんでしょう?
>>899 どう見ても違うと思うw
Javaには#includeは無いからファイル分割は
クラス分割につながるんだということを
知らないと・・・・・
>>900 宿題頑張れ
>>900 ランダムな数字を作る×3
平均値を求める
表示する
903 :
888 :2007/01/11(木) 22:05:07
904 :
uchu :2007/01/11(木) 22:33:41
Thread.sleep()を使って、あるテキストフィールドに一定時間だけ 文字列aaaを表示して、その後に文字列bbbを表示するには どうしたらよいでしょうか? tf.setText("aaa"); // 時間かせぎ mThread thread = new mThread(); thread.start(); try { thread.join(); } catch (InterruptedException e1) { } tf.setText("bbb"); // 時間かせぎ mThread thread = new mThread(); thread.start(); try { thread.join(); } catch (InterruptedException e1) { } tf.setText("ccc"); のようなコードを実行すると、bbbが表示されずに、時間稼ぎ処理の 時間のあとにcccが表示されてしまいます。
906 :
デフォルトの名無しさん :2007/01/11(木) 23:13:29
一度オブジェクト指向のとっかかりとしてJAVAを勉強してC++にうつったんですが またJAVAの勉強もしようと思い勉強開始しました。 それで、独習JAVAで一通り勉強した頃は、特に気にもしなかったんですがクラス内で intなりのメンバを定義するときpublic,private,protectedを書かないと どういう扱いになるんでしょうか。 それと、メソッドには必ずアクセス制御修飾子をつけるであっているでしょうか。 あと、蛇足ですがNetBeansをインストールして、なんとなく使っていて、コマンドライン引数を 取るにはどうしたら良いんでしょうか。スレ違いなのはわかりますし、サーバーとクライアント をコンソールウィンドウ2つ使ってネットワーキングプログラムの勉強も出来なさそう (コンソールウィンドウで実行すればコマンドライン引数をとれるのはわかりますが) で、エディタとして便利という理由でNetBeansを使ってるんですが上記の2点の解決方法 を知ってる方いらっしゃったら教えてください。
自分で試せば分かることをひとに聞くな
アクセス修飾子については、掲示板で質問すると言うよりも 言語仕様を調べるとか、書籍で調べるたぐいの質問だな。
>>906 > public,private,protectedを書かないと
デフォルトの(package private とか言われる)アクセス制御になる。
> それと、メソッドには必ずアクセス制御修飾子をつけるであっているでしょうか。
フィールドと同じ。
> コマンドライン引数を
日本語化してるならプロジェクトのプロパティ開いて、
「実行」ってカテゴリのところに「引数」って項目がある。
サーバーとクライアント操作するならコンソール二つ使った方が早いと思うけど。
895 中級者向けの本見たら、パッケージを使えば、複数のjavaファイルでプログラムが組めることが分かりました。 絵の多い初心者向けの本しか読んでなかったので・・・。
895の言っていることがいまいちよく分からないが 自力で何かつかんだ様で何より
912 :
ぴゅあ :2007/01/12(金) 01:02:12
Arrays#sort(Object[] a)は配列のクローンを生成するようですが インスタンスの生成を伴わないソートライブラリはどこかにありませんでしょうか。
ArraysのAPIを見ると、 static void sort(Object[] a) とあるんだが。
内部でクローンを作るという意味です。
>>915 自分で heapsort か quicksort でも実装すれば? 安定じゃないけど。
mergesort は安定だけどインデックスとか参照とかの配列みたいのが1.5本ないとダメだし。
Arrays.sort(Object[]) がダメって事はメモリが余程足りないんだろうから heapsort の方が良いのか?
速度関係ないとか要素数少ないなら bubble sort でも何でも良いけど。
Object配列のクローンの生成コストってたかが知れてるだろ。 ディープクローンじゃないんだから。 よっぽど要素数が万単位ならわかるけど。
919 :
デフォルトの名無しさん :2007/01/12(金) 08:23:51
入力したパスワードを一旦ハッシュ値に置き換えるのってどうやるんですかね? 結構難しいんでしょうか
java.security.MessageDigestでも使っておけば?
922 :
906 :2007/01/12(金) 08:50:05
>>909 さん
不慣れな初心者の自分に丁寧なレス、ありがとうございました。
クッキーについて、確認したいことがあります。よろしくお願いします。 ↓この認識であってますでしょうか? クッキーは、レスポンス時にヘッダ情報の中に格納されて サーバ側からクライアント側に送信される。 クライアント側からサーバ側へ再びリクエストするときには、 ローカルに保存していたクッキーからデータを読み取り、 リクエストデータのヘッダ情報の中に格納して、サーバへリクエストする。 (たぶん、ここまではあってると思うのですが。。) jsessionid(これもクッキーである)だけをクライアント−サーバ間で やりとりするときは、クライアント側でjsessionidを受け取っても ローカルにクッキーとして保存しないで、ブラウザがjsessionidの情報を 保持している。(?) ↑のように思ったのは、jsessionidだけをクライアント−サーバ間で やりとりしてるときは、ローカルにクッキーファイルが作成されなかったからです。 では、クライアントはjsessionidをどこで保持しているのだろうと考えた結果、 ブラウザが保持している?と思い至りました。 サーバ側において、jsessionid以外のクッキーを生成し、 レスポンスオブジェクトに格納して、クライアントに送信すると、 ちゃんとクライアント側のローカルでクッキーファイルが保存されるんですが、 そのクッキーファイルを開いてみても、jsessionidに関する情報がないんですよね。。 そもそも、jsessionidについては、他のクッキーとは扱いが違うのでしょうか?
クッキーの永続化とかセッションクッキーで調べれ
それはない
>>924 そのキーワードでぐぐってみました。ありがとうございます!
セッションIDは、セッションクッキー(一時的に使用し、ブラウザを閉じるまで有効)という
ことですね。
だから、もともと、ローカルに保存されるものではない。(イメージとして、ローカルに保存して
おいて、ブラウザを閉じたときに削除するのだろうと思ってました。^^; )
ためしに、他にクッキーを作り、setMaxAge()を設定せずに(あるいは、setMaxAge(-1)を設定して)、
レスポンス情報に格納し、クライアント側に渡したところ、jsessionidと同じく
ローカルに保存されていませんでした。
めでたし めでたし
自分で試してみようという意欲のある質問者は好感持てるな。
ここは質問者も回答者も大人ですね
セッションにディレクトリのデータが入っていて filelistを使って出力させるプログラムを作成しているのですが 日本語のフォルダやデータが?で文字化けしてしまいます うまく表示させるにはどうすればよいでしょうか // セッションを取得します HttpSession session = request.getSession(true); String directory = (String)session.getAttribute("DIRDATA"); //ディレクトリ情報を格納 File filelist[] = new File(directory).listFiles(); PrintWriter pw; pw = response.getWriter(); //全て出力 for (int i = 0 ; i < filelist.length ; i++) { if (filelist[i].isFile()){ pw.println("[Data]" + filelist[i].getName() + " : " + filelist[i].length() + "byte"); }else if (filelist[i].isDirectory()){ pw.println("[Folder]" + filelist[i].getName()); } }
931 :
デフォルトの名無しさん :2007/01/12(金) 15:06:14
int i,j; for(i=0;i<=3;i=i+1){ 〜 for(j=0;j<=2;j=j+1){ 〜 } } 以上のような構造の場合、この後でSystem.out.println(i+j);などとするとjだけが「初期化されてない」と エラーになるのですがこれは何故でしょうか?
>>930 response.setContentType("text/html; charset=Windows-31J");
とか、サーバが動いている文字コードに合わせてやればいいのか?
933 :
デフォルトの名無しさん :2007/01/12(金) 15:19:38
for(i = 0; i < n; i++) JLabel "label"+i = new JLabel(); こんな感じにインスタンス名に変数を含ませたいんですができますか?
>>932 そのようです
ご返答ありがとうございました
ファイルのダウンロードのほうも直さなきゃ・・・
>>933 それするくらいなら配列にするとか、
名前付けて、Mapに入れればいいんじゃないか?
系統だって変数を管理したいというのが元々のしたいことなんだから。
>>931 同じスコープで初期化しないとダメかと思って
int i,j;
{{j=0;}}
for(i=0;i<5;++i){
for(j=0;j<5;++j){
}
}
i=j;
ってやってみたけど、エラーにならなかった。
多分for内で初期化処理は行われない可能性があるからじゃないかな。
なんなら
int i=0,j=0;
for(i=0;i<=3;i=i+1){
〜
for(j=0;j<=2;j=j+1){
〜
}
って書けば良いとおもうよ。
}
>>937 × 簡単に言うと、for(i=0;i<=3;i=i+1) の i < 5 は定数式じゃないので
○ 簡単に言うと、for(i=0;i<=3;i=i+1) の i <= 3 は定数式じゃないので
他も全部脳内修正してくれ。
行数が不明なテキストを読み込むための配列を作りたいのですが ○ ○○○ ○ ○ … ○ EOF これを読み込むための配列の宣言がわかりません。 どうすればいいですか
方法1: 最初にファイル末尾まで舐めて行数を数えて、それだけのサイズの 配列を作って、巻き戻して改めて読み直す。 方法2: 適当なサイズにしておき、足りなくなったら適当にサイズの配列を 用意して今までの分を新しい配列の途中までコピーし、続きを読む。 (必要なら、読み終わったらぴったりのサイズの配列にコピーし直す) 方法3: Listを使う。 どうしても配列じゃなきゃダメな場合(APIが要求してるとか速度とか) でない限りList使え。
速度ったって、ArrayListであらかじめ領域確保しておけば よっぽどクリティカルでもない限り、殆ど気にならないレベルだと思うけど
942 :
933 :2007/01/12(金) 18:13:32
>935 有難うございます。 配列で管理することにしました。
943 :
デフォルトの名無しさん :2007/01/12(金) 18:18:52
質問です。 JScrollPaneにLineBorderを適用しようとしているのですが ScrollBarに付いている上下のボタン(三角印のあるボタン)の凹凸を取り除く方法が分かりません。 Border border = BorderFactory.createLineBorder(Color.BLACK, 1); JScrollPane.setBorder(border) JScrollPane.getHorizontalScrollBar().setBorder(border); JScrollPane.getVerticalScrollBar().setBorder(border); 知っている方がいましたら宜しくお願い致します。
>>940 ありがとうございました。
ArrayListを使って値を読み込むことはできました
配列を使いたいのはPoint3Dを使いたいからで。。。
ArrayList→Point3D(x,y,z)のそれぞれに値を入れていくことはできるのでしょうか
どうもStreamTokenizerとか使った方がいいような気が。 つーか情報を小出しにしないで最終的に何がやりたいのかはっきり書いた方がいいぞ。
JDKは最新のもので1.5.010です Java3Dで座標点を表示させるプログラムなのですが x y z x y z … x y z というものをPoint3D(x y z)に入れて表示するというプログラムなのですが このPoint3Dを格納する配列をプログラム側で一回一回指定しなくてはならないのです Point3D vertex = new Point3D[座標点数]; try { ファイル読み込み tokenize vertex[].x=ファイル.nval (略 } catch {エラー処理} vertexを表示させる という流れなのですが try の中で先に数えようとすると、tryの外のvertexを読み込ませるところでエラーが出てしまうのです
バージョンを聞いたのは示すコードにgenericsを使っていいかという意味 だったんだけど、1.5なら使えるね。 // import java.util.ArrayList; // import java.util.List; List<Point3d> vertices = new ArrayLit<Point3d>(); ファイル読み込みループ: double x, y, z = ... Point3d p = new Point3d(x, y, z); vertices.add(p); ループ繰り返し でやれない? 事前に行数数える必要ないよ。 配列にしたければ、ループ出てから Point3d[] vertexArray = vertices.toArray(new Point3d[vertices.size()]);
949 :
デフォルトの名無しさん :2007/01/12(金) 21:08:03
JAVAなどという難解な暗号のような言語をやって何が楽しい? N−88日本語BASICのほうが、やっていて楽しい。 JAVAを続けててもストレスで剥げるだけだ。やめるべきだ。
>>948 ありがとうございます!できました!!
もっと精進します
>>949 あほですか?
BASICの方がストレス溜まるだろ
952 :
デフォルトの名無しさん :2007/01/12(金) 21:56:34
難解な暗号を解くことに夢中になって、肝心なプログラミングはまるで進まない。 JAVAとはそういった言語だ。やめるべきだ。
Java程度が暗号に見える人に何言ってもなぁ。
【質問】 class Dialog1 extends JDialog { jButton.addWindowListener(new CloseListener); } class Dialog2 extends JDialog { jButton.addWinowListener(new CloseListener); } class CloseListener implements WindowAdapter { // オーバーライド public void windowClosing() { } } かなり省略してますが Dialog1クラスとDialog2クラスの「終了ボタン」が押されたときに、 CloseListener.windowClosing()の処理をさせるという感じのコードです。 このままだとDialog1クラスとDialog2クラスの「終了ボタン」の処理が同じになります。 そうではなくて、別々の処理にするにはどうすればいいでしょうか。 WindowAdapterをimplementsしたクラスを別途作れば簡単ですが、 あくまでもCloseListenerクラス内で両方の処理をしたいんです。 無理?
イベント・オブジェクトからは イベント発生の出所を取得できる。 これで分岐させられるでしょ?
956 :
ぴゅあ :2007/01/12(金) 22:31:35
wc -l [ファイル名] で取れますよ
957 :
ぴゅあ :2007/01/12(金) 22:36:07
>別々の処理にするにはどうすればいいでしょうか。 >両方の処理をしたいんです。
960 :
919 :2007/01/12(金) 22:44:08
亀ですがありがとうございます。
961 :
デフォルトの名無しさん :2007/01/12(金) 22:50:42
まこと複雑怪奇 BASICなら2行で済む処理を なぜ何10行もかけなくてはならないのか
>>954 >>959 public void windowClosing(WindowEvent e) {
if (e.getSource() instanceof Dialog1) {
// 任意の処理
} else if (e.getSource() instanceof Dialog2) {
// 任意の処理
}
}
こんな感じ。
インスタンスと直接比較しても良いし。
あと、
メソッド再呼び出しが嫌なら
ローカル変数に蓄えたりして。
963 :
959 :2007/01/12(金) 22:53:38
質問です。 マウスを右クリックした時に、キーを何も押さなくても isMetaDown() で true が返ってきます。 マウスを中クリックした時に、キーを何も押さなくても isAltDown() で true が返ってきます。 これはどうなっているのでしょうか?? 環境は java.version 1.6.0 java.runtime.version 1.6.0-b105 こんな感じです。
1ボタン環境をサポートするためにそうなってるんじゃなかったかね。
>>949 >>961 おいらも n88-BASIC 経験者だが、あんたは n88-BASIC を作れるのか?
あんたの理屈は「三輪車なら誰でもすぐに乗れるのに、自動車なんか
免許の取得だけでもウン十万もかかる。何故そんな無駄なことをするのか?」
と言っているようなモンだ。
大人しく三輪車に乗っとけ。そもそもスレ違いだ。
どうでもいいけどn88basicで食える仕事が今の日本にどれだけ・・・
String id = request.getParameter("id"); String rss = request.getParameter("rss"); try{ Class.forName("org.gjt.mm.mysql.Driver"); Connection users2 = DriverManager.getConnection( "jdbc:mysql://localhost/db","root","pass"); Statement state2 = users2.createStatement(); int action2 = state2.executeUpdate("insert into rss set" + "id=\"" + id + "\",adress=\"" + rss +"\""); state2.close(); users2.close(); out.println("<h3>登録しました。</h3>"); } catch(Exception e){ out.println("出力異常"); } のソースをServletで作ったんだけど、必ず出力異常の方が出ます。 JSPから値をもらっているのはprintlnで確認したので、明らかにtryの中身で何かが起こっていると 思うのですが原因が判明しません。 どの辺りが間違っているのか見当付きませんか? よろしくお願いします。
>>968 なんでスタック・トレースの出力をしないの?
あ、原因分かった。
MySQLの主キーの設定がおかしかったようですorz
マジごめんなさい。
>>969 ありがとう。
今回は解決したけど、次回からはそうする。
n88basicではないけど、制御系だとBASICはふつうにあるよ アセンブラじゃないだけ助かる。
サーブレットでファイルのダウンロードを行っているところなのですが 英語のファイルは問題ないのですが日本語ファイルだと文字化けしてしまいます setHeaderの中のファイル名部分を直接設定しても化けていたので エンコードが悪いと思うのですがどうすればよいでしょうか // ファイル読み込み用バッファ byte buffer[] = new byte[4096]; String fileName = downloadFile.getName(); // 拡張子からcontentTypeを獲得 String contentType = "application/octet-stream"; // contentTypeを出力 response.setContentType(contentType); // ファイル名の送信(attachment部分をinlineに変更すればインライン表示) response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\""); // ファイル内容の出力 ServletOutputStream out = response.getOutputStream(); FileInputStream fin = new FileInputStream(downloadFile); int size; while ((size = fin.read(buffer)) != -1) { out.write(buffer, 0, size); } fin.close(); out.close();
Content-Dispositionヘッダ中のファイル名の扱いはブラウザによって 実装がメチャクチャ。 Firefox →UTF-8のファイル名をBエンコーディングして書く filename="=?UTF-8?B?エンコードされたファイル名?=" RFC2231的にはこれ(↑)が正しい。 Windowsで日本語環境のMSIEの場合 →ファイル名はShift_JIS(つーかWindows-31J)にして生で書く。 filename=生ファイル名 MacのSafari →filename見てくれないみたい。 などなど。
アセンブラの方が助かるだろ
>>973 なるほど
それはめんどうくさいかもしれないですね
サファリは見てくれもしないのかぁ・・・
ご返答ありがとうございます
便乗質問で申し訳ないのですが
データではなく指定したフォルダ(と下位ディレクトリ)のダウンロードを
一度にさせることは可能でしょうか?
976 :
ぴゅあ :2007/01/13(土) 12:38:42
public class Key { //キーボードの「↑(仮)」を押したら以下の処理を行う System.out.println("テスト"); } キーボードからの入力は文字以外のキーがよかったので↑にしたのですが ↓でも←でも→でもかまいませんが、 どのように記述すればいいでしょうか? 条件というほどではありませんが、 キーボードから特定のキーの入力が行われるまで待ってるだけなので シンプルな命令がいいのですが・・・ どのように書けばいいでしょうか?
978 :
デフォルトの名無しさん :2007/01/13(土) 15:26:57
>>977 GUIアプリケーションならイベントで取れるけど、
コンソールアプリケーションだと JNI とか使わないと一行毎の入力しか取れないと思う。
980 :
デフォルトの名無しさん :2007/01/13(土) 16:05:15
>>977 >>979 jlineってライブラリを使えばCUIでも1文字づつ読める。
JNIは、使ってないみたい。
http://jline.sourceforge.net/ //=============================
import jline.ConsoleReader;
public class Main {
public static void main(String[] args) throws Exception {
ConsoleReader r = new ConsoleReader();
int c;
while((c = r.readVirtualKey()) != -1) {
System.out.println(c);
}
}
}
終了条件-1じゃ終了しねぇーw the character, or -1 if an EOF is received. って書いてるのに。 というわけで、適当に終了条件を変えてくれ。Ctrl-dなら4。Ctrl-zなら26。
>>979 >>980 知識不足でよくわからなかったので
>>977 のKeyListenerを使いました。
自分で考えてみたのですがここで詰まりましたorz
この先どうすれば実行できるでしょうか?
public class test implements KeyListener{
public void keyPressed(KeyEvent ke) {
}
public void keyReleased(KeyEvent ke) {
//ここになんて書いていいかわからないけど
//VK=UP(↑)を押すと下のプリントが行われテストと表示される
//ここになんて書けばいいんでしょうか?
System.out.println("テスト");
}
public void keyTyped(KeyEvent ke) {
}
}
あ、まちがった if (KeyEvent.VK_UP == ke.getKeyCode()) { System.out.println("テスト"); }
KeyListenerの登録について何も考えていない予感…
>>980 いや native つかってるねぇ……
jar の中から java.io.tmpdir に dll を摘出して、
dll は deleteOnExit しておいて System.load で dll をロードしてる。
987 :
980 :2007/01/13(土) 17:05:38
>>986 ホントだ。中にdll入ってるw
ある意味勉強になった。
988 :
977 :2007/01/13(土) 17:06:54
>>984 を実装してみたけど
エラーにはならないけど動かないorz
KeyListener登録しなきゃダメ でもGUIじゃないと使えない
>>988 985が言うようにKeyListenerを登録してるのか?
991 :
977 :2007/01/13(土) 17:18:51
多分オレ根本的な間違いを犯してるんだと思う・・・ よくわかんないけど・・・ public class Game implements KeyListener{ public void init(){ addKeyListener(this); requestFocusInWindow(); } public void keyPressed(KeyEvent ke) { } public void keyReleased(KeyEvent ke) { if (KeyEvent.VK_UP == ke.getKeyCode()) { System.out.println(”テスト”); } } public void keyTyped(KeyEvent ke) { } } じゃだめなのかな? ちょっと根本的な間違いをしている気がするので これ以外の部分のソース貼り付けますねorz
992 :
977 :2007/01/13(土) 17:34:53
お作法的にいいのかわかんないけど、 S_T_Aクラスのコンストラクタでフォームにリスナを登録すれば、動くと思う。 public S_T_A() { addKeyListener(new Game()); ・・・・ }
>>977 自助努力しようとする姿勢は認めるが、このままじゃマルチだ。
宿題スレの〆切を延ばしたりせずに何故依頼を撤回しなかったの?
995 :
デフォルトの名無しさん :2007/01/13(土) 17:50:15
996 :
977 :2007/01/13(土) 17:50:51
>>993 試してみます
>>994 宿題スレに依頼はしていますが締め切りを延ばしてもらった後も自力で続けていたのですが、
全く作業が進みませんでした。そこでここで質問させていただきました。
宿題スレの方に頼りっぱなしというのもだめだと思い自力でやろうとしたのですが、
マルチになってしまいましたね・・・
自力でできるかわかんないけど宿題スレのほうは撤回してきます。
申し訳ありませんでした。
998 :
デフォルトの名無しさん :2007/01/13(土) 17:54:43
謝って済む問題じゃないだろ君。う〜ん
まぁ今回は許してやれよ 時間的に背っ羽詰まってるみたいだし 宿題スレの方で撤回してきてるし 977にやる気があるなら力になってやろうぜ ここ初心者スレなわけだし とりあえず次スレ行くべ
>>999 そのとおりよ、みっちゃん
うふふ
さいごのしょうしゃはかなりあかしらかしら〜
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。