【初心者】Java質問・相談スレッド114【歓迎】at TECH
【初心者】Java質問・相談スレッド114【歓迎】 - 暇つぶし2ch713:デフォルトの名無しさん
08/05/01 01:35:51
>>711
まさか、HTMLでやってて、ブラウザが空白を省略したなんてオチじゃないよね。

714:711
08/05/01 02:01:13
>>713
そのまさか、かもしれない。今やってるのJSPだし。
<%@ page trimDirectiveWhitespaces="true" %>とかいじってたよorz...

715:711
08/05/01 02:04:59
<pre></pre>のタグで挟んだら思い通りに出来ました。
解決までに4時間\(^o^)/

716:デフォルトの名無しさん
08/05/01 02:08:46
回線切って首つって死ねば良いと思うよ。

717:デフォルトの名無しさん
08/05/01 12:00:14
誰か質問に答えてください

クラスの中のstaticで定義された変数って
Cでいうグローバル変数じゃない?
Cではさんざんグローバル変数嫌われてたけど、
何でJAVAでは認められてるの?

718:717
08/05/01 12:00:41
すみません、追加です

お願いします、誰か教えてください

719:デフォルトの名無しさん
08/05/01 12:08:21
static変数を使うか使わないかは自由。
当然使わない方が好ましいけど、final として定数のように使うことは便利だから用意されている。

720:デフォルトの名無しさん
08/05/01 12:10:42
>>719
なるほど、ありがとうございます

721:デフォルトの名無しさん
08/05/01 12:10:59
もちろんpublic staticな変数はグローバル変数的な使い方もできる
一般的に乱用は好ましくない

ただ例えばprivateで修飾すればアクセスを制限できる
getter、setterメソッドを追加してやればアクセスを制御できる
こういう点で単なるグローバル変数とは違う

722:デフォルトの名無しさん
08/05/01 12:12:25
>>721
ありがとうございます

723:デフォルトの名無しさん
08/05/01 12:33:01
クラスファイルが大きくなってきて
ガベージコレクトか最適化か分からないけどカクカクするようになってきました。

そこでクラスファイル中で初期化だけに使う関数を消したいんだけど無理?
ゲームの実行中は初期化に使う関数をガベージコレクトの対象から外したいのです。

724:デフォルトの名無しさん
08/05/01 12:33:58
メソッドはGCの対象にはならん。
クラスを分割して小さくしろ

725:デフォルトの名無しさん
08/05/01 13:34:22
クラスを分割してもクラスローダを分割しないと回収されないよ
でも効果は薄そうな気がする
とりあえず本当にGCが原因なのか確認しる
-verbose:gc オプション付けて実行すればログが出るから
jconsole を使ってもいいし

726:デフォルトの名無しさん
08/05/01 14:55:22
DatagramPacket に設定できるデータの最大サイズってどこでわかるナリか?

727:デフォルトの名無しさん
08/05/01 15:07:38
どっちかといえばNICとかOS側の制約な気がする

728:デフォルトの名無しさん
08/05/01 15:32:10
それどっかから取れないナリか? ネイティブでもペイロード長分からないんだっけ?

729:デフォルトの名無しさん
08/05/01 15:41:21
jspでフォームに入力されたメールアドレスが正しく無い場合
入力欄の下に”メールアドレスが正しくありません”と表示させたいのですが

どのように実装するのが良いでしょうか?
似たページを複数作るのは手間が掛かりすぎます。


730:デフォルトの名無しさん
08/05/01 15:45:41
JSTL でも使え

731:デフォルトの名無しさん
08/05/01 16:01:00
>>728
取り方はわかんないなぁ。
どうせイーサだし、1500以下じゃだめなんかな?
PPPoEとか考えてるともっと小さくないとだめだろうけど。

>>729
JavaScriptでチェックしたら?

732:デフォルトの名無しさん
08/05/01 20:13:26
Jad と連携させて .class のソースビューワみたいなのを作ってるんですが
そもそも、.NET における Reflector みたいなソフトって
Java にはあるんでしょうか?
よろしくお願いします

733:デフォルトの名無しさん
08/05/01 20:25:49
Refactorってのは知らんけど、あんたさんが作っているのはJadclipseってEclipseプラグインであるぞ

734:デフォルトの名無しさん
08/05/01 20:39:54
Java Native Interfaceはこのスレで質問しても大丈夫ですか?

jchar型の変数にunicodeを代入したいんですがどうしても方法がわかりませんでした。

char型→jchar型の変換は見つけたのですが、char型[]をjchar型にする方法が知りたいです。

8bit(aなど)のものは問題ないのですが16bit("あ"など)がどうしても格納できません。

java神の降臨を願います。


735:デフォルトの名無しさん
08/05/01 20:51:15
めんどくせーので Java 側で byte[] ⇔ char[] 変換メソッド作ってそれを JNI から呼んでる。

736:デフォルトの名無しさん
08/05/01 23:49:04
メソッドの定義でこのようなのがあったのですが
public static <T extends Comparable<T>> void sort(List<T> list)

<T extends Comparable<T>> の部分がよくわかりません…。
この部分では何がどう定義されているのでしょうか?
(T というクラスが Comparable<T> を継承してる???)

Java Generics関連らしいのですが
単純に文法的な記述の意味がわからず困っています

737:デフォルトの名無しさん
08/05/02 00:13:35
> (T というクラスが Comparable<T> を継承してる???)
そんな感じ。

738:デフォルトの名無しさん
08/05/02 00:17:02
『TってのはComparable<T>を実装したTだ』って宣言

739:デフォルトの名無しさん
08/05/02 00:20:52
String extends Comparable<String>とかな。

genericsの導入でComparable#compareToなんかもObjectではなく
特定の型を取れるようになったためにこうなる。


740:デフォルトの名無しさん
08/05/02 00:21:28
implementsですた。


741:デフォルトの名無しさん
08/05/02 01:08:33
iアプリを勉強しようと思うけどどれをDLすればいいですか?
URLリンク(www.nttdocomo.co.jp)
あとこれもどれなのかわかりません。
URLリンク(www.eclipse.org)

742:736
08/05/02 01:10:34
>>737-740
レスありがとうございます。

まだわからない所があるので、もう少し相手してもらえると助かります。

ドキュメントによると Comparable は インターフェースですよね。
インターフェースは継承ではなく実装するものだと理解してましたが
この場合はなぜ継承されているんでしょうか?

743:デフォルトの名無しさん
08/05/02 01:26:39
インターフェースも継承できる。
使いたいなら実装する必要があるだけ。



744:デフォルトの名無しさん
08/05/02 01:27:21
補足 この場合の使うというのはインスタンスを作るということに近い。

745:736
08/05/02 02:28:32
>>743-744
う~ん、よりわからなくなってきました。(´~` ;)
もう一度インターフェースについて勉強しなおしてきます

746:デフォルトの名無しさん
08/05/02 02:32:18
>>733
レスありがとうございます
Jadclipseを実際に使用したところ
自分が欲しい機能を概ね満たしていたので良かったです
ありがとうございます

747:デフォルトの名無しさん
08/05/02 08:58:45
Servletの話で恐縮ですが
<input type="text" name="group[1].line[10].name" value="hoge">
といったように名前のついたパラメータをサーブレット側で
取得しているのですが現在は1と10のところをループカウンタで
まわして取得しているのですがあまり処理速くありません。
美しくそして速く処理できるアルゴリズムというか方法は
ありませんでしょうか?

748:デフォルトの名無しさん
08/05/02 11:46:07
>>742
>インターフェースは継承ではなく実装するものだと理解してましたが

インターフェースを継承したインターフェースを作ることができるよ

public interface Foo extends Comparable<Foo> {
 ...
}

749:デフォルトの名無しさん
08/05/02 11:50:08
>>742
extends と implements を特に区別する意味がないっつーか。
T がクラスなのかインターフェイスなのかはわからんし。

750:デフォルトの名無しさん
08/05/02 11:59:26
>>747
なにをどうすると、処理が速くないんだ?
ループさせるのが普通だろ

751:デフォルトの名無しさん
08/05/02 13:50:11
配列を書くとき、
A[] a=A[10];
A a[]=A[10];
文法間違ってるかもしれないけど、
四角の場所の違いはどのような考えがあるんですか?

752:デフォルトの名無しさん
08/05/02 13:56:36
C 風かそうでないか

753:デフォルトの名無しさん
08/05/02 14:02:12
A[] a → Java スタイル
A a[] → C/C++ スタイル
A []a → 変態

754:デフォルトの名無しさん
08/05/02 19:56:39
SimpleDateFormat がうまくいきません。

SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
sdf.parse("Wed, 30 Apr 2008 13:16:59 +0900");

これでうまくいきそうなんですけど
java.text.ParseException: Unparseable date: "Wed, 30 Apr 2008 13:16:59 +0900"
うまくいきません。
どこが間違ってるのでしょうか?お願いいたします。


755:734
08/05/02 20:03:25
>>735
どしてもC側で処理を完結させたいのです。
仕方なくwindows.hを使ったSHIFT-JIS→UNICODE変換を行うことにしたのですが。
UNIXではwindows.hが使えないので困っています。
iconvを使った変換方法があるらしいのですが、iconvってUNIXのコマンドですよね。
C言語内で使用する参考サイトなど教えていただけないでしょうか。


756:デフォルトの名無しさん
08/05/02 20:12:13
>>754
そのままだと解析のロケールが日本なのでコンストラクタかなんかで Locale.US あたりを設定する。

>>755
プリプロセッサで差し替えるなりモジュール化設計するなりしときゃいいじゃん。

757:754
08/05/02 21:37:29
>>756
サンクス!
うまくいきました。

758:デフォルトの名無しさん
08/05/03 01:19:50
JAVA基礎の本を一通り終え、次のステップに移りたいと思っています。
どんなことを勉強したらいいでしょうか?おすすめを教えてください。

例;GUIアプリ、JSP、サーブレットとか

759:デフォルトの名無しさん
08/05/03 01:27:08
自分が欲しいものを作る。

760:デフォルトの名無しさん
08/05/03 02:40:35
コンポーネントにフォーカスを設定するのってどうすればいいんでしょうか?
どこかのサイトでみたのですが、
// TextBox1 にフォーカスを設定する
this.textBox1.Focus();

// Button1 にフォーカスを設定して、成功した場合はその旨を表示する
if (this.button1.Focus()) {
MessageBox.Show("Button1 がフォーカスの取得に成功しました");
}
これってあってますかね?このとおりやってみてもエラーなんです...

761:デフォルトの名無しさん
08/05/03 03:04:40
それなんていう言語?


762:デフォルトの名無しさん
08/05/03 03:07:37
>>760 はスレタイ 100 回読み直して腹を切って死ぬべき

763:デフォルトの名無しさん
08/05/03 03:07:56
ん~javaって書いてあったんですけどやっぱ間違いですよね。。。
あの、、どなたかやり方教えていただけませんでしょうか?

764:デフォルトの名無しさん
08/05/03 03:12:38
MessageBoxつー名前が出てくる時点でMSの言語っぽい気配が濃厚なので、
たぶん.Netの何かじゃない?


765:デフォルトの名無しさん
08/05/03 03:17:04
とりあえずjava.awt.Component#requestFocusとisFocusOwnerを調べよ。


766:デフォルトの名無しさん
08/05/03 03:17:08
もしかしてJ#とか?

767:デフォルトの名無しさん
08/05/03 04:07:25
同じような質問なんですが、Enterキーを押したときに
そのフォームに記入されている値をチェックし、
次のフォームに移動(TABを押したように)したいんですがどうやればいいんでしょうか?


768:デフォルトの名無しさん
08/05/03 04:15:30
Web 作成か WebProg 板逝け

769:767
08/05/03 04:19:44
transferFocusでできました。すいませんありがとうございました。

770:デフォルトの名無しさん
08/05/03 04:24:28
3次元ベクトルを扱いたいのですが、Vector3Dクラスですと値がintのみになってしまいます
doubleも扱える3次元ベクトルクラスは無いのでしょうか?

771:デフォルトの名無しさん
08/05/03 09:41:24
>>770
org.apache.commons.math.geometry.Vector3D でも使えば?

772:デフォルトの名無しさん
08/05/03 11:57:36
Java3Dのjavax.vecmath.Vector3fやVector3dを使えばいいはずだが、
Vector3Dとは何ぞや。


773:デフォルトの名無しさん
08/05/03 12:52:31
>>771
>>772

javax.vecmath.Vector3dで目的のものが出来ました。
私が見ていたVector3Dはnttdocomoの特殊なものだったようです。

774:デフォルトの名無しさん
08/05/03 13:14:16
NetBeansで.jarファイル(Javaアプリケーション実行ファイル)として出力するにはどうすれば良いのでしょうか?

775:デフォルトの名無しさん
08/05/03 14:54:02
>>774
NetBeansスレへ

776:デフォルトの名無しさん
08/05/03 14:56:19
URLリンク(d.hatena.ne.jp)

こういうことになりかねますか?

777:デフォルトの名無しさん
08/05/03 15:25:34
はじめまして。
自宅にネットがつながっていないのですが、javaがつかいたいんです。
ネットカフェに来てUSBにダウンロードをして自宅で使用したいのですが、やり方がわかりません。
どなたか教えていただけませんか?

778:デフォルトの名無しさん
08/05/03 15:45:17
大嘘つきはふしあなしてからにしろ

779:デフォルトの名無しさん
08/05/03 16:19:13
ネカフェに1日行かなければ1ヶ月ネットが使えるよw

780:デフォルトの名無しさん
08/05/03 16:48:24
おまいら ADSL すらまだ使えない田舎や離島のことも配慮しろよ。

781:デフォルトの名無しさん
08/05/03 16:53:04
そんな田舎にはネカフェなんかないだろ

782:デフォルトの名無しさん
08/05/03 16:57:08
そこまで田舎じゃなくてもブロードバンドが普及しない離れ小島状態はけっこうある。
そうかと思えば基地局遠すぎて利得損失が大きいからADSLはダメで
いきなり光が来ることもある。

783:デフォルトの名無しさん
08/05/03 17:01:11
街まで出てネカフェという状況も想像できないゆとり

784:デフォルトの名無しさん
08/05/03 17:37:06
>>780,782,783
だったら777に手取り足取り教えてやれよ

785:デフォルトの名無しさん
08/05/03 17:46:52
今JAVAの勉強中で置換をやっているんですが、先頭の文字だけ置換するのはどうやったらいいのでしょうか。
charAt(0)で取得すると変数は"先頭の文字"としてじゃなくて1つの文字とみなされ他の文字まで置換されて困っています。


786:デフォルトの名無しさん
08/05/03 18:13:55
ゆとりの逆切れ炸裂

787:デフォルトの名無しさん
08/05/03 18:16:47
意味不明
先頭文字置換なら、charAtで取得して、replaceFirstでOK

もしくは、他の置換とかもあることが多いので、StringBuilderに格納してすべての置換処理を行い、toStringで置換後のStringを取得する。
StringBuilderの方が、文字列操作のクラスだけあって、色々やりやすいメソッドが多い

788:デフォルトの名無しさん
08/05/03 18:20:58
>>785
String s = "hoge";

t = "m" + s.substring(1);
とか
u = s.replaceFirst(".", "m");
とか


789:デフォルトの名無しさん
08/05/03 19:16:29
50枚ぐらいのJPanel(その上にも色々なコンポーネントを乗せて10)
見たのですが、CardLayoutで切り替えしているのですがどうも重たいです。
このぐらいの量だとベースのパネルにJPanel をくっつけて削除
した方がいいのですかね?その時に気をつけなければならないことは何ですか?
教えてください。宜しくお願いします。

790:デフォルトの名無しさん
08/05/03 19:22:19
CardLayoutで50枚ってユーザは全部使うの?
使用頻度の低いPanelは開かれたときに初期化するなど工夫すればいいと思う。

そもそも、CardLayoutを勘違いして使っていると思うぞ。
例えばRPGでオープニング画面とフィールド画面と戦闘画面と町の画面をCardLayoutで切り替えるとかやっているんじゃね?

791:デフォルトの名無しさん
08/05/03 19:31:13
>>790
どうもです。
作成して初期化するっていう感じでいいですかね?
作成するときにどれだけかかるかにもよりますが・・・
一応50枚のパネルは共通のインターフェース使っているので、
よく使う物は最初にロードしておいて定数ぽく使って、後は生成するというパターンが
いいですかね?baseのパネルから貼り付けたりremoveしたりでOKですかね?

ちょっと勢い余ってかなりの量のコードを組んでしまったので・・・Javaでこれだけ組むのは
初めてです。
なんだかグラフィックのリソースを食いまくっていて他に影響が出そうです

792:デフォルトの名無しさん
08/05/03 19:41:14
Java以前に、50枚切り替えとか常識的に考えて設計がおかしいだろ

どういう手段を実現したいのかではなくて、どういう目的を実現したいかを説明してみ

793:デフォルトの名無しさん
08/05/03 19:45:10
業務アプリとか作ったことないのか…

794:790
08/05/03 19:45:29
>>791
作成して初期化するって意味が解らん
新しい画面を表示するときにnewした所で一瞬
792も言っているが、まずは何をしたいかを説明した方がいい

795:デフォルトの名無しさん
08/05/03 19:46:17
>>787>>788
有難うございました。本を見ながらなんとか出来ました。結城さんもうすこし分かりやすく書いてよ・・
StringBuilderとかまだ分からない言葉もありましたが助かりました。

796:デフォルトの名無しさん
08/05/03 19:53:13
>>792
詳しいことは省きますがあるアプリケーションを作っていて本当に様々な
操作をするのに50枚いるのですが、メニュー画面から親JPanelは50枚以上かな・・・
その上にももちろんJPanel載っています。そしてメニュー画面のボタンを押すと切り替えていっています。
そしてデータなどの入力・編集・印刷処理などをさせています。今現実的にうまくは動いているのですが、
ただ重たくて・・・できるだけ簡単に改造できればと思っています。
プログラムをロードするときに全部作っていてCardLayoutでばんばん貼り付けていました。
それをmediatorパターンで中央管理していたのですが・・・おそらくそこでJPanelを生成するクラスを作って
管理すればいいですかね?


797:デフォルトの名無しさん
08/05/03 19:58:27
>>793
その通りですw
言語処理系でプログラムをやっていたんですが急に業務用のアプリを速攻で作りましたw
Windowを使ってプログラムを書くのは初めてです。

>>794
インスタンスを作るという意味ですinit()やexit()をcallしています。
インスタンスを作ってあるものを。今はCardLayoutで切り替えて共通のインターフェースでinit()で
データの初期化やロードをしたりexit()メソッドを呼んだりしています。

798:デフォルトの名無しさん
08/05/03 20:55:24
>>793
確かに業務アプリには糞設計のGUIが散見されるな

799:デフォルトの名無しさん
08/05/03 20:56:32
m9(^Д^)

800:デフォルトの名無しさん
08/05/03 20:59:10
>>796
重くなっている原因がJPanelの数って話は推測ですか、実測した結果ですか?
また、起動パラメータやJavaのバージョンをあげるなど、ソースに手を入れずに出来る対策はされましたか?

ちなみにSwingであれば、大雑把に1.4から5.0にすると2倍、5.0から6にすると1.5倍くらいのパフォーマンスアップが見込めます。
起動時のヒープ確保量のデフォルトも大きくなっています。

801:デフォルトの名無しさん
08/05/03 22:09:01
>>800
どうもです。
残念ながら推測です。ただグラフィックの資源を食いつぶしているのではないかと
感覚的にしかつかんでいません。今5.0 を使っていますが、6.0にするとそれだけの
パフォーマンスがアップするんですか・・・ちょっと考えて見ます。
実行時のパラメータはメモリ関係の方はかなりあげています。

もうかなりの人間が使っているのでソースはいじりたくないですからね。
何せ、今回GUIでWindow自体の開発は初めてでデザインパターンやJavaの本を短期間で
読みあさりどんどん書いていってしまったのでここに相談させていただきました


802:デフォルトの名無しさん
08/05/03 22:10:10
>>798
質問している人間ではなく50枚も作るのかと言っている人間じゃないのか(笑)

803:デフォルトの名無しさん
08/05/03 22:19:58
教えてください、今ホームページを作っていてHTMLのsubmitボタンを押したときの
時間を取得するのは可能ですか?
昔本呼んだswingかなんかの処理ではたしかイベント処理があったと思うんが
HTMLのボタンでもイベント処理とかできるんですか?
初心者なんで可笑しなこと聞いてたらすみません

804:デフォルトの名無しさん
08/05/03 22:22:49
Javaは関係なさそうな・・・
フォームとJavaScriptでいけるんじゃね?

805:デフォルトの名無しさん
08/05/03 23:11:19
>>804
すいません、今Javaを習っていて
web3構築を使ってホームページを提出しなきゃいけなくて
どーしても押された時間によって処理したいことがあって
ちなみにJavaScriptはまったく分かりません
swingもまだ習ってないんですけど
たしか昔本で読んだことがあって



806:デフォルトの名無しさん
08/05/03 23:14:20
>>805
Submitを押された時間ではなくて、Servletでリクエストを処理した時の時間ではダメなのか?
多少の誤差は出るが、十分な気がするけど。
むしろ、クライアント側の時刻なんて各マシンの時刻だから信用できるものでもないし。

807:デフォルトの名無しさん
08/05/03 23:14:33
よくわからんけど課題って習ったことを使えばできることなんじゃないの?


808:デフォルトの名無しさん
08/05/04 00:15:23
>>806
>Servletでリクエストを処理した時の時間ではダメなのか?
そういう方法もあるんですね、十分だと思います
ていうかDateクラスで得られる時間って
自分のパソコンに設定されている時間だってことに気付かされました
ありがとうございました
>>807
ショッピングサイトならなんとか作れそうなんですけど
落ちこぼれなんで、皆と違うものをと思ったんですけど
自分で調べろ的な学校だし
大人しくショッピングサイトのほうがいいかもしれません

809:デフォルトの名無しさん
08/05/04 01:51:50
例えばArrayListなどのインスタンスを、メソッドに引数として渡し、
メソッドの中で、そのインスタンスに対して操作を行うことは、
Javaのマナー的に、やらない方がいいのでしょうか?

810:デフォルトの名無しさん
08/05/04 01:55:56
モジュール結合度が上がる (共有結合になる) のであまり良くはない。
まぁクラス内に閉じていて private 宣言されているようなユーティリティメソッドとかなら良いんじゃないの。

811:デフォルトの名無しさん
08/05/04 02:37:03
ケースバイケース
禁忌ではない

812:デフォルトの名無しさん
08/05/04 04:19:14
むしろ、弄られないことを想定している場合は
(そのメソッドが継承できるように公開されている場合は)
呼び出し側でコピーを作って渡すべき

813:デフォルトの名無しさん
08/05/04 05:13:28
操作を行うって書いてあんじゃん。
それにコピーなんか作らなくても Collections#unmodifiableList() で十分。

814:デフォルトの名無しさん
08/05/04 08:00:49
>>812
呼び出し側でコピー作るのか?
普通は呼ばれた方(コンストラクタ等)でコピーを作るんじゃね?
ArrayList(Collection col) とかそうだろ?

815:809
08/05/04 17:29:19
>>810
>>811
どうもありがとうございます。
禁忌じゃないけど、あまり良くないという感じでしょうか。
ケースバイケースで考えてみます。

816:デフォルトの名無しさん
08/05/04 18:45:08
>>814
コンストラクタでコピーするのは、
生成されたインスタンスが内部に保持するフィールドを防御するためで、目的が違う。

それにコンストラクタは、明示的にクラスを指定しなければいけないから
何をするべきかは、ドキュメントをみて決定していいと思う。

>>813
unmodifiable~で十分なのは、ごもっともで

817:デフォルトの名無しさん
08/05/04 18:56:07
>>815
むしろ、何が行われるかをドキュメントに書くことが重要
外見は同じでも、

/** ソートしたリストを返す。元のリストはそのまま */
List sort(List list)

/** 引数の list を破壊的にソートした後、そのリスト自身を返す */
List sort(List list)

の2つじゃ、使う側のどきどき感が違う

818:デフォルトの名無しさん
08/05/04 19:19:44
ドキュメントは重要は同意
設計の方針としては、どんな使われ方しても自分のバグにならないように保守的にするのが良い。
コンストラクタの中でのコピーはそういう観点でもある。

819:デフォルトの名無しさん
08/05/04 21:11:25
>>818
でもそれを徹底し過ぎると、メモリを無駄に馬鹿食いする危険性も。
Objectに変更可否フラグがあれば良かったのかもしれんが……。


820:デフォルトの名無しさん
08/05/04 21:13:37
たいしてつかわねーよw

821:デフォルトの名無しさん
08/05/04 23:05:10
>>819 それがドキュメントであり、設計なのでは?
シャローかディープのコピーでも違いがあると思うけど。

822:デフォルトの名無しさん
08/05/04 23:51:52
そんなふうに色々考えているうちに、頭のCPUがフル稼働して、自分が何に悩んでいるかすら忘れ、結局は一番簡単で手抜きの設計に落ち着くわけです

823:デフォルトの名無しさん
08/05/05 00:13:50
まさにYAGNIの原則。


824:デフォルトの名無しさん
08/05/05 01:24:07
防御コピーは徹底しろ。それが嫌な奴はオブジェクト指向言語など使うな。
どうせ、「オブジェクトを作ると遅くなる」とか言い出すのだろうし。

825:デフォルトの名無しさん
08/05/05 01:29:29
極論バカが来ました

826:デフォルトの名無しさん
08/05/05 01:42:13
防御コピーが極論か。
オブジェクト指向がこの世に出てから半世紀近く経っているのにな。

827:デフォルトの名無しさん
08/05/05 01:50:24
オブジェクト指向覚えたての社会人 2 年目かよw
でも経験少ないから適材適所のような程度問題が判断できないんだよな。

828:デフォルトの名無しさん
08/05/05 03:09:17
全てのオブジェクトをイミュータブルにしてしまえばいいんだよ
停止し結晶化した世界は美しいぜ

829:デフォルトの名無しさん
08/05/05 03:11:13
吟遊詩人が現れた

830:デフォルトの名無しさん
08/05/05 04:22:00
>>828
それ何てErlang? まぁErlangだとI18N/L10Nが絶望的なので、実用を考えるなら
Scalaでありとあらゆるオブジェクトをvalで宣言するのが良さげ。

831:デフォルトの名無しさん
08/05/05 09:24:54
[問題]与えられた9個の変数(int型)の中から最大値と最小値を求め、表示しろ。
[解1]3つのメソッドを作る
void setData(int...data){// ここでmaxとminを求める}
int getMax() {}
int getMin() {}
// こんな単純な問題でメソッドを3つも使う必要があるのか?

[解2]変数maxとminを持った内部クラスを作る
class Data {
int max;
int min;
}
Data getData (int...oneDatas) {// 最大値、最小値を求めDataクラスに格納して返す}
// なんか気持ち悪い。

先輩方はこのような宿題を出されたら、どのように解答したらいいと思いますか?

832:デフォルトの名無しさん
08/05/05 09:57:32
どういう状況で出された問題なのか解らないのではっきりとは言えないが、解答として間違っていないとは思われ。
クラスという概念になれるっていう場面ならば、解1の方が良いと思う。
だけど、setDataでmaxとminを求めるのではなく、フィールドに変数を格納しておき、getMax, getMinで最大(最小)を求める方が良い。

解2の方は内部クラスとして定義しているだけならば、本質は解1と何も変わらん。
1つのメソッドで2つ以上の値を返す時には普通に使う。

833:デフォルトの名無しさん
08/05/05 09:58:48
表示しろだろ?
素直にそのままやろうぜー
max(int ...data)とmin(int ...data)を作っておいてそれを利用して普通に出力かな
2回も走査しないといけないじゃないか!って気持ち悪い場合は、これくらいのロジックだしその場で書く。

これくらいで新たなクラスやら、その結果専用のクラスを作るのはどうかと思う。

834:832
08/05/05 10:01:00
補足。
解1でフィールドに保持しておくと、メモリ使用の点、最大最小を求めるコスト的な点ではデメリット。
だが、そのクラスに「平均値を取得するメソッドを追加しろ」という仕様変更に強いのがメリット。
全ての処理をsetDataでやっている場合、まったく異なる性質のメソッドを追加しているのにもかかわらず、最大最小を求めるメソッドがデグレを起こす可能性があるからね。

835:デフォルトの名無しさん
08/05/05 10:09:41
APIの使い方の話題なのか、for文とif文レベルの話題なのか、832の書くようなクラス設計の話題なのか、問題文に記述するべきだな。

836:デフォルトの名無しさん
08/05/05 11:19:13
>>831
本題には無関係だが、dataは複数形で、単数形はdatumだ。
(dataを単数扱いすることもあるらしいが、どちらにしろdatasにはならない)

837:デフォルトの名無しさん
08/05/05 17:27:12
アプレットが初期化されていませんって言うのはいったい何のエラーなんですか?

あとアプレットをhtmlに組み込むのって<body>の中に何か書く必要ありますか?

838:デフォルトの名無しさん
08/05/05 17:44:42
アプレットが初期化できていないってエラーだ。
URLリンク(www.google.co.jp)

839:デフォルトの名無しさん
08/05/05 20:40:18
すんません、メソッドについて質問させてください。

Aクラス
・メンバ変数ふたつ(static)
・メソッド(実行すると引数をもとに計算してメンバ変数の内容を書き換えるメソッド)

適当なクラスファイルでAクラスのインスタンスを生成して、
メソッドに引数を渡して処理をし、その次の行にAクラスのメンバ変数ふたつを呼び出したところ、
変数はどちらも初期値のままでした。なにがいけないのか全くわかりません。
どなたか教えていただけませんか。

メソッドは戻り値はなく、メンバ変数を書き換えるだけなのでvoid宣言してありreturnは書いてません。

840:デフォルトの名無しさん
08/05/05 20:46:27
>>839
書き換えてないからでしょう

841:デフォルトの名無しさん
08/05/05 21:01:26
>>840
どうして書き換えられていないのか心当たりになるようなケースありますか?

842:デフォルトの名無しさん
08/05/05 21:04:37
まずはコードを貼るんだ

843:デフォルトの名無しさん
08/05/05 21:06:00
とにかく問題のコードを書いてくれ

844:デフォルトの名無しさん
08/05/05 21:11:16
開始時刻と終了時刻を入力して経過時間とともに表示するプログラムです。

package XXXXXX;

public class ex134{
/* クラスフィールド */
public static int hh, mm;

public int subTime(int h1,int m1,int h2,int m2){
mm = h2 * 60 + m2;
mm = mm - (h1 * 60 + m1);

/* 終了時刻が翌日であるケースの修正 */
if (mm < 0){
mm = 24 * 60 + mm;
}

hh = mm / 60;
mm = mm % 60;
}
}

845:デフォルトの名無しさん
08/05/05 21:15:01
import XXXXXX.*;

public class XXXXXX{
public static void main(String[] args){
/* 変数 */
String buf;

/* インスタンス生成 */
KeyIn key = new KeyIn();
ex133 ex = new ex133();

/* 時刻の入力 */
//入力文省略

/* 経過時間の計算と表示 */
//省略

ex.subTime(h1, m1, h2, m2);

buf = " " + ex.hh;
buf = buf.substring(buf.length() - 2);
System.out.print("経過時間 " + buf + " 時 ");

buf = " " + ex.mm;
buf = buf.substring(buf.length() - 2);
System.out.println(buf + " 分");
}
}

846:デフォルトの名無しさん
08/05/05 21:17:14
すいません、貼り付けた直後に自己解決しました。
インスタンス生成するとこのクラスファイル名を間違えていました。
voidもintになってた!本当にすいません。

847:デフォルトの名無しさん
08/05/05 21:34:45
これもカーニハンの言うテディベアの話と同じ原理なんだろうか

848:デフォルトの名無しさん
08/05/05 21:39:32
マーフィーの法則w

849:デフォルトの名無しさん
08/05/05 22:07:38
>>832,834
わかりやすい説明ありがとうございます

>>833
getMin(int...datum)、getMax(int...datum)の二つのメソッドを作って提出したいと思います。
ありがとうございます。

>>835
問題のレベルとしてはif文、for文を正しく使うレベルだと思います。
しかし、授業ではメソッドやクラスを使うところまでは学んだので、これを使って問題を解いてみようと考えてみたら上手にメソッド分けが出来なくて・・・

>>836
英語の勉強をがんばりますXD

850:デフォルトの名無しさん
08/05/05 22:23:25
必要のないところにオブジェクト指向的なプログラミングをするのは
不必要な複雑さを導入するだけ

851:デフォルトの名無しさん
08/05/05 22:31:45
JSPでFormから入力された文字列をInteger.parseInt()で
int型の数字にして利用しているのですが、例外処理の書き方が判りません。

Integer.parseInt()に"12345q"とか入った時点でエラー吐いて止まってしまいます。
どのように回避すれば良いのでしょうか?

852:デフォルトの名無しさん
08/05/05 23:31:50
parseIntで発生する例外をcatchするか、charにばらして1文字づつチェックするか、正規表現で数値かどうかをチェックするか、好きにしろ

853:デフォルトの名無しさん
08/05/06 00:22:03
Java SEのダウンロードページにアクセスできません
このままでは仕事が出来ないので誰かインストーラうpしてください><><<<

854:デフォルトの名無しさん
08/05/06 00:33:37
またかよ・・・
バージョンの指定はないな。
ほれ
URLリンク(sakuratan.ddo.jp)

855:デフォルトの名無しさん
08/05/06 00:59:50
(;゚д゚)ァ....
本当に聞いてくれるとは思わなかった。ありがとう。
とはいうものの、今更バージョン違うなんて言い辛いorz

856:デフォルトの名無しさん
08/05/06 01:38:35
URLリンク(applis.servehttp.com) の 00013292.exe
パスはjdk6

857:デフォルトの名無しさん
08/05/06 03:46:59
URLリンク(journal.mycom.co.jp)
を参考に勉強していたのですが
下のコードがバイトコンパイルを通らず困っています
バージョンを変えないといけないのでしょうか?

$javac GenericClass.java
GenericClass.java:1: '{' がありません。
public class GenericClass<E> {
^
GenericClass.java:3: '}' がありません。
}
^
エラー 2 個

環境は以下の通りです
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)

858:デフォルトの名無しさん
08/05/06 03:54:22
本当に1.6のjavac使ってるか?
javac -version
で確認してみろ。
1.4とか出てきたならば、pathを確認してみるべし。

859:デフォルトの名無しさん
08/05/06 04:11:38
…間違ってました。orz

パスを確認したら1.4 を呼んでました。
ちなみに 1.4 では javac -version が用意されてないようです

860:デフォルトの名無しさん
08/05/06 16:26:41
>>859
javac -J-version

861:デフォルトの名無しさん
08/05/06 18:07:30
linkedlistで最後の要素を追加、削除するときは、その処理を実行するたびに先頭からたどっていくのでしょうか?
それとも前回参照した値からたどっていくのでしょうか?

862:デフォルトの名無しさん
08/05/06 18:40:15
一般的な実装であれば最後に追加するのに先頭からどうこうすることはない。
気になるならば、ソース読んでみたら?

863:デフォルトの名無しさん
08/05/06 18:50:01
実装軽く読んだけど、まあ少なくとも線形探索はやってない感じ

864:デフォルトの名無しさん
08/05/06 19:18:53
URLリンク(www.kab-studio.biz)
↑を読むと
ただし、LinkedListクラスの要素を取得する場合、インデックスナンバーから直接取得することはできず、
先頭に当たる要素からリンクをたどって数えていき取得することになる。
そのため、データの取得はArrayListクラスよりも遅い。

という風に書いてあったんですけど、先頭から削除しても、最後尾から削除してもすべての要素を削除するのに
かかる時間に違いがなかったので質問させていただきました。

で更にぐぐってみたら
URLリンク(www.stackasterisk.jp)
↑に
削除する要素が後半だったら、最後尾から探索するって書いてあったんで理解しました

865:デフォルトの名無しさん
08/05/06 19:26:17
先頭と最後尾へのアクセスに特化させて効率をよくしたのがLinkedListなんだよ
基本的なデータ構造なんだから覚えておけ

866:デフォルトの名無しさん
08/05/06 19:30:23
バカが現れた。

867:デフォルトの名無しさん
08/05/06 19:51:16
いやいや、釣りだろw

868:デフォルトの名無しさん
08/05/06 19:56:03
彼は僕達には理解できないLinkedListの真理に到達したに違いない

869:デフォルトの名無しさん
08/05/06 20:06:28
あぁ、まりちゃんね。

870:デフォルトの名無しさん
08/05/06 20:35:31
VMが落ちると出力されるコアダンプについてですが、
ファイルを見ても何がなんだかさっぱり分かりません?_?

最低限、コアファイルから分かる情報は拾えるようにしたいのですが
コアダンプについて詳細に解説してるサイトを教えてくださいm(__)m
できれば日本語のサイトが良いです。

871:デフォルトの名無しさん
08/05/06 20:50:16
コアダンプというのは、簡単にいえば、プログラムが動いていたときの
そのプログラムが使っていたメモリの状態をファイルに落としたもの。
落ちたプログラムをデバッガにかけるときに、死んだときの状況を再現する
ためにコアダンプを与えることが出来る。単体ではあまり意味はない。

デバッガとかgdbとかdbxという単語とペアでぐぐればいいと思う。


872:デフォルトの名無しさん
08/05/06 21:11:46
ありがとうございます。
コアダンプ単体では意味がないのですね。
教えていただいた単語も含めぐぐってみます。

873:デフォルトの名無しさん
08/05/07 01:19:20
wavを再生する際の音量を調節するにはどうすればいいのでしょうか?
調べては見ましたがどうもそれっぽいのが出てこず・・・

URLリンク(www.google.com)

874:デフォルトの名無しさん
08/05/07 06:03:01
[form.jsp]の入力フォームに入力された値をtxtファイルに書き出したいのですが、うまくいきません。
エラー無く[form_ok.jsp]に移動はしてくれるのですが、data.txtがどこにもつくられません。
どこをどう直すべきでしょうか。(改行が多すぎるとエラーが出たので、妙な改行になっています。すみません。)

[form.jsp]
<form action="form_ok.jsp" method="post">
<input type="text" name="data"><input type="submit" value="送信">
</form>

[form_ok.jsp]
<jsp:useBean class="form.form" id="mail" scope="session"/>
<html><head></head>
<%
String data = request.getParameter("data");
form.main(data);
%>
<body>(以下略)

[form.java]
package form; import java.io.*;
public class Mail {
public static void main(String data) throws IOException {
try{
FileOutputStream fos = new FileOutputStream("data.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos , "MS932");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(data);
bw.close(); osw.close(); fos.close();
}
catch(Exception e){ e.printStackTrace();}
}
}

875:デフォルトの名無しさん
08/05/07 10:44:23
long型を使って19桁までの計算はできましたが、20桁以上の計算のやり方がわかりません。
具体的に言うと12345678901234567890*12345みたいな計算です。
お願いします。


876:デフォルトの名無しさん
08/05/07 10:49:06
BigDecimal

877:デフォルトの名無しさん
08/05/07 12:40:27
整数だけでいいなら BigInteger

878:875
08/05/07 13:46:56
>>876-877
レスサンクスです。
それらについて検索して、色々やってみます。

879:デフォルトの名無しさん
08/05/07 19:17:43
プログラミング学びたいんだけどC、C++、JAVAどれから始めればいい?あとなんかいい本ある?

880:デフォルトの名無しさん
08/05/07 19:26:50
>>879
初心者のためのプログラミング言語ガイド Part8
スレリンク(tech板)

目的を書いた方がいいよ
何のためにプログラミングを学ぶのか、具体的に何を作りたいのか

881:デフォルトの名無しさん
08/05/07 20:17:39
就活で使いたいんだよねー
今年学部で就活してみてIT技術の大切さが分かったから院でまた就活するときに使えるように
ITコンサルいきたいって思ってるんだけどなにがいいかな?多分企業によっても違うんだろうけど、一番使い勝手がいいのは何?

882:デフォルトの名無しさん
08/05/07 20:27:39
こうやってまた学校が屑を押し付けてくるのか

883:デフォルトの名無しさん
08/05/07 20:34:05
Cは、その選択肢の基礎になる。
Cができれば、UNIXのカーネルも読めるし。

884:デフォルトの名無しさん
08/05/07 21:51:57
Cができればカーネルが読める、
英語ができればカーネルさんと話せる

885:デフォルトの名無しさん
08/05/07 22:01:46
javax.swing.tree.DefaultTreeModelの仕様について質問です。

DefaultMutableTreeNode n1 = new DefaultMutableTreeNode();
DefaultTreeModel t = new DefaultTreeModel(n1);
System.out.println(t.getRoot()); => null

なぜnullが出るのでしょうか?
コンストラクタはrootを要求しています。
なのでn1がrootとして取得出来ると思うのですが、
どうすればn1がrootとして取得出来るようになるのでしょうか?
URLリンク(java.sun.com)

886:デフォルトの名無しさん
08/05/07 22:15:00
追記です。
加えて
System.out.println(t.getRoot()==null); => false
になります。
nullではないと言ってるのにnullが出るのはなぜでしょうか・・

887:デフォルトの名無しさん
08/05/07 22:35:55
ファイルの書き込みをFileWriterでやるのはうまく出来たのですが
書き込むときにまっさらにして書き込みたい時はどうするのでしょうか?

ループの中で一行のテキストを書き込んでるのですが、追記じゃなくて、その時書き込んだものだけが残るようにしたいです。

File file = new File("path");
file.delete();
FileWriter fw = new FileWriter(file);
fw.write("書き込むテキスト");

とかやってみたけど、ファイルサイズ0になってしまいました。

お願いします

888:デフォルトの名無しさん
08/05/07 22:49:49
closeしろ

889:デフォルトの名無しさん
08/05/07 23:40:15
>>885-886
> DefaultMutableTreeNode には、ユーザオブジェクトへの参照、つまりユーザが独自に定義するオブジェクトへの参照も格納できます。
> DefaultMutableTreeNode に toString() を指定してその文字列表現を要求すると、そのユーザオブジェクトの文字列表現を返します。
を踏まえたうえで
URLリンク(java.sun.com)()
こいつが呼ばれているからだと思う


890:超初心者
08/05/08 00:08:55
すみません。
.jadファイルと.jarファイルをアップして、
携帯でDLして、正常に起動できるようにしたいのですが、
どうすれば、いいでしょうか?
とりあえず、2つのサーバーの内、一つのサーバーでは、
アップしたデータが携帯で正常に起動する事が出来たのですが、
もう一つのサーバーでは、ミスマッチと表示され、起動できませんでした。
.jarファイルは、URL認証がOKのサーバーじゃないと無理なのでしょうか?
ちなみに、.htaccessに.jadと.jarのmime-typeは、追加しています。
すみませんが、どなたかご教授お願い致します。m(__)m


891:デフォルトの名無しさん
08/05/08 08:52:56
お邪魔します。同じく超初心者です。 課題でハングマンをいう文字当てゲームのプログラムを書いてる所なんですが、 なにやらもうにっちもさっちもいきません。 見本の一部がこんな感じです。
Word: _ _ _ _ _ _ _ _ _ _ _ _ _ _
Misses:
Guess a letter: a

Word: _ _ _ _ _ _ _ A _ _ _ A _ _
Misses:
Guess a letter: e

Word: _ _ _ _ _ _ _ A _ _ _ A _ E
Misses:
インプットされた文字をcharにストアしてanswerと照らし合わせて‥ みたいなとこですでに行き詰まってます。
for (int i = 0; i <= answer.length; i++) {
if (answer.charAt(i) == input) {
System.out.prin(input);
} else if (answer.charAt(i) !=input) {
System.out.print("_");
} } }
前に予想した文字もプリントしようとすると際限なく長くなっていっちゃうんですが‥‥
しかも答えはランダムに選ばれるので答えの文字数は不明です。 どんなループに入れたらいいんでしょうか?
それと予想された文字を正誤順番問わず繋げてストリングにストアしろという ヒントも出してもらったんですが‥
課題の目的としては、Boolean method, while loop, text processing、 あたりの知識を理解しろということみたいです。
かなり適当な説明ですが、なにかしらご教示いただけるととっても助かります。

892:デフォルトの名無しさん
08/05/08 09:02:33
>>889
どうしてそうなるの?
getRootでなんでそんなものを呼び出すのか分からない。
理由がないだろ

893:デフォルトの名無しさん
08/05/08 10:23:27
tomcat + データベースでjava.util.Dateを扱うときなんですけど。
データベースからrs.getDate()メソッドで日付を取り出したとします。
jsp側でDateのインスタンスを生成しデータベースから取り出したDateと生成した
Dateをequials()で比較するんですけど上手くいきません。
何かおかしいところがあったらご教授下さい。

894:デフォルトの名無しさん
08/05/08 10:30:07
>>892
getRootの戻り値になっているDefaultMutableTreeNodeオブジェクトのtoStringが呼び出されて
いるのであってgetRootが直接手を下しているわけではないってことでわ?

895:デフォルトの名無しさん
08/05/08 10:44:15
>>893
> データベースからrs.getDate()メソッドで日付を取り出したとします。
こっちはjava.sql.Dateで
> jsp側でDateのインスタンスを生成しデータベースから取り出したDateと生成した
こっちはjava.util.Dateになってて違うオブジェクトを比較しようとしてない?

896:895
08/05/08 10:50:01
そうかも・・・・早速修正してみます。助言ありがとうございます。

897:893
08/05/08 14:35:20
どうしても上手くいかないのでjava.sql.Dateの日にちを拾得したインスタンスを
Stringとして扱うことで解決させました。

898:デフォルトの名無しさん
08/05/08 15:23:58
>>895
equals()で比較している限りtrueになるので、それはない。
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
System.out.println(sqlDate.equals(date)); // trueになる
System.out.println(date.equals(sqlDate)); // trueになる

>>895
日付以外のフィールド(時分秒)が一致していないのが原因じゃない?

899:893
08/05/08 16:57:14
>>898 sql.Dateへのコンストラクターdate.getTime()を
System.currentTimeMillis()で行っていたのが原因かもしれません。

900:デフォルトの名無しさん
08/05/08 18:00:45
JavaのGCには、以下の3つの種類があることを知りました。
URLリンク(www.atmarkit.co.jp)
・SerialGC
・ParallelGC
・ConcurrentGC

URLリンク(java.sun.com)
によると、Server VM (java -server)では ParallelGCが使われるようですが、
-XX: オプションをつけない場合、どのタイプのGCが使われる使われるのでしょうか?
server VM だけでなく、いまどきのJVMでは、常にデフォルトでは ParallelGC?

URLリンク(java.sun.com)
によると、Java は自分が動いているOS、メモリ量から、server VM か client VMかを
自動で切り替えるようですが、GCの種類もそうなのかなと思って質問しました。

901:デフォルトの名無しさん
08/05/08 18:26:52
ConcurrentGCじゃなかったけ?
ParallelGCは-XXオプションつけないとならない

902:デフォルトの名無しさん
08/05/08 19:27:43
JavaMailでアラビア語などの日本語や英語以外の文字の
メールを送るにはどうしたらいいでしょうか?

903:デフォルトの名無しさん
08/05/08 19:36:47
ISO-8859-6などのアラビア語を扱える文字コードを指定すればいいんじゃね
メーラもそれに対応してないと読めないと思うけど

904:デフォルトの名無しさん
08/05/08 19:49:37
UTF-8の文字列で送っちゃうのはだめなのかな。

UTF-8 か >>902 さんのほうかどうかはともかく、メールのヘッダで
Content-Type: text/plain; charset="UTF=8"
と指定しておくのはわすれないように。


昔の日本の電子メールのとき(MIME 関連のヘッダをつけなくとも生JISにしておけばメーラで読めた)
のように、アラビア語圏の世界では、メールのボディの文字列をISO-8859-6 にしておけば、
ヘッダにMIME 関連のものをつけなくても読めるのだろうか。
いまどきはアラビア語圏といえども、たいていの人は Outlook とか ThunderBird(MIME 対応メーラ)なのかな。


905:デフォルトの名無しさん
08/05/08 20:27:48
>>903, >>904
ありがとうございます。

本文に日本語も混ぜたいのでUTF-8で試してみたいと思います。

906:デフォルトの名無しさん
08/05/08 21:20:12
コントロールパネルに数行に渡ってjavaのluntime updateなたいなのが
あるけど消していいの?
それぞれ144MBくらいのやつ。

907:デフォルトの名無しさん
08/05/08 21:22:38
>>906
一番バージョンの大きいのが一つ入っていれば良い。

908:デフォルトの名無しさん
08/05/08 21:25:20
ありがとう。消したら、ウインドウズに設定してる??
みたいな表示が出て、ホントは消えないような感じがしたわw

909:初心者
08/05/08 22:17:10
まじで素人な質問なんだけどコマンドプロンプトでディレクトリを移動したいんだけど指定されたパスが見つかりませんになっちゃうんだけどどうしたらいいの?

910:デフォルトの名無しさん
08/05/08 22:56:12
まず質問に適切なスレを見つけたらいいと思うよ

911:デフォルトの名無しさん
08/05/09 00:40:56
Aクラスを継承したB01~B20クラスがあります。
このB01~B20クラスは、B01とB05, B09とB15の
ような感じで、2つのクラスをセットで使います。

このときに、
B01とB02の場合は、100
B01とB03の場合は、150


B19とB19の場合は、200
B19とB20の場合は、120

みたいに、クラスの全ての組み合わせで
決まった値を持ってくるようにしたいんだけど、
どうやるのがスマートなんでしょう?

912:デフォルトの名無しさん
08/05/09 00:55:27
それだけの情報だと、

Aのstaticフィールドに「Aのサブクラス2つ」(からなるオブジェクト)
をキーにしたMapを持つ

くらいか。
2つの組み合わせを別途クラスとして定義するほうがいいかもな。

AやBに具体性があるともうちっとよい助言が得られるかも。


913:デフォルトの名無しさん
08/05/09 01:08:14
クラス名を連結させてハッシュ関数に放り込むとか・・・・・?

914:902
08/05/09 09:35:29
下記のようなソースでアラビア語を送ってみました。
OutlookExpressでは正常に表示できたのですが
Beckyでは■になってしまいました。ただその文章をIEのテキストエリアに
貼り付けるとアラビア語が復活するのでBecky側の問題かもしれません。

プログラムとしては下記でよいものでしょうか?

mimeMessage.setFrom(new InternetAddress(this.fromAddr,"", "utf-8"));
mimeMessage.setRecipients(Message.RecipientType.TO, this.toAddr);
mimeMessage.setSubject(this.subject, "utf-8");
mimeMessage.setContent(this.text, "text/plain; charset=utf-8");
mimeMessage.setHeader("Content-Transfer-Encoding", "8bit");
mimeMessage.setSentDate(new Date());


915:デフォルトの名無しさん
08/05/09 09:46:43
JAVA初心者です。
ファイルの保存をするために、下のようなメソッドを書きました。

FileDialog fd = new FileDialog(this, "Save", FileDialog.SAVE);
PrintStream ps;
FileOutputStream fos;

public void save(){
fd.show();
String filename = sd.getFile();
if(filename == null) return;

fos = new FileOutputStream(filename);
ps = new PrintStream(fos);
ps.print(display.getText());
ps.close();
fos.close();
}

これをactionPerformedメソッドでボタン押下時に呼び出すようにしています。
保存ダイアログはちゃんと開くし、保存もできるのですが、場所の指定ができません。
違うフォルダを指定しても、javaファイルが置いてあるところと同じ場所に保存されてしまいます。
なぜなのでしょうか?
JAVAを勉強し始めたばかりなので、トンチンカンなこと書いてたらすみません。




916:915
08/05/09 09:51:28
すみません、saveメソッド内2行目は
String filename = sd.getFile(); ではなく、
String filename = fd.getFile(); です。

917:デフォルトの名無しさん
08/05/09 10:50:56
>>915,916
試してないから違うかもシレンけど、
getFile()じゃなくてgetDirectory()じゃないの?

あと、JDK5以降だったら、showじゃなくてsetVisible使うんじゃなかったっけ。

918:デフォルトの名無しさん
08/05/09 11:02:17
>>911
それだけだと、「B01~B20はインスタンスでいいんじゃないの?」って気がする。

919:デフォルトの名無しさん
08/05/09 11:37:06
showじゃなくてsetVisibleつかうのは1.4以降

920:デフォルトの名無しさん
08/05/09 11:47:35
よろしくおねがいします。

Simpleformatクラスを使用して、
Timestamp型をString型("yyyy'/'M'/'d' 'H':'m':'s"形式)にしたのですが、
このStringをTimestamp型に再変換するにはどうすれば良いでしょうか?

921:デフォルトの名無しさん
08/05/09 13:27:28
>>920
SimpleDateFormatでパースして、得られたDateを
Date#getTimeして、Timestampのコンストラクタに与えたらどうだろうか。

922:900
08/05/09 14:36:32
>>901
レスどうもありがとうございます。

URLリンク(java.sun.com)
の P14 には、

URLリンク(java.sun.com)
において Server VM が選択された場合はデフォルトで Parallel Collector が使われ、
それ以外のケースは Serial Collector がデフォルトになるとありました。

923:920
08/05/09 14:45:09
>>921
それで行けました!ありがとうございます!

924:デフォルトの名無しさん
08/05/09 14:51:06
>>919
FileDialogというかDialogやWindowに関しては1.4ではshowは非推奨メソッドではない。
deprecatedになってsetVisibleを使用しろとされたのは1.5から。
Componentは1.1からshowは非推奨だったので、
非推奨になるのが遅かったのはトップレベルウインドウ特有の何か事情があったんじゃないかと思う。

925:915
08/05/09 17:15:00
>>917,919,924
レスありがとうございます。
getFileをgetDirectoryにしてみたり、showをsetVisibleにしてみたりしましたがやはりだめなようです。
ファイルの保存自体はできているのですが・・・・・・、なぜなんでしょうかね・・・


926:デフォルトの名無しさん
08/05/09 17:31:31
>>925
File file = new File(fd.getDirectory(), fd.getFile());
fos = new FileOutputStream(file);

927:デフォルトの名無しさん
08/05/09 17:33:55
>>925
FileDialogやめてJFileChooser使ってみれば?

928:デフォルトの名無しさん
08/05/09 17:53:06
プログラムを動かすとブラウザでホームページを表示できるようにしたいんですけど、どんな感じで書けばいいですか?誰かお願いします!

929:デフォルトの名無しさん
08/05/09 17:55:20
Desktop クラス使え

930:デフォルトの名無しさん
08/05/09 17:59:43
>>928
java.awt.Desktop.getDesktop().browse(new java.net.URI("URLリンク(www.google.co.jp)"));

931:デフォルトの名無しさん
08/05/09 19:09:47
>>929
>>930
ありがとうございますm(_ _)m

932:デフォルトの名無しさん
08/05/09 23:31:12
<T> XXX<T> hoge(XXX<T> xxx){...}

という関数があったときに、返り値の型の
<T> XXX<T>

はどういう意味があるのでしょう?

933:デフォルトの名無しさん
08/05/09 23:34:56
Tという名前の型引数を使いますよ

934:デフォルトの名無しさん
08/05/09 23:41:23
>>933
Tの型は、
hoge(new XXX<YYY>());
と書いたときに決まっているのでは?

<T> XXX<T> hoge(XXX<T> xxx){...}
と、
XXX<T> hoge(XXX<T> xxx){...}
が同じということでしょうか?

935:デフォルトの名無しさん
08/05/09 23:47:29
ジェネリクスは型だけじゃなくてメソッドでも使えるんだよ

936:デフォルトの名無しさん
08/05/09 23:52:36
template<typename T> XXX<T> hoge(XXX<T> xxx){...}
ということですか、納得です。

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

937:デフォルトの名無しさん
08/05/10 00:00:33
うむ
精進しろよ

938:デフォルトの名無しさん
08/05/10 00:05:07
そんな感じ
C++の化け物テンプレートほどの威力は無いが・・・・

939:デフォルトの名無しさん
08/05/10 00:07:49
っていうか並べて比べるのもおこがましい程度

940:デフォルトの名無しさん
08/05/10 00:20:44
そもそも比較すること自体が間違ってる。

941:デフォルトの名無しさん
08/05/10 00:24:56
templateはわかめみたいにふえていくからなあ

942:デフォルトの名無しさん
08/05/10 01:08:02
>>934
ごめん
その方法で生成した任意の型の出力が可能ってことでいいのかな

943:デフォルトの名無しさん
08/05/10 09:16:29
テンプレートパターンというのを知らない池沼がいるから困るwwww

944:デフォルトの名無しさん
08/05/10 09:20:46
久しぶり

945:デフォルトの名無しさん
08/05/10 10:13:22
今からでもランタイムサポートできないのかな

946:デフォルトの名無しさん
08/05/10 10:26:18
やりたきゃ自分でVMを実装するんだな
言語名はJava++ みたいな感じでwww

947:デフォルトの名無しさん
08/05/10 10:51:58
ジェネリクスがキャスト挿入のシンタックスシュガーだというのは
実装次第じゃなくて言語仕様で決まってることなの?

948:デフォルトの名無しさん
08/05/10 10:58:08
決まってる。

949:デフォルトの名無しさん
08/05/10 11:13:24
URLリンク(www.objectclub.jp)
ここの「JavaへのGenerics導入の方針」参照。


950:デフォルトの名無しさん
08/05/10 11:17:50
java7っていつ出るの?

951:デフォルトの名無しさん
08/05/10 11:19:20
来年。(予定は未定)

952:デフォルトの名無しさん
08/05/10 11:25:58
もうjava5以前のクソ仕様な部分はすべて後方互換性無視して
作り替えて欲しい。java5以降は神だが、それ以前はめちゃくちゃ。

953:デフォルトの名無しさん
08/05/10 11:49:15
import java.security.SecurityException;
import java.io.IOException;
import java.io.File;
public class Sample{
public static void main(String[] args){
File f = new File("c:/test.txt");
try{
if(f.exeists()){
System.out.println("ファイルは存在します。");
if(f.canRead()){
System.out.println("ファイルは存在し、かつ、ファイルは読込めます。");
if(f.setReadOnly(){
System.out.println("ファイルを読取専用にしました。");
if(f.delete()==false){
System.out.println("ファイルを削除できません。");
}else{ System.out.println("ファイルを削除しました。"); }
}else{ System.out.println("ファイルを読取専用にできません。"); }
}else{ System.out.println("ファイルは読込めません。"); }
}else{ System.out.println("ファイルは存在しません。"); }
}catch(IOException e){ System.out.println(e);
}catch(SecurityException e){ System.out.println(e);
}
}
}


954:デフォルトの名無しさん
08/05/10 11:50:07
ファイル操作関連で、2点質問があります。
使用OSは、Windows xp Pro SP2で、c:/test.txtを作成後、上記プログラム実行時、ファイルを削除できないようにしたいですが、どうもうまくいきません。
ファイル作成時、ファイルのプロパティで、読み取り専用チェックボックスにチェックを入れてみた後、削除ができてしまうのも、なぜなのか、ちょっとわからないです。
読取専用なのに、削除ができることが、おかしいと思うのですが、ちがいますか。
Windowsの場合は、どうやったら、削除できなくすることができるのでしょうか。
それと、ファイルの読込み権限について教えてほしいです。
ファイルは存在し、かつ、フィルが読込めない時(権限がない場合)、プログラム実行時、ファイルが読込めないようにするには、どうすればよいでしょうか。
よろしくおねがいします。

955:デフォルトの名無しさん
08/05/10 12:02:16
>>950
JavaOne2008の時点では来年夏予定。

956:デフォルトの名無しさん
08/05/10 12:08:53
ファイルに対する読み取り専用ってのは、
(ファイルを存在させたままで)内容を変えることが出来ないということ。


957:デフォルトの名無しさん
08/05/10 12:19:00
>>954
それ、Javaの質問なんか?

958:915
08/05/10 13:47:35
>>926
できました!ありがとうございます。
Fileクラスというのを使えば良かったのですね。
ちゃんと指定した場所に保存する事が出来ました。
どうもお騒がせしてすみませんでした。

959:デフォルトの名無しさん
08/05/10 20:01:14
画像データを byte配列に持ってて、ある位置に○を描画したり、
他画像を貼り付けたりするのってどうやるのでしょうか。。。

960:デフォルトの名無しさん
08/05/10 21:05:08
byte配列を画像データに展開して、○を描画したり他画像を貼り付けてから、byte配列に戻す

961:デフォルトの名無しさん
08/05/10 21:35:45
>959
1.画像データを読み込んで表示するプログラムの作り方を覚える
2.○とか簡単な図形を表示するプログラムの(ry
3.表示した画像と図形を画像データに変換するプログラムの(ry

962:デフォルトの名無しさん
08/05/10 23:13:17
>>960-961
トンクスです!
なんとなく、何から始めればよいか分かった気がします!

963:962
08/05/10 23:41:42
簡単な例ですが出来ました!

BufferedImage srcImage = ImageIO.read(new File("src.gif"));
Graphics2D graph = readImage.createGraphics();
graph.setPaint(Color.BLACK);
graph.draw(new Ellipse2D.Double(100 100, 100 , 100));
ImageIO.write(srcImage, "gif", new File(workdir + "dest.gif"));

964:デフォルトの名無しさん
08/05/11 00:01:19
こんにちは。以下のソースをコンパイルすると、”Test.java の操作は、未チェックまたは安全ではありません。 注:詳細については, -Xlint:unchecked オプションを指定して再コンパイルして下さい。”
という警告(無検査キャスト)がでるのですが、ソースを書き換えて警告が出ないようにする方法はないのでしょうか?
javac -source 1.4でコンパイルするか、@SuppressWarnings("unchecked") を頭に付けると出なくはなるのですが…。

public void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException{
req.setCharacterEncoding("Windows-31J");
int index = Integer.parseInt(req.getParameter("test"));
res.setContentType("text/html;charset=Windows-31J");
PrintWriter pw = res.getWriter();

//この辺でhtmlの前半生成・この直後まで削ると警告は出ない

HttpSession session = req.getSession();
ArrayList<String> list = (ArrayList<String>)session.getAttribute("testArray");

//これ以降を削っても警告が出る
if(list == null){
list = new ArrayList<String>();
}
list.add(testValues[index]); //testValues[]はインスタンス変数で宣言済み
//この辺でhtml生成
session.setAttribute("testArray",list);
//この辺で</body></html>生成
}

965:デフォルトの名無しさん
08/05/11 00:07:47
>>964
無理。
@SuppressWarnings("unchecked") を ArrayList<String> list に付けるしかない。

966:964
08/05/11 00:25:34
>>965
ありがとうございます。
session.getAttribute()の戻り値がObject型だから、
Stringにキャストできるかどうかわからない…のかと思ったのですが、
それで合ってるのでしょうか?

967:デフォルトの名無しさん
08/05/11 00:31:41
>>964
「@SuppressWarnings("unchecked") を頭に付ける」が正しい
1.4互換のソースとあわせて使う場合は仕方なし。

どうしても気持ち悪いっていうならば、@SuppressWarningsを許可するUtilクラスなんかを作成しておくのはあり。
@SuppressWarnings("unchecked")
public class SessionUtil {
  public List<String> getAttributeList(HttpSession sesstion, String key) {
    return (List<String>) session.getAttribute(key);
  }
}

968:デフォルトの名無しさん
08/05/11 00:33:26
>>966
それで正しいよ。
静的なレベルではどんな型か解らない。
ただ、仕様としてList<String> 以外はありえない。
Tigerの拡張で、静的にList<String> 以外はいれられない/取得できないって制限をかけることが可能になった

969:964
08/05/11 00:54:16
>>967>>968
ありがとうございます。
getAttributeで得たものを変数に格納しようとすると、
必ず出てしまう警告だということですね。
何か落ち着きませんが…次からは@SuppressWarningsを許可するクラスを作って対応しようと思います。

970:デフォルトの名無しさん
08/05/11 02:23:50
JSPでカレンダーを作ってます。
今月は問題なく表示できましたが、
先月、次月という2つのボタンを配置してボタンを押してそれぞれ表示させようと思うのですがどうすればいいのでしょう。
現在は先月、次月のボタンを配置したところまではやりましたが実行してボタンを押してみると、
先月はうまくいきましたが次月を押すと、先月と同じ動きをします。
リクエストパラメータを使う?とかなんとか聞いたのですがよくわかりません。



971:デフォルトの名無しさん
08/05/11 02:50:42
>>954
ファイルそのものじゃなくて、そのファイルがあるディレクトリを読み
取り専用にすればいいじゃないかな。



972:デフォルトの名無しさん
08/05/11 03:09:50
>>970
リクエストパラメータを使って何月のカレンダーを表示するかをサーバに渡せばいい。
わからなかったらリクエストパラメータとJSPでぐぐってから質問しろ

973:970
08/05/11 11:03:33
>>970
すいません。

>リクエストパラメータを使って何月のカレンダーを表示するかをサーバに渡せばいい。

これがググってもわからなかったので質問させてもらったんですが。

<form method="post" action="calendar.jsp?year=<%=intYear%>&month=<%=intMonth-1%>">
<input type="submit" value="先月">
<b><%=intYear%>年<%=intMonth%>月</b>
<form method="post" action="calendar.jsp?year=<%=intYear%>&month=<%=intMonth+1%>">
<input type="submit" value="次月>
</form>

今はこんな状態です。一体どこにどうリクエストパラメータをつかうのかがよくわかりません。

974:デフォルトの名無しさん
08/05/11 11:33:47
>973
Java以前の話だ。
「HTTP POST GET パラメータ HTML FORM 」あたりのキーワードで調べろ

975:デフォルトの名無しさん
08/05/11 14:04:06
swingの勉強中なのですが、ImageIconクラスを使った画像の読み込みで
画像が表示されません。
自分でやってみてもダメだったので本に付属のソースをインポートしてやってみたのですがやはり表示されませんでした。
下記が本のソースで、画像ファイルstream.jpgはjavaファイルと同じディレクトリ(pkggui/以下)にインポートしてあります。
本のソースで表示されないあたり画像ファイルの置き場所が間違っているような気がするのですが、どうしたら良いのか教えてください。

public class ImageLabel01 extends JFrame {

  public static void main(String[] args) {
    ImageLabel01 w = new ImageLabel01( "Imagelabel01" );
    w.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    w.setSize( 350, 250 );
    w.setVisible( true );
  }
  public ImageLabel01( String title ){
    super( title );
    JLabel panel = new JLabel( new ImageIcon( "stream.jpg" ) );
    getContentPane().add( panel );
  }
}


976:デフォルトの名無しさん
08/05/11 14:26:37
Javaファイル(ソース)ではなく、クラスファイルと同じ場所に配置しているか?

977:デフォルトの名無しさん
08/05/11 14:40:55
>>976
そっちか!!と思ったのですが、
eclipseがbin/pkggui以下に勝手に置いてくれてたっぽくて今見たらありましたorz

ちょっとどうしても分からないので自分の状態が分かるよう
作業画面と実行画面をSSにしてみました。
こんな感じなのですが、どうでしょうか?orz
URLリンク(roo.moo.jp)

978:デフォルトの名無しさん
08/05/11 14:51:47
ファイル名だけど、pkggui/sample.jpg じゃね?
URLリンク(java.sun.com)(java.lang.String)


979:デフォルトの名無しさん
08/05/11 15:22:30
>>978
アドバイスありがとうございます!
今絶対パス指定したり色々やってみたのですが、どうやらここでのファイル名はカレントディレクトリとして
プロジェクトのディレクトリを参照しているらしく、そこにファイルを置くか./bin/stream.jpgとすることで解決出来ました!

以前、ImageIO.read(getClass().getResource(image))で描画処理をした時は
imageに使うファイルはパッケージ以下に入れてファイル名だけを記述して行う形でOKだったため
参照しているディレクトリが同様かと思い勘違いしました><;

980:デフォルトの名無しさん
08/05/11 15:42:11
>>975
new ImageIcon(getClass().getResource("stream.jpg")) とすればいいと思う

981:デフォルトの名無しさん
08/05/11 17:47:16
入社して業務でJavaを使うので一から学びたいのですが、良い書籍などあれば教えていただけないでしょうか?
オブジェクト指向についての解説もあれば尚良いのですが

982:デフォルトの名無しさん
08/05/11 17:51:20
>>981
他の言語の経験は?

983:デフォルトの名無しさん
08/05/11 17:54:24
入門程度ならやさしいjava以外ならなんでも良いんじゃない。

984:デフォルトの名無しさん
08/05/11 17:57:18
SJC-Pの問題集をやるのもあり
2ヶ月もあれば大雑把に概要は学べるだろ

985:デフォルトの名無しさん
08/05/11 18:02:41
今だとどんな本があるんだろか、と思って調べたら柴田望洋氏が何か書いてるな
明解C言語は良かったが、Javaはどうなんだろ

いずれにしても、古いものは避けたほうがいい
JDK5.0以降に対応しているもの

986:981
08/05/11 18:30:04
すみません、経験書いていませんでしたね
学校でC++、Java、VBについては一応習いましたがあまり真面目でなかったことと、
卒業してから遊び呆けて全く書かなくなっていたツケが回って現在は忘れまくって酷い有様です。
先ほどちょっとJavaで四則演算のみの計算機作ろうと思ったら変数宣言の仕方までわからない状態でした。
Dim x as Integerって確かVBの方ですよね・・・なんでこれで通らないのかと悩んでみたり
まぁ一応一度は習っていた経験は再習得には役立つと思うのですが、流石に変数宣言の仕方も忘れているようでは
何も知らないものと考えて一からと思っています。

Java以外の言語についても同様の状態です。
一応WhileやFor、If等は覚えていますが関数は殆ど忘れてます。
ちょっと上で挙げて頂いた本について調べてみます。

987:デフォルトの名無しさん
08/05/11 18:35:48
こういうレスを見るたびに悲しくなる

988:デフォルトの名無しさん
08/05/11 18:39:52
卒業して1ヶ月くらいプログラミングから離れていただけで知識が混濁するようではこの先やっていけないんじゃないか?

989:デフォルトの名無しさん
08/05/11 18:40:13
何しに学校行ってたんだ?時間の無駄はよくないよ

990:981
08/05/11 18:43:34
自分には適正が無いという事かもしれません・・・が、悔やんでも仕方ないのでこれからはしっかり勉強して能力を維持していかなくてはと決意を新たに頑張りたいところです

991:デフォルトの名無しさん
08/05/11 18:43:52
あれだろ?
レポート提出週は演習室で宴会みたいに大騒ぎしてたやつだろ
んでレポートはDQNグループの中で一番頭いいやつのコピー
レポート提出は考察とかを自分でまとめただけ

992:デフォルトの名無しさん
08/05/11 18:45:06
テストは過去ウラヤマシス
けど、前年度と違う教授や、問題変わってたら落としてやがったwww
あれは腹痛くなるまで笑ったぜww


993:デフォルトの名無しさん
08/05/11 18:46:26
>>990
とにかく書店行って入門書を斜め読みしてみ
一度とにかくやったことがあるなら、メタ的な知識はあるはず

994:デフォルトの名無しさん
08/05/11 18:48:05
適正がないと自分で判断したなら辞めるのは正しいよ
こんな糞業界、適正でもないとやってられん

995:デフォルトの名無しさん
08/05/11 18:49:56
今学校でVBとかもやるんだな
ちょっとびっくり

996:デフォルトの名無しさん
08/05/11 18:51:19
かたやDelphi、かたやScheme いろいろやるみたいですね

997:981
08/05/11 18:54:24
>991
不真面目とはいえ提出物はちゃんと自分で仕上げていましたよ
悲しいかな当時学んだ内容が脳に定着してくれなかった訳ですがそれは卒業後のだらけだけが原因ではなく、
学生当時の勉強への力の入れ方が足りなかったのもあったのだろうという事ですorz

>993
そうですね、そうしてみます。ただ定期圏内にあまり大きな本屋が無いのが残念ですが・・・

998:デフォルトの名無しさん
08/05/11 18:57:59
無闇にCの作法が混ざりこんできてるのが感じられるなあ
かえって混乱が起きてるようにも感じるが


999:デフォルトの名無しさん
08/05/11 19:07:35
おれ、ハカーになれるかも知れない・・・

1000:デフォルトの名無しさん
08/05/11 19:08:39
1000 なら Java 死滅

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


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