【初心者】Java質問・相談スレッド121【歓迎】
2 :
1 :2008/11/17(月) 01:10:36
4 :
はんしょう :2008/11/17(月) 08:30:39
JAVAのJBUILDER2005があり、ひとまずSampleを見ています(正直使っているという状態ではまだないのです)が、 JPX(プロジェクト)ファイルを再BulidするのとMakeをするのとがメニューにあります。 1:この違いはなんでしょうか?一見どうちらを選択しての既存のものは実行できるか できないのか について言えば それらしいCGの絵は出ますので 変わりはなかった。 2:幾つかのサンプルの内、上のようにJbuliderで実行をすると絵が出ますので、実行できるようになるですが Jbuliderのソフトを介さないで 実行できることはないでしょうか。 Javaは実行ファイル(正確な用語でないかもしれませんが)というものはないでしょうか? 例えばWindowsで言えば、拡張子.exeのファイルは直に、 あるいは FLASHの.swfファイルはIEで(ブロックは外して)開くことが出来る。同じflashの.flvファイルはWeb上で、起動ファイルを導入してしか見えない(Youtubeのように)。 JAVAはどうでしょうか? 3:それと.JAVAという拡張子ファイルはソースファイルと理解してよいでしょうか?
>>4 jbuilder2005 は捨てて netbeans をオススメします。
が
1. rebuild→すべてのソースのコンパイル make→変更されたファイルのみコンパイル
2. VMにPATHを通してjbuilderでできたclassesディレクトリで実行してみましょう。java実行の仕方は調べてね。
3. うん、ソースファイル
4. 自分で検索を覚えないと、一生まともなプログラムは組めません
>>5 そこを見る通り
必要な場面では必要
不要な場面では不要
8 :
デフォルトの名無しさん :2008/11/17(月) 12:36:02
抽象クラスAのサブクラスがクラスB,クラスCであるときに、Bのオブジェクトを Cのオブジェクトに変換する方法を教えてください。
>>8 無理。class B extends A を class C extends A には変換できない。
詳細がわかれば他の方法で逃げられるかもしれないけど。
Bのオブジェクトを元に初期化するコンストラクタをCに作ればいいんじゃね
11 :
デフォルトの名無しさん :2008/11/17(月) 13:14:22
>>10 よろしければもう少し詳しくお願いできますか。。。?java初心者でよくわからないので。。
12 :
はんしょう :2008/11/17(月) 13:47:19
>>6 ありがとうございます
> 2. VMにPATHを通してjbuilderでできたclassesディレクトリで実行してみましょう。java実行の仕方は調べてね。
VMはVirtualMachine? ホルダーClassesはあります。さて どうするか
もう一歩助言をおねがいします。
確かに検索の仕方も JAVA 実行でしか
思いつかなくています
13 :
りょう :2008/11/17(月) 16:21:55
<input type="button" class="button" value="編集" onClick="editEmployeeInfo"(<bean:write name="searchList" property="employee_id"/>) このonclickの所で、employeeId(社員ID)が送られるようになっているらしいんですが、 これをもとに自分のページで社員情報を取得するにはどうすればいいでしょうか? 断片的ですいません
14 :
デフォルトの名無しさん :2008/11/17(月) 16:52:02
annotationが全然理解できないんですが、お勧めサイトないっすか?
〜 3分で覚えるアノテーション 〜 アノテーションはクラスやメソッド、フィールドなどにつけられるよ。 引数を指定することもあるよ。 @Foo(message = "hello") public class MyClass { ... } 自作のアノテーションを作るときは @interface を使うんだ。 メソッドが引数に対応するぞ。 import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) public @interface Foo { String message(); } RetentionPolicy.RUNTIME が指定されていれば、実行時に取得できるよ。 リフレクションを使おう。 Class<?> c = MyClass.class; Foo foo = c.getAnnotation(Foo.class); System.out.println(foo.message()); これであなたもアノテーションマスター!
パネルに描画した図形をDeleteキーで消したいのですが、KeyListenerにフォーカスが当たってくれません。 getFocusOwner()を使ったところ、常にボタンにフォーカスが当たっている事が分かりました。 これを描画パネルに当てるには、どのようにすれば良いのでしょうか。
panel.setFocusable(true); panel.requestFocus();
18 :
14 :2008/11/17(月) 19:42:55
>>15 どうもです。
しかし、いまいち暗黙の部分が多くなって分かりづらいし、利点がよくわからないんですが。。
よくわからないものは必要になるまで放っておくのもひとつの手だよね。 必要になったら自然と理解できる
>>18 @Size(16) class MyData {
@Offset(0) int a;
@Offset(4) int b;
@Offset(8) long c;
}
のようにデータをバイト列にパックする際の情報として使ったり
class MyService {
@MsgId(7) void foo() { ... }
@MsgId(42) void bar() { ... }
}
のようにIDとメソッドを紐付けるのに使ったり
といった用途が例えば考えられます
しかし基本的にリフレクションを使わない人には無用
21 :
デフォルトの名無しさん :2008/11/17(月) 20:36:47
Javaをゼロから勉強したいのですが、良い本教えてもらえませんか? プログラミング経験はないです。 お願いします。
>>21 デラべっぴん
23 :
デフォルトの名無しさん :2008/11/17(月) 21:08:12
来春から念願だったソフトウェア関連の会社に就職が決まりました。 JAVA言語をメインにソフト開発をしてるそうなんですが 自分自身のスキルからいって仕事についていけるかとても 心配です。今から勉強でもしておかないととても不安なので 実戦に役立つ書籍があれば紹介してくれませんか?ちなみに SJC−A程度の知識はあります。
24 :
デフォルトの名無しさん :2008/11/17(月) 21:35:32
>>15 リフレクションですか。
ちょっと勉強してみるっす。thx.
25 :
16 :2008/11/17(月) 22:03:57
26 :
りょう :2008/11/17(月) 22:33:01
未経験 研修中の者です。 eclipse , Tomcatを使用して、 社員情報管理システムの一部を課題として作成してくれとの事で設計書を渡されました。 自分の担当は社員情報の編集ページで、 社員一覧ページの「編集」ボタンから自分のページに飛び、編集ページで内容を変更したら、 DBに変更したデータを送るという部分の作業をしています。 その中で、社員一覧ページの <script> function editEmployeeInfo(id){ document.editForm.employee_id.value = id; document.editForm.submit(); } </script> 省略 . . . <input type="button" class="button" value="編集" onClick="editEmployeeInfo"(<bean:write name="searchList" property="employee_id"/>) ここの部分で、編集ボタンを押すと社員ID(employee_id)が渡されるようになっていて、 それを利用してその社員の情報を自分の画面の初期表示として表示させたいのですが、 "editEmployeeInfo"(<bean:write name="searchList" property="employee_id"/>) 自分のページでeditEmployeeInfoをどう使えばいいのか分からない状況です。 教えていただければと思い書き込みしました。 よろしくお願いします。
27 :
デフォルトの名無しさん :2008/11/17(月) 23:39:27
>>26 意地悪に響くかも知れないが、「Java」と「JavaScript」の違いは把握してる?
Fileクラスの listFiles() とlistFiles(FileFilter filter) を使ってみたんだけど。 listFiles() だとマイコンピュータとか、マイネットワークを取得できるのに。 listFiles(FileFilter filter) だと取得できないんだ。 FileFilterの中で、自分が作ったソースがはじいてるのかな?とも思ったんだけど、 FileFilter#accept(File pathname)に、マイコンピュータとかマイネットワークが入ってこないんだ。 ふしぎふしぎ listFiles(FileFilter filter)でマイコンピュータとかマイネットワークを取得できる方法誰か知らないっすかね?
>>28 デスクトップ用の情報が取れる ShellFolder extends File ってのがあって、
それだと listFiles() は上書きされてるからマイコンピュータとか取れるはず。
でも ShellFolder でも listFiles(FileFilter) は上書きされないから
通常の File 使ったときと同じでマイコンピュータとかは取れない。
>>29 なるほど、Fileだと思って使ってたオブジェクトはShellFolderだったのか。
ありがとう、諦めて自分でいらない物はじくことにします。
31 :
デフォルトの名無しさん :2008/11/18(火) 10:54:53
32 :
31 :2008/11/18(火) 11:49:00
エクリプスで起動したら以下のようなエラーがでました。 Exception in thread "AWT-EventQueue-1" java.lang.NegativeArraySizeException at Template.searchMatching(Template.java:151) at Template.paint(Template.java:224) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) よく原因がわからないので教えてくれませんか?
画像を読み込めてないんじゃね
>>23 就職オメ
会社の方針も様々だろうから、
読んで安心できるような書籍は一概には言えないんじゃないだろうか
来春からなら時間ありまくりだから、
自分でプログラムを組みながら学ぶのが一番。
いくら本を読んでも実際に身に付いてなきゃ意味が無いのもあるし、
作ってる課程で、行き詰まっても自力で調べる力が身に付くから。
多少知識が無くても自力で調べられれば怖いもの無し
と、相談スレにこんなことを書いてみる
35 :
デフォルトの名無しさん :2008/11/18(火) 12:15:23
まずは足腰鍛えるのと同じく基礎固めが大事だからなぁ。初心者用のCの本を軽く一通り読んどいた方がいいかも
>>23 とりあえず2ちゃんブラウザを作ってみればいいよ。
ブラウザかどうかはともかく、目標があるのは良い事
このパッケージを使うとこんなことが出来るインデックスは結構あるんですが こんなことをしたい場合に、このパッケージが使えるインデックスってどっかに まとまってませんか? よその言語から入ってきたとき 「何をどう使っていいかようわからん」 状態を解消する気はないんでしょうか? > Java コミュニティ # つか, OO 言語全体的にそんな気がするが………
ググればいいじゃない 英語で
40 :
デフォルトの名無しさん :2008/11/18(火) 22:04:56
むしろOOではない言語だとそんな気がしない理由を書いてもらえると 具体的にどんなものを求めているのか伝わりやすいのでは。
41 :
28 :2008/11/18(火) 22:16:11
>よその言語から入ってきたとき
>「何をどう使っていいかようわからん」
こうならない言語ってあるんですかと、逆に聞きたいです。
しかし
>>29 はすごいなぁ、FileSystemView#getRoots()で、
File[]を貰って何も疑問に思わないで使ってたのが恥ずかしくなったでござる。
42 :
デフォルトの名無しさん :2008/11/18(火) 22:20:16
ただいまサーブレットの勉強をしています perform()メソッドがよくわかりません ご教授お願いします
43 :
>>42 :2008/11/18(火) 22:25:25
すいません perform()メソッドは参考書独自のメソッドでした('A`)
performメソッドなんて典型的なダメ設計(もしくは命名)じゃね?
>>38 GOF本とかのデザインパターン関連書籍がいいんじゃないか?
>>40 C とかアセンブラだと、ほとんど何もないので何かしようと思った場合、それ
に見合ったライブラリを作るなり、どっかから引っ張ってくることになるわけ
だが、その過程で双方向のインデックスができるんだわ
最近の OO 言語の場合、最初から結構膨大な量のライブラリがくっついて来る
ので、何かをしたいと思ったときに何かに対応するライブラリはどれって話に
なる。
つか、使い続けてればそのうち出来てくるんだろうけど、俺の場合、OO言語使
う時って、たいてい消化作業に呼び出された場合なんでインデックスできるま
での期間付き合い続けないってのが原因なんだろうけど………
man -k だとか apropos に相当する機能が "JDK(TM) ? ドキュメント" に付
いてれば問題ないような気がする
javadoc読み込んでindexでもabstractでも何でも好きなもん生成するソフト作ればいいんじゃね?
>>47 火消しに行ってそんなもんかまってたら絞め殺されますぜ
>>48 > 公式サイトに置いてある javadoc に検索かけるんじゃだめなん?
作業現場が隔離されている状況だとそうもいえんだろ
50 :
デフォルトの名無しさん :2008/11/19(水) 10:18:11
インデックスできるまでとは何の事? もしかしてstrcut構造体のあれとかなのか?w
>Java質問・相談スレッド119_920
>CSS Validator(
http://jigsaw.w3.org/css-validator/DOWNLOAD.html )をAntで
>コンパイルしたいのですが、antを実行すると以下のようなエラーになってしまいます。
古い話ですみません。
ダウンロードのページにある以外に、
commons-collections-3.2.1.jar
velocity-1.5.jar
をダウンロードしたら、とりあえずANTは通りました。
でも、実行すると、mainが見つからないとか言い出すのですが。
>>52 「ほぼ」って書いているので、そこが原因だろうな。
54 :
52 :2008/11/19(水) 12:46:40
JTextFieldをJTextPaneにしているのがいけないのですかね もうちょい試行錯誤してみます
55 :
デフォルトの名無しさん :2008/11/19(水) 16:15:47
初心者から中級者の間だけど、サンプルソース打ちながらやってみて面白い本をおしえて。 サーバサイドJavaは無しで・・
あるpngファイルAを読み込み、別ファイルBを生成するプログラムを作ることになりました 以下現プログラムの該当部分です Iterator readers = ImageIO.getImageReadersBySuffix("PNG"); ImageReader reader = (ImageReader)readers.next(); ImageInputStream iis=ImageIO.createImageInputStream(file); reader.setInput(iis); BufferedImage bi = reader.read(0); Raster raster = bi.getData(); Object obj = raster.getDataElements(0,0,raster.getWidth(),raster.getHeight(),null); 最終的にはObjectをImageIOに食わせてデータ取得できるらしいですけど、 createImageInputStream、getImageReadersではなしのつぶてでした どのメソッドを使えばいいのか教えて下さい
>>56 こんな感じでいいんじゃない
BufferedImage bi = ImageIO.read(fileA);
int w = bi.getWidth(), h = bi.getHeight();
int[] rgb = bi.getRGB(0, 0, w, h, null, 0, w);
・・・・
bi.setRGB(0, 0, w, h, rgb, 0, w);
ImageIO.write(bi, "png", fileB);
58 :
56 :2008/11/19(水) 19:43:11
>>57 すっかり言及を忘れてましたが、Bはpngではなくバイナリファイルなんです
>>56 プログラムのObjectを何らかの形に変換し吐き出すと思われるのですが、
そこで使用するのがImageIOらしいです
とりあえずおとなしく直に聞くことにします
お手数おかけしました
59 :
デフォルトの名無しさん :2008/11/19(水) 23:21:40
プログラミングに関係ないですが ブルーレイを購入しようググっててBD-Jを知りました。 で、色々な情報があって混乱しています。 1.まず「BD-Jはブルーレイの仕様でブルーレイプレイヤーなら必ず使える」という情報。 ・・とすると、PS3やDiGA等でもJavaを実行できるということ? 2.「最近のシステムアップデートでPS3でBD-Jが使えなくなった」という情報 ・・あれ?BD-Jはブルーレイの仕様なのにPS3はBD-Jが使えなくなったってどういうこと? 思ったのがもともとPS3はUSBからBD-Jが起動できたらしいが、単にこれができなくなったってことでしょうか? ブルーレイディスクにBD-Jアプリを焼けば現在でもPS3でBD-Jが実行できるのでしょうか? ご存知の方いましたら教えてください
60 :
デフォルトの名無しさん :2008/11/19(水) 23:32:14
質問です。 HttpServletRequest#getHeader("Cookie")を使用すると たまーにnullが帰ってくることがあるんですが、どうしてなんでしょうか?
凄く初心者な質問をさせてください。 関数ってどういう基準で分割していくのが良いとか基準があるのでしょうか? 自分で書いてたコードなんですが初期化処理Init()の中で更に ボタンの初期化InitButton()、メニューの初期化InitMenu()とか、 機能毎ってよりコンパクトにまとめるのを目的に小さくするのって (しかもここでしか絶対使われない)どうなんだろうって気になりました。
62 :
デフォルトの名無しさん :2008/11/19(水) 23:54:02
>>61 Javaに限らず関数分けの目的は2つあります。
1. 複数箇所で使うまとまりを関数化する。
2. ひとつの関数の中のコードが長すぎるので関数化して分割しソースを見やすくする。
61さんの場合は後者ですね。
以前の1メソッド50ステップまでというルールのプロジェクトがありました。
ちなみに、私も61さん同様 2. の分け方はあまり好きではありません。コメントで区分けしておけばいいだけですし。
複数個所に同じような処理があっても,それらが複数のクラスにまたがってるときは 関数にまとめるのが必ずしも良いとは言えない 取り回しがしづらくなる
入力フォームを作成する
1.氏名を表示させる
2.男性、女性をreslt.phpで表示させる
男性の場合青、女性の場合赤で表示させること
3.趣味を表示させる
読書、ゲーム、映画、旅行、スポーツ
チェックした項目をreslt.phpで複数表示させる事
チェックした項目には
あなたの趣味は○○と○○ですね。と表示させる
読書、ゲーム、映画、2点以上 のみチェックした場合、「たまには体を動かしましょう」
スポーツ、旅行の 2点チェックした場合 「体を動かすのは良いことです。」
全てチェックを入れた場合には、(5点)「たくさんの趣味がありますね。」
と表示させる
3ができません
助けてください><
http://www9.uploader.jp/dl/naoya6628/naoya6628_uljp00007.zip.html 1,2はできました
C言語が間違ってるんだと思います
友達いないんだ
明日俺だけ出来ないとか担ったらいやなんだ
お願いですから助けて下し亜><
>>61 適切な名前がつけられる場合は分割する。
不適切な分割が既にされている場合、あるいは、
昔は適切だったが、今は不適切になってしまった場合は、
一度展開してから整理して分割する。
どのように分割すればいいか良く分からないときは、放置。
事が進むにつれ、だんだん分かってくるかもしれないし、
そもそも何をもってして適切かが変化するかもしれない。
変更後のテストは必須
Serializableなんですが、 private void writeObject(ObjectOutputStream stream) throws IOException を特に定義しなかったとき、フィールドに配列があっても大丈夫なんでしょうか。 それとObject[]とかだとどうなるんでしょうか。
GUIの時は特にブロックで分けてるなぁ
68 :
はんしょう :2008/11/20(木) 08:46:29
これまで Jbuilder2005でJPXを開いて、実行させると描画していたのですが DOCモードでJAVA を動かした(と言ってもなにも描画しないで元のPromptになった) 後、再度Jbuliderで実行させようとすると -- Java プロセスを起動中に IOException が送出されました - とエラーになったのです 元のように描画実行するようにするにはどうしたら 良いでしょうか?
アプレットでダブルバッファリングを試みているのですが、 createImage(int,int)のシンボルが見つからないという警告が出ます。 importでComponentも読み込んだのですが認識してくれません。 何か他のクラスのcreateImage()と衝突などしているのでしょうか? わかるかたいらっしゃたらよろしくお願いします。
>>62 コメント書けばいいとかで巨大なメソッド作るなよ。
読むときどこにそのコメントがあるかも分からなくなるんだからな。
コメントに”○×処理”とか書くぐらいなら、コメントをそのままメソッド名にしろよ。
メソッドを分けるのに苦労するなら、読み物がどう分かれているかを参考にしてみたらどうだ。
最近のプログラミングは、多少の速度アップを求めてソースを汚くするより
人間が読みやすいようにするのが良いという流れもあるだろ。
GUIでコンボボックスとテーブルを使って下記のよう動作を実現したい。 テーブルA[A_ID,A_NAME] テーブルB[B_ID, B_DATA,A_ID] コンボボックスにA_NAMEの一覧を用意して選択したA_NAMEから テーブルBのB_DATAをテーブルに表示させる コンボに一覧を表示させることはできたけど、選択したA_NAMEからB_DATAを 引っ張る方法がわかりません。 考えとしてはコンボにA_ID,A_NAMEを保持させて、A_NAMEだけ表示させようと考えてます。 コンボボックスって表示させるデータ以外のデータも保持できますか?
>>60 ブラウザがクッキーを無効にしてるんじゃね
それかまだクッキーを設定してない初回アクセス時とか
>>66 大丈夫です
なぜなら配列は Serializable です
Object[] は中身がすべて Serializable または null なら大丈夫です
Serializable でないオブジェクトが混じっている場合は NoSerializableException が投げられます
>>69 createImageはComponentのメソッドだから、自クラスがComponentのサブクラスなら
this.createImage(...) あるいは this を省略して単に createImage(...) と書けるが、
そうでないなら対象のコンポーネントを指定する必要があるよ
>>72 >コンボボックスって表示させるデータ以外のデータも保持できますか?
そもそも JComboBox は任意のデータを保持できます
addItem 等の引数が String じゃなく Object になってるでしょう
項目をどう表示するかを決めるのは ListCellRenderer であり、JComboBox#setRenderer で設定できます
デフォルトでは単に toString した文字列を表示するだけですが、自分で好きなレンダラを書けばよいです
ところでGUI関連はSwingスレの方がよいかも
それで安心しました。rmiもあるみたいですけど、 Serializable はwebアプリのようなデータの転送で使っても実用に得るのでしょうか? クライアントの設定情報をeventと交えて直列化して、相互に転送するときとかですが、 例えば検索ボタンを押して3秒ぐらいまでなら実用と考えていますが実用的でしょうか。 それとも、上のwebアプリの例えだとメソッド呼び出しじゃないんですが、rmiとかの方がよいのでしょうか。
-5.6 % 3.3 5.6 % -3.3 5.6 % 3.3 -5.6 % -3.3 の答えがそれぞれ -2.3 2.3 2.3 -2.3 なんですが、これをどなたか解説していただけないですか
>>76 ありがとうございます。
setRendererでレンダリングを設定ができるんですね。
>ところでGUI関連はSwingスレの方がよいかも
そうですねスレ違いでしたね。ご迷惑をおかけしました。
>>77 RMI も中では Serializable 使ってるから同じじゃない?
[aaaa]ssssssという文字列から aaaaを取り出したいんですがsubStringを使おうにも、[aaaa]の長さは変動しますので subStringが使えません。なにかいい方法は無いでしょうか?
>>83 String s = "[aaaa]ssssss";
int start = s.indexOf('[') + 1;
int end = s.indexOf(']');
String r = s.substring(start, end);
System.out.println(r);
>>83 この機に、java.util.regex 辺りをマスターするんだ
87 :
デフォルトの名無しさん :2008/11/20(木) 14:43:44
swingスレッドがないのでここでお聞きしますが、 guiでのpaintやrepaintはシングルスレッド設計が多いのですがこれはどうしてなのでしょうか? プロパティに反応してrepaintするときなど、シングルスレッドのままだと順番まちのためpaintがされずに、 ボタンが押されっぱなしのような固まったような状態が0.5秒ぐらいなってしまいこっとの方が大問題だと思います。 似たような現象は今でもfireforxとかでたまにあります。 それでもguiをマルチスレッドにしないのはなにかほかにデメリットがあるのでしょうか。
個人的には、あらゆるイベント処理を漏らさず synchronized でガードしなければならないことを考えると、今のままでいい
>こっちの方が大問題 何と比べて大問題なんだよ。 例えばデッドロックよりも大問題なのか?
91 :
デフォルトの名無しさん :2008/11/20(木) 17:21:56
そのリンクですけど、guiプログラマーにはthreadの深い理解は不要だとかオーバーヘッドどうとかですけど、 プログラム処理でこれといったデメリットではないと思いますがこの程度が原因でマルチスレッドを捨ててるんですか? これからguiやデスクトップアプリは2dやnetなどの通信などどんどん大規模になっていって、ほとんどの処理にスレッドの同期・非同期処理が必要になるとおもうのですが、 それでもシングルスレッドなのは何か他に理由があるのでしょうか? jdkがいくら進化してもシングルスレッドのままだと昔のシングルタスクOSの限界と同じかとおもいます。 デッドロックとかcuiでもあるわけでなくなるわけではないし、guiとなにか関係あるんですか。 仮に全てのメソッドをsynchronizedにしても今のCPUなら全く遅くならないんですけど、それよりも先のようにシングルスレッドの処理待ちのほうが大問題だと思いませんか?
synchronized万能主義者か synchronizedで囲うだけでマルチスレッド化による問題が解決すると思っているようなら勉強し直すことだ フレームワークがシングルスレッドであることによるシンプルさを捨てさせてまで マルチスレッドヘルに飛び込まないといけないほど反応時間を気にしないといけないのなら 自分が作ろうとしているものの設計の方をこそ見直すべきだ
93 :
デフォルトの名無しさん :2008/11/20(木) 17:40:27
DOMに関する質問です。 あるDTDにvalidなXML文書からDOM木を作成するとします。 普通にXML文書をparseすると文章中の改行やタブもTEXTノード としてDOM木の中に表現されますよね(規格通り)。 こういった改行等のTEXTノードは削除して、DTD中に定義された CDATAやPCDATAに対応するTEXTノードのみを残す、小粋な お掃除方法は無いでしょうか?
GUIってユーザープログラムからだけでなく、OSからの処理も受け付けないといけないんだから、 つーかOSの一部の機能を借りている状態で実行してるんだから、 イベントディスパッチがシングルスレッドってのは納得しやすいと思うんだけど。 別にマルチで自前で書いてもスレッドセーフかどうかさえ気をつければ良いんじゃないの?
>>91 通信のような処理はGUIと無関係なんだから単純にGUIと別のスレッドでやればよかろう
そのことでGUIをマルチスレッドにする必要はないと思うが
仮にこれからそれらが必要になるとしても、swingが作られたのは10年も前なわけだが、
10年後の未来を予測して設計しておくべきだったと? 設計当時の理由はそのリンク先の通りで、
残念ながら(?) 今後来るかもしれないメニーコア時代のことまで考慮されて作られてはいなかった
synchronizedで遅くなることよりも、synchronizedし忘れてバグったり、デッドロック起きたりする方が俺は怖い
それに単純にすべてsynchronizedするんならシングルスレッドと同じじゃまいか
synchronizedかける場所を慎重に取捨選択するのはなかなか面倒な作業だと思うが
最近設計されたGUIでマルチスレッドなものってなにがあるっけ?SubArctic ? 日本語情報が少なすぎて全く使ってないからよくわからん。
JTableってデータを更新する際初期化とか必要ですか? [1111] [2222] [3333] [4444] こんな感じでデータが入ってて そこからsetModelでデータを上書きしたら [5555] [] [7777] [] 見たいな感じになります。
>>97 試してみたけど大丈夫だったよ
(import省略)
public class Test{ public static void main(String[] args){
final Object[] columns = { "x" };
final Object[][] dataA = {{ "1111" }, { "2222" }, { "3333" }, { "4444" }};
final Object[][] dataB = {{ "5555" }, { "6666" }, { "7777" }, { "8888" }};
final JTable table = new JTable(dataA, columns);
JButton button = new JButton("update");
button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
table.setModel(new DefaultTableModel(dataB, columns));
}});
final JFrame frame = new JFrame();
frame.add(table); frame.add(button, BorderLayout.PAGE_END);
SwingUtilities.invokeLater(new Runnable(){ public void run(){ frame.pack(); frame.setVisible(true); }});
}}
GUIツールキットの多くがシングルスレッドなのは、伝統だと思います。 非同期にやってくるイベントをキューにためて、後はイベントループを 回して順繰りに処理していく方法は一つの成功した設計モデルとして とても長い伝統と実績があります。 ソースが公開されているGUIツールキットを幾つかバらしてみれば、 多くの場合はイベントループ等の根っこの設計がどれもよく似通って いる事が分かるかと思います。 また他の部品の振る舞いをあまり意識せずに個々の部品にイベント ハンドラを書いてイベントを投げるだけでGUIの振る舞いが定義出来 るのも、イベントがシーケンシャルに処理される事を仮定出来る点が 大きいと思います。 そういう意味では、ツールキットを利用するプログラマに「楽をさせる」 良い設計ともいえます。 時代遅れとの見方もありますが、むしろこれに代わるリーズナブルな 設計モデルがまだ無いという辺りではないかと思います。
>>98 すいません・・・別の箇所で問題が原因でした。
ご迷惑をおかけしました。
>>99 イベントがどのタイミングで処理されるのかを
マルチスレッドだと制御できるとは思えないからなぁ。
シングルスレッドだからこそ、予測しやすいわけで。
まぁ、予測ができるだけで、確実にシーケンシャルに実行されるかどうかはわからんのだけど。
どう考えてもシンプルでコストが安いしな。 今のマシンなら楽勝って考えるてるなら、 自分で作ったらいい。環境はあるんだから。
UIがマルチスレッドなら、特別な仕掛けがない限り UIコンポーネントから取得するデータは、取ってきた時点で 既に古いものになっていると考えなければならない。 こんなもので何を決められようか?
複数のインターフェースを使ってボタンをクリックすることで 画面の切り替えをしたいのですが、この場合CardLayoutを使うと思うんですが 本を読んでもイマイチ分からないので、使い方を教えていただけませんか? それともCardLayout以外にも画面の切り替えを行う方法はありますか? よろしくお願いします
JTabbedPaneはどう?
>>105 教えていただきありがとうございます
タブを使うやり方もいいんですが、
できれば、ボタンをクリックしてカードを
切り替える感じのものがいいのですが
ありませんでしょうか?
private static final String TEISUU = "定数"; と定義された定数に対して インスタンスメソッドの中から、クラス名を付けずにTEISUUにアクセスしてもエラーになりません。 これは何故でしょうか? 具体的には、 class Test{ private final static String TEISUU = "定数"; public void method(){ String var; var = TEISUU; System.out.println(var); } と書けてしまいます。 文法的には var = Test.TEISUU; とすべきではないのですか? private final String TEISUU = "定数"; としても解決すると思うのですが、 自分が勉強した限りではどの本見ても定数にはstaticを付けてるんですよね。 定数にはstaticを付けるというのがお決まりなのでしょうか?
Javaでどの様にハッキングするの? どの位の所まで分かる様になったらハッキング系の事出来るの? JavaでLAN周りを調べる事何て出来るの? どの様にJavaにネットと通信出来るように書くのか気になる。
>>107 TestクラスのTEISUUの値は,インスタンスの状態にかかわらず常に"定数"になるんでしょ?
それならstaticにするのが自然。メソッドの場合も同様の考え方をする。
Test.を省略できるのは同じクラス内だから。そういうルールだから仕方ない。
>>107 書けてしまうのは文法的に誤っていないから。
文法的に誤っているということだがJLSのどこに書かれているの?
static finalが付いているものは変更不可のクラス変数。
インスタンスごとの変更不可変数であればstaticは不要。
>>109 >>110 ありがとうございます!
自分のクラスのstaticフィールドにアクセスする場合は
クラス名省略できるんですね。知りませんでした。
よく考えてみたらインスタンスごとの定数ってあまり考えられないですね。。
単純に例が少なかったのかな。
>>73 レスサンクス。
同じブラウザで一度フォームデータをsubmit、ブラウザの戻る、またsubmit
っていう操作を何回もしていると、不定期でおきているから、
cookieが未設定とか、ブラウザで無効にしているってのはなさそうなんだよね。
CookieはsetMaxAge(-1)でブラウザが閉じられるまでは消えないから、有効期限ってのも
関係なさそうだし・・・。
Hoge test = new Hoge(HttpServletRequest);
って感じで、Hogeクラスのprivateメンバに保持しておいて、
Hogeクラスのメソッド内で使おうとすると、時々nullになるんよ。
よくわからなかったから、メンバに持たせるのはrequestそのものじゃなくて、
コンストラクタ内でgetHeader("cookie")やってStringメンバに入れておくことにしますた。
定数をインスタンス毎に持っても意味ないからstaticにするぐらいにしか考えてないぜ
Javaが趣味って奴いるの? 個人レベルで何する気なんだ?Javaで
>>112 待て、おまえはServletにおけるオブジェクトのライフサイクルをちゃんと理解してるのか???
そのHoge testはどこに定義されている?
>>115 Hoge testはHttpServletのdoPost内でインスタンス化されて、
threadとして動いてます
スレッドってよくわかんねーーー スレッドセーフなクラスって何だよ… 横槍ごめんなさい。
>>116 よくわからん。該当部分のコードを見せろ。Hoge testの定義位置も含めて。
HttpServletRequest/HttpServletResponseの生存期間はHTTPのリクエストを受け付けてからレスポンスを返すまでってことは理解してるよな?
>>114 Javaが趣味でもおかしくはないと思うが
それより、趣味の何らかの計算とか集計とかに使うと非常に便利>Java
120 :
デフォルトの名無しさん :2008/11/21(金) 01:52:00
引数の戻り値について、質問です。 class Cara{ int num; double gas; int setNum(int n){ num = n; System.out.println("車のナンバーを" + num + "にしました"); return n; } double setGas(double g){ gas = g; System.out.println("車のナンバーを" + num + "にガソリンの量を" + gas + "にしました"); return g; } void show(){ System.out.println("車のナンバーは" + num + "です"); System.out.println("ガソリンの量は" + gas + "です"); } }
121 :
デフォルトの名無しさん :2008/11/21(金) 01:57:03
class Sample_return{ public static void main(String args[]){ Cara car1 = new Cara(); car1.show(); car1.setNum(1234); car1.setGas(20.5); //戻り値 int nums = //←戻り値を代入したい double gass = //←戻り値を代入したい System.out.println("サンプルから車を調べたところ"); System.out.println("ナンバーは" + nums + "ガソリンの量は" + gass + "でした"); } } これらの、ソースで "int setNum(int n){" や"double setGas(double g){"のメソッドように 引数の受け取りメソッドに戻り値を付けて、返す事はできないのでしょうか? 要するに、引数の受け取り処理とreturnの処理を、同時に・・・ 因みに、そうした場合、どうすればいいかわかりません "//戻り値 int nums = //←戻り値を代入したい double gass = //←戻り値を代入したい " ご教授、お願い致します。
122 :
120-121 :2008/11/21(金) 02:04:00
やはり、このように class Cara{ int num; double gas; void setNumGas1(int n, double g){ num = n; gas = g; System.out.println("車のナンバーを" + num + "にガソリンの量を" + gas + "にしました"); } int getNum1(){ //int型の値を返すメソッドです System.out.println("ナンバーを調べました"); return num; //呼び出し元に値を返します } double getGas1(){ //double型の値を返すメソッドです System.out.println("ガソリンの量を調べました"); return gas; //呼び出し元に値を返します } void show1(){ System.out.println("車のナンバーは" + num + "です"); System.out.println("ガソリンの量は" + gas + "です"); } }
123 :
120-121 :2008/11/21(金) 02:07:29
class Sample_return{ public static void main(String args[]){ Cara car1 = new Cara(); car1.setNumGas1(1234, 20.5); int number1 = car1.getNum1(); //戻り値を持つメソッドを呼び出します、戻り値を変数numberに代入します double gasoline1 = car1.getGas1(); //戻り値を持つメソッドを呼び出します、戻り値を変数gasolineに代入します System.out.println("サンプルから車を調べたところ"); System.out.println("ナンバーは" + number1 + "ガソリンの量は" + gasoline1 + "でした"); } } 受け取り処理のメソッド"void setNumGas1(int n, double g){" 戻り値の処理メソッドは、"int getNum1(){" "double getGas1(){" のように分けないと、ダメなのでしょうか?
124 :
デフォルトの名無しさん :2008/11/21(金) 04:02:00
万能主義はあなたの方でしょw 実際は、シングルスレッドすることは全てのメソッドをsynchronizedにするのとほとんど変わりませんよ。 それにsynchronizedは同期のことでしょ?あなたはスレッドを分かってないようですね。 勘違いしているようですけど別にswingのスレッドとかの設計に文句があるんじゃなくて、 どうしてシングルスレッドにこだわるのかって事です。もともとswingはコンポーネントなのであってguiが前提なわけで、マルチスレッドで設計するものかと思います。 swingはピュアjavaというよりも全てpaintで済ますって理念なんで分からなくもないんですけど・・・
125 :
デフォルトの名無しさん :2008/11/21(金) 04:11:01
>>95 通信の処理とかがGUIと関係あるかではなくて、処理の結果をGUI(のコンポネント)が受け取ります。
それで、計算や処理など既にハード上の能力は十分ですぐ結果が出ても、肝心の表示の方がイベントまちとか
シングルスレッドで0.5...1秒待たされるようじゃそのコンポネント(swing)を使うにはストレスがあります。
たまに複雑なJTableでもあるでしょ、少しもたつくことが。
swing workerにもありますが、計算結果や通信結果の受信はguiと関係なので次のswing frameworkでは切り離したわけで、
だから描画とは関係ないeventやproperty fireとかもシングルスレッドにしてるのはどうしてなのかということです。
将来が予測できるかどうかじゃなくて、マルチスレッドにしてviewを独立させないことは自分自身で未来を潰しているようにみえませんか。
126 :
デフォルトの名無しさん :2008/11/21(金) 04:33:04
>>99 伝統的に、イベント処理がシングルスレッド(シーケンシャル処理)だからですか。
なんかcui(今ではwebアプリとかサーブレットとか)ではThreadを導入していても、
gui(swingツールキット? invokeLaterなど)の設計の発想は昔のcのシーケンシャル処理・構造処理のままでOO指向じゃなかったんですね。
guiの(コンポネントじゃなくて)次のツールキット設計は、その古いシーケンシャル処理からの分離してコンポネント間の独立で
正しくOO指向のツールキットでしょう。最近guiやMVCなどの概念を使って、自作のコンポネント開発してみてるんですけど、
awtパッケージやawt.Toolkitはマルチスレッド設計ですよね?それで開発しているとよく気になって、swingは描画と
関係ない処理・イベント受付が絡み合ってるみたいなんでその辺りをすっきし指せれば別に遅くもないし、
透明かも擬似的に出来るし、逆に洗練され使いやすいんですけど。
SUNがswingに関心をもたなくなって次に向いている理由もなんとなく分かります。
>>126 お前は、Sunが何故GUIのマルチスレッド化を諦めたのかをちゃんとしらべたほうがいい。
AWTは失敗だった、マルチスレッドでGUIを「正しく」実装するのは現実的には不可能だ、と言ってるんだから。
AWTはマルチスレッド対応じゃねーし、 マルチスレッド対応だから失敗したわけじゃないでしょ。
こんなGUIのフォームを作りたいんですが、 その中でいくつか質問があります。 テーブルA ボタン テーブルB ID Name ID Name [1 ][A ] [1 ][E ] [2 ][B ] (追加) [2 ][F ] [3 ][C ] (削除) [3 ][G ] [4 ][D ] [4 ][H ] 1.テーブルID項目は非表示にさせたいけどできますか? 2.テーブルAセルを選択した状態で追加ボタンをおしてテーブルBに追加したいんですが、 選択したセルの情報を取得する方法はありますか? 以上です。よろしくお願い致します。
>>129 できますか、ありますかといわれたら、できますありますと答えるしかないw
131 :
デフォルトの名無しさん :2008/11/21(金) 11:19:12
あげてすいませn
134 :
31 :2008/11/21(金) 11:35:33
エクリプスにアプレットプラグイン追加してやってみたのですが
>>32 と同じエラーがでます。
どうやら画像が読み込めてないようなのですがどうしたらいいのでしょうか?
135 :
デフォルトの名無しさん :2008/11/21(金) 11:44:25
>>127 SUNはどうしてGUIのマルチスレッド化を諦めたんですか?
GUIとマルチスレッドはあまり関係ないんで当然だと思うんですが、何を正しく実装するんでしょうか?
起きたばっかりで書き込んで所々重大な誤字がありますね。 少し誤解があるみたいなんで直しておきましたw 計算結果や通信結果の受信はguiと関係ないので、次のswing frameworkでは切り離したわけで、 古いシーケンシャル処理からの分離してコンポネント間の独立で、まさしくOO指向のツールキットでしょう。
それでJavaFXの方はJavaとは独立してリッチ何とかと宣伝してるんでけど、結局は新しいツールキットなんですか? それともswingみたいなコンポネント(デベロパ)の延長なんでしょうか? nativeピアで透明化が可能なawt.Windowが(ネイティブ依存でも)取得できれば、 awtとjava2d,3dでなんとでも出来る感じがしますけど。ただswingがなくなる事はないでしょうけど、 java seはOS依存と思われるシステムトレイもサポートしたので、そのうちそんなwindowの取得も出来るんでしょうか。
138 :
31 :2008/11/21(金) 12:08:34
読み込み方法を変えたら無事に動きました。
>>126 webアプリがマルチスレッドになってるのはwebアプリにはクライアントが複数あるから。
基本的には 1クライアントに対して、一度に 1スレッドしか動かないようにするわけで。
140 :
デフォルトの名無しさん :2008/11/21(金) 13:25:22
それと同じような構造でgui toolkit frameworkを作ればいいんじゃないですか? 今のハードならスレッドにしたところでたとえすべて同期にしたとしても全く問題ないわけで。 webやデータベース問い合わせはすぐ処理が終わりますが、paintは少し計算が必要なだけでそんなのは今のハードなら屁でもないでしょw 今の時代のguiコンポネントは、テキストフィールドとか情報表示程度なので多少もたつく程度であまり気にならいのでしょう。 プロパティ更新などのイベントとpaintは全く関係ないのでこの辺りを切り離なせばswingはかなり有用なコンポネントになるんじゃないでしょうか。 問題もわかったことなので作るのはそんなに難しくはないのですが、どっちにしてもこんな根底部分の機構は私一人ではどうにもならないものなので、誰かjava.net辺りのプロジェクトで提案してリードしてくださいなw
不満があって知識があって明確な目標があるのに何で自分で実装して提示してみないんだろう。 最初から実用に供することのできるGUIフレームワークなんか期待していないけれど、 スレッドセーフな小規模実装を出して技術的実現性とその有用性を示して見せれば否定的意見は減ると思う。 俺としてはGUIのスレッドセーフ化をsunが諦めたのは分からんでもない。
言いだしっぺがやるべき
>>140 それを自分自身で提案すればいいじゃないか
文句を垂れてみせるだけでもいろいろ意見が出てくるはずだぜ
だれも
>>140 自身にコード書いてみせろとは言わんよ
144 :
31 :2008/11/21(金) 13:40:14
Executors.newSingleThreadExecutor();で処理すれば マルチスレッドの勉強しなくてもよくない?って思ったんですけど 考えが甘いですか?
勉強しないで取捨できるって天才だな
例えば メッセージ: 「実行時にフォーマットを行いますか?」 ラジオボタン: 「はい(デフォルト)」「いいえ」 ボタン: 「実行」 なんてダイアログがあって、次のイベントが入ってくるとします。 (1)「ラジオボタン[いいえ]をクリック」 (2)「[実行]をクリック」 この場合、入力イベントがシーケンシャルに処理されるのであれば (2)のイベントを処理する段階では(1)が既に処理されている事を概ね 仮定出来ます。ラジオボタンの現在状況を気にせず、選択状態を示す 内部変数を参照して処理を開始できます。 ところが、このラジオボタンはとても重要なので"シャッキーン"とか 派手なビジュアルエフェクトの後に内部変数を[いいえ]側に倒す実装の 場合はどうでしょう。 となると[実行]ボタンの側では処理を開始する前に、ラジオボタン等々の 処理内用に関連する全てのGUI部品向けのイベントが全て処理済みで あるか確認する必要があります。 もし個別のGUI部品が非同期にイベントを受領して処理する事が可能 なのであれば、プログラマは常に部品間の依存関係に注意して適切に ロックなどを設計する必要があります。これが結構大変。 あるいは、高度なユーザーであれば、ダイアログボックスの生成に要 する0.5秒より短い時間でいいえ「付近」と実行「付近」をカンでクリック してくるかも知れません。 ラジオボタンの生成やpaintが完了する前に[実行]ボタンがイベントを 受領してしまうと、どうでしょう。
いずれにしても上記の(1)->(2)というイベント「順」で表現された 「フォーマットはしないで、実行」という「文脈」を正しくとり 扱う必要があります。GUIの側は非同期処理で実装されていてもOK ですが、その処理内容は常に上記のイベントの入力順番を意識する 必要があります。 まとめると、ユーザー操作のイベントは個々が単発で存在している のではなく、「[いいえ]をクリック」「[実行]をクリック」とその イベント列で表現された文脈の中に存在しています。 さらにGUIを持つアプリケーションは、多くの場合内部状態をもって いるステートフルなアプリケーションです。 ステートフルなアプリケーションは非同期に入力されるイベントを 適切に取り扱うためにキューやロックを慎重に設計する必要がある、 これはGUIのみならずアクセンスカウンターからAmazonに至る 全てのウェブアプリケーションについても同じ事です。 ただGUIは内部状態の更新を引き起こすイベントの粒度がウェブに 比べより細かく、数も多いです。 また前述のようにイベント列は文脈をもっています。 この問題に対してイベント列をキューにためて順繰りに処理を行う 方法がプログラマが管理しやすい「現実的な」解として長らく支持 されてきたのだと思います。 もし現在の実装よりマルチスレッドなGUIツールキットの開発を目指 しているのであれば、個人的には入力イベントの文脈依存性をどの ように取りさばくのか、その実装アイデアに興味があります。
>>147 一つのアイデアとして、そういうことはやらない、ってのはどうかな?
>>147 1.フェイルセーフの観点からは、「フォーマットしない」をデフォルトにすべき
2.内部変数のセットは、「シャッキーン」の前に実行すべき
151 :
デフォルトの名無しさん :2008/11/21(金) 16:23:06
>>150 いや・・・全くそのとおりなのですが・・・
要はイベントの入力順を気にせず処理できるものからパクパク
処理していくと時に致命的な結果を招きかねませんよ、という事を
説明するために無理矢理作った例です。寝ないで考えたのに〜。
マルチスレッドGUI君は、自分の答えやすいレスへしか返事してないな。 なんというチキン。
>俺としてはGUIのスレッドセーフ化をsunが諦めたのは分からんでもない。 デッドロックとかも心配しるようですが、スレッドセーフは同期の問題なので、guiのpaintとは全く関係ありませんよ。 これでもまだ分からないなら、たぶんスレッドの本質部分があまり分かってないんじゃないでしょうか。 少なくともguiやpaintを上手く設計したところで、デッドロックがなくなるわけではないでしょw せっかくOO指向をサポートしている言語なのに、paintを従来型のツールキットにあるイベント処理(ロジック)か何か勘違いしてるんでしょうね。
154 :
デフォルトの名無しさん :2008/11/21(金) 16:57:41
>>147 たぶんそれは、jsr提案で次のswing frameworkにあるSwignWorkerで分離してると思うんですけど。
イベント処理つまりイベントのデータの取得、計算、結果の過程と、描画paintを区別・分離した実装
のことを書いてあるんですがお分かりになりませんでしたか?
実装にもよると思いますが、OO指向的には、計算とその表示は別に連動している必要はありませんよ。
どうしても連動させたいならsynchronizedでしょうかね。といってもスレッドのことわかってないみたいなんで、
そういう方はリンク先にもありましたけど、you do not have to understand the thread or sync deeply.とかなんですかねw
155 :
デフォルトの名無しさん :2008/11/21(金) 17:11:25
>>148 あなたに技能があり、そのようなツールを開発してたりオープンソースに多少でも関係してるなら答えてもいいんですけどね。
というよりも、もし個人そういうことをやってたり考えてるなら、オープンソースのグループに参加してみると今までのあなたの狭い見識が一気に変わりますよw
私が見たところ、従来型のシーケンシャル処理とイベントキューから抜け出せず、さらに計算結果とその表示を連動させようと四苦八苦しています。
まさに、cuiやcの時代の思考方法でしょうかw
>さらにGUIを持つアプリケーションは、多くの場合内部状態をもって いるステートフルなアプリケーションです。
例えばこの一文でも、OO的な極端なところでは、その内部フィールドを全てクラスにして同期にすればなんとでもなりますよw
イベントキューの順次処理はそれが一番単純で確実で実装も容易なので問題ないのですが、
この順次処理とguiのpaintは連動している必要はないので、そういった発想の転換が求められてるんじゃないですか?
アイディアとかも、別に私より上の方々が既に実験実装してるんで、そっちに参加した方が面白いですよw
java 2d程度の数学知識があれば、flushのライブラリとかも普通に作れるし、そんなに難しくないんですけど、
とにかくイベントキューでpaintがもたつくのは数学では解決できずawtやswingなどツールキットの問題です。
swingの設計について不満があるのはわかったが、 ここで何を言っても開発者に届くわけじゃないし意味ないと思うよ
swingの開発者にこんな訳分からんのが届いちゃってもマズいと思うが。 時間の無駄だしストレス増加するだろうし。 swing開発者がハゲちゃったらどーすんだよ。
>>155 う〜ん、なので私自身は最初に「伝統です」と答えたのです。
正直あなたがどの程度の知識を持ち合わせているのか分からなかった
ので、「どうしてそのような伝統なのか」という事情を具体例を挙げて
説明しようと試みました。
どうやら完全にスキルを読み違えた返答になってしまったようで申し訳
ありません。
確かに私はGUI方面からは暫く離れた古い人間で、しかも当時の専門
はどちらかというとVRとかいったやや特殊な表示方面でした。
ちょっと昔の事例ですが、CaveLib辺りを弄くっていました。
で、同期には大変苦労しました。
確かに仰る通り計算と表示は必ずしも同期する必要はありません。
(特にVRでは「しない」前提でないと設計できない事が多いです)
問題は、ユーザの操作シーケンスと計算(というかアプリケーションが
実現する処理一般)の内容は一致させる必要がある、という点です。
で、これを実現するためには描画は別CPUに丸投げ、とは案外いか
ないなというのが実感でした。
少なくとも再描画周りであればLayoutまではきっちり首に縄を付けて
おかないと、「座標xyzをクリック」というイベントを「部品Aをクリック」
といった論理イベントに解釈するところで大いにハマります。
でも分散しないとフレームレートが上がらない、ので苦労しました。
なので、仮に最近のOOを用いたアプローチでより洗練された設計
モデルが実現されているのであれば大変興味があります。
(興味、ですよ。今はこの分野からは離れているので。)
もしある程度確立したモデルがあれば教えていただけると幸いです。
あるいは参考になる実装なりプロジェクトがあれば幾つか挙げて
もらえないでしょうか?
なんで2chでやるかな
やっぱSwingよりSWTだよね! ・・・SWTに詳しいサイト教えてください><
「Java並行処理プログラミング」に、その辺の事情が説明されている イベントドリブンモデルでは、リソースに適切な順序でロックをかけるのが非常に難しい Swingも当初はマルチスレッドを狙ったらしいが、 途中で無茶だと分かりシングルスレッドに変更とのこと 「マルチスレッドのGUIフレームワークは、非常に慎重に設計すれば無理ではないだろうが、 マルチスレッドの専門家しか扱えない代物になるだろう(大意)」とは、Sunの偉い人の弁
>>161 どこで読んだか思い出せず、よーやく発掘したと思ったら先を越されたorz
まー、これだけでは何なので、p.214より一部抜粋。
> マルチスレッドのGUIフレームワークを作る試みは過去にいろいろありま
> したが、どうしても競り合い状態やデッドロックの問題に付きまとわれる
> ので、結局全員があきらめてシングルスレッドのイベントキューを使う
> 方式に落ちつきました。《略》(AWTは最%8
163 :
162 :2008/11/21(金) 19:37:11
途中で切れたorz 以下続き。
>《略》(AWTは最初、相当本格的なマルチスレッド
> アクセスをトライしましたが、その失敗の経験に基づいてSwingはシングル
> スレッド方式になりました。)
何故うまくいかなかったかについては、上記以降のパラグラフに書いてある
が、ここに引用するには量が多いので、詳しくは該当書籍をあたってくれ。
まぁ、上記の問題については、
>>140 が画期的な案を持っているようだから、
ここで開陳すると乗ってくるやつがいるかもしれんぞ。過去のGUI専門家が
皆諦めたくらいだし。
おまいら、 >実際は、シングルスレッドすることは全てのメソッドをsynchronizedにするのとほとんど変わりませんよ。 こう書いてある時点で、釣りであることに気づけ。
マルチスレッドなGUIのメリットってなんだろ?? シングルスレッドなデメリットってほとんど回避できそうなんだけど。
結局そこに尽きる 苦労しても実入りが少ないから誰もやらない
>>135 素人考えだが、マルチスレッドにしたらそれぞれがフリーダムに動いて
フリーダムなの動きがお互いに悪影響で、
それを回避するためにあれこれしてたらあはーんなんじゃないだろうか
どうでもいいことで盛り上がってるな!
マルチスレッドはマルチコアと関係ありますね?
>>118 今手元に無いのでちょっと出せませんが
>生存時間
これを理解してなかった・・・。
Hoge testが動き始めたときには、すでに呼び出し元の
Servletはレスポンスを返し終わってるから、だめってことか。
ありがと
オブジェクトの再利用ってのは test a = new test() test b = new test() っていう風に同じオブジェクトをインスタンスしたということですか?
172 :
デフォルトの名無しさん :2008/11/22(土) 02:37:47
スレッドだいぶ勉強したんで、なんかソースみたいんだけど あんまりネット上にないね。マルチスレッドを実務でつかうことも ほとんど俺の場合ないから、無駄というか、不満なんだ。 スレッドを使った面白いアプリを組んでみたいなあ。だれかソースくれ。
>>171 毎回newし直さずに一度newしたインスタンスをずっと取っておいて何度も使いまわすことを指すんだと思いますが
>>172 つWebサーバ
……に限らず、Javaで書かれたサーバ系のソフトはふつーマルチスレッドと思われ。
175 :
デフォルトの名無しさん :2008/11/22(土) 04:53:56
>>158 VRというと1995年頃のあれでしょうか。
たぶんどんなに有用なりソースを紹介したところで、あなたの脳みそが順次処理(フローチャートw)に染まってるようなのでいくらUMLやOOを勉強しても無駄だと思います。
今でもまだ理解が足りませんが、私もOOの発想に切り替えるのに苦労したんでw
今教えて差し上げられる事は、先も書きましたがVRっぽくいえば、「大量の頂点座標の計算結果は、とくに描画せずに破棄してもよい」ということでしょうか。
ただ、同期しないといけないところは当然そのオブジェクトが有機体として一つになっているので、
例えば、首は右を向いた(イベント)なのに、胴体だけはpaintが追いつかず、表示しても首が180度回っちゃっているオーメンの呪われた少女wみたくなってるわけです。
これは、上のswingのように、胴体だけは座標計算は終わっているがイベントキューのためにpaint命令がつまっていてpaintが追いてないわけです。
ただこれも解決法がいくつもあるんで、こういうのは(数学上・手続き上で解決できる程度の)アルゴリズムとかですかねw
従来と同じ問題がありますが、100人でやる2人3足のように、そういう足が遅いものは他のオブジェクトからすると迷惑だと思いませんませんか?
>問題は、ユーザの操作シーケンスと計算(というかアプリケーションが 実現する処理一般)の内容は一致させる必要がある、という点です。 3Dとか複雑なアプリを作るぐらいになっているなら、プログラムをその場しのぎの独学でやるんじゃなくて、 ちゃんと数学知識の裏づけを持って作ってみたらどうでしょうか。 たぶんこの一文から見てもあなたは小技をいっぱい知ってるが・・・って程度なのが分かります。 例えば、1秒で60フレームとかにこだわらず、10フレームでいいんじゃないでしょうか。それが今のソフト上の限界なのかもしれませんが、あなたの発想は、数学ではなくて、その限界を飛び越えようとする哲学か何かをもってるんじゃないですか? しかしその小技もシーケンシャル処理だと通用しても、オブジェクト指向だとまったく通用しなくなるんで、その辺りの発想が抜けてないんじゃないかと思います。 別に小技がダメだとかOOがいいんだとか言うのじゃなくて、class数が多くなったアプリだと一人のデベロパがそれを理解することや管理するのが不可能で、もう既にシーケンシャルの発想のままじゃ無理ですよ。 >なので、仮に最近のOOを用いたアプローチでより洗練された設計 javaなら、javafxとかですかねwまだアルファみたいですけど、このプロジェクトが完全中止になる事はないでしょう。 他には、頑張ってるみたいですけど、adobe flashとかも正当な2d guiの進化をしている気がします。
>イベントドリブンモデルでは、リソースに適切な順序でロックをかけるのが非常に難しい だから、コンポネントを「情報表示のコントロール」と考えるとイベントと連動する発想で実装したくなりますが、 「コンポネントは独立していて、一種のアニメーションである」とかだと発想も変わるんじゃないですか。 旧来の発想ではいくらハードが進化しても描画イベントまち(paint)でもたつくわけで、これはソフト(toolkit)の描画機構の問題です。 つまり「コンポネントはイベントと連動して表示しなければならい」という発想が今の限界になってるんじゃないでしょうか? これだけ問題点が出てきてるんで、後はこれを解決するような設計や機構をUMLとかで作るだけですよw いくらguiが2dや3dを容易に扱えるようになっても、情報結果表示専用コントロールなどといった発想のままでは今後もテキストエリア程度のまま次の10年がすぎるんじゃないかなと思います。
178 :
デフォルトの名無しさん :2008/11/22(土) 05:31:11
質問させて頂きます。 仮に KeisanというClassに public int add(int x, int y){ return x + y;} というメソッドがあるとし、このメソッドをKeisan以外のクラスで使用するにはどうすればいいのでしょうか。 よろしくお願いします。
179 :
デフォルトの名無しさん :2008/11/22(土) 05:45:42
180 :
デフォルトの名無しさん :2008/11/22(土) 06:09:00
>>178 インスタンス化してaddメソッド呼び出しするんじゃないの?
並列処理の人もいるみたいなんでコメントしておきますが、
>イベントドリブンモデルでは、リソースに適切な順序でロックをかけるのが非常に難しい
これもすぐにソリューションが浮かびますよw
ただ私は仕事や専門でやってるわけでも報酬をもらってるわけでもないので、それをお答えするつもりはありません。
一番大事な事は、その問題の効率的・合理的な答えが存在することじゃないですか?
たぶん、並列処理のツールを実際何かで使ってみたり、簡単なGCを実装してみたりすると、あなたもよいアルゴが浮かんでくると思います。
今作ってるのはグラフ理論ですかね。
http://bkv.so-net.ne.jp/ http://iv.xight.org/ みたいのでしょうかw
というよりも、今までの私たちの発想になかった次世代のコンポネントの感じがしませんか?
182 :
デフォルトの名無しさん :2008/11/22(土) 06:13:24
インスタンス化する方法を教えてください。もしくはTUTORIALなどのリンクなどでも結構です。
183 :
デフォルトの名無しさん :2008/11/22(土) 06:14:51
new か?
184 :
デフォルトの名無しさん :2008/11/22(土) 06:18:34
>>175 >たぶんどんなに有用なりソースを紹介したところで、あなたの脳みそが
>順次処理(フローチャートw)に染まってるようなのでいくらUMLやOOを
>勉強しても無駄だと思います。
またまた、そんな出し惜しみせずにw
無駄かどうかは自分で判断しますし、少なくともコードは読めますから、
まずは具体例を列挙してもらえると大変助かります。
特に「実験実装」事例に興味があります。
>>adobe flashとかも正当な2d guiの進化をしている気がします。
幸いFlashについてはFlexについてライブラリの構造やイベント処理周りに
関してある程度理解があります。これまでの議論と関連して、どの辺りが
特に優れていると感じられますか?
一つ気になったのは、重いイベントの破棄や、フレームレートの程度や、
コンポーネントと描画の連動の是非は基本的にアプリケーションの仕様
で決まるものであり、OO等の設計論とは別の問題ではないでしょうか。
もう一つ判然としないのは、マルチスレッドの適用範囲です。意図されて
いるのは全体をざっくりMVCに分けたとして、MとVとCの間の結びつきを
非同期にすることを考えられていますか?
それともV相当の部分もより細かく分割して、内部を非同期で処理する
ことを目指されているのか、どちらでしょうか?
185 :
デフォルトの名無しさん :2008/11/22(土) 06:30:10
>>182 Keisanクラスをimportして普通にnewじゃないかな?
間違ってたらごめん。
186 :
デフォルトの名無しさん :2008/11/22(土) 06:56:04
jdkにあるdemoにグラフ理論のデモ・アプレットがあるので(先のリンクと全く同じものです) それを参考にしたらどうでしょうか。今までの考え方が全く代わりますよ。 flashはもともとアニメーションから始まっているってことを知っているなら、 今までのコンポネントの設計・利用の発想と全く違うし、 MVCは完全に分離されているって事が理解できるのかもしれませんw あなたのイベントに依存しているpaintモデルは、wikiの記事にもありましたがVCがくっついてるものですかね。 swingやツールキットの設計がOO思考じゃなくて従来のイベント処理を土台にしてるって事なので、 それを利用するアプリは否応なくイベントドリブンの作法に従わなければならないってことでしょう。 いま自作でグラフ論理ライブラリを作って実験してるところなのでなんともいえませんが、 仮にswingと全く逆のアプローチで、全ての視覚コンポネントをnew Thread(comp)としても、人間の感覚に触るようなストレス・コストはありませんよ。 それよりもpaint待ちの0.5秒問題の方がストレスな気がします。 VについてはSwingWorkerのようなソリューションで、内部の描画には触らないほうMVCの完全分離となるんじゃないでしょうか。 コンポネント・コントロール(extends java.awt.Component)は、自分でつくったもののみしかダメって訳じゃないでしょう。 最終的にはレイアウトマネージャの自作実装になるんでしょうけど、まだそこまで手が回らないんですが、 ネットではレイアウトマネージャの実装解説はあまりないですね。 ボタンとかリストぐらいなら、コンテナサイズ変更不可かつnull layoutでいいんでそんなに難しくないんですけど、これは一応guiですが実質的にコマンドライン・プログラムでしょう。 これだけヒントがあれば、必要最小でシンプルなadobe flashライブラリflexの自作などもそんなに難しくないでしょう。
最近の情報視覚化やってる連中って「グラフ理論やってる」って自称するもんなのか?
>いま自作でグラフ論理ライブラリを作って ええと、ここは多分グラフ「理論」の事ですよね。グラフ論理だととても 意味が変わってくるので一応確認します。 つまりこれは、グラフ理論を用いて例えば描画にまつわる依存関係や 制約問題を解くライブラリという事でしょうか。 あるいはばねモデルによるインタラクティブなグラフ表示のような、 グラフ「を」描画するライブラリの事でしょうか。 TouchGraphやPrefuseといったライブラリに相当するものでしょうか? あとFlashがMVCに完全に分離されている、というのは正直どのような 視点から述べられているのか不明確です。MVCのそれぞれに対応する Flashの構成要素を具体的に示してもらえますか?
189 :
デフォルトの名無しさん :2008/11/22(土) 08:24:02
これ人工無能だったら良い出来だよな
初心者の質問が無くなるから他でやれ
どこいっても迷惑がられると思うんだが
193 :
デフォルトの名無しさん :2008/11/22(土) 10:07:23
デバッグってなんですか。
>>193 鞄の中身を取り出して、
要らない物があったら棄てて
また入れ直す作業の事です。
あ、depackかorz
livedoorブログを使ってます。 Javaのソースコードをブログの記事に載せたいのですが 如何も奇麗に載せられません。 ソースコード HTML化 コンバーター「唐辛子」も 使ってみましたが奇麗に表示しません。 使い方が間違ってるのでしょうか? 何方かlivedoorブログでソースコード等を奇麗に表示されてる方及び、 奇麗に表示させる事をご存知の方教えて頂けませんか? よろしくお願いします。
196 :
デフォルトの名無しさん :2008/11/22(土) 11:11:40
>>182 x = new Keisan();
int y = x.add(1, 2);
197 :
訂正 :2008/11/22(土) 11:12:23
>>182 Keisan x = new Keisan();
int y = x.add(1, 2);
198 :
デフォルトの名無しさん :2008/11/22(土) 12:38:48
>>188 あなたの文章を読んでいると、あなたは根っからのPG職人ってところですかねw
もし興味あるなら、まずはGraphcis2Dを使えるように勉強したらどうですか?
それと、あなたはいつまでも自分の意見を変えない宗教っぽい人だとおもんですけど、
一筆書き問題を計算して、その結果を表示する事、さらにどの位置にどのような表現で表示するかは、全く別ってことでわかるんじゃないでしょうか。
今作ってるライブラリは根底部分はjdk1.1のアプレットで動かすためにコレクションもMyHashtable, MyVectorとかで自作してるし、
classファイルが100を超えてるんで、UML知ってるかどうか以前にOO指向じゃないと一人では管理する事は明らかに無理です。
というか、こういう苦労話を聞きたいわけじゃないでしょw
人工無能のソフトウェアパターンとして、 「はい」か「いいえ」かで答えられるような質問に対しても明示的に答えず、 駄文で文字数稼いで如何にも答えているかのように見せかける というのがあるのでしょうか。
>>186 お前、以前ここで、JFrameが数十回に1回白くなるのはバグだとか
アホを晒してみんなに呆れられてた奴だろ?w
>>198 いやぁ、宗教ぽいというより、単に疑問点に対してしつこいだけですよw
どうもあなたのレスの中には次々と新鮮な視点が提示されるため、それらに
対する疑問が解けないうちは意見も変えようが無いじゃないですよね。
特にFlashとMVCの対応は是非とも説明していただけると有り難いです。
これは個人的にはとても新鮮な視点で、故に理解が難しい点も多いです。
例えばFlash界にもCairngormやPureMVCといったMVCフレームワークが
存在します。しかしそもそもFlash自体が明確なMVC構造を持っているので
あればこのようなフレームワークは屋上屋を重ねるものでは無いでしょうか?
一筆書きを解くのと描くのは別問題なのはその通りだと思います。
で、現在開発中のライブラリの目的はどちらなのでしょうか?
しまった、真面目に相手して馬鹿を見た……。
中二でC言語遣らないで、 Javaから手出して配列とかやってる奴って凄いの?
>>200 反応ないところを見るとたぶんそのアホなんだろうなww
こんな鼻糞みたいな奴はほっといて俺達の初心者ちゃんの質問に答えてやろうぜ!
>>201 今までの伝統的な手法であったから行き詰まったんでしょう。
ということは全く別な始点でソリューソンする必要があるんじゃないでしょうか。
私から見ると、adobe flash, javafxなんかはtcl/tkの再来(だいぶ違うが)にしか見えないんですけど、
guiのコンポーネント操作(イベントとかも含めたツールキット)は、jvmをプラットフォームにして、java langとanother scriptに分けるぐらいにしないと自然な分離はできないんだなと思います。
つまり、VとCは別のものとして作っても全く問題ないってことです。この辺りに気がつくかどうかは、数学とかパズルのセンスが必要なのかなっておもいます。
逆にいえば、swingはシングルスレットであるって事が強みなんですけどね。
外部調達ならjavax.scriptサポートが必然的に必要だし、invokedynamic bytecodeも必要になってくるって事ですかね。
あまり深く追いかけてませんが、jdk1.1 applet用のライブラリを作っているとEnumerationとEnumeration用の内部クラスばかりなので、
どのjdkでも頻出イディオムだし、クロージャは早いところ仕様をまとめて導入して欲しいところです。
とうか、私はCとかポインタとかもバリバリ使えますよww
ライブラリですけど、アスペクト指向はまだ良く分かってないんでまだですけど、プロトタイプ指向はもう既に実装して実験的ですがライブラリに組み込んでますよ。
描画の方はもう弱点がわかったんでソリューションもできたし、今のところはレイアウトマネージャをどうやって実装するかってところです。
いくつかあるんですけど、グラフ理論に興味があるなら本格的なライブラリならこれですかね。
http://jung.sourceforge.net/presentations/index.html
あなたはまず改行を覚えた方がいいですよ
トリ付けろ 相手したい奴だけが相手したらいい それ以外の人に迷惑だ
208 :
デフォルトの名無しさん :2008/11/22(土) 15:28:55
デッドロックを気にしている人もいましたけど、自分で実際に問題となる小さいプログラムを作ってみると上手いソリューションが浮かんでくるんじゃないでしょうか?
MVCのそれですけど、先も書きましたがflashはアニメーションから始まってることを知ってれば、従来のコンポネントとは違うってことを自然と分かるんじゃないでしょうか。
もしくは、
>>201 はアプレットでアニメーションとか作ったことあると、たぶん今までのイベントモデルでやるんじゃ難しすぎるって事がわかるんじゃないかと思います。
小さい脳みそで考えてばかりいないで、サルみたく手を動かせってことでしょうかww
もう俺にはおなかいっぱいw 本とキモイから死んでくれよw
210 :
デフォルトの名無しさん :2008/11/22(土) 16:25:24
やっぱり人工無脳なのかなぁ
初心者が質問しにくいナガレだな
人工無能でこれぐらいできるなら音声認識&読み上げ機能組み込んで ボケ老人の相手とかさせたらビジネスになるんじゃないかと思ったりする
213 :
デフォルトの名無しさん :2008/11/22(土) 17:09:45
もうJAVAは難しすぎる!おれはC#にする!絶対!!
214 :
デフォルトの名無しさん :2008/11/22(土) 17:46:39
>>212 それは既に初ねミクで実装されてるよww
おまえ、頭大丈夫か?
あぁ、人工無脳を疑うコメにこれまた人工無脳で生成されたかの ようなツッコミが。頭痛くなってきたよ〜
ジャバなんか鼻糞じゃんか。オレは最強のMVCであるMICROSOFT.NETをすすめる!
ありゃ。一気に脳みそレベルが下がっちゃったみあいw
218 :
デフォルトの名無しさん :2008/11/22(土) 18:49:18
もう次から次から新しいことなんか覚えられないよ やっぱり俺はC#でいいや マイクロソフトと俺は心中することに決めた
知ってたら教えて欲しい。 javaからクラスパスを取得する方法ってあるかい? ClassLoader.getSystemResource("hogehoge.ini") こんなコード書いてるんだけど、nullしか返ってこないんだ。 だから、クラスパスを表示してみてみたいと思ったんだ。
System.getProperty("java.class.path") 自己解決した、これで取得できた。 System.out.println(System.getProperty("java.class.path")); これで表示できた。 ちょっとググルキーワード変えたら出てきた。
221 :
デフォルトの名無しさん :2008/11/22(土) 20:59:08
エスパーさんこんばんは
あの・・・エクソシストって映画なんですね・・・その首の女の子がこっち見てるんですけど・・・・
224 :
デフォルトの名無しさん :2008/11/22(土) 22:35:50
amazon
質問です 文字列の中で変数を使いたいのですが どのようにしたらよいのでしょうか?
変数らしきものを自力で探し出して置き換える 簡単な方法はない
228 :
226 :2008/11/22(土) 23:21:20
>>227 そうだったのですか・・・
では面倒ですけど、地道に変数の値を文字列に入力していくことにします。
ありがとうございました。
229 :
デフォルトの名無しさん :2008/11/22(土) 23:30:57
ん? 単純に int a=3; String str = "1足す2は" + Integer.toString(a); System.out.println(str); とか↑こんな感じのことをいってるんじゃないのか?
230 :
226 :2008/11/22(土) 23:44:34
>>229 まさにそんな感じでした。
いま試してみたらばっちり上手くいきました。
ありがとうございました!
>>229 String str = "1足す2は" + a;
でいいじゃん。文字列に+するときは自動的にtoStringされる。
232 :
229 :2008/11/23(日) 00:45:58
>>231 そうなのけ?Javaはもう4年くらいやってないからよくわからん。。
勉強になったよ。ありがとう。質問者さんも解決したみたいでよかった。
>>232 Javaでは、String自身を除く全てのデータ型(nullも含む)について、Stringへの変換が規定されてる。で、+演算子の前後どっちかがStringなら、もう一方もStringに変換される。(Java言語仕様第3版5.1.11, 5.4, 15.18.1参照)
String a=10; エラー String a=""+10; OK
235 :
デフォルトの名無しさん :2008/11/23(日) 05:01:11
236 :
デフォルトの名無しさん :2008/11/23(日) 10:21:50
あほみたいな質問なんですが、javaのパスは通るのですがjavacのパスだけ通ってくれません。 使用しているOSはwindows XP HE SP3 インスコしたのはver6のup10 パスの記述は間違っていませんし、実際にその階層にjavacもあります OSを再起動をしてみるのですが、ずっと迷子のままです wikiもggrksもしてみましたが、解決法にたどり着けずに苦しんでます だれか、こんなあほの子に救いの手をください。
>>237 「パスが通らない」という意味がわからん。パスは通すもんだ。
マイコンピュータで右クリックメニューを出して「プロパティ」を選択
→「詳細設定」タブで「環境変数」ボタンを押す
→上半分の「xxx のユーザー環境変数」(xxx の部分はお前のユーザー名)のところに、変数「PATH」がないか探す
→→変数「PATH」がない場合は、「新規」ボタンを押して、変数名に「PATH」、変数値に「C:\Program Files\Java\jdk1.6.0_10\bin」を記入し、「OK」→「OK」と押す
→→変数「PATH」がある場合は、PATHの行をダブルクリックして、変数値の末尾に「;」(セミコロン。コロンと間違えないように)で区切って「C:\Program Files\Java\jdk1.6.0_10\bin」を記入し、「OK」→「OK」と押す
→コマンドプロンプトを開いて、「echo %PATH%」と入力してリターンを押す。表示される中に上で記入した値が入っていれば、設定が反映されている
→「javac」と入力してリターンを押し、使い方のメッセージが表示されれば、記入した値が正しいことが確認できる。そうじゃなければ何かミスってる
>>238 それでもうまくいかなかった
#echo %path% で通っているにも拘らず
ので、一度windowsから復元をかけてインスコ前にして、
再インスコしました。再インスコしたらうまくいったので、
インスコに失敗していたのかもです。どもです。
JSPでフォームに入力したテキストをMySQLに入れるプログラムを作っているのですが、 登録しても登録されていない。 MySQLのログを見ると確かにINSERT文がMySQLに送信されているのですが…… そのINSERT文を丸ごとコピペしてコマンドラインでmysqlコマンドを使って直接ぶち込むと きちんと登録されます。 エラーログには何も残っていません。 これは何が原因でしょうか?
241 :
デフォルトの名無しさん :2008/11/23(日) 16:20:38
RMI(りもーとめそっどいんヴぉけーしょん)のサンプルをたくさんやってみたいんだけど オライリーの本しかない(´・ω・`) でも、オライリーは昔からあんまりすきじゃない(´・ω・`)ピアソンエデュケーションとかがすき。 そういうことでRMIのオライリー以外の本とかRMIのことが割合詳しく載ってるWebページしってるひといたら おしえて(´・ω・`)
242 :
デフォルトの名無しさん :2008/11/23(日) 16:22:29
オライリーの本って、くどくど長たらしいよね(´・ω・`) かといって、面白そうなページからやろうとすると、くどくどした 説明のところを何ページもやらないとできないようになってる(´・ω・`) クックブックとか別だけど。
243 :
デフォルトの名無しさん :2008/11/23(日) 16:36:51
>>238 >javaのパスは通るのですがjavacのパスだけ通ってくれません。
使用しているOSはwindows XP HE SP3
javaは最初からパスが通ってる。だから、パスを設定しなくても実行できる(JVMをインストールした時点で)。
で、パスが間違いなく通っているのにjavacが使えないというのは、100%ない。だからパスが間違ってる。
1)パスとパスの区切りにセミコロンはいれたか?要するに前のパスとの区切りでセミコロンはいれた?
2)パスはエクスプローラ(マイコンピュータなど)を開いて、必ずアドレスバーを表示するようにして
jdkのインストールディレクトリ\binまでたどっていき、アドレスバーの文字をコピーしてパス設定のダイアログに貼り付ける
この際、今まで記述してあったパスとの区切りにセミコロンを必ずいれること。アドレスバーの出し方は↓
http://www.progless.com/soft/shatv2/samples/tips/addressb/addressb.htm
244 :
デフォルトの名無しさん :2008/11/23(日) 16:41:29
javaの勉強始めようと思ってる大学生です。 まともに使える言語がないので勉強しようと思ったんですが、どのような方法で 勉強するのがお勧めですか? 2週間ほどWebで教えてくれるサイトを巡って、書いてあることをひたすら読んでいるんですが、 正直スキル向上する気がしません。 for,ifなどの基本的な命令は使えます。
>>240 ちゃんと MySQL に接続できてるか、とか DB 名(っちゅーか DSN)間違ってないか、とか
テスト用にローカルに立てた MySQL につないでないか、とか調べろ。それ以上はエスパーに頼め。
>>241 2年前に仕事で RMI やったけどあんまり Web に情報無いよね。本もないし…。
仕事ではクライアント側が自分の RMI オブジェクトをサーバに登録して、サーバから呼び出してもらう
ってのを作ったけど、ググった情報だけでなんとかなった。
そもそも RMI って結局はメソッド呼び出しの遠隔版だからそんなに情報必要じゃないんだよね。
まあがんばれ。
>>244 ソースコードを読んで書く。適当なサンプルプログラムをひっぱってきて、読む。読んだらちょっと自分で機能を追加したり変更しりして動かしてみる。
動かすときは、デバッガで1行ずつステップ実行したり、要所要所にprint系の文を突っ込んで変数の値がどのように変化していくのかを見てみる。
何をどうやったらプログラムがプログラムとして成立しているのかを理解したら、1から書いてみる。
247 :
デフォルトの名無しさん :2008/11/23(日) 17:17:51
>>246 やっぱりソースコードを自分で作成することが大事なようですね。
自分も今の方法で勉強するか、その方法で勉強するか迷っていたんです。
ありがとうございます。
質問追加してしまって申し訳ないんですが、その勉強方法をするためのソースコードとして
勧められるようなものってなにかありますか?
>>243 そりゃもう何度もやってましたよ、と
おかしいから質問したのであって、記述ミスとかの話じゃないです
>>248 なぜ環境変数等を晒さないの?
echo %PATH%とdir "C:\Program Files\Java\jdkxxx\bin"の出力結果
cmdがおかしいとか、記述ミスじゃないと判断する前に当然自分では確認したんだよね?
>>248 とりあえず絶対pathで使えるかやってみたら?
c:\ほげほげ\javac なんとか.java
が動くかどうか。
なんですぐ入れ食い状態になるの?
puts("'javac' は、内部コマンドまたは外部コマンド、\n操作可能なプログラムまたはバッチ ファイルとして認識されていません。\n"); だったらうけるw
253 :
デフォルトの名無しさん :2008/11/23(日) 19:44:05
javaスレだし、Cはいらん 勉強するならCからだけどなw
>>249 ,250
239にも書いたように、再インスコで動くようになりましたよ、と。
どもですどもです。
255 :
デフォルトの名無しさん :2008/11/23(日) 20:57:19
iアプリのプログラムを書いたりしてみてるんですが… これの際にわざわざ 「どこかの鯖にそのjarをUL⇒携帯電話端末でそれをDL」 ってやらないと自分のケータイで実行することってできないの?
257 :
デフォルトの名無しさん :2008/11/23(日) 21:01:51
>>256 スレ違いすみません。
早速除いてみます
258 :
デフォルトの名無しさん :2008/11/24(月) 01:29:09
jdk1.6.0_07をインストールしたのですが、環境変数の設定が解らず困っています。 参考書を参照しているのですが。 新規CLASSPATH 新規path 新規jAVA_HOME 何を入れたらいいのでしょうか? OSはXPです。
260 :
デフォルトの名無しさん :2008/11/24(月) 01:36:18
>>258 多分、その参考書には載ってないと思う。
262 :
デフォルトの名無しさん :2008/11/24(月) 02:32:20
パーティ用にクイズゲームを作ろうとしていますが、 スコアボードとして「+」や「-」をクリックすると数字が増減するjavaのプログラムを組もうと試みています。しかし、テキストボックスを利用すると文字が小さすぎてパーティで利用するには不向きです。 ・テキストボックスのフォントサイズを変える方法 ・無理なら、数字の書かれた画像を+-クリックで増減させる方法 ・それも無理ならクリックするごとに☆画像を増やす方法 ・javaで無理ならFLASHのサンプルなどあればご教示いただけると幸いです。 OSはXPです。ブラウザは今のところIE6ですが、特に何でもかまいません。
@Map.Entry<String, Integer> x Ay=y+x.getValue(); BSystem.out.println(y); Cbw.write(y); @のようにマップのエントリを行い、 Aでintで宣言したyとxの値を足した場合 DOS画面では結果が表示されるのに(B)、ファイルに保存した場合(C)■的な文字化けになってしまいます。 MAPの値を直接足すのはダメなのでしょうか?文字コードも色々変えてるのですが変わらず困っています。 心当たりのある方お願いします。
バイナリで書き込んでると予想 bw.write(""+y); こんな風に""+を追加したら文字列として書き込んでくれるかもしれない
>>266 て…天才だ!!!!!
しかも即レスでありがとうございます!!感動しました。
仕組みはよく分からないんですがバイナリになるんですね。
ここで聞いてよかった…。感謝します。
照れるぜ
画面に表示する時は、当たり前のように文字列なんだけど
ファイルに保存となるとバイナリかテキストのどちらかになるんだ。
1+1だと結果は2になるけど、
""+1+1だと結果は"11"になる
>>266 の方法はこのルールを使っただけなんす
>>268 なるほど!勉強になります!
てっきりマップにアドレス的なものがあって変換しなきゃならないとか
色々模索してたんですが、writeのほうにそのような仕様があったんですね。
初歩的な知識不足でご迷惑おかけしました。
悩みが解消してこれで寝れます。本当にありがとうございました。
270 :
デフォルトの名無しさん :2008/11/24(月) 10:38:28
英語の本は(海外の本)は、間違いが生じないように細かく詳細に書くこと基本で大事だって思想だからしょうがない。 だけどそれだけしっかり書いてある(仕様がしっかりしている)からどこでも通じるし信用できるんだけどね。 それに比べて日本の解説本は酷いだろ。 教科書とかも助教授あたりが自分の書きたいところだけ細かく書いてるだけで、5年もすれば捨てちゃうような内容だし、コンピュータ雑誌と同じじゃないの? だからちゃんとした教科書が欲しいなら結局英語の本(とその翻訳)になっちゃうんだよね。 rfcとかもも含めてそういう堅い本が読めない奴はこの世界に入るのはあきらめたほうがいいな。
271 :
デフォルトの名無しさん :2008/11/24(月) 13:42:51
258です。 どなたか教えて下さい。
大学で出た課題の中で、配布されたプログラムの中で equals()とhashCode()をオーバーライドしてるんですか その理由はjava.lang.Comparableのマニュアルを見れば分かるよ と言われたんですが意味分かりません どういうことなのか分かりますか?
276 :
273 :2008/11/24(月) 14:15:04
マニュアルを見ろ、と言われて、何を見ればいいのかわからなかった、ということだろうか
278 :
デフォルトの名無しさん :2008/11/24(月) 14:47:55
258です。 しつこいようですが、教えて下さい。
何様?
>>258 CLASSPATH → 設定不要。非標準のライブラリ(自作を含む)を使うときだけ気にしろ。
PATH →
>>238 参照。jdk1.6.0_10 を jdk1.6.0_07 に読み変えるか、JDK6.0update10をインストールしろ。
JAVA_HOME → 設定したことないが、必要なのか? これ。
281 :
デフォルトの名無しさん :2008/11/24(月) 15:24:22
>>280 ありがとうございます。
やってみます。
import java.io.*;って何ですか?
java.io の全てのトップレベルクラスを単純名でアクセスできるようにする。
>>282 いちいちパッケージ名を含めたクラスの完全限定名をコード中に書かなくてもいいように、
java.ioパッケージに属するクラスなら短い単純名だけに省略化して書けるようにする。
java.io.Reader r = new java.io.BufferedReader(new java.io.FileReader("hoge"));
と長々と書かずに、
Reader r = new BufferedReader(new FileReader("hoge"));
と書ける。
>>284 なるほど!わかりやすく説明して下さって有難う御座います♪
クラス分けについて質問です SQlDBから値をとってきたとき 取得データを dataclassというクラス(フィールドにはUserID,passなどの個別のデータがある) をつくり 別のクラスでインスタンスして arraylist<dataclass>のような使い方をして入れようと思ってるのですが このやりかただとデータが10万以上など大量になったときに メモリを食うと書いてありました。 通常SQLDBっからresultsetでとってきたデータはどのように扱うのでしょうか このあとJSPで表示するのに使います
>>286 基本的にはその方法でOK。
データが10万レコード以上になっても、JSPでの表示のために毎度
10万レコードを全て取得する必要があるわけでは無いでしょう?
ちゃんとDBに投げるSQLクエリを吟味して、JSPでの表示に必要な
データだけを検索して取得するようにすればOK。
そうすればJava側で消費するメモリの大きさは基本的にDB中の
レコード数とは無関係になるはずです。
>このやりかただとデータが10万以上など大量になったときにメモリを食うと
杞憂かも知れませんが、非常に誤解を招く記述に思えます。
もしかするとDBからレコードを全件引っ張ってきて、Java側で絞り込み
をかけるような実装を紹介しているのかも知れません。
もしそうだとすれば、そんな参考書or参考サイトは役立たずですので
捨ててしまって下さい。
>>286 一気にデータを取得して全部をひとつのリストに入れるのではなく、
表示を作り上げていく段階で少しずつ必要なデータだけを保持する。
289 :
デフォルトの名無しさん :2008/11/25(火) 02:14:23
下記のソースがコンパイルエラーになるのですが、何が悪いのでしょうか? エラー内容は「ローカル変数zが初期化されていない」というのですが。。 [Test.java] import java.applet.*; import java.awt.*; public class Test extends Applet { public void init() { Zukei[] z; z[0] = new Maru(); z[1] = new Sankaku(); z[2] = new Shikaku(); } public void paint(Graphics g) { z[0].draw(g); } }
290 :
デフォルトの名無しさん :2008/11/25(火) 02:15:47
[Zukei.java] import java.awt.*; public interface Zukei { int left = 10; int bottom = 10; void draw(Graphics g); }
291 :
デフォルトの名無しさん :2008/11/25(火) 02:17:10
[Maru.java] import java.awt.Graphics; public class Maru implements Zukei { public void draw(Graphics g) { g.drawString("Maru", left, bottom); } } Sankaku.javaとShikaku.javaも同じような感じで定義しました。
eclipseが起動しないんです。 ダブルクリックするとロゴが瞬間表示されて起動されません。 何が問題なんでしょうか?
294 :
デフォルトの名無しさん :2008/11/25(火) 03:28:51
import java.applet.Applet; import java.awt.event.*; import java.awt.*; public class Eventtest extends Applet implements MouseListener{ private int x = 0; private int y = 0; public void init() { addMouseListener(this); } public void paint(Graphics g) { g.drawOval(x, y, 20, 20); } public void mouseClicked(MouseEvent me) { x = me.getX(); y = me.getY(); repaint(); } } エラーが出ます。わかる方教えてください。 Exception in thread "AWT-EventQueue-1" java.lang.Error: Unresolved compilation problem: The type Eventtest must implement the inherited abstract method MouseListener.mouseExited(MouseEvent)
>>294 The type Eventtest must implement the inherited abstract method MouseListener.mouseExited(MouseEvent)
>>289 Zukei[] z;
を
Zukei[] z = new Zukei[3];
にしてみれば?
このようなArrayListを作ったんですが、 ArrayList arrA ┗listB[] ┣String valC ┗String valD このなかのvalCを取り出そうと思い arrA.listB[i].valCと記述したのですが、エラーが返ってきました 正しくvalCを取得する方法を教えてください。
((listBの要素の型[])((ArrayList)arrA).get(arrAのインデックス))[i].valC
>>299 それってVectorでも対応できるかな?
ArrayList をVectorに変えたらキャストできませんと構文エラーがでました。
301 :
デフォルトの名無しさん :2008/11/25(火) 14:40:15
Vectorには対応してません。
>>301 そうですか、ArrayListで対応してみます。
ありがとう御座いました。
303 :
デフォルトの名無しさん :2008/11/25(火) 15:06:45
おい、おまえら! 前から思ってたんだけど、ついでだから聞かせてもらう。 VectroとArrayListの違いってなによ?煮たようなもんだろ?
305 :
デフォルトの名無しさん :2008/11/25(火) 15:45:15
>>297 しましたがまだエラーになるみたいです。
java.lang.Error: Unresolved compilation problem:
Syntax error on token(s), misplaced construct(s)
at Test.init(Test.java:6)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
>303 同期されてるかいないかによるパフォーマンスの違い。 StringBufferとStringBuilderも同様。
307 :
デフォルトの名無しさん :2008/11/25(火) 16:24:56
>>304 ,306
表向きはそうなんだけどね・・・よくAPIを読んで比べてみなよ。
もし気がつくなら初心者卒業ってことだと思うけどね。
308 :
デフォルトの名無しさん :2008/11/25(火) 16:46:11
ちゃんとインストールされてるはずなのに昨日までは入れてた Java対応のチャットに「対応のブラウザでご利用ください」と言われるようになりました
javaで綺麗なグラフ描くを描くにはどうすればよいですか
graphics.drawString("グラフ描く", 0, 0)
うっそ〜ん Javaでデータからエクセルのようなグラフを描くのにはどうすれば
312 :
デフォルトの名無しさん :2008/11/25(火) 17:20:55
マイクロソフト・エクセルを使うだけです。
いっや〜ん エクセル嫌い嫌いJavaで描きたい
jfreechartでも検索するがいい。 自前でやるなら、Graphics,Graphics2Dを使って、310のように実装すればいい。
あっりっがっとうございます!m(_ _)m
>>305 まあ、こっちではそこのエラーが消えたからまあいいや。
今の時代のJavaの勉強は、Applet使ってアニメーションからJavaの世界に入ったりはしないんですか。 円・ドル換算プログラムみたいにGUIコマンドアプリは分かるんですけど、アニメーション・プログラムをやるならflashなんでしょうか?
実行環境の話はこっちでいいのかいな? willcomのWX310SAについてなんだが。
質問です +、=、*、/の4つの記号と数字を含む文字列”str”をchar型に変換して 1文字ずつ調べ、もし記号だったら抜き出す。 という作業をしたいのですが、うまく動きません。 どのようにしたらよいのでしょうか? char[] c = str.toCharArray(); char[] d = new char[200]; int j=0; for(int i=0;i<c.length;i++){ if(c[i]==('+'|'-'|'*'|'/')){ d[j]=c[i]; j++; } }
320 :
デフォルトの名無しさん :2008/11/25(火) 21:46:28
]==('+'|'-'|'*'|'/') ペットたちは元気でしたか?
321 :
318 :2008/11/25(火) 22:04:38
反応ないけど質問書いておく 某本に載ってた手順で、開発環境としてJ2SE1.5をインスコして プログラム作ったら、エミュレータ上では動作したがWX310SAでは動作しなかった。 けど、J2SE1.4.2をインスコしなおしたらWX310SAで動作した。 1.5と1.4で何か変わってる? それとも単にWX310SAでは1.4しか対応してない?
>>321 クラスファイルの構造が変わってる。
> > javac -help
> 使い方: javac <options> <source files>
> 使用可能なオプションには次のものがあります。
《略》
> -source <release> 指定されたリリースとソースの互換性を保つ
> -target <release> 特定の VM バージョン用のクラスファイルを生成する
Java5以上で使うなら、javacに「-target 1.4」を指定すればいいと思うよ!!
323 :
318 :2008/11/25(火) 23:10:11
>>287-288 ありがとうございました
dataBase data =new dataBase();
sertAtribute("data1",data)
と
<useBean id="data1" class="pacage.dataBase">
だと
1.どちらかでdata1でつかえるのか
2.それとも全部含めて出ないとつかえないのか
data1.getData()メソッドとしてつかえるのはどれでしょうjか?
useBeanのとき同時にインスタンスしてるのかsetatributeの変数名を
引き継いでるのかいまいちわかりません
>>319 Java の文字の比較方法を勉強すればうまくいくと思う。
JVMはエミュレータの一種なんですか?
327 :
デフォルトの名無しさん :2008/11/26(水) 01:53:21
というか何のエミュレータだと思いますか?
どうでもいいがなんでシーケンシャルな処理とオブジェクト指向が対比されてんだ あとはUMLとかで作るだけとか 描画を完全にマルチスレッドでやれると思ってるとか コンポーネント毎にスレッド化するとか javaFXとかjava2Dとか オブジェクト指向とスレッドとか ま、VRAMに直書きが描画の全てという時代なら容易にできたかもしれん。
>>326 通じないことは無いだろうけど、普通エミュレーターとは言わないと思うなあ
(広義には知らない)
エミュレータってのは、実在するハードや環境なんかを模倣するものを指す
一方でJVMはその名の通り仮想的な計算機。実在しない
……と、ここまで書いてから「Java仮想マシン仕様」を読み直してみると
>最新のJava仮想マシンの実装では、より高度に洗練された方法によってWin32やSolaris上で
>Java仮想マシンのエミュレートを行っている
という文脈があるので、普通に使うっぽい
>>319 書き方がC言語っぽいけど、Javaはnew char[200];みたいなことをしなくてもstr.length()があるよん
配列はポインタじゃないから、c.length でも同じ値とれるけど
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html ここはよく読むといいよ
以下蛇足 0-9の文字で文字列を分ける=演算子を取り出す
String str="-1+2*3+4";
String split[]=str.split("[0-9]+");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
こういう方法もあるんだって知っておくのもいいかも
>>329 たぶんその書き方は、Java仮想マシンという仕様を(実質オペコード)、エミュレータとして実装したってことじゃないかと思う。
>>328 >どうでもいいがなんでシーケンシャルな処理とオブジェクト指向が対比されてんだ
(答) だって人工無脳なんだもん
333 :
デフォルトの名無しさん :2008/11/26(水) 02:30:34
>>328 あの・・・よく読んでいるようですけど・・・もしあなたの言う「〜とか」を否定すると、Windowsなどで動く全てのGUIアプリを否定することになりますよ?
>>328 おまえがコンソールアプリしか作ってない理解できないんじゃないのか?
VRAMとか言ってるけど、おまえがGUIアプリを作ってもせいぜいポトペタしかやったことないんだろww
336 :
デフォルトの名無しさん :2008/11/26(水) 03:35:47
人口無能ww
337 :
デフォルトの名無しさん :2008/11/26(水) 03:37:35
ポトペタがあれば永遠に俺は幸せ!
ほう
339 :
デフォルトの名無しさん :2008/11/26(水) 04:20:15
ポトペタのユーザはともかく、ポトペタな開発を実現するツールキットを設計 する人は偉大だと思うな。 その才能を多くの凡庸な開発者達のために役立てているし、つまらん仕事 を最小限の手間暇で片付けられるので大変世の中に貢献している。 なのでかの人工無能くんにはポトペタでとてもマルチスレッドなGUIアプリが 構築できるツールキットを是非開発して欲しいと思う。
>>340 SUN は SUN でも microsystems じゃないやつだろ。Second Life のベンチャーじゃん。
まあ Sun micro はいつもリストラ計画だの四半期ベースが改善しただの見てるこっちを
ハラハラさせるニュースが多いことは確かだが。
342 :
デフォルトの名無しさん :2008/11/26(水) 08:41:13
>>339 それって座標計算とレイアウトなだけじゃないの?
そうするとゲーム開発者は偉大ってことになるし。
sincosとか使ったことないし、tanの2倍角の公式とか知らない口でしょw
343 :
326 :2008/11/26(水) 08:41:16
>327 俺が通っていた工業高校では、情報技術者試験のアセンブラ科目で使う CASLを搭載したと仮定しているコンピュータのエミュレータをWindows上で動かしていて、 「仮想計算機のエミュレータ」と呼んでいたので、 実在はしないが仕様は決定されているコンピュータなら、 それをソフトウェアで再現したものはエミュレータと呼べるのかな、 じゃあJVMもエミュレータなのかな、って思ったんです。 >329 おお、ありがとう! 仕様でエミュレータって呼ばれてるんですね。 スッキリしたw
>>343 ああそれそれ、JVMはCASLと同じ考えでいいんじゃないの。
実際JVM仕様を読んで自分でfile.classを吐き出す簡単な処理系を作れるなら、jrubyとかgrooovy,sclara,javafxとかのマイ言語作ってるのと同じだし、javacだってjvmプラットフォームの1つに過ぎない。
というか、仕様が最低限しかないから簡単だから俺ならJVMで動くCASLかCを作るけどね。
HttpClientで、executeMethodして接続しているところを割り込んで止める方法はないでしょうか?
>>345 というか、おまえならどうやって作るの?
348 :
デフォルトの名無しさん :2008/11/26(水) 10:02:54
リストやツリーのデータ構造を自作できない奴に何言っても無駄無駄
だなw
350 :
デフォルトの名無しさん :2008/11/26(水) 10:31:15
>>343 頑張って大学に入って頑張って勉強してくださいなw
351 :
デフォルトの名無しさん :2008/11/26(水) 12:26:24
public static void main(String args[]){ int a = 4, b = 7; int i, j; for(i = 0; i < a; i++){ if (i%2 == 0){ for(j = 0; j < b; j++){ System.out.print("*"); } } else { for(j = 0; j < b; j++){ System.out.print("="); } } if (i%2 == 1){ System.out.println(); } } } *******======= *******======= と表示したいのですが、最後のif文で改行処理の判断をするのではなく、これを表示処理の判定に含めたいです。 どなたかやり方を教えて下さい。出来れば簡単な方法でお願いします。
フレームワークとしてマルチスレッドなGUIを構築できたら 開発環境の仕事はソースの生成アシストとナビゲーションだろ どっちにしても難しいなこれは 俺にはむりむり
>>342 ポトペタを実現するのに必要な事として座標計算とレイアウトしか
想像出来ないおまいさんはマジ幸せ者だよ。ホント。
そんなデカイのを作る必要はないな。既に有用なIDEがいくらでもある。 もっと違った視点で見てみると面白い活用法が浮かぶんじゃないか?
>>354 いや、俺が欲しいのはポトペタなんだが。
是非とてもマルチスレッドなGUIアプリを開発できるツールキットを開発してくれ。
それが出来ればIDEなんてEclipseのプラグインとしてサクッとすればいい。
おまいさんには簡単だろ?
ていか、もう出来てるんだが? それも座標計算とレイアウトだけで。 マルチスレッドなGUIアプリを開発できるツールキットってのは何を言ってるか意味不明だけど、 君が欲しい機能や仕様をまとめてくれればたやすいんじゃないの?
357 :
デフォルトの名無しさん :2008/11/26(水) 13:42:42
たぶんなんだけど、マルチスレッドとスレッドセーフがよく分かってないんじゃないの?オジサンだからw
>>356 ああ、おまいさんのいうポトペタとはドラッグアンドドロップでGUIをデザイン
出来る事だけを言うわけですね。わかります。
ポトペタなめんなよw
あとマルチスレッドなGUIツールキットの仕様については人工無能君に聞いてくれ。
元々彼がSwingその他を馬鹿にするところから始まったネタだから。
ネタなのにあえて釣られることはない
360 :
デフォルトの名無しさん :2008/11/26(水) 14:12:08
まあ、たしかにJava2Dでやっちゃえばなんでもありになるわな あとはイベントどうするかってのとスレッド(協調動作)にそいつがどれほど慣れてるかだし 実際問題Java2DはGUIのときに出てくるだけで、イベントとかスレッドはGUI関係ないしなぁ
Vector vlistA ├String aID └list[] ├String kekka1 └String kekka2 指定したaIDのlist[]の中身を追加、削除したいのですが、addやremoveでは無理でした。 追加、削除方法を教えてください。
ArrayList vlistA ├String aID └ArrayList list ├String kekka1 └String kekka2 にすれべおk
>>364 図がずれてました。
Vector vlistA
├String aID
└list[]
├String kekka1
└String kekka2
list[]は仕様上、配列のままにしておきたいんです。
そんな仕様は糞だ
>>362 その通りなんだけど、個人で作って利用するプログラムと他人様が利用して
作成物の保守もするツールキットとでは設計の基準が異なるんだよね。
後者ではちゃんと利用者像を想定して、落としどころを見つける必要がある。
そのためには機能の絞り込みも必要で、何でもありにはならないんだ。
>>365 list[]を追加、削除のたびにnewしてやればいいんじゃね?
もしくは、削除ならforで回して詰める、追加もforで回して隙間あけて入れる。
追加する余裕が配列になければnewしてやる
>>351 簡単にということなので、変数一個減らして、for文一個減らしてif文全部無くしてみた。
import java.util.*;
class Nichan {
public static void main(String[] args) {
int a = 4, b = 7;
char[] out = new char[b*2];
Arrays.fill(out,0,b,'*');
Arrays.fill(out,b,b+b,'=');
for(int i=0; i<a/2;i++){
System.out.println(String.valueOf(out));
}
}
}
370 :
351 :2008/11/26(水) 18:02:51
>>369 回答ありがとうございます。
なるべく原形とどめつつ最後のif文だけ何とか出来ませんかね?
注文多くてごめんなさい。
>>370 if (i%2 == 1){ /* hogehoge */ } ってことは、
if (i%2 == 0){} else { /* hogehoge */ } ってことでしょう。
for(j = 0; j < b; j++){
System.out.print("=");
}
System.out.println();
372 :
370 :2008/11/26(水) 19:03:13
>>371 なるほど・・・
ありがとうございました。
いい勉強になりましたm( _ _ )m
374 :
319 :2008/11/26(水) 20:24:06
>>320 ,325,330
ありがとうございました。
if(c[i]=='+'|c[i]=='-'|c[i]=='*'|c[i]=='/')
こうしなくちゃいけなかったんですね。
ようやく分かりました。
String型のメソッドは覚えておいたほうがよさそうですね。
よく読んでおきます。
splitを使ったやり方も、試して見たいと思います。
ご丁寧にありがとうございました。
C出身なら if (stg.charAt(i)=='+' || stg.charAt(i)=='-') ですかね。 ジャバ出身者でtoCharArrayを使うのはなかなかいません。
377 :
318 :2008/11/26(水) 21:28:43
>>373 おお、専用スレがあったんですね。
thxです!
378 :
デフォルトの名無しさん :2008/11/26(水) 21:55:53
Javaってあれだね?最初、Javaからやったらわけわかんなかったけど 色々言語やったら好きになった。便利だね。Write anywhere, Run once.だっけ?
正しくは write once test anywhere
ttp://xy.yu.to/ (ここは本来のサイトではないが)
この荒れまくりカオス絵チャのminiっていう部屋の
秘密スペース(枠外)への書き込みってどうやれば
できるようになるのか解析して教えろ。
あと、1人の防衛プログラマーのクリアツールが強すぎて、
荒しプログラマーがことごとく全員返り討ちになってるから
オマエラが面白くしてみろ。
ゲハハハごめんね
381 :
デフォルトの名無しさん :2008/11/26(水) 22:14:32
日頃からコード書いていて処理に慣れてる人はメソッド名が長い!冗長だ!とか文句言ったりしなくなりますよww さらに演算子オーバーロードー!!プロパティ!!とかも「はぁ?」って感じですかね?(笑)
>>374 「|」じゃない。「||」だ。
まぁ、どうせ
>>374 のままだとエラーが出るからすぐわかるはずだけど。
サーブレットで文字化けみたいになるんですが すべて?ってのは文字化けではないですよね? コンテンツタイプの設定でEUC_JPやShift_JISなどに変更しても変わりません どうしたら直るか教えてもらえませんか?
>>382 >>374 は確かに良い書き方ではないけど、
エラーはでないぞ。
| と || の違いを分かってないのか?
385 :
319 :2008/11/26(水) 22:55:03
>>375 ,382
なるほど〜
わざわざchar型に入れ替えるより
charAtを使った方がすっきりしますね。
一応やってみて『|』でもうまくいったのですが
この場合『||』の方がいいんですかね?
>>384 げ、論理演算て整数にしか定義されないと思い込んでたよ。
型違反になると思ってた。
>>386 ま、そんなもんでしょ。
ANSI Cを骨の隋までしゃぶってるわけじゃないし、そこまで細かく知ってる人いないし。
いちおう | は全部評価するってこと。
charAtだと余計なメソッド呼び出しの分コストがあるかな。 ストリームだと[]で受けるから、Stringにしないでそのままst[k]とかすることはある。
Javaって|はビット演算子じゃないの?
>>389 | はビット単位の整数演算子でもあるけど、論理演算子でもある。
>>389 そう思って
>>382 を書いたら恥かいた(^^;
&, |, ^ については、整数と真偽値の両方について定義されてて、整数のときはビット演算子、真偽値のときは論理演算子として振る舞う。
ただし、演算子の左右が両方とも整数か、両方とも真偽値でなければならなくて、例えば、1|trueはコンパイルエラー。
言語仕様の15.22参照。
>>390 ,391
thx
何か微妙な仕様だなw
そこらへんは、C/C++から派生した言語として統一しておいてほしいね。
無駄に悩みそうだしw
どう考えても妥当な仕様だと思うが。 これ以外のどれでもいまいちな仕様になるだろ。
複数の意味を持たすメリットが微妙に見える C/C++と同じでいいじゃん
javaでは真偽値と整数は非可換なんで&や|での扱いをC/C++と同じにするのは妥当とはいえない
いやいや、整数のみ(ビット演算のみ)に意味を持たせればいいじゃん、 と言う意味なのだが。 C/C++でも通常boolで|や&は使わないし。 それがイコールC/C++と同じにすることになると思うけど。 あれ?俺何か勘違いしてる?
論理演算子として、 |…or。左辺も右辺も必ず評価。 ||…or。左辺が真なら右辺は評価しない。 &…and。左辺も右辺も必ず評価。 &&…and。左辺が偽なら右辺は評価しない。 だと思ったけど、違った?
|| や && はあるのに ^^ はないのは如何に
つか、当たり前だった
>>398 右も左も計算しないと結果が出ないんだから、^ と等価になるだけじゃね?
>>398 ワロス
booleanでの&と&&の使い方・・・ ようするに
>>397 みたいなのなかなか参考書に書いてないか、気づきにくいよね
if (t == null || t.length() == 0) ... みたいな書き方をしたとき、 (t == null) が true なら t.length() が呼ばれないので NullPointerException が発生しない。 foo() と bar() が確実に1回ずつ呼ばれないと困るとき if (foo() | bar()) ... みたいに書ける。
このスレがはじめて役に立った
>>402 >foo() と bar() が確実に1回ずつ呼ばれないと困るとき
>if (foo() | bar()) ...
>みたいに書ける。
タイプミスなのか意図的なのかが分かり難いからあまり使って欲しく無いな
System.setIn(),setOut()などで入出力を変更したとします。 その後、元々の標準入力・出力を取得することはできますでしょうか? 単純に別に元々のものを持っておけばいいのですが、気になったので分かる方お願いします。
携帯でプログラミングできますか
>>407 ありがとうございます
タイピングが遅いとかですかね
>>305 スコープの問題は?
init メソッドの中で宣言されてるZukeiに
paintからアクセスしようとしてるからダメなんじゃねーすか?
initメソッドの外にの外にZukei[] z;って書いたらよいとおもわれ〜。
Zukei[] z;
init(){
}
>>316 うそつけ。
javaで作ったプログラム(SQLサーバとやりとりして出力があるなら出力する)を3分起きに実行させ続けたいのですが 何を使ったらいいでしょう?スレッド?は違いますよね・・・
cronとかタスクスケジューラとかそういう話?
412 :
410 :2008/11/27(木) 16:04:08
>>411 いや、javaのプログラム内で繰り返したいです
昔ちょっとやってたんですけど、HDDクラッシュでデータがなくて・・・
スレッドをまわしっぱなしにしてsleepで(180)とかにすればいいのかな?
タイマーでもいけるんじゃない。このあたりで。 java.util.timer javax.swing.Timer java.util.concurrent.ScheduledExecutorService
>>414 そうだった、180000だな、ありがと
javaにはfork()は無いの?
TimerTask使うのがらくなんじゃね?
420 :
デフォルトの名無しさん :2008/11/27(木) 17:30:37
ある関数 List<String> hoge(List<String> list); を開発しています。 hoge() には、String を要素とする List が渡されてきます。 このとき、List が保持している String は重複しているかしていないか、わかりません。 この関数の中で、重複している要素は削除して、リストを返したいです。 (Set を返却値としたかったが、呼び出し元が List を要求していて、そこは修正できない) そこで以下のようなプログラムを書きました。 List<String> hoge(List<String> list) { Set<String> set = new HashSet<String>(list); List<String> resultList = new ArrayList<String>(set); return resultList; } このように一度 Set に入れなおすことで重複を自動的に削除し、 List に変換しています。 ○質問: Set や ArrayList に入れなおすとき、中の要素は コピーされて渡されるのか、参照渡しになるのでしょうか? HashSet や ArrayList のコンストラクタのソースを見ると、中で AbstractCollection#addAll(Collection) が呼ばれているようです。 その中では、渡された Collection を Iterator で回して 得られた要素を add しているので、参照渡しにしていると考えました。 hoge() 関数には大量(10万単位)の文字列が渡ってくるので、できれば OutOfMemory を起こしたくないため、参照渡しになってほしいです。
>>420 オブジェクトを == で比較してテストすればいいじゃない。
>>420 中の要素は、コピーされようがコピーされまいが参照渡し。
そして議論は質問と関係ない方向へ、というわけですね
private なコンストラクタしかないシングルトンがコピーできたらコレクションは最強だな
426 :
デフォルトの名無しさん :2008/11/27(木) 19:56:12
俺、病気で高校中退して、25でJavaプログラマになれたんだけど、 当然、大学とかいってないから、予備知識なんてなにもない。 このスレ見るたびに、すごい専門的なこと書く人がたくさんいて、すごい自信なくす。。 個人的には、業務に間に合うように一生懸命勉強してるつもりなんだけど。 いつか、だめになるんじゃないかととても不安。
大学の4年より、実務の半年のほうがよっぽど濃いかもよ? 濃いの解釈はまかせる
今情報系の大学院2年だけど
学部時代で授業でやるのなんてほんの一部のプログラミング知識だけだよ
Cの基本的なことだけやって終わり
あとは自分で覚えてくだけだから、
>>426 より大学生の方がよっぽどレベル低いよ
ここで回答してる人たちは本当にすごい人だなと思う
このスレってそんなにレベル高いか?
実務では、ちゃんとやろうとしても コピペ坊の華麗な手さばきにはついていけません
さらに、野生の勘が閃く削除坊の使い手が現れると プロジェクトは終焉を迎えます。
大学で勉強するのは、研究対象として定量的に評価できるもの。 実務で必要とされるであろうものとは、方向性が異なる。 それでも、それで論文みたいなものを書くすごい人とかいるけど
全く経験のない人はなぜか特別視するけど, 実際プログラミングの勉強なんかExcel覚えるのと変わらん
そろそろマ板へ移動しよう
>>433 学歴コンプか?
大学なんて入試の難易度と授業の内容に差なんかないぞ
>>426 業務系のプログラマならそこそこの腕で食っていけるんじゃないかと思う
客観的な評価なんてここじゃできんから
周りのプログラマと比べて、自分より上な人と、下な人の数で判断するしかないんかな
後はプログラムを楽しいと思えてれば、楽しんで仕事してお金貰えるなんてハッピーって感じで生きていけばいいさ
TreeSet<Object> tree = new TreeSet<Object>(); tree.add( /* 何か色々と追加 */ ); HashSet<Object> hash = new HashSet<Object>(tree); assert tree.size() == hash.size(); これで AssertionError が出てくるんですが……なぜだか誰か教えていただけませんか?
ってごめん! いきなりわかったっ orz ありがとう〜(´;ω;`)ノシ
440 :
hitto :2008/11/27(木) 21:35:42
開発環境: Java , Struts JSPにおいて <input name=sex_kbn value=1 checked>男 <input name=sex_kbn value=2>女 このようなチェックのつけ方は学んだのですが、 前画面から送られてきたsex_kbnの値が1の場合は男に、2の場合は女にあらかじめチェックを付けて、 画面を表示するとなると方法がわかりません。 教えていただけるとありがたいです。 よろしくお願いします。
>>434 日本語でおk
Excel覚えるって何?Excelの存在を覚えるって事かな?
443 :
デフォルトの名無しさん :2008/11/27(木) 22:09:13
>>441 最近こういうあおりも、もう面白くないんだよね。
おまえの方が日本語やり直しのようだなw
444 :
デフォルトの名無しさん :2008/11/27(木) 23:12:00
すみませんが教えてください。 Class<T>のgetSimpleNameというメソッドを使用していますが これがExceptionを発生します。 同じソースでも違う環境ではエラーにならないので 環境の問題だと思うのですが 何かヒントだけでもいただけないでしょうか?
445 :
デフォルトの名無しさん :2008/11/27(木) 23:33:36
ゲーム製作版なんてあったんだね。知らなかった。
>>444 エラーになる環境のJDKのバージョンと、
getSimpleName() 使うと Exception 出す Class<T> の生成方法やら toString() の出力結果ぷりーず
>>444 生の java.lang.Exception を throw するって結構特殊な気がするので、その辺から原因を絞り込めるんじゃないだろうか?
>>444 はマルチポストだよ。
仕事でやってるからエラーは貼れないそうで。
仕事でやってるならにちゃんねる頼るのはどうかなー。
449 :
デフォルトの名無しさん :2008/11/28(金) 01:02:32
>>444 環境依存はJavaの問題じゃないってのが答え
それと、おまえはもう来るな
コレクションで、リスト構造は持つが重複を許さないようにしたい場合、リストとは別に含まれているかのチェックのためにセットを持たせたりしますか? List#containsで判断するのはいかにもコストが高そうでいやなんです。
最初から java.util.Set じゃいかんのか?
>>450 あなたの言う「リスト構造」って何のために使うの?
LinkedHashSet じゃダメなのか?
>>453 探していたものはまさにそれです。ありがとうございました。
APIドキュメント読み足りませんでした・・
>>452 基本的にはSetとして使うのですが、加えた順序が欲しくなったんです。
具体的にいいますと、プロクシの収集を行っていたのですが、ページ中に上の方が新しいものがあったためです。
それが登録された時間までプロクシのオブジェクトに加え、Comparetorで比較というのもありかもしれませんが、何か他に方法がないかと気になったので質問させていただきました。
閾値ってか白黒画像だろう扱ってるのは カラー画像は読み込み時に toBinaryImageで白黒化されている
458 :
455 :2008/11/28(金) 13:18:42
>>456 ではどのようにパターンを読んで抜き出しているのでしょうか?
閾値の設定は
459 :
455 :2008/11/28(金) 13:20:31
>>458 間違って一度書き込んでしまいました^^;
ではどうやってマッチングの閾値を設定するプログラムを作ればいいのでしょうか?
今のやつではターゲットと全く同じパターンしか抜き出すことができなくて・・・。
swingでJFileChooserを使ってファイルの保存ダイアログを表示させています。 そこで「拡張子の指定がなかった場合は自動的に.txtを付与する」という機能を付けたいのですが どういったメソッドが用意されているでしょうか
getSelectedFileでもオーバーライドすれば?
最近本を買って勉強を始めたのですが、本のサンプルソースを丸写ししてもコンパイルにエラーが出てしまいます。 始めたばかりでよく分からないのですが、 import java.util.Scanner; や int x = stdIn.nextInt(); がダメなようです。 いきなり変数にキーボードから代入するという初めのほうで止まってしまって困っています。 全部のソースを上げたいのですが、ロダとかいろいろ使い方が分からないので抜粋しました。 ググっても知識がなさ過ぎて、ますます分からなくなる始末でした。 もしよければどこが悪いか教えていただけると幸いです。
>>462 javaのインストールとかパスとかは通したの?
エクリプスいれてやってみ
javaのバージョンは何使ってます? 1.5くらいからだっけ?.Scanner
>>462 hello worldは実行できたの?
scannerはJDK 5.0から。
468 :
デフォルトの名無しさん :2008/11/28(金) 23:09:54
みんな親切だなwこんな教えて君以下のカス相手に
今度から君の質問にも答えてあげるから今回はひがむな、教えて君
470 :
462 :2008/11/28(金) 23:29:14
hello worldはできました。 どうやらバージョンが悪かったようです。 確認したら C:\j2sdk1.4.2_18 となっていたので、新しいの入れないとダメみたいですね。 みなさん、こんな初歩の初歩の質問に答えていただきありがとうございました。
for(int a=0; a<12; a++){ これのa++で1足すって事ですよね? 2づつ足したい場合は如何すれば良いんですか?
472 :
デフォルトの名無しさん :2008/11/28(金) 23:36:14
a+=2
>455 どっかで見たことあると思ったら宿題スレか
>>455 見た感じ、半数以上の"1"(黒?)のドットが一致すればヒットしそうだが。
ResultSet の getString と getNString はどう違うんですか? NCHAR型 読み込むときに getString 使ってると何か問題起きるとか?
TreeMap<Integer, Integer> treemap = new TreeMap<Integer, Integer>(); for(〜){ treemap.put(keyl, val); } int j = treemap.size(); int[] order = new int[j]; for (Map.Entry<Integer, Integer> in : treemap.entrySet()) { order[--j] = in.getValue(); System.out.println("j:"+j); System.out.println("Key:" + in.getKey()); System.out.println("Val:" + order[j]); } このようにtereemapの要素を配列に降順にいれようとしたのですが、treemapの要素がマイナスのとき それがサイズとしてカウントされませんでした。 例: 1,6,33,7,-1,-9 のときのサイズは4つ これは何故こうなるのでしょうか? というかそもそもこれよりも簡単綺麗に降順にして配列にいれる方法ありましたら教えてください
>>477 >というかそもそもこれよりも簡単綺麗に降順にして配列にいれる方法ありましたら教えてください
降順にするならComparatorを実装したクラス一個作ってそれを使ってtreemapを
コンストラクトした上で
treemap.values().toArray()で配列を取り出すとかすればいけそうな気はする
>>478 ありがとうございます
今試しにやってみたところtreemapの精度が正確ではないのか
ソートがところどころ順番がおかしくなっていました
2つの要素i,jがありそれぞれをセットとして、iで降順にソートし、その順番でjを配列に格納するにはどうしたらいいのでしょうか?
i , j
4 , 43
675, 23
262, 5
を
675, 23
262, 5
4 , 43
とソートしたいと思っています
int [][]ar = new int[64][2]; //無駄な配列ができますが、ループが終わるまで要素数がわからないので・・・
int j;
for(int i =0;i<64;i++){
if(iがある条件なら){
j= getKey(〜);
}
ar[i][0] = j;
ar[i][1] = i;
}
そしてこのarをar[i][0]の降順にソート
int ar2 = new int[ar.length];
for(int i=0; i<ar.length;i++){
ar2[i] = ar[i][1];
}
return ar2;
>treemapの精度が正確ではないのか うけたw
>>479 やっつけで作ってみたけど、やりたいのはこゆこと?
import java.util.*;
public class Test{
public static void main(String args[]){
TreeMap<Integer, Integer> treemap = new TreeMap<Integer, Integer>(new TestCmp());
treemap.put(Integer.valueOf(4),Integer.valueOf(43));
treemap.put(Integer.valueOf(675),Integer.valueOf(23));
treemap.put(Integer.valueOf(262),Integer.valueOf(5));
Object[] keys = treemap.keySet().toArray();
Object[][] result = new Object[keys.length][2];
int i=0;
for(Object key:keys){
result[i][0]=key;
result[i][1]=treemap.get(key);
System.out.println("key="+result[i][0]+":val="+result[i][1]);
i++;
}
}
}
class TestCmp implements Comparator{
public int compare(Object i1, Object i2){
if((Integer)i1<(Integer)i2){return 1;}
if((Integer)i1>(Integer)i2){return -1;}
return 0;
}
public boolean equals(Object o){
if(o.equals(this)){return true;}
return false;
}
}
Comparatorを書かなくても元々キーの昇順にソートするComparatorを持っているからそれを逆にすればいい。 TreeMap<Integer, Integer> treemap = new TreeMap<Integer, Integer>(); treemap.put(4 , 43); treemap.put(675 , 23); treemap.put(262 , 5); TreeMap<Integer, Integer> reversemap = new TreeMap<Integer, Integer>(Collections.reverseOrder(treemap.comparator())); reversemap.putAll(treemap); System.out.println(treemap); System.out.println(reversemap); 配列に代入するところまでは書かない。
進捗バーについての質問です。ご教授ください。 for文で約30レコードのデータをオラクルから持ってきていていまして、 そのデータのロードがあまりにも遅いために進捗バーを設定したんですけど、 for文内でsetValue()で値を随時セットしているようにしても、バーは正しく動作せず、 パッと突然0%から100%に変わってしまいます。どうやらfor文の中で値を設定しても バーの表示が変わるのはfor文を抜けた直後なのが原因だそうですが、 だとすれば、一体どのようにすれば進捗バーはちゃんと動作してくれるのでしょうか? Eclipseを利用して画面を作成しています。
treemapが最初にありきの場合なので、 最初から逆順ソートのComparatorを持つTreeMapを作って、 それにputしていくのならこれは関係ないね。
487 :
デフォルトの名無しさん :2008/11/29(土) 19:24:40
JNI使って、 int[] を返す native な関数をつくり、 DLLを C/C++ で実装し、 malloc とかしてメモリ確保してそのポインタをして返しやったりした場合、 Java 側ではガベージコレクションされなくなるんでしょうか? (new したものしかガベージコレクション対象にならない?) また、free するような関数も DLL で実装して、 int[] (jintarray になるのかな?) を渡して 開放とかってできるんでしょうか? DLL で画像処理させたい(MMXとかを使う)ので、 メモリアライメントがとれてる配列を使いたいので、、、 スレ違いかもしれませんが、よろしくお願いします。
Serializableで、プリミティブ基本型と配列型が自動で直列化されるということは、 もし全てのクラスでSerializableを実装していると cloneみたく自分でコピーのコード書かなくてもデープコピーになるってことでしょうか?
489 :
デフォルトの名無しさん :2008/11/29(土) 21:07:17
StringのindexOfメソッドの引数は何故charではなくintなのでしょうか?
>>487 とりあえずJNIスレはこの板にあるのでそちらで聞いた方が良いだろう、
という事と、JNIに準じたコードを素で実装するよりSWIGを利用した方が
色々と楽が出来ると思います。
それこそガベージコレクタ周りもサポートありますし。
わからないからってすぐすれ違いにするなよ
494 :
デフォルトの名無しさん :2008/11/29(土) 22:11:15
いや、そういうわけじゃないんだけどね。 普通はByteBuffer.allocateDirectをつかう。 この関数は、要望が多かったから、君がやりたいようなことをそのままJVMでサポートした関数だから。 これも使いたくないって言うなら、ちゃんとAPIドキュメント(JNI)を読むこったw
495 :
デフォルトの名無しさん :2008/11/29(土) 22:15:38
>>492 分かったら、ちゃんと仏様って呼ぶんだぞ
496 :
487 :2008/11/29(土) 22:32:12
>>491 ありがとうございます。ただ、色々と複雑な画像処理をするので、
自分で細かくカスタマイズできるレベルが希望なんです。
>>493 うおー、勉強になりました。
ちょっとこれでやってみます。ありがとうございます。
497 :
デフォルトの名無しさん :2008/11/29(土) 22:37:24
APIも読んでない野郎はカス
498 :
デフォルトの名無しさん :2008/11/29(土) 22:42:36
JavaってIO関連のAPIの頭の中の整理がいまいちつかないんだけど 俺の頭が悪いのか、皆そうなのか・・・ なんどやってもだめ。すぐ忘れる。
499 :
デフォルトの名無しさん :2008/11/29(土) 22:44:19
こんなやつ
>>492 に親切に答えてやるな。
どうせAPIも読まない独学だし、こういうカスが調子に乗ったらどうすんの?
こういうのがそのうち祟り神(荒らし)になっちゃんだしな・・
>>498 そのうち慣れるよ
俺も昔はインプットストリームだバッファーなんたらだって頭がおかしくなりそうだったが
最近は見慣れたし、1度書いたコードをコピペしてシャキーンと直せば解決したりもする
501 :
デフォルトの名無しさん :2008/11/29(土) 22:58:47
シャキーンもなにも、JNIスレも探してないしすぐ発狂するし、こういう奴は見込みないよ。やめとけ、やめとけ。
502 :
デフォルトの名無しさん :2008/11/29(土) 23:00:27
>>500 ていうか、おまえは人様が作ったパッケージを使ってるだけだろ?
自分で作ったこともないクセに偉そうにするな。おっさんw
>>498 ここはおまえの日記帳じゃないからとっとと消えろw
>>502 人様が作ったから頭にはいらねーんだよボケが
自分で作ったらいくらなんでも覚えとるわい!
しかし、IDついてないのにみんなよく特定できるな
ソースにはIDあるよ
>>505 まじか!
俺なんて、自分が書き込んだIDもわからんぜよ
509 :
498 :2008/11/30(日) 00:20:36
コンストラクタの処理を途中で数秒間止めてから その後コンストラクタの続きの処理を動かすにはどうすればいいでしょうか? public コンストラクタ(){ System.out.println("1"); ここで数秒処理を止める System.out.println("2"); } このような処理にしたいのですが
511 :
デフォルトの名無しさん :2008/11/30(日) 01:06:50
eclipseで動かしてるプログラムなんですが下記のエラーが出ます。 データを読み取って新たにファイルを作り出すプログラムなのですが・・・ 何が原因でしょうか? java.lang.IntrnalError: fillbuf at org.apache.crimson.parser.InputEntity.parsedContent(InputEntity.java:545) at org.apache.crimson.parser.Parser2.content(Parser2.java:1871) at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:534) at org.apache.crimson.parser.Parser2.parse(Parser2.java:318) at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442) at org.jdom.input.SAXBuilder.build(SAXBuilder.java:287) at org.jdom.input.SAXBuilder.build(SAXBuilder.java:650)
>>511 多分、eclipse ではなくプログラムの方に問題がある感じだね。
513 :
デフォルトの名無しさん :2008/11/30(日) 09:16:51
ランダムにリンクが飛ぶスクリプトを拾ったんですが、 新ウィンドウでリンクを開く場合はどうしたらいいでしょうか。 アドレスのあとにtarget="_blank"と入れてもだめでした・・・。 <form> <input type=button onClick="jump()" value="ランダムリンク"> </form> <script> url = new Array(); /* リンク先のURLを好きなだけ記述 */ url[0] = "test0.html"; url[1] = "test1.html"; function jump() { p = Math.round(Math.random() * (url.length - 1)); parent.top.document.location = url[p]; } </script>
>>513 それJavaScriptじゃ。。。
該当スレで聞いて下さい
すれ違いでしたか、すみませんでした。
516 :
デフォルトの名無しさん :2008/11/30(日) 12:22:00
>>509 スレが汚れるだけだからこういうの止めてくれないか?
汚れるといってもあなたの陰金には負けます
Unix環境などX Windowがない環境でグラフィック処理を行うと エラーになるため、以下の環境変数を指定して実行すると正常に動作するというのを見つけました。 java -Djava.awt.headless=true hogehoge そこで質問させてください。 awtの処理でOSに依存するネイティブな処理が走るけど、 グラフィックをサポートしていないOSではエラーとなるため 上記の設定が必要だと思ってます。 では、上記設定を行うとネイティブで行ってた処理を誰が行ってくれるのでしょうか? Java側にネイティブのグラフィック処理に変わる実装があり、 そちらで処理してくれるのでしょうか? それでしたら、そもそもネイティブな処理を呼び出す必要がないですよね? java.awt.headless=true を指定すると 正常に処理される内部のメカニズムを教えてくださいm(__)m
内部の実装に興味持つならJAVAやる意味はないな。 SUNの方針だと、一度ソフト上で実装(レファレンス実装)してからshippingするからなんかあるんじゃないか? しかしもともとハードであるものをソフトでやる(エミュレーション)だから速度は遅くても、一応どこでも動くってこと。
521 :
デフォルトの名無しさん :2008/11/30(日) 19:37:07
すみません。自分自身の限界が来たので質問させてください。 Javaで非常にシンプルなボタンの作成をしてみました。 なぜだか、5番目のボタンだけキャプションが表示されません。 環境はWin+eclipseです。 トラブルシュート、ログはたくさん見たのでその他のなにか考えなければならないヒントなどいただけると た す か り ま す public class Test { public void method(){ int i; Button h[]=new Button [9]; int dx[]={1,2,3,4,5,6,7,8,9}; int dy[]={1,1,1,1,1,1,1,1,1}; String st[]={"aa","ii","uu","ee","oo","か","き","く","け"}; Display display = new Display(); Shell shell=new Shell(display); shell.open(); for(i=0; i<9; i++){ h[i]=new Button(shell,SWT.BORDER); h[i].setBounds(dx[i]*50,dy[i]*30,50,30); if(i!=4){h[i].setText(st[i]);}} while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}} display.dispose();} public static void main(String[] args){ Test test = new Test(); test.method();}}
522 :
デフォルトの名無しさん :2008/11/30(日) 19:40:31
>>521 追加です。
これは、問題があったコードを非常にシンプルにしたもので、
元のコードは1000行位あるものです。
特段お金儲け関係ではないので(ただの勉強)必死でいつまで、とかの要望はありませんが、
あまりにもシンプルすぎて調べようも無くなったのでお力拝借したいと。
ちなみにC# のスレに誤爆&非礼をわびておきました。
よろしくお願いします。
#てか、どこに問題があるんだろ。Javaのバージョンかなぁ。
523 :
デフォルトの名無しさん :2008/11/30(日) 19:45:42
をっと。利用しているのはSWTです。以下importを import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell;
>>521 > if(i!=4){h[i].setText(st[i]);}
これじゃね?
525 :
デフォルトの名無しさん :2008/11/30(日) 21:32:11
>>524 激しくわろたw
自分自身の限界が来たって大げさ過ぎw
こんな時代もあったよね と懐かしい気持ちになりました
>>486 ありがとうございます。
どうやらswingWorkerを使用する必要があるそうです。
ここでもうひとつ疑問なんですが、swingWorker<T, V>の、
<>の中身は一体なにを表しているのでしょうか。
swingWorker以外にもどこかで見たことがあるんですけど・・・。
「Java ジェネリックス」で調べてみて下さい。JDK5からの新文法です。
530 :
デフォルトの名無しさん :2008/12/01(月) 09:58:16
再帰呼び出しで static int f(int n) if n==0 return 1 else return n*f(n-1) というのを作ってn=3のとき最後の returnに1、2,3と返すと思うんですけど 2や3はf(2)やf(1)の値がコンピュータに記憶されてるの?
531 :
デフォルトの名無しさん :2008/12/01(月) 12:34:42
俺のコンピュータは意地でも改行しないつもりかwww.... ort final Display display = new Display(); final Shell shell = new Shell(display); String separator = System.getProperty("line.separator"); shell.open(); Text t = new Text(shell, SWT.BORDER); t.setBounds(10, 10, 100, 100); t.append("Hello world\n" + separator + '\n'); t.append("Hello world\n" + separator + '\n');
532 :
デフォルトの名無しさん :2008/12/01(月) 13:36:37
質問です。 StringクラスのreplaceAll()メソッドに関してなんですが、 正規表現で、特定の文字集合にマッチした場合、 マッチした文字の後ろに特殊な記号を加えたいのです。 replaceAll(pattern, "特殊な記号"); とすると、元の文字を完全に消してしまうので これはどのようにすればいいのでしょうか? 具体的には replaceAll("[abcd]","特殊な記号") で 文字列が、"apple"だった場合 "a特殊な記号pple" となるようにしたいのです。
533 :
デフォルトの名無しさん :2008/12/01(月) 13:38:12
replaceAll("([abcd])", "\\1特殊な記号");
正規表現はどこに行けばマスターできますか?
JDK5.0のWindows版しか使えない状態なのですが、Windowsサービスとして 起動しているアプリケーションに、外部からスレッドダンプを取得する 方法はあるでしょうか。以下の方法までは思いついたのですが、いずれも トレードオフが現在取れない状態になってしまっています。 1. jstack を使う → JDK5.0 では、Linux 版しか無い様でした。 2. jmxremote オプションを付けて jconsole でアタッチ → 取得できるのですが、jconsole の UI の仕様上、全部のスレッドダンプを 取りづらい(左のスレッドを選ぶとその情報が取れる)ので、一度に特定 プロセスのダンプが取れる方法を探しています。 3. StackTrace と言うアプリケーションを使う → adaptj と言う会社の StackTrace を使うと、まさに希望したものが取れるの ですが、実行したい環境がインターネットに繋がらない環境であるため、 使用できないでいます。 できる範囲は、VM の起動引数に変更を加えるまでは可能です。
ありません。
VMの起動引数を変えれるんなら、メインクラスを変えられるということだ 自前のメインクラスから専用のスレッドを起動しておき、 何かのトリガに反応して Thread#getAllStackTraces() を出力するようにしておけばいいのではないか
>>536 そうですか...Linuxだと簡単なのに意外に苦戦して参っています。
>>537 ありがとうございます。
Thread#getAllStackTraces を出力する案は、
別途サーバに手を入れてしまうのが許される場合の案として
次善策にしていました。
この場合はどうせ手が入るからってことで、
サーバアプリなのでそのまま口を設けて出力する案で検討していま?
いまどきLinuxはねーよw
linuxが許されるのは年金もらうまでだよね
なら、おまえらはなに使ってんだよ?
もちろんWindows
543 :
デフォルトの名無しさん :2008/12/01(月) 16:33:03
そのサイト、おおお!〜ましたね!っていうのがイヤだ
>>544 てか、
Java初心者向けサイトのほとんどがそんな感じじゃね?
念願の、Genericとアノテーションとenumに対応したEffective Java第2版が 出たそうですが、おぬしらの中の読んだ方で、感想はいかがですかな? 前書きに書いてある通りの内容ですかな? すでに第1版をenumあたりまで読んでいるのじゃが、 これは第2版に鞍替えして読み直したほうがよろしいかな?
struts2って結構使われてるんでしょうか? 今、一番安定しているフレームワークって何?
ところでおまいらEclipseとか使いこなせてるの? おれは全然わかんねぇ、普通にプロジェクト作ってコード書いて実行ならできるんだが 全然使いこなしてる感じがしない、というかしてないが。 開発環境って多機能すぎる
お前らSE、PG?????? やっていけてんの??????
>>535 とにかく Ctrl+Break を送ればスレッドダンプするらしいので、Win32 SDK の GenerateConsoleCtrlEvent 関数
で CTRL_BREAK_EVENT を送ればいいはず。
ただしサービスとして起動している java プログラムの標準出力に出ちゃうから、標準出力をファイルか何かに
リダイレクトする必要がある。
ここまで書いたけど、そこまでするなら JDK6 にしてもらえるように説得したほうが楽そうだな。
式言語の意義とは何なんでしょうか? seacer2の勉強してたらOGNLという言語が出てきました。 調べてみるとJavaEEに出てくるEL式などの仲間で式言語というらしいのですが、 文法見ても目的が理解できません。 web開発において式言語を使う意味というのは JSPでアクションやサーブレットから受け取ったオブジェクトの情報を出力しやすくするため に限ったことですか?
以下のオブジェクトをシリアライズしてネットワークで他のパソコンに転送、計算を行い結果を返送させるプログラムを作成しています。 public class Element implements Serializable { double start; double end; int cut; double d; int sigma; int mode; }
556 :
555 :2008/12/01(月) 23:54:35
続き 送信メソッド try { sock = new Socket(host, Integer.parseInt(port)); } catch (NumberFormatException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ObjectOutputStream out = null; try { out = new ObjectOutputStream(sock.getOutputStream()); out.writeObject(element); out.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { out.close(); sock.close(); } catch (Exception e) { e.printStackTrace(); }
557 :
555 :2008/12/01(月) 23:58:02
以下のメソッドで受信を行っているのですが、EOFExceptionが発生してしまいます。 理由がさっぱりわからず困っています。どのようにすればよいのでしょうか。 try { ois = new ObjectInputStream(sock.getInputStream()); if(ois.readObject() instanceof Element) //計算する要素を受け取った場合 { Element element = (Element)ois.readObject(); element.apply(simu.getRects()); Receive.this.simu.calc(); //計算 } } catch(Exception e) { e.printStackTrace(); } finally { try { if(ois != null) ois.close(); } catch(IOException e) { e.printStackTrace(); } } }
558 :
デフォルトの名無しさん :2008/12/02(火) 00:02:21
ここ if(ois.readObject() instanceof Element) //計算する要素を受け取った場合
>>555 ois.readObject() instanceof Element の行で
オブジェクトを読み込んでるのに
その下の行でさらに読み込もうとしてるから
public static final Object CONS=new Object(); でオブジェクトのインスタンスを定数のように使いたいのですが、 直列化するとインスタンスのメモリアドレスが変わってしまい if (arg==CONS);で比較しても上手くいきません。 古いjdkのためenumを使えずどうすれば良いでしょうか。
>>560 enumが欲しいならEffective Javaを読んでenumを実装する
562 :
555 :2008/12/02(火) 00:26:58
>>561 その教科書は持ってないんですけど、enumなんてどうやれば実装できるんですか!
うざいなぁ
Enumでなくてもフィールドがオブジェクトで定数(final)で一意であればいいので 例えばStringでやってみようかと思ってるのですが難しいです(;ω;)
567 :
546 :2008/12/02(火) 02:05:41
>>552 なぜスレ違いなのじゃ?
Eclipseの話をするほうがよっぽどスレ違いではないかい?
うーむ、Effective Java第2版を実際に読んでみた者は
まだこのスレに現れないか。
568 :
546 :2008/12/02(火) 02:08:03
>>563 Effective Java第一版に実装する方法が載っているようじゃ。
Type Safe enumでもググって見るとよいぞ。Eclipseのプラグインでも
そのようなものが存在するのじゃ。
読んでる最中。Genericsの境界ワイルドカードは説明読んでもさっぱりだ。 <T extends Comparable<? super T>>って何ぞ……。
Tもしくはそのスーパークラスと比較可能なT Integer (Comparable<Integer>) とか java.sql.Date (Comparable<java.util.Date>) が該当する
<? super T>って if(foo instanceof Bar){ //hoge } みたいな条件分岐がいらなくなるくらいしか思いつかないんだが・・・
572 :
569 :2008/12/02(火) 02:25:37
うーん、わかるようなわからんような。 interface I {} class A implements I, Comparable<I> {...} class B implements I, Comparable<I> {...} static <T extends Comparalbe<? super T>> int compare1(T a, T b) {...} static <T extends Comparalbe<T>> int compare2(T a, T b) {...} void func() { A a = new A(); B b = new B(); compare1(a, b); // OK compare2(a, b); // NG } 既存の定義はなんとか読み解けても、1から自分で定義できなさそーな気が……。
>>567 注文して、到着待ち。俺の国に届くのはいつの日だよorz
>>571 実行時じゃなくてコンパイル時に怒られるから良いんじゃないのかな。
Generics使い始めると意地でもキャストを無くしたくなる。
>>570 片方がsqlでもう片方がutilであるぞ
>>572 ドキュメントをよく読むんだ。入門サイトもどこかにある。
Effective Javaを読む前に先にGenerics入門らしきサイトを先に
読んだほうがいいのでは。
たしかに、けっこう混乱するとは思う。
自分で作るの大変だ
アプレットで六角形を描きたいのですが、drawPolygonメソッドがint型の配列しか引数に 取れないようなのでどうすればいいかわかりません。以下のコードをどう修正したらいいですか import java.applet.*; import java.awt.*; public class hexagon extends Applet { public void paint(Graphics g) { double sqr3 = Math.sqrt(3.0); double[] xPoints = {5, 15, 20, 15, 5, 0}; double[] yPoints = {0, 0, (5*sqr3), (10*sqr3), (10*sqr3), (5*sqr3)}; int nPoints = 6; g.drawPolygon(xPoints, yPoints, nPoints); } }
>>578 同一インスタンスを返すようにreadResolve()をオーバーライドすればいいということかと。
readResolve()を知らないなら、直列化について詳しく調べるといい。
直列化のsrcとdstでインスタンスのアドレスが違うからstatic final intみたな定数として機能してないってことが問題なんですけど? 何が問題が良く分かってないじゃないですか。それにインタフェイスではそのAPIはありませんよ。 直列化するときは普通はクラスのほう使いますけど。
なんでintしか扱えないんだろうか
>>580 readResolve()はANY-ACCESS-MODIFIERなメソッドだけど、
デフォルトではprivateなメソッドだから、javadocにも載ってないし、
オーバーライドしろといわれてもピンとこないのは、非常によく分かる。
ただ、直列化を使用するなら、直列化の仕様ぐらい調べようぜ。
それより、"クラスのほう"って何?
583 :
デフォルトの名無しさん :2008/12/02(火) 20:04:29
当然class ObjectInputStreamですよ。 intなのは、swichの実装が32ビットだと容易だからです。 それと仕様は読んでるんですけど、参照をフィールド定数として使いたいことと直列化は関係ありません。 enumが使えるJDKならいいんでしょうが、なんか上手い方法はないでしょうか・・・・
readResolveが一つの解決法なのは分かりますが、あなた、ちょっとしつこい
もうジャバはめんどい! C#とマイクロソフトだけで俺はしあわせ!
>>585 readResolve での解決では、何か不満が?
>>585 >readResolveが一つの解決法なのは分かりますが、あなた、ちょっとしつこい
いや、別人ですから。
ここまで全部俺の書き込み
どれがだれのだれへの発言なのか
>>それにインタフェイスではそのAPIはありませんよ。 >>直列化するときは普通はクラスのほう使いますけど。 横道にそれるけど、インタフェイスとクラスの理解があやふやじゃないか。 普通はクラスのほうを直列化って、インタフェイスも直列化可能と?
>>569 ワイルドカードは、
引数に対してコバリアントにしたい場合は、super を使い、
返り値に対してコバリアントにしたい場合は、extends を使う。
例えば、Comparator<T> は、T が出てくるのが、
int compare(T, T)
しかないので、extends のワイルドカードを使っても全くの無意味。
逆に、Iterator<T> は、T が出てくるのが
T next()
しかないので、super のワイルドカードを使っても全くの無意味。
ところで、Effective Java 第2版の和訳はどうなん?
第1版は和訳が酷いとかいってた人が居たけど
javaでmysqlサーバに現在時刻を取得するためにクエリを発行して取得した結果が 2008-12-02 20:47:03.0 というように最後に余計な物がついてきます。これなんとかならないでしょうか? String query = "select now();"; try{ Class.forName("org.gjt.mm.mysql.Driver"); con = DriverManager.getConnection(url, user, pass); stmt = con.createStatement(); rs = stmt.executeQuery(query); rs.next(); TimeStamp = rs.getString("now()"); System.out.println(TimeStamp); }catch(Exception e){ System.err.println(e); } こんな感じのソースです 2008-12-02 20:47:03 これだけあればいいです
5.0じゃないならreadResolveしかないだろ。なんでゴネてんだ?
596 :
デフォルトの名無しさん :2008/12/02(火) 21:10:50
Swingで質問です… JScrollPaneのViewportViewにJTreeを二つ設置したJPanelを指定したのですが スクロールペインの中央にJTreeが並んでしまって困ってます BoxLayoutでJPanelにJTreeを設置するとテキストがまともに表示されない(後半が途切れる)ので GridBagLayoutで白紙のパネルをJTreeの下に設置し、JTreeを左上になんとか表示してます こんな無理矢理な方法を使わず、素直にJTreeを二つスクロールペインの左上に設置する方法は無いでしょうか? 何方かご教授下さい…
>>594 なんで getTimestamp しないの?
java.text.SimpleDateFormat あたりを参照するよろし。
鯖のシステム時刻とクライアントのシステム時刻が一致している 保証はあるけ?
>>597 >>598 ありがとうございます。結論から言うと、substring(0,19)で解決しました
しかしなんで末尾にへんな.0がつくのかちょっと謎です
>>598 なるほどね。
ならそもそも SQL 上で整形して出力すべきだね。
ん?と思ったけど Timestamp で取得してりゃ問題ないんじゃないの? unix epoch time からの時間な訳だし…。 まぁどうでもいいや。ガンガってw
>>567 eclipse万歳〜
プランクトン万歳〜
eclipseなんて使ってると馬鹿になるぞ ってのが口癖のEmacs使いの先輩がRailsを理解できない 規約言う前に原理を説明しろとか言って怒鳴る 頭固くなってんのはどっちなんだろう
よく考えたら直列化で定数フィールドのアドレスが変わっても、equalsで解決できそうなのでそっちでやってみることにします。 実際はEnmuMapみたいなことが出来れば良いのですが、マップを使った配列アクセスみたいですけど m.put(ONE,val); m.put(TWO,val2); したあとに直列化しても m.get(ONE).equals(val)==true であることが条件です。こういうのは出来ないのでしょうか。
>>603 こんなところで先輩の悪口いってるおまえも相当アレだけどなw
>>596 sage忘れた上にSwingスレがありました…本当に申し訳ないです
>>603 「IDE? クソ使い難いエディタ付いてるだけのキッチンシンクが使いもんに
なるわけねーだろ、JK」と思ってたら、リファクタリング機能のあまりの
素晴しさにEclipseに転んだEmacs歴15年の俺が通りますよ、と。
まぁ、ScalaはScala Pluginが現状役に立たないので、scala-mode.el一択
なんだがな……。
608 :
デフォルトの名無しさん :2008/12/02(火) 23:24:18
emacsってそんなにいいんですか?ただのエディタじゃないですか。 しかも正規表現を使った検索・置換があれば最低現十分なのに、カスタマイズが多すぎて不要な機能が多いし。 実際私が論文書くときや役所に提出する書類なんかもms word 95と表機能程度で十分ですし、一体全体エディッタやIDEに何を望んでるんですか?といってみるテストw
>>603 IDE でしか coding したことないと馬鹿になるというか発想が
狭くなるという意味では先輩に合意する。けど、IDE を使って
も良いと思うし、単純ではない GUI とかは IDE 使わない方が
時間の無駄だと思う。
エディタだとしてもコードのコピペで済むので、時間の無駄って感覚がわかんないんですけど。 GUIとか外見のテンプレートがあってあとはロジック書くだけってならJavaじゃなくても今の時代ならWebでいいかと。 Javaの良いところはコテコテの言語サポートや特定用途でしかつかない意味不明な機能があったりせず、 シンプルにエディタのみで、OO思考的に必要なクラスファイルを書いていくだけでいいってところだと思うんですけど。 でも数千以上のクラスファイルを管理できるぐらいに頭良くないとちょっと無理か。
611 :
デフォルトの名無しさん :2008/12/02(火) 23:45:29
>>603 >先輩がRailsを理解できない
>規約言う前に原理を説明しろとか言って怒鳴る
先輩と君との間には、だいぶ深い差があると感じる。
>>610 Java は色々な名前がやたら長いから通常のエディタじゃかったるくないか?
Exception 名とか
自分もXEmacsからEclipseに乗り換えたクチですが、便利だなと思える機能は 「それって文法的に自明だから、自動化できるよね」という物が殆どです。 例えばインターフェイス実装時のスケルトンの自動生成なんてのは典型ですし、 リファクタリング時の参照関係の追跡と参照元の書き換えなんかもそう。 手作業でも出来るけど、時間の無駄だしエラーの元なので今では「そこは自明 なので勝手にやっちゃって下さい」という感じです。 あとはエラーやプロジェクトの状況が視覚的に分かりやすいのも良いかな。 あまり関係ないですが、インターンの学生に課題としてクラスのスケルトンと JUnitのテスト一式を与えたら随分楽しそうに取り組んでいます。 メソッド実装してEclipse上でテストを実行する度にグリーンが増えていくのが 楽しいらしいです。
C#は言語仕様をIDEで楽にプログラムできるようにしてあるとか聞くね C++はIDE使ってもjava+eclipseほど楽になんなかった
>>614 >C++はIDE使ってもjava+eclipseほど楽になんなかった
それはMFCの設計の悪さから来ているだけ。
つーかjavaでeclipse以外の選択肢って無いだろ eclipse使わない奴は自分のつまらない信念とポリシー(笑い)を主張してるだけ
javaビーンズとやらもマシになったと聞くが あれはポトペタ?が楽になっただけか?モ?
>C#は言語仕様をIDEで楽にプログラムできるようにしてあるとか聞くね この辺りを言語仕様に組み込むのは、MSっぽいし商売を感じる。 VBだけにしてくれってところだけど、そのうちVBもC#もどの言語でも垣根がなくなるんじゃないか? dot netの機能で、C#では出来るけどJScriptでは出来ないとか言うわけにはいかないだろうし、 そもそも演算子オーバーロードーと同じく言語サポートとしてoperator - ()とするかライブラリでBigInteger.subtractにするかの差でしかないからなぁ。
ポイ捨てアプリならIDEでハックでいいんじゃないかと思うけど、自作ライブラリはエディタでつくるけどね。 実際継承ばかりだから重複するコードはないし、ちょっと手を加えてsuper.method(arg)とかで、 ほとんどOO的にしか作ってないしな。 テンプレート目的で使うIDEだと、確かにイミュータブルとかstatic void method(), clone()とかの概念を全く理解できないだろうからバカになるってはあるか。 javacとjavadocは非常に優秀だからこれだけで十分だけど・・・ Exceptionとか長いのは、「れ・い・が・い」ではなくて、「えくせぷしょん」と脳内で英語で発音しながらタイプするといいですよw 英会話とか英語に慣れてないと無理でしょうけど。 なれてくると、「あん・さぽーてど・おーぺれいしょん・えくせぷしょん」とリズミカルにタイプするようになるでしょうw
EclipseとNetBeans両方使ってるけどNetBeansの方が楽だな 軽いし
プロフ取るのはNBの方が簡単なんで好き
初心者のおじさんが通ります。 eclipseは良いですな。 初心者には。 実体を意識しなくてもコーディングできると言う意味では ○インスタンスの考え方(メモリとの関係とかポインタとか)が5年たっても身に付かなさそう ○ロジックに集中できる分素人が書いてもある程度動く(といいなぁ) ○して、初心者がプログラムに手をだす、と いわゆる世紀末ってやつです。世紀末はY2Kをなおざりにしたまま通り過ぎましたがwww
>実体を意識しなくてもコーディングできると言う意味では IDEといっても機能は多彩なので、機能ごとに話は変わってくるかと。 コンテンツアシストやリファクタリング支援などについては泥臭い作業は 大いに省いてくれるものの、それほど「実体」から離れることになるとは 思いません。 スタブの自動生成やポトペタについては・・・確かに初心者が無理解の まま使っていると危ないなと思う光景は、多々あります。 初心者向けで良いと思うのはコードの整形機能です(IDEに限りませんが)。 「一つメソッド書いたらCTRL+SHIFT+F」と指導しておくとオートインデントの 結果からループ構造の間違いなどに気がつくことも多いようです。 結果としてインデントの重要性を理解して、自ら意識してタブを打つように なるのも早いような気がします。 何れにしても、初心者であれそうでない人であれ、IDEのメリットは >ロジックに集中できる ここに尽きる気がします。
IDE が「何を自動化してくれているか」を 理解しないまま IDE を使うべきではない とおもう あと Eclipse vs NetBeans の議論は ここでしないでくれ
>>622 蛇足ながら、コンテンツアシスト機能も初心者には良いと思います。
というのも、プログラム勉強したばかりの人がプログラムを書くと
変数名が宣言順にa,b,c,d...だったりする事が良くあります。
その度に「ちゃんと変数の意味を考えて長い名前をつけろ〜」など
指導しますが、「だって長い変数名をタイプするの面倒だし・・・」と
無言の抵抗が返ってくることが、ままあります。
そのような場合でもコンテンツアシストによる変数名補完を覚える
と、長い変数名に対する抵抗感も随分とマシになるようです。
まあねぇ。 非static を参照できないってIDEに言われて理由を聞くと、 「IDEがだめって言ったから」、じゃねぇ・・・・
機能てんこもりも困るし、お節介も面倒だし、IDEも玄人と初心者用に分派するんじゃないの? ただ、エクリプスは実際はプラグインの拡張を使っているだけでエクリプス固有(swtなど)の機能を使っているわけではないし、 もしnetbeansでも使えたら両者の機能的な差はないってことで、一太郎とワードの使用感(UI)でしかない。 netbeansはopenofficeと同じくもう一回ぐらいメジャー・バージョンアップすると最強になるんじゃないかと思う。
何年経っても中身がわからないまま使ってるなんて余程向上心がないんじゃないの しかしそんな奴実際見たことねーぞ
629 :
577 :2008/12/03(水) 10:36:11
ところで六角形の質問をした者ですが、そのreadresolveとやらを使って実際に ソースを書いてもらえませんか?
>>629 readResolveが出てきたのは
>>579 がレス先間違っただけのような
>>577 の話なら double[] 使わずに int[] 使って
n*sqrt3 の部分を全部 (int)(n * sqrt3) にすれば?
631 :
577 :2008/12/03(水) 11:00:29
intにキャストすると小数点以下が失われて1になってしまうものかと思ってましたが、違うのですか
>>631 System.out.println(5 * (int)sqrt3); // -> 5
System.out.println((int)(5 * sqrt3)); // -> 8
了解です ありがとう
細かいところ気にするなら Math.round を使えば良い。
635 :
デフォルトの名無しさん :2008/12/03(水) 13:09:01
>>629 この程度の分からないなら六角形を描くとか以前の問題だな。カス
いや、だから初心者スレに来てるんだろw ここはプロフェッショナルスレじゃないよw
自分で調べられないようなカスの相手をするな。スレが荒れる
639 :
577 :2008/12/03(水) 13:48:09
他にもっときれいな書き方とかあったら教えて下さい
640 :
デフォルトの名無しさん :2008/12/03(水) 14:01:22
チンコなきれいだって?!
チンカスだなお前は。ウザい消えろ
カス野郎がチンカスとかほざいてるよw
643 :
577 :2008/12/03(水) 16:42:40
なんかよくわからないのでとりあえず他の掲示板で聞いて来ます
Implって何? どんなクラス?
盗聴するクラス教えて
>>644 implementationの略
インターフェイスの既定の実装を提供するクラスに対して
名前を考えるのが面倒な時に○○Implというような名前を付ける
おれおクラスは学級崩壊すんでんだったぞ。
648 :
デフォルトの名無しさん :2008/12/03(水) 17:46:16
このスレ糞だな。初心者のためのスレじゃないのか? 統合環境がどうだの経験者が屁みたいな話したかったら別でやってこい。 ろくなのいねぇなここは。チンカス師ね
初心者のためのスレではないが、初心者歓迎なスレです。 スレ民はなぜかささくれています
>>648 チンカスはおまえ。ageんな
鼻糞ww
喧嘩すんな馬鹿ども
鼻糞が泣いちゃうだろ。まだジャヴァ初心者なんだからさw
>>639 Path2D path = new Path2D.Double();
path.moveTo(xPoints[0], yPoints[0]);
for(int i=1; i<nPoints; i++) { path.lineTo(xPoints[i], yPoints[i]); }
path.closePath();
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.draw(path);
基本的には
>>577 で良いと思うけど,応用性とか考えたら
final int nPoints=6;
final float radius=20,cx=2*radius,cy=2*radius;
int [] xPoints = new int [nPoints];
int [] yPoints = new int [nPoints];
for(int j=0; j<nPoints ; ++j){
xPoints[j] = (int)Math.round(cx+radius*Math.cos(2*Math.PI*j/nPoints));
yPoints[j] = (int)Math.round(cy+radius*Math.sin(2*Math.PI*j/nPoints));
}
g.drawPolygon(xPoints, yPoints, nPoints);
と書くかな。人によるだろうけど。
java.lang.Stringを拡張したしたクラスを作りたいのですが、どのように実装すればよいでしょうか?
できない Stringは「変更できない文字列」以上でも以下でもないんだから, class StringUtil { public static String Hoge(String str) { /*strをなんかいじくって返す*/ } public static String Foo(String str, int arg) { /*strをなんかいじくって返す*/ } … } こういうクラスを作っとけば同じことでしょ?
Effective C++とかでも強調されてるけど、継承考えるなら 単にメンバーにする事とどちらが良いか考えなきゃいかん。 多くの場合メンバーの方がまともな答。
Stringの中身を一切変更できないようにすると何かと扱いやすいから, それを保障するために継承を禁止してるの
まんこの実装の仕方を知っているのだがどうすればいい?
いや、つまんないから
おまえらバカども寝ろ。明日会社だろ。暇人か?
662 :
デフォルトの名無しさん :2008/12/04(木) 04:09:29
なんだこいつ?
663 :
デフォルトの名無しさん :2008/12/04(木) 05:45:24
MacOSX1.5環境での質問です。 下記のような実行時エラーが出たのでlibj3dcore-ogl.soが読めないのかと思い、 LD_LIBRARY_PATHやjava.library.pathに.soファイルを含むディレクトリへのパスを追加したり、 カレントディレクトリに.soファイルのリンクを作成したりしてみましたが 一向に改善しません。 他に疑うべきポイントやなすべき操作はございませんでしょうか --- ここからエラー出力 java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at com.imakitaindustory.ui.util.ImakitaPluginLoader.createPlugin(ImakitaPluginLoader.java:80) at com.imakitaindustory.ui.ImakitaUI.main(ImakitaUI.java:34) Caused by: java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1753) at java.lang.Runtime.loadLibrary0(Runtime.java:822) at java.lang.System.loadLibrary(System.java:993) at javax.media.j3d.MasterControl$5.run(MasterControl.java:838) at java.security.AccessController.doPrivileged(Native Method) at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:821) at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:252) at javax.media.j3d.Canvas3D.<clinit>(Canvas3D.java:3884) at com.imakitaindustory.ui.view.Imakita3DView.<init>(Imakita3DView.java:152) ... 11 more
Mac は .so じゃなくて .jnilib だと思うけど
質問させてください bmp形式の画像を読み込んで、ピクセル毎のRGBの値を表示させたいのですが、どのクラスを使えばできますか?
>>665 javax.imageio.ImageIO と java.awt.image.BufferedImage
JavaからJRubyの呼び出しを行っているのですが、 オプションを指定して実行する方法がわかりません。 Fiberクラスを使うために--1.9オプションを指定する方法が知りたいです。 Fiberの機能を利用できればいいので、他の方法でもご教授ください。
>>666 さん
ありがとうございます!試してみます
669 :
デフォルトの名無しさん :2008/12/04(木) 16:02:38
将棋倶楽部24でよく将棋を指すんですが ちょっと前にjava更新があったのでしたところ 対局画面の右上に!←こんなのがずっとついてきます 前はこんなのなかったのに やってない人には全く分からないと思いますので 気長に待つつもりです 誰かおね!
>>669 > プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
板の注意書きくらい嫁
Java6 update10 から アプレットがポップアップしたウィンドウに !マークが付くようになった。 以前はウィンドウの下部に 「警告:アプレットウィンドウ」とか付いてたけど。 >> 669 気にしないで大丈夫です。 「これは Java によって表示されたウィンドウです」 という注意書きのようなものです。
672 :
663 :2008/12/04(木) 20:22:26
>664 ありがと何が悪かったかようやくわかった!
マルチすんなカス
676 :
デフォルトの名無しさん :2008/12/04(木) 22:16:43
ゴズリン大先生だってムカムカじゃないか!おまえが無能だからだろ。
677 :
デフォルトの名無しさん :2008/12/04(木) 23:47:48
無限大の扱いについて質問があります。 A=1/a; if(A>3){ A=3; } という文で、aが0に近い値の場合、AがInfintyになってしまいます。 そして、Aが数字であるということが読み込まれずに、 下のif文が読み込まれないようなのです。 無限大の値と自然数を比べるよい方法はなにかないでしょうか? よろしくおねがいします。
POSITIVE_INFINITYはMAX_VALUEより値は大きいから問題ないと思うけど。 Double.Nanになってるとかじゃないの?Double.isNan(A)でtureを返せばそう。
成る程 明日試してみます。 ありがとうございました。
実はaは、0に近いマイナスの値で、マイナス無限大になってるとか・・・
681 :
デフォルトの名無しさん :2008/12/05(金) 16:18:18
age
682 :
デフォルトの名無しさん :2008/12/06(土) 10:33:54
Javaのコンパイラの無料ダウンロードってどうすればできますか? 一番有名なのが停止期間?か何かで…。 あとダウンロードしても英語ばっかで何すればいいのかわからないんですが(笑)
よくそれでプログラムやろうと思うな テンプレ読め
684 :
デフォルトの名無しさん :2008/12/06(土) 10:43:10
やりたくはないんですけど課題として出されてるので・・・。 学校にはコンパイラあるんですけど家でもやらないと追いつかないんですよ。 そういうわけでものすごい勢いで初心者です。 小学生に2次関数やれって言われてるくらいの感じです
686 :
デフォルトの名無しさん :2008/12/06(土) 11:09:56
>>685 ありがとうございます。
進めていくとJDKがどうのこうの…と言われて進めないのですが
JDKというのをダウンロードしようとしてもうまくいきません。
どうすればいいでしょうか?
よく釣られるスレだな
IBMのJREダウンロードってわっかり難いよね。 特定のバージョンのJREダウンロード見つけるのに えらい苦労した記憶が
>>684 小学生で2次関数やってる奴なんか掃いて捨てるほどいるぞ
>>684 >小学生に2次関数やれって言われてるくらいの感じです
つ 公文式
その気になれば小学生だってラプラス変換。
そうか。公文でJavaの教材を作れば良いんだ。
netbeansは所々日本語みたいなんですけど、日本語版とか日本語化とかはないんですか? エクリプスよりもかなりいい感じなんですけど。
>>689 だから、
無茶ってほどじゃないけど難しいことやらされてる
っていうくらいの例えじゃないのか
693 :
名無し :2008/12/06(土) 18:20:19
問題 au携帯電話の「ダブル定額ライト」プランの税込料金を計算するプログラムを作成しなさい。 動作は以下のとおり。 (1)自分の学生書番号と氏名の表示 (2)利用パケット数(整数)を入力 (3)利用パケット数が0以上である場合は、税込料金(整数)を表示 (4)利用パケット数が負である場合は、エラーメッセージを表示。 補足 @定額1わずか1000円/月(税込1050円)、12500パケットまで A使った分だけ1000円/月(税込1050円)+超過分、12500パケット超〜52500パケット未満、0.08円/パッケト(税込0.084円) B定額2最大4200円/月(税込4410円)で使い放題、52500パケット以上4200円/月(税込4410円) パケット数が@5000A12500B35000C52500D8000E-1000のそれぞれの場合について実行させなさい。 難しすぎて困ってます。とける方いましたらお願いします。
どこが難しいんだよw
auに問い合わせろ
696 :
デフォルトの名無しさん :2008/12/06(土) 18:33:29
すれ違い
最初から考えることを放棄しているとしか思えない これがゆとり教育というものか
698 :
名無し :2008/12/06(土) 19:04:57
すいません。ほんとに馬鹿でソースコーがまったくわからないんです。
Cの方が頭弱い人にも分かりやすく書いてある本が多いからC/C++からやった方が早く身につくよ。
>>698 馬鹿だからわからないんじゃない。
ちゃんと手順を踏んで、時間と労力を注いで勉強していないから
わからないの。あえて言えば、怠け者だから。
701 :
デフォルトの名無しさん :2008/12/06(土) 20:08:30
>>698 てか、こういう奴っていったい何をしたいんだろ?
>>698 ここは初心者歓迎スレなんであって、馬鹿はお呼びでない
帰れ
この問題だったら ruby みたいなスクリプト系言語か mathematica/maple/maxima/matlab みたいなもんの方が Java より楽だなぁ… GUI 必要だともうちょっと何か使うが。
javaでファイルを起動するにはどうすればいいでしょうか? コマンドプロンプトが使えればそれでもおkです。 よろしくお願いします。
System.out.print("あさげ!"+"\t"); この\tって如何言う意味ですか?
タブ
>>704 質問の意味がわからない。
実行ファイルをコマンドライン指定で実行したいということ?
javaアプリを起動なのか、 javaからwinアプリを起動したいのか、 javaから別アプリでファイルを開きたいのか。 どれだー
結局はテキストファイルをメモ帳等のソフトで開きたいだけです。
ググればわかるレベル多すぎ
目的の為の手段で悩み続け、肝心な目的を忘れる
そのバカに釣られるおまえはもっとバカw
715 :
デフォルトの名無しさん :2008/12/07(日) 00:12:09
帯グラフを描くためにはどうやってプログラムすればいいんでしょうか?
717 :
デフォルトの名無しさん :2008/12/07(日) 00:29:32
買ってグラフィックスまで勉強したのですが、帯グラフとかデータの割合を反映させたり 少し複雑になると頭真っ白になってしまいます・・・。
たぶんプログラミングにむいていないから諦める
それがいい。
>>717 どこがわからないのか落ち着いて考えた方が良い。
他のプログラミングができてグラフが描けないなら
むしろ算数の勉強不足の可能性大。
>>715 ,717
A:25 B:15 C:10というデータがあって、横幅200pxで帯グラフを描くとする。
まず、データの値を全部足して(25+15+10=50)、その結果で一つ一つのデータを割る(25/50=0.5、15/50=0.3、10/50=0.2)
帯グラフの横幅をその結果にそれぞれかける(0.5x200=100、0.3x200=60、0.2x200=40)。
これでそれぞれのデータの横幅が求まったので、描く。AとかBとかのラベルも適当に重ねて描く。
これを日本語からJavaに翻訳する。
722 :
デフォルトの名無しさん :2008/12/07(日) 03:08:47
system.in.readlnってなんでないんですか?
行列計算をしたくてJAMAを導入したのですが 例えば A{1,2,3} {2,0,2} {0,0,1} B{0,1,0} {1,0,0} {0,0,1} というようなA,B二つの3×3行列のA×Bを求めたい場合はどのように書けばいいのでしょうか? また、計算後の行列を配列変数に代入したり、文字列として出力する場合にはどうすればいいのでしょうか?
725 :
デフォルトの名無しさん :2008/12/07(日) 03:53:10
Example of Use. The following simple example solves a 3x3 linear system Ax=b and computes the norm of the residual. double[][] array = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}}; Matrix A = new Matrix(array); Matrix b = Matrix.random(3,1); Matrix x = A.solve(b); Matrix Residual = A.times(x).minus(b); double rnorm = Residual.normInf();
>>722 オブジェクト指向分析的に、「システム」が行の入力を持つとは考えにくいから。
やっぱ行の入力は文字の入力ストリーム全般に対して持つべきで、
ファイルとシステム、さらにGUIとか文字列ストリームで別々に行の入力を実装するのは……
オブジェクト指向分析的にいえば改行コード(\n)を特定できないため、readLineを実装しても挙動が異なる。
したがって、System.out.println はオブジェクト指向分析的にウソっぱちです。 こんな似非オブジェクト指向言語は捨ててしまいましょう。
じゃ何がいいんですか
>>728 ジャバはオブジェクト指向言語なので捨ててしまっていいのはおまえの財布の中身です。
731 :
デフォルトの名無しさん :2008/12/07(日) 08:54:52
BufferedImage[][]の画像を合わせて一つのBufferedImageにしたいんですけど どうすればいいでしょうか?
どうもできません。
733 :
デフォルトの名無しさん :2008/12/07(日) 09:14:41
ラッパークラスについて教えてください。 new Integer(10)というのを見て、 Integerクラスにはint型のフィールドがあるのかと思ったのですが、 APIを見てもどこにもそんなフィールどは無いようです。 int型の値10はどこに保持されているのでしょうか? 本を見てもボクシング、アンボクシングとは何かしか書いてありません。
734 :
デフォルトの名無しさん :2008/12/07(日) 09:15:13
マップエディタでチップを2次元配列に入れていって最後に 大きい画像として出力したかったんですけど無理ですか…
何をしたいのか意味不明です。
16進数の文字列をbmp形式の画像で出力するのに適したクラス、メソッドはどんなものがありますか?
737 :
デフォルトの名無しさん :2008/12/07(日) 09:57:58
16進数の文字列
Color#decode() BufferedImage →簡単なのはsetRGB(),ある程度画像知ってるならgetRasterでWritableRasterにかきこむ ImageIO.write()
Java SwingでJButton押下時に、Javaのファイルを 読み込んで、そっちのJFrameを表示させたいのですが どうすればいいですか?
少し難しい質問なんですが、str.intern()したインスタンスもやはりgcされるんでしょうか?
>>733 よくわからないけど、int 型で取り出せるじゃない。
それとも実際の装備の問題?装備は標準決まってない限りは
どうなってるかは保証されてないのでは。
なんなんだ、この最近の流れは? 期末の課題があちこちで出たって事か?
>>734 無理じゃないよ。
そこまで専門用語が出せるなら、もう少し考えれば出来る。
>>733 あるよ
ただしドキュメントに private フィールドは記載されない
>>739 JButton押下時にjavaのソースファイルをコンパイルしたいという意味か?
>>739 ここに来るぐらいだから、AFrameのボタンのActionListenerで
BFrame作って表示するだけなんじゃないの
>>734 でっかいBufferdImageを作って、そこにチップをDrawImageしましょう
748 :
デフォルトの名無しさん :2008/12/07(日) 15:36:40
コンパイルしようとすると、 'javac'は内部コマンドまたはガイブコマンド、操作可能なプログラムまたはバッチファイルとして認識されてません って出てきます。環境変数もCLASSPATHに設定したのに・・・どうしたらいいでしょうか?
749 :
デフォルトの名無しさん :2008/12/07(日) 15:38:03
すみません!!1を今見ました!!失礼しました
Formatter を使った書式で、 整数であれば小数点以下を出力しない、 という書き方はありますでしょうか。 たとえば System.out.printf(t, d) で (d == 3.1) のとき "3.1" (d == 3.0) のとき "3" と出力するような t の書き方はありますか。
if文とかで条件指定するんじゃだめなの?
できれば書式文字列のみで解決できた方が いろいろ便利かと思いまして。 「そんな書き方はない」のであれば しかたないので分岐などを使うつもりですが。
753 :
超初心者 :2008/12/07(日) 18:56:15
12月からIT企業に未経験で就職しました。今、javaの勉強を独習しております。 クラスの問題を解いているのですが、参考書を参考に解る範囲でコーディングしていますが なかなか上手くいきません。実は1日悩んで解りませんでした。 超初心者なので少し噛み砕いて説明して頂ける方、教えてください。 問題文はこうです。 『commonパッケージにjava.util.propertiesを継承して、コンストラクタ内で ディレクトリにあるプロパティファイルをロードするConstantPropertiesクラス を作成しなさい。』というものです。 私の理解出来ている範囲で未完成ですがプログラムを作ってみました。 見当違いでしょうけど、宜しくお願いします。 package common; import java.io.*; public class ConstantProperties extends java.util.Properties { InputStream inStream = null; public static ConstantProperties() throws IOException { Properties properties = new ConstantProperties(); try{ inStream = new BufferedInputStream(new FileSteream("property.file")); properties.load(inSteram); if (inStream == null) { throw new IOException(); } String value = Properties.getProperties("key"); } 以下、例外処理。
754 :
デフォルトの名無しさん :2008/12/07(日) 19:04:15
その会社の怖い先輩に聞けよ
>>752 Formatterだかなんだかのクラスを使う
>>753 あなたの理解できる範囲で書いたというプログラムなら
自分が書いたプログラムが何をしようとしてるかぐらい分かるよね?
それを噛み砕いて教えてくださいって話が意味不明なのですが・・
例えば以下のような処理なんかは、こうしたいって意図がないと書けないと思うのですが
new BufferedInputStream(new FileSteream("property.file"));
Serializableは配列も直列化するのは分かりましたが、Object[]の中身も自動で直列化するんですか? class My1 implements Serializable { Object[] f1; Serializable[] f2; } f1, f2 の配列の中身のオブジェクトは両者ともwriteObjectを書かなくても自動で直列化(デープコピー)されるんでしょうか。
758 :
超初心者 :2008/12/07(日) 21:19:37
>>756 もちろんnew BufferedInputStream(new FileSteream("property.file"));は何をしているか分かりますよ。
問題に対しての解答プログラムになっていないのが分からないという事なんですよ。
自分でこういうの書いてみましたという事です。
>>757 はい
中身のオブジェクトがすべてSerializableを実装していればですが
>>753 解りませんでした、というのは、どの点が解らないのか
教えてください、というのは、どの点について教えてほしいのか
パッケージ?
継承?
コンストラクタ?
何を答えて欲しいのか我々はどうすればいいのか質問内容は具体的に
あと、せめてコンパイルの通るコードを
コンパイルエラーが解決できないという話なら、そのエラーメッセージを
書き間違いや下手な省略は解決を難しくするから、
ソースコードやエラーメッセージはなるべく丸ごとコピペするべき
もう全部丸投げするからずばり答えを下さいという話なら宿題スレへ
Object[] f1; なんですが、各要素インスタンスがSerializable実装してないときは例外発生で知らせてくれるんでしょうか?
>>755 質問文に Formatter を使うって書いてあるんだけど
764 :
デフォルトの名無しさん :2008/12/07(日) 22:51:15
>>764 出力の場合は、原理的にバッファなしで改行までそのまま吐き出せるけど
入力の場合は、バッファを用意して改行が来るまで待たなくてはならない。
似てるようで必要とされるものが異なる。
>>761 宿題じゃないんだから丸投げだからって宿題スレに誘導すんなよwww
>>753 継承とはどういうものか、継承するとなにがどうなるのか。
コンストラクタをどう書くのかさえ分かってない。
未経験で入社してまだ一週間なら、こんな質問もまだ許されるだろ。
今のうちに社内の先輩なり同僚なりにガンガン聞いとけ。
そんな余裕も無いような社なら、今後もやってけないだろう。
768 :
デフォルトの名無しさん :2008/12/08(月) 12:12:36
質問です。 JToolBarで作ったツールバーの中身の配置を決めたいときにはどうしたらいいんでしょうか。 検索してもツールバー自体をどこにおくかというものしかでてきませんでした。 ツールバーはEastに配置する予定です。
配置って具体的には? レイアウトマネージャ変えないことにはあんまり大胆な変更は加えられないよ
770 :
デフォルトの名無しさん :2008/12/08(月) 15:45:04
768です。 すいません自己解決?しました。ツールバー使わなくてもよくなりました。 申し訳ありません。
goo辞書のようなWeb上の辞書で一度に複数の単語を引くプログラムを 作りたいのですが、糸口がつかめません。 特定のURLにアクセス→単語検索→単語の説明のみ抽出 のように処理したいのですが、何か参考になるサイト、文献がございましたら 教えてください。
eclipseでpackageする場合はファイルを格納したpackage名と宣言したpackageが一致していないと駄目なんすかね?
774 :
デフォルトの名無しさん :2008/12/08(月) 20:09:01
JAVAで全ての文字を半角から全角に変換させるにはどうすればいいんですか??
>>772 ParserDelegatorを使うサンプルとか
>>774 char型にして区間でマッピングしてやったら?
Javaは配列辺りまで理解して今はクラスの基礎を勉強してる俺が SJC-A受けてみようと思う。 今日、Amazonで参考書買った、 Sun教科書とか言うドッチカト言うと青本では無く紫本と 徹底攻略とか言う通称黒本の二冊をお急ぎ便で頼んだ。 受かると思いますか?…
マルチすんな
>>777 おまえみたいな奴はもし受かっても会社では通用しないな。rubyにしとけw
780 :
デフォルトの名無しさん :2008/12/08(月) 21:34:23
>>779 おまえさ〜。資格ってのは、もってりゃいいってもんじゃないんだよ。
Javaの資格は結構そういっても深い知識が必要な部分もでてくるんだよ。
問題は、そこんところちゃんと理解して一応Javaプログラムの基本は知ってマスっていえることが大事なんだよ。
そんくらいの力があれば資格もいらんし、面接の時に役立つくらいなんだよ。
まず、結論から言って配列まで理解っていう程度じゃ100%受からん。おまけに、受験料が無駄だからやめときな。
それより、地道にちゃんとした力をつけることをお勧めする。
意味不明
いや、そこは笑うところだろ?
資格持ってるからといって期待させといて、実際に仕事任せて出来なかったら逆にうらまれるだけだしな・・・ それよか、英語の文献読むことが多いだろうしtoeic受けたほうがいいよw
784 :
デフォルトの名無しさん :2008/12/08(月) 22:04:12
マイクロスフとWORDマスター(ゴールド)持ってますよっ!!!って言われても、つい笑っちゃうのは俺だけじゃないはず!
PCに接続しているデバイス(加速度センサ)からUDP通信で取得しているデータを リアルタイムにグラフ化したいのですが、javaでそのようなことは可能なのでしょうか? ※イメージとしては、心電図のようなロールする感じのグラフです。 java初めて間もないので、教えていただけるとありがたいです。
できません。
>>785 awtとかアプレットレベルだけど、コンピュータを使って関数グラフを描くって事がわかってないと難しいんじゃない?
グラフ化したいのが目的ならjavaではなく他の専用アプリを使う。
どなたか Java のお仕事くらはい…。
とにかくさ〜
>>777 に受かるか受からないか
受かるとしたらどの位か答えてあげてよ
>>788 最近javaでゲームの環境(描画とかハード的な対応)が整ってきたから
ヒマならjava2dの勉強がてらゲームとかパズル作ってみるといいよ。
3dは高校程度になるけど、2dとかアニメーションなら中学程度(せいぜい連立方程式と2次方程式程度)でおk
仕事だって言ってるだろうが 勉強がてらに作られたゲームをお前買ってくれんのか?
だめだなぁ
こんなスレで仕事を募集する人間のつくったモノなんて、誰も買おうとは思わない
796 :
デフォルトの名無しさん :2008/12/08(月) 23:33:32
>>793 おまえに仕事を頼んだら何されるか分かったもんじゃないなw
もしおまえのバグで顧客が押しかけてきたら、ちゃんと責任とってくれるんだろうな?
>>793 おまえ、なんか調子乗ってるだろ。もうこのスレ来ないでくれないか?おまえみたいのが一番迷惑なんだよ
798 :
デフォルトの名無しさん :2008/12/08(月) 23:41:30
早いところオッサンは引退した方がいいかもなw
800 :
デフォルトの名無しさん :2008/12/08(月) 23:49:10
自演もいらんなw はよ消えろww
>>788 そういえば、ポトペタ開発はどうしたんですか?
資格とか持ってる奴の方が実際は役に立たないのがおおいよね。
数えたことが無いので知らん
テストは満点、適応能力は0点なんて昔からいるだろ。
>>786 そうですか…残念です。
>>787 なるほど、他当たってみます。
>>790 聞いたことはありますね。調べてみます。
↑返信ありがとうございました。
また、java関係で疑問質問等出ましたら書き込むので
そのときはよろしくお願いします。
806 :
デフォルトの名無しさん :2008/12/09(火) 00:08:52
>>793 は、テストは0点、協調性0点ってことですかw
javaの本でどこでも読めるような小さいサイズの リファレンスみたいなのありませんか? 入門の次くらいに読む本ならなんでもおkです。
First Head Javaだっけ?あれは?
809 :
デフォルトの名無しさん :2008/12/09(火) 00:26:22
>>806 どうせ古い知識とか昔の小技とかこだわってるオッサンだろw
もう化石だしほっといていいんじゃね?
森田スクロールは今のコンシューマ開発でも使われている。 とか言ってみるw
>>805 その様子だと、何か書き込むならもっとjavaのことを勉強してからの方がいいですよ。
プログラミングの資格を誇示するやつってろくなやついないから、
>>777 には受かって欲しいなぁ。
古い情報ニ種を持ってて古い一種に英語が分からずに落ちて他何も持ってない俺でも ボソボソとだがやってけるんだから、資格なんて…資格なんてっ! でも資格もってると実際には使えんヤツでも手当て出たりするんだよな…もったいねぇ。
資格というのは手当てのために取るもんだから、持ってるからといって凄腕なわけでない。 トーイックとかもってないと上に上がれない職種も多いでしょ。 警察と同じで一種の昇給試験にちかい。 それよりも仕事もってくる嗅覚(営業)の特技が合った方が先々でやってけるw
情報二種とか懐かしすぎるだろ、持ってる事忘れてたわ 取得当時はまだ高校生になったばかりだったなあ(遠い目
資格なんてとって遊んでる暇があったら、仕事しなさい
法的に有利にならない資格は取っても無駄
818 :
デフォルトの名無しさん :2008/12/09(火) 13:24:01
質問です。
スクリプトとか訳ワカメなんですが
オンラインゲームのFEZで出てる
エガクロックのブログに張り付けたりするパーツを
G15SゲーミングキーボードのLCD画面に入れたいんですが
見てもらえば分かるかもですがエガチャンの動画?ムービー系も出てて
入れるのにはそれをなくさないといけません。
LCDスタジオつかって読み込ませようとしたんですが無理でした
一応スクリプト?みたいなのは貼っておきます
カテ違いの場合は言ってもらえればすぐ出ますので
お願いします
<script type='text/javascript' src='
http://www.fezero.jp/monomousu/clock/egablog.js '></script><script>writeEgaTag('dnxfffQ4owirFR-
MQqWMNH5mDWCzVE4mMxFGmTUOMaRsmtgGH2.fwH4rYRDvJgQiNt.2vLmkJ1BtTmCdHfyKOQQa5w8eBnP
6vAdin0PhS4o_', '', '', '')</script>
よくは知らんが日本語って日本人にも難しいらしいな
Java と JavaScript は違うものだと何度言えば
821 :
デフォルトの名無しさん :2008/12/09(火) 14:02:37
すんません Graphics2DオブジェクトにdrawStringメソッドで文字を載せたいのですが、 反映されるのは半角英数だけ、日本語の全角文字(半角カナも)は、ごとごとく無視されます。 たとえば g2.drawString("abcあいdeうえfおghi",100,100)のようにすると、 アウトプットは 「abcdefghi」 と表示されます。 日本語反映する方法ありましたら教えてください。
フォントの問題では? 日本語のフォントを指定してみたら?
823 :
デフォルトの名無しさん :2008/12/09(火) 16:15:58
>>822 そうでもないようです。
これでやろうとしているのが、iTextによるPDF生成でして。
PdfContentByte型でクリエイトできるGraphics2Dクラスにいろいろ図形などを描画していくことで表示ができる仕組みですが、
drawStringでテキストを置くときだけ、日本語文字が無視されるようです。
特殊な使い方ですが、iTextでの開発経験のある方いらっしゃいませぬか・・・
俺SUGEEE人気だwwww よく釣れたwwwwwwww
ごばく
>>823 >そうでもないようです。
どのような処理を行った結果、そう思うんですか?
俺も iText で文字配置したりしてるけど、別に普通に出力されるねぇ。 前に日本語が表示できなかったか、文字化けしたか忘れたけど、 それはサーバーにフォントを入れたら解決した様な………気がする。 ごめん忘れたww 詳しくは忘れたけど、俺は showTextAligned で表示してるよ。 それでできない?
828 :
デフォルトの名無しさん :2008/12/09(火) 20:21:53
PdfContentByte型
public void mouseDragged(MouseEvent e) { } のe.getButton()(何のボタンが押されているか取得するメソッド)がドラッグ開始時や,している最中,終了時も0(MouseEvent.NOBUTTON)なんだけどこれは仕様? こういうのがやりたいんだけど↓ public void mouseDragged(MouseEvent e) { if (e.getButton() == MouseEvent.MOUSE_CLICKED) { // ドラッグ開始直後の処理 } else if (e.getButton() == MouseEvent.MOUSE_DRAGGED) { // ドラッグ中の処理 } else if (e.getButton() == MouseEvent.MOUSE_CLICKED) { // ドラッグ後の処理 } } ドラッグ開始直後からドラッグ中・ドラッグ後までマウスがどのように動いたかの座標を用いた処理をしたいんだけど(Canvasに描かれた絵をD&Dで移動させたい) mousePressedやmouseReleseでe.getButton()やったらちゃんと値が出力されたんで,ここで座標を取得出来るんだろうけど処理がいろんなところに散らばるのでやりたくない.
>>829 比較対象が間違ってる。
MouseEvent.MOUSE_CLICKEDやMouseEvent.MOUSE_DRAGGEDは、
MouseEvent#getID()と比較すべきもの。
MouseEventの、特にgetButton()のjavadoc嫁。
>mousePressedやmouseReleseでe.getButton()やったらちゃんと値が出力されたんで,...
たまたま、定数値が同じだっただけだろう。
831 :
デフォルトの名無しさん :2008/12/09(火) 23:40:55
すまそ。Web系ってなんじゃらほい?とおもって、JSP/Servletやったら、結構おもしろい。 で、近くのBOOKOFFいって、Web系の本を探してきたら、Web+DBPressっていうのが 105円でうってたから、買ってきた。これに、EJBっていうのがあるからやってみたいんだけど JBossっていうのが最新版とだいぶバージョンが違ってるんだけど、最新版のJBossでも動くかお(´・ω・`)?
おまえなんか105円だろ。我慢しろ。
eclipse のデバッグで引数に c:\*.zip みたいな指定をすると、それにマッチするファイルが 自動的に展開され、 c:\aaaaa.zip みたいな値に変わって引数として渡ってしまいます。 これをそのまま、指定した引数を渡すにはどうすれば良いのでしょうか? また、コマンドラインでも "c:\*.zip" のようにダブルクォートで区切ってやら無いと上手く 引数で渡ってくれません。 わざわざダブルクォートで区切らないで済む方法は無いのでしょうか?
Javaにおいて質問 ソートの基本選択法のメソッドを非再帰的に作ったんだけど、 これって再帰的なメソッドを作れる? もし作れたら、その骨格を教えてください どうにも煮詰まってしまって・・・
選択法の何所を再帰化したいのかよく分からない。 最小値選択のループか、並べ替え部分の実装か。 最小値選択のループは文字単位で繰り返すので、ここを再帰化 したら再帰の深さが文字列長分になって大変だと思う。
Please, I am from spain and i need the java code of Shikaku because I donエt understand Japanish, if is posible in java or englis..? Thanks a lot Fany
>>834 言いっぱなしもあれなので、一応作ってみました。
public static void selectSort(int[] array, int offset){
int minIndex = offset;
for(int i = offset + 1; i < array.length; i++)
if(array[i] < array[minIndex]) minIndex = i;
int min = array[minIndex];
array[minIndex] = array[offset];
array[offset] = min;
if(offset < array.length - 2)
selectSort(array, offset + 1);
}
でも「文字列長分だけ再帰が深くなる」ので、実用的ではありません。
>>836 might be...
Shikaku:quadrangolo
new Rectangle(0, 0, 10, 10)
地球のみんな、オラに元気と知恵をわけてくれ!! 午後から仕事で面接なんだけど、Javaで構築する開発案件で、 「Javaの技術力に自信あるヤツ急募!面接で経験や技術力をアピールしてくんろ!」 て話らしいんだけど、Javaの経験値アピールするにはどんな話がよいと思ふ? って他人に質問するくらい、オラは低レベル(Java使った実務経験3年程度)ですょ。。。 orz
技術力・・・ 俺は逆コンパイラを作れるぜ!とかそういうの?
843 :
デフォルトの名無しさん :2008/12/10(水) 12:06:52
あっ!ごめん。糞してくるからちょっと待っててw
簡単過ぎる質問すいません javaの入門書を見ると↓が必ず書いてありますが public static void main(String[] args) なぜ、String[] argsに必ずしなければならないのかわかりません 簡単に教えてもらえると幸いです
javaコマンドの仕様。 "java Hoge.class 1.0 start"を実行すると、{"1.0", "start"}という 文字列の配列がHogeクラス内のmainメソッドに渡される、そういう ふうにjavaコマンドが作られているからです。
846 :
844 :2008/12/10(水) 18:18:39
>>845 なるほど、javaコマンドの仕様ですか
だいたい、わかりました ありがとうございます
以前質問させてもらった
>>736 です
setRGB()を使ってみようと思ったのですが、これは引数3つですよね?
(x座標、y座標、RGB値)となっているんですが、RGB値はそれぞれ0から255の値になっています。
これはどのように指定したらいいのでしょうか?
わかる方いらっしゃったらよろしくお願いします。
↑に補足で、それぞれ0から255っていうのは、Rが0から255、Gが0から255、Bが0から255で3つの数字があるって意味です。
>>848 16進の数値を表す文字列とやらをintにでもすりゃいいだろ
文字列のフォーマットが明示されてないから変換方法は教えられん
>>849 さん レスありがとうございます
intに変換はできるのですが、そうすると数字が3つになってしまうんです。
これは6個の16進の文字列を1つのintに変換したらいいのですか?
851 :
デフォルトの名無しさん :2008/12/10(水) 18:56:42
Java初心者です。 リフレクションについての質問です。 任意のディレクトリにあるJavaクラスをリフレクションで解析(メソッド名などを取り出す)したいのですが、上手くいきません。 例えば /usr/local/jakarta-tomcat-5.0.28/webapps/sampleapp/HelloWorld.class があり、それを解析するために Class cls = Class.forName("HelloWorld"); のようにしてクラスを取得する必要があるのですが、このクラスのクラスパスをどのようにして指定すればよいか分かりません。 またforNameメソッドにはクラスローダというものを指定できるようですが、クラスローダの使い方(?)もよく分かりません。 どなたか分かる方教えて下さい。よろしくお願いします。
>>852 さん
やり方調べてやってみます。ありがとうございます。
ビット演算というか16進数の計算が分からんなら紙にでも書け。高校レベルだぞ。
>>852 さん
これはRGB3つの数字をそれぞれ2進数に変換して左シフトするということでいいのでしょうか?
聞いてばかりで申し訳ありません ^ ^;
>>847 例えば R = 10 = 0x0a, G = 100 = 0x64, B = 200 = 0xc8 だったら、 0x0a64c8 のように指定する
>>856 さん
ありがとうございます!例で示してくださって助かります
とりあえずこのようにやってみます。
>>855 二進数に直す操作の必要はない、というかintに限らず全ての型はPCの中では2進数。
2進で表記すると、画素データはこうなってる(並び順はもしかするとBGRかもしれないので試してね):
RRRRRRRRGGGGGGGGBBBBBBBB (24bit)。
ここに、それぞれ値を入れたいわけだから、Rは16bit左シフト、Gは8bit、Bはそのまま。
>>856 の例で言えば、(R<<16) + (G<<8) + (B)とする。
BufferedImageの形式がAlpha必要とかだったら、その分も考える。
>>854 も言ってるけど、Javaの前に(並列でもいいけど)論理演算勉強しろ。
動けばいいっつーなら、Stringの段階でくっつけとけば、まぁなんとかなるけどね。
>>858 さん
どうもありがとうございます
確かに論理演算ちょっと勉強しようと思います ^ ^;
おかげで助かりました。ありがとうございました
JDK付属のソースコードって、どうして汚い(カッコの位置がずれたり、インデントが滅茶苦茶等)んですか? 難読化の一種ですか?
エディタのタブの設定じゃないかと言ってみる
難読化の一種です。悪いのはSunです。あなたは間違ってません。
>>860 8タブ、4インデントという一般的でないルールを使ってるから。
おまけに 8タブ、4インデントのルールが徹底されてないみたいで、
一部のソースは 8タブで見るとインデント狂ったりする。
>8タブ、4インデントという一般的でないルールを使ってるから。 一般的だろう。 タブが8じゃないと、いたるところでタブの設定をしなければならなくなってめんどくさい。
一般的にタブ幅とインデント幅は合わせる。 でないと、タブ幅の設定が違う環境で見たときにインデントが狂う。
現代人にはフォーマッタがあるんだから 気に入らなければ使えばいいジャマイカ
>>861 >>862 >>863 ありがとう。
>8タブ、4インデントという一般的でないルールを使ってるから。
このタブ設定に変えてみたら、うまいこといきました。
8タブ、4インデントルールというのは、下記のことでしょうか。
ttp/www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/CodeConventions.doc3.html#262
868 :
デフォルトの名無しさん :2008/12/11(木) 14:28:16
Java EE 5っていう分厚い本、ちょっとEJBかじったくらいの俺でもおkか? 高いから買うのためらってる。身近な情報源がないので、知ってる人、回答オネ。
JDKのソースはsunの昔の規則と最近の規則が混じってるからね。
Object obj = null; ってnullというオブジェクトへの参照なのでしょうか、参照アドレスをnull(0番地)に設定することなのでしょうか?
{"data1","data2","data3"}(Array1) って要素持った配列があったとして {"data3","data1","data2"}(Array2) と要素の順番が入れ替わった配列の内容を Array1と同じ形に素早くソートするにはどうすればいいでしょうか? 今やってる方法だとArray2のdata3がArray1の何番目にあるか探して、一致するものがあったら入れ替えて… みたいな冗長なことしてるせいで、要素数が増えるとえらいことになるorz オマケにArray2はindexを共有してるもう一つのArray3(数値データ郡)まであるから益々ワケワカランorz 誰か知恵を貸してください…
873 :
デフォルトの名無しさん :2008/12/11(木) 21:59:18
引数として配列を使うことは出来ないのでしょうか。 というのもファイルから要素数を読み込むので引数の個数が分かりません。 つまり class sample{ void show(mat[p][q]){ …//行列を表示 } } class sub{ public static void main(String args[]){ …//まず行数pと列数qをファイルから読み込んで以下を配列mat[p][q]に代入 sub mat1=new sub(); mat1.show(mat[p][q]) } } みたいなことがやりたいのですが、どうしてもうまくできません。 分かりにくい説明で申し訳ありませんがよろしくお願いします。
弾を発射しようと public Tama(int x ,int y ,Image img){ this.x = x; this.y = y; this.img = img; } というtamaクラスでコンストラクタを作って、それをメインであるゲームフレームクラスに Tama tama; tm = Toolkit.getDefaultToolkit().getImage(適応する画像); tama = new Tama(-2000,-2000,tm);//画面外に格納 上記の形でtamaクラスを生成し、Enterが押されたら 弾のX,Y共にキャラのX,Yをゲットして そのキャラの位置に弾が描画されるという物を作ったのですが 何故だか弾の画像が出てこず、描画を行ってくれません。 最初は画像の取り込みミスかと思いましたが、確かめたらきちんと画像ファイルへのパスも合っていました。 エンターを押す,キャラの座標をゲットするという処理は通ってるぽいのですが・・・。 ちなみに再描画してみようとrepaint()もやってみましたけど結果変わらずでした。 初歩の初歩だと思いますが、回答して頂ければ幸いです。
try{ 処理A 処理B } catch(){ 処理C } 処理Cで処理Aと処理Bのどちらで例外が発生したのかわかる方法はありますか?
>>875 回答ありがとうございます。
従来のやり方で行き詰ってしまっているので、そちらのサイトを参考にさせてもらいます。
878 :
デフォルトの名無しさん :2008/12/11(木) 22:48:57
>>875 早速ありがとうございます。
コンパイルエラーが出てしまうのですがどうしてでしょうか。
Mat.java:30: シンボルを見つけられません。
シンボル: メソッド show(int,int,int)
場所 : sub の クラス
mat1.show(m,n,mat[p][q]);
^
エラー 1 個
879 :
デフォルトの名無しさん :2008/12/11(木) 22:50:40
>>876 色々。かっこわるいけど一番簡単な方法。
boolean a_finished = false;
try{
処理A
a_finished = true;
処理B
}
catch(){
if(a_finished) { ... }
}
>a_finished 今時こんな命名規則、C++でも非推奨だぞってつっこんでいい?
「Aが終わった」をa_finishedと表現する以外にどうしろと?
>>876 発生する例外の種類で区別できるなら、それで見分ける。
できないなら、スタックトレースの中身を見るくらいしか無い。
あとはロジック(フラグやモード持たせるとか)でカバーするくらいじゃね?
>>872 arraycopy したほうが速いんじゃないだろか
あるいは配列の代わりに Map を使うとか
構造体的な新しいクラスを作るとかすれば
全体の設計を改良できそうかな
>>876 try-catch を2つ書くほうがよいのでは?
886 :
デフォルトの名無しさん :2008/12/12(金) 01:55:01
意味なんじゃ?
isFinishedAとかにしろって話なんじゃないか
接頭辞をつけるなってことかと思った
変数にis付けるの英文的にへんだろ
>>876 try { 処理 A } catch { 処理 C }
try { 処理 B } catch { 処理 C }
ローカル変数ならアンダーバー有りでやってるなぁ 自分は異端か? 正直変数名考えるのがめんどくさくなってローマ字表記使ってたり(ローカル変数は
>>892 そこらへんの論争はコードコンプリートに書いてあるな
894 :
デフォルトの名無しさん :2008/12/12(金) 05:04:16
フイタw
897 :
デフォルトの名無しさん :2008/12/12(金) 11:34:41
チャットソフトでの考え方について教えてください。 サーバ体多数のユーザでのチャットを考えています。 ユーザがサーバに接続したさい、チャットのユーザのリストを得るとします。 そのとき、サーバ側で新しいユーザを得たリストを作り、 全てのユーザに新しく作ったリストを返す、という方法でよいのでしょうか。 また、BufferedImageやIteratorのやり取りをしたいのですが、可能でしょうか。 もし可能でしたら、必要なコマンド、もしくは参考になるようなサイトを 教えてください。
>>872 Array2 のコンパレータを作ればいいんだよね。
HashMap に key として Array1 のデータを入れ、value に順番を入れる。(hm)
で、Comparatorとしてcompare(o1, o2) を hm.get(o2)-hm.get(o1) を返すように実装する。
>>876 try{
try{処理A}catch(e){なんかの処理; throw e;}
try{処理B}catch(e){なんかの処理; throw e;}
}catch{処理C}
>>897 という方法でよいと思うよ
追加分だけ送るという方法もあるけど
BufferedImage自体は渡せないがgetRGBで中身のRGBデータを取り出して渡せばいいかと
Iteratorを渡すというのは・・・どういう状況?
チャットは難しいぜぇ……………? おじょうちゃん、ほんとにいいのかな?
>>901 おじちゃん、あたしがんばってチャットつくるんだ!
そしたらパパかえってくるもん!
>>900 多数のクライアント側で作業をしており、その作業内容は個々の
Iteratorで蓄積しております。
その個々のIteratorを全てのクライアントで再現できれば、と考えて
おりますが、可能でしょうか。
getRGBは試してみます、有難うございます。
903 :
デフォルトの名無しさん :2008/12/12(金) 12:08:13
UrlをString型に変更するプログラムがわかりません(;;)。
905 :
デフォルトの名無しさん :2008/12/12(金) 12:41:31
>>904 おおっー出来ました。ありがとうございました。(;;)
初心者ですいません ボタンを押しても反応がないのですが、どうしたらいいでしょうか。 private JButton getButton; //省略 private JButton getButton(){ getButton = new JButton("ボタン"); getButton.addActionListener(this); return getButton; } Box box = Box.createVerticalBox(); //省略 box.add(getButton()); public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("getButton")){ //何かの処理 } } 何かの処理の部分に何の処理をおいても実行されません。 デバッグのときに反応しないことから、条件にあてはまってないと思います。 どこが間違ってるのでしょうか。
すいません、ちょっと省略しすぎたので、もういちど書き直します
906、907です、すいません。 省略したところをまとめていたらわかりました。 スレ汚しすいませんでした。
改行を消せばいいよ 適切に変数に代入していけばifの{}内の2行は一か所にまとめられるよ 行数は増えるけどそっちの方がいい
>>909 行数少なくするだけなら改行全部取っ払えば・・・いやまぁ冗談だけど。
String[] names = { "アメリカ", "日本", "オーストラリア", "タイ" };
Locale[] locales = { Locale.US, Locale.JPj, Locale.AU, Locale.TH };
int index = Arrays.asList(names).indexOf(args[0]);
if (index == -1) {
System.out.println("This country is not unsupported");
} else {
Currency currency = Currency.getInstance(locales[index]);
System.out.println(args[0]+"通貨 :"+currency.getSymbol());
}
前後省略。
>>909 Map<String,Locale> map;
map.put("アメリカ", Locale.US);
// ...他の国も同様に
Currency currency = Currency.getInstance(map.get(args[0]));
みたいな感じにしては?
913 :
911 :2008/12/12(金) 15:55:00
何気なくそのまま書き写してしまったが、 not unsupported っていうメッセージはおかしい
サポートはされてるけど通貨は表示しないって意味なんだよきっと。 そもそも入力は日本語オンリーなんだから 出力されるメッセージは英語でなくていいじゃないか。 どうでもいい話だがね。
>>909 public static enum locales{
アメリカ("en", "US"), 日本("ja", "JA"), オーストラリア("en", "AU"), タイ("th", "TH");
private Locale locale;
private localeMap(String language, String country) {
this.locale = new Locale(language, country);
}
public Locale getLocale(){return locale;}
}
public static void main(String args[]) {
...
Locale locale = locales.valueOf(args[0]).getLocale();
...
System.out.println(locale.toString() + "通貨:"+currency.getSymbol());
...
動くのか?
not supportedの間違いでした。911は動きました。他のも動いたらどれか使わせてもらいます。 有り難うございました。
宿題スレ行こうね
クローナブル可能……
920 :
デフォルトの名無しさん :2008/12/12(金) 21:32:21
Java一生懸命やってると、Microsoftのexeが作れないのが痛いね。 C#とかC++とかまたやろうとすると、一苦労だし。。 やっぱJ#復活してくれないかな・・
J#は絶対ないわw
Shacho クラス package pack; public class Shacho { public static void main(String[] args) { Shain shain = new Tanto(); shain.standUp(); }} Tantoクラス package pack; public class Tanto implements Shain{ void standUp(){ System.out.println("今起きました"); }} Shainインタフェース package pack; public interface Shain { void standUp(); } と書いてeclipseでコンパイルしたら Exception in thread "main" java.lang.IllegalAccessError: objectBrain.Tanto.standUp()V と怒られました。 TantoクラスのstandUpメソッドをpublicにすると大丈夫;なんですが、聞きたいのは 修飾子なしのメソッドは同一パッケージからなら使えるのではなかったでしょうか?
924 :
923 :2008/12/13(土) 01:38:01
>>923 多分自己解決しました。
インタフェースでのメソッドはかならずpublicになるので、それをインタフェースにする
Tantoクラスではそれより弱いアクセス権が設定できない
でよろしいでしょうか。クラスの継承と同じように。
ttp://www.hellohiro.com/xmlsax.htm サーバから送られてくるXMLデータの解析しようと
URLのプログラム参考にして作ってるのですが,
そんなファイル無いよと怒られます.
String msg;
parser.parse(msg, new Parser());
でString型で渡してるのですが上手くいきません.
受信したXMLデータを解析するにはどのクラス・メソッドを用いればよろしいのでしょうか?
>>925 思い込みを止めてAPIドキュメントをきちんと読め。
SAXParser#parseで第一引数がString型の場合はそれはXMLリソースのURIだ。文字列から読むなら例えば、
parser.parse(new ByteArrayInputStream(msg.getBytes()), handler);
とか。String#getBytesは必要ならXML宣言に合わせて文字セットも指定しないといけない。
クライアント側でStringに変換して保持する必要がないのなら、 サーバから送られてくるXMLデータの読み込みに使っているInputStreamを直接パーサに渡す手もある。 全然違う方法でサーバから受け取っているとかなら別だが。
import java.util.Date; public class genzainotime { public static void main(String main[]) { System.out.println(new Date().toString()); } } と同じ情報をGregorianCalendarを使って表示したいのですが、最初にインスタンスを作った後どう書けばいいですか? import java.util.Calendar; import java.util.GregorianCalendar; public class genzainotime2 { public static void main(String main[]) { GregorianCalendar gc = new GregorianCalendar(); //この後なんて書けばいいですか
System.out.println(gc.getTime());
>>927-928 別のエラーが出ましたが,とりあえずこの問題は回避できそうです.
送信されてきたデータを直接InputStreamに渡す手もあるのですが,
受信後に少々操作しなければならない部分がありtoStringで変換してしまうので,直接は渡さないつもりでした.
変換処理もパーサに掛けてから行うのもいいかもしれません.考えてみます.
正直,ココ嫁系の回答が来ると思ってたので,こんなクリティカルな回答が来るとは思ってませんでした.
ありがとうございました.クリティカル過ぎて鳥肌立ちました^^;
Timerクラスを使って3秒おきにメッセージ「割り込み発生!」を表示させるにはどうしたらいいですか? なんかこんな感じで↓ public static void main(String() args){ //Timerオブジェクト作成 //1秒したら3秒おきにタスクを実行するようスケジュール化 System.out.print("あいうえお"); }
Java Advanced Imagingについて 日本語で詳しく説明しているサイトまたは書籍知りませんか? 探しても英語サイトばかりでorz
>>934 TimerのAPIドキュメントぐらい読んだのか? その断片例すら動かないしな.
import java.util.*;
class Hoge extends TimerTask {
public static void main(String[] args) { new Timer().scheduleAtFixedRate(new Hoge(),1*1000L,3*1000L); }
public void run() { System.out.println("割り込み発生!"); }
}
コードの使い方とかサンプルが欲しいってことだろ 最近そういうサイトも多くなってきたけど
>>938 ググレカスで済んじゃうのが多いよねw
他のことにスキル使ったら?
invokeLaterって何て呼んでる?
>940 2つ以上、読み方あるの?
>933 で?お利口なあなたの答は?
インボケレイテル
インヴォケラタ
ちょっ、なんで、中途半端にローマ字読みとか混じるんだよ。 英語の発音記号を
淫棒空手
>>946 民明書房的には、それで正しいと思うね。
少林寺の僧、邪罵が下半身の淫棒をSwingして組み手を行ったことが、
javaやSwingの名前の由来だとも言われてるからね。
質問です。今入門書で勉強中なのですが、そのなかの例で byte a = 1; byte b = 2; byte c = a * b ; System.out.println(c); この場合、cの変数が型変換されてint型になるのでエラーになるらしいのですが 前後の文章をよんでも全く意味がわかりません。 byte型は-128~127までなら扱えるんですよね? cの計算式の結果は3なのでbyte型のままで表現できるんじゃないんですか? とか30分悩んで質問しようとしたら整数リテラルはint型にみなされるって書いてあった。 文章書いた時間もったいなくて頭に来たから投稿する。反省はしない。
条件コンパイルって if (constantCondition) { // constantCondition が true のコード } else { // constantCondition が false のコード } とかやって, オプティマイザが消去してくれることを期待するしかない?
後で祈る
952 :
デフォルトの名無しさん :2008/12/13(土) 16:13:50
すみません。 こないだ、初給料をもらい(もちろんJavaプログラマです!)うれしくて 板の上にある広告のライブチャットっていうのやってみました。 色々な女の子がいるんですけど、そのうちこっちの画像やマイクも欲しくなって 両方で5000円くらいのを買いました。 そうしたら、すごい人にあったんです!待ちうけ画像は普通なのに つないだらいきなり服をめくり始めてブラの上でパイオツを揉み始め、次第に フロントホックも外して胸が丸見えでしばらく揉んでました。僕はじっとみることしかできず、 胸を裸でしばらく揉んだかとおもうと、今度はパンツの上からまんまんをいじくり始め仕舞いには脱いでしまいました。 じっくり30分見せられました。こんなことが世の中にあるんですか?
誰がこのコピペ考えたんだよ
954 :
デフォルトの名無しさん :2008/12/13(土) 16:35:49
WebsphereVer4の本がたくさん倉庫からでてきた。5冊くらい。 あれから、C#にすぐ移っちゃったから、無駄になった。今、もう一度やりたいんだけど、 体験版の試用期間が3ヶ月しかないお(´・ω・`) どこかでWebsphereVer4を安く手に入れる方法を知っている人いたらおしえてください。
200円で6000円か。 それだけあれば、おれならFF17買うし、ぼったクリだな。w
>>949 java用のプリプロセッサは探せばいくつかあると思う
条件コンパイルだけに特化するなら自分で書いてしまってもいいんじゃないか
>>948 結果は3でなくて2。
byte型の変数a,bの乗算a*bではjavaの文法に従って、被演算子が両方ともint型に変換される。
これはa,bという変数の型が変換されるのでなく、a,bを評価して得られた値の型が変換される。
この変換はa,bの値や乗算結果がbyte型で表現可能かどうかに関わらず一律に行われる。
そして、int型同士の乗算はint型になるのでa*b;はint型。
これをbyte型の変数cに代入する場合、int型からbyte型への型の縮小であるので許されない。
代入したい場合は(byte)(a*b)のようにキャストを使って変換する。
byte a = 1;とbyte b = 2;も1や2がint型の定数式なのでint型からbyte型への型の変換だけど、
c=a*bの場合と異なり、右辺が定数式でかつ左辺の型で表現可能なのでそのままで型縮小ができる。
byte a = (byte)1;と書かなくてもいい。
mapにしたがって要素を並び替え、並び替えられたnum[a]=元々のnum[map[a]]になるように 以下のメソッドを定義せよ。(並び替える際、置き換える必要はなく、メモリはふんだんに使ってOK) わかる方、コードご教示願いします。 public class arrayTest { private double[] num; arrayTest(double a, double b, double c...., double z){ num = new double[a]; num = new double[b]; ... } public void permute(int[] map){ //ココになんか書く } public static void main(String[] args) { arrayTest test = new arrayTest(1.3, 4.5, 19.8, 34.3, 0.4, ..); }
>>938 JAIの本1冊しかありませんでした。買ったけど後悔してるorz。
170ページで1900円。
ほとんどサンプルソースとアプレットの画面でページが埋まってる。
JAVA入門の章(40ページ)とかでデータ型の説明とか基本的なものが入ってる。
JAIについての説明なんてほとんど皆無で、
画像の拡大・縮小やグレースケール化などのサンプルがそのまんま載ってる感じ。
良いサイトないかなぁorz..
StringTokenizerって何て読んでる? 客先言ったら「ストリングトキニザー」って言われて何のこっちゃ?と思ったんだが。 俺はすとりんぐとーかないざーだと思ってたんだがな
>>961 Tokenでトークンだから、izerくっつけてトークナイザーと読んでる
ストリングトークナイザーだなあ
すこし話はずれるけど data = ダータ beta = ビータ schedule = シェジュール と読む人もいた。
CDトレイを開閉するやりかたはありますか?
どなたかスレ立てをお願いできないでしょうか。
JavaFX Part1
--------------------------------------------
新世代WORA環境を実現するJavaFXを語るスレです。
2008年12月4日、ついにJavaFX1.0がリリースされました。
JavaFX Scriptだけでなく、プラットフォームとしても要注目です。
JavaFX 公式
http://www.javafx.com/
>>964 そういや、dataが複数形だって知った時にはびっくりしたなぁ。
datumなんて見聞きした事ない。
>>960 >>ほとんどサンプルソースとアプレットの画面でページが埋まってる。
>>JAVA入門の章(40ページ)とかでデータ型の説明とか基本的なものが入ってる。
>>JAIについての説明なんてほとんど皆無で、
なんだか痛そうだが、よく「〜入門」、「はじめての〜」、「3日でわかる〜」系でありがち。
ただ、内容は知らないと書いておいたので。
というか手にとって読めるんだったら、そもそも買わなければいいんじゃないのと思うけど。
まぁ、覚悟して、英語サイトを読むのが一番だと思う。
datumって高校で習うぞ
>>971 なんか英語スレになってるけど、それホントか?嘘つくな。
俺も datum 習ったぞ。でも単数形とか複数形とか気にしないで data しか使わん。
死ねよお前
質問があります。 パネルのうえに赤いラベル、青いラベル、赤いボタン、青いボタンを 作ったとして、赤いものだけ透過させる方法を教えてください。
いくら頑張ったところで、おまえなんか2chにいる低脳荒らしとあんまり差はないな
荒れてるようですので次スレでまた質問したいと思います。すいませんでした。
次スレなんてねえよ、おまえに答えを言っても理解できそうにないしな
ということにしたいんですね
2chなんか馴れ合いが目的だし、なんか自慢したいなら・・・普通はブログでやるよな。
981 :
デフォルトの名無しさん :2008/12/14(日) 14:16:46
JavaEE1.3の頃のチュートリアルがあるからやりたいんだけど、 J2EE1.3でやることになってるんだけど、このバージョンは日本語版追補が必要で 当時インスコした覚えがあるんだ。でもいまはない(´・ω・`) J2EE1.4でも開発できるかな?EJBがどういうものか理解できそうだからどうしても 当時の本でやりたいんだ(´・ω・`)
982 :
デフォルトの名無しさん :2008/12/14(日) 15:35:33
おまえじゃ無理w
その本を売って新しい本を買う足しにでもしたほうがまし
そもそも古いJavaEE覚えて何か良いことあるのか? メンテが必要なシステムがあって泣く泣く、ならまだしも。 EJB2じゃだめだと言われてEJB3になったりしてるわけだし。 理由もなくMicrosoft BASIC(≠VB)を覚えようとしているのと 変わらんように見える……。
985 :
981 :2008/12/14(日) 17:52:23
>>982 そんなこといわないでください><;
>>983 この本は割合読みやすいからすきなんです><;
>>984 私は古い知識が無駄になるというより、古い知識を前提に新しい知識を覚えて生きたいタイプなのです><;
で、C#もだいぶやったので、またJavaをやれば余計生き残りの力が付くと思っています><;
ですから、EJB2.0をやってから、EJB3をやりたいのです。
みなさん、JavaEE5(1.5)になってからはだいぶ変わったようなのですが、
J2EE1.3→1.4の頃はそう取り上げられなかったように思います。私の愛読紙JavaWorldやWebDB+Press
でもそれほど話題にならなかったです。ですから、J2EE1.4でJ2EE1.3の本のアプリが組めるなら是非やりたいのです。
できるかできないかだけでも、まじめにおしえてくださいませんか?よろしくお願いします。
986 :
981 :2008/12/14(日) 17:53:23
ちなみに、私は超底辺の半分ブラック企業にしか在籍できないため 周りにこういうことを聞けるエキスパートの人がいません。ここだけが頼りなんです。 本当によろしくお願いします。
>まじめにおしえてくださいませんか? まじめに調べてくださいませんか?本当によろしくお願いします。
そんなに簡単に疑似餌に喰い付くなよと思うんだが
思ったから何なの?
991 :
981 :2008/12/14(日) 18:24:03
まじめに答える気の無いごみ屑回答者は来なくていいよ。早く区そして死んだ方がよいよ。
悔しかったの?顔真っ赤だよ
>>991 だったらまじめに自分で調べてみろよw
屑質問者は来なくていいよ
早く死んだほうがいいよwww
994 :
981 :2008/12/14(日) 18:42:08
pupupu 屑度も必死だなwww プギャー(^д^)m9
EJBはゴミすぎる
996 :
981 :2008/12/14(日) 18:49:56
わたしのためにあらそわないで><;
あんなもん勉強するだけ無駄というか意味ないというか むしろあんな知識を身につけないほうが良いというか
定期的に荒れるな
どうせ鼻糞野郎だろ。相手にするな
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。