【初心者】Java質問・相談スレッド127【歓迎】
そろそろ良い加減にせいよ。
768 名前:デフォルトの名無しさん 投稿日:2009/06/06(土) 20:46:10 JVMはもともと文字列プールというものを持っていて、 いわゆる文字型リテラルが指定された段階でプールにオブジェクトを作成し、そこへのポインタを返す。 同一の文字列が既にプールに在る場合は、そこへのポインタを返す。 776 名前:デフォルトの名無しさん 投稿日:2009/06/07(日) 02:14:11 たしかに明記されてるな。 String literals-or, more generally, strings that are the values of constant expressions (§15.28)-are "interned" so as to share unique instances, using the method String.intern. 文字列定数はString.internを使って得た一意なインスタンス。
わざとそのポインタを全部に橋渡すテクニックも有るけどな
だからなんでわざわざ文字列比較しようとすんだよ。 TreeNodeそのもの比較しろや。
すみません。 SwingのJChoiceクラスがないんですけど 何を使えばよろしいですか?
JChoiceって何
ChoiceのSwing版がないんです。 JBottonとかはあります。
参考書買え
>>11 有難うございます。
>>12 買えと命令するのなら、
買う本くらい示したらどうだ?
俺には君がどのくらいの知識を持っているかわからんだろう
どれくらいの知識があるのか分からんのなら質問しろよ。 エスパーでもなければ不可能に決まってるだろ。
引数がおかしな値だったら戻り値に、nullを返そうと思っているんだけど nullよりも、例外を発生させる事の方が多いの?
じゃあ、お前さんは何をつくりたいのだ
ボタンやスイッチなどが100以上並んでいて、初心者が容易に操作できない玄人好みのソフト。
玄人はコマンドラインを好むってリナ厨のおっさんが言ってた
>>16 とりあえず例外投げとけ。
5行くらい説明を書いていて途中で面倒くさくなった。
23 :
デフォルトの名無しさん :2009/06/09(火) 21:18:00
Choiceってのは使う機会今まで10数年間なかったんだが これってPopupMenuの類なの?
>>16 プリミティブなintとかが返値の型の時はどうすんのさ。
>>前スレ928 今前スレ見たんだけど、こんな感じのことかな?違ったらスルーで。 無理やり縮めてるけど勘弁して。 // 作成順のインデックスを持つNodeクラス import javax.swing.tree.DefaultMutableTreeNode; public class HoldIndexNode extends DefaultMutableTreeNode { private static int totalNodeIndex = 0; private int nodeIndex; // コンストラクタ public HoldIndexNode() { super(); setNodeIndex(); } public HoldIndexNode(Object userObject) { super(userObject); setNodeIndex(); } public HoldIndexNode(Object userObject, boolean allowsChildren) { super(userObject, allowsChildren); setNodeIndex(); } // インデックス設定 private void setNodeIndex() { nodeIndex = totalNodeIndex; totalNodeIndex++; } // インデックス取得 public int getNodeIndex() { return nodeIndex; } }
// HoldIndexNodeテスト用クラス import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; public class Main { public static void main(String[] args) { HoldIndexNode root = new HoldIndexNode("ルート"); HoldIndexNode node1 = new HoldIndexNode("子1"); HoldIndexNode node2 = new HoldIndexNode("子供(文字列同じ)"); HoldIndexNode node3 = new HoldIndexNode("子3"); HoldIndexNode node4 = new HoldIndexNode("子供(文字列同じ)"); root.add(node1); root.add(node2); root.add(node3); root.add(node4); JTree tree = new JTree(root); tree.addMouseListener( new MouseAdapter() { public void mouseReleased(MouseEvent e) { JTree tree = (JTree)e.getSource(); TreePath path = tree.getPathForLocation(e.getX(), e.getY()); if( path != null ) { HoldIndexNode selectNode = (HoldIndexNode)path.getLastPathComponent(); System.out.println("selectNode.toString() =" + selectNode.toString()); System.out.println("selectNode.getNodeIndex()=" + selectNode.getNodeIndex() + "\n"); } } }); JFrame frame = new JFrame("HoldIndexNode Test"); frame.getContentPane().add(tree); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
Stringで文字列連結をすると、オブジェクトが破棄されて新しくオブジェクトを作りなおしますが、 str += "def" + "ghi" + "lmn" + "opq・・・と一行に書いた場合は、 オブジェクトは何度も作り直されるのですか?
ただ=でsetメソッドでフィールドに渡すだけだよ 日本語だけどなあ最近外人多いな
抽象クラスを継承したとき、実装するメソッドは部分的でいいと ずっと思っていたけど、全部実装しないといけないんですね? じゃあ、インターフェイスと同じなんですかね。
34 :
デフォルトの名無しさん :2009/06/10(水) 00:21:26
部分的にはね
ただインターフェースはインプリで複数していできるしね 使い分けないといかんよね
サブクラスが抽象クラスじゃないなら 継承する抽象クラスのabstractなメソッドは全て実装しないと いけないんですよね?
インターフェースは実体が無いから自分自身のメソッドを呼べない。 抽象クラスは自分でインターフェース宣言だけしておいて実体も無いのにメソッドを呼べる。 テンプレパターンってやつだけど、これが目茶苦茶便利なんだぜ。
>抽象クラスは自分でインターフェース宣言だけしておいて実体も無いのにメソッドを呼べる この日本語が理解できてないのは俺だけなのだろうか
抽象一つから何種類か拡張クラス作って 抽象で呼び出してメソッドはそれぞれの拡張クラスのメソッドをなんてことが可能だしな これ使い出したらやめられなくなるぐらい面白くなる
Interfaceの具象メソッド持った版としか捉えてないのはダメでつか?
41 :
デフォルトの名無しさん :2009/06/10(水) 00:44:29
使い方の違い意外はある意味でそう
>実体が無いのにメソッド呼べる まだJava始めて半年だけど newする時に結局サブクラス意識しないといけないから あまり利点がわからない
じゃああれですね。使いたいと思う抽象クラスがあって、 その中に10個の抽象メソッドがあって、使いたいのは9個のときは、 残りの一個もダミーで実装したりするんですか。
>>37 ,39
この子なに?最近デザインパターン覚えて浮かれてる子?
そのうち継承しまくることのデメリットにぶち当たって絶望とかするの?
JTreeがどうなったのか気になる
ぶち当たったのは作りこみ方が悪いんだろw JTreeの子どうなったのかねえ その後ぱったりだな 上手くいったのかな
>>42 まあそんなことはない。
public abstract class Clazz{
abstract String getMessage();
public void send(){
//ここはサブクラスがgetMessage()で何を返そうが知ったこっちゃない
System.println(this.getMessage());
}
}
ただ使うときに当然サブクラス化は必要。
まあこういうのは高階関数とかファーストクラスの関数とかクロージャがある言語だと
本当にクラスを意識する必要はないんだけど。
47 :
デフォルトの名無しさん :2009/06/10(水) 01:24:31
月初の曜日を求めたい。 (Calendarクラスより)
ググればあらゆる言語で出てくるんだが
テキストファイルを読み込むのに ScannerやBufferedReaderなどがありますが どのように使い分けるのが普通なのでしょうか。
それ別物だよ? 読み込んだテキストを処理するのがScanner ファイルを読み込む際に効率よく処理するために バッファを利用するようにするのがBufferedReader
入出力でStreamが付いているのと付いていないのでは何が違うのでしょうか。
// "日本"のUTF-8形式のbyte配列 byte[] utf8str = {(byte)0xE6, (byte)0x97, (byte)0xA5, (byte)0xE6, (byte)0x9C, (byte)0xAC}; // Stringオブジェクト生成 String s1 = new String(utf8str); String s2 = new String(utf8str, "UTF-8"); String s3 = new String(utf8str, "JISAutoDetect"); System.out.println(s1); // 正常 System.out.println(s2); // 正常 System.out.println(s3); // 文字化け 上記のコードで、JISAutoDetectは UTF-8のバイナリデータを認識できないってことなんでしょうか? バイナリデータが、SJISやEUCの場合は問題無いのですが。
reader writerに関しては簡易クラスだから省いて有る 入出力にはstreamと言う仮想の情報の流れが想定されている
>>52 EUCかJISかShift-JISかを判断するモンだったはず。
語弊があるかもしれんが、 Streamはバイナリデータの入出力と考えると楽
>>54 なるほど、ありがとうございます。
JISでも確認できました。
JISAutoDetectはunicode使ってない日本のエンコードをunicodeにマッピングするのを指示する文字列だぞ。 UTF系が使えないのは当然だろ。 あとMS932は化けるはず。
現在,日本語入力がonの状態なのかoffの状態なのかわかるメソッドはありませんか? 探してみても,ロックキーがonかどうか返すメソッドしか見つからないんですけど・・・
何でそんなLocale依存の特殊APIを組み込まなきゃいかんのだ
PDFファイルを読み込んで(ブラウザに)表示させる方法に悩んでいます。 表示させたいPDFは非公開のディレクトリに置く必要があります。 (PDFを直接リクエストできないようにしたい) iText等を使う方法はググって見つかったのですが、そうしたのは使わずに 表示するサンプルが見つからずにいます。(jarの追加が許可されないので) こんな感じでググれカスとか、このURL池とか、何か参考になる情報をお願いします。
>>60 Mime-Type指定してバイナリのストリームで吐き出す
抽象メソッドとインターフェイスの違いは、多重継承したいから インターフェイスがあるという理由だけなのでしょうか?
>>63 さぁ、C++言語研究者にでも聞いて下さいな。
JavaはC++に最も強い影響を受けていることは、誰しもが認める
ところでしょう。ですんでご質問の事柄等は必ずしもJava内部の
論理で決まったものとは限らないかも知れません。
(例えばC++コード移植性を高める便宜が無かったとは断定できないと
思います)
釘を指しておきたいけれどJavaを誹謗しているのではなく、むしろ
その功績は偉大だと思ってます。色々と言語を見てきましたが
Javaほど中庸で最適な文法は無いと思ってます。
厳密過ぎず、高級過ぎずってとこですね。
Javaが出てなかったら10年前にソフトウェア産業は危機的な状況
に陥ってた可能性が高いと思ってます。
酔ってるだろ
>>64 >中庸で最適な文法
とかいうならScalaとかのほうが適当だと思うが。
JMV上でうごくんだけどな。
>>63 クラスを継承することとインタフェースを実装することとは違う。
だからインタフェースが多重継承のためにあるわけではない。
多重継承ライクなことを行うのにも使えるだけで、
インタフェースを複数実装したからといって、
それはクラスの多重継承とは異なるものだ。
インタフェースはその名の通りオブジェクトに特定のインタフェースが
備わっていることを保証するためにある。
継承という親子関係で保証する仕組みよりも自由度が高い代わりに
実装は一切制約できない。
63です。なんとなく分かったような気がします。 ありがとうございました。
いまマルチスレッドのとこを読んでいますけど、 マルチスレッドはあまり使う機会はないですよね?
短時間で済む処理だけやってるうちはね
質問です。 JBossって最近使われてますか?
74 :
73 :2009/06/10(水) 19:41:15
実は、JBossそのものをわからずに質問してます。
76 :
73 :2009/06/10(水) 20:21:38
>>75 大丈夫みたいなので安心しました。
迅速な回答ありがとうございます。
うーん。一ヶ月くらい前にThreadを読んで、なるほど、わかったよ、 みたいな感じだったんだけど、今見たら全部忘れてる。 殆ど覚えてないなあ。頭のいい人は一回読んだら 自分のものになるんでしょうね。 とほほです。
プログラムは作ってみないと身につかないきがする
本でサンプルを 読むだけ → 何故か覚えられない とりあえず自分で打ち込んでみる → 何故か覚えられる ふしぎ!
class Work01{ public static MBox mBox = new MBox(); //ココ public static void main(String arg[]){ MRec rec = new MRec(); こういうとき、ココはいつ実行されるんでしょうか。
クラスが最初に呼び出される前に1回
>>81 こういうの初めて見たのですけど、これはどういう仕組みなのでしょうか。
キーワードを教えて頂けないでしょうか。
ココはいつ実行
Work01.<cinit>で実行
その後にClassLoaderからMethodを経由してmainが起動されるわけだ
え。と書いたがclass MBoxのmainではないのでおkだった。 実行というか、class MBoxのコンストラクタの呼び出しでいいよね
>class MBoxのmainではないのでおkだった 日本語でおk
staticがオブジェクトを生成してるのかな?
ダメだこいつ はい次の質問どうぞ
いかりやチョーさん死んじゃったよね
随分前からdeprecatedになってるはず 無理矢理使ったところで機能しないと思うぞ
92 :
60 :2009/06/11(木) 10:40:29
>>62 なるほど、ありがとうございます。
で、JSPを作ってみたところ真っ白なページが表示。
jpgもバイナリだから同じ理屈だろと思って試したところ、それは正常に表示されました。
パケットキャプチャしてPDFを直接リクエストして開いた場合と比較してみたところ、
何故か指定してないcharsetが入っていました。
このcharsetはサーバで制御する以外回避することはできないものですか?
ファイル入出力はReader、Writer、IutputStream、OutputStreamが 沢山ありますが、通常、この組み合わせで使うのが通常みたいな、 パターンはあるのでしょうか。
ある と言ったら貴方は次に何を聞く? ない と言ったら貴方は次に何を聞く?
わからん奴はとりあえずFileInput/OutputStreamとFileReader/Writerだけ覚えとけ 後はBuffered○○ってのでいい
極めて直感的に分かり易い気はするんだけどねえ入出力は
大きく文字ストリームとバイトストリームに分かれているみたいだけど、 バイトストリームはバイナリデータを扱うらしいのですけど 通常のテキストをバイトストリームで読み書きしてもいいのですか。
ぜんぜんOK 寧ろそうしないと Charsetなんかの問題が出る
入出力について、ありがとうございました。
FileChannel、あれは良いものだ。。。
101 :
デフォルトの名無しさん :2009/06/11(木) 15:07:17
iso-8859-1の文字化けの問題は少し厄介だなあれ
int[] dst = new int[8]; FileInputStream in = new FileInputStream(file); for(int i=0; i<src.length; i++){ dst[i] = in.read(); } fileは、8バイトのバイナリデータが入ってます。 それを1バイトづつreadして、dstに入れてるのですが、 for文の部分、これを拡張for文に変えることはできるんでしょうか。 できるとしたら、どのような記述になりますか?
javaの正規表現って、Perlの正規表現より簡単だと思ったのは俺だけ?
104 :
デフォルトの名無しさん :2009/06/11(木) 17:45:38
searchで文字位置見つけたいのとかよく使うのにいちいち糞めんどくね?
めんどくさい。 おれは自分でよく使うパターン用の エセ正規表現ライブラリ作って使ってる。
char ch = ' '; while (ch != 'Q' && ch != 'q') { System.out.println("何か入力してください"); try { ch = (char) System.in.read(); System.out.println("これは標準出力:" + ch); これで文字一文字 k を入力したら3文字入力されているようにループ するんですけど、何故なんでしょうか。
>>106 k が三文字出力される事については解らないけど、
入力で良くあるのは改行コードなどを読み込むことかね。
>>106 改行コードが入力されているから。WindowsプラットフォームならCRとLFの2文字分。
それとSystem.inを直接使用せずにInputStreamReaderでラップしてReaderとして扱うか、
Scannerでラップするかした方がいいと思う。
>>102 無理
for (int i : dst) {
i = in.read();
}
こう書いても、dstには反映されない
ホント糞は勘弁して欲しいよな
>>105 作っても継承できないからあまり役立たないんじゃないの?
どうせOOPとは名ばかりだけでstaticばっかりんなんでしょw
113 :
デフォルトの名無しさん :2009/06/11(木) 19:58:16
JAVAで コメント行である 「/* */」を空行に置換したいのですがひとつだけ例外があって ヒント句である「/*+ */」だけは空行にしたくないのですが 下記の書き方であってますか? いろいろテストした結果は問題ないのですが よろしくお願いします。 間違っているなら正解をすみませんが教えてください。 str = str.replaceAll("/\\*[^\\+].*?\\*/", "");
良さそうに見えるけど、?を書く意味がわからない 俺が低脳なだけか
おまえらu14のG1コレクタ搭載どうみる?
J2SE 5.0で我慢しとけ OracleのせいでJavaの有償化の流れか・・・
>J2SE 5.0で我慢しとけ 意味分からん。6でいいだろ
例えば、ファイルを読み込む処理のクラスで、パスをコンストラクタで指定する場合 後でパスを変更するsetメソッドを普通は作るのか? それとも、そんなメソッドを作らないで新しくオブジェクトを作り直させるのか?
>>118 設計おかしくないか?
普通、実際に読み込むメソッドにFile,URL,InputStreemなんかを渡す。
まあクラス定義と使い方見てみんと分からんが。
121 :
デフォルトの名無しさん :2009/06/11(木) 22:33:07
122 :
118 :2009/06/11(木) 22:33:29
あぁ〜、なるほどね。気がつかなかった 今、思えばメソッドの引数&戻り値がStringだらけになっていたよ
>>121 ん?120って何か変なこと書いてるか?
>>118 が全く意味わからない
setメソッドを作るってどういうこっちゃ。
is-aだかhas-aだかでReaderを拡張してる独自クラス使うってことか?
三行目は質問の意味すらわからない。
125 :
デフォルトの名無しさん :2009/06/11(木) 23:14:47
>>120 の方が意味不明なんだが、具体的なメソッド宣言はどなる?
>>118 はファイルを読むようなクラスでそのファイルをコンストラクタで指定するようになっている場合、
読むべきファイルを変更するならば、新しいファイルを設定するようなセッターを作るのか?
それとも一旦作成したオブジェクトはコンストラクタで指定したファイルの読み込み専用とし、
別のファイルを読み込むならそれ用の新たにオブジェクトを生成するのか?
どちらが普通か(もしくはいいのか)?
と聞いているんだと思う。
それに対して
>>120 は、
コンストラクタで読み込む対象を設定するのでなく、
実際に読み込むメソッドでその対象をFileやURLやストリームで指定するのが俺的普通だ。
実際には
>>118 のクラスがどう使われているのか見てみないとどうするのがベターか分からないが。
と主張しているんだと思う。
> それ用の新たに 新たにそれ用の
129 :
デフォルトの名無しさん :2009/06/11(木) 23:41:32
>>120 ,122,126
どうでもいいけど、そのメソッドはどういうインターフェイス宣言になるん
設計云々じゃなかったの?
さすがのエスパーな俺でも、日本語通じない相手にはエスパーできんわ
中の人は居なくて 実体はごねごねスクリプト
132 :
デフォルトの名無しさん :2009/06/11(木) 23:50:04
口だけかw 脳内乙よりひでーなww
>>129 それは
>>118 にそのクラスをどういう風に使っているのかを聞かないと分からない。
一気にファイルを読んでクラスの状態を変更したいのか(例えばProperties#loadみたいに)
それともInputStreamやReaderのように読み込む対象は固定で読み込むメソッドを頻繁に呼び出すものなのか。
情報を出してこない連中に対して 勝手な予測を立てても無駄すぎる 終了
逆だろw 嘘でも情報を出したやつが勝ちだwww 情報を発信できない情弱は負け
自己紹介合戦はここまで 次の質問どうぞ
137 :
デフォルトの名無しさん :2009/06/12(金) 00:25:50
情報小出しするほど珍しいことをしてるわけじゃないだろ。 何のためのデザインパターンとコードの再利用だか 逆に珍しいことしてる奴の方が数学の難問と同じく価値があると思kjdふぉあぷえおぷ$%%($ 嘘でも情報だしたほうが勝ちとか鼻糞みたいなこといえない奴もいるし、っここはレベルも低いな ここはアホすれだったか
138 :
デフォルトの名無しさん :2009/06/12(金) 00:28:24
>>135 おまえみたいな2CH小僧がいるから糞スレ化するんだよな。
VIPで修行して出直してこい。
139 :
デフォルトの名無しさん :2009/06/12(金) 00:29:32
>>128 とりあえず、スレッドの中でwriteするたびにflushしてみたらどーだろう。
強制終了した時ってfinally動いたっけ?試してみる気もしない。
(なんとなく、動いたら変かなーという脳内会議の結果)
>強制終了した時ってfinally動いたっけ?試してみる気もしない。 動かないときもある。
142 :
デフォルトの名無しさん :2009/06/12(金) 10:49:53
メモ帳でプログラムを作りたいと考えています。 Enterキーを押したら、 「10秒後にTabキーを自動で押し、 10秒後にEnterキーを自動で押す。」 というものなんですが…。ご教授ください。
意味が解らない
144 :
142 :2009/06/12(金) 11:10:59
プログラムのことが分からないで質問してすいません。 昔メモ帳にプログラムを書いている人を見たもので、 C言語?をメモ帳に書くと、メモ帳がプログラムに 変身するのだと思っていました。 そもそも、プログラムで、 キーボードのボタンを押すことなどできないのでしょうか? …自動でエンターとかタブとかを押すことができれば、 ワンタッチで複数のものがDLできるのではないかと 考えていました。
145 :
デフォルトの名無しさん :2009/06/12(金) 11:31:57
>>144 C言語でkeybd_event関数を呼べば
初心者以前の問題だ JavaでHello World書ける様になってからこい そこまでは自力でやれ
>>142 メモ帳で次の文字列を打ち込む
<html>
<script>
window.alert("Hello Java world");
</script>
</html>
これを「ファイル」→「名前を付けて保存」
で出てくるウィンドウボックス(ダイアログ)で「デスクトップ」フォルダー
を選びhoge.htmという名前を入力し保存ボタンを押す。
デスクトップにhoge.htmというアイコンが出来るからそれをクリックする
とHello java worldという文字列だけが出たウィンドウが開くぞ。
ただJavaまでの距離は相当あるがまぁこれが出来ればあと1ヶ月先には
Javaでプログラムがちょっとした書けてる筈
>>112 105じゃないけど、俺もURL抽出で似たようなことやってる。
正規表現で複雑なクエリパラメータを含むURLを
完璧に抽出するのって意外と難しい。
RFCで許可されているURL文字列を抽出する
メソッド組んでるよ。速いし。
汎用性と柔軟性を追求するなら正規表現ライブラリで
正解なんだろうけどな。
>>142 秀丸のマクロでも作ってみたら?
プログラムとは言えない事も無いけど似たようなものではある
150 :
142 :2009/06/12(金) 13:52:44
>>149 ありがとうございます。
探してみます。
System.setOut(new PrintStream(new FileOutputStream(args[0]))); こういうように繋げて書いた場合、closeはどう書けばいいのでしょうか。
>>151 System.out.close();
151ですけど。本では分けて記述していまして、 一番最初のFileOutputStreamの参照変数に対してcloseしています。 繋げて書いた場合はPrintStreamのメソッドのcloseを使ってOKと いうことは、closeは、どの段階のものでもいいのでしょうか。 それとも最初か最後のどれとか決まっているのでしょうか。
>>153 どのcloseを呼び出すのかは、使用するライブラリの実装次第。
java.io.Closeable#close() では、
> このストリームを閉じ、関連付けられているすべてのシステムリソースを解放します。
とあり、一番外側を close すれば、ラップされていても全て解放する仕様、と読み取れる。
一つの想定される作業群が終了した段階でStreamはまめに閉じるようにしたほうが良いよね
157 :
102 :2009/06/12(金) 15:32:19
>>110 ありがとうございます。
おとなしく普通のループ使います。
158 :
デフォルトの名無しさん :2009/06/12(金) 18:03:36
String filelist[] = cdirectory.list( new MyFilter() ); ・・・ static class MyFilter implements FilenameFilter { public boolean accept(File dir, String name) { return name.endsWith(".TXT") || name.endsWith(".txt");} } 見たこともない仕組みが登場しました。 acceptメソッドとか記述もしてないのに、これでちゃんと動くのですけど これは特殊な仕組みなのでしょうか。
>>159 俺にはacceptメソッドを記述しているように見える罠。
>>160 使う側の、String filelist[] = cdirectory.list( new MyFilter() ); で
呼ばれてないんですよね。読んでいるところが見当たらないんです。
>>161 cdirectory.list()メソッドの中で呼ばれてると思うが
class Sample1 { public static void main(String args[]) { try{ int test[]; test = new int[5]; System.out.println("test[10]に値を代入します。"); test[5]=【?】; System.out.println("test[10]に80を代入します。"); } catch(ArrayIndexOutOfBoundsException e){ System.out.println("配列の要素を超えています。"); System.out.println( e +"という例外が発生しました。"); } finally{ System.out.println("終わりました。"); } System.out.println("無事終了しました。"); } } 例外が出ないような値を【?】に入れたいんだけど5以上にしても5以下にしても例外に当てはまってしまう。 いったい何を入れればいいのかな?それともどこか変えなければいけないのかな?
new MyFilter() でオブジェクト生成はしてますけど、 acceptメソッドは、いつ呼ばれるんでしょうか
test[5]=【?】; 0〜4までじゃないですか。
>>163 書いてることがよく分からんが、というか配列を勘違いしてるっぽいが
test = new int[5]; でtest[0]〜test[4] までを確保しているので
test[5] は存在しない。
よって、【?】にどんな値を入れようとしてもエラーになる。
>>164 内部で自動的に呼ばれる
>内部で自動的に呼ばれる そうなりますと、listメソッドの中で記述されているということですね。 こういうのが沢山あると、使うほうはわかりにくいですねえ。 出てくるたびに考え込まないといけないですね。 ありがとうございました。
>>166 基本的なことを忘れてました。
ありがとう
>>167 考え込みません。
使い方は APIdoc に書いてある。
それが何を意味するのか、を考え込むかもしれないが。
170 :
デフォルトの名無しさん :2009/06/12(金) 21:55:18
searchするのも大変だしfinalだからOOP的に継承できないし、なんでこんなにジャバの正規表現は使いにくいんですか?
クラスライブラリを「正しく」使うのは、言語とかアルゴリズムとかの 知識だけじゃなくそれなりの「教養」も必要かもな
年寄りだと「コールバック」とか「関数オブジェクト」で通じるんだけどなぁ。
>>170 RegexpとかOROとか諸々の正規表現ルーチンを開発する楽しみを残すためです。
174 :
デフォルトの名無しさん :2009/06/12(金) 22:26:17
コールバックと正規表現は関係ないと思うが、もしかしてビギナー?
>>174 acceptメソッドに対するレスだろう。
いや関数オブジェクトは誤解されるかもよ?
>>176 むー、純粋な関数オブジェクトと誤解されるか。そこまで意識してなかった。
Javaで関数オブジェクトって厳密には実現できなくて、同様の手段としてストラテジ
パターン使ってる別物か。
import java.io.*;
public class Main {
public static void main(String[] args) {
File cdirectory = new File("c:\\usr");
String filelist[] = cdirectory.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".TXT") || name.endsWith(".txt");
}
});
for (String name : filelist) {
System.out.println(name);
}
}
}
178 :
デフォルトの名無しさん :2009/06/13(土) 00:47:35
ストラテジパターンとかコールバックとか言ってるけど結局ちゃんとわかってないんじゃんw 最近さ、ブログでもデザインパターンの用語ばかり散りばめて自分によってる奴多いんだよね・・・
人をこき下ろして済む生徒さんはいいでちゅね。
拡張子tXtやTxTはダメなんですね
>>180 実装次第。toLowercase()して比較。前スレの914あたりからの話を参照。
182 :
デフォルトの名無しさん :2009/06/13(土) 17:54:58
コンポジットパターンだったか、ファイルとディレクトリが典型アレ、 なんか設計というかファイルとデレクトリで使うには適してないと思うですけどどうですか? ファイルの方は抽象クラスで宣言されてるメソッドを使わないから、例外発生とかですよね。せんせ!
if (args.length != 1 || args.length == 1 && args[0] == "/?") { 引数のチェックなんですけど、"/?" とは何を入力したときなんでしょうか。
/?です。
ヘルプコマンドの定型文だろ dir /? みたいな
引数に、/?を指定しても、このチェックに引っ掛からないんです。
そりゃ当然だ。
args = new String[]{ "/?" }; ↑じゃ↓が偽になって弾かれるからだろ args.length != 1
それじゃ判定文の優先順位がわかんねえだろ つーか、またStringで==とかの論争が始まるのか、勘弁してくれ
if (args.length != 1 || args.length == 1 && args[0].equals("/?")) {
それじゃ判定文の優先順位がわかんねえだろ
/?については、そのまま/?と入力するので正しいんでしょうか?
&&は||より優先されるが、まあ括弧で囲むのが妥当だろうな
>>193 190に変更したら、引数に/?を指定してチェックに引っ掛かりました。
よく考えたらStringは==駄目でしたね。本の通り打ったんですけど、
本が間違えているんですね。それから、/?を引数に入れることに
どんな意味があるんでしょうか。
>>195 >本の通り打ったんですけど
出版社とタイトル、ページ数を教えて欲しい
ISBNでいいんじゃね あと版数な
while ((n = bistream.read()) != EOF) { System.out.print(convHex((n & 0xf0) >> 4)); //ココ1 System.out.print(convHex(n & 0x0f)); } //ココ2 それから、これはヘキサダンプ作成のコードなんですけど、 文字を4ビットずつ表示してると思うんですけど、 ココ1ではn & 0xf0をしなくても左4ビットに0が埋まるのではないかと 思うんですけど。どうなんでしょうか。 それから本のタイトル等は差し控えたいと思います。
著者に聞けタコ
何百回も言われてると思うけど、 情報出さない連中がまともな回答を期待するのが間違い
どうせあれだろ、自分で書いて動かなくて、 それを突っつかれたくないから「本の通りに書きました><」とか言ってんだろ
このスレの内容が既に初心者の域を超えている気がする 本当のjava初心者が質問しづらい空気だから、他スレでやって欲しいわ
202が初心者ブログでも開いてろアフォ
すげえ過疎ってるな
>>198 エスパーしなければならない点
1. bistreamの型
2. nの型
3. ENDの値
4. convHex()の引数の型
・・・情報出してると言えないよね、その聞き方じゃ?
1. BufferdInputStreamとエスパー
2. 1からint
3. 1から-1
4. キャストしていないから、nの型からint
とエスパーすると、BufferdInputStream#read() が返すのはバイト値か-1だけ
だから必要は無いね。
でもSystem.out.print(convHex(n & 0x0f));の行と並べた時に意図が明白になる
から意味はある。個人的シュミだと
System.out.print(convHex((n>
>>4 ) & 0x0f));
System.out.print(convHex((n>
>>0 ) & 0x0f));
とするかな。そんなことまで聞いてない?スマンな、エスパーだからな。
>>202 人のレスに一々ケチつけてるヒマがあるなら、キミが答えてやればいいじゃないか。
それで解決。
それで先生方は
>>182 について疑問に思わなかったんですか?
設計(例題)がおかしいんですよ!?
おそらく日本語がおかしくなけりゃ相手にしてるだろう
そんなこと言わず、食わず嫌いはいけませんよ!?
人工無能と会話していることに気が付くと恥ずかしいよね
>>206 >でもSystem.out.print(convHex(n & 0x0f));の行と並べた時に
>意図が明白になるから意味はある。
すごくよく分かりました。質問ももっと情報を書かないといけないことも
分かりました。ありがとうございました。
ム板マ板にだけ変なのを仕込んでるんだな
>198 See JLS 5.6.1
214 :
デフォルトの名無しさん :2009/06/13(土) 22:17:28
floatを小数点第一位まで表示したStringにしたいんですが、 一番簡単な方法はなんでしょうか? こんな感じです。 0.16 → "0.2" (四捨五入) 1 → "1.0"(小数にならない数も.0をつける)
多分String#format。それがだめならjava.text.NumberFormat。あとはしらね。
216 :
214 :2009/06/13(土) 22:34:09
どうもありがとうございます。 ググったらDecimalFormatというのがありました。 DecimalFormat pattern = new DecimalFormat("0.0"); String str = pattern.format(0.51);
>>198 はやさしいjavaかhead first javaだった気がする。
218 :
デフォルトの名無しさん :2009/06/14(日) 04:16:57
既存のJavaクラスを継承したクラスの、 インスタンスを作るにはどうすればいいですか? 例えば、Stringに追加メソッドが欲しいと思い、 class StringEx extends java.lang.String { public void addABC() { this += "ABC"; } } こういうクラスを作った場合、 StringExのインスタンスはどうやって作ればいいのでしょうか。
>>218 String は final宣言されてるから継承できないよ
220 :
デフォルトの名無しさん :2009/06/14(日) 09:33:21
サーティファイのjava言語能力検定試験3級を取得する為に勉強中です。 過去問を見ていると分からない記述があったので質問させて下さい。 下記mainクラス内の宣言部に記載されている、 「int a = 0x0f , b = 0x0f」の初期値"0x0f"が何を指しているのか分かりません。 @とAでは15が出力され、Bでは31が出力されました。 インクリメントされたaをxに代入しているにも関わらず、 なぜAでも15が出力されるのですか? どなたか教えて下さい。 class Increment{ public static void main(String args[]){ int a = 0x0f, b = 0x0f ,x = 10, y = 10; System.out.println(a); //@ x = a++; System.out.println(x); //A y = x + ++b; System.out.println(y); //B } }
>>220 ヒント
インクリメントにはa++と++aがある
222 :
デフォルトの名無しさん :2009/06/14(日) 10:24:28
16進も知らずに試験とな?
正規表現にマッチしたら、文字列の一部を抜きだしたいんだけど どうすればいいの?
class Kyutuu { public synchronized void buy() { 〜} public synchronized void seisan() { 〜} class Ko1 extends Thread { void buy() //ココ void seisan() class Ko2 extends Thread { void buy() //コレ このような感じの場合に、synchronizedを指定すれば 同期が取れるとあるのですけど、synchronizedなメソッドを 呼び出して終わればロックは自動解除されるとあるので、 ココが終わった瞬間に、コレが先に動いて同期が 取れなくなる場合があるように思うんですけど、 どうなのでしょうか。
>>226 何を守って同期したいのか不明。
Kyoutuu は可哀想な子
>>220 0x0fは0xが16進ですよを表して、一文字(8バイト)を表して、
ofは4ビットずつを、前半4ビットが0000、後半4ビットが1111で、
15になります。x = a++; は、x = a; a = a + 1 と同じ意味です。
>>228 buy()は金額加算です。同期とれませんよね?
>>230 特に同期を取る必要の無いものだろうから、別に問題ないだろ。
>>225 Pattern pat = Pattern.compile("a.*?b");
Matcher mat = pat.matcher("abaabbcbacb");
while (mat.find()) {
System.out.print(mat.start());
System.out.print(", ");
System.out.println(mat.end());
System.out.println(mat.group());
}
226です。テストしたらやっぱり同期は取れませんでした。 ありがとうございました。
235 :
225 :2009/06/14(日) 16:37:46
236 :
220 :2009/06/14(日) 16:44:44
>>221 >>222 返信ありがとうございます。
a++は処理が行われた後にインクリメントする、
++aは処理前にインクリメントするという認識でした。
この認識が既に誤っているのでしょうか?
なぜ、Aで出力結果が16にならないのかが分からないのです。
>>223 返信ありがとうございます。
リンクを貼っていただいたサイトを拝見しました。
16進数については勉強していたのですが、
お恥かしいことに0x0から始まる形式を見たことが無く、16進数と分かりませんでした。
大変勉強になりました。
>>224 上記の通り、私の勉強が足りませんでした。
試験まであと2週間しかないのですが、精一杯勉強して頑張ってみます。
返信ありがとうございました。
Javaのリフレクションとは、デバックをする手段と考えても良いのでしょうか?
238 :
220 :2009/06/14(日) 16:55:28
>>229 解説ありがとうございます。
0xという表記が16進数を意味しているんですね。
返信を下さった皆様、ありがとうございました。
私のバカな勘違いで、Aでaの中身を出力しているつもりで結果を見ていました。
本当に申し訳ありません。0x…の記述については大変勉強になりました。
お世話になりました。
>>237 否。
java-APIソースでjava.lang.reflectをgrepしてみるといい。
かなり積極的に利用されてる。
240 :
デフォルトの名無しさん :2009/06/14(日) 17:27:21
>>236 >Aで出力結果が16にならないのかが分からないのです。
int a = 0x0f // ここでaには15が格納されます
x = a++; // ここでxにaの値(15)が格納されて aに1が+されます。
System.out.println(x); //A つまりここの段階でa=16 x=15となります。
242 :
220&240 :2009/06/14(日) 17:33:06
>>241 パフォーマンスに激しく影響するし、
バグを実行時まで遅延させることになるから
積極的には使わない方がいいよ。
private メソッドを実行できたり、色々問題はあるけど、必要になったら使えば良い。 リスクを判ってるなら無理して使わない理由は特に無い。
Maven 使ってると、コレ関係あるのか?っていうライブラリだけで数十MBとか。 かといって、うかつに除外しちゃうと、動いている途中に大コケ。 これってもう、諦めて全部配備するしかない?
mavenをまったく理解してないとしか思えない
使いこなせないのをツールのせいにするのはよくないな。 依存関係も最近はマシになっている で数十MBを節約しなきゃいけないってどんな過酷な環境なんだw
>>245 普通に考えて要らないものを入れるような設定書くかな。
というわけで基本は全部入れる。
もちろん例外も有るけど、そこを考えて判断するのは基盤部分に携わる専門技術者の仕事だね。
自分が一般的な開発者の役割なら用意されたものを全部入れるべき。
Arrays.sortでComparatorインターフェイスを実装して降順にソートする というのがあるんですけど全然意味がわかりません。o1,o2には何が 渡っているんでしょうか。 String animal[] = {"lion","sai","buta","hyo","kirin","chiita"}; Arrays.sort(animal, new Mysort()); class Mysort implements Comparator<Object> { public int compare(Object o1, Object o2) { return -((String)o1).compareTo((String)o2); } } これで降順になるらしいのですが、何と何を比較しているのでしょうか。 解説していただけないでしょうか。
compare内に↓を書いてコンソールでも見てみ System.out.println("o1 : "+(string)o1) System.out.println("o2 : "+(string)o2)
JPanelの表示・非表示を切り替えるにはどうしたらいいですか? JFrameのようにsetVisibleというメソッドはなかったし setOpaqueだと背景色を透明にするだけで駄目でした
>>250 sortメソッドの中でオブジェクトを参照して比較してるんですね。
returnがマイナスならそのまま、プラスなら左右入れ替えているんですね。
よくわかりました。ありがとうございました。5時間くらい悩んでました。
253 :
デフォルトの名無しさん :2009/06/15(月) 15:13:35
現在1グラムモデルでの平均情報量(エントロピー)の計算を行うプログラムを以下のように作ったのですが これを2グラムモデルでの計算にするためにはどのように変更したらよいでしょうか? public class Entrp{ public static void main(String args[])throws IOException{ int byteCode; double p; int byteFrequency[] = new int[256]; //バイト値ごとの個数 fount.printl int i; String virusFileName; /* ウイルスのファイル名が書いてあるリストをオープン */ BufferedReader fin = new BufferedReader(new FileReader("Virus_list")); /* ウイルスの出現頻度のファイルを生成 */ PrintWriter fount = new PrintWriter(new BufferedWriter(new FileWriter("conclusion.F"))); while(null!=(virusFileName=fin.readLine())){ double e=0; /* ウイルスのバイナリファイルをオープン */ DataInputStream bin = new DataInputStream(new BufferedInputStream(new FileInputStream(virusFileName))); File virusFile = new File(virusFileName); matrixZeroReturn(byteFrequency,256); //バイト値個数の初期化 getByteFrequency(byteFrequency,bin);//ファイルのバイト値のカウントを行なう
254 :
デフォルトの名無しさん :2009/06/15(月) 15:15:31
/* ウイルスのバイト値の出現頻度をファイルに書き込む */ for(i=0;i<=255;i++){ p=(byteFrequency[i]/(double)virusFile.length()); e += -(p*(Math.log(p)/Math.log(2))); } fount.println(virusFileName+"の平均情報量は "+e+"です。"); bin.close(); } fount.close(); fin.close(); } public static void getByteFrequency(int array[], DataInputStream bin)throws IOException{ int byteValue; while(-1!=(byteValue=bin.read())){ array[byteValue]++; } } public static void matrixZeroReturn(int array[],int matrixNum){ int i; for(i=0;i<matrixNum;i++) array[i]=0; } }
>>251 アプレットサーバシステムを使うべし
ただし、あんまり嗅ぎまわると訴えられるから注意した方がいいよ
基本型の場合は、Arrays.sortで一行記述すれば昇順ソートできるけど、 Comparatorとかを使わずに、Arrays.sortのように降順ソートを 行う方法はないのでしょうか。
>>257 昇順ソートしたあと for で移すとか・・・
TheClass[] dst = new TheClass[src.length];
for (int index=0; index<src.length; index++) {
dst[src.length - 1 + index] = src[index];
}
>251 もうどうでもいいけどJPanelってsetVisibleあるよね・・・
javaの勉強がしたいので、他の人が書いたソースを読みたい 「codeなにがし」みたいな感じで、日本語コミュニティーのサイト知りませんか?
APIを見ると、List<E>のように<E>がついていまして、 他にも<T>が付いているのもあります。 このような、TやEというアルファベットの違いで、 何かのグループ分けとかあるのでしょうか。
>>263 まずはジェネリックスについて知るところを述べて欲しい
特許期間が無くなった薬のことですね?
>>257 Arrays.sortをした上で、末尾から取っていきゃいいんじゃ?
Collections.sort(List<T>, Comparator<? super c>)みたいに、
Collections.reverseOrderとかで手軽にできればいいんだけどね
>>246 (力強く) サーセン!
>>247 なにぶん、4年前のノートでディスクもメモリもCPUも;;
(開発用じゃなくて報告書などの事務用)
>>248 要らない物がわからない・・・_| ̄|○
Dolteng使ってプロジェクト立ててゴチャゴチャやってるうちに・・・初心者なもんで。
Maven Additional Plugin のせいもあるかも。
・・・なんのカスタマイズもしていないせいか、junitまでlibに配置されてるし・・・
で、その上で、何かコツってあるのかな?と。
今までStringを意識しないで、String hoge = "hage";と使ってきたけど なんでStringだけはnewしなくていいわけ?
>>268 >5 でも触れられているけど、言語規定でそーなってる。
3.10.5 文字列リテラル
4.3.3 クラスString
>>268 「めんどいからそうした」
が限りなく的を射ている。
>>266 Integer[] testobj2 = {0,1,250,-40,600,200,100,500,300,400};
Arrays.sort(testobj2, Collections.reverseOrder());
これで出来ました。ありがとうございました。
プリミティブの配列の話じゃなかったのか
プリミティブの配列のラッパークラスで代用できるからいいと思いました。
自分で >基本型の場合 と言っておきながら、ラッパークラスはありだとか 質問者に対して鬼畜すぎるだろjk
質問者じゃなくて回答者だったな失礼
>>275 そうでした。ごめんなさい。気をつけます。
278 :
デフォルトの名無しさん :2009/06/16(火) 00:25:01
Firefoxでジャバスクリプトでプログラム入門ってどう?大丈夫?
JavaとJavaScriptの区別が付いてない時点で大丈夫じゃないね ヤバ過ぎ
ある文字列が日本語かそうでないか判定するライブラリーなどは存在しませんか? 全角かどうかで判定すると他言語が大量に含まれてしまって困っています
言語とスクリプト(用字)の区別をつけてほしいところだけど、 java.lang.Character.UnicodeBlockでだいたいカバーできるんじゃない?
親戚(兄弟)クラスに java.awt.InputSubset というものがあるようだ。 こっちのほうが使いやすいかも。
ごめん、InputSubsetはただの定数で、判定用メソッド皆無だな。 どうやって使うんだ、これ。
パパスクリフトならクリフトの方が好きかな。
ザラキー魔は嫌いです
>>280 「日本語かそうでないか」の詳細がわからんのでなんとも。
ちなみに、JIS X 0208 に含まれてる文字かを調べるなら
java.nio.charset.Charset.forName("JIS0208").newEncoder().canEncode("日本語")
なんかでも可。"JIS0208"の部分は実装依存だけど。
あと、ひらがなカタカナはともかくとして
CJK Unified Ideographsは日中韓で共有してるので
これらを使ってる場合は文字の種類からだけ
日本語かどうかを判別するのは面倒かも。
>>283 java.awt.im.InputContext#setCharacterSubsets(Character.Subset[] subsets) の引数に
Stringとintの配列を格納する配列を作るにはどうすればいいのでしょうか。 LLで書くと↓のような感じなのですが。。。 [ [1, "任天堂"], [2, "ソニー"] ]
>>288 コンパイル時型情報なしでいいなら
new Object[][]{ { 1, "任天堂" }, { 2, "ソニー" } }
Double型の変数に代入されている数値が 整数かどうか判別するにはどうしたらいいでしょうか?
doubleには整数は代入できません 残念ですが、代入した時点でdoubleです
>>291 端数部分があるかどうかは、
try {
new BigDecimal(doubleValue).intValueExact(); // short, longもある
// 端数なし
} catch (ArithmeticException e) {
// 端数あり、またはintの範囲外
}
>>293 ただの条件判定に try-catch 使うなよ
Listの要素はを変更すると元の配列の要素も変更されて、 ArrayListの要素を変更しても元の配列の要素は変更されないのですか。
日本語でおk
Listはインターフェイスです クラスじゃありません
296がそんな説明で理解できると思えない
>>291 int化して引き算して差を見るというのは
いろいろアレなのでおいとくとして
Double.doubleToLongBitsでビットパターンに変換して
ごにょごにょすればいいんじゃない?
301 :
デフォルトの名無しさん :2009/06/16(火) 17:12:35
htmlからjavaアプレットでプロバイダのipを表示させたいのですが表示されません どなたかご教示お願い致します 【ip.javaの中身】 InetAddress iaddress = InetAddress.getByName(address); return iaddress.getHostName(); 【htmlの中身】 <html> <head> <title>test ip</title> </head> <body> <applet code="ip" width=100 height=100> </applet> </body> </html>
>>301 どこまで本気なのか計りかねるが、
ソースの一部を表示してるんだよな???
あと、appletタグは間違ってるだろ。
これでソース全部でコンパイルもせずにip.javaとhtmlファイルを配備してる
どうせIP晒しページでも作るつもりなんだろ。無視無視
面倒だからIDEでも使って作ってろよ
みんな初心者にパネぇなwww
JTableで自前でセルレンダラーを処理したいんだけど レンダラーをセットするときに table.setDefaultRenderer(Object.class, new MyCellRenderer()); だとレンダラーが適応されないんだけど、何でだろう? table.setDefaultRenderer(Integer.class, new MyCellRenderer()); だと、ちゃんと適応される 確かにテーブルモデルにInteger型の配列を設定しているけれど そのスーパークラスであるObjectでも処理されるんじゃないの? 検索してみても table.setDefaultRenderer(Object.class, new MyCellRenderer()); みたいなサンプルは多いんだけど、これだと自前のレンダラーが 呼ばれないんだよなぁ、何でだろう
>>307 Integer にはもう NumberRenderer というデフォルトレンダラが設定されてる。
JTable jt = new JTable();
jt.setDefaultRenderer(Object.class, null);
TableCellRenderer tcr = jt.getDefaultRenderer(Integer.class);
System.out.print(tcr.toString());
ついでに他のデフォルトレンダラ調べようとコードを見たら一目瞭然だった。 createDefaultRenderers() で Object, Number, Float, Double, Date, Icon, ImageIcon, Boolean が定義済み。
例外処理の勉強をしているのですが、どんなホームページを見ても、例外が発生した場合 オリジナルのエラーメッセージを表示させて終了 というモノしかありません。 例えば、5桁の整数のみ入力可能にして、それ以外だとエラーメッセージを表示させた後に再入力を促す などには出来ないのでしょうか?
while(true){ int x = 0; // 入力処理 // 数値へパース // 5桁ならループを出る if((9999<x)&&(x<100000)){ break; } // エラー表示 } これでいいじゃん。 例外出そうなのはパースくらい。
312 :
310 :2009/06/16(火) 22:33:52
ぜんぜんネタに見えないけど? 条件があるなら先に全部出さなきゃ。
いきなりネタ呼ばわりとか失礼な奴だなw
>>310 の質問文からだったら
>>311 の回答で十分だと思うぞ。
コンソールかGUIすら書いてないし。
だから情報出してこない奴なんかにレスしてやる必要ねえだろ
お前は無視すりゃいいじゃん 俺に命令するな
なにこのgdgd
想定外の値の通常の入力を例外処理というのかー 新たな息吹を感じるゼ
例外関係ないじゃん・・・ それにGUIでも311で十分だと思うんだが 入力処理んとこはJOptionPane#showInputDialogとかつかって エラーはshowConfirmDialogでいいんじゃないの? まあ確かにパースでエラーでたら例外必要かもしれないけど
漏れは英数前提だぜって組んで、全角で入力されて涙目か。
今のwinだとコマンドプロンプトから全角入力できないやつ居たりするからそうでもない。
例外投げるクラスやメソッド使った場合、try-catchで囲むか、throwsで丸投げすることになると思うんですが、 この2つは何か使い分けのようなものがあるんでしょうか。今のところすべてtry-catchで囲んでますが、throws使う利点が何かあるんですか?
その場所で例外の発生を処理する場合はcatchだし、例外の処理は呼び出し元に委任するのがthrows まったく違うだろ。 すべてtry-catchってmainの中に全部書いているようなコードなんじゃね? クラスを使ってプログラムが大きくなってくればtry-catchはまとめて行うべきって解るさ
卒論で参考文献にのってるフレームワーク利用して トランプゲーム作ることになったんだけど… いざ参考文献読んでみたらトランプゲームの場を 用意する方法だけで、肝心の思考ルーチン作成方法が載ってない('A`) エカルテなんてマイナーゲーム知らねっつの 教えてちゃんなのは重々承知だ おまいらぼすけての…
>>325 今すぐ学校の図書館へ行って関連書を探すんだ。
勿論、居るなら教授に聞きましょう。
>>326 実は底辺の通信制だから、気軽に学校まで足運べないんだ
でも、確かに関連図書探すべきだよな
逝ってくるよ
>>327 スレ違いだったのね
誘導サンクスです
逝ってきます
例外処理もまともにかけないとかw ここの回答者のレベルがしれてるwwwwwwwww
煽るだけ煽って具体例を出さないヤツもたかが知れてるよな
夏にはまだ早いぞ
コレクションフレームワークというのがありました。 他にも、何々フレームワークとかいうのがあるんでしょうか。
>>334 あるなら教えて貰えませんか?
そんな答えは聞いてないです
おかしな流れだな。 まるで先週のようだ。
132 名前:デフォルトの名無しさん[] 投稿日:2009/06/11(木) 23:50:04 口だけかw 脳内乙よりひでーなww 135 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/12(金) 00:06:18 逆だろw 嘘でも情報を出したやつが勝ちだwww 情報を発信できない情弱は負け 306 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/16(火) 19:40:03 みんな初心者にパネぇなwww 329 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/17(水) 12:10:26 例外処理もまともにかけないとかw ここの回答者のレベルがしれてるwwwwwwwww 2文字以上草生やしてる奴は一人しかいないからすぐ分かるな
>>335 フレームワークって要はクラスライブラリの集まりなので無数にあるのよ
あるなら教えろと言われても 「はいこれだけです」 と簡単に答えられるものじゃない
例を挙げるならSwingもそうだしSpring Frameworkなんかもそう
Spring Framework自体も10個以上の小規模なフレームワークから構成される
レスせずにはいられないのですね。分かります。
釣られてるなw馬鹿かw
コレクションのクラスを見ていると、 「保持する要素は要素の自然順序、もしくはコンストラクタに指定されたComparatorに従って昇順にソート」 のように、自然順序というのをよく見かけるんですけど、 自然順位とは、昇順のことなんでしょうか。
>>343 自然順序もしくは、Comparatorに従って、昇順に
普通に「自然順序」でぐぐると、java.lang.Comparable が見つかるわけだが。
計画的に使えば便利で良いよ。
345 :
デフォルトの名無しさん :2009/06/17(水) 15:39:30
のっぽんごでおk?
ListとMapは、なるほどですねえと思うのですけど、 Setは実際にどのような便利さがあるんでしょうか。 重複データを除けるとかあるみたいですけど。 他に何が便利なんでしょうか。
>>346 List でも Set の代用しようと思えば出来ない事はないけど、
重複チェックとか順不同の比較とか自分でやらなきゃいけないので不便。
そういうのを調べていくと、 そのうちにLinked〜ってのが気になってきて、 関連してQueueとかも絡めてコレクションフレームワークとかを色々と覚えられて、 標準ライブラリの構成とかも理解が深まってマジお勧め
どうやったら見やすく書くことが出きるのか考えているんだけど、 見やすさのために何も書いていない行を入れているのか? こんな感じ public String hogehoge (String hoge) { String hoge = "hage"; if(true) { etc.... return hoge; }
処理ブロック単位でいいっしょ ある程度の処理単位はあるっしょ
>>351 IDEでコードを書いていると、何か汚くなっちゃって
一応はルールは決めているんだけど、あんまり見栄えが良くない
1メソッド30行以内、ネストは2つまで、1行120文字、折り返すようなコードは不可 って感じのルールでやってる、空白行は原則なし
class Mysort1 implements Comparator<Object> { public int compare(Object o1, Object o2) { return ((Integer)o1).compareTo((Integer)o2) * (-1); } } インタフェースを実装するときは、全てのメソッドを実装しないといけない と聞いているのですけど、Comparatorインタフェースには compareメソッドとequalsメソッドがあるのに、 equalsメソッドを実装しなくていいのは何故なんでしょうか。
メソッドの行数に制限入れて頑に守る奴にろくなプログラマはいない
>>354 MySort1クラスのスーパークラスは何であるかと考えてみよう。
例えばJ2SE 6のObjectクラスの説明には、
>すべてのクラスは、スーパークラスとして Object を持ちます。
>配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。
とある。ということは、どういうことかわかるな?
>>356 Objectクラスのequalsメソッドは確か == の機能だったと思います。
Stringのequalsは内容が一緒かという比較だったと思います。
Comparatorのequalsメソッドが内容が一緒かという比較が出来ると
いうことは、Objectクラスから継承したequalsメソッドが、
Comparatorインタフェースのequalsメソッドの実装ということに
なるんでしょうか。
あたり
こんばんわ。
JAVAを独学で勉強し始めて1ヶ月ほどたち、自分で筋トレ用の予定管理
windowアプリケーションを作ってみようとおもっています。
アプリケーションのイメージを下記リンクにイメージを張っておきました。
http://u1.getuploader.com/toollove/download/100/sample.bmp その際、JTableを使えばよいか、GridBagLayout(セルの中にtextfieldを挿入)を
使えばよいか迷っております。
私の調べたところ、
JTable・・セルの結合ができない。
セルの内容について変化したかしないかの判定ができる
(更新時に変化の発生しないセルは更新処理を飛ばせる)
GridBagLayout・・・セルの結合ができる。セルの内容変化については不明
ということがわかりましたが、どちらをつかったほうが、このような
アプリケーションを使う際に適しているのでしょうか。
或いは、腕立て、腹筋等の項目はGridBagLayoutを用い、
予定回数、実績回数のセルは、JTableをつかったりということも
できるのでしょうか。
説明がうまくなくてすみません。
>360 GridBagLayoutはありえない セルの結合って、TableはExcelじゃないよ 出来ないことも無いけど、はじめて1ヶ月じゃ手に負えないと思う あと中にJTextFieldいれようとすると難しくなるから、入力はダイアログなり別にわけてJTableは表示だけの方が楽だと思う 作れずに挫折するようなハードルはよくない
String変数に入っている文字列の数を調べる方法はありませんか?
常に1個だろ なんて釣られないからな。
凡化と特化のメリットってなによ?
>セルの結合 SwingなんだからHTMLのtableとか簡単だが
>凡化と特化のメリットってなによ? 継承のメリットと等価 オブジェクト指向における汎化と特化をJavaの上で実現してるのが継承だから
え?
ああジェネリックスの話かと思った
370 :
デフォルトの名無しさん :2009/06/18(木) 08:00:58
少し上にも出てたのですが、コードの書き方とかで何か決めていることってありますか? 私は原則として電通が公開しているJAVAコーディング規約と昨年買ったコーディングの掟の本を守る感じなのですが。
プロジェクト内で複数のコーディング規約を併用しなけりゃなんでもいいよ。
372 :
デフォルトの名無しさん :2009/06/18(木) 10:25:43
setLayout(new BorderLayout()); Scrollbar sb1 = new Scrollbar(Scrollbar.VERTICAL); add(sb1, BorderLayout.EAST); こうやって上下のスクロールバーを実装したのですが スクロールバーは動くものの、中の画面が移動しません。 どうすればいいでしょうか?
Javaの基本が一冊読み終わりました。 次にビジュアルなプログラムに挑戦したいと思いますけど、 AWT、SWING、SERVLET/JSPなどが、あるようですけど、 どういう順番で勉強するのがいいのでしょうか。
>>371 ご返答ありがとうございます。
プロジェクトに入ると自己流の書き方はNGになるという認識であってますか?
もしそうなら今やってることがなんか意味がないみたいに思えてきた…
>>374 AWTとSWINGは今からわざわざ覚える必要は無いかなと思います。
その3つから選ぶならJSP+Servletですが、その前に軽くデータベースなんていかがでしょう。
データの永続化がないシステムなんてほとんど無いでしょうし。
JDBCを生で使って基本を押さえて、馴れたら軽めのO/RマッパーやJPA。
入門書でも少しは触りますけど、「Java入門」なのでクローズ処理とかトランザクション管理とか大切な部分が省略されちゃってますから。
ついでにDBMSの知識も得られて一石二鳥かも?
実行結果をテキストファイルに出力したくて以下のプログラムを書きました。 import java.io.*; class test101{ public static int[] num; public static int sum =0; static void sum(int a[]){ num = a; for(int n=0;n<4;n++)sum+=a[n]; pw.println("合計は"+sum+"です。"); } } class test100{ public static void main(String args[]) { try{ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("test1.txt"))); pw.println("1+2+3+4を行います。"); int[] num = {1, 2, 3, 4}; test101.sum(num); pw.close(); } catch(IOException e){ System.out.println("入出力エラーです。"); } } } 「1+2+3+4を行います。」は問題なく出力されるのですが、pw.println("合計は"+sum+"です。");でシンボルエラーが出てしまいます。 sumの中のprintln文もテキストに出力するにはどうしたら良いでしょうか?
test100で、test101.sum(num,pw);として、 test101で、static void sum(int a[], PrintWriter pw) { とすれば良いかなあ。
ざっと見てもコンパイルできないと思うんだが。
「問題なく出力される」ってw
俺も
>>378 でいいかと。
自分ならTest101#sum(int[])の戻り値をlongにして、pw.println()は呼出し元で。 理由は、Test101#sum(int[])の仕事が大きすぎる気がするから。 sum()は渡されたint配列の和を計算するメソッドと割り切って、結果出力は呼出し元で行うのが自然かなと思います。
381 :
377 :2009/06/18(木) 20:04:17
>>378 なるほど!できました。
もう一つ質問なのですが、引数で指定されたファイル名で出力したいと思っています。
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("test1.txt")));
のtest1.txtをargs[0]にして、java test100 out.txt で実行してみたのですが、args[0]というファイルが出来てしまいました。
なにが良い方法はありませんか?
>375 NGです そのプロジェクトの書き方に従わなければメンテナンスできなくなります。 ですが、マトモなプロジェクトならばルールに大きな違いはありません Sunの標準をベースにした似たようなルールです
皆様のご意見をお聞かせください for(Iterator ite = this.getFacade(request).getTestList(test).iterator(); ite.hasNext();){ TestTransfer aTran =(TestTransfer)ite.next(); mapTEST.put(aTran,aTran.getEtc()); } テストリストから特定の物を取り出してマップにputするものですが リストの量が大きくなった時、処理効率が悪い気がするのですが もっと良い方法はありますでしょうか? 宜しくお願い致します
>>381 それは多分↓こうしたのだろう。
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("args[0]")));
↓こうな
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(args[0])));
>>384 なるほど!納得です。そうですよね。ありがとうございました〜。
String型の配列に人の名前が入っています。 名前をチェックして、名前の文字数が5の人を System.out.printlnで出力したいのですが、どのようなプログラムを書けば良いでしょうか?
>>387 オイラもプログラミング詳しくないけど
String[] nameList ={"satou","itou","suzuki","watanabe"};
for(String name:nameList) {
if(name.length() == 5) {
System.out.println(name);
}
}
}
>>383 直接的な答えじゃなくて申し訳ないんだけど、
その手の話をするときには先に確認することが3つあります。
(1) その処理に求められる非機能要件
(2) 想定される平均/最大データ量
(3) (2)を元にテストデータを作って実測した現行コードの処理時間
これらに問題がなければ最適化は後回しでOK。
それよりも読みやすさとか保守のしやすさを考えた方がずっと良いです。
>>386 ネットワークの転送速度から言うならそうかもしれない。
でも、一度に読み込む分のバッファだから1024でも充分。
チューニングするかどうかのレベルの話だと思う。
>>383 自分はそれを効率UPする方法は知らない。
レスが付かなかったら、多分無視されたわけじゃなく誰も知らないということ、でよろしく。
>>387 String#length() を使う。
内部的にUnicodeなので全角半角問わずに5文字。
int CHECK_LEN = 5;
String[] names = new String[] { "1", "12", "123", "1234", "12345", "123456"
, "一", "一二", "一二三", "一二三四", "一二三四五", "一二三四五六"};
for (String name : names) {
if (name.length()==CHECK_LEN) {
System.out.println(name);
}
}
名前に空白が入っていたらとかは考えていない。
391 :
386 :2009/06/18(木) 21:09:47
392 :
デフォルトの名無しさん :2009/06/18(木) 21:15:59
いまjavaの研修を受けています Exceptionを習ったのですが、例外処理は全て ユーザー定義Exceptionを利用して書くべきなのでしょうか? まだExceptionには不慣れなこともなり、if文で判別して 書いた方が早いと感じるのですが
>>376 ありがとうございました。
データベースはMySQLを勉強してみます。
>>392 おぢさんたちは、エラーコードやらエラー情報やらにウンザリなんよ(´・ω・`)。
悪いことは言わない。例外を投げたり捕捉したりが絶対に便利。
>>392 例外はあくまでも例外であって、分岐じゃないって考えてください。
例えばDBから情報を取得する時
(正常) 情報が取得できた。
(代替) 情報が無かった(分岐で書く)。
(例外) DBに接続できなかった(例外で書く)。
と書いたら少しはニュアンスが伝わるでしょか。
Webアプリケーションでリクエストごとにuser-agentを見る場合、 毎回チェックするのとuser-agentをどっかに保持しておくのとどっちがいいでしょうか? 保持しとく場合、user-agentの種類とバージョンを一緒にして管理した方がいいのか、別々に管理したほうがいいのか。
一度User-Agent文字列のバリエーションの多さに絶望するといい。 ほとんどIEだけどさ。
エラーコードで分岐(分岐で例外を扱う)はまだ気持ちがわかるんだけど 逆に例外で分岐を扱うのが居るから困る。 あと、NullPoをcatchするようなやつは小一時間かけて説教したくなるわ。
>>398 明らかに一緒に管理したほうがいい
種類とバージョンを別々に管理とか聞いたことがない
import javax.servlet.*;と書くと、 javax.servletはみつかりません、と出るんですけど 何か新たにインストールしないといけないんでしょうか
>>397 例えば…
String[] strs = new String[2];
strs[0] = "not null";
という初期化がされたStringの配列があったとして
別の所で strs[0]、strs[1]、strs[2] とアクセスしたらどう処理されるか。
添字0から順に "not null"、null、ArrayIndexOutOfBoundsException だろう。
これで取得成功、取得成功だが要素が空、取得失敗の3パターン。
>>400 アプリケーションよりの所でNPEキャッチしてエンドユーザー向けのメッセージ出すことはあるだろ。
ねぇよ。
おお有りだろ 運用が言語知識あるとは限らないし、 生のトレース吐くだけじゃ運用がわからんこともある
ああすまん、ぬるぽ限定か こりゃ作りこみバグだから、 わざわざcatchはしないわ
>>402 手っ取り早いのは、MergeDocのEclipse3.4.2 java+jre を入れてしまうこと。
一緒に展開されるTomcat6.0のlib/servlet-api.jarを参照。(自分で設定するなら)
この場合、Tomcatのインストールと設定が不要なのが最大のオススメポイント。
そしてTomcatプラグイン使って楽々実行。
warファイル作って、配置して・・・とかしないで良い。
javax.servletってな〜に〜?とか聞きに来るレベルなら迷わずポチっと。
http://mergedoc.sourceforge.jp/ >>404 無いね。コーディングエラーしかありえないから。
javaの勉強として、2ちゃんねるからDatを取得するプログラムを書いています。
クラスはHttpURLConnectionを使っています。
ttp://www.monazilla.org/index.php?e=198 の要求メッセージの一例(1回目)のには
>Connection: close と書いていますが、なぜclosなのかいまいちわかりません
connect()→httpステータスコードの確認→InputStreamを使ってDatを取得の順番でいいのでしょうか?
リファラやUser-Agentの設定などは済ましています
おれも昔はヌルポに悩まされたもんだが 全体をtryで囲み try{ ・・・ }catch(NullPo){ ; } とすることで事無きをえるようになったぜ
>>409 eclipse3.4ガニメデ日本語オールインワン使ってます。
tomcatは5.0、5.5、6.0が入っているようです。
いまネットで見てみたら、tomcatフォルダにあるservlet.jarというのを
eclipse外部ライブラリ取り込みしなさいみたいなこと書いてあります。
やってみようかと検討中です。tomcatは6.0がいいのでしょうか。
ところでjavaxというのはtomcatに属しているのですか?
javaのAPIでクラスを調べてもservletクラスは確かにないですね。
かなり驚いています。
>>409 > 無いね。コーディングエラーしかありえないから。
オモチャや使い捨てのプログラムならともかく、それ以外でエラーハンドリングしないなんてありえん。
自分も含めてプログラマがコーディングエラーしないなんて信じられるわけないだろ。
>>390 String#length()(に限らないが)はサロゲートペアに注意な。
>>414 おまいさんは仕事を任されたらまず最初に、失敗した時の言い訳を考えておく
のかと小一時間。
>>416 じゃあおまいはシートベルトもせず自賠責にも入らず車に乗るのかと(ry
死ぬ前にせめてダイイングメッセージ残すくらいのことはさせるだろ。
ああ、普通そういうときはExceptionとかThrowableを引っ掛けるか。
NPE直に拾うのはないな。それなら済まんかった。
今日見たソースに new AbstractDataAccessor() なんてのがあった abstractじゃないのにそんな名前つけんな! 紛らわしすぎる
プログラミング言語でOK
>>419 たぶん、abstract とか concrete とかいう名前のテーブルが DB にあるんだよ
いや、>419に釣られんなよ new AbstractDataAccessor() たぶん、こうだ。 new AbstractDataAccessor() { // 実装 };
423 :
デフォルトの名無しさん :2009/06/19(金) 07:46:59
現在、画像の一括表示をした状態から見たい画像をクリックすると 新しいウィンドウでその画像を表示するプログラムを作ろうとしているのですが 新しいウィンドウを開くことについて調べると JavaScript関係のプログラムばかり出てきてわかりません。 教えてもらえませんか?
>>423 情報が少な過ぎてよくわからん。
Javaのバージョン、
作成するシステムの種類(Webとかawtとかswingとか…)
どこまで出来ているのか(全くゼロ、質問した新ウィンドウ以外は完成してるとか)
質問者のスキル(どの程度書けるの?)
このくらいの情報をつけてくれるとレスもしやすいと思う。
ふらっと宿題やりますスレ眺めてたんだけどさ、 あそこの回答見てると、ほんとに動けばいいや的なのと 拡張改修まで気にしてるのとがよくわかって面白いな。 恐らく今の質問者のスキルでは書けない実装もあるだろうし、 突っ込まれたらなんて答えるのかが非常に気になる(笑 まあ余談は横に置いといて、 Stringで読んだ数字文字列を数値に変換するときってどんな風にチェックしてます? いきなり突っ込んでNumberFormatException捕まえるのは乱暴な気がするんだけど。
426 :
デフォルトの名無しさん :2009/06/19(金) 08:47:29
int a=get(index++), b=get(index++), c=get(index++); というコードをよく見るのですが、このコードではa || b || cのように必ずa,b,cの順に実行されることが保障されてるのでしょうか?
427 :
423 :2009/06/19(金) 08:53:38
import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; 勉強し始めて始めて3週間くらいかな 本当は宿題スレに描くべきなのかもしれないけど、 なんとか自分で解きたかったからヒントをもらいにこっちに書き込んでみました 完成度は新ウィンドウ以外はほぼ完成 画像一覧を表示させる(ウィンドウでのアイコン表示のように)部分は完成していて そこから画像をクリックすると新しいウィンドウでプレビューのようにその画像が出るようにしたい ただもとの画像の表示するサイズを固定して50×50ってかんじにしてるから 新しいウィンドウで開くときはまたもとの画像を読み込んでって感じにしなきゃいけないのはわかるんだけど そのやりかたも全くわかってないくらいの初心者です。
>425 正規表現で緩くチェックしてから変換が無難 >426 そんなコードは滅多に見かけないわw a, b, c の順に実行されることは保証されるが in a = get(index++); in b = get(index++); in c = get(index++); となぜ書かないんだ? こう書けばおまえさんのような疑問が出ることもなかろうに 例外発生時も行が同じだとどこが問題かわかんねーぞ
>427 まずは「JDialog」で検索するよろし
430 :
デフォルトの名無しさん :2009/06/19(金) 09:29:02
>>428 何ですかこの人?
頭壊れちゃってるんですか?8笑)
おつかれ、もう休んでいいよ
まだHelloServletが出ません。敷居が高いですねえ。 悪戦苦闘しています。eclipseで行っているんですけど、 サーバ登録(servers)とか動的何とかとか、色々と行わないと いけないみたいですけど、皆さんもこのような複雑なこと 本当に行っているのでしょうか。
その上から目線の書き方、なんかデジャブすんなw
そうしてeclipse内部のTomcatを起動して内臓のブラウザが表示されて、 その後本物のTomcatを起動するとか、warにエクスポートするだとか、 複雑なこと書かれていますが、意味不明です。
Servletも、やはり入門書を一冊読まないと難しいものなんでしょうか。
別に読まなくても楽勝だと思うんだが。 Java自体の経験はあるの?
Javaの勉強始めて3か月たちました。Java入門書を一冊読み終わったところですね。
Eclipseでやってるってのは分かったが、その環境は? 参照したWebページでは、Tomcatのプラグインはなにつかってんだ? 俺が使っているのは、Europa+WTPだが 新規プロジェクトで、ダイナミックウェブプロジェクトを選べば、 servlet-api.jarにパスを通すとかといった、基本的なところは 全て終わってるけどな? 多少の設定は要るが、それでもEclipse上で全て終わるしなぁ。 見てるところが古いんじゃねーの?
Pleiades ガニメデ3.4 All in One日本語です。 Tomcatが既に起動してて、さらに起動しようとしていたようです。 HelloWordが出ました。そのHelloWordプログラムですけど、 public class HelloWorld extends HttpServlet implements Servlet { public HelloWorld() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); これで、setContentTypeメソッドはHttpServletResponseインターフェイスの 上位のServletResponseインターフェイスのメソッドなんですけど、 このsetContentTypeメソッドは、どこで実装されているんでしょうか。 実装している箇所を見つけきれません。
440 :
デフォルトの名無しさん :2009/06/19(金) 20:40:31
宿題スレの741にあるメソッドなんですが、引数にfinalとかチェックしてIllegalArgumentExceptionとか見慣れない書き方がたくさんです。 これってJavaっぽい書き方してるんですか? それとも適当に書いてる?
txtファイルにプログラムコードを書いたのですが これをどうすればJavaになるのでしょうか? 拡張子を.javaにかえても効果がありませんでした。
初心者はIDEつかえ パス云々の説明がめんどくさい
>>440 引数チェックは普通。null ならぬるぽ例外の方が良いという人も。
どちらも実行時例外だが、@exception に仕様を書くべき。
要は、仕様だから馬鹿な値をよこすな、と。
引数へのfinal指定は上書きバグ防止のオマジナイ。
439です。うなってます。 直接HttpServletResponseインタフェースをimplementsしているわけでは ないので実装する必要がないってことですか。そういえば、コレクションの Listインタフェースとかを使うときに、実装とかやってませんでした。 クラスでimplementsするときだけ全部実装なんですね。 変な質問をしてしまいました。
>>443 お返事感謝です。
書き方はそう変ってことはないんですね。
たぶん全角文字列で呼ぶと期待通りに動かない気がするけどいいのかな。
メソッドA(public)が同じクラス内の、メソッドB(private)を呼び出している。 このクラスを継承して、メソッドBだけをオーバライドするような処理をしたい 実際にはシンタックスエラーになるけど、これを解決するような処理できない?
>>444 約束さえ守っているなら具体的にどうやって実現しているかは
考えなくていい、というときの約束に当る部分を定めるのが
インターフェイス。
実装がどうなっているかは、requestやresponseにgetClass()
してクラス名を調べ、あとはフレームワークのソースにあたるべし。
>>446 クラスに手を入れられないなら、最終手段はリフレクション。
Nodeってクラスがあって、それはint x, y, idを持ってる これを配列でもコレクションでもいいからまとめて管理したいのだけど IDが重複して登録されるのは避けたい こういう場合、追加削除の手間を考えてコレクションを使うとして IDが被らないようにするには、追加する時にいちいち全ての要素のIDと比較して 被ってないか見てみるしかないでしょうか? 重複自体はSetで避けられるのですが それはあくまで要素の重複で、この場合は要素の持っているx, y, idのidのみを重複不可としたいのです
451 :
446 :2009/06/19(金) 23:13:38
>>448 サブクラスではメソッドBが見えないから、やりたいことには近いけど
スーパークラスのメソッドBが見えるのは困るんだよ
>>449 調べてみるわ
NodeのhashCodeメソッドをオーバーライドしてid返すようにしてHashTable使う
private無視してリフレクション乱用してるプログラム読まされると発狂する
オーバーロードさせない為に見せない(private)んだから本末転倒な気もするわな。
オーバライドな。
List<String> hoge = new ArrayList<String>() と、書いた方がいいよって 説明しているサイトがあるけどなんで? だって、hogeは宣言した後にhoge = new LinkedList<String>();って書く事は少ないハズだし
>456 あとからArrayListから別のListに変えたいって思うことがあるかもしれないじゃない マルチスレッド化するからVectorが必要になるとか そういうときにArrayList独自のメソッド使ってると難しいってことでしょ
Vectorの存在価値がわからない。。。
>>456 ローカル変数をインタフェースで宣言する意味は余り無い。
別の何かを使う時も書き換えれば良いから。
>>458 過去の遺産。
見た目でわからないから嫌なのだが、お手軽な同期対応クラス。
>>456 ジェネリクスの効用かなあ
例えばリターンがObjectのときキャストミスがなくなるとか。
Java5.0以降ならConcurrentMapもCopyOnWriteArrayListも有るからほんとにVectorは使わないね。 完全に後方互換性が必要な場合のみになったと思う。
[
{
"url": "
http:// ",
"image": "
http:// ",
"time2": "2009-06-20T01:44:09+09:00",
"content": "あいうえお",
"user": "test",
"time": "2009-06-20 01:44:09",
"id": 1231312
},
{
"url": "
http:// ",
"image": "
http:// ",
"time2": "2009-06-20T01:44:09+09:00",
"content": "かきくけこ",
"user": "test",
"time": "2009-06-20 01:44:09",
"id": 1231313
}
]
こんな感じのJSONをjavaでJSONICを使い読み込みたいのですがうまくいきません
http://jsonic.sourceforge.jp/ http://jsonic.sourceforge.jp/1.1/java/api/net/arnx/jsonic/JSON.html コードは次に
public class JSONTest { public static void main(String[] args) throws JSONException, FileNotFoundException, IOException { JTweetList list = JSON.decode(new FileReader("C:\\p.json"), JTweetList.class); list.listSize(); } } public class JTweet { public String url; public String image; public String time2; public String content; public String user; public String time; public long id; } public class JTweetList { public ArrayList<JTweet> list; public void listSize() { System.out.println(list.size()); } } Exception in thread "main" java.lang.NullPointerException at test.JTweetList.listSize(JTweetList.java:9) at test.JSONTest.main(JSONTest.java:13) ぬるぽなんでちゃんとJSONから取り込めてないように思えます。 どのように書けばいいのでしょうか?
JSONは知らんがそれjsコードに落とすと配列が二つのオブジェクト持ってるんだがJSONて一番外側で配列イニシャライザ使えるの? sunの実装だとjava6のrhinoに食わせればいいんじゃないの?とか思う俺。
Vectorは普通に便利だが?
>>450 キーを id に、値を Node にした HashMap にするのはどう?
わざわざVectorを使う必要がまったく解らん
過去から抜け出せないだけ
469 :
456 :2009/06/20(土) 09:58:33
30秒ってミリにすると、3*10^4じゃん これって、もっと格好良くかけないの?
static 何か 足し算(何か a,何か b){ return a+b; } っていう関数の何かをintかlongどちらでも使えるようにするにはどうやりますか?
サーバーサイドのマルチスレッドに関する書籍でお勧めのは無いでしょうか。 今まではバッチ系の実装者をやってきてたんですが、 突然管理側に回ることになり、 しかも下についてるメンバがマルチスレッドに疎いため、 参考文献を用意したいと思ってます
473 :
471 :2009/06/20(土) 12:51:23
ジェネリクスのようなやり方の物をお願いします。 足し算<INTEGER >(10,10); とやるようなのがいいです。
static int[] a(int[] a, int[b]){ 何かする } static long[] a(long[] a, long[b]){ 何かする } この二つをまとめる方法ありませんか?
>30秒ってミリにすると、3*10^4じゃん 30*10^3
>>475 Javaじゃ無理。
JDKでやってるみたいに m4マクロとか使って
.java を生成するのはアリだけど、スレ違いかな。
public static <T> T[] func(T[] a, T[] b) { とかやろうとして、プリミティブは駄目、と怒られた。
Java の Generics は erasure で実現されているから、実質Objectに変換されてしまう。
ファイルがあったらそこへ書き込んで、もしファイルが無くても FileNotFoundExceptioを発生させないで、ファイルを作ってくれるクラスない?
まんまFileOutputStreamじゃないの
482 :
480 :2009/06/20(土) 17:27:14
そうだったのねorz ありがとう
メソッドをオーバーライドする際に、例外について以下の規定 があるようですが、これはどのように考えたら良いのでしょう? ・superクラスの例外と同じか、そのサブクラスの例外のみ投げることが できる。 ・superクラスで規定されない例外は投げることができない。 (サブクラスのメソッドで投げないのはOK) オーバーライドで、ぜんぜん別の実装をして、superクラスとは まったく別の例外が投げられることもあると思うのですが、 あえて禁止しているのは設計上、こうやれというのがあるんだと 思います。 その辺ってどう考えたら良いのでしょう?
> オーバーライドで、ぜんぜん別の実装をして、superクラスとは > まったく別の例外が投げられることもあると思うのですが、 そーゆー場合は Throwable#setCause なりを使って 例外連鎖させる。
>>484 なるほど。
よくわかりました。
ありがとうございます。
487 :
デフォルトの名無しさん :2009/06/20(土) 18:51:24
FileOutputStreamとObjectOutputStreamを使 って複数のオブジェクトをファイルに書き込 みたいのですが、一度書き込んでプログラム を終了し、もう一度起動して書き込みを行う と上書きされてしまうのですがどうすれば上 書きされずに書き込みができるのでしょうか? よろしくお願いします(-.-;)
>487 ファイル名を変える
ダウンキャストしてもスーパークラスには無かったメソッドは使えるけど、 サブクラスで追加された部分はメモリ上で適当な値が入っているわけ?
Servletはリクエストがあったら処理Aをして、結果をブラーザーに レスポンスするみたいですけど、処理Aの大部分は普通のJavaと 同じということでいいのでしょうか。
491 :
デフォルトの名無しさん :2009/06/20(土) 19:10:32
>>488 早速ありがとうございます。
つまり、同じファイルには書き込めないとい
うことでしょうか(?_?)
馬鹿で左遷…
書き込む前にストリームの位置を設定する
Java以前の問題だが・・・ 同じディレクトリに同じファイル名のファイルは2つつくれない だから同じのを指定すると上書きされる 上書きされないようにするには別のディレクトリにするか、ファイル名を変えるかどっちかしかない
>>493 追記したいって言ってんだろ
日本語初心者は無理して回答すんな
496 :
デフォルトの名無しさん :2009/06/20(土) 21:07:24
>>495 そうです。追記のことです。(分かりにくくてスミマセン)
プログラムの起動を二回に分けて書き込んだ後
もう一度起動して読み込む際、一度目の
readObject()の呼び出しは成功するのですが
二度目の呼び出しでjava.io.EOFException
が発生してしまいます。
Scannerのトークンのように呼び出すのが理想なのですが…
まずJDKとやらを入れるみたいですがバージョンは6のUpdate13というのが最新なのでしょうか?
質問なのですが。 たとえば、下記のようにメインファイルから別のクラスを 呼び出して処理を行うやつがありますが↓ 【メインファイル】 import bb.*; public class AA{ =メイン= } 【パッケージbbに入ってる他のクラス】 package bb; public class BB{ ==処理== } これら全てのクラスを一気にコンパイルしたい時は コマンドプロンプトでメインのファイル名だけ指定してコンパイルすれば いいんだよね?classファイルが作られてない時は一斉にコンパイルして くれるんだけど、修正後2回目にコンパイルしたらメインファイルしか コンパイルしてくれなくて。どこか間違えてるんでしょうか。
499 :
デフォルトの名無しさん :2009/06/20(土) 22:43:46
Javaは初心者です。 トムキャットをインストールしたんだけど開けませんとかでて開けないorz javaVM上じゃないとだめとか? ちなみにOSはビス太ホームpremium
管理者として実行でサーバーを起動してないからとかそんなん
>>498 それbbのパッケージのほうのソースも修正したの?
ディレクトリ構造とファイル、叩いたjavacコマンド晒してみ
>>496 ObjectOutputStreamで何を書き出してるの?
直列化したクラスインスタンスだったりする?
t−k、ObjectOutputStreamって追記設定できたっけ
>>501 したよ。AAもBBも修正かけた。といっても
int num = 0;をint num = 1;に変えたくらいの小さい修正だけど。
【ディレクトリ構造】
Javaフォルダ(作業場所)
┣AA.java
┗パッケージbb
┗BB.java
javacコマンドは1回目・2回目共に「javac AA.java」。
やはり2回目の仕方がおかしいのかな。それともディレクトリの
構造上、「javac Java\AA.java」にしなきゃ駄目かな。
昨日までは「javac AA.java」で一気にコンパイルできたんだけどなあ。
E:\java\test_src ├ AA.java 22:40 └[bb] └BB.java 22:40 E:\java\test_src>javac AA.java E:\java\test_src ├ AA.java 22:40 ├ AA.class 22:40 └[bb] ├BB.java 22:40 └BB.class 22:40 ここでAA.javaとBB.javaに両方変更を入れて、再度同じjavacを叩く E:\java\test_src ├ AA.java 23:40 ├ AA.class 22:40 └[bb] ├BB.java 23:40 └BB.class 22:40 E:\java\test_src>javac AA.java E:\java\test_src ├ AA.java 23:40 ├ AA.class 23:40 └[bb] ├BB.java 23:40 └BB.class 23:40 試してみた。時間はOSの時刻変えて試行したのでタイムスタンプを表記 ちゃんとコンパイルかかるけどな、つーかAAからBBを使ってるわけだし、BBに変更入ってればコンパイルかかるはずだけど、ちなみにCLASSPATHは .; のカレント設定のみ
classファイルに変更が起こるようなソースの変更をしてないんじゃないの?
>>504 こんなにがんばってくれてありがとう。
ちなみに自分は今作成してるJSPファイルを動かすために
トムキャットをインストールしてます。そのため、クラスパスは
>>504 さんのカレント設定の後ろにトムキャットのためのパスを
つけています。ちなみこのトムキャットの部分を一度外してみても
解決しなかったです。何が違うのだろうなあ。
トムキャット
訂正:506の最後の「トムキャット」は無視してください。
>>505 >classファイルに変更が起こるようなソースの変更
これの基準が自分でもよく分からないんです。
503をもうちっと詳しく書くと、「あるメソッドを呼び出して、
そこで得られた値(戻り値)をある変数にセットする」って感じです。
たとえば
//5と2をbbファイルのPlusCalcメソッドに渡して加算し、戻り値をセット
int answar = 0;
answer = b.PlusCalc(5,2);
これを
//5と2をbbファイルのMinusCalcメソッドに渡して減算し、戻り値をセット
answer = b.MinusCalc(5,2);
これってclassファイルには影響無いものなんでしょうか。
足し算が引き算になったくらいだし。
>>496 ,502
自己レスも含めて
ObjectOutputStreamは複数回writeObject()できるけど、追記は無理そう
なので、書き出したものを一旦全部readObject()で取り込んでおいて、
取り込んだものを再度全部書き出してから、追記したいモノをwriteObject()すればいいかも
EOFExceptionは再現できた、
writeObject()を100回やったファイルに対して、
101回のreadObject()でなるみたい
JavaとJDKとSDKとJREの区別がつかないのですが 良サイトはないでしょうか
javaは言語&商標&sun的には環境でそれ以外は略さず読んで字の如く
>>511 > * J2SE 1.2.2_004 までは JDK と呼んでいた。
> * J2SE 1.4 までは Java 2 SDK と呼んでいた。
> * J2SE 5.0 では 再び JDK と呼んでいる。
へぇ〜へぇ〜
また余計な知識を身につけてしまった。
514 :
デフォルトの名無しさん :2009/06/21(日) 08:54:01
>>495 >>502 >>509 ありがとうございます。
いろいろ試したのですがなかなかうまくいかないです。ググってもみましたが・・
何とか自分で解決してみます。(ほんとスミマセン・・)
ちなみにコードはこんな感じです↓
515 :
デフォルトの名無しさん :2009/06/21(日) 09:01:41
// 中略 try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("「新規作成」または「表示」を入力してください"); String s = br.readLine(); Car c; // 書き込み(機動を2回(または複数)に分けておこなう if(s.equals("新規作成")){ System.out.println("名前を入力してください"); c = new Car(br.readLine());//オブジェクトに名前を与える FileOutputStream fs1 = new FileOutputStream ("CARS");//CARSファイルに保存 ObjectOutputStream os1 = new ObjectOutputStream(fs1); os1.writeObject(c); os1.flush(); os1.close(); System.out.println("ファイルに書き込みました"); } // 読み込み(保存したオブジェクトを取り出す) if(s.equals("表示")){ FileInputStream fis1 = new FileInputStream("CARS"); ObjectInputStream ois1 = new ObjectInputStream(fis1); c = (Car)ois1.readObject();//一度目の読み込み System.out.println(c.name);//名前を出力 c = (Car)ois1.readObject();//二度目のよみこみ(読み込めない)
自分で解決してみますっつってんだったら コードなんて貼らないでいいよ
517 :
デフォルトの名無しさん :2009/06/21(日) 09:09:19
//続き System.out.println(c.name); ois1.close(); } }catch(Exception e){} } } class Car implements Serializable{//このクラスを直列化 String name; Car(String s){name = s;} } 軽く荒らしたかも知れない…orz 次回から自重します
すみません。お願いします。 プログラミングの経験は何年かあって今はjavaをやっています。 動くものということであれば少し作れるのですが、 例外処理をちゃんと使いこなしていないように思います。 文法に関してはある程度理解しています。 例外の使いこなしがトピックに入っている良書、またはサイトなどはないでしょうか。 文法的な説明だけでなく、 「こういうときこうすればこういう理由でとても便利だろ」みたいなやつがいいです。 本屋やAmazonで探したのですが、探し方が悪いのかなかなか見つかりません。 書籍の場合、できれば新しめのものがいいのですが、 ないのであれば古いものでも構いません。 何かいいものをご紹介ください。
>>517 >>514 にしろそうだけど教えてもらう立場の人間が「・・・」を使用するのは
納得していない様子を相手に与えるので非常に失礼
520 :
デフォルトの名無しさん :2009/06/21(日) 10:27:29
>>519 そう思うなら君みたいな生意気君は答えなくていいよ
どうせリアルだと友達いないんでしょw
>>520 落ち着け。
なにがそんなに悔しかったんだ。
>>518 今すぐ Effective Java を読むことを、おすすめする。
例外のベストプラクティスについても詳しいし、それ以外にも絶対に役に立つはず。
昔のJavaはきちんとChecked Exceptionを使うことが推奨されていたが、
最近のフレームワークはRuntimeExceptionを多用するようになってきている。
その理由もこの本を読めばわかると思う。
>>521 >>523 >>524 ありがとうございます。
サイトで紹介してもらったものは今読み始めました。
Effective Javaも買ってみようと思います。
Amazonで作者の前書きを読みましたが、
ほかの言語でも参考になりそうだなあと思いました。
ありがとうございました!
文字列の連結についての質問です。 double pi1 = 3.14; int pi2 = 3 String piString1 = "" + pi1; //piString1の中身は"3.14"……@ String piString2 = "" + pi2; //piString2の中身は"3"……A ということですが、@A共に右辺の意味がわかりません。 なぜ左にだけ""なのでしょう? String piString1 = "" + pi1 + ""; ではいけないのですか? また String piString1 = pi1; ではいけないのですか?
> String piString1 = "" + pi1 + ""; ではいけないのですか? それでもいいよ。冗長になるけど。 > また String piString1 = pi1; ではいけないのですか? double から文字列型に型変換できないからダメ。
文字列 + 何か の場合「何か」を文字列にしてから連結してくれることを利用している。
ダブルクォーテーションで囲まれた範囲が文字列になるのに、 "" + pi1 では、数字pi1がダブルクォーテーションで囲まれていないのでは?
"" は、空文字列(長さがゼロの文字列)です。 "" + pi1 は、 空文字列にpi1を文字列に変換してから連結します。
>>529 自分で変なこと言ってることに気づいた。
空文字 + 数字pi1 → 空文字 + 文字列pi1 → 文字列pi1 と順に変換されていって、
最後にそれを文字列piString1に代入しているということか。
>>515 writeObject()の回数以上のreadObject()はできない、EOFExceptionが出る
一回readObject()で読みこんだら、それを保持して使いまわせ
ここでいいのかわからないけども質問させてください。
プログラミングをするにあたってMVCモデルと言うのが
あるそうなのですが(
ttp://e-words.jp/w/MVC.html参照 )、
よく使われるsetメソッドやgetメソッドのような
値を表示したりセットしたりするものはM・V・Cのどれに
あたるんでしょう。やっぱり入出力だからM?
MVCというのはクラス間の構成(役割ん分担)にかかわるもので、 特定のメソッドをそう呼ぶというものではない。 settter/getterというのは、クラスの中がどうなっているか を外部に知らせる必要はないという考えで、カプセル化(encapsulation) という。MもVもCもsetter/getterは持ちうる。
>>533 setメソッドやgetメソッドは、オブジェクトの入出力の命名規約。
MVCはデータ管理・情報表示・入力という単位でシステムの構造を整理する
という方法論。
ネジ穴規格は車体・エンジン・足回りのどれにあたりますかと聞いてるのと
同じだから、当然に対応付けは無意味。
最近のWebシステムって3層に分けることが多いけど、 MVCとはなんかズレてる気がするんだよね。 1.Presentation 2.Business Logic 3.Persistence(Data Access) ってわけたとき、MVCのどれがどれに対応するんでしょ。
なんでもかんでもOOPに当てはめて考えようとする病気に似てる
>>534 &
>>535 そうだったのか。クラス単位で見て分類する
ものなんだな。じゃあある意味、setやgetは
どこのクラスで使っても良いってことか。
回答ありがとう。
>>536 三層は分散システムを意識した分類。MVCとは立脚点が違うと思う。
MVCは単層アプリでもそう作るから。
例えばよく引き合いに出されるExcelはMVCの分離の成果として同じ
ワークブックを複数画面で同時表示・同時編集できる。
MとVCが一対一でなくても良いということを説明する良い見本。
プレゼンテーションがVCで、永続化は確実にM。
ビジネスロジックは意見が分かれてるけど、まあMじゃない?
ExcelはDocument-Viewアーキテクチャでは?
Document-ViewつまりMFCは、MVCモデルを元に設計されたフレームワーク。
上の人の質問で思い出した。 set○○て名前のメソッドが複数あったとして、あるsetメソッドで 同じクラスにある他のsetメソッドを使うのはOK? setCount(int x){ this.x = x; setManbo(this.x);//x使って別の処理 } みたいに。なんか前やったらイクナイと言われたんだが。
すいません。ちょっと疑問なので質問させてください。 例えばあるクラスAの配列を別クラスBのメソッドに渡して処理し、 それをまたクラスAのメソッドに渡して格納する、という処理を してるんですが(下のように)、 a.setBound(b.Magic(a.array)); これをフローチャートで表したい時って、 【配列を渡して処理】→【処理済の配列をセット】とかいう風に書いて 良いのでしょうか?それとも【配列を渡して処理し、処理済のものをセット】と まとめたほうがいいのでしょうか?
>>543 チャートはどうするかを書くのではなく、何をするかを書かないとなぁ。
具体的には「配列を渡して処理」じゃなくて、何をするのかが必要。
そこらへんの基本を押さえられない程度じゃまだまだヒヨっこ。
まずは、そこからきっちり意識しよう。
その上で、パラメータとして配列を使うとか、副作用があるないとか、そういった
ものは実装の詳細として「追記」していく。あくまでオマケ。
>>545 544 は this.y = this.x で良いんじゃね?と言っていると思う。
setManbo() で何か処理しているなら、setManbo() した方が良いと思う。
例えばコレクションに追加するとかしていたら。(setXXじゃしないか、そんなこと)
>>546 543です。ありがとうございます。
処理の内容はついつい省略してしまいました。
実際のフローチャートではちゃんと書きます。
ただ、1文で表されているものをフローチャートで2つの項目に分けて
書いてしまっても良いものか迷ったので相談しました。
>>452 ,466
遅れました申し訳ありません
レスを参考にいろいろと試していってみます
>>547 処理は一文で書けたとしても、そこでは「何か」を複数しているわけだから、
書くべきと判断した「何か」の数ぶんだけ書けばいいよ。
書くべきか書かないで省略すべきか、は難しすぎて。
経験で、もしくは趣味でとしか言えない。
コードと1対1対応しているなら最初からコードで書けばいい。 その前の段階である以上、コードになったらどうなるか、よりも 抽象度の高い書き方になるはず。
>>547 フローチャートにも色々あるね。
プログラマが見る、設計者が見る、顧客が見る。
その切り口によって色々と変わってくるね。個人の趣味でプログラムを
作って、後でメンテしやすいようにとか、備忘録的であるとか、
そこいらは自由だね。ビジネスでのフローチャートの場合、
殆どプログラムと変わらないような物を要求される場合もあるね。
色々。
552 :
デフォルトの名無しさん :2009/06/22(月) 01:07:20
え、ジャバスクリプトって違うの?
別物
554 :
デフォルトの名無しさん :2009/06/22(月) 02:16:51
ジャバスクリプトとジャバスクリプトは同じものだよ
>>432 最初からいきなりeclipse使うと、逆に難しく感じるよ。
俺はそうだった。
初めてんとき、WTPだのTomcatプラグインだの使ってやろうとしたら、とりあえずなんとかHelloの表示まで漕ぎ着けたものの”理解”と呼べるようなモンじゃぁなく、挫折しかけた。
とりあえず最低限、
Javaをコマンドラインでコンパイル&実行できるレベルなら、最初はメモ帳1つで作ってみる方が簡単だったりする。
1回やってみれば、ふーんなるほどねーってWTPだのも便利に使えるようになるよ。
お試しあれ。
NetBeansなら苦労しないのに。
web.xmlがサンプルでは一つずつ別々に作成しているけど eclipseでは一つのweb.xmlに入れ込んでいるけど、どちらがいいのでしょうか。
文字列の中に文字Aが何個含まれているかを割と高速にはじき出すにはどうすればいいですか?
559 :
デフォルトの名無しさん :2009/06/22(月) 16:31:46
くだらんアフィ貼ってんじゃねえよカス
サウンドを(ファイル形式ではなく)ストリーミング的に再生したいのですが、どのAPIを使えばいいですか?
562 :
デフォルトの名無しさん :2009/06/22(月) 18:50:57
[sage]
>>532 わかりました。
ご回答ありがとうございます。
初心者が遊びでJavaプログラミングするのにはどんなのを作るのがいいですか? 簡単で面白い物がいいんですけど。 アプレットなんかがいいんですかね?
アプレットでライフゲームでも作ってれば
565 :
デフォルトの名無しさん :2009/06/23(火) 00:25:18
委譲のなどのときの書き方。 1.class Nanasi { Kouhai i = new Kouhai(); public void suteru() { i.suteru(); } } と 2.class Nanasi { public void suteru() { Kouhai i = new Kouhai(); i.suteru(); } } の書き方ではどういう違いがあるの? 1.フィールドで委譲先のオブジェクトを管理している (でも管理という意味だとどっちの書き方でも同じな気がするけど。) 2.特別な意味がない限り普通にあるクラスのメソッドを呼び出すときは こういう書き方が多いと思ってる。 可視性などの問題を考える必要があるのでしょうか? それとも考える意味もないような違い・・・?
Kouhaiインスタンス(の状態)をどれだけの期間保持したいかによる。
567 :
デフォルトの名無しさん :2009/06/23(火) 00:58:14
1.はこーゆーこともできる。 class Nanasi { Kouhai i = new Kouhai(); public void suteru() { i.suteru(); } public void setName(String name) { i.setName(name); } public void sayName() { System.out.println(i.getName()); } } 一般的には委譲っていうと1かなー。 }
568 :
デフォルトの名無しさん :2009/06/23(火) 01:03:31
>>566 ありがとうございます。
オブジェクトのライフサイクルのことですか。
委譲先が消滅すると同時に委譲元のオブジェクトも消滅する。
とかいう話ですかね。
といっても、どういう場合にどうなるか説明できないですが。。
569 :
デフォルトの名無しさん :2009/06/23(火) 01:07:24
>>567 ありがとうございます〜。
ほ〜クラス内でオブジェクトを共有できるということでしょうか。
わたしの中で566さんの保存期間という話とちょっと結びつけられていないですが。
お二人が言っているポイントは別と考えた方がいいんですかね?
クラス変数かローカル変数かって話では?
571 :
デフォルトの名無しさん :2009/06/23(火) 01:18:26
そうなんですけど、それぞれの違いを理解しようとしているところです。
572 :
デフォルトの名無しさん :2009/06/23(火) 01:23:33
可視性てなんですか?
573 :
デフォルトの名無しさん :2009/06/23(火) 01:30:58
ん〜。。なんとなくで言ってみただけなので、今の話には関係ないかもしれませんが、 クラス変数とローカル変数では、継承などしたときに アクセスできるできないがかわってくると思っているので、 そんな話も関係あったりするのかなと思って言ってみました。
>>558 あほみたいに大量のテキスト量じゃない限り力任せが一番万能、かつどういう条件でもある程度の早さを誇る。
ふつうはそれ以外の極限られた条件下のみ、その条件に最適化して探す。
そうじゃないと最適化する準備時間に釣り合わない。
というかjava関係ない。
>>561 JMFでだめなら自前
575 :
デフォルトの名無しさん :2009/06/23(火) 07:58:48
文字コードについての質問です。 ユーザから入力を受けとって処理する場合に、 入力された文字の文字コードは何によって決まるのでしょうか。 例えばWebシステムだと ユーザOSの文字コード、 ブラウザのエンコード設定、 入力フォームのページの文字コード、 同ページのエンコード設定(xml宣言とかmetaとか) など色々候補があってよくわかりません。 あとJava内部ではUnicodeを使っているとのことですが、どこで元々の文字コードとの変換を行っているのでしょうか。 ご回答、参考サイト、文献情報などよろしくお願いします。 # オライリーのCJKなんとかっていう"鈍器"は気になってます。
576 :
デフォルトの名無しさん :2009/06/23(火) 08:33:53
マヌケな教えて君の典型的だよね
んだこらぁ わかんねぇなら黙ってろよ
ワロタw
まあ実際文字コードはやっかいだよなぁ。 フグ本に目をつけたのはいいんだが、あの内容って今でも使えるのか?
580 :
デフォルトの名無しさん :2009/06/23(火) 12:58:52
マヌケな奴ってまさにオブジェクト思考的だよね
回答まだかよカスども
例えばWebシステムだととあるからWebシステムで考えると おまえが設定した、フォームなりのHTTPヘッダとMETAタグのContentTypeできまる。 少しググればいくらでも出てくる情報だと思うんだが。
サーブレットはweb.xmlという定義のようなものがあって、 そこにmappingとかfilterとか記述するようになっているんですけど これは必須なんでしょうか。そうして実行するときには必ず tomcatのようなサーバーが必須なんでしょうか。サーバなしでは 動かないんでしょうか。
servelet jspこれらを動かすために必要なのがtomcatやglassfishのようなそれらに対応したサーバーだよね 最低限これらは必要でそこから更に肉付けされて行くようなイメージだね
tomcutが動きません 助けてください
587 :
デフォルトの名無しさん :2009/06/23(火) 14:24:37
まずはCATALINA_HOME設定するところからだな
tomcut とは随分ぶっそうだな
eclipseでworkspaceの中のプロジェクトの中のWebContentの中の、 WEB-INFの中にweb.xmlがあるんですけど、これを直接開いて、 <security-constraint>などを追加して、eclipse内部のtomcatを起動したら 反映されていませんでした。ここは直接開いて修正したら反映されないのか と思い、既存のサーブレット名を変えてみて同じように起動してみると 反映されていました。<security-constraint>などだけが無視されて いるようです。eclipseでweb.xmlを開いて設計でもソースでも見ても、 存在してないです。無視されてます。どうしたらいいのでしょうか。
>>584 とりあえず質問しました、じゃなくて
自分でググってから質問した?
DTD読めばその要素が必要かどうかは判断できるから
それをみて判断しなされ。
>反映されていないここは直接開いて修正したら反映されないのか >と思い、既存のサーブレット名を変えてみて同じように起動してみると >反映されていました。 意味がよくわからんのだが?
やっぱり反映されてない。エクスプローラから直接web.xmlを修正したら eclipseからweb.xmlをエディタで開いても修正が反映されてないですね。
java.io について質問です。 BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename))); とあったときに、reader (= BufferedReader) を close すると、InputStreamReader と FileInputStream も close されるとかんがえていいでしょうか。
>>594 close時に例外発生しない、っていう条件付きならOK。
Javaだとcloseしなくても勝手にcloseしてくれるだろjk
>>592 ,593
>591の答えにはなっていないわけだが。
>593を見る限りEclipseのWTP上のプロジェクトのものと
Tomcatにデプロイしたファイルを見比べているようだが、
やってることがおかしい。
まず、Eclipse上のTomcatと言っているのはなに?
WTPなのか、Sysdeoプラグインなのか、どっち?それともまた別の物?
Eclipseの外で編集したんなら、refreshしてpublishするべし。
>>597 >まず、Eclipse上のTomcatと言っているのはなに?
eclipseの中には公開用のTomcatと内部テスト用のTomcatがあるらしいです。
eclipseの上部の豹ボタンをクリックすると公開用が、下のほうにある、
サーバーというタグから起動すると内部テスト用のTomcatが動くようです。
ですから、どきらか一方で起動した後に、もう一方で起動しようとすると
ポートが空いていないと言われます。
eclipseは
http://mergedoc.sourceforge.jp/から3.4をダウンロード しました。プラグインとか何も使ってなくて、そのまんまです。
599ですけど、eclipseのプロジェクトエクスプローラからweb.xmlが 見えるので、ダブルクリックして、xmlエディターで修正したら ちゃんと反映されるようなので、今後は、そうしようと思います。
eclipseでサーブレットを作って、web.xmlでBASIC認証をするように記述して 一回目は、認証画面が出て、入力すると認証を通過してサーブレットの ブラウザ画面が出ました。しかし、ブラウザ画面を一旦閉じて、再度実行 すると、すでに認証を通っているみたいで、認証画面が出ません。 Tomcatサーバを終了させて、再度起動させても、やっぱり認証画面が 出ません。どこかに認証が一度通ったことを覚えているんだと思うのですけど それを断ち切って、毎回認証画面を出すようにするには、どうしたらいいのでしょうか。
602 :
デフォルトの名無しさん :2009/06/23(火) 20:10:10
すなおにそこだけでもNetBeans使えば 悩む分時間省けるよ
603 :
デフォルトの名無しさん :2009/06/23(火) 20:17:59
マシンの物理メモリが512MBしかないのですが、それ以上に巨大なデータをbyte[]に格納して操作したいです。 物理メモリ以上の領域を扱うことができる仮想メモリのように、仮想ヒープみたいな方法はないんでしょうか? ちなみに、マシンのスペックを変更(買い替えろ!)することや、アルゴリズムの変更(ストリーム使え!)とかはできません…
そもそも512でプログラム夢見ること自体どうかしてる
面倒くさいので「無い」と答えます
>>602 、
>>603 .ありがとうございました。
いま認証のところ見てますけど、心が折れそうになりますね。
つうか2GBのデータがあったって全読みする意味が分からないし
たしかそんなのあったよなーと見てみた。 MappedByteBuffer・・・2GB使えるのかなコレ? positionはint。一応2GBまでは指定できそうだけど。
>byte[]に格納して操作したい
611 :
デフォルトの名無しさん :2009/06/23(火) 21:19:11
Object.cloneメソッド使ってデータクラス(データbean?) の複製しても、プリミティブ型のフィールドしかディープコピーされない みたいなこと書かれてたんですけど、 string型ってどうなるんでしょうか? @複製先データクラス変数 = 複製元データクラス変数.clone(); A複製元データクラスのStringフィールドの内容を変更 B複製元、複製先のStringフィールドの内容表示 みたいな感じで試したら、 ちゃんと別々の内容になってはいたっぽいんですけど、 なんか使うの不安なので教えてもらえないでしょうか。
JavaのStringはimmutableだぞ。 内容の変更が(setterを介すにせよ)代入で行われたのなら、 その時点で元と先は別々のStringインスタンスを指すことになる。 浅いコピーで問題になるのは、mutableなもの。 たておば配列フィールドを作って要素を書き換えてみれ。
抽象クラスを継承したクラスは、必ず具象クラスになりますか? 「なわけねーだろ」みたいな例があったら教えてください。おながいします。
614 :
sage :2009/06/23(火) 21:40:39
immutableとか初めて聞きました。 その辺ちょっと調べてみるようにします。 612さんありがとうございました。
immutableってのは、内容を書き換えられるようには出来てない、てこと。
(reflection使えば別だが)
よって
>>611 にある「Stringの内容を変更」てのは(通常は)出来ないので、
あなたは変更したつもりかもしれないが、単に別のオブジェクトになってる
だけだろう、と言いたかった。
>>613 abstract class A {}
abstract class B extends A {}
抽象クラスAを継承したBも抽象クラス
軒並みリフレクションを使ってるプログラムに出会ったのだが 誰か意図を教えてくれ
覚え立ての使いたい病?
認証でデータベースからIDとパスワードを持ってくるときには、 char型とvarchar型、どちらがいいのでしょうか。 javaからも今後使いたいと思いますので。
暗号化してvarchar
>>616 そうか。
うーむ、確かに。
abstract class Doubutsu {}
final class Human extends Doubutsu {}
みたいなのばかりかと思っていたけど、そうじゃないことがわかりました。
もっと勉強します。
varcharが多いね
なぁなぁ、お前らってどのくらいStaticメソッドを使っているの? なんか、Staticにするの怖いんだけど
ネイティブ使う奴はstaticにするな
626 :
623 :2009/06/23(火) 22:57:01
最近、元職業プログラマーの書いたコードを見せてもらったんだけど 思ったよりstaticを使っていると感じたので オイラは独学だからみんなどうしているのかな〜と、思ったわけ
ネガティブの誤字だろ
はあ?w
>>602 NetBeansがなきゃ作れない子になる懸念
消さなきゃ有るから良いんじゃね
>>626 static だらけになるのなら、考え方に何か問題がある可能性もあるけど、
少なくなっちゃう分には、無理に増やす必要もないんじゃない?
staticにしそうなものってこのくらいじゃない? ー 定数 ー スレッドの状態に依存しないUtil ー 環境全体で一つしか存在しないもの(singleton)
>>615 それでStringのコンストプール又はintern()を変更できるの?
635 :
デフォルトの名無しさん :2009/06/24(水) 08:38:41
非常にエスパー系な質問で申し訳ないんだが Arraylist listをclearしたらどうしてもNullPointerExceptionが起きる 何故だろう?どうすればいいんだろう?
clearを呼び出した時点でNullPointerExceptionが起きてるわけではないだろう? まずはどこで起きているかスタックトレースを見てみるんだ。
あ、いや。起きうるか。 listをclearしようとする前にlist==nullじゃないか? listにArrayListのインスタンスをちゃんと代入してる? ArrayList list; list.clear(); みたいなことしていない?
ArrayList list;をローカル変数として宣言しているなら
>>638 は初期化されていないってエラーになるけど、
フィールドとして宣言しているなら通るので、そうなってたりしない?
JavaAppletで画面上をクリックするとArrayListに要素を加えたり ボタンをクリックすると要素を全削除するようにしたい しかし、アプレットはmainがなくてメソッドに引数としてArrayListを渡す方法がよく分からない そこでグローバル変数としてArrayList list〜としたのだが 今やってみたところaddでもclearでも init内でも他のメソッド内でもぬるぽってしまう という状況です
try{ file = うんたら; うんたら; うんたら; }catch(省略){ file.Close(); } みたいなトラブルか
642 :
636 :2009/06/24(水) 09:28:14
申し訳ありません
レスをつける前にスレをリロードしておくべきでした
本当に恥ずかしい話なのですが、
>>638 の通りでした
こんな話にアドバイスを下さって本当にありがとうございました
645 :
デフォルトの名無しさん :2009/06/24(水) 12:28:21
あとスレッドが主体になるプログラムとかはstatic使ったほうがらくだね
>>634 試してみた。
$ java -version
java version "1.5.0_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-304)
Java HotSpot(TM) Client VM (build 1.5.0_19-137, mixed mode, sharing)
//import java.lang.reflect.Field;
char[] data = { 'a', 'b', 'c' };
String s = new String(data); // (1)
//String s = new String(data).intern(); // (2)
//String s = "abc"; (3)
Field valueField = String.class.getDeclaredField("value");
valueField.setAccessible(true);
char[] value = (char[])valueField.get(s);
value[0] = 'X';
System.out.println(s);
(1)は変更可能で Xbc と出力。
(2)と(3)はぬるぽになった。
647 :
デフォルトの名無しさん :2009/06/24(水) 15:47:35
ぬるぽ例外じゃなくて、アクセス不正例外じゃないの? intern()について深く知ってる人いないみたいだし。
>>647 そのためのsetAccessible(true)
649 :
デフォルトの名無しさん :2009/06/24(水) 17:01:45
>>648 でもそれってクラスローダについて深く知らないと結局意味ないじゃん。
クラスローダの仕組みを例題も交えて分かりやすく説明しているところがないんだよね・・・・
あれこれ設定するのも面倒だし結局全部おkでいいかなって思う。
650 :
626 :2009/06/24(水) 19:20:21
みんな、ありがとう オイラは就職活動で疲れたので、今日はもう寝る また、聞きたいことがあったら質問するよ
おう 大概の事ならなんでも答えられるから聞いてくれ
それならクラスローダについて教えてもらえませんか?
おう任せとけ さあ知ってる奴らどんどん書き込んでやってくれ
他力本願すぎるw
threadってなんだべ class ThreadsRun extends Thread implements Runnable { @Override void run() {} } public class main() { ThreadsRun t = new Thread(); t.run(); } とかになるの?
new ThreadsRun(); じゃねえと駄目だろ
それとThread自体がRunableを実装してるのでThreadsRunにimplements要らない
サブクラスをスーパークラスでnewすんな
659 :
655 :2009/06/24(水) 22:32:02
フルボッコワロタw
>>656 書き込んだあとで気がついたぜ。
すばらしき理解不足。
>>657 なるほど。
---javadoc
java.lang.Object
上位を拡張 java.lang.Thread
すべての実装されたインタフェース:
Runnable
---
確かに書いてあった。
>>658 もうちっと勉強してから理解しますw
660 :
デフォルトの名無しさん :2009/06/24(水) 22:34:18
うざい死ね
何様のつもりなんだろうな
人様に決まってるだろ
hibernateとかのフレームワークってどこに効けばいいですかね?
664 :
デフォルトの名無しさん :2009/06/24(水) 23:33:04
>>663 2chならここしかないみたい。
とりあえず、聞いてみたら?
では聞いてみます。 hibernate関連でコネクションプーリングを使ってるんですけど(c3p0使ってます), statement cacheを有効にすると、〜〜DEAD LOCK!という警告メッセージが出るので、 statement cacheは0を指定して無効にしてるんですが、 一般的なprepared statementキャッシュの考えとして、 コネクションを再利用し、使ったらプールに戻すという考え方と、 コネクションはプールから取得するが、使ったら破棄してプール内で生成しておくという考え方の2つがあると思ってます。 今回は前者を無効にするのですが、後者のメリットがあまりないように感じられるんです。 プールせずに結局生成するなら直接取っても同じじゃないかと。 一般的な最良のパフォーマンスが得られるコネクションプーリングはどのようにやってるんでしょうか。
スレ違い
668 :
デフォルトの名無しさん :2009/06/25(木) 00:27:08
class C1 { } class Test { public static void main(String[] argv) { C1 c = new C1(); System.out.println(c.clone().toString()); } } % javac Test.java Test.java:23: clone() は java.lang.Object で protected アクセスされます。 System.out.println(c.clone().toString()); ^ エラー 1 個 Test は Object のサブクラスだから、protected な clone() を呼べると思った のですが、怒られました。ヒントをください。
ヒント:class名がダサイ
mapってgetすることはできても、一度登録した値を変更はできないの?
>>668 Test は Object のサブクラスだから、protected な clone() は呼べない
ヒントは言語仕様
672 :
670 :2009/06/25(木) 00:44:36
自己解決。既に登録したKeyをputしたら値が置き換わるのね
673 :
デフォルトの名無しさん :2009/06/25(木) 00:54:23
>>> 671
ありがとうございます。
http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html ...
The protected modifier specifies that the member can only be accessed within its own package (as with package-private) and, in addition, by a subclass of its class in another package.
...
と書いてあって、Object のサブクラス Test から Object#clone() を呼べそう
に思えるのですが、うーむ、何を勘違いしているんだろう。
え、なに?おれらに英語の翻訳しろっつってんの?
>>673 public class C1 {
public void doHoge() {
// これはOK(例外は起きるけどな)
C1 copy = this.clone();
}
}
public class Foo {
public void doFoo() {
// これはコンパイルエラー
C1 c = new C1().clone();
}
}
これでわかるだろ?
あーわかるわかる
締め切りまでに一応の動作ができる品は完成したが いかんせん時間が無くてパーフェクトとは言い難い感じだ やっぱり職業プログラマはこういうとこ割り切っていってるのかな 「ソースも動作も非常に満足いく結果だが、時間がかかる」よりも 「どこか引っかかるが、要求された動作は満たすし見たところバグも取り除いてある。完成早い」 というように。
本屋行ってプログラマ読み物みたいな本読めば嫌というほど書いてあるぜ ゴミでも完成していると言わざるを得ないが正解
そして
>>677 のFUKOのゲージが溜まるんですね。わかります。
開発PGだとこんな感じかな。 納期◎ 仕様○ バグ収束△ コード品質△ コメント× プロジェクトのコーディング規約には沿ってるけど、その枠内で遊んでるのが多い印象。
サーブレットでクッキーを書き出したらDocuments and Settingsに クッキーが書き込まれるのですけど、セッションを開始したときに、 JSSESIONIDという名前でクッキーが作られると説明があるのですけど、 探してもJSESSIONIDという名前のクッキーは作成されていません。 でも、確かにセッションは開始されていて有効に動作します。 いったい、どこに保存されているのでしょうか。
>>681 JSESSIONIDって言うnameのCokkieなんだよ
JSESSIONID=hoge とかGETなら分かりやすく見えるしPOSTならHTTPヘッダ見てみろ
この場合Cokkie c = util.get("hoge");などとなる
>JSESSIONIDって言うnameのCokkieなんだよ Windowsのフォルダのどこにもないんですよね。 検索したけどないです。 メモリー上とかにあるんでしょうか。 たしかに、どこかにあるんですけど、ありかを見たいんです。
eclipseを使っているのですけど、今では、Javaアプリケーションで、 プロジェクト1つ。それとservletでプロジェクト1つ。合わせて2つあります。 各プロジェクトの中には、.javaと.classがあって、さらにservletのほうは WebContentフォルダがあって、その中にWEB-INFがあって、その中に、 web.xmlがあります。サンプルプログラムが増えてきたので、 例えばいま50個のservletがあるとして、10個づつ5つの処理単位に 分けられるとして、分けたいとしたときに、 プロジェクトの内部で、そのように分けることが出来るのでしょうか。 新たにプロジェクトを作れば全部一式揃うので出来ると思うのですけど。 普通、どのように管理しているものなのでしょうか。
>>683 HttpServletRequest.getParameter(JSESSIONID);
で取るんだよ?
つまりローカルにはない
HttpServletRequest.getParameter(JSESSIONID); # こいつがクッキーの名前
>>684 今イチ意味がわからんw
packageレベルでないなら、リファクタリングの移動でいいんでないの?
意味違ってたらごめん。
687 :
デフォルトの名無しさん :2009/06/25(木) 18:02:03
eclipse ってプロジェクトグループ作れないの?
ArrayListに入ってるStrin[]の配列をint[][]にコピーする 効率良い方法を教えてください Integer[][]にならtoArrayで一発コピー出来たんだけれど int[][]には使えなかったです
>>688 java.lang.System#arraycopy
>>682 >>685 >>686 >>687 ありがとうございました。
質問していることはJavaというより、開発ツールやサーバーのことに
なっていたと思います。よく分からないのですけど、今はそこらは
無視して、中身の勉強を進めようと思います。ありがとうございました。
>>689 java.lang.ArrayStoreExceptionでコピーできませんでした
やっぱへんな開発ツール使うと時間のロスが大きいよね
>>691 ソースは?
てかString[]からint[][]にしたいんであればString[]がなんなのか知りたいし
内容によっちゃWrapperMethodがいるでしょ
内容の問題じゃないだろ 勝手に型変換してくれないのに#arraycopyでコピーできるはずもない
JSPに入りました。JSPは呼ばれたらサーブレットの変換して実行するらしい のですが、そのサーブレットがtomcat5.5\workの中に出来ているらしい のですが、なぜが私のにはworkの中にありません。どこにも見当たらないです。 でも実行は出来るので、どこかに出来ていると思うのですけど、 心当たりはないでしょうか。
>>693 ArrayList型の変数alにString[]のデータが入ってます
Stringデータは、0-1000までの整数(の文字列)です
for (int i = 0; i < al.size();i++)
{
System.arraycopy(al[i], 0, numbersData[i], 0, al[i].size());
}
えと、上の補足 numbersDataはint[][]型の配列です
>>668 Test は Object のサブクラスだからという理由だけでは、protected な clone() は呼べない
ヒントは言語仕様
699 :
デフォルトの名無しさん :2009/06/25(木) 20:38:57
toArrayじゃダメなんだっけ
>>668 javaはoverrideするときにアクセスのスコープを広げる方向に変更することが出来る。
Object.cloneは浅いコピーのみを行うので、
実際に必要なコピー処理はoverrdeして記述する必要がある。
701 :
664 :2009/06/25(木) 21:13:40
System.arraycopyもShallowCopyだったっけ
ballowcopy
実験すればええねん
ネットからデータを落としてくるクラスを書いているのですが、 サーバーからの応答メッセージを見ると、Content-Encoding: gzipと書いてあります GZIPInputStreamを使わなくても、特に支障はないと感じたのですが GZIPInputStreamを使った方がいいと思いますか?
706 :
デフォルトの名無しさん :2009/06/25(木) 22:20:04
deepCopyしてくれるメソッドなんてない。 自前で実装する以外ない。
707 :
デフォルトの名無しさん :2009/06/25(木) 22:35:08
で、deepcopyとshallowcpoyはどうちがうの?
>>701 レスとんくすです。
hibernateのオフィシャルにはc3p0が標準みたいなことが書いてあるんですけど、
世間一般では違うのかなぁ。
サーバがWASだったりJBOSSだったりTomcatだったりと色々あるのでWASのプーリングは使えないです。
とりあえずDBCPを使う方向で検討してみます。
Javaではデストラクタが無いみたいですが 自分で開放したいときには代わりに何を使えば?
finalize
711 :
デフォルトの名無しさん :2009/06/25(木) 23:11:12
jTextFieldでテキストのコピペをしたいんだけどできない どうやったら、コピペできるようになるのさ? 教えて、エロい人!!
713 :
デフォルトの名無しさん :2009/06/26(金) 00:00:04
>>712 ジャヴァスクリプトはスレ違いですよ?!
基礎中の基礎かも知れないけど if〜elseで小数を使って2つの結果に判別したいのですがどうすればいいの?
勉強すればいい
716 :
デフォルトの名無しさん :2009/06/26(金) 00:28:20
>>714 これでいいのか?
double a = 0.1;
if (a >= 0.5) {
System.out.println("0.5以上");
} else {
System.out.println("0.5未満");
}
そこはBig、、、
718 :
714 :2009/06/26(金) 00:44:05
import java.io.*; class aaa { public static void main(String args[ ]) throws IOException { System.out.println("0.0〜1.0の小数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); double a = Integer.parseInt(str); if(a <= 0.5){ System.out.println("大きい"); } else{ System.out.println("小さい"); } } } こんな感じで作ってみたんだけど何がおかしいのかな?
a は int 型
ちなみに、 int a = Integer.parseInt(str); なら、意味がわかるってことね。 parseIntの文字通り、String型をint型に変換するってーわけだから。
721 :
668 :2009/06/26(金) 00:59:38
>>671 >>675 >>698 >>700 みなさま、ありがとうございます。
ようやく理解できました。
>>668 において、C1 が Test のサブクラスでないから、コンパイラに怒られたのですね。
http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.6.2.1 ...
Let C be the class in which a protected member m is declared. Access is permitted only within the body of a subclass S of C. In addition, if Id denotes an instance field or instance method, then:
If the access is by a field access expression E.Id, (略) where E is a Primary expression, then the access is permitted if and only if the type of E is S or a subclass of S.
...
Test の中から c.clone() の形の呼出しで Object#clone() にアクセスできるのは、c の型が Test か Test のサブクラスのときだけ。パッケージを超えて、protected なものにアクセスする際、登場するクラスはみな一直線に並んでないといけないのですね。
>>705 gzipを展開する必要がないなら使う必要はない。
メモリリークが出ました。助けてください。
さあ手を伸ばせ
>>709 事実上、無いと思った方がよい。
>>710 finalizeは使うなって、ばっちゃが言ってた。
System.gc()は乱用すると処理速度がガタ落ちだからな
staticなクラスの後処理としてfinalize()書いたことはあるなぁ。 アプリ終了時に後始末しろって感じで。 こういうのもJavaでは変なのかな?
EffectiveJava読んで来い デストラクタとは違うんで最終的名保険以外の用途で使ってはならない
>>728 そーゆーのは 1.3より前を考慮しなきゃいけない時以外は
Runtime#addShutdownHook(Thread) でできる。finalize() でやるよりは確実。
>730 それはまた別の用途だろ・・・すべての処理するインスタンスの参照を保持してろって話になるぞ
プロセスの終了時にGCされずに残ってるオブジェクトはfinalizeされなかったと思う。
>>731 アプリ終了時に finalize() が動くのを期待する場合もインスタンスの参照はどっかに残ってないといけない。
>>734 そもそもfinalizeが動くことを期待してはいけない
finalizeはインスタンスの参照がないと動かないってソースよろしく
736 :
デフォルトの名無しさん :2009/06/26(金) 13:42:21
基本的な質問で申し訳ないですが jdk-6u14-windows-i586.exeとpleiades-all-in-one-java_20090329.zip をインストールしてパスの設定もやったのですが実行すると エディターにはメイン型が含まれていません、と出て実行することが できません。原因が分かる方教えて頂けませんか?
実行しようとしてるクラスにメイン型がないんじゃあないだろうか
エラーメッセージをコピペすることさえできないやつにプログラムはムリだ。
Eclipseの日本語化したやつ、ちょっと出てこい。
>Eclipseの日本語化したやつ、ちょっと出てこい。 英語のメッセージも意味不明だから同罪。
741 :
736 :2009/06/26(金) 15:42:48
度々申し訳ないですが MS-DOSだと実行できるのにEclipseだとやっぱり エディターにはメイン型が含まれていません と表示されてしまいます。助けてください。
>741 エスパー登場を待つか、どういう手順でやったらどんなエラーが出たか書くかどっちを選べ
743 :
736 :2009/06/26(金) 16:05:48
>>743 ソースをEclipseから、コピペして、ここに貼ってみろ。
>>743 起動しようとしているクラスにmainがないんじゃね?
746 :
736 :2009/06/26(金) 16:31:27
皆さんホントご迷惑かけまして申し訳ないです。 ソースはこれです。 public class Java01{ public static void main(String args[]) { System.out.println("ほぷしぃへようこそ"); } } ファイル→新規→プロジェクト→次へ→プロジェクト名を「Project」 ファイル→新規→ファイル→ファイル名をJava01にしてやってます。
新規でJavaクラスを作ってないからだろうな
ファイル名を Java01.java にしていないからでは?
750 :
748 :2009/06/26(金) 16:46:02
ごめん超的外れ
751 :
736 :2009/06/26(金) 16:51:35
Projectの直下ではなく、srcの下にJava01.javaを作らなければならないという話ではないかな。 左側のPackageペインで、ツリーのどの部分にJava01.javaが表示されている?
>Packageペイン パッケージ・エクスプローラーと表記されているかも。
>>751 野良サイトが全部正しいわけないだろ、なぜかは直接聞いてくれ
755 :
736 :2009/06/26(金) 17:34:52
Projectの直下ではなく、srcの下にJava01.javaを移動させてみたら ちゃんと表示されましたが、皆さんはeclipse使う時にはクラスの作成を毎回やってるのでしょうか? それと答えてくださった皆さん本当にありがとうございました。
>756 わざわざファイル作成でやるキモい人は聞いたことない
Class<?>の「?」って何よ? <>はジェネリックだよね
>760 文字通り「なにか」
>>760 ワイルドカード
どんな型でも許すことを意味する。
質問なんですけど、1.4でコンパイルしたものを1.6のVMで稼動させて安全なんですかね? 本番業務で24時間365日停止できないところへ投入する予定なんですけど・・
764 :
760 :2009/06/26(金) 20:08:19
なるほど、ジェネリックとワイルドカードで検索したら出てきたわww
ワイルドカードなら*もありな気がしたけど、まぁいいや
>>761-762 トンクス
>>763 その逆よりは遙かに安全だと思う。
でも信頼性が必要ならテストしないと。
>760 Class と Class<?> と Class<Object> の違いがわかればジェネリックの最初の壁を突破
>>763 1.6で稼働させるなら、素直に1.6でコンパイルしろよ
わざわざ1.4でコンパイルする意味がわからん
次は、 Klass<? extends T> とか Klass<? super T> とかだな。
>>763 1.6の環境への移行テストが必要。
移行テストの工数もらえないなら、何か起こったらそっちの責任という念書もらっとけ。
770 :
763 :2009/06/26(金) 20:43:31
1.6で廃止になったクラスとか予約語(変数名としてenum使ってたり・・)とか色々とロジックに手を入れないといけなくて、 今回はロジックに手を入れることができなかったため1.4のままコンパイルということになりました。 VM6.0の機能を使った監視ソフトのためにVMだけあげることになりました。 テストなしっていうのはやっぱり怖いですね。 一般的にはコンパイル時と実行時に違うバージョンで動かすことってあまりないんですかね。
1.6で廃止になったクラスを使ってたんじゃ、動かねえだろ。 予約語は、javac -source 1.4 ですむけど。
772 :
763 :2009/06/26(金) 20:50:10
確かにそうですね。 廃止になったクラス使ってたらロジックに手を入れざるをえないか・・
>本番業務で24時間365日停止できないところへ投入する予定なんですけど 入念なガバレージ100テストに勝るものはないね。 人間の頭のロジック展開には限界があるね。 テストの重要性を認識したらいいね。
とりあえず動くか分からんもんね
24時間365日連続操業でダウンは絶対避けないと違約金とか取られる システム開発もあるしね。恐ろしくて簡単には入れ込めないよね。 そういうシステムには通常同一のテスト実行環境があるから、 そこでテストしないとやばいよ。
// Exp.java class Exp { public static void main(String args[]) { int[] ary = new int[3]; ary[4] = 10; } } $ javac Exp.java // エラーなし $ java Exp Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Exp.main(Exp.java:4) 初期化した配列外の領域に代入しようとしていることは自明なのに、 なぜjavacの段階でコンパイラはエラーを吐かないのですか?
見てるとすごくeclipseって不便なんだな
えええええ、堕落しそうですが何か?
779 :
736 :2009/06/26(金) 21:53:28
簡単に言っちゃえば、Eclipseでプログラム作る時は ファイル→新規→クラスが絶対必要ってことで合ってますか?
>>779 そんな感じで良いんじゃないですか。
面倒ならツールバーにあるクラス作成アイコン「新規 Java クラス」でもクリックしてください。
後はもう、Javaなんて言語は見なかったことにして他の何かを始めると良いですよ。
そんなポンコツIDE捨てちゃったほうが無難だな
IDEラッキョ
絶対じゃない。 けどメッチャ楽。 Javaのファイル名縛りとか継承とか実装とか至れり尽くせりだし。
サーブレットのライフサイクルではインスタンスが終了するまで 生きているらしいのですけど、インスタンスが終了するのは どんなときなんでしょうか。
3分。
>>785 時間で決まっているんですか。ありがとうございました。
>>785 あながち間違っているといえないのが困る
>>778 既に堕落してますが何かw
Eclipse以前は、IDEなんてデカくて重いだけの素人向け環境だと思ってたのに……。
効率が全てだしね エディターよりIDE選ぶのは当然だし IDEの中でも効率良いの選ばなきゃね
emacs 互換のキーバインドにできるのは、敷居が低くてよかったぞ。
>>776 こんな風にメソッドに切り出しても自明ってなら是非コンパイラを改修して欲しい
static void doAccess(int[] array) {
array[4] = 10;
}
ストリームについての初歩的な質問 クラス名が*Reader&*Writerが文字、*input*&*output*がバイナリでおkだよな? *input*&*output*にStreamがつかないのは、全部抽象クラスでいいんだよな?
色々あるからそうとも限らん、使う時に確認しろ
最後にStreamがついているのがバイトストリームかな
795 :
デフォルトの名無しさん :2009/06/26(金) 23:44:59
*input*& ってどこのURIのこと?
誰かコンパイラでチェックされるものとされないものの説明をしてやれよ RuntimeExceptionとそれ以下のサブクラスとそれ以外ってレベルでもいいけど 俺は携帯厨だから解説まんどくせ
connectionの開放漏れを防ぐ方法として、 開いたオブジェクトは片っ端からweekreferenceMapに登録しておいて、 跡でまとめて閉じるってやり方ってどうなのかな? やっぱり各自で漏れないように閉じてもらうべき?
どう考えても糞設計 使い終わったら使ったヤツがすぐに片付けろよ
connectionクローズするようなコーディングしたことがないのだが 気付かないだけでなにか問題がおきているのだろうか
DBだとオープンカーソルエラーが起きる
DBだとムダにコネクションプールを圧迫 ファイルだと別のプロセスがファイルを開けずにロック とか十分に考えられる ちなみに、フレームワークでcloseしているとかは別だからなー
>>799 Webアプリケーションで複数同時アクセスがあると未closeのconnectionのせい
で新たなconnectionが作れずタイムアウト。
しばらく待つといつの間にかcloseされてok、てのが最近見付かった。
803 :
デフォルトの名無しさん :2009/06/27(土) 09:38:31
IntegerやDoubleなどのクラスはなぜ初期化のときに与えた数値を 変更できない仕様にする思想的な背景を教えてください。 それと、BigIntegerとかにあるaddやmultipleみたいなのを インターフェイスにしてIntegerでやDoubleにも実装して 使えるようにした方が便利だと思うのですが あえてそうしない思想的な背景を教えてください。
シングルスレッドにおいて、メソッドにsynchronizedを付けた場合、速度は変わりますかね?
>>805 変わるでしょう。
現在、他のスレッドがあるかどうかで、synchronizedの動作が変わるわけじゃないし、
シングルスレッドのつもりでも、Java VMは普通は複数のスレッドで動作しているし。
>>803 あなた面白いことを考えますね。
宿題ですか。でなければ、自分の宿題にしてもいいと思いませんか?
Javaが影響を受けた言語、同時期のほかの言語やオブジェクト指向の発達を調べてレポートに…
>>805 シングルスレッドを同期対応クラスを使うデメリットは、といったところか。
1スレッド1回の同期コスト自体は大きく無いので、競合状態にならないのであれば、
非同期ブロックとの実行時間差は気にしなくても良い。
>>805 StringBufferとStringBuilderの主な違いは、メソッドがsynchronizedされているかいないかです。
Java 1.4 までは、StringBufferしかありませんでしたが、Java 1.5になってStringBuilderが追加されました。
文字列を作成するときに、ほとんどの場合は同期が不要なのに対し、
StringBufferでは同期処理が行なわれる分、遅いからです。
810 :
デフォルトの名無しさん :2009/06/27(土) 11:02:20
>>808 情報科のお勉強は大学でやりましょうね。
int を byte に変換するときに、0xFF でマスクするのは、 分かりやすい?それとも単に冗長になって分かりにくくなるだけ? 具体的には、例えば(1)と(2)がどっちが一般的? (1) byte[] bytes = { (byte)(i >>> 24), (byte)(i >>> 16), ... (2) byte[] bytes = { (byte)( ( i >>> 24) & 0xFF) ), (byte)( ( i >>> 16) & 0xFF) ), ...
フリーソフトだと2をよく見る気がするが。
>>811 一般的かどうかはしらんが、(1) でいいじゃね。
String str = request.getParameter("fruit"); byte[] byteData = val.getBytes("ISO_8859_1"); str = new String(byteData, "Shift_JIS"); GETでもPOSTでも、こうすれば文字化けしないんでしょうか。
String str = request.getParameter("fruit"); byte[] byteData = str.getBytes("ISO_8859_1"); str = new String(byteData, "Shift_JIS"); でした。
2は冗長だね
>>815 jakarta projectにライブラリあるよ
ライブラリって何の?
strutsに乗せろってこったろ
JDKをupdate14にしたら、IEやIEのタブを開くたびにjre6フォルダのssvagent.exeが変な許可を求めてきます。 鬱陶しいのでexeを消したら表示されなくなりました。 これは何者ですか。
他の人が書いたコードを見たら return 条件1?trueの戻り値:条件2?trueの戻り値:flaseの戻り値 みたいにreturnの後に三項演算子のネストをしている人がいたんだけど、 これって普通に誰でもやっていることなの?
「俺ならこう書く」って程度のもんじゃね? 俺は後者の方がいいけど return foo.isisXX ? true : bar.isXX ? true + false; if(foo.isXX) return true; return bar.isXX;
true + falseってどうなるの?
825 :
デフォルトの名無しさん :2009/06/27(土) 21:16:23
ready?
>>823 そうなのか、thx
これを書いた人にメールーしたら、wwwみたいな返事帰って来たから
お前のコードワロスwwwってか そんな相手とメールのやり取りするなよ
確認だけど、正規表現で文字列にドットが入っているかチェックしたいんだけど 例えば、2ch.netみたいな文字列をチェックする時とか ドットはエスケープすればいいんだから、\\.でいいんだよな? 一応自分でもテストしてみたが、心配で心配で
ああ、それでいい。いろいろと余りにバックスラッシュが多くなりそうなら [.]ってのもありかもな。
>>824 すまん
普段はUS配列で打ってるんでつい確認せずに書いてしまった…
US配列だとShift+;らへんが:なんよ
>>826 あなたのコードは変ですってメールしたのか?
そりゃwwwされるだろ
>>831 三項演算子のネストだったのかorz一瞬、何やっているかわからんかったと送った
コードを書いた人は知り合いです
>>832 Cじゃ割と普通にやるよ。
return hoge ? 1 :
fugo ? 2 :
fuga ? 3 :
/*else*/ 4;
なんてふうに改行して書くと、
場合によってはすっきりさっぱりかけることもある。
いるんだよな、他言語を持ち出すやつって 俺もこれから「PerlのOOPでは……」って 持ち出してやろうかしらん
別に書いちゃダメってわけでは無いよ これからもそういうコードに出会うと思う それを見た時に読み難いと思ったなら 自分は同じように書かなければ良いだけ
リフレクション廃止してくれ。 読まされてて胃が痛い。
いやいや、俺が俺が
三項演算子は簡潔で読みやすい
わけがない
>>821 教えてgoo等でもそんな答えを見つけて、OSごと再起動してみたけど、やっぱりダメでした。
Javaの動作には関係ないですよね。
リフレクションよりひどいのがバイトコード操作。 最近のオープンソースのフレームワークなんかではバイトコードいじりが流行っているようで、 ソースの中にjavaのソース書きまくりだったりしてデバッグ・トレースがまじでやりにくい。 問題がなければいいんだろうけど、不具合があったらまじでわからんから
>>843 それなら使わなければ良いし
どうにかしたいなら自分でパッチを書いて送れば良い
そういうもんだろ?
>>803 >>804 値が変更できない(immutableである)というのは、処理系にとって都合のいい性質だから。
値が変わらないので、
・同じ値のオブジェクトが複数現れたとき、1つにまとめることができる。実際、文字列
リテラルや、-128〜127の範囲のInteger(これはSunのJavaVMだけ?)は、値が同じなら同
じオブジェクトを指している。
・最適化の自由度(ループの外に追い出す、処理順序を入れ換えるなど)が高くなる。
・同一オブジェクトを共有するスレッド間で、データの同期を考える必要がない。値が
変わるオブジェクトを共有している場合、それぞれのスレッドが別コアで動いていると
すると、コアとコアとの間に、レジスタ、ライトバッファ、1次キャッシュ、2次キャッ
シュ、CPUによっては3次キャッシュと、更新したデータが届くまでにいくつもの階層を
潜り抜ける必要があるので、大変コストがかかる。
>>846 -128〜127の範囲のInteger : 言語仕様
>>846 すげぇな。
さすがJVMの解析やってる人は違うわ。
>>848 仕様書見れば書いてあるので、解析してる訳じゃないよ
最近JAVAでゲーム「ロックマンみたいなもの」を作ろうと思い、 「JAVAでゲーム作りますが何か?」のサイトを参考にして アクションゲームを作っているのですが…当たり判定の部分で躓きました。 サイトにある勇者の画像が「縦横32」というサイズに対して、 使用したい画像が「縦98横64」というサイズです。 画像の左側は当たり判定の必要が無いので、 当たり判定のサイズを小さくしたいのですが、 ブロックのめり込んだときの位置調整で調節をしたところキャラクターがどっかにすっ飛んでいきました。 色々な書籍やサイトで調べたところIsAtariを使って当たり判定を小さくできるようなのですが。 いまいちやり方がわかりません。 どなたかご教授お願いいたします。 もしくは「ロックマン」のようなアクションゲームのソースが置いてあるサイトや書籍などを教えていただけないでしょうか。
>色々な書籍やサイトで調べたところIsAtariを使って当たり判定を小さくできるようなのですが。 クラスとかメソッドとか基本は習得されてます? でなければ出なおすべきでしょう
当たり判定は自分で実装する。 2Dの当たり判定なら中学レベルの数学だし。 二つの図形の辺が交差してるかとか図形に共有部があるかとか調べればいい。
>>851 >>852 ご丁寧にありがとうございました。
私自身「15歳からはじめるわくわくJAVAゲームプログラミング」という書籍を読み終えて
自分で色々なプログラム組み合わせてゲームを作ってみようと思っていましたが…
やっぱり難しいみたいですね…orz
854 :
デフォルトの名無しさん :2009/06/28(日) 02:24:10
Windowsで動くソフトをJavaで作れば、携帯でもそのまま動かせるんでしょうか? 携帯用のJavaをWindows上でクリックしても動かないので、逆もダメなんですかね。
そこで諦めるなよ
856 :
デフォルトの名無しさん :2009/06/28(日) 02:30:30
>>854 ならない。
しかもキャリアによって違うよ。
javaだとdocomoかsoftbankなんだけど、
それぞれ作らないといけない。
write onceって嘘っぱちなのですか?
860 :
デフォルトの名無しさん :2009/06/28(日) 02:37:11
>>856 やっぱりそうなんですか。。
言語自体がキャリアごとに異なるんでしょうか。
それとも、ほとんど一緒で一部変えるだけですか?
もし概ね共通なら、Windows用のJavaの教本で勉強して、
あとはキャリア別の違いが載ったような本を見れば
対応できると考えていいでしょうか。
861 :
デフォルトの名無しさん :2009/06/28(日) 02:42:06
>>860 うん。
キャリアごとの違いなんて、
基本をしっかり学べばどうとでもなる。
862 :
デフォルトの名無しさん :2009/06/28(日) 02:49:49
>>861 それならうれしいです!
やる気が出てきました。
明日さっそく本を買いに言ってきます。
C++とPHPをやった経験があれば覚えやすいかな。
でも新しい言語を覚えると前のを忘れちゃうんです><
863 :
デフォルトの名無しさん :2009/06/28(日) 02:57:29
864 :
デフォルトの名無しさん :2009/06/28(日) 02:58:16
865 :
デフォルトの名無しさん :2009/06/28(日) 02:59:16
あぁ、、
>>861 さんでしたorz
スレ汚しすみません。
866 :
デフォルトの名無しさん :2009/06/28(日) 03:01:15
>>862 もちろん。
他の言語やった経験あったほうが学びやすいよ。
じゃ、がんばって。
MIDPじゃなくてPPかPBPなら動くんだがな。
868 :
デフォルトの名無しさん :2009/06/28(日) 09:55:41
Swingのレイアウトってグラフィカルに決めることって出来ないんですか?
IDE使えばできるよ NetBeansとか
>>868 Netbeans IDE他統合開発環境にはグラフィカルに決めることが出来る道具がある。
Eclipseはポンコツだからやめたほうがよさそう
ポンコツだなんて・・・ 一世を風靡したと言って頂きたい
Netbeansは重いのが欠点。 あとはシェアで大きく水を開けられているからなぁ。 4,870,000 件 vs 59,100,000 件 まずEclipse-pluginとして作られるし。
エクリプスは結局何年もちこたえたんだ?
んな寝言は、グーグル先生の検索件数で拮抗してから言え。
>>873 NetBeans重いとか寝言は寝てから(ry
878 :
デフォルトの名無しさん :2009/06/28(日) 11:39:55
総称型の鬼門らしいんですが、ClassとClass<?>はどう違うんですか。
StringBuilder.toStringでnullって帰すことはできないの?
NetBeansは重いって何時の話だ・・・ 確かにまだEclipse級ではないが実用できるレベルにはなっているぞ >878 Classの原型となんかのClass、Effective Java読んで来い
883 :
879 :2009/06/28(日) 13:06:28
引数が正規表現にマッチしたら、文字列をStringBuilderとか使って加工するメソッドを書いている そこで、変な値が入ってきたらString型の戻り値にnullを返しちゃおうかなと思った 例外を発生させるのもめんどいし
884 :
デフォルトの名無しさん :2009/06/28(日) 13:07:04
ここには総称型などわかる者はいない ニートばかりだ。
>>883 >そこで、変な値が入ってきたらString型の戻り値にnullを返しちゃおうかなと思った
それがどうして「StringBuilder.toStringでnullを返す」という発想に繋がるんだろう?
引数チェックして不正な値だったらreturn null でいいんでないの
886 :
デフォルトの名無しさん :2009/06/28(日) 13:28:19
eclipseのGUI製作ツールを調べたらガニメデには対応して無いみたいだったので どうしたらいいですか?
Effective Javaっていくつか種類があるけどどれ読めばいいですかね?
>>887 どうしたらいいですか?
ご飯食べて外で元気よく遊んで来い。
何の目的があって、そのために何がやりたいのかも書かずにどんな答えを求めてるんだ。
>>883 public String doHoge(String arg) {
if(arg == null || !arg.matches("pattern")) {
return null;
}
// do something...
}
こういうことじゃないの?
>>883 仕様上、引数の値が正しくない場合は IllegalArgumentException を使う
これは呼び出し側の責任として処理させる。
893 :
デフォルトの名無しさん :2009/06/28(日) 16:48:10
Class<?>はやっぱり難しいんですか。Javaは難しいし無理もないですよね。
以前にNetbeans6.5とEclipse3.2を比べてた間違いだ。すまん。 Eclipseがなんとか動く1GHz512MBボロPCで、Netbeansは起動やらナビゲータやら トロトロトロトロトロトロトロトロお待ちくださいだったんで即座に捨てたから、そういう 印象だった。 遅くは無いのか。 シェアの話は、分かると思うけどグーグル先生で Netbeans と Eclipse の検索件数。 プラグインは netbeans plugin の検索結果 約 835,000 件 eclipse plugin の検索結果 約 3,450,000 件 こっちは4倍か。
895 :
デフォルトの名無しさん :2009/06/28(日) 17:05:15
なにグーグル先生って?w
>>894 初回起動時のNetbeansは起動やらナビゲータやらトロトロトロトロトロトロトロトロお待ちくださいは事実。
NetBeansの初回起動時の遅さは開発者側から必要な事だと言う見解が出てる プロジェクトの情報を一旦全部キャッシュしてるから その作業が終わるまでは遅い
898 :
デフォルトの名無しさん :2009/06/28(日) 19:22:50
ここは素人を罵倒するニート掲示板
NetBeansは信者がキモい。 mixiのコミュ見たときはもう…
今javadocを作っているんだけど、おいらは「@throw java.io.IOException 説明」と書いている でも、java se6 api リファレンスの例外の所を見ると、IOExceptionにリンクが張ってあるじゃん おいらが書いた時はリンクが張られなかったのにorz、どうやったらリンクが張れるのよ? 教えてエロい人!!
基本的にオープンソースやGNU界隈のコミュはキモイだろ 極力に見ないようにしてるわ
使ってる人間と道具は切り離して考えろよw
人に質問する態度じゃないでしょ マナーくらい守ってくださいよ
その言い草はいいツール作ってる人たちに失礼だな。
907 :
デフォルトの名無しさん :2009/06/28(日) 23:58:45
>>376 に
> AWTとSWINGは今からわざわざ覚える必要は無いかなと思います。
と書かれていますが、初心者向けのJava参考書を見ると大抵Swingが使われています。
それでもSwingをやらずにJSP+Servletというのを学んだほうがいいのでしょうか。
Swingを実戦で使ったことがない
909 :
デフォルトの名無しさん :2009/06/29(月) 00:03:40
>>907 を書いた後に思ったんですけど、JSP+ServletというのはWebアプリ用のものでしょうか。
やりたいのはGUIプログラムです。
911 :
デフォルトの名無しさん :2009/06/29(月) 00:12:21
GUIをやりたいなら ある程度分かってきたところでjavaFXやWebstartも少しやっとくといいかもね
JavaFXってどうなの? やる価値あるの?
とおもうな 違法コピー嫌うようになってきたこの頃では それに対する対策となりえそうなものは少しでも取り込んどいた方がいいんじゃ無いかとは思う
そもそもJavaでGUIは価値が見えない
VBでええわ。
いや逆に売り渡しちゃうタイプのVBや他の言語の方が無価値になり得るよね
917 :
デフォルトの名無しさん :2009/06/29(月) 00:19:10
>>908 実戦では何を使うんでしょうか。
>>910 Webが必要なかったらJSP+Servletはやらなくていいってことですね。
>>910-911 SwingはやらずにjavaFXとWebstartというのをやればいいのでしょうか。
>>914 そうなんですか。
ケータイアプリはGUIじゃないんですかね・・・?
既に違法コピーされてる部分に関しては無価値化が進んでるわけだし
>>908 デバッグ用に可視化ツール作ったら製品の一部になってしまったことならある。
アマチュアでもなきゃSwingは必須だろ今のところは
>>920 どんな職場にいたらSwingが必須とまでいえるんだよwww
>>917 ケータイアプリ作りたいならまた違うぞ?
GUIでどんなものが作りたいんだ!
925 :
デフォルトの名無しさん :2009/06/29(月) 00:26:44
VBでGUI作ってバグ作りまくってるの君のところか?W
Swing必須はまずないw どんだけクソ仕事しかしてないんだかwww
927 :
デフォルトの名無しさん :2009/06/29(月) 00:33:25
>>909 とりあえずWindowsでGUIのソフトを作りたいと思っています。
何を作るか決めてませんが、自分用のツールとか・・。
(Javaってそういう用途じゃないんですか??)
慣れてきたら携帯用のものも作りたいです。
用途なんて決まってねえよ 大体なんでもできるんだから
929 :
909 :2009/06/29(月) 00:34:42
930 :
デフォルトの名無しさん :2009/06/29(月) 00:37:52
また底辺ドカタが騒いでるんかw
じゃ、俺はとりあえずRubyとかPythonとかでプログラミングの勉強することをすすめる
Swingは普通に官公庁系の仕事とかで使う事はあるよ あと、もし学生なら課題でSwingアプリを作れってのもある Javaの仕事が圧倒的にWeb系が多いから誤解されがちだけど Swingの需要も一定数あるよ JavaFXも他に出遅れた感もあるけど、今後どうなるかわからないし ちゃんとやってる人が少ないからそこに潜れるかもね
アマチュアがいくら騒いだところで流れは変わらんよ
935 :
デフォルトの名無しさん :2009/06/29(月) 00:46:58
また底辺ドカタが騒いでるんかw
>>934 Strutsしか触った事の無いJava弱者さんはお黙りください
何でもできる人が正義 ただし貧乏籤を引かされがち
Eclipse使ってる人多いみたいだから大分趣味でやってる人多いよなここ
939 :
デフォルトの名無しさん :2009/06/29(月) 00:51:28
private int x, y, value; private boolean open; Cell(int x, int y){ this.x = x; this.y = y; open = false; // default is "not-opened" } void setValue(int value){ this.value = value; } boolean isOpen(){ return open; } boolean isMine(){ if(value == -1){ return true; }else{ return false; } } int openMyself(){ open = true; return value; } 何がしたいかさっぱりわからん
940 :
デフォルトの名無しさん :2009/06/29(月) 00:53:11
いくら頑張っても給料が糞低いから無理
cellってのが気になるけど 確かにわけ分からんなこれだけでは
コードスルーする辺りがやっぱりアマチュアだな
>>938 テキストエディタで打てれば玄人ってのは古いと思う
エディタは有り得ないだろ 能率悪すぎ
Cell(int x, int y) でコンパイルエラーじゃねーか 何をするもこれをするもない
│ _、_ │ ヽ( ,_ノ`)ノ <openMyself()!!!! │ へノ / └→ ω ノ >
逆にEclipse使えないのは素人
のーせんきゅー
Eclipseは素人向けだよグループ開発部分が機能弱すぎ
>>949 はいはい、IDEAでも使っててくださいね
>>949 それはpluginの問題だろ?
eclipse使ったことあるのかい?
>>914 じゃあ、GUIはC++の一択?
それも大げさだなあ。
RubyやPythonでGUIのほうが、移植性が不安だし。
C++www
スゲエこれだけ素人集まるプログラム板って・・・
何の話をしてるんだよ
素人って言えば釣れると思ってる構ってちゃんだろ
まあ何でもいいけど明日仕事だから寝るぞ
いっつもカップラーメンなんだよな・・・ 糞仕事ばかりでいい仕事が来ないからに違いない!
959 :
デフォルトの名無しさん :2009/06/29(月) 01:12:51
プログラム間違ってんの?
>>939 地雷掃除の枠一つ。
データクラスから判ることは少ないと思うが。
>>899 view_community.pl?id=112369
> 純粋にNetBeansが好きな方
> Pure Java環境が好きな方
> GUIが大好きな方
> vi/Emacsで神の領域を目指していた方
> Eclipse一辺倒でだめ人間になりたくない方
> Eclipse一辺倒でだめ人間になりたくない方
> Eclipse一辺倒でだめ人間になりたくない方
> Eclipse一辺倒でだめ人間になりたくない方
何これ?(^ω^;)
たしかにきもいw
神の領域・・・
全てのNetBeans好きがそういうタイプなわけじゃないよ
まぁどこにもどっちにも話をややこしくする人は居るもんだしな
悟空死んじゃう
968 :
デフォルトの名無しさん :2009/06/29(月) 03:29:44
Strutsって何?
NetBeansとか使ってる奴見たことない。 ヤンキーの兄ちゃんが使っているのを遠めに見たことある。
ヤンキー・・・
Swing信者がだSwing必須はないw
>>969 少なくとも
>>969 より優秀だったり
名前が知れてるプログラマの何人かはNetBeans使い
俺の婆ちゃんもNetBeansの方がいいって言ってた
netbeansもeclipseも使ってるぜ
netbeansの前身なら使ってたけど良くなった?
976 :
デフォルトの名無しさん :2009/06/29(月) 12:09:28
次スレとかもういらないよね?
なら見なけりゃいい。
立てますよ一応
大学で偏差値を出すプログラムをjavaで作れといわれたけど 考え方としては入力する変数(平均点、自分の得点、標準偏差)を作って 格納した変数を(自分の得点−平均点)×10/標準偏差+50となるように作ればいいのかな? 余裕があれば標準偏差も求めて尚且つ偏差値も出すことのできるプログラムも 考えてこいといわれたけど標準偏差の方は大変そうでわからないなぁ
>979 自力でその偏差計算を書けって話じゃないのか? 入力値が複数の点数データとかで。 偏差計算はインチキしたいなら、Uncommons Mathsとか使えば getStandardDeviationみたいなズバリの関数あるが、 なんの勉強にもならんし、課題の意味が無いな。 ケーキ作ってこいっていわれた課題なのに買ったケーキ持っていくみたいな。
>>980 うーん、たぶん授業が統計解析学だからそんなに難しいのじゃないかなぁ
理論は授業で教えて実施はエクセルなりjavaなりCなりで作ってみろって言う先生だし
たぶん今回の授業範囲の偏差値やら標準偏差の意味が分かっているかを
確認したいぐらいだとおもう
それにしてもそのまま偏差求めることのできる関数があるんじゃ不正が多そうだ
両方考えてみるけど、上手くプログラムが作れなかったらそのときはよろしくお願いします
>>982 うーん、授業風景がなんとなく想像できるw
教授「お前ら偏差値も知らないのか。いったい高校で何を学んできたんだ!」
教授「よし、お前ら偏差値を求めるプログラムを書いてこい」←思いつきなので来週は忘れている
if(douteiFlag == true){ hensa = 10 if(age > 30){ throw new IllegalPersonException() } }else{ hensa = 90 }
Button equ = new Button("="); を Button equ = new Button("push"); に変更する。 で、 1 + 2 を計算したいときは 1 push 2 + と入力する。
>>985 演算子を入力した直後は何が起きれば良いのか、もう一度考えるんだ
>>986 やってみたのですが、変化が無いようです。
>>987 考えているのですが・・・
演算子(仮に+)が入力されたら入力された値が入っているtmp1をtmp2にプラス。
tmp1を0にして、次の数字の入力を促す。
ですよね?
>>988 13+25= は38 というのが人間様の考えだ。
den様は(脳内実行環境では)
tmp1 : [0.0] 1 3 [13.0] + [0.0] 2 5 [25.0] = [0.0]
tmp2 : [0.0] 1 3 + [13.0] 2 5 = [25.0]
となる。(はずだが。)
さてどうしたものかね。
いやぁ〜、考えれば考えるほどわからない^^;
あなたの電卓の仕様を教えてください、みたいな。 あなたの電卓は二項演算子ボタンを押した瞬間に二項とも取得できるんですか。 イコールボタンの仕様は、直前の入力値を表示するだけですか。
ひょっとしてString値をそのまま+したりしてる?
あるアプリケーションをネットで落としてコンパイルしようとしているのですが パッケージ Import は存在しません。というエラーになります。 最初から Makefile がついてきていて make all するだけでできるはずなのですが。。。 Makefile を見ると javac -O -classpath ../:.:../Java/ *.java という記述があるのですが、この「../:.:../Java/」というのは正しい記述なのでしょうか? 自分は始めてこんなピリオドとコロンの連続を見たので・・・
996 :
デフォルトの名無しさん :2009/06/30(火) 12:31:19
>>995 ドカス
落してきたままなら、自分の環境に変えるだろ
故にお前さんの環境のパスに修正しろ
997 :
デフォルトの名無しさん :2009/06/30(火) 12:33:03
なに「ドカス」って?ww
998 :
995 :2009/06/30(火) 12:35:15
>>996 自分の知らない相対パスの書き方なのかと思って・・・
自分で絶対パスを描き直してみます。
いろんなとこにこの記述があるから果てしなく面倒くさそうだけど・・・
ありがとうございます。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。