【初心者】Java質問・相談スレッド123【歓迎】at TECH
【初心者】Java質問・相談スレッド123【歓迎】 - 暇つぶし2ch2:デフォルトの名無しさん
09/01/19 12:29:32
2 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/14(日) 20:59:33
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 8
スレリンク(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:デフォルトの名無しさん
09/01/19 13:33:41
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

4:デフォルトの名無しさん
09/01/19 22:21:44
Collection から 任意のオブジェクトの配列に変換する際、
以下のようなプログラムを書くと思いますが、

List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
:
String[] array = list.toArray(new String[0]); ←(1)
System.out.println(array.length);

このとき(1)で Collection#toArray() に渡すのは、 以下のどっちが正しいのですか?
・new String[0]
・new String[list.size()]

URLリンク(d.hatena.ne.jp)
というページを見つけたが、コメントで以下のようにあるが、

> // もはやtoArrayの引数にサイズ0の配列を渡すのはお約束
> String[] strs = strList.toArray(new String[0]);

> ですよね~

「お約束」「ですよね~」となるのが理解できない。

new String[list.size()] とやらずに new String[0] とやるのは常識(お約束)なんですか?


5:デフォルトの名無しさん
09/01/19 22:39:17
>>4
>> T[] result = new T[size];
> とか出来ないのか。

なんて言ってる人たちだから。

6:デフォルトの名無しさん
09/01/19 22:42:42
>a - リストの要素の格納先の配列。
>   配列のサイズが十分でない場合は、
>   同じ実行時の型で新しい配列が格納用として割り当てられる
どう見ても new String[list.size()] の方が効率いいと思うが。

7:デフォルトの名無しさん
09/01/19 22:50:58
質問です。アドバイスをお願いします!
現在JTabbedPaneでタブを作っているんですが、その中身を別のクラスから呼び出そうとすると、
「シンボルを見つけられません」とエラーが出てしまいます。
部分的にソースを書くと、
//タブに貼り付けるパネル設定
JPanel tabPanel2 = new JPanel();

//テキストエリアのクラス
JTextAreaTest sc ;
sc = new JTextAreaTest();

//タブの設定
tabPanel1.add(sc);  ←ここでエラー
tabPanel2.add(new JLabel("ラベル"));

JTextAreaTestクラスのインスタンス化したものを設定しているのが問題なのでしょうか?
それともインスタンス化自体間違っているのかどなたか助言をお願いします!



8:デフォルトの名無しさん
09/01/19 22:51:56
jnlpで
外部ライブラリにいちいち署名しない方法教えて。
grant allpermissionは抜きで。

GoogleAPIのJARを解凍して一個のJARにまとめて
署名したけど、なんか動かんかった。MANIFESTの情報を
引き継がなきゃなんないのか?

つか、いちいちサードパーティの信頼性を
プログラマが保障しなきゃいけないモデルってあり?

せっかくのJavaFXもこんなめんどくさい
サンドボックスのせいで普及しなそう。


9:7
09/01/19 22:53:21
>>7
すいません、パネルの設定が一行抜けてましたorz
正しくは下です

//タブに貼り付けるパネル設定
JPanel tabPanel1 = new JPanel();
JPanel tabPanel2 = new JPanel();

10:デフォルトの名無しさん
09/01/19 23:05:22
>>9
オマエが抜書きしている時点で全て怪しいいよ。
全部どっかにアップしろ

11:4
09/01/19 23:13:28
>>5-6
レスどうもありがとうございます。
いくら Collection.toArray() 内で、適切に拡張してくれるとはいえ、
new String[list.size()] の方が効率がよいということなので、
自分はそうするようにします。

List list = new ArrayList() とか StringBuilder sb = new StringBuilder()
でも、今までは気にしていなかったけど、その時点でサイズを決めることができる場合は、
コンストラクタに初期サイズを指定した方が効率がいいのかな。
(明確な差は現れないような気もするけど)

12:7
09/01/19 23:19:40
>>10
ソース上げました

URLリンク(uproda.2ch-library.com)

13:デフォルトの名無しさん
09/01/19 23:24:17
WinXP SP-3に、jre-6u11-windows-i586-p.exeをインストールしていました。
Revo Uninstallerというフリーソフトでアンインストールを行い、ウイルスソフトを
停止して、再インストールしようとすると、
「この操作は現在インストールされてている製品に対してのみ有効です。」
となり、インストールできません。
セーフモードで起動し、インストールしようとすると
「システム管理者によって、ポリシーはこのインストールを実行できないように設定されています」
となってしまいます、administratorでインストールしようとしても、同様の結果です。
プログラムの追加と削除には、既にjavaの項目はありません、完全削除か、再インストールしいたいのですが、できなくて困っていますどうしたらいいでしょうか?
Sunに聞いたほうがいいのでしょうか?

14:デフォルトの名無しさん
09/01/19 23:26:23
>>12
JPanle#addはComponentしか受け付けないから

15:デフォルトの名無しさん
09/01/19 23:27:02
>>14
×JPanle
○JPanel

16:7
09/01/19 23:38:08
>>14
なるほど!だからエラーが出るんですね
ということは、直接設定せずに間接的に設定すればおk?
ちょっとやってみます

17:デフォルトの名無しさん
09/01/20 00:00:51
>>16
目標がなんだかわからないが、
普通にやりたいなら、
JTextAreaTestのコンストラクタでやっていることは全部Sampleのコンストラクタに出して、
JTextAreaTest自体やめちゃえば?

18:7
09/01/20 00:23:02
>>17
確かにそれだと表示されるんですが、
最終的にこれに他にもJMenuとかいろいろ足していきたかったので、
Sampleの中に全部入れていくと見難いかと思ってクラスに分けたかったんです
もう少しやってみてだめだったら、このままSample内に入れてしまおうと思います

19:デフォルトの名無しさん
09/01/20 00:41:44
クラスに分けるときは、もうちょっとオブジェクト指向を
勉強したほうがよいかと。

JTextAreaTestをインスタンス化(new)して
そこからJTextAreaTestがもってるスクロールペーンの
参照を取得して、Sampleのほうのタブペーンにaddする。

難しい方法はJTextAreaTest extends JPanel
とかして、JTextAreaTest自体をタブペーンにaddする。

がんばれー。


20:デフォルトの名無しさん
09/01/20 00:43:15
>>18
タブに入れるパネルか、
パネルに入れるスクロールペインをサブクラス化した方が良いのでは?

21:デフォルトの名無しさん
09/01/20 01:54:41
>>11
>コンストラクタに初期サイズを指定した方が効率がいいのかな。
インスタンス生成時に、予めサイズが分かってるなら、その方が良いよ。
気になるなら、ソース読んでみると良い。
それに、パフォーマンスを気にするなら、まずは自分の手を動かして実測してみるのが一番。

22:デフォルトの名無しさん
09/01/20 01:59:57
JAVAでパフォーマンスを気にする奴はどんな髪型してるんだ?

23:7
09/01/20 02:15:59
>>19-20
助言ありがとうございます
まだまだオブジェクト指向は理解しきれていないですが、二人の言葉を参考に
なんとかクラスを分けたままでタブに表示することができました!
URLリンク(www.dotup.org)
テキストエリアのサイズの設定がおかしいことになってますが、
今日はここまで出来たので寝ようと思います
ここに来てよかったです。ありがとうございました


24:デフォルトの名無しさん
09/01/20 02:55:21
>>22
大量にデータを扱うようなプログラムを作る場合、
パフォーマンスは気にすべきだと思うが。

あなたは、Java で書こうと C で書こうと、いま自分が書いているプログラムが
どれくらい無駄なことをやっているか、どれくらい効率的になっているか、意識していないんですか?


25:デフォルトの名無しさん
09/01/20 03:26:18
大量って具体的にどれほどバイト?

26:デフォルトの名無しさん
09/01/20 03:28:13
>>24
青二才はオナニーしてはよ寝ろw

27:デフォルトの名無しさん
09/01/20 04:12:27
Cで書くのが面倒でJavaしてる時点でパフォーマンスは考えてないな。

perlとかスクリプト書けばすぐ済むのをいちいちCでやるのかと同じ。

28:デフォルトの名無しさん
09/01/20 04:25:00
JAVA的にはperlじゃなくてRUBYだと思うが・・・

29:デフォルトの名無しさん
09/01/20 08:54:20
なんでrubyがでてくるんだ?

30:デフォルトの名無しさん
09/01/20 09:26:18
指示ファイルを読み込んで動作するプログラムがあります。
classファイルで動いている時には、自身のclassファイルがあるフォルダから、
jarで動いている時には、自身のjarから抽出して、
それぞれ動かしたいと思います。
自身のパスと、classなのかjarなのか、はどうやったら得られるんでしょうか。
ご教示願います。

31:デフォルトの名無しさん
09/01/20 13:32:42
相対パスで指定すれば関係ないんじゃない?

32:デフォルトの名無しさん
09/01/20 17:36:21
>>27
なんでperlなの?

33:デフォルトの名無しさん
09/01/20 17:37:24
>>24
大量って具体的にどれほどバイト?

34:デフォルトの名無しさん
09/01/20 17:52:04
どれほどバイト

35:デフォルトの名無しさん
09/01/20 18:08:12
>>30
クラスファイルと同じ場所に指示ファイルがあるのなら
getClass().getResourceAsStream(指示ファイル名);
で指示ファイルから読み込むためのInputStreamが返される
指示ファイルの位置が知りたいのならClass#getResourceメソッドを使えばそのURLが得られる
クラスメソッドならクラス名.classでClassインスタンスが得られる

36:デフォルトの名無しさん
09/01/20 19:20:17
質問です。
main.exec()を実行する際に以下のように値をセットするようにしました。

Class name1 = new Class();
Class name2 = new Class();
...
Class name10 = new Class();

name1.setA("a");
name2.setA("b");
...[引数が微妙に違う]...
name10.setA("j");

name1.setB("default");
name2.setB("default");
...[引数が同じ]...
name10.setB("default");

以下setC(すべて同じ引数), setD(name1~5が同じ引数、name6~10が同じ引数)と続く

main.put("METHOD1", name1);
main.put("METHOD2", name2);
...
main.put("METHOD10", name10);

main.exec();

似たような処理を記述しているので冗長に感じます。
もう少しスッキリとさせることはできないでしょうか?

37:36
09/01/20 19:22:17
具体的には数字ではなくて
nameItigo
nameRingo
nameSuika
のような意味のある名前になっています(引数もそれに関連するものです)

38:sage
09/01/20 21:48:32
サーブレットはサーバで動くアプリケーションというのは分かったですが、
普通のjavaアプリケーションは何て言うんですか?

39:デフォルトの名無しさん
09/01/20 22:01:00
javaアプリケーション

40:デフォルトの名無しさん
09/01/20 22:33:45
>>36
Classクラスは標準で存在するクラスだから仮の名前に使うのは良くない。
nameなんたらという名前がその場だけのものなら配列なりコレクションなりに置き換えた方がいい。
セットするリソースもそれに合わせてまとめておく。そうすれば繰り返し構文が使える。
名前の変更ができないのなら配列等にname~の参照を保持してそれを使うようにするとか。
Hoge nameFoo = new Hoge();
...
Hoge[] names = {nameFoo, ...};
String[] valueA = {"a", ...};
...
for (int i = 0; i < names.length; i++) {
names[i].setA(valueA[i]);
...
みたいな感じ。

41:デフォルトの名無しさん
09/01/21 04:38:30
動作効率(速度面・資源面など)について質問です。

class Sub extends Super {
}

class Sub2 extends Sub {
}

class Sub3 extends Sub2 {
}

ここでSub3をインスタンス化して継承したSuperのメソッドを使うのと、
Superをインスタンス化してメソッドを使うのでは、
動作効率は変わってきますか?
継承すればするだけ継承した下位のクラスを利用するとき動作効率が劣るのでしょうか?

42:デフォルトの名無しさん
09/01/21 08:16:03
>>41
JVMの実装による。お使いのJVMでベンチマークしてください。


43:デフォルトの名無しさん
09/01/21 08:34:02
その程度最適化で吸収される

44:デフォルトの名無しさん
09/01/21 11:29:19
一般的には、気にするだけ無駄だな。


45:デフォルトの名無しさん
09/01/21 11:45:21
>>41
どっち使ってもinvokevirtualになるだろうし大して変わらんと思うが。
まぁJVMの実装次第だけど。

46:41
09/01/21 12:00:17
みなさんレスどうもありがとうございます。
自分の中のイメージとしては、
小物の入った小さい箱にそれよりも大きな箱を重ねていく感じで、
小物をとりだすときに箱を1つずつ取り払う分作業速度が遅くなり、
大きな箱を用意する分資源(メモリ等)を多く使うのではと思い質問しました。
大してかわらなそうとのことなので気にしないことにします。

47:デフォルトの名無しさん
09/01/21 12:35:45
>>35
ありがとう。
提示されたキーワードで調べてみます。

48:デフォルトの名無しさん
09/01/21 13:16:26
サーブレットからアプリケーションを実行する時って
どうすればいいんでしょうか。



49:デフォルトの名無しさん
09/01/21 16:33:13
もうすぐ現場に出るのですが
覚えといたほうがいいものを教えてください。

50:デフォルトの名無しさん
09/01/21 16:42:51
>>49
ハンカチとティッシュを忘れない

51:デフォルトの名無しさん
09/01/21 17:03:50
行為の前に敷いてあげて行為の後で拭いてあげるんですね

52:デフォルトの名無しさん
09/01/21 17:20:26
>>48
アプリケーションをコンテンツとして用意して、ブラウザに送る。

53:36
09/01/21 21:56:48
>>40
ありがとうございます。
配列にしたことでスッキリできました。

54:デフォルトの名無しさん
09/01/21 21:58:12
ご存知でしたら教えてください。

servletのフレームワークで、プロパティー形式以外の入力を処理するようなものってありますでしょうか?
普通、リクエストボディには
キー=値
という形式でデータが納められているとおもうのですが、
これがCSVだったり

kamoku,tensuu
kokugo,81
rika,69
suugaku,77

XMLだったり

<data>
<name>
<sei>foo</sei>
<mei>bar</mei>
</name>
<age>26</age>
</data>

するリクエストが飛んできた場合、適切にBeanのフィールドに値を詰めてくれるようなフレームワークです。
以上、よろしくお願いします。

55:デフォルトの名無しさん
09/01/21 22:21:15
よく分からんがO/Rマッピングのこと?

56:54
09/01/21 23:08:13
O/Rマッピングと言っていいのかわからないのですが、
つまりクライアントから

POST /TestServlet HTTP/1.1
Host: localhost
Content-Length: 17
Content-Type: text/xml

<data>
<foo>bar</foo>
</data>

こんなリクエストが投げられてきた時にO/Rマッピングみたいな事をしてくれるフレームワークです。
そういうのありますでしょうか?






57:デフォルトの名無しさん
09/01/21 23:52:19
JAXBとか

58:デフォルトの名無しさん
09/01/22 00:23:25
JTableについて質問があります.

JTableのテーブルモデルをAbstractTableModelを拡張した自作(TableModelEx)の物にしています.
TableModelExにAbstractTableModel#getValueAt(int row, int column)をオーバロードしてgetValuAtの返り値がセルのデータになるはずですが
どうもうまくいきません.行内の全ての項目の値が同じものになってしまいます.
そこでオーバーロードしたgetValueAtの引数rowとcolumnを調べてみるとcolumnの値が変化してません.
例えばSystem.out.println(row + ":" + column)で調べると
0:0
0:0
0:0
1:0
1:0
1:0
といった具合になります.同じ列をアクセスしているようです.本来ならば
0:0
0:1
0:2
1:0
1:1
1:2
となっているはずです.
どうすればよいでしょうか?

59:デフォルトの名無しさん
09/01/22 00:51:10
>>58
それを言うならオーバーロードでなくオーバーライドじゃね?
まあTableModelインタフェースで定義されてるだけだからオーバーライドというよりインプリメントかもしれんが。
TableModelEx自身やそれがどう使われているか分からないことには何ともいいようがない。たとえば、
class Model extends AbstractTableModel {
public int getRowCount() {
return 10;
}
public int getColumnCount() {
return 5;
}
public Object getValueAt(int row, int column) {
System.out.println(row+","+column);
return new String(row+","+column);
}
}
みたいに簡単なのをそのコードで使ってるJTableのモデルに与えてみてもうまくいかない?

60:デフォルトの名無しさん
09/01/22 00:53:27
AbstractTableModel自体は抽象クラスだからインプリメントでなくオーバーライドでいいのか…

61:デフォルトの名無しさん
09/01/22 03:51:12
>59
それと同等のプログラム組んでみたらうまくいった.
それでいろいろ試してみたらハードコーティングで作った列はAbstractTableModel#getValueAt(int row, int column)の
引数columnでちゃんとアクセス(column = 0,1,2,3...)してくれるみたいなんだけど
実行中に動的に追加した列に関してはAbstractTableModel#getValueAt(int row, int column)の引数columnが常に0だった.
つまり動的に追加した列は0列目とまったく同じ値になった.
で,今作ってるプログラムは動的に列を追加するもの(列の定義があるファイルにあってそれをロードする)なので
思うように行きません.

62:デフォルトの名無しさん
09/01/22 04:45:47
>>61
たぶんTableModelExでデータを追加する機能がきちんと組めていないんだと思う。
動的に追加するのならAbstractTableModelでなくDefaultTableModelを継承したほうが楽。
class Model extends DefaultTableModel {
public Model() {super(10, 5);}
public Object getValueAt(int row, int column) {return new String(row+","+column);}
}

JFrame f = new JFrame();
final Model m = new Model();
JTable t = new JTable(m);
f.add(new JScrollPane(t), BorderLayout.CENTER);
JButton b = new JButton("add row");
b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
m.addRow(new Object[m.getColumnCount()]);
}});
f.add(b, BorderLayout.SOUTH);
JButton b2 = new JButton("add column");
b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
m.addColumn(String.valueOf((char)('A' + m.getColumnCount())));
}});
f.add(b2, BorderLayout.EAST);
みたいなのはちゃんと機能する。

63:デフォルトの名無しさん
09/01/22 11:39:42
列を追加するときにfireTableStructureChanged()を追加した動的に列を追加してももうまくいった.
とにかくありがとう

64:デフォルトの名無しさん
09/01/22 14:24:42
ボタンをクリックする度に新しいJTextPaneを、JInternalFrameを使って
表示させています。
クリックされる度にJTextPane textPane = new JTextPane();
として生成しているのですが、一度目のクリックではtextPane1、二度目のクリックでは
textPane2...というふうに、違う名前にしたいのです
どのようにしたらいいでしょうか

65:デフォルトの名無しさん
09/01/22 14:32:06
>>64
名前といわれても、なにの名前だか

66:デフォルトの名無しさん
09/01/22 14:48:02
ていうかSwingはSwingスレ行ってやれよ。超過疎ってるんだから。

67:デフォルトの名無しさん
09/01/22 14:53:26
質問です。
現在、↓のようなプログラムを作りました。
URLリンク(www3.uploda.org)
システムトレイにアイコンを常駐させ、フレームを閉じてもアイコンから表示でき、
時間設定することでシステムトレイに常駐させたアイコンからお知らせできる、というプログラムです。
普通にフレームを閉じてアイコンから開いても普通に表示されるんですが、
時間設定をしてからもう一度フレームを開くと、上下にパネルを並べていた
レイアウトが並べて表示されてしまいます。
レイアウトが崩れてしまう原因はなんでしょうか?
アドバイスをお願いします!

68:67
09/01/22 15:04:50
すいません、上のプログラムですが、余計なコメント類を消してすっきりさせて
みたらレイアウトが崩れなくなりました。
お騒がせしてすいませんorz

69:デフォルトの名無しさん
09/01/22 19:28:09
質問なのですが
apacheとtomcatの連携させて、
javaのサンプルプログラムをdosでコンパイルして動かして連携を確認しました。
ところがエクリプスで同じプログラム造るとtomcatで動いてもapacheで動きません。
どなたか原因ご存じですか??

70:デフォルトの名無しさん
09/01/22 20:04:50
質問させてください
二次元配列でfor文を使って、各行の最小値を求めてから、
その最小値の要素の要素番号を表示するにはどうすればいいのですか?
下のように表示させたいのですが…よろしくお願いします。


10, 1, 9, 7, 8
30, 10, 9, 6, 4
-1, -2, -9, -5, -6

0行目の最小値 = 1
0行目の最小値の要素番号 = 1
1行目の最小値 = 4
1行目の最小値の要素番号 = 4
2行目の最小値 = -9
2行目の最小値の要素番号 = 2

71:デフォルトの名無しさん
09/01/22 20:06:23
>>70
宿題スレの方がいいんじゃね?
ここってアルゴリズムスレじゃないと思うんだ

72:デフォルトの名無しさん
09/01/22 20:38:24
アルゴリズム体操はじまるよぉ~~☆☆☆

73:デフォルトの名無しさん
09/01/22 20:39:10
>>71
失礼しました、改めて宿題スレで聞いてみます
ありがとうございました

74:デフォルトの名無しさん
09/01/23 21:59:06
最近Javaを勉強し始めましたが、コンストラクタを使用するメリットが
イマイチよく分かりません。
どういった場面で利用し、どのように役に立つのでしょうか?


75:デフォルトの名無しさん
09/01/23 22:13:30
多分あなたが書いた「コンストラクタが不要なクラス」のサンプルを
貼ってもらえると説明出来ると思う。
どういう理由でコンストラクタ不要と考えたか分からないので。

76:デフォルトの名無しさん
09/01/23 23:11:16
インスタンスを作った時点で必ずメンバ変数が初期化されてるってハッピーじゃね?
メンバ変数が初期化されてなかったらどうしようとかビクビクしなくて済むわけで。

77:デフォルトの名無しさん
09/01/24 08:46:10
オブジェクト指向プログラミングでは
オブジェクトを構成単位としてプログラムを構築するが
そのオブジェクトの内外部の境界の決定は
そのオブジェクトにどのように整合性(不変条件)を持たせるかが
一つのキーポイントとなっている。

ところが、単にオブジェクトを生成しただけでは、
Javaの既定のフィールドの値では
生成直後の状態がその整合性を満たせない場合がある。
このような場合に、コンストラクタなどを使って
正しい状態のオブジェクトが生成できるように細工をする。

なお、コンストラクタが終わる前に、直接的にも間接的にも
その構築中のオブジェクトの参照を漏洩するのは
整合性がない状態でオブジェクトを晒すことになるので、やってはいけない。

78:デフォルトの名無しさん
09/01/24 09:55:14
アプレットです。init()を実行した時点で一旦処理を止めて、マウスのeventで
paint()に進むようにしたいのですが、制御の方法が分かりません。
今は最後まで処理してからマウスeventを待っています。
宜しくお願いします。


79:デフォルトの名無しさん
09/01/24 11:52:04
プログラム晒せないなら宿題スレに逝けば?
★★ Java の宿題ここで答えます Part 67 ★★
スレリンク(tech板)l50


宗教的な儀式は別にして、コンストラクタって使うの面倒だよな。
クラスのインスタンス実行した時点で初期化しとけよ。

80:デフォルトの名無しさん
09/01/24 12:11:32
コンストラクタ使うのが面倒って、お前
インスタンスを一個しか作らないようなプログラムしか
書いてないんじゃないか?

81:デフォルトの名無しさん
09/01/24 12:36:50
つうか、コンストラクタへの引数ってメソッドの引数と同じようなもんだろ
コンストラクタはいらねーってのはメソッドの引数はいらねーっていってるようなもんだな
ていうか、コンストラクタがどうのとか言ってる奴って、
JavaAPIをまともに使ったことねーんじゃねーの?
あれらにコンストラクタがなかったら悲惨なことになると思うが

82:デフォルトの名無しさん
09/01/24 12:53:43
コンストラクタは気になる

ClassA a = new ClassA();
a.setFile(file);
a.setDir(dir);
a.exec();

ClassA a = new ClassA(file, dir);
a.exec()

どちらがいいんだろう?判断する根拠を持っていない・・・

83:デフォルトの名無しさん
09/01/24 13:20:05
>>82
後者だと、引数が不正だった場合にインスタンスの生成そのものを行わないという設計・実装が可能。
同じ理由でDIコンテナでもコンストラクタインジェクションを好む人は多い。


84:デフォルトの名無しさん
09/01/24 13:55:58
ちょっと教えてくれ

telnetクライアントを作りたいんだが、
いろいろ調べてみるとApache Commonsのnet
というコンポーネントを使用する例が出てくる。
やっぱこれを使った方がやりやすいのかな?
あと、公式サイトはリンク切ればかりなんだけど、
ちゃんとここから落とせるのかな?

85:デフォルトの名無しさん
09/01/24 14:12:34
java入門のswing関係で
「getContentPane().add(button1);」というコードをを発見しました
getContentPane()の戻り値のインスタンスを使って、add()にアクセスしているって解釈したんですが
間違っていませんか?



86:デフォルトの名無しさん
09/01/24 14:20:23
>>83
というよりむしろ引数が無ければコンパイルエラーにしてくれる点が重要では

>>85
そのたうり

87:デフォルトの名無しさん
09/01/24 14:24:29
>>83
コンストラクタの中で、戻り値をコントロールできる?
ってか、引数のチェックをした結果を、コンストラクタの呼び元でインスタンスが出来ているかどうかで判断するのか?

88:デフォルトの名無しさん
09/01/24 14:26:21
>>86
わかりました
ありがとうございます

89:デフォルトの名無しさん
09/01/24 14:56:58
スレッドって手数を増やすんじゃなくてひとつの領域を効率よく使うためのアプローチなんですかね

90:デフォルトの名無しさん
09/01/24 16:16:23
キャストについての質問なのですけれど、

class Parent{}
class Child extends Parent{}

class cast{
public static void main(String[] args){
Parent p;
p = new Child();

Child c;
c = (Child) new Parent();

}
}

実行時にclasscastexceptionの例外が発生します。
c = (Child) new Parent(); ここのキャストがまずいらしいんですけど、
どうすればエラーが出ないのでしょうか?よろしくお願します。

91:デフォルトの名無しさん
09/01/24 16:48:20
>>90
バナナはおやつですが、
おやつはバナナではありません

92:デフォルトの名無しさん
09/01/24 16:54:49
>>82
前者だと、オブジェクト指向的には
setFileやsetDirを使わなかったときにexecを呼び出した場合の処理
(たぶん、IllegalStateExceptionでも投げる?)
を書かなければならないという手間がかかる反面、
aを生成後に処理を挟んでこれらのsetterを呼び出せるという
柔軟性を持たせることができる。

手間と柔軟性のトレードオフだが、アジャイル的には
最初は後者で作っておいて、必要になったら後者にリファクタリングする
のがよさげと思われ

93:92
09/01/24 16:56:53
typoった
>最初は後者で作っておいて、必要になったら後者にリファクタリングする
後者→前者

状態数は削れるだけ削るのが基本

94:デフォルトの名無しさん
09/01/24 17:02:12
>>93
いっぱいの「い」を「お」に変えると?

95:92
09/01/24 17:06:56
おっぱお!
後者で作っておいて、必要になったら前者、ね

96:デフォルトの名無しさん
09/01/24 17:45:37
>>91
なんとなくわかりました.。ありがとうごさいます。

97:デフォルトの名無しさん
09/01/24 21:35:12
ファイルフィルターについて質問です
ファイルチョーザで任意の一つのディレクトリを選択させるダイアログを作ろうとしています
String型のopenBtnNameに格納された名前が付けられたボタンを押すとアクションリスナーが
アクションパフォームドにイベントeを引き渡し、String型のcmdにeのアクションコマンドを引き渡した後、
下記のプログラムに入るようにしました

   else if(cmd.equals(openBtnName)){
      JFileChooser openDirFC = new JFileChooser(".");
      openDirFC.setAcceptAllFileFilterUsed(false);
      FileFilter dirFilter = new FileFilter(){
   public boolean accept(File f){
          return f.isDirectory();
      }
      public String getDescription(){
       return "directorie";
      }
      };
      openDirFC.setFileFilter(dirFilter);
      openDirFC.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
      int res = openDirFC.showOpenDialog(this);
      if(res == JFileChooser.APPROVE_OPTION){
         File inputFile = openDirFC.getSelectedFile();
         DataHandler dataHandl = new DataHandler();
         allData = new TableHandler(dataHandl.load501parameters(inputFile));
      }
   }

ここで、ファイルフィルターを設定していますが、eclipse3.3の画面上で
openDirFC.setFileFilter(dirFilter);の行のsetFileFilterの部分に赤波線が引いてあって
「型 JFileChooser のメソッド setFileFilter(FileFilter) は引数 (FileFilter) に適用できません」
と言われます。setFileFilter(FileFilter)の引数は(FileFilter)で合っているかと思いますが、
どうして適用できないのでしょうか?原因に見当がつきません。よろしくお願いします。

98:デフォルトの名無しさん
09/01/24 21:49:14
>>97
java.io.FileFilter
javax.swing.filechooser.FileFilter

99:デフォルトの名無しさん
09/01/24 21:58:33
>>98
ありがとうございました

import java.io*;
import.javax.swing.*;
は記述していたのですが
import.javax.swing.filechooser.FileFilter;
を追加したらできました。

100:デフォルトの名無しさん
09/01/25 03:01:44
javaゲームプログラミング アルゴリズムとフレームワークとかいう表紙に二次キャラの絵が描いてある本
やったことある人いませんか?
そこの2章スプライト作成のsprite.java
で最後の記述にDraw draw=null;ってありますけど
Drawは標準的クラスでないからもちろんエラーでます
この本なんなんですか?

101:デフォルトの名無しさん
09/01/25 03:25:29
あれってオリジナルキャラだと思ってたんだけど元ネタがあったのか
最初から100回嫁

102:デフォルトの名無しさん
09/01/25 03:44:19
>>100
添付のCDにクラスを定義したソースファイルがある。

103:デフォルトの名無しさん
09/01/25 04:12:46
>>102
トン

104:デフォルトの名無しさん
09/01/25 19:29:52
>>100
(^ω^;)

105:デフォルトの名無しさん
09/01/25 23:48:15
100ですが第6章のBlock.javaで
必要なクラスをすべておいてもBlockクラスが見つからないってエラーが出ます
付属CDのソースを使っても同じエラーが出ました
何が悪いんでしょうか?この本Game2Dクラスの説明がはしょってあるのでまったくわかりません
この本なんなんですか?

106:デフォルトの名無しさん
09/01/26 00:04:35
ソフトバンクパブリッシングに文句言え

107:デフォルトの名無しさん
09/01/26 00:05:36
>>106
文句いいたいのはヤマヤマなんだけど
これでもし俺がなんか単純なミスで動作してなかっただけなら恥ずかしいし・・・
だからお前らに聞いてるの!!

108:デフォルトの名無しさん
09/01/26 00:08:26
ここで晒す恥のほうが恐ろしい結果を招くことを知らぬ勇者め。

109:デフォルトの名無しさん
09/01/26 00:12:38
>>107
おまえ巨大ウンコだろ?

110:デフォルトの名無しさん
09/01/26 00:13:03
エスパーするとBlock.javaの内容をここに貼りつけるかロダにあげろってことか
そのためにはその本を買うか立ち読みしてこないといけないんだけど、
それを見ず知らずのおまえのために誰かがやってくれるといいね

111:デフォルトの名無しさん
09/01/26 00:16:58
>>110
いや著名な本だから誰かもってるだろ
俺もここで進められた本だし
何より俺はお前らを信じてるよ

112:デフォルトの名無しさん
09/01/26 00:30:06
まあ、二版が出てるくらいだから売れたんだろうけど、
タイトルにゲームと付いているような入門書を選ぶやつは、
大概脱落してここにいないだろ。

113:デフォルトの名無しさん
09/01/26 00:33:10
>>112
そうか?結構面白いぞこれ
初心者のおれにはちょっと説明足らずな点をどうにかしてほしいんだけどな

114:デフォルトの名無しさん
09/01/26 01:34:23
そもそも初心者が応用から始めるな。まず基礎からだろ。

115:デフォルトの名無しさん
09/01/26 01:44:23
>>105
第6章にBlock.javaなんて無い、5章だろ
だいたい、Block.javaは、Blockを定義しているんだからBlockが見つからないとかあり得ないだろw
なんかタイプミスしてるはず

116:デフォルトの名無しさん
09/01/26 01:54:06
手っとり早く絵がうまくなる方法ないすか?

117:デフォルトの名無しさん
09/01/26 02:12:50
>>115
そうだ5章です、すまぬ
しかしBlock.javaもCD内のソスコードを使ったけどダメなんすよ
Block.java
Draw.java
DrawRect.java
Game2D.java
InputEventTiny.java
Queue.java
ScrollSpace.java
SoundPalette.java
Sprite.java
これらすべてCD内のものをそのまま持ってきました
んで結果
Error : I can not create Game2D or newGame2D().

ありえないだろw

118:デフォルトの名無しさん
09/01/26 02:16:30
エラーメッセージもっと貼れ

119:デフォルトの名無しさん
09/01/26 03:05:30
>>118
Error : I can not create Game2D or newGame2D().
java.version : 1.6.0_11
java.vendor : Sun Microsystems Inc.
java.lang.ClassNotFoundException: Block
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at info.Game2D.startGame(Game2D.java:140)
at info.Block.main(Block.java:14)

これで全部です
何度もぐぐったけど解決できません お願いします

120:デフォルトの名無しさん
09/01/26 03:25:10
画像とかのリソースファイルがないんじゃね?

121:デフォルトの名無しさん
09/01/26 03:45:24
>>119
> java.lang.ClassNotFoundException: Block
> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
Block クラスがクラスローダーで見つからない、と。

> at java.lang.Class.forName(Class.java:169)
> at info.Game2D.startGame(Game2D.java:140)
Game2D.java の140行目で Class.forName を呼び出しているようだが、
引数は恐らく "Block" なのだろう。
"info.Block" なのに "Block" とは之如何。

122:デフォルトの名無しさん
09/01/26 04:54:48
>>121
Block.javaの14行目です
public static void main(String args[]){
startGame("Block");
}

Game2D.javaの140行目です

Game2DMain newGame2DMain() {
try {
Class argClass[] = {getClass()};
Constructor g2dmCon
= Class.forName(GAME_MAIN_NAME).getConstructor(argClass);
Object initArgs[] = {this};
return (Game2DMain)(g2dmCon.newInstance(initArgs));
} catch(Exception e) {
infomation("Error : I can not create Game2DMain.", e);
}
return null;
}

 引数はきちんとBlockになってるようですがわかりません

123:デフォルトの名無しさん
09/01/26 04:57:09
訂正

136 static void startGame(String game2dClassName) {
137 GAME_NAME = game2dClassName;
138 try {
139 Game2D game2D = (Game2D)(Class
140 .forName(game2dClassName).newInstance());
141 game2D.newGame2D();
142 } catch (Exception e) {
143 infomation("Error : I can not create Game2D or newGame2D().", e);
144 }
145 }

124:デフォルトの名無しさん
09/01/26 10:55:42
各ファイルを置くフォルダの構成が間違ってるんだろ
もっかい本の該当箇所を読み返せば?

125:デフォルトの名無しさん
09/01/26 16:44:51
import java.applet.Applet;
import java.awt.Graphics;

/*<applet code="App2.class" width="500" height="500"></applet>*/


public class App2 extends Applet {
public static void main(String args[]){
int []a= {1,2,3,4,5};
paint(,a[0],a[1],a[2],a[3]);



}

public void paint(int i, int j, int k, int l) {
Graphics.drawLine(i,j,k,l);

}

}

こういう風にmainメソッドで引数を作って、下でアプレットで線を引くようなプログラムを作りたいんだが、
どこをどう直せばいいんですか?(Graphics g)を引数に追加してg.drawLineってやると、mainメソッドでどうそれを代入すればいいかわからないんだが・・・

126:デフォルトの名無しさん
09/01/26 17:08:31
ImageIO.write
で、既存のファイルに書き込みをすると、PCごと落ちてしまいます。
皆さんもお試し下さい。


127:デフォルトの名無しさん
09/01/26 18:40:55
>>126
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
public class Hoge {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream("moge.jpg");
BufferedImage im = ImageIO.read(in);
in.close();
OutputStream out = new FileOutputStream("moge.jpg");
ImageIO.write(im, "jpg", out);
out.close();
}
}
落ちたりしないよ?
この場合、画質の劣化や圧縮率の違いでファイルサイズが変わるけど、
writeによる上書きでPCが落ちるなんてことはない。

128:デフォルトの名無しさん
09/01/26 19:11:00
>>125
つっこみどころが多すぎる
きちんと初心者向けのjavaの参考書を買って頭から読んで理解することから始めた方がいい
買うときは内容を見てグラフィックス関連やアプレット関連の記述がそれなりにあるものを

129:デフォルトの名無しさん
09/01/26 19:29:35
>>125
すまん、マジで基本からやりなおしたほうがいいと思う

130:デフォルトの名無しさん
09/01/26 19:47:30
>>127
OutputStreamではなく直接Fileを指定する。
上書きの場合、100%リセットする。
おそろしいことです・・・・。



131:デフォルトの名無しさん
09/01/26 20:24:25
>>125
(1) まずアプレットとして正常に動くものを作成する。
通常paint(Graphics g)はアプレット作成者が描かせるために直接呼び出すものではなく、
アプレット画面が描かれる時にこういう風に描いてねという作成者の要求を書いておくメソッド。
呼び出しはアプレット実行環境が必要な時に呼び出してくれる。
そして、paintではなくinitやstartメソッドで描画のためのパラメータを設定して、
それをpaintで読んで描くようにする。
パラメータの授受にはアプレットクラスに必要なだけインスタンス変数を定義すれば十分。

(2) そのアプレットをアプリケーションとして動かす。
Appletクラスもグラフィックコンポーネントの一種なので、
Frame等のトップレベルウインドウを作成してそれにaddすれば表示できる。
ただ、アプレットの場合、init、start、stop、destroyの四つのメソッドが
アプレット実行環境から呼ばれることが前提になっているので、
アプリケーションから動かす場合は、開始時にinitやstartを呼び出し、
終了時にstopやdestoryを呼び出すようにする。
ただ、オーバーライドしていないメソッドは呼び出さなくてもいい。
そしてmainからアプレットへのパラメータの引渡しは、
paint用に定義したインスタンス変数を使えばいい。

initやstartでgetParameterで設定するパラメータを読み取る形にしているのなら、
アプリケーション側では、AppletStubのgetParameterをオーバーライドして、
mainで決めた値から得たパラメータ値を返すようにしたものをAppletに設定するといい。
あまりまじめに作ると自作アプレットビュアとかになるのでやりすぎは禁物。

なんにせよjavaのグラフィックフレームワークの使い方を初歩から勉強した方がいいと思う。

132:デフォルトの名無しさん
09/01/26 20:34:16
>>130
import java.io.*;
import javax.imageio.ImageIO;
public class Hoge {
public static void main(String[] args) throws IOException {
ImageIO.write(ImageIO.read(new File("moge.jpg")), "jpg", new File("moge.jpg"));
}
}
全然問題なく実行できるんだが? JavaのバージョンとかOSは何?

133:デフォルトの名無しさん
09/01/26 20:42:31
自分で作成したjarファイルの中に外部ライブラリjarを埋め込むにはどうすればよいのでしょうか?

複数のjavaファイルをコンパイルしMyApp.jarにまとめました。
外部ライブラリ(log4, commons-io, commons-*等)をMyApp.jarと同じディレクトリに配置しclasspathに記述することで動作確認できました。

MyApp.jarにライブラリファイルを単に追加しただけだと
実行時に「ミツカラネーヨ」と怒られてしまいます。

134:デフォルトの名無しさん
09/01/26 20:50:48
Fat JarとかOne-JARとかでぐぐってみる

135:デフォルトの名無しさん
09/01/26 21:20:15
>>132なんですって!?自分の環境がおかしいだけなのか!?
OSはXP,Javaは1.6.0_11
いや、もう忘れてください。deleteしてからwriteしたら何事も無く動いたんで・・・
夢でも見ていたんでしょう・・・

136:デフォルトの名無しさん
09/01/26 22:11:30
おい結局何のアドバイスもないの?
何、お前らの実力ってその程度だったの?拍子ぬけだわ~

137:133
09/01/26 22:24:32
>>134
キーワードでぐぐったら有益な情報が見つかりました。
ありがとうございます。

138:デフォルトの名無しさん
09/01/26 23:53:03
>>136
いろいろアドバイスもらってるじゃん。それもわからないようじゃどうしようもない。
このスレは初心者は歓迎するがバカは歓迎しない。

139:デフォルトの名無しさん
09/01/27 00:11:53
>>138
何と勘違いしてるんだ?このアホ

140:デフォルトの名無しさん
09/01/27 00:18:54
IDでないから誰が誰やら

せめて自分の番号ぐらい書け糞野郎

141:デフォルトの名無しさん
09/01/27 01:15:22
>>139
水の中に入れると、どうして乾いたウンコは砕け散るんですか?

142:デフォルトの名無しさん
09/01/27 01:46:05

いろいろアドバイスもらってるじゃん。それもわからないようじゃどうしようもない。
このスレは初心者は歓迎するがバカは歓迎しない。

↑って、答えられないときのここの常連の常套句だよなwwうける。


143:デフォルトの名無しさん
09/01/27 03:03:56
馬鹿は初心者を免罪符にするから嫌われるんだよね。
初心者だろうが、玄人だろうが、ちゃんとまず自分で勉強して、何が理解できなかったのか具体的に書いて、アドバイス受けろよ。
上達する香具師は(初心者や玄人に限らず)、質問の仕方もウマい。

144:デフォルトの名無しさん
09/01/27 05:28:35
980 Mr.名無しさん New! 2009/01/27(火) 05:28:00
>>975
スレリンク(tech板)
ここ
この138と143を徹底的に痛めつけてほしい


145:デフォルトの名無しさん
09/01/27 05:29:11
痛めつけにきたけど?

146:デフォルトの名無しさん
09/01/27 05:29:34
おうおう!毒雑舐めてる奴どいつよ?

147:デフォルトの名無しさん
09/01/27 05:31:31
ウッサンに絡んでる奴どいつだよ?

148:デフォルトの名無しさん
09/01/27 06:28:59
>>144-147
ところで鼻糞って食えるんですか?

149:デフォルトの名無しさん
09/01/27 13:16:06
ネットから有用な情報を引き出したいなら、
ネットに混乱を持ち込んじゃいけない。

150:デフォルトの名無しさん
09/01/27 14:57:20
伸びてると思ったら馬鹿が現れたのか

151:デフォルトの名無しさん
09/01/27 18:03:59
コレクションについてよくわかんないんだけど
これって、オブジェクト版の配列なのか?
しかも、めちゃくちゃ使いやすいように改良したやつ

152:デフォルトの名無しさん
09/01/27 18:12:51
まあそんなもん

153:デフォルトの名無しさん
09/01/27 18:17:38
わかった、どうも

なんか、難しそうな名前付けてたからやる気が失せたが
実際は超簡単だった

154:デフォルトの名無しさん
09/01/27 18:19:08
オブジェクト版の配列と聞いてArrayListを思い出した

155:デフォルトの名無しさん
09/01/27 18:19:29
Enumの初期化について質問です。ネイティブライブラリを読み込んで、
そこから得られる値をJavaの定数にマッピングするクラスなのですが、
初めはこんな感じで実装していました。

public class TestConst {
  static { System.loadLibrary("libNativeHoge");}
  public static final int A = NativeHoge.getA();
  public static final int B = NativeHoge.getB(); ...

次にオシャレにEnumで実装しようとすると、static{}句をEnumの定義に
含めることが出来ないために怒られます。

public enum TestEnum {
  static { System.loadLibrary("libNativeHoge");} // 文法エラー
  A(NativeHoge.getA()), B(NativeHoge.getB()), ...

  private final int nativeVal;
  TestEnum(int nativeVal) {this.nativeVal = nativeVal;} ...

さらに、このEnumクラスをユーティリティクラスで包んで、そちらに
static{}句を移すとコンパイルは通るもののTestEnumの初期化前
にstatic{}句が呼ばれません。

public class TestUtil{
  static { System.loadLibrary("libNativeHoge");} // 切ないことに、呼ばれない
  public static enum TestEnum {...

Enumの初期化前に確実にある処理(上記例ではSystem.loadLibrary)
を実行する方法は何か無いでしょうか?

156:デフォルトの名無しさん
09/01/27 19:13:45
>>155
TestEnumを使用する前にTestUtilクラスをロードする。
説明コードを短くするためにgetAとかをちょっと変えるけど、
public class TestUtil {
static { System.out.println("TestUtil static initializer"); }
public enum TestEnum { A(NativeHoge.get("A")), B(NativeHoge.get("B")), C(NativeHoge.get("C"));
TestEnum(String v) { System.out.println("TestEnum constructor " + name() + ", val=" + v); }
}
}
class NativeHoge {
public static String get(String s) { System.out.println("NativeHoge " + s); return s; }//本当はnativeメソッド
}
class Main {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("TestUtil");/////
System.out.println(TestUtil.TestEnum.A);
}
}
/////の行が無ければA,B,Cを先に初期化しようとするが、
TestUtilが先にロードされればその静的初期化子の方がA,B,Cの初期化より先に呼ばれる。
別にforNameでなくてもTestUtilクラスがロードされるような処理を
TestEnumが使われるより先に行うことをTestEnumの使用規約ということにしてしまう。
例えば、TestUtilにpublic static void init() {}のようなダミーのメソッドを作って、
TestUtil.init()をまず呼んでねってことにすれば使う側も少し楽に。

157:デフォルトの名無しさん
09/01/27 19:16:07
>>155
public enum TestEnum {
  A(NativeHoge.getA()), B(NativeHoge.getB()), ... ;
  static { System.loadLibrary("libNativeHoge");}


158:デフォルトの名無しさん
09/01/27 19:30:59
>>157
それはloadLibraryより先にNativeHoge.getA()が呼ばれる。
enumではAやBの初期化をコンパイラが生成した静的初期化子の中で行うから、
その静的初期化子の処理はTestEnumの静的初期化子の中で最後に実行される。

159:157
09/01/27 19:33:35
すまん、適当なことを言った。順番が問題だなあ

public enum TestEnum {
  A(NativeHoge.getA()), B(NativeHoge.getB()), ... ;
}

class NativeHoge {
  static { System.loadLibrary("libNativeHoge"); }


160:デフォルトの名無しさん
09/01/27 19:38:49
>>159
あー、そうか。難しく考えすぎた。
nativeメソッドがNativeHogeクラスに抽出されているからその方法でいいんだね。
TestEnum自身がnativeメソッドを持っていて、
それをTestEnumのコンストラクタで呼び出す場合と混同してた。失礼した。

161:デフォルトの名無しさん
09/01/27 20:09:12
>>156
初めは確かにそういう実装だったのですが、たかが定数を読み出す
ためにinit()なんかやってられるか~というクレームが(笑)。

>>157
う~ん、なるほど。Enum要素の列挙のあとであればstatic{}句は書ける
のですね。勉強になりました。でもやはり呼ばれるのは各要素が初期化
された後でした・・・

>>159
はい。確かにその解決策が確実なんです。ただNativeHogeはSWIGで
自動生成されたクラスで、出来ればあまり弄りたく無かったのです。
ただ調べてみるとSWIG側の工夫でNativeHogeにstatic{}句を埋め込む
事も出来そうなので、>>159の方向で調べてみます。

色々ありがとうございました。

162:デフォルトの名無しさん
09/01/27 21:07:39
>>161
public enum TestEnum {
  A(TestConst.A), B(TestConst.B), ... ;

  private static class TestConst {
    static { System.loadLibrary("libNativeHoge");}
    static final int A = NativeHoge.getA();
    static final int B = NativeHoge.getB(); ...

むずいな。

163:デフォルトの名無しさん
09/01/27 22:39:51
javaを独習してるのですが
メンバークラス(またはインナークラス)の存在価値が分かりません。
クラスの外にあるクラスも中にあるクラスも使うときはnewするんだから同じじゃないんですかね?
やっぱり大きいプログラム組むような経験が無いとピンと来ないものでしょうか?

164:デフォルトの名無しさん
09/01/27 22:48:21
>>163
staticが仕えないので身内だけで仕事できる=保守性最強

嘘だお^^

165:デフォルトの名無しさん
09/01/27 22:53:59
>>161
SWIGで生成されるNativeHogeのJavaバインディングは
loadLibraryしないと使えないこと前提なのに
その処理自体は自動生成されるソースにはデフォルトで入ってないの?
NativeHogeを使うためには使用前に別の場所でloadLibraryせよっていうのは
init()なんかやってられるかというのと同じ文句が出そうなんだけど

もしSWIG側をいじりたくないなら
NativeHogeにgetAなどの処理を委譲するクラスを作って
そのクラスのstaticイニシャライザでloadLibraryするとかは?
class NativeHogeDelegator {
static { System.loadLibrary("libNativeHoge"); }
public static int getA() { return NativeHoge.getA(); }
...
使うときはNativeHogeDelegator.getA()の方を使う
ただ自動生成ということなのでgetAとかのメソッド名は頻繁に変わることはないという前提で
TestEnumで直接getAとかの呼び出しを書いているので頻度は高くないとは思うけど


166:163
09/01/27 22:59:58
>>164
ありがとうございます。
全く理解できませんがwなんかすごく意味があるのは分かりました。
勉強する気湧いてきたぁああ

167:デフォルトの名無しさん
09/01/27 23:04:54
>>163
最近メンテされてないけど
URLリンク(javafaq.jp)

168:デフォルトの名無しさん
09/01/27 23:10:47
>>165
調べてみたら、ネィティブメソッドをラップするクラスの定義に
Javaコードを流し込む指示をSWIGの定義ファイル(iファイル)に
書けることが分かりました。実際サンプルは次のようなもので、

%pragma(java) jniclasscode=%{
 static {
  try {
   System.loadLibrary("exampler");
  } catch (UnsatisfiedLinkError e) {
   System.err.println("Native code library failed to load. \n" + e);
   System.exit(1);
  }
 }
%}

これを少し弄ることでNativeHogeに相当するクラスの定義に必要な
static{}句を流し込むことが出来て万事解決しました。というわけで、

>SWIGで生成されるNativeHogeのJavaバインディングは
>loadLibraryしないと使えないこと前提なのに
>その処理自体は自動生成されるソースにはデフォルトで入ってないの?

デフォルトでは入っていないけど手動の解決策は用意済みなので
ちゃんとドキュメントのサンプルは隅から隅まで読みましょう、という
教訓でしたw

169:デフォルトの名無しさん
09/01/28 00:17:49
お前らメモリどんくらい積んでる?

170:デフォルトの名無しさん
09/01/28 00:22:39
16G

171:デフォルトの名無しさん
09/01/28 01:17:25
offspringというArreyListにGeneというクラスを足してって、Listの中にいくつクラスが存在するかを知るためにはどう書けばいいの?
List.size(offspring)を使うと、GeneというクラスにはList.sizeは使えないって表示されるんだが

172:デフォルトの名無しさん
09/01/28 01:25:26
>>171
>クラスを足して
これは、何をすること?
っていうか、クドクド説明するより、
ソースをアップローダに上げた方が早いのでは?

173:デフォルトの名無しさん
09/01/28 02:05:10
インナークラスにすれば、メソッド内の変数がインナークラス内も範囲内になるから便利だよ。コードもまとまってめんどくさくないし。

174:デフォルトの名無しさん
09/01/28 14:57:08
P12.java:45: シンボルを見つけられません。
シンボル: メソッド getParameter(java.lang.String)
場所 : P12 の クラス
num=Integer.parseInt(getParameter("number"));
^

このエラーの意味を教えてください。
お願いします。

175:デフォルトの名無しさん
09/01/28 15:02:24
>>174
ムリ、情報少なすぎ

176:デフォルトの名無しさん
09/01/28 16:21:50
numって変数がないぞってエラー

177:デフォルトの名無しさん
09/01/28 16:24:37
いや、getParameterってメソッドがないぞってエラーかもしれん

178:デフォルトの名無しさん
09/01/28 22:42:58
いまからJavaを勉強しようと考えています。
したい事は、フラットファイルを読み込んで中の文字列を処理し、
別ファイルに吐き出すことです。

こんな感じの事がしたい人が読むといい実用的な参考書があれば、教えてください。
# perlを少しかじったことがある程度の無謀な新参レベルです

179:デフォルトの名無しさん
09/01/28 23:14:50
実用的な参考書か

■読んでないけど参考になりそうだ
Eclipse 3.4で超簡単Javaプログラミング基礎入門 (1/5) - @IT
URLリンク(www.atmarkit.co.jp)

後は、下のキーワードでぐぐればサンプルがいくらでも出てくるぜ
「java テキストファイル 読み込み」
「java テキストファイル 書き込み」

180:デフォルトの名無しさん
09/01/28 23:43:49
しかし、ほんといい時代だ

インターネッツに繋げてれば、参考資料読み放題だぜ

181:デフォルトの名無しさん
09/01/28 23:54:52
誰かが作ったフレームワークを使ってそこからクラスを作って組み込むことは出来るんですが
自分でフレームワークを作りたいときオススメの参考書ないすか?

182:デフォルトの名無しさん
09/01/29 00:08:44
>>179
紙媒体を探してたりしてたわけですが

ありがとうございます。

183:デフォルトの名無しさん
09/01/29 00:32:42
紙はわかんないんだな

グーグル先生に聞いてれば勉強できちゃうって思うようになっちまったもんで。
PCから離れて勉強する機会があるとやっぱ紙媒体も必要だよね

184:デフォルトの名無しさん
09/01/29 08:11:00
>>181
「Java言語で学ぶデザインパターン入門」
URLリンク(www.amazon.co.jp)

これ読んでも、フレームワークが作れるかどうかは経験次第だが。

185:デフォルトの名無しさん
09/01/29 10:52:51
>>174
ファイル P12.java の 45行目に書かれている、
引数にStringを持つメソッド getParameter の定義を
見つけることが出来ませんでした。の意。

大抵はスペルミス。static の付け忘れとかも。
行数の表示されるエディタを使うとヨロシ。

186:デフォルトの名無しさん
09/01/29 12:22:36
COBOLしかやったことがないのですが、
Javaを覚えるのは大変ですか?
家のPCでJavaを用いたオリジナルアプリケーションを作成することは可能でしょうか。

187:デフォルトの名無しさん
09/01/29 12:25:44
家のPCでCOBOLを用いたオリジナルアプリケーションを作成していたのなら難しくはない。

188:デフォルトの名無しさん
09/01/29 12:38:40
>>187
ありがとうございます。
COBOLは出先の金融機関でしか触ったことがないです。
PCでもCOBOLプログラミングができるとは聞きましたが・・・。
例えば・・・小遣い帳や住所録などの管理システムも作れるでしょうか。

189:デフォルトの名無しさん
09/01/29 12:41:48
COBOLは潰しが利かないから、何を覚えるのも大変だと思う。

190:デフォルトの名無しさん
09/01/29 13:02:21
>>189
まあ、他の言語に移ると、扱える整数が小さかったりして驚くよね。
構造体の定義や初期化も面倒くさいし、
表示フォーマットも不便だし・・・

191:デフォルトの名無しさん
09/01/29 13:32:03
他のスレでは.NET使いたいって言ってるし釣りっぽいな

192:デフォルトの名無しさん
09/01/29 13:42:08
>>191
なんで分かるの?

193:デフォルトの名無しさん
09/01/29 14:52:01
質問です。
サーバーサイドJavaをレンタルサーバーでやりたい場合、
サーバーには何を入れたらいいんですか?

サーブレットとかは何に格納すればいいんでしょうか?


194:デフォルトの名無しさん
09/01/29 15:13:37
COBOLだろうが何だろうが基本はアルゴリズムだから同じでしょ
昔の知識で言うとCOBOLは出来るけどBASICは出来ないってありえないだろ

195:デフォルトの名無しさん
09/01/29 15:20:04
Netbeans6.5で初期ページになってる水色のページのタイトル部分だけ
文字化けするんだけど、同じ症状の人いますか?
ネットで調べたら、公式サイトで症状は確認されているが原因は不明とのこと。

196:デフォルトの名無しさん
09/01/29 15:56:04
Netbeans6.5スレにいけ。
専用スレがあるならそこで聞け

197:デフォルトの名無しさん
09/01/29 16:23:09
>>191
COBOLの.Netって富士通が出してるやつしか無いんじゃね?
海外では使ってないのかな?

198:デフォルトの名無しさん
09/01/29 18:30:03
.net使いたいって言ってるだけでcobolを使いたいって言ってるとは限らないんじゃね?
>>191が言うそれと>>186が同一人物だとして>>186はjavaに興味を示してるわけだし
.netでc#やりたいってその別のスレでは言ってるのかもしれん
そんなことより.net版のcobolなんてあるのならjvm上で動作する言語はいっぱいあるからjcobolとかもありそうだな

199:デフォルトの名無しさん
09/01/29 20:49:19
何故インスタンスを作らなくても、大丈夫なのかよくわかりません
どなたか回答お願いします

public class SampleApp extends JFrame{
public SampleApp(){
  this.setSize(new Dimension(300,200));
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setLayout(null);
     略


200:デフォルトの名無しさん
09/01/29 20:49:34
.NETってプログラミング言語ですか?

201:デフォルトの名無しさん
09/01/29 20:53:26
>>199
このクラスのインスタンスを別のクラスからつくるんだろ

202:デフォルトの名無しさん
09/01/29 21:05:57
>>201
ありがとうございます

203:デフォルトの名無しさん
09/01/29 21:08:23
>>199
簡単に言うとthisは自分を参照するから。
実行時は実行中のコンテキストを指す・・・というと誤解があるか。

204:デフォルトの名無しさん
09/01/29 21:19:13
>>203
public SampleApp()がどこかでインスタンス化されるから
インスタンス名を省略できるってわけですね?


205:デフォルトの名無しさん
09/01/29 21:29:27
よそに投稿しようと思ったけどやめた。削除されるから。
馴染み深いここにする。すれ違いだけど、聞いてくれ。

昨日、大発見したんだ。

ハルマゲドンっていうじゃん。あれって、素の言語の意味だと、「ギルドの丘」っていう意味なんだって。
で、聖書の3:16章にハルマゲドン(ギルドの丘)で最終戦争が起こるっていう予言があるんだと。

で、聖書とマヤの予言には大昔のつながりがあるんだと。マヤの暦は2012年12月21日を最後に消えてるでしょう。 だから、なにかあるんじゃないかと思うんだ。。

やっぱ、最終戦争(第3次世界大戦)じゃないかって本とかでいわれてるけど、一番問題なのは、ハルマゲドンの本当の意味のギルドの丘の場所なんだけど、イスラエルのガザの近くなんだって。

まじで、やばくね?

ハルマゲドンっていうじゃん。あれって、素の言語の意味だと、「ギルドの丘」っていう意味なんだって。
で、聖書の3:16章にハルマゲドンで最終戦争が起こるっていう予言があるんだと。

で、聖書とマヤの予言には大昔のつながりがあるんだと。マヤの暦は2012年12月21日を最後に消えてるでしょう。

やっぱ、最終戦争(第3次世界大戦)じゃないかとかいわれてるけど、一番問題なのは、ハルマゲドンの意味のギルドの丘の場所なんだけど、
これってば、イスラエルのガザの近くなんだって。

まじで、やばくね?昨日、深夜ブックオフで買ってきたオカルト本を組み合わせるとこういう結果になるんだけど。

206:デフォルトの名無しさん
09/01/29 21:35:33
メギドの丘な

207:デフォルトの名無しさん
09/01/29 21:44:41
>>207
そうそれ!わかってくれたか。やっぱやばいよ。まじで。

208:デフォルトの名無しさん
09/01/29 22:21:20
メギドの丘は宅地開発でもう無いよ

209:デフォルトの名無しさん
09/01/29 22:38:16
ぱっと見エロゲの話かと思った

210:デフォルトの名無しさん
09/01/30 00:09:17
自演乙w

211:デフォルトの名無しさん
09/01/30 02:45:51
家のwindowsのパソコンにeclipseをダウンロードしてつかっているんですが、
マウスイベントのソースを書くときだけエラーがでます。
授業でもらったソース通りにまるまる書いてもだめです。
ちなみに授業でもecipseを使ってまして学校のPCだったら上手くいくんです。
スペルミスもさんざん確かめました。ダメです。
他のイベントは試したことないですが・・・
テストも近かったりするんで誰かお願いします


212:デフォルトの名無しさん
09/01/30 03:01:52
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
→public class App24 extends Applet implements MouseMotionListener {
int x = -5 , y = -5;

public void init() {
→ addMouseMotionListener(this);
setBackground(Color.white);
}
public void mouseDragged( MouseEvent e ) {
x = e.getX();
y = e.getY();

repaint();
}
public void mouseMoved( MouseEvent e ) { }

public void update(Graphics g) {
paint(g);
}

public void paint(Graphics g) {
g.fillOval(x , y , 3 , 3 );
}
}
>>211です。 
例えばこのようなソースを書いたとします。
すると、4,8行がおかしいようです。

213:デフォルトの名無しさん
09/01/30 03:05:39
addMouseMotionListener((MouseMotionListener)this)

214:デフォルトの名無しさん
09/01/30 03:15:01
返信ありがとうございます。
試しましたが同じ所にエラーが出たままみたいです。
他に問題点はないでしょうか。
よく分かりませんがソースを書く以前に設定とかも適当に
やってるんでその辺におかしいと思う点あればそっちも
考えてくれたらです。こうゆう設定にしないとイベントは
使えないんだみたいな・・・

215:デフォルトの名無しさん
09/01/30 03:16:25
>>212
矢印入ってるからじゃねーの?

216:デフォルトの名無しさん
09/01/30 03:18:37
JDKのバージョンが違うとか?

217:デフォルトの名無しさん
09/01/30 03:23:15
>>215矢印はエラーがでる場所をわかるようにいれました。
実際は入れてないです。
>>216何のことかさっぱりわからないいんです。
とりあえずソースに問題がないならもう無理っぽいですね・・・


218:デフォルトの名無しさん
09/01/30 03:24:47
>>217
エラーメッセージくらい貼れよ、カス

219:デフォルトの名無しさん
09/01/30 03:49:23
まず学校の環境と自宅の環境が違うんだろ。
学校の先生に相談してみたら? テストの点数悪くてもやる気で成績くれるかもよwww

具体的な環境設定はこっち。
Eclipse統合M26【Java/C/PHP/Ruby/Python/Perl】
スレリンク(tech板)l50



第三次世界大戦でも起きたら世界不況脱出するかもな。不謹慎だが。
第二次世界大戦の前にも大恐慌起きて、世界大戦で緊急財政支出行って持ち直したよね。



COBOLは出来るけどBASICは出来ないじゃなくて、BASICじゃやってられないって方が大きいだろう。
器用貧乏であれこれ出来るなら、プロジェクト毎に適当に言語決められてもなんとか成るが、
普通は、新しい言語覚えるのは非常にコスト掛かる物だろ。
基本はコミュニケーションでも、日本語使いが、英語覚えるのは大変だぜ。日本語をそのまま使えたほうが遥かに便利。

220:デフォルトの名無しさん
09/01/30 05:17:43
>>219
鼻糞は黙っとれ

221:デフォルトの名無しさん
09/01/30 05:35:08
エクリプスでコントロールきー+シフトきー+Oでインポート調べてくれる機能あるけど
あれGUIでやるにはどこ押せばいいの?

222:foo
09/01/30 08:36:08
Velocity で、テンプレートから利用できる変数の一覧を出力する方法ってあるかな?グローバル変数のダンプでもいいけど…

223:デフォルトの名無しさん
09/01/30 10:54:41
>>212
は基本的なオブジェクト指向の概念もわかってないくせに
GUIやらアプレットやらやろうとしてるのが間違い
入門からやり直せ

224:デフォルトの名無しさん
09/01/30 14:28:53
質問です。

機種依存文字を扱う必要があって、EUC_JPではなく
EUC_JP_Solaris
という文字コードに変換してファイルに出力しようとしているのですが、「№」の文字だけ上手く変換できません。
他の文字「①」などは正常に出力されてます。

OSはウィンドウズです。
理由や対処法をご存知な方はいらっしゃいませんか?

「~」の変換だけでも頭が痛かったのに……orz


225:デフォルトの名無しさん
09/01/30 15:19:27
EUC_JP_Solarisっていうcnarsetに№っていう文字がないんじゃない?
どうみても拡張文字だし。

226:デフォルトの名無しさん
09/01/30 15:19:50
charsetね

227:デフォルトの名無しさん
09/01/30 16:54:53
ソラリスが動作する開発環境が必要では?

228:デフォルトの名無しさん
09/01/30 18:58:33
エクリプスでコントロールきー+シフトきー+Oでインポート調べてくれる機能あるけど
あれGUIでやるにはどこ押せばいいの?


229:デフォルトの名無しさん
09/01/30 20:33:38
>>225-226
普通に考えたらそうなんだけど確証と、№に対する対処法が欲しかった

>>227
ほかの文字はXPで動いてます。
ただのEUC_JPだったら①だって変換できないですよ。

そもそも拡張文字なんてどうせウィンドウズ以外じゃ表示できないんだから諦めてくれればいいのにorz
ウィンドウズ以外じゃ使わないシステムだからそんな言い訳が通用するはずも無く……

230:デフォルトの名無しさん
09/01/30 20:41:30
ウィンドウズ以外で使わないんなら EUC 使わないで SJIS系の windows-31j つかっときゃいいんでは?

231:デフォルトの名無しさん
09/01/30 21:13:25
>>230
EUC_JPで他システムに送るからeuc系以外不可です。

けどwindows-31j から直接(うにを介さず)EUCに変換できれば上手くいくかもしれないですね。 そんなことできるか知らないですけど。

232:デフォルトの名無しさん
09/01/30 21:24:04
>>231
変換先がないって言ってんだから、送られた側のシステムで№を使うことはないんじゃねーの?

233:デフォルトの名無しさん
09/01/30 22:10:13
>>232
試してもらえば分かると思いますが、
サクラエディタや秀丸エディタで「№」をEUC_JPで保存できますし開けます。

あと事の発端はシステムから送りかえされてきたファイルに①などがあったことなんで使わないとはいいきれないんです。


ここに居る人のレベルでは対処不可ですか? とちょっと煽ってみる。

現象自体は「№」を含む文字列を文字コードにEUC_JP_Solarisを指定してファイル出力するだけで再現すると思います。 (再現しなかったらバージョンの問題など、別の理由になるので再現しないならそのほうがありがたいのですが……)

「№」をEUC_JPで出力したい、ただそれだけなんです。 よろしくお願いします。


234:デフォルトの名無しさん
09/01/30 22:16:49
冗談でもそんな煽り入れられたら死ねといいたくなるね

235:デフォルトの名無しさん
09/01/30 22:27:44
そもそもEUC_JP_Solarisで①やら対応しているのか?
EUC_JP_MSなんて物が存在してるようで、秀丸で保存できるのはEUC_JP_MSだから?か?

236:デフォルトの名無しさん
09/01/30 22:39:24
>>235
javaで使う方法がありますか? その文字コード。

Javaが内部でうにに勝手に変換するのが問題なんです。
うにには本来拡張文字が無いので。


237:デフォルトの名無しさん
09/01/30 22:47:13
>>236
サポートされているエンコーディング
URLリンク(java.sun.com)

javaの5.0かせサポートされてるくさい

文字コード表
URLリンク(ash.jp)

そしてJISX0208にNo.はある。
しかしjavaはうにとの相互変換でアボーンしちゃうんだよなどうしたものか

238:デフォルトの名無しさん
09/01/30 23:01:03
> うにには本来拡張文字が無いので。
件の№はU+2116。ちゃんと存在する。

239:デフォルトの名無しさん
09/01/30 23:09:12
>>237
EUC_JP_MSで検索したらヒットしなかったんですけど、EUC_JP_Solarisの話ですか?
0208にあるならEUC_JP_LINUX 使えば上手くいく可能性はありますね。
上手くいくなら
EUC_JP_LINUXとEUC_JP_Solarisでそれぞれエンコしてバイト単位で比較して補完するってこともできなくは無いか。一からエンコードプログラム書くよりはましだろうけど…

>>238
そうなんですか? JAVAでバイト吐かせて確認してたのでその値であることは知ってましたが、
どこかの文字コード対応表では未対応扱いになってたので正式なものではないのかと思ってました。

存在するかどうかはあまり問題じゃなくて、変換できないのが問題なんですけどね。

240:デフォルトの名無しさん
09/01/30 23:09:34
>そしてJISX0208にNo.はある。
ないよ。その表はフォントが対応してると勝手に表示しちゃうだけ。

JIS X 0208 では13区は使われてない。
だから独自拡張する人達に13区勝手に使われちゃってるんだけど。

241:デフォルトの名無しさん
09/01/30 23:17:20
>>240
なんというカオス

eucJP-ms
URLリンク(www2d.biglobe.ne.jp)

ここの表だと0208にはない事になってるね
つまり、0208に存在しない№がEUC_JP_Solarisでバケルのは正常な動作なのか

242:デフォルトの名無しさん
09/01/30 23:20:21
>>240
NEC拡張外字って書いてますね。
NEC死ねばいいのに。


243:デフォルトの名無しさん
09/01/30 23:24:10
>灰色のコードポイントは、IBM特殊文字でも定義されています。
こっちに変換されている悪寒

244:デフォルトの名無しさん
09/01/30 23:31:15
>>243
テラパッドでEUCで保存したら0xADE2で保存された。

だが、0208には№は存在しないんだから、
EUC_JP_MS→うにに→EUC_JP_Solarisで破壊されるのは正常くさい。
※EUC_JP_MS→うにに→EUC_JP_MSでも破壊されるかもしれんけどw

そして、最大の問題はEUC_JP_Solarisに存在しない筈の№が、
>>231のシステムで使われているかどうか。
windowsで使えるんだから使えないのはおかしいとか電波な事を客が言うかどうか。

245:デフォルトの名無しさん
09/01/30 23:43:56
>>244
EUC_JP_Solarisに存在するかどうかより使えるかどうかが問題だから
残念ながら多分使えませんは通用しないです……

というか機種依存文字だから使えませんは通用しなかった。


246:デフォルトの名無しさん
09/01/30 23:48:01
>>245
やっぱそうなるか~そっちのシステムの実装によっちまうんだな。

しかし、対策考えると頭から湯気がでそうだな

247:デフォルトの名無しさん
09/01/30 23:48:48
とりあえず、EUC_JP_Solarisのシステムで№を使ってるか、使えているかを調べんとあかんね

248:デフォルトの名無しさん
09/01/30 23:50:38
>>246
正直この仕事で文字が嫌いになりました。


249:デフォルトの名無しさん
09/01/30 23:58:55
長い間ありがとうございました。

結論は「正攻法はなし」って感じですねorz
独自で文字セット作成がんばります……


250:デフォルトの名無しさん
09/01/31 00:09:14
>>249
オマエが勘違いしているだけ。
バカってそんなもん。

251:デフォルトの名無しさん
09/01/31 00:11:47
>>250の意味がよく分からないんだけど、EUC_JP_Solarisで№がファイルに出力できましたよ、って意味?


252:デフォルトの名無しさん
09/01/31 00:15:27
最初の№がでないって悩みがバカなのか、
正攻法はなしという判断がバカなのか。

どっちだろね?

253:デフォルトの名無しさん
09/01/31 00:16:23
0x8FA2F1 に変換できて喜んでる人なんでしょう

254:デフォルトの名無しさん
09/01/31 00:28:13
public List method(){
  try {
    return new ArrayList();
  } catch (Exception e) {
//ここで非チェック例外を投げないと
//このメゾットは型list を返す必要があるというエラーになる
  }
}
なぜコレクションを返すときに非チェック例外を投げないとエラーになるのでしょうか

255:デフォルトの名無しさん
09/01/31 00:30:57
>>254
public List method(){
  try {
    return new ArrayList();
  } catch (Exception e) {
  }
return null; //←これはないの?
}


256:デフォルトの名無しさん
09/01/31 00:36:34
>>254
エラーというのは、コンパイル・エラーのことですか。

例外が発生した場合の流れに、メソッドを抜ける方法が書かれていないから。
非チェック例外は、メソッドを抜ける方法の一つ。

257:デフォルトの名無しさん
09/01/31 01:41:54
メゾット言う奴はたいてい釣り

258:デフォルトの名無しさん
09/01/31 02:56:42
0xADE2をファイルから入力
EUC_JP_Solaris: №(0x2116)
EUC_JP_LINUX: ?(0xFFFD)
EUC_JP: ?(0xFFFD)

'№'をファイルに出力
EUC_JP_Solaris: 0x8FA2F1
EUC_JP_LINUX: 0x3F
EUC_JP: 0x8FA2F1

0x8FA2F1をファイルから入力
EUC_JP_Solaris: №(0x2116)
EUC_JP_LINUX: ?(0xFFFD)
EUC_JP: №(0x2116)

うちの環境だとこうなったけど、どこら辺が悪いの?

259:デフォルトの名無しさん
09/01/31 07:12:11
ここのやつって結構間違い教えるよな

260:デフォルトの名無しさん
09/01/31 10:43:43
>>258
'№'をファイルに出力
EUC_JP_Solaris: 0x8FA2F1
EUC_JP_LINUX: 0x3F
EUC_JP: 0x8FA2F1
↑これをEUCを扱えるエディタで開いてみて。 3バイトの方になると多分化けるから。


261:デフォルトの名無しさん
09/01/31 11:21:56
>>260
たとえばFireFoxなら?

262:デフォルトの名無しさん
09/01/31 12:45:43
>>256
ご説明ありがとうございました

263:デフォルトの名無しさん
09/01/31 13:11:25
>>260
EUC_JP_MSだと0xADE2だが、EUC_JP_Solarisだと0x8FA2F1で正解ってことか?

だとすると、winのエディタはEUC_JP_MSで動いてるからEUC_JP_Solarisの№を表示できないのは正常ってことになる。
確認するならEUC_JP_Solarisをまともに扱えるエディタでないとあかんと。

264:デフォルトの名無しさん
09/01/31 13:20:25
0x8FA2F1ってJIS X 0212の№かよ。
EUC_JP_SolarisはJIS X 0212も含んでるから、つまり正解。

>>259
バカは何人集まってもバカって事だな。

265:デフォルトの名無しさん
09/01/31 14:11:42
>>263
8FA2F1 読む場合は補助漢字さえサポートしてれば読める。

EUC_JP_MS は出力時は ADE2 だが、
ちゃんと実装してあれば読み込み時は ADE2 8FA2F1 8FF4AC 全部読めるはず。
Windows API の MultiByteToWideChar WideChatToMultiByte とかに
引数 CodePage として 51932 を渡した場合は補助漢字サポートしないから ADE2 しか読み書きできない。
自前でやらずに Windows API に丸投げしてると 8FA2F1 は読めない、って事になる。

266:デフォルトの名無しさん
09/01/31 17:18:56
結局、変換したデータを持っていく先がどう扱っているか分からなければ、なあ。

267:デフォルトの名無しさん
09/01/31 17:30:27
JavaでWebサービスというのがやってみたいので、初心者でも分かる本を教えてください><;

JavaEE5っていう分厚い本は難しそうです><;

268:デフォルトの名無しさん
09/01/31 18:02:02
>>267
Java のWebサービスは難しいかもな。

269:267
09/01/31 19:49:07
教えてくださってありがとうございます><;

お礼に↓これを教えてあげます><;私も昨年夏買いましたが、重宝しました><;
URLリンク(www.rakuten.co.jp)

270:デフォルトの名無しさん
09/01/31 20:48:06
パッケージにjava.*とjavax.*があるけれど、違いは何

271:デフォルトの名無しさん
09/01/31 20:51:44
文字列の変換はpure javaで自前で書くのが一番安心。
Java MEの話だが実機で扱える文字コードがばらばらなのでShift-JISとUTF-8とUTF-16の相互変換を自前で書いたよ。

272:デフォルトの名無しさん
09/01/31 22:22:48
まったくの初心者なんだけど、
未経験者として就職するにはどのくらい覚えたらいいか目安的なのない?
今、入門書で抽象クラスやらインターフェースやら覚えたんだけど・・・

273:デフォルトの名無しさん
09/02/01 01:32:08
他システムがソラリスなんだろ。
で、あっちはあっちでソラリスしか使ってないんだから他で使うのは諦めろよって仕様なんだろ。

黙ってソラリス使っとけ。理由は他システムとの連携のためだ。


javaって実行環境依存な所があるから、システム連携で嵌まりたく無ければ統一しとけ。

274:デフォルトの名無しさん
09/02/01 01:40:16
>>"'#

275:デフォルトの名無しさん
09/02/01 01:42:31
>>273
EUC_JP_Solarisはソラリス限定の文字コードじゃない。
あとEUC_JP_Solarisが問題というよりは№がEUCで出力できないのを問題にしてる。


276:デフォルトの名無しさん
09/02/01 01:44:50
>>267
Webサービス使うだけならeclipseでウィザード起動一発だったような。RADだったかもしれんけど。

277:デフォルトの名無しさん
09/02/01 01:52:34
その環境に対応したクラスを作れば万事解決

278:デフォルトの名無しさん
09/02/01 03:02:58
"東京都 渋谷区 渋谷 1-1-1 キャベツ太郎 03-0000-1111"

みたいな文字列を

"東京都 渋谷区 渋谷 1-1-1"
"キャベツ太郎"
"03-0000-1111"

のように分割したいのですが
"東京都 渋谷区 渋谷 1-1-1" の所にスペースが使われてるのでスペースを区切り文字として扱うことが出来ません

なんかいい方法ないでしょうか


279:デフォルトの名無しさん
09/02/01 03:16:20
>>278
なんか規則性がないと無理だな。
電話番号と氏名は間に空白が絶対に入らないというルールがあるなら、
後ろから空白区切りで電話番号と氏名を切り出して、その前方は全部住所とかそんな感じだ。

280:デフォルトの名無しさん
09/02/01 03:58:31
>>278
氏名と電話番号にスペースが入らないと断言できるなら後ろから取り出すとか。
>>279も言ってるように、なんらかの規則性がないと>>278はただの文字列だし無理。

281:デフォルトの名無しさん
09/02/01 04:22:56
>>278
何かしらデータを区切ってくれたり(規則性を持たせたり)しないと無理

282:デフォルトの名無しさん
09/02/01 06:33:46
無理っぽいね。
"東京都 渋谷区 渋谷 1-1-1 キャベツ 太郎 03-0000-1111" とか
"東京都 渋谷区 渋谷 1-1-1 ハイツ渋谷 101 キャベツ太郎 03-0000-1111" とか
"東京都 渋谷区 渋谷 1-1-1 ハイツ 渋谷 101 キャベツ 太郎 03-0000-1111" とか
"東京都 渋谷区 渋谷 1-1-1 トマト 様方 キャベツ 太郎 03-0000-1111" とか
いくらでも考えられるし。

283:Javaで
09/02/01 10:24:10
現在日本では1万円、5千円、2千円、1千円、500円、100円、50円、10円、5円、1円がある。
金額をあたえると最小の紙幣数、硬貨数で支払うための金種別の枚数・個数を求めるメソッドを作成

37521
1万が3
5000が1
2000が1
500が1
10が2
1が1

ってどうやってつくるんでしょうか?
教えて頂けるとうれしいです。

284:デフォルトの名無しさん
09/02/01 11:15:15
宿題スレ池

285:デフォルトの名無しさん
09/02/01 12:39:52
>>275
もう1つの問題はEUC_JP_Solarisで出力される№と、
EUC_JP_MSで出力される№のコードが違い、
winのエディタで見えなくて、あれあれ?となっている事。

件のシステムがEUC_JP_Solarisといいつつ、
EUC_JP_MSの№じゃないと受け付けないなんてギャグもありえるのが怖いね。

286:デフォルトの名無しさん
09/02/01 13:40:20
>>283
割り算も出来ねーのかよw

287:デフォルトの名無しさん
09/02/01 13:54:37
>>285
EUC_JP_Solarisじゃないと駄目とは言ってなくね?
ウィンドウズで文字コードEUCの№が表示できるコードで出力したいって話でしょ?

288:デフォルトの名無しさん
09/02/01 14:01:03
>>287
最初の質問者はEUCは理解していない様子だ。

289:デフォルトの名無しさん
09/02/01 14:04:26
>>287
暗黙裡の要求は、秀丸やサクラエディタと同じように変換したいと言うことだったらしい。
持って言った先のシステムについて調べたがらなかったのも、そんなものは無かったからなのかも。

290:デフォルトの名無しさん
09/02/01 14:12:35
>>289
だね。

表面上の目的は「EUC_JP_Solarisで№を出力できない」
確認方法は「秀丸で№を表示できない」だったか

しかし、秀丸で№を表示できてもそれはEUC_JP_Solarisの№ではない、
むしろ、秀丸らで表示できないのが正しい姿。

本当にEUC_JP_Solarisの№で出力できればいいのか、
秀丸で表示できる№でいいのかは、彼でなければわからない。

291:デフォルトの名無しさん
09/02/01 14:38:05
まだやってくれてたんか。 

>>290
特殊記号がうにからEUC_JPへの変換で化ける(サクラなどで確認)

EUC_JP_Solarisでやってみたら概ね変換できたけど№は駄目だね(サクラなどで確認)

さぁどうしようか ←いまここ

別にEUC_JP_Solarisでないといけないわけではないです。
意図的には
>秀丸で表示できる№でいい
どちらかというとこっちが正しい。
ただこう言うとShift-JISでいいじゃんとかいいだす人がまた出るでしょ……あくまでEUC_JPファミリー、とでも言えばいいのかな。

やりたいことは、「水色の部分も含めこの表の通りに出力したい」と思ってください。 始めからこの表見つけて張ればここの人たちも混乱しなかったよな……
URLリンク(charset.7jp.net)

今までのレスから理想はEUC_JP_MSを指定する、なんだろうけどJAVAのライブラリにないよね……


292:デフォルトの名無しさん
09/02/01 14:40:06
>>291
表示するのは表示するソフト次第だって、理解できないのか?

293:デフォルトの名無しさん
09/02/01 14:42:01
>>291
EUC_JP_Solarisで変換した№だって、秀丸では表示できないけど、FireFoxでは表示されるよね?

294:デフォルトの名無しさん
09/02/01 14:42:41
>>291
>始めからこの表見つけて張ればここの人たちも混乱しなかったよな……
混乱してるのはオマエで、未だに

295:デフォルトの名無しさん
09/02/01 14:45:53
>>291
おぃぃぃw

>>224見るとEUC_JP_Solarisじゃないとあかんようにしか見えんぞ。
ならEUC_JPで出力してみるかEUC_JP_MSでやってみたらいいんじゃね?

296:デフォルトの名無しさん
09/02/01 14:47:47
>>292-293
ソフト次第って片付けられるならそれで片付けてるよ。

URLリンク(charset.7jp.net)
↑基準はこれでお願いします。

EUC_JP_Solarisだと概ねこの表に沿ったエンコードになるけど、№はこの表から外れた文字コードになりますよね?


297:デフォルトの名無しさん
09/02/01 14:47:48
その表ださずに

>ここに居る人のレベルでは対処不可ですか? とちょっと煽ってみる。

なんてあおってたのか?
マジで首吊って死んどけやwww

298:デフォルトの名無しさん
09/02/01 14:48:05
>>291
その表のとおりだと拡張漢字ないから EUC_JP_MS じゃなくて通称 cp51932 の方だね。
EUC_JP っつったら普通は SS3 の第三第四水準までサポートするし。

299:デフォルトの名無しさん
09/02/01 14:54:00
>>297
224以降でEUC_JP_Solaris以外の話を俺はしてるし、エディタで表示できるかどうかを問題にしてることも話してるから
このスレの聡明な方々なら理解してもらえてると思ってたし、実際一部の人は理解してくれてたようですが。

始めからこの表見つけて張っておけばここまで混乱しなかったと反省はしている。

300:デフォルトの名無しさん
09/02/01 14:58:39
>>299
エディタで表示できないのはエディタ表示できないだけで、EUCとしては正しくでてる。
エディタで見れないとは言ってても、エディタで見れないのはダメとは名言してないしね。

301:デフォルトの名無しさん
09/02/01 15:04:37
>>299
ところでさ、エディタで確認したってのは聞いたけど、
>>231 で言うところの他システムで EUC_JP_Soralis の № (0x8FA2F1)
扱えないか確認したの?

302:デフォルトの名無しさん
09/02/01 15:10:12
>>296
オマエが何をみているか知らないが、例えばWindows上でも、Apple Safariなら13区が表示されないのは分かってるよな?

303:デフォルトの名無しさん
09/02/01 15:11:01
>>300
「~」が問題になったと言えば経験者は分かるよ……
俺の質問が分かりづらかった旨を指摘する不毛なレスをいつまでも続けても
誰にも有益ではないと思うのですがその辺りはそろそろ空気読んでいただけませんか?

>>301
あっちから返ってきたものがこっちでファイルに出力できないのが最大の問題なので、
それは(今は)あまり重要ではないです。

こちらの都合で申し訳ないですが、あくまで「うにの№を>>296表(cp51932?)でファイルに出力したい」を解決したいと考えてはいただけませんか?


304:デフォルトの名無しさん
09/02/01 15:13:16
>>303
経験者だけどわかんなかった(テヘっ
空気はお前が読めよ

305:デフォルトの名無しさん
09/02/01 15:14:26
不毛な質問の仕方しといてそれはないわ~

306:デフォルトの名無しさん
09/02/01 15:15:59
>>303
質問が分かりづらいとかじゃなくて、オマエは今でも勘違いしたまま迷走しているだけだよ。
オマエがしたいのは「EUCに変換する」じゃなくて、「秀丸みたいに変換する」だよ。

307:デフォルトの名無しさん
09/02/01 15:17:38
>>306
しかも、本当に変換したデータを持っていく先があるとすれば、
本当の要件は「秀丸みたいに変換する」ではない可能性が大きい。

308:デフォルトの名無しさん
09/02/01 15:18:13
>>302
だから具体的なエディタ名だしてるだろう?相当偏った環境でもない限りあなたのところでも再現すると思いますよ?
文字コードも>>296表ならcp51932という文字コードという情報もでてるしね。

それでいて>>302に俺がレスしてもレスしなくても俺の周りからの心象が下がる絶妙な文章。

あなたからは質問者を困らせようとしてるとしか思えない雰囲気がでてるよ。

309:デフォルトの名無しさん
09/02/01 15:20:33
バイナリで扱った方が楽な気がしてきたw

文字列として扱うから「秀丸なEUC→うにに→秀丸じゃないEUC」に変身しちゃうんだしね。
javaの中で文字列じゃないと不都合な場面がいっぱいありそうだから無理だろうなぁ。

310:デフォルトの名無しさん
09/02/01 15:22:32
>>308
もう他人の指摘はやめといた方がいいよ。

周りがどんなに熱くなっても、それに付き合ったらだめ。
それこそあなたが空気読めてないし、質問者が煽ったら空気読む以前の問題。

311:デフォルトの名無しさん
09/02/01 15:22:44
>>308
オマエが「この表のように」って言っていても、
その表に№が表示されてると思っているのは、お前のブラウザの都合だって言ってんだよ。

312:デフォルトの名無しさん
09/02/01 15:26:10
ここに居る人のレベルでは対処不可ですか(笑)

313:デフォルトの名無しさん
09/02/01 15:26:15
>>303
WAVE DASH問題とは別だよ。
あれはユニコードの方に複数のコードポイントあるだけだから、
例えば読み込み時に Shift_JIS 使っておいて出力時に Windows-31J 使うと化けるけど
要はシステム内で解決できる可能性の高い話なわけ。

№ の方は EUC の方に複数のコードポイントがあるんで
出力先が期待してるコードポイントが何かとか
読み込み元が吐き出すコードポイントが何かとか
要は相手のシステムの情報がないとどうしようもない。

314:デフォルトの名無しさん
09/02/01 15:26:42
>>309
バイナリで扱えば確かに化けることはないんでしょうけど、
文字列操作を全て自前で作成するのと、変換表を一から作るのとどっちが楽か、ってところですね……


315:デフォルトの名無しさん
09/02/01 15:29:19
変換表なんてどーせ他所からパクってくるだけだろ

316:デフォルトの名無しさん
09/02/01 15:31:29
>>308
> 文字コードも>>296表ならcp51932という文字コードという情報もでてるしね。
                ~~~~~~~~~~~~~~~~~~~~~~~~

317:デフォルトの名無しさん
09/02/01 15:55:34
>>310
ごめんなさい、気をつけます。

>>313
ちゃんと分かってる方がいると安心します。
NECとIBMの二つでしたよね? 13区の方を想定してお願いできますか?

とりあえず今は他システムは(下記で無視できるなら)無視してください。

String str = "№"; //←これをEUC_JP(>>296)の13区の№のあるコードに(実行環境はウィンドウズで)ファイルに出力する

条件としてこれではいけませんか?


318:デフォルトの名無しさん
09/02/01 15:58:49
>>315
どこかでフリーのライブラリになってたりしませんか?
それで済むならそれが一番なのですが。

内容的に需要0ってことはないと思うのですが。

319:デフォルトの名無しさん
09/02/01 16:02:06
ほんとMSのシフトJISには参ったよな。なんでMSはころころと仕様変更するかなぁ・・・

320:デフォルトの名無しさん
09/02/01 16:02:26
ここに居る人のレベルでは対処不可ですか(笑)

321:デフォルトの名無しさん
09/02/01 16:18:21
public class sample
{
public static void main(String[] args)
{
int i [] ={6,5,4,3,2};
System.out.println("最大値" + int max []);
}
static sample()
{
int max = array [0];
for (int i = 0; i < array.length; i++)
{
Math.max( i, array []);
return valmax;
}
}
}
初心者の質問で申し訳ないのですが
最大値を求めるプログラムなのですが研修の時このような形で解いたと
思うんですがどうもうまくいかなくて、足りない部分や間違ってる部分があったら教えていただきたいです


322:デフォルトの名無しさん
09/02/01 16:21:10
>>321
研修やり直してきた方がいいレベルのソース?に見えるが……
ほんとにこれJAVA?


323:デフォルトの名無しさん
09/02/01 16:23:44
>>321
研修でこんなことしてるとか。。。
メソッドとか理解してねーだろ
つかつっこみどころ多すぎてもう・・・

324:デフォルトの名無しさん
09/02/01 16:27:10
charsets.jarのソースコード眺めてたが、他にやりたい事があるせいで頭に入らん。

CharToByteEUC_JP_Solarisを改造してCharToByteEUC_JP_HOGEとでもすればなんとかならんかね?

325:デフォルトの名無しさん
09/02/01 16:28:10
>>321
public class sample{
public static void main(String[] args){
int i [] ={6,5,4,3,2};
System.out.println("最大値" + sample(i));
}
static int sample(int[] array){
int max = array [0];
for (int i = 1; i < array.length; i++){
max = Math.max( max, array [i]);
}
return max;
}
}

こんな感じに習ったんじゃないか?

326:デフォルトの名無しさん
09/02/01 17:04:36
>>322,323,325
すいません、ご指摘ありがとうございます、まだ研修は始まったばかりで今後も続くので
また1から参考書読み直してきます

327:デフォルトの名無しさん
09/02/01 17:06:42
>>324
何にしてもエンコーディング指定で解決、とはいかなそうってことですよねorz

>>ALL
自前でやるしかないってわかっただけでも収穫です。 ありがとうございました。
あと質問が非常に分かりづらくて申し訳ありませんでした。



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