【初心者】Java質問・相談スレッド121【歓迎】 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/11/17 01:09:54
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    URLリンク(pc11.2ch.net)
Webプログラミング URLリンク(pc11.2ch.net)
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 URLリンク(www.wikiroom.com)
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド120【歓迎】
スレリンク(tech板)

次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
URLリンク(www.wikiroom.com)

2:1
08/11/17 01:10:36
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 7
スレリンク(tech板)l50
■ SWT は --
Java 高速GUI SWT 3
スレリンク(tech板)l50

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part18
スレリンク(tech板)l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 8
スレリンク(tech板)l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 66 ★★
スレリンク(tech板)l50

**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
URLリンク(sdc.sun.co.jp)
■ J2SE 5.0 (1.5.0)
URLリンク(java.sun.com)
■ Java SE 6
URLリンク(java.sun.com)

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
URLリンク(www.java.com)

3:デフォルトの名無しさん
08/11/17 08:04:28
>>1
おは
おつ

4:はんしょう
08/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という拡張子ファイルはソースファイルと理解してよいでしょうか?



5:デフォルトの名無しさん
08/11/17 10:52:33
URLリンク(www.ibm.com)

ここを見る通り
null 代入はすでに過去のものどころかよくないみたいですね。
実際みなさんどうしてます?

6:デフォルトの名無しさん
08/11/17 10:58:31
>>4
jbuilder2005 は捨てて netbeans をオススメします。

1. rebuild→すべてのソースのコンパイル make→変更されたファイルのみコンパイル
2. VMにPATHを通してjbuilderでできたclassesディレクトリで実行してみましょう。java実行の仕方は調べてね。
3. うん、ソースファイル
4. 自分で検索を覚えないと、一生まともなプログラムは組めません

7:デフォルトの名無しさん
08/11/17 12:27:56
>>5
そこを見る通り
必要な場面では必要
不要な場面では不要

8:デフォルトの名無しさん
08/11/17 12:36:02
抽象クラスAのサブクラスがクラスB,クラスCであるときに、Bのオブジェクトを
Cのオブジェクトに変換する方法を教えてください。

9:デフォルトの名無しさん
08/11/17 12:51:02
>>8
無理。class B extends A を class C extends A には変換できない。

詳細がわかれば他の方法で逃げられるかもしれないけど。

10:デフォルトの名無しさん
08/11/17 12:58:50
Bのオブジェクトを元に初期化するコンストラクタをCに作ればいいんじゃね

11:デフォルトの名無しさん
08/11/17 13:14:22
>>10
よろしければもう少し詳しくお願いできますか。。。?java初心者でよくわからないので。。

12:はんしょう
08/11/17 13:47:19
>>6  ありがとうございます
> 2. VMにPATHを通してjbuilderでできたclassesディレクトリで実行してみましょう。java実行の仕方は調べてね。
VMはVirtualMachine? ホルダーClassesはあります。さて どうするか
もう一歩助言をおねがいします。 
確かに検索の仕方も JAVA 実行でしか
思いつかなくています

13:りょう
08/11/17 16:21:55
<input type="button" class="button" value="編集" onClick="editEmployeeInfo"(<bean:write name="searchList" property="employee_id"/>)
このonclickの所で、employeeId(社員ID)が送られるようになっているらしいんですが、
これをもとに自分のページで社員情報を取得するにはどうすればいいでしょうか?
断片的ですいません

14:デフォルトの名無しさん
08/11/17 16:52:02
annotationが全然理解できないんですが、お勧めサイトないっすか?


15:デフォルトの名無しさん
08/11/17 17:22:56
〜 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());

これであなたもアノテーションマスター!

16:デフォルトの名無しさん
08/11/17 17:43:42
パネルに描画した図形をDeleteキーで消したいのですが、KeyListenerにフォーカスが当たってくれません。
getFocusOwner()を使ったところ、常にボタンにフォーカスが当たっている事が分かりました。
これを描画パネルに当てるには、どのようにすれば良いのでしょうか。

17:デフォルトの名無しさん
08/11/17 18:10:18
panel.setFocusable(true);
panel.requestFocus();

18:14
08/11/17 19:42:55

>>15
どうもです。
しかし、いまいち暗黙の部分が多くなって分かりづらいし、利点がよくわからないんですが。。


19:デフォルトの名無しさん
08/11/17 19:59:12
よくわからないものは必要になるまで放っておくのもひとつの手だよね。
必要になったら自然と理解できる

20:デフォルトの名無しさん
08/11/17 20:08:56
>>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:デフォルトの名無しさん
08/11/17 20:36:47
Javaをゼロから勉強したいのですが、良い本教えてもらえませんか?
プログラミング経験はないです。
お願いします。

22:デフォルトの名無しさん
08/11/17 20:39:36
>>21
デラべっぴん

23:デフォルトの名無しさん
08/11/17 21:08:12
来春から念願だったソフトウェア関連の会社に就職が決まりました。
JAVA言語をメインにソフト開発をしてるそうなんですが
自分自身のスキルからいって仕事についていけるかとても
心配です。今から勉強でもしておかないととても不安なので
実戦に役立つ書籍があれば紹介してくれませんか?ちなみに
SJC−A程度の知識はあります。

24:デフォルトの名無しさん
08/11/17 21:35:32
>>15
リフレクションですか。
ちょっと勉強してみるっす。thx.

25:16
08/11/17 22:03:57
>>17
出来ました。
有難うございます。

26:りょう
08/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:デフォルトの名無しさん
08/11/17 23:39:27
>>26
意地悪に響くかも知れないが、「Java」と「JavaScript」の違いは把握してる?


28:デフォルトの名無しさん
08/11/18 02:16:39
Fileクラスの

listFiles() とlistFiles(FileFilter filter) を使ってみたんだけど。

listFiles() だとマイコンピュータとか、マイネットワークを取得できるのに。
listFiles(FileFilter filter) だと取得できないんだ。

FileFilterの中で、自分が作ったソースがはじいてるのかな?とも思ったんだけど、
FileFilter#accept(File pathname)に、マイコンピュータとかマイネットワークが入ってこないんだ。
ふしぎふしぎ

listFiles(FileFilter filter)でマイコンピュータとかマイネットワークを取得できる方法誰か知らないっすかね?

29:デフォルトの名無しさん
08/11/18 04:32:41
>>28
デスクトップ用の情報が取れる ShellFolder extends File ってのがあって、
それだと listFiles() は上書きされてるからマイコンピュータとか取れるはず。
でも ShellFolder でも listFiles(FileFilter) は上書きされないから
通常の File 使ったときと同じでマイコンピュータとかは取れない。

30:デフォルトの名無しさん
08/11/18 08:16:53
>>29
なるほど、Fileだと思って使ってたオブジェクトはShellFolderだったのか。

ありがとう、諦めて自分でいらない物はじくことにします。

31:デフォルトの名無しさん
08/11/18 10:54:53
URLリンク(codezine.jp)

↑のプログラムを実行するとウィンドウがでてアプレットが開始されました。
っとでるんですが、何も実行されません。
同じフォルダにFaces、Temp画像を入れているのですがどうすればいいでしょうか?

32:31
08/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)

よく原因がわからないので教えてくれませんか?

33:デフォルトの名無しさん
08/11/18 12:00:40
画像を読み込めてないんじゃね

34:デフォルトの名無しさん
08/11/18 12:01:22
>>23
就職オメ
会社の方針も様々だろうから、
読んで安心できるような書籍は一概には言えないんじゃないだろうか
来春からなら時間ありまくりだから、
自分でプログラムを組みながら学ぶのが一番。
いくら本を読んでも実際に身に付いてなきゃ意味が無いのもあるし、
作ってる課程で、行き詰まっても自力で調べる力が身に付くから。
多少知識が無くても自力で調べられれば怖いもの無し

と、相談スレにこんなことを書いてみる

35:デフォルトの名無しさん
08/11/18 12:15:23
まずは足腰鍛えるのと同じく基礎固めが大事だからなぁ。初心者用のCの本を軽く一通り読んどいた方がいいかも

36:デフォルトの名無しさん
08/11/18 14:15:44
>>23
とりあえず2ちゃんブラウザを作ってみればいいよ。

37:デフォルトの名無しさん
08/11/18 17:08:03
ブラウザかどうかはともかく、目標があるのは良い事

38:デフォルトの名無しさん
08/11/18 21:05:36
このパッケージを使うとこんなことが出来るインデックスは結構あるんですが
こんなことをしたい場合に、このパッケージが使えるインデックスってどっかに
まとまってませんか?

よその言語から入ってきたとき
「何をどう使っていいかようわからん」
状態を解消する気はないんでしょうか? > Java コミュニティ

# つか, OO 言語全体的にそんな気がするが………


39:デフォルトの名無しさん
08/11/18 21:59:51
ググればいいじゃない

英語で

40:デフォルトの名無しさん
08/11/18 22:04:56
むしろOOではない言語だとそんな気がしない理由を書いてもらえると
具体的にどんなものを求めているのか伝わりやすいのでは。

41:28
08/11/18 22:16:11
>よその言語から入ってきたとき
>「何をどう使っていいかようわからん」

こうならない言語ってあるんですかと、逆に聞きたいです。

しかし>>29はすごいなぁ、FileSystemView#getRoots()で、
File[]を貰って何も疑問に思わないで使ってたのが恥ずかしくなったでござる。

42:デフォルトの名無しさん
08/11/18 22:20:16
ただいまサーブレットの勉強をしています

perform()メソッドがよくわかりません
ご教授お願いします

43:>>42
08/11/18 22:25:25
すいません
perform()メソッドは参考書独自のメソッドでした('A`)

44:デフォルトの名無しさん
08/11/18 22:49:32
performメソッドなんて典型的なダメ設計(もしくは命名)じゃね?

45:デフォルトの名無しさん
08/11/19 00:42:59
>>38
GOF本とかのデザインパターン関連書籍がいいんじゃないか?

46:デフォルトの名無しさん
08/11/19 05:39:03
>>40
C とかアセンブラだと、ほとんど何もないので何かしようと思った場合、それ
に見合ったライブラリを作るなり、どっかから引っ張ってくることになるわけ
だが、その過程で双方向のインデックスができるんだわ

最近の OO 言語の場合、最初から結構膨大な量のライブラリがくっついて来る
ので、何かをしたいと思ったときに何かに対応するライブラリはどれって話に
なる。

つか、使い続けてればそのうち出来てくるんだろうけど、俺の場合、OO言語使
う時って、たいてい消化作業に呼び出された場合なんでインデックスできるま
での期間付き合い続けないってのが原因なんだろうけど………

man -k だとか apropos に相当する機能が "JDK(TM) ? ドキュメント" に付
いてれば問題ないような気がする


47:デフォルトの名無しさん
08/11/19 09:01:38
javadoc読み込んでindexでもabstractでも何でも好きなもん生成するソフト作ればいいんじゃね?

48:デフォルトの名無しさん
08/11/19 09:24:17
>>46
たとえば "site:URLリンク(java.sun.com) hogehoge" でぐぐるとか、
google とかサイト内検索できるところで
公式サイトに置いてある javadoc に検索かけるんじゃだめなん?

49:デフォルトの名無しさん
08/11/19 10:11:38
>>47
火消しに行ってそんなもんかまってたら絞め殺されますぜ

>>48
> 公式サイトに置いてある javadoc に検索かけるんじゃだめなん?
作業現場が隔離されている状況だとそうもいえんだろ


50:デフォルトの名無しさん
08/11/19 10:18:11
インデックスできるまでとは何の事?
もしかしてstrcut構造体のあれとかなのか?w

51:デフォルトの名無しさん
08/11/19 10:59:53
>Java質問・相談スレッド119_920
>CSS Validator(URLリンク(jigsaw.w3.org))をAntで
>コンパイルしたいのですが、antを実行すると以下のようなエラーになってしまいます。

 古い話ですみません。
 ダウンロードのページにある以外に、

 commons-collections-3.2.1.jar
 velocity-1.5.jar

をダウンロードしたら、とりあえずANTは通りました。
 でも、実行すると、mainが見つからないとか言い出すのですが。 

52:デフォルトの名無しさん
08/11/19 12:27:47
URLリンク(www.ne.jp)
ここのサイトでundoの勉強をしてるのですが
自分のテキストエデターに組み込んでもundoされないのです
ほぼソースを丸写ししてるのですが
このページに載っていること意外で何か忘れがちな事ってありますか?

53:デフォルトの名無しさん
08/11/19 12:38:41
>>52
「ほぼ」って書いているので、そこが原因だろうな。

54:52
08/11/19 12:46:40
JTextFieldをJTextPaneにしているのがいけないのですかね
もうちょい試行錯誤してみます

55:デフォルトの名無しさん
08/11/19 16:15:47
初心者から中級者の間だけど、サンプルソース打ちながらやってみて面白い本をおしえて。
サーバサイドJavaは無しで・・

56:デフォルトの名無しさん
08/11/19 16:37:36
ある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ではなしのつぶてでした
どのメソッドを使えばいいのか教えて下さい

57:デフォルトの名無しさん
08/11/19 19:22:56
>>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
08/11/19 19:43:11
>>57
すっかり言及を忘れてましたが、Bはpngではなくバイナリファイルなんです
>>56プログラムのObjectを何らかの形に変換し吐き出すと思われるのですが、
そこで使用するのがImageIOらしいです

とりあえずおとなしく直に聞くことにします
お手数おかけしました


59:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/19 23:32:14
質問です。

HttpServletRequest#getHeader("Cookie")を使用すると
たまーにnullが帰ってくることがあるんですが、どうしてなんでしょうか?

61:デフォルトの名無しさん
08/11/19 23:44:33
凄く初心者な質問をさせてください。
関数ってどういう基準で分割していくのが良いとか基準があるのでしょうか?

自分で書いてたコードなんですが初期化処理Init()の中で更に
ボタンの初期化InitButton()、メニューの初期化InitMenu()とか、
機能毎ってよりコンパクトにまとめるのを目的に小さくするのって
(しかもここでしか絶対使われない)どうなんだろうって気になりました。

62:デフォルトの名無しさん
08/11/19 23:54:02
>>61
Javaに限らず関数分けの目的は2つあります。
1. 複数箇所で使うまとまりを関数化する。
2. ひとつの関数の中のコードが長すぎるので関数化して分割しソースを見やすくする。

61さんの場合は後者ですね。
以前の1メソッド50ステップまでというルールのプロジェクトがありました。
ちなみに、私も61さん同様 2. の分け方はあまり好きではありません。コメントで区分けしておけばいいだけですし。


63:デフォルトの名無しさん
08/11/20 00:08:28
複数個所に同じような処理があっても,それらが複数のクラスにまたがってるときは
関数にまとめるのが必ずしも良いとは言えない
取り回しがしづらくなる

64:デフォルトの名無しさん
08/11/20 01:10:58
入力フォームを作成する

1.氏名を表示させる
2.男性、女性をreslt.phpで表示させる
男性の場合青、女性の場合赤で表示させること

3.趣味を表示させる
読書、ゲーム、映画、旅行、スポーツ 
チェックした項目をreslt.phpで複数表示させる事

チェックした項目には
あなたの趣味は○○と○○ですね。と表示させる

読書、ゲーム、映画、2点以上 のみチェックした場合、「たまには体を動かしましょう」
スポーツ、旅行の 2点チェックした場合 「体を動かすのは良いことです。」
全てチェックを入れた場合には、(5点)「たくさんの趣味がありますね。」
と表示させる

3ができません
助けてください><
URLリンク(www9.uploader.jp)
1,2はできました
C言語が間違ってるんだと思います

友達いないんだ
明日俺だけ出来ないとか担ったらいやなんだ
お願いですから助けて下し亜><

65:デフォルトの名無しさん
08/11/20 03:07:21
>>61
適切な名前がつけられる場合は分割する。
不適切な分割が既にされている場合、あるいは、
昔は適切だったが、今は不適切になってしまった場合は、
一度展開してから整理して分割する。

どのように分割すればいいか良く分からないときは、放置。
事が進むにつれ、だんだん分かってくるかもしれないし、
そもそも何をもってして適切かが変化するかもしれない。

変更後のテストは必須

66:デフォルトの名無しさん
08/11/20 05:57:30
Serializableなんですが、
private void writeObject(ObjectOutputStream stream) throws IOException
を特に定義しなかったとき、フィールドに配列があっても大丈夫なんでしょうか。
それとObject[]とかだとどうなるんでしょうか。

67:デフォルトの名無しさん
08/11/20 08:27:50
GUIの時は特にブロックで分けてるなぁ

68:はんしょう
08/11/20 08:46:29
これまで Jbuilder2005でJPXを開いて、実行させると描画していたのですが
DOCモードでJAVA を動かした(と言ってもなにも描画しないで元のPromptになった)
後、再度Jbuliderで実行させようとすると
-- Java プロセスを起動中に IOException が送出されました -
とエラーになったのです 元のように描画実行するようにするにはどうしたら
良いでしょうか?

69:デフォルトの名無しさん
08/11/20 09:46:15
アプレットでダブルバッファリングを試みているのですが、
createImage(int,int)のシンボルが見つからないという警告が出ます。
importでComponentも読み込んだのですが認識してくれません。

何か他のクラスのcreateImage()と衝突などしているのでしょうか?
わかるかたいらっしゃたらよろしくお願いします。

70:デフォルトの名無しさん
08/11/20 10:20:12
>>64
Cの宿題なら該当スレへ行け

71:デフォルトの名無しさん
08/11/20 10:37:31
>>62
コメント書けばいいとかで巨大なメソッド作るなよ。
読むときどこにそのコメントがあるかも分からなくなるんだからな。
コメントに”○×処理”とか書くぐらいなら、コメントをそのままメソッド名にしろよ。

メソッドを分けるのに苦労するなら、読み物がどう分かれているかを参考にしてみたらどうだ。
最近のプログラミングは、多少の速度アップを求めてソースを汚くするより
人間が読みやすいようにするのが良いという流れもあるだろ。

72:デフォルトの名無しさん
08/11/20 11:28:40
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だけ表示させようと考えてます。
コンボボックスって表示させるデータ以外のデータも保持できますか?

73:デフォルトの名無しさん
08/11/20 11:30:42
>>60
ブラウザがクッキーを無効にしてるんじゃね
それかまだクッキーを設定してない初回アクセス時とか

74:デフォルトの名無しさん
08/11/20 11:34:55
>>66
大丈夫です
なぜなら配列は Serializable です
Object[] は中身がすべて Serializable または null なら大丈夫です
Serializable でないオブジェクトが混じっている場合は NoSerializableException が投げられます

75:デフォルトの名無しさん
08/11/20 11:41:36
>>69
createImageはComponentのメソッドだから、自クラスがComponentのサブクラスなら
this.createImage(...) あるいは this を省略して単に createImage(...) と書けるが、
そうでないなら対象のコンポーネントを指定する必要があるよ

76:デフォルトの名無しさん
08/11/20 11:49:57
>>72
>コンボボックスって表示させるデータ以外のデータも保持できますか?

そもそも JComboBox は任意のデータを保持できます
addItem 等の引数が String じゃなく Object になってるでしょう
項目をどう表示するかを決めるのは ListCellRenderer であり、JComboBox#setRenderer で設定できます
デフォルトでは単に toString した文字列を表示するだけですが、自分で好きなレンダラを書けばよいです

ところでGUI関連はSwingスレの方がよいかも

77:デフォルトの名無しさん
08/11/20 11:57:17
それで安心しました。rmiもあるみたいですけど、
Serializable はwebアプリのようなデータの転送で使っても実用に得るのでしょうか?

クライアントの設定情報をeventと交えて直列化して、相互に転送するときとかですが、
例えば検索ボタンを押して3秒ぐらいまでなら実用と考えていますが実用的でしょうか。
それとも、上のwebアプリの例えだとメソッド呼び出しじゃないんですが、rmiとかの方がよいのでしょうか。


78:デフォルトの名無しさん
08/11/20 11:59:22
-5.6 % 3.3
5.6 % -3.3
5.6 % 3.3
-5.6 % -3.3

の答えがそれぞれ
-2.3
2.3
2.3
-2.3
なんですが、これをどなたか解説していただけないですか

79:デフォルトの名無しさん
08/11/20 12:02:02
>>76
ありがとうございます。
setRendererでレンダリングを設定ができるんですね。

>ところでGUI関連はSwingスレの方がよいかも
そうですねスレ違いでしたね。ご迷惑をおかけしました。

80:デフォルトの名無しさん
08/11/20 12:14:44
>>78
Java言語仕様書に書いてある通りです
つまり、そういう仕様です
URLリンク(java.sun.com)
> the result of the remainder operation can be negative only if the dividend is negative
(訳) 被除数が負の場合に限り結果が負になります

81:デフォルトの名無しさん
08/11/20 12:19:13
>>77
RMI も中では Serializable 使ってるから同じじゃない?

82:デフォルトの名無しさん
08/11/20 12:28:09
>>80
どうもです

83:デフォルトの名無しさん
08/11/20 13:27:28
[aaaa]ssssssという文字列から
aaaaを取り出したいんですがsubStringを使おうにも、[aaaa]の長さは変動しますので
subStringが使えません。なにかいい方法は無いでしょうか?

84:デフォルトの名無しさん
08/11/20 13:34:07
>>83
String s = "[aaaa]ssssss";
int start = s.indexOf('[') + 1;
int end = s.indexOf(']');
String r = s.substring(start, end);
System.out.println(r);

85:デフォルトの名無しさん
08/11/20 14:18:12
>>84
たすかりました

86:デフォルトの名無しさん
08/11/20 14:37:05
>>83
この機に、java.util.regex 辺りをマスターするんだ

87:デフォルトの名無しさん
08/11/20 14:43:44
swingスレッドがないのでここでお聞きしますが、
guiでのpaintやrepaintはシングルスレッド設計が多いのですがこれはどうしてなのでしょうか?
プロパティに反応してrepaintするときなど、シングルスレッドのままだと順番まちのためpaintがされずに、
ボタンが押されっぱなしのような固まったような状態が0.5秒ぐらいなってしまいこっとの方が大問題だと思います。
似たような現象は今でもfireforxとかでたまにあります。
それでもguiをマルチスレッドにしないのはなにかほかにデメリットがあるのでしょうか。

88:デフォルトの名無しさん
08/11/20 15:30:41
>>87
URLリンク(java.sun.com)
の最後あたりに書いてある

89:デフォルトの名無しさん
08/11/20 15:59:34
個人的には、あらゆるイベント処理を漏らさず synchronized でガードしなければならないことを考えると、今のままでいい

90:デフォルトの名無しさん
08/11/20 16:59:54
>こっちの方が大問題
何と比べて大問題なんだよ。
例えばデッドロックよりも大問題なのか?


91:デフォルトの名無しさん
08/11/20 17:21:56
そのリンクですけど、guiプログラマーにはthreadの深い理解は不要だとかオーバーヘッドどうとかですけど、
プログラム処理でこれといったデメリットではないと思いますがこの程度が原因でマルチスレッドを捨ててるんですか?

これからguiやデスクトップアプリは2dやnetなどの通信などどんどん大規模になっていって、ほとんどの処理にスレッドの同期・非同期処理が必要になるとおもうのですが、
それでもシングルスレッドなのは何か他に理由があるのでしょうか?

jdkがいくら進化してもシングルスレッドのままだと昔のシングルタスクOSの限界と同じかとおもいます。
デッドロックとかcuiでもあるわけでなくなるわけではないし、guiとなにか関係あるんですか。
仮に全てのメソッドをsynchronizedにしても今のCPUなら全く遅くならないんですけど、それよりも先のようにシングルスレッドの処理待ちのほうが大問題だと思いませんか?

92:デフォルトの名無しさん
08/11/20 17:36:40
synchronized万能主義者か
synchronizedで囲うだけでマルチスレッド化による問題が解決すると思っているようなら勉強し直すことだ
フレームワークがシングルスレッドであることによるシンプルさを捨てさせてまで
マルチスレッドヘルに飛び込まないといけないほど反応時間を気にしないといけないのなら
自分が作ろうとしているものの設計の方をこそ見直すべきだ

93:デフォルトの名無しさん
08/11/20 17:40:27
DOMに関する質問です。
あるDTDにvalidなXML文書からDOM木を作成するとします。
普通にXML文書をparseすると文章中の改行やタブもTEXTノード
としてDOM木の中に表現されますよね(規格通り)。

こういった改行等のTEXTノードは削除して、DTD中に定義された
CDATAやPCDATAに対応するTEXTノードのみを残す、小粋な
お掃除方法は無いでしょうか?

94:デフォルトの名無しさん
08/11/20 17:41:46
GUIってユーザープログラムからだけでなく、OSからの処理も受け付けないといけないんだから、
つーかOSの一部の機能を借りている状態で実行してるんだから、
イベントディスパッチがシングルスレッドってのは納得しやすいと思うんだけど。

別にマルチで自前で書いてもスレッドセーフかどうかさえ気をつければ良いんじゃないの?

95:デフォルトの名無しさん
08/11/20 17:44:07
>>91
通信のような処理はGUIと無関係なんだから単純にGUIと別のスレッドでやればよかろう
そのことでGUIをマルチスレッドにする必要はないと思うが

仮にこれからそれらが必要になるとしても、swingが作られたのは10年も前なわけだが、
10年後の未来を予測して設計しておくべきだったと? 設計当時の理由はそのリンク先の通りで、
残念ながら(?) 今後来るかもしれないメニーコア時代のことまで考慮されて作られてはいなかった

synchronizedで遅くなることよりも、synchronizedし忘れてバグったり、デッドロック起きたりする方が俺は怖い
それに単純にすべてsynchronizedするんならシングルスレッドと同じじゃまいか
synchronizedかける場所を慎重に取捨選択するのはなかなか面倒な作業だと思うが

96:デフォルトの名無しさん
08/11/20 17:53:15
最近設計されたGUIでマルチスレッドなものってなにがあるっけ?SubArctic ?
日本語情報が少なすぎて全く使ってないからよくわからん。

97:デフォルトの名無しさん
08/11/20 18:51:20
JTableってデータを更新する際初期化とか必要ですか?
[1111]
[2222]
[3333]
[4444]
こんな感じでデータが入ってて
そこからsetModelでデータを上書きしたら
[5555]
[]
[7777]
[]
見たいな感じになります。



98:デフォルトの名無しさん
08/11/20 19:10:44
>>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); }});
}}

99:デフォルトの名無しさん
08/11/20 19:11:48
GUIツールキットの多くがシングルスレッドなのは、伝統だと思います。
非同期にやってくるイベントをキューにためて、後はイベントループを
回して順繰りに処理していく方法は一つの成功した設計モデルとして
とても長い伝統と実績があります。

ソースが公開されているGUIツールキットを幾つかバらしてみれば、
多くの場合はイベントループ等の根っこの設計がどれもよく似通って
いる事が分かるかと思います。
また他の部品の振る舞いをあまり意識せずに個々の部品にイベント
ハンドラを書いてイベントを投げるだけでGUIの振る舞いが定義出来
るのも、イベントがシーケンシャルに処理される事を仮定出来る点が
大きいと思います。
そういう意味では、ツールキットを利用するプログラマに「楽をさせる」
良い設計ともいえます。

時代遅れとの見方もありますが、むしろこれに代わるリーズナブルな
設計モデルがまだ無いという辺りではないかと思います。

100:デフォルトの名無しさん
08/11/20 19:36:48
>>98
すいません・・・別の箇所で問題が原因でした。
ご迷惑をおかけしました。

101:デフォルトの名無しさん
08/11/20 19:55:17
>>99
イベントがどのタイミングで処理されるのかを
マルチスレッドだと制御できるとは思えないからなぁ。
シングルスレッドだからこそ、予測しやすいわけで。
まぁ、予測ができるだけで、確実にシーケンシャルに実行されるかどうかはわからんのだけど。

102:デフォルトの名無しさん
08/11/20 19:56:55
どう考えてもシンプルでコストが安いしな。
今のマシンなら楽勝って考えるてるなら、
自分で作ったらいい。環境はあるんだから。

103:デフォルトの名無しさん
08/11/20 20:19:49
UIがマルチスレッドなら、特別な仕掛けがない限り
UIコンポーネントから取得するデータは、取ってきた時点で
既に古いものになっていると考えなければならない。

こんなもので何を決められようか?

104:デフォルトの名無しさん
08/11/20 21:50:54
複数のインターフェースを使ってボタンをクリックすることで
画面の切り替えをしたいのですが、この場合CardLayoutを使うと思うんですが
本を読んでもイマイチ分からないので、使い方を教えていただけませんか?

それともCardLayout以外にも画面の切り替えを行う方法はありますか?

よろしくお願いします

105:デフォルトの名無しさん
08/11/20 21:57:06
JTabbedPaneはどう?

106:デフォルトの名無しさん
08/11/20 22:29:15
>>105
教えていただきありがとうございます

タブを使うやり方もいいんですが、
できれば、ボタンをクリックしてカードを
切り替える感じのものがいいのですが
ありませんでしょうか?

107:デフォルトの名無しさん
08/11/20 22:29:35
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を付けるというのがお決まりなのでしょうか?

108:デフォルトの名無しさん
08/11/20 22:45:57
Javaでどの様にハッキングするの?
どの位の所まで分かる様になったらハッキング系の事出来るの?
JavaでLAN周りを調べる事何て出来るの?
どの様にJavaにネットと通信出来るように書くのか気になる。

109:デフォルトの名無しさん
08/11/20 22:52:45
>>107
TestクラスのTEISUUの値は,インスタンスの状態にかかわらず常に"定数"になるんでしょ?
それならstaticにするのが自然。メソッドの場合も同様の考え方をする。
Test.を省略できるのは同じクラス内だから。そういうルールだから仕方ない。

110:デフォルトの名無しさん
08/11/20 22:53:14
>>107
書けてしまうのは文法的に誤っていないから。
文法的に誤っているということだがJLSのどこに書かれているの?
static finalが付いているものは変更不可のクラス変数。
インスタンスごとの変更不可変数であればstaticは不要。

111:デフォルトの名無しさん
08/11/20 23:39:55
>>109
>>110
ありがとうございます!
自分のクラスのstaticフィールドにアクセスする場合は
クラス名省略できるんですね。知りませんでした。

よく考えてみたらインスタンスごとの定数ってあまり考えられないですね。。
単純に例が少なかったのかな。

112:デフォルトの名無しさん
08/11/20 23:43:04
>>73
レスサンクス。

同じブラウザで一度フォームデータをsubmit、ブラウザの戻る、またsubmit
っていう操作を何回もしていると、不定期でおきているから、
cookieが未設定とか、ブラウザで無効にしているってのはなさそうなんだよね。
CookieはsetMaxAge(-1)でブラウザが閉じられるまでは消えないから、有効期限ってのも
関係なさそうだし・・・。

Hoge test = new Hoge(HttpServletRequest);
って感じで、Hogeクラスのprivateメンバに保持しておいて、
Hogeクラスのメソッド内で使おうとすると、時々nullになるんよ。

よくわからなかったから、メンバに持たせるのはrequestそのものじゃなくて、
コンストラクタ内でgetHeader("cookie")やってStringメンバに入れておくことにしますた。

113:デフォルトの名無しさん
08/11/20 23:43:40
定数をインスタンス毎に持っても意味ないからstaticにするぐらいにしか考えてないぜ

114:デフォルトの名無しさん
08/11/20 23:46:52
Javaが趣味って奴いるの?
個人レベルで何する気なんだ?Javaで

115:デフォルトの名無しさん
08/11/21 00:17:07
>>112
待て、おまえはServletにおけるオブジェクトのライフサイクルをちゃんと理解してるのか???
そのHoge testはどこに定義されている?

116:デフォルトの名無しさん
08/11/21 00:43:27
>>115
Hoge testはHttpServletのdoPost内でインスタンス化されて、
threadとして動いてます

117:デフォルトの名無しさん
08/11/21 01:10:01
スレッドってよくわかんねーーー
スレッドセーフなクラスって何だよ…
横槍ごめんなさい。

118:デフォルトの名無しさん
08/11/21 01:19:43
>>116
よくわからん。該当部分のコードを見せろ。Hoge testの定義位置も含めて。
HttpServletRequest/HttpServletResponseの生存期間はHTTPのリクエストを受け付けてからレスポンスを返すまでってことは理解してるよな?

119:デフォルトの名無しさん
08/11/21 01:51:32
>>114
Javaが趣味でもおかしくはないと思うが

それより、趣味の何らかの計算とか集計とかに使うと非常に便利>Java

120:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/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
08/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:デフォルトの名無しさん
08/11/21 04:02:00
万能主義はあなたの方でしょw
実際は、シングルスレッドすることは全てのメソッドをsynchronizedにするのとほとんど変わりませんよ。
それにsynchronizedは同期のことでしょ?あなたはスレッドを分かってないようですね。

勘違いしているようですけど別にswingのスレッドとかの設計に文句があるんじゃなくて、
どうしてシングルスレッドにこだわるのかって事です。もともとswingはコンポーネントなのであってguiが前提なわけで、マルチスレッドで設計するものかと思います。
swingはピュアjavaというよりも全てpaintで済ますって理念なんで分からなくもないんですけど・・・

125:デフォルトの名無しさん
08/11/21 04:11:01
>>95
通信の処理とかがGUIと関係あるかではなくて、処理の結果をGUI(のコンポネント)が受け取ります。
それで、計算や処理など既にハード上の能力は十分ですぐ結果が出ても、肝心の表示の方がイベントまちとか
シングルスレッドで0.5...1秒待たされるようじゃそのコンポネント(swing)を使うにはストレスがあります。
たまに複雑なJTableでもあるでしょ、少しもたつくことが。

swing workerにもありますが、計算結果や通信結果の受信はguiと関係なので次のswing frameworkでは切り離したわけで、
だから描画とは関係ないeventやproperty fireとかもシングルスレッドにしてるのはどうしてなのかということです。
将来が予測できるかどうかじゃなくて、マルチスレッドにしてviewを独立させないことは自分自身で未来を潰しているようにみえませんか。

126:デフォルトの名無しさん
08/11/21 04:33:04
>>99
伝統的に、イベント処理がシングルスレッド(シーケンシャル処理)だからですか。
なんかcui(今ではwebアプリとかサーブレットとか)ではThreadを導入していても、
gui(swingツールキット? invokeLaterなど)の設計の発想は昔のcのシーケンシャル処理・構造処理のままでOO指向じゃなかったんですね。

guiの(コンポネントじゃなくて)次のツールキット設計は、その古いシーケンシャル処理からの分離してコンポネント間の独立で
正しくOO指向のツールキットでしょう。最近guiやMVCなどの概念を使って、自作のコンポネント開発してみてるんですけど、
awtパッケージやawt.Toolkitはマルチスレッド設計ですよね?それで開発しているとよく気になって、swingは描画と
関係ない処理・イベント受付が絡み合ってるみたいなんでその辺りをすっきし指せれば別に遅くもないし、
透明かも擬似的に出来るし、逆に洗練され使いやすいんですけど。

SUNがswingに関心をもたなくなって次に向いている理由もなんとなく分かります。

127:デフォルトの名無しさん
08/11/21 08:44:26
>>126
お前は、Sunが何故GUIのマルチスレッド化を諦めたのかをちゃんとしらべたほうがいい。
AWTは失敗だった、マルチスレッドでGUIを「正しく」実装するのは現実的には不可能だ、と言ってるんだから。


128:デフォルトの名無しさん
08/11/21 09:23:05
AWTはマルチスレッド対応じゃねーし、
マルチスレッド対応だから失敗したわけじゃないでしょ。

129:デフォルトの名無しさん
08/11/21 10:59:18
こんな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に追加したいんですが、
 選択したセルの情報を取得する方法はありますか?

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4348日前に更新/251 KB
担当:undef