【初心者】Java質問・相談スレッド116【歓迎】at TECH
【初心者】Java質問・相談スレッド116【歓迎】 - 暇つぶし2ch549:デフォルトの名無しさん
08/06/24 13:03:13
こんにちは。
学校の課題で作った掲示板システムの拡張をしています。
設計について質問させてください。

DB1テーブル1Entityで、各Entityが自身のvalidateメソッドを持つ形の設計をしています。
今回、一部のテーブルに対し、validateのみが異なる複数のEntityが必要な状況になりました。

いくつか方法を考えたのですが、このような場合どの方法がよいでしょうか。

(1) 関連のない別クラスとしてEntityを定義する。
(2) 共通の親Entityクラスを定義し、validateメソッドをoverrideする。
(3) validateを別クラスに切り出し、strategyに持ち込む。

よろしくお願いします。

550:デフォルトの名無しさん
08/06/24 13:26:49
コーディングと設計の区別もつかないPGが混じってんのか

551:デフォルトの名無しさん
08/06/24 14:52:17
こんにちは。JAVA初心者です。
eclipseでソースを打っているのですが、
コメントを打つと、たまに日本語が□に変わって
うまく表示されません。
なぜか、教えてください。

552:デフォルトの名無しさん
08/06/24 15:25:52
すいません解決しました。
ありがとうございました

553:デフォルトの名無しさん
08/06/24 16:01:27
javaの土初心者です。JavaでWindows PCの
I/O空間アクセス、物理メモリアクセス
ってどのようにするんですか?

554:デフォルトの名無しさん
08/06/24 16:21:53
>>553
JNIとOSのディバイスドライバが必要だな。
そもそもWin32でそれをする方法を知ってるのか?

555:デフォルトの名無しさん
08/06/24 17:13:06
>>554
デバイスドライバを作りたくないからJavaでやろうと考えたのですが...
今回はI/O空間アクセスが出来ればOKで、物理メモリアクセスはあればなんかの役に立つかな
ぐらいなんですが

Windowsならドライバで
IO空間アクセス:
READ_PORT_XXX、WRITE_PORT_XXX で行う
物理メモリアクセス:
MmMapIoSpaceしてREAD_REGISTER_BUFFER_XXX、WRITE_REGISTER_BUFFER_XXX で行う

で使うときにはDeviceIoControlで叩く

ってC/C++のWinプログラム初心者でも知っている知識ですよ。
初心者Javaな人でもこれぐらいは知っていますよね。

556:デフォルトの名無しさん
08/06/24 17:22:57
ここはクマーとかいうAAを貼るところだろうか?

557:デフォルトの名無しさん
08/06/24 17:27:05
アンダーフローやオーバーフローは構文エラーですか?論理エラーですか?

558:デフォルトの名無しさん
08/06/24 17:38:27
違います
低脳エラー(うぽぽんエラー)です

559:デフォルトの名無しさん
08/06/24 17:40:41
>>555
すっげー
俺もこんくらいの知識ほしい

560:デフォルトの名無しさん
08/06/24 17:50:21
>>85-105

なんか爆笑した。>>85の言動にw

>>109
そこにJavaの格言とJavaの鉄則が入ってるのが理解できない。
あの本はJava5以前の本だぞ。Java5が出てから役に立たなくなったテクニックやTipsが
けっこうあるので今ではおすすめしがたいな。鉄則のほうはそこそこ役に立つが、
それだったらEffective Javaのほうが全然役に立つ。

561:デフォルトの名無しさん
08/06/24 17:51:04
そクマー

562:デフォルトの名無しさん
08/06/24 17:56:02
>>121
Java+謎、落とし穴を書いた前橋 和弥よりはましではないかと。
あれは酷かった。本に愚痴ばかりかいて、今となっては解決済みの問題が
あたかも解決されていないかのような書き方が、初心者に誤解を与えかねない本だな。
アンチがあれを読んで昔飛びついていた記憶がある。

563:デフォルトの名無しさん
08/06/24 17:57:58
>>134
> ただM$の都合で、変な改定されるのが怖いんです。(J++とかw)

そのくせ、こんなこと言ってるよな。VBにしておけよ電波。

> どうしてjavaは初心者にこうも厳しいんですか?
> 例えばダブルクリックの起動ファイルひとつ作るのでも、ネット上の情報はうそっぱちか役に立たない情報ばっかり。
> VBと比べても必要な情報にたどりつくのに時間がかかりすぎ。
> これだったら、M$社製品(C++、C#、VB2005等)の方が手っ取り早かった(と思う、たぶん)。
> とくかく情報の出し惜しみはやめてほしいな。
> なんで、java弄るひとって性格の悪い人がおおいんだろ。
> java関係の本でもろくなのないし。


564:デフォルトの名無しさん
08/06/24 18:00:22
>>141
> LinuxではC#動かないでしょう?
Monoで動く。

> .NETははっきりいって糞くらえですよ。(食事中のかたすんません)
VB忠なのに。

565:デフォルトの名無しさん
08/06/24 18:01:37
>>146
> ふりだしに戻る・・・
> ⇒なんで、java弄るひとって性格の悪い人がおおいんだろ。
>
> 自分なりの分析ですが
> java弄る人って、殆どが玄人(それで飯食っているひと)なわけですよ。
> もしくは、いま勉強中で資格とって就職しようとしている人々。
> したがって、ライバルは少ないほうがいい、もしくは自分の優位性をつねに保っていたい。
> そんなエゴが見え隠れしている。

一昔前のC言語厨やUNIX屋じゃあるまいし。
このスレ見ればわかると思うが、素人がよく質問しに来ているが。

566:デフォルトの名無しさん
08/06/24 18:04:05
>>154
たいした警鐘に感じないなあ。
Javaの情報は10年前に比べれば腐るほどあるし
ライブラリもたっぷりあるし書籍もネットも充実して情報には困らないんだよなあ


567:デフォルトの名無しさん
08/06/24 18:05:19
この使い方の意義が分からん漏れはヴァカですか?
StringBuffer sb;
sb.append("Hello, ").append("world!!");


568:デフォルトの名無しさん
08/06/24 18:15:01
>>567
意味じゃなくて意義となればワンライナーと呼ばれる人々が喜ぶ

569:デフォルトの名無しさん
08/06/24 19:08:36
>>549
validateを交換可能にしたいんでしょ?
まあ2のTemplateMethodパターンかなあ

570:デフォルトの名無しさん
08/06/24 19:09:11
java.awt.FileDialog上のキー操作、マウス操作をフックしたいのですが、
実装方法を教えてください。

フックしたい目的は、右上の×ボタンとESCキーによるキャンセル抑止です。
processEventメソッドをオーバーライドしたり、
リスナを追加してもどうもフックされていないようです・・。

571:デフォルトの名無しさん
08/06/24 19:19:11
>>567
それだったらStringBufferをStringBuilderに変えて
StringBuilder sb = new StringBuilder();
sb.append("Hello, world!!");
したkなる。

new忘れていたようなのでつけておいた。



"Hello, "と"world!!"が文字リテラルではなく変数や定数だったら
意義はある。

572:デフォルトの名無しさん
08/06/24 19:45:18
5万ぐらいの激安のノートパソコンで
勉強できる?

573:デフォルトの名無しさん
08/06/24 20:05:32
>>569
ありがとうございました。
その方向で設計してみます。

574:デフォルトの名無しさん
08/06/24 20:42:39
JMFを使ってキャプチャした画像→
 JNIを通してOpenCVに送り顔認識→
  認識した顔の中心座標を返す

といったプログラムを書こうとしていますが、そもそもこんなことは可能なのでしょうか。

別にJNIを使わなくても顔認識ができればいいのですが、
OpenCV程度の顔認識精度があるJAVA用ライブラリなどあれば教えて頂きたいです。

575:デフォルトの名無しさん
08/06/24 20:56:56
>>572
何が?

576:デフォルトの名無しさん
08/06/24 20:59:29
>>572
勉強するだけなら10年前のでもできるだろ
何を勉強するのかしらんけど

577:デフォルトの名無しさん
08/06/24 21:00:01
4月からIT企業に入社したヒヨッコです。いろいろ勉強のために調べていたらどうしても理解できないソースを見つけたので質問に来ました。
インタフェースの中にある以下のようなソースなんですが

public interface IntComparator{
public static final IntComparator
NATURAL_COMPARATOR = new IntComparator(){
public int compare(int i1, int i2){
return
i1 < i2 ? -1 :
i1 > i2 ? 1 :
0 ;
}
};
}
出典:URLリンク(mitv2.net)

1.「new コンストラクタ{メソッド名(引数){メソッド定義}}」という書式はこの他にも見かけたのですが、
これはこれから生成するインスタンスに含まれるメソッドを定義する構文という理解で正しいのでしょうか?また、その場合このメソッド定義はどのインスタンスに対して有効なのでしょうか?
(クラス定義と同じでこれ以降同じクラスから生成するインスタンス全てに有効?それともここで生成するインスタンスのみに有効?)

2.メソッドを定義する構文であるとすれば、抽象メソッドしか持たないはずのインタフェース内でメソッドを定義していることになります。
Eclipsにコピペしてみてもコンパイルエラーは発生しないようですが、本当にこのようなことが許容されるのでしょうか?

長文になってしまいましたが、よろしくお願いします。

578:577
08/06/24 21:01:02
インデントきえたーーー

読みにくくてスイマセン…出典元を見ていただいたほうがいいかも知れません…

579:デフォルトの名無しさん
08/06/24 21:04:21
>>578
専ブラならポップアップで見てみ

580:デフォルトの名無しさん
08/06/24 22:00:48
>>577
それは匿名内部クラス、あるいは単に匿名クラス、もしくは無名クラスなどという。
指定したクラスかインタフェイス(その場合はIntComparator)を継承・実装している名前のないクラスを定義してnewする。
定義したメソッドは、そこで生成するインスタンスだけのもの。

581:デフォルトの名無しさん
08/06/24 22:09:13
>>577
1回限りしか必要のないクラスの名前をわざわざ付けて名前空間を汚す代わりに
名無しのクラスからインスタンスを生成することができる。

書式的には、
new 親クラス(親クラスのコンストラクタの引数) { メソッド定義 }
みたいな感じ。

名前がないので、新しいメソッドを定義してもクラスを明示できないから呼べない。
大抵、親クラスのメソッドのオーバライドしないと意味がない。
クラスじゃなくてインターフェースでもおk

似たようなものに、配列の生成と初期化を同時に行う方法がある。
new int[] { 1, 2, 3, }
とか。
いちいち配列を入れる変数名を用意して名前空間を汚さずとも
そのままメソッドの実引数などに使える。

ただ、見づらいと言う人は多々居る。不毛な論争の種にどうぞ

582:577
08/06/24 22:51:54
>>580
>>581
ありがとうございます。
読みながら想像してたのと大体合ってたようで一安心です。

クラスの中でインスタンスをいっぱい(50コとか)作るけど、そのうち1つだけメソッドの中身がちょっと違うときに使ったりするものなんですね。

もう少しこのソースがどんな動きをするのかを考えてみたいと思います。その過程で壁に当たったらまた質問に来るかもしれないので、そのときはよろしくお願いします。

583:デフォルトの名無しさん
08/06/24 23:28:01
クラスの設計を、コードで直接行う場合のメリット、デメリット
を教えて下さい

584:デフォルトの名無しさん
08/06/25 00:22:10
サイズを固定しないJTableを作りたいのですが、
可変長の二次元配列ってどうやって表現すればよいのでしょうか?
一次元でも実現可能なのでしょうが、コードが冗長になりそうで・・・

585:デフォルトの名無しさん
08/06/25 00:29:21
>>584
配列じゃなくてコレクション使ったMODELで

586:デフォルトの名無しさん
08/06/25 00:52:08
>>585
引数がVectorのDefaultTableModelを使うという事でしょうか?

587:デフォルトの名無しさん
08/06/25 00:53:39
javaで図形処理をさせる課題が出て難しく感じたので
これを機に参考書を買おうと思っています。

wiki乗っている「コアJava2 Vol.1 基礎編」が良さそうだと思ったのですが
図形処理関係では他にどういう参考書があるか知りたいので
教えてください。

588:デフォルトの名無しさん
08/06/25 01:20:12
WebOTXでJavaを利用したアプリサーバを
構築してるんですが、なんというか情報が少なすぎる…
参考書があるか知りたいですが、探し方が悪いのか
丸善とかでは見つからなかった。

WebOTXでJavaをつかったアプリサーバ構築
みたいなテーマの本はないでしょうか・・・

589:デフォルトの名無しさん
08/06/25 08:08:51
Javaはガベジコレクション等プログラマがメモリを意識しないでいい利点があると聞いたのですが・・・

int[] a = {10, 9, 8, 7, 6}
int[] b = {1, 2, 3}
a = b;

とした時にC言語だとfree?されてないのでメモリが無駄になるのですが、Javaだとどうなるんですか?

590:デフォルトの名無しさん
08/06/25 08:09:37
↑{10, 9, 8, 7, 6} のメモリ領域が

591:デフォルトの名無しさん
08/06/25 08:23:43
>>589
言語仕様で決まってるのは{10, 9, 8, 7, 6}の配列がガベコレ可能な状態になるってところまで。
どのタイミングで回収されるかは実装依存。

あと、C言語だと、スタックに確保されるんじゃなかったか? それ。

592:デフォルトの名無しさん
08/06/25 11:47:12
指定した番号目の素数を出すにはどうしたらいいですか?

593:デフォルトの名無しさん
08/06/25 11:49:39
age

594:デフォルトの名無しさん
08/06/25 11:56:34
素数を降順でリストに突っ込んで取だしゃいいだろ。

595:デフォルトの名無しさん
08/06/25 11:57:20
>>594
すみません、素数を出すコードがわかりませんので。

596:デフォルトの名無しさん
08/06/25 12:03:16
エラトステネスのふるいでググレ

597:デフォルトの名無しさん
08/06/25 12:06:59
了解

598:デフォルトの名無しさん
08/06/25 12:41:32
数日前にチャート表示のプログラムを相談したものですが、
ttp//plaza.rakuten.co.jp/meime/diary/200603310002
を参考にしてみます。相談に乗っていただきありがとうございました。

599:デフォルトの名無しさん
08/06/25 13:42:22
>>594
なんで降順?

600:デフォルトの名無しさん
08/06/25 15:10:17
そんなどうでもいいこと聞いてなんになるの?

601:デフォルトの名無しさん
08/06/25 15:22:59
普通は昇順(1,2,3,5,7....)で何番目の素数とか言うだろw
降順の素数番目ってどうすんだw

602:デフォルトの名無しさん
08/06/25 17:11:11
じゃあ昇順てことで

603:デフォルトの名無しさん
08/06/25 18:27:38
スレ違いかもしれませんが、DoJaのコンソールの

Main :java.lang.NullPointerException Test
java.lang.NullPointerException
at MainCanvas.<init>(+40)
at Test.start(+7)
MainCanvas

このエラー出力の(+40)や(+7)はどういう意味ですか?


604:デフォルトの名無しさん
08/06/25 18:31:26
バイトコードの位置
<init>メソッドの40バイトめとstartメソッドの7バイトめ

605:デフォルトの名無しさん
08/06/25 21:23:38
進むほど↑↑なのが昇順。
進むほど↓↓なのが降順。


606:デフォルトの名無しさん
08/06/25 21:47:03
自分で使えるAPIをもっと増やしたいと思っている者ですが、みなさんの方でおすすめの本などあるでしょうか?
仕様を見ているだけではなかなか使いこなせず、使用例を見て理解したいと思うんですが、ソースをどこから探せばいいかとよく迷います。
自分のレベルですがJava歴は1年3ケ月、JSP、JSTLのタグを経て、GoFのデザインパターンを現在勉強しています。

ご教授、よろしくお願いします。

607:デフォルトの名無しさん
08/06/25 21:48:08
new コンストラクタ(引数).メソッド(引数)

という構文を見たのですが(左辺には何も無し)、これは
staticでないメソッドを使いたい!でも他に使うものはないからインスタンスを作るまでも無い!
というときにインスタンスを介さずに非staticメソッドを呼び出すものと考えていいのでしょうか?

608:デフォルトの名無しさん
08/06/25 21:48:30
>>605
時間軸で見た前方後方くらいにわかりづらいな

609:デフォルトの名無しさん
08/06/25 21:59:50
>>607
いや、newでインスタンスを生成してからメソッドを呼んでる形だよ、それは。
つまり
Hoge hoge = new Hoge(param);
Hoge.method(param);
の2行を
new Hoge(param).method(param);
に省略。

610:デフォルトの名無しさん
08/06/25 22:01:36
ああスマン、上のHoge
hoge.method(param)の間違い。

611:デフォルトの名無しさん
08/06/25 22:12:41
>>577
なんでそんなものを作るのか。

java.lang.ComparableインタフェースとComparable#compareTo()メソッドがあるのに


612:デフォルトの名無しさん
08/06/25 22:15:07
>>589
AtomicIntegerとか使えばいい

613:デフォルトの名無しさん
08/06/25 22:16:18
>>607
インスタンスは必要だが参照として保持する必要がない場合に使う書き方
FileChanel channel = new FileInputStream(file).getChannel();
とかよく使うパターンかね

614:607
08/06/25 22:47:43
>>609>>613
ありがとうございます。

内部ではインスタンスは作られているけれど、参照が無いから後から同じインスタンスをいじったりはできないということですね。
いまさらこんなこと聞くのもアレなんですが、Javaで言うところの「参照」というのはCでのポインタみたいなものと考えていいんですよね?
…ちょっと自信がなくなってきた…

>>611
出典のページによるとcompareToではオブジェクト同士の比較だけで、int同士の比較ができないから作っちまえということのようです。

615:デフォルトの名無しさん
08/06/25 23:07:51
>>614
参照はポインタの一種と考えれば、まあ間違いはない。
ポインタで出来ることを全て参照でできないってくらい理解しておけばいいと俺は思う

616:609
08/06/26 07:50:26
>>614
出典のページによるとcompareToではオブジェクト同士の比較だけで、int同士の比較ができないから作っちまえということのようです。

参考までに出典を教えて。説明を聞いてもIntegerクラスとのボクシング、アウトボクシングがある5.0以降なら、やはり611の言う通りと思えるので。
ボクシングの説明をただ省きたかっただけなのかもしれないけどね。

617:デフォルトの名無しさん
08/06/26 08:02:11
IntComparatorを日本語ページでぐぐったら2003年に書いたページが出てきたけど。
これ1.5より前に書かれてるんだろうから仕方ないんじゃね?

618:デフォルトの名無しさん
08/06/26 09:47:01
HtmlURLConnectionを用いてウェブページへのログインを実現させようとしています。
パケットキャプチャして、POSTの方はほぼ完全に一致させ、それに対するサーバーの応答も大丈夫だったのですが、その後こちらがGETするときにはPOSTの時に
URLConnection#setRequestProperty(String,String)で設定していたプロパティが完全にクリアされてしまい、サーバーから403が返ってきます。
具体的には、User-Agentが問題なようです。
GETの時のプロパティを設定するにはどのようにすればよいのでしょうか?

619:デフォルトの名無しさん
08/06/26 12:54:34
JMFを使って動画の再生に成功。あとはタイムラインと文字を流すシステムをひっつければニコニコ動画の完成だ!


620:616
08/06/26 13:21:43
>>617
おいおい、可能性高くてもWebで同じ名前のソース一つ見つけたからこれのこと言ってんだろってのは無謀だろ。
よしんばほんとにそうだとして、俺を納得させてどうするw
ここは614に「古いコードあてにしないで611の言うこと参考にしたほうがいい。」と言ってやるのが筋じゃないか。

621:デフォルトの名無しさん
08/06/26 13:25:43
>>620
ってか、君こそ出典知ってどうするつもりだったん?

622:デフォルトの名無しさん
08/06/26 14:59:17
メモ帳からデータを読み込むプログラミングを作りたいのですがうまくいきません
以下が私の作成したものです。NetBeansを用いました。
メモ帳の中のデータは
1
2
です。
package javaapplication2;
import java.io.*;
public class Load {
public static void main(String[] args) {
try { //(1)
//(2)Fileオブジェクトの生成
FileReader fr =new FileReader("test.txt");
//(3)Fileオブジェクトの生成
int i,m,s,kai=0;
//(7)読み込みデータがなくなるまで読み込み
while ((i = fr.read()) != -1) {
s=i; //(8)書き込むデータがなくなるまで書き込み
m=i;
kai = s + m;
}
fr.close();
System.out.print(kai);
//(9)読み込みストリームを閉じる
//(10)書き込みストリームを閉じる
catch(IOException e) {
} }}

623:デフォルトの名無しさん
08/06/26 16:03:23
>>622
コメントが意味分からないんだが、どうして欲しいんだ?
ついでにそれはメモ帳からデータを読み込むプログラムとは言わないだろw

624:デフォルトの名無しさん
08/06/26 16:07:41
>>622
どううまくいかないのか、期待したことと起きたことを明記してください。

625:622
08/06/26 16:34:45
期待したことは、
1がsに入り2がmに入って、それらが足し算されkaiに3が入り
3が出力されるというものです。
起きた事は
100と出力されました。

626:624
08/06/26 16:47:12
>>625
FileReader#read() は一文字(or一行?)を読むのではなく、1バイトを読み込みます。
”メモ帳の中のデータ”と言っている(おそらく)テキストファイルの先頭から1バイトづつです。
足す前に System.out.println("i="+i); 等と状況を表示する文を入れて実行し、どんな値が読み込まれているのか確認してみてください。
またどうしてそうなるのか、”メモ帳の中のデータ”をファイルダンプツールで見てみると良いでしょう。

627:デフォルトの名無しさん
08/06/26 16:49:32
>>625
URLリンク(e-words.jp)

sには最初'1'、つまり49が入る。
次に復帰改行で13、次に10が入る。
そして最後に'2'、つまり50が入る。

mも全く同じもの入れてるんだから、同じ。
つまり50+50=100が出力されてる。

628:デフォルトの名無しさん
08/06/26 17:36:11
>>626
>FileReader#read() は一文字(or一行?)を読むのではなく、1バイトを読み込みます。

これは非常に語弊があると思うんだけど。。

629:624
08/06/26 17:50:00
私の作成したのもがどのように振舞っているかは、良くわかりましたが、
どのように修正すれば良いかアウトラインが見えないので、
教えてください。

630:626
08/06/26 17:51:23
>>FileReader#read() は一文字(or一行?)を読むのではなく、1バイトを読み込みます。
>これは非常に語弊があると思うんだけど。。

そうでした、FileReaderは文字読みでした。
なので一行でも1バイトでもなく、一文字が正解です。ごめんなさい。

631:630
08/06/26 17:54:29
>>629
一行を文字列として読み込むというメソッドを持つクラスがあるので探してみてください。

632:デフォルトの名無しさん
08/06/26 18:07:56
>>622
繰り返しによって合計を取る方法(どう考えても基本です)をおさらいすることも重要かと。

ちなみに、mとかsというのは何かの略ですか?気になる。

633:624
08/06/26 18:08:04
>>631
ありがとう

634:デフォルトの名無しさん
08/06/26 18:52:03
スレリンク(tech板:259番)
このスレでちょっと出てたのをみて興味がわいたのですが、Javaで配列の要素側から、その要素を含む配列を取得することって出来ますか?

635:デフォルトの名無しさん
08/06/26 18:55:41
基本無理。その要素に、それを含む配列を持たせたらできるけどあほらしいし・・

636:デフォルトの名無しさん
08/06/26 19:18:47
質問なんですけど、夏にjavaプログラマのSJC-Pの試験を受けるため勉強してるんですが、
問題集しか購入してなく、用語の解説や流れなどのった教科書が欲しいところなのですが
お勧めの本とかないですか?友達がもってるSCCの教本見たら微妙だったんですよね。
問題集のほう「徹底攻略 Java2プログラマPlatform1.4」の黒本使ってます。
お勧めなどありましたら教えてください。


637:デフォルトの名無しさん
08/06/26 20:39:12
質問です。

Java システムアイコンを抽出 / Chat&Messenger
URLリンク(sattontanabe.blog86.fc2.com)

のサイトで、ウィンドウにドラッグドロップしたファイルのアイコンを取得する
サンプルプログラムが公開されているのですが、このプログラムでは
16*16サイズのアイコンを取得することしか出来ません。

Fileから32*32もしくはそれ以上のサイズのアイコンを取得する方法はありますか?

638:デフォルトの名無しさん
08/06/26 21:27:39
>>637
無理っす。

639:デフォルトの名無しさん
08/06/26 22:47:09
メソッド名の書き方について質問です。

メソッド名が長くなるので略して書きたいのですが、その場合大文字小文字の区別はどうするべきでしょうか?

例として
aaaaaBbbbbCcccccDdddd
というメソッド名を短くしてABCDという名前に略すのですが、これだと規約から外れてしまいます。
そこで
1.aBCD
2.abcd
3.aaaaaBbbbbCcccccDdddd(略すべきではない)
4.その他

どれがいいのでしょうか?

640:デフォルトの名無しさん
08/06/26 22:53:52
aaaaaBCDとか

641:使用書無しさん
08/06/26 23:00:45
netBeansとかいまどきのIDE使ったら自動補完してくれるので、後々の読みやすさ
考えたら略さないほうがいいと思うけど。

642:デフォルトの名無しさん
08/06/26 23:18:47
>>639
略し方すらわからなくて人に聞かなきゃいけないレベルなら略さない方が良いと思うぞ。

無意識のうちに>>639が望む回答するように情報隠してる可能性もあるし。
例えば、命名規約のルールだって全部出してるわけじゃないでしょ。

643:使用書無しさん
08/06/26 23:22:59
634<< 配列よりVectorつかったらどうだ。
class A {
      public B parent=null;
      public void setParent(B parent){
           this.parent=parent;
      }
      public B getParent(){
            return parent;
      }
}

class B extends Vector<A>{
      @override
      public void add( A child){
             child.setParent(this);
             super.add(child);
      }
     public void add(int index,A child){
             child.setParent(this);
             super.add(index,child);
     }
}
こんなもんかな。

644:デフォルトの名無しさん
08/06/26 23:43:35
>>639
長すぎるってのはクラスの設計が良くない兆候。
aaaaaBbbbbCcccccDdddd というメソッドが HogeManagerとかにあるんだろ、どうせ。
HogeAaaaBbbbクラスをつくり、ccccDdddってメソッドを作るような状況な筈

645:デフォルトの名無しさん
08/06/27 00:05:06
>>624
ファイルからのデータの読み取りにはcsv形式が便利(基本)。(「1,2」とか書いてtest.csvを準備。)
以下はCSVテキスト上で同じ行にある数値の合計を順次算出して別ファイルに集計する例
package javaapplication2;
import java.io.*;
import java.util.*;

public class Load {
public static void main(String[] args) {
//データ格納用Listの準備
List<String[]> list = new ArrayList<String[]>();

try {

FileReader fr =new FileReader("test.csv");
BufferedReader bf = new BufferedReader(fr);

String st = null;
while ((st = bf.readLine()) != null) {
String[] line = st.split(",");
list.add(line);//ファイル上1行の各数値を文字列として格納
}
bf.close();



646:デフォルトの名無しさん
08/06/27 00:05:38
//計算結果データ格納用Listの準備
List<Integer> result = new ArrayList<Integer>();
int sum = 0;
for(String[] values: list){
for(String value: values){
int num = Integer.parseInt(value);//文字列を数値型に変換
sum += num;//同じ配列内の値の合計値を求める
}
System.out.println(sum);
result.add(sum);//合計値を格納
sum = 0;
}

FileWriter fw = new FileWriter("result.csv");
PrintWriter pw = new PrintWriter(new BufferedWriter(fw));

for(Integer val: result){
pw.println(val);
}

pw.close();


}catch(IOException e) {
e.printStackTrace();
}
}
}

647:639
08/06/27 00:11:41
レスどうもです。
今iアプリを作成してて複数単語を繋げて長くなったら打つのが面倒だから略して書けないか?
その場合どうするべきか?というのを軽く疑問に思っただけだったので、変な例を出してしまいましたが、
それがいけなかったようですので実際に作っているのを出してみます。

ダーツゲームを作成しているのですが、ゲームルールとしてスーパー・ラウンド・ザ・クロックというのがあります。
ルールクラスの中にスーパー・ラウンド・ザ・クロックメソッド(SuperRoundTheClock)を作るのですが、
この場合どうするべきか?というのが知りたかったのです。

ちなみに、SuperRoundTheClockぐらい打てよ!というのは無しの方向で・・・。
より長いものが出てきた場合に参考にしておきたいので。

648:デフォルトの名無しさん
08/06/27 00:17:54
今どき補完できるエディタ使おうよ

649:使用書無しさん
08/06/27 00:19:47
>>647それjavaの質問というよりセンスの問題じゃねえ?
昔cobolやってたころなんか母音略して子音だけで名づけてたな
sprRndTheClckなんてな..

650:デフォルトの名無しさん
08/06/27 00:23:43
>>647
その場合、RuleクラスのサブクラスとしてSuperRoundTheClockRuleを作成するのが定石だと思う。
なので、メソッド名は同じになりオーバーライドすることになる。

651:デフォルトの名無しさん
08/06/27 00:28:29
>>647
頭字語で補完してくれるよ、最近のIDEは。
Eclipseの場合だと、sRTC で補完すると superRoundTheClock() が出てくる。
重複するものがなきゃもっと短かくてもOK。
あと、Javaではメソッド名の先頭は小文字な。

652:639
08/06/27 01:32:47
開発環境が固定されていないため(自宅と学校で学校の中でもいろんな場所でやってる)エディタ変更は厳しいです。
今は全マシンにインストールされてるエディタがあるのでそれを使っています。
今後は略さずに補完機能のあるエディタを使って開発する事がベストということですね。

>>650
上の例で突っ込まれそうな予感はしてましたが、突っ込まれてしまいました。
これはRuleクラスでメンバと抽象メソッドを作ればよいということでいいんでしょうか?




653:デフォルトの名無しさん
08/06/27 01:51:06
>>652
そのとおり。ストラテジーパターンで。
感覚は掴めていそうに見えるから、ググって実装例を見てみるといいと思う。

もっとも、ルールが2種類しかないとか言うなら、デザパタを適用するまでも無いけどね。

654:639
08/06/27 02:09:48
>>653
ルールは追加する予定ではいますが、時間の都合上、最悪superRound・・・だけというのも有り得ます。
が、勉強のためにそれでやってみようと思います。

655:デフォルトの名無しさん
08/06/27 06:32:30
>>635
ありがとうございます

656:デフォルトの名無しさん
08/06/27 15:32:50
JSFでSSLは実現できますか

657:デフォルトの名無しさん
08/06/27 16:09:57
JDBCのresultsetのgetObjectで取得したデータの
型を取得する方法をご教示ください。

やりたいことは
resultsetのgetObjectによって
取得されたデータで作成された
ArrayList内データをcsvに出力する汎用的な
メソッドを作成しています。

そのArrayList内のデータで、文字型なら「"」で
くくりたいと考えています。

public void createCSV(List table) {
 //tableはgetObjectで取得したデータが渡される。
 for (int r = 0; r < table.size(); r++) {
  List rec = (ArrayList)table.get(r);
  for( int c = 0; c < rec.size(); c++ ) {
  //ここでrec.get(c)のデータ型を知りたい。
 }
・・・
}

658:デフォルトの名無しさん
08/06/27 16:13:48
>>657
if (rec.get(c) instanceof String) {
...
} else {
...
}

659:デフォルトの名無しさん
08/06/27 16:15:55
getClass().getName()
の方が早くね

660:デフォルトの名無しさん
08/06/27 16:24:39
>>658-659
即レスでありがとうございます。
無事やりたいことができました。
勉強になりました。

661:デフォルトの名無しさん
08/06/27 22:55:13
少し前に為替レートの取得法を相談したものですが,URLConnectionをつかってそのサイトのデータ引き落としは上手く行きましたが、
やはりレートを秒単位でリアルタイム表示しているところはとる事が出来ず行き詰ってしまいました・・
何かいい案はないでしょうか?

662:デフォルトの名無しさん
08/06/27 23:17:54
クラス図での表現を教えてください。
(属性と操作は省略していいそうです)
そのクラス図がどのような現実世界の仕掛けを表現したものか
も教えてください。

Course Person Professor ShedcleOfClasses Section
Student Transcript TranscripEntry

663:661
08/06/27 23:44:49
すいません。いろいろ試した結果為替レートの取得できるようになりました。
申し訳ありませんでした

664:デフォルトの名無しさん
08/06/28 00:35:59
'else'への'if'がありません
ってどうすれば解決できるんでしょうか?

665:639
08/06/28 00:41:43
問題になってるif文をここに貼り付ければ?

666:デフォルトの名無しさん
08/06/28 00:42:51
ifまわりの括弧がおかしいとかだろうな

667:デフォルトの名無しさん
08/06/28 01:10:59
URLリンク(www.objectstart.com)
にある下から2番目のClick here to access a
Zip file containing the Java 1.5.x version
of source code for the second edition of BJO.
(This version of source code will not compile
with Java 1.4.x or earlier compilers.)
のファイルにあるCh14のCourse Person Professor
ShedcleOfClasses Section
Student Transcript TranscripEntry
のクラス図を教えてください


668:デフォルトの名無しさん
08/06/28 09:45:47
>>667
クラス図がどんなものか知ってて、ソースコードがあれば
他人に聞く必要のあることなんてこれっぽっちも無いと思うぞ。

描くのが面倒臭いのか?
もしそうなら、ソースからクラス図を吐き出すツールを作ればいいじゃない。

あとは、それくらいの発想なら世の優秀な兄者どもが
既に思いついてるんだろうな~って感じで、ググっちゃいなヨ。

↓はJudeっていうツールだけど、ソースからクラス図作成もできるので便利よ
URLリンク(jude.change-vision.com)

ちなみに ShedcleOfClasses じゃなくて ScheduleOfClasses ね

669:デフォルトの名無しさん
08/06/28 13:56:52
☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ毎日新聞社による日本人女性への誹謗中傷☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ

・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する

※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです

◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
 URLリンク(www9.atwiki.jp)
◆毎日新聞問題の情報集積wiki
 URLリンク(www8.atwiki.jp)

つまり日本国民は
URLリンク(www.vipper.net)

670:デフォルトの名無しさん
08/06/28 17:55:22
>>661
秒単位だとどうしてもソフトを間に挟むしかない
MT4などにDllフックするか優良サービスを得るか
URLリンク(www.dailyfx.com)
で動いてるアプレットからデータを取得するのが無難

671:デフォルトの名無しさん
08/06/28 18:03:12
てか
前に答えてあったな

672:デフォルトの名無しさん
08/06/28 18:13:48
670訂正
○有料
×優良
だね

673:デフォルトの名無しさん
08/06/28 21:11:44
mysqlで100mbのデータをソートしたいのですが
ResultSetのインスタンスを所得した時点でメモリ不足になりました

また、ヒープのサイズを512MBに設定し、
100mbのCSVをCollectionsのsortメゾットでsortしたのですが
これもまたメモリ不足になってしまいました。

大量データをソートする場合どのような手段をとればいいのでしょうか



674:デフォルトの名無しさん
08/06/28 22:36:31
マージソートの要領で、データ全体をメモリに入るサイズに分割して個別にソートし、最後にマージする

675:デフォルトの名無しさん
08/06/28 22:38:31
ゲームプログラミングで一般的にルールを破った場合というのは例外を投げ、それを対処すべきでしょうか?
それとも、毎度ルールに沿っているかチェックして対処すべきでしょうか?

676:デフォルトの名無しさん
08/06/28 22:39:45
入力された数字が一桁なら先頭に0をつけたすプログラムを書きたいのですが、
どうすればいいでしょうか・・・。
たとえば
6→06
としたいのです。
初歩的な質問過ぎてすいません。

677:デフォルトの名無しさん
08/06/28 22:44:06
int num;
...
String numtext = String.format("%02d",num);

678:デフォルトの名無しさん
08/06/28 23:27:15
URLリンク(www.objectstart.com)
にある下から2番目のClick here to access a
Zip file containing the Java 1.5.x version
of source code for the second edition of BJO.
(This version of source code will not compile
with Java 1.4.x or earlier compilers.)
のファイルにあるCh14のCourse Person Professor
SchedcleOfClasses Section
Student Transcript TranscripEntry
のクラス図を教えてください

679:デフォルトの名無しさん
08/06/28 23:53:53
javaでブラウザを作ってみたいのですが
SWTを使わずにGeckoエンジンを使った表示の方法はないでしょうか?

680:デフォルトの名無しさん
08/06/28 23:53:57
プロンプトでパラメータから年・月を受け取り、その「前月」「当月」「次月」の3ヶ月をコンソールに
出力するカレンダーにするにはどうしたらいいですか?
(要するに、2008、5と入力したら、4月、5月、6月の3か月分を出力する)

条件として、
・パラメータチェックメソッドを実装すること
ただし、同メソッド内にtry/catch句を記述してはいけない。
 (自前で数値チェックを実装する)

・mainメソッドはControllerとしてのみ使用すること。
(実際の作成/出力処理は別メソッドに実装すること)

助けてもらえたら幸いです、みなさんお願いします:;

681:デフォルトの名無しさん
08/06/29 00:02:03
>>679
Java Mozilla Html Parser

682:デフォルトの名無しさん
08/06/29 00:03:09
なんか最近勘違い君が多いけど、ここは宿題スレじゃないんだぜ

>どうしたらいいですか?

なんて曖昧な質問には、

プログラムしたらいいのでは?

としか答えようがないでしょ?

せめて、あたかも宿題じゃないかのようにぼかす配慮をした上で
どういうコードを書いたらどういうエラーがでた、位は書こうぜ

683:デフォルトの名無しさん
08/06/29 00:16:34
680です。
すいませんでした、ご指摘のとおり宿題スレに行きますね。

684:デフォルトの名無しさん
08/06/29 00:20:27

if(arg[0].equals("2008") && arg[1].equals("5")){
    System.out.println("2008年4月、2008年5月、2008年6月");
}else{
    System.out.println("自分でカレンダー見て");
}


685:679
08/06/29 00:24:20
>>681
解答ありがとうございます。
しかしパーサーじゃなくてレンダリングの方法をお願いしたかったのですが。。
XULRunnerやJavaXPCOMを見ていたのですが
SwingやAWTはなにやら無理なようなので他に方法はないでしょうか

686:デフォルトの名無しさん
08/06/29 00:40:36
URLリンク(java.sun.com)
J2SE SDK のダウンロードができないんです
Archiveのリンクも開けません
何故でしょうか?

687:デフォルトの名無しさん
08/06/29 00:52:04
>>679
これは?
URLリンク(jrex.mozdev.org)

688:デフォルトの名無しさん
08/06/29 00:53:30
>>673
100MB(合計だよね?)のデータを読み込めて、同程度の作業領域を確保出来るだけのメモリがあるんだから、
適当にin-placeなソートでもすればいいと思うよ

お勧めは、multikey quicksort, msd/lsd radix sort, bucket sortあたり
どのソートアルゴリズムを利用すべきかは、データ構造によるところが大きいので適宜選択のこと

689:デフォルトの名無しさん
08/06/29 00:57:03
>>682
話に加われるだけのレベルをつけてからおいで

690:デフォルトの名無しさん
08/06/29 01:15:20
>レベルをつけてから
>レベルをつけてから
>レベルをつけてから
>レベルをつけてから
>レベルをつけてから
>レベルをつけてから

691:デフォルトの名無しさん
08/06/29 01:22:41
>>689
あんたは会話が成立するレベルの日本語を
操れるだけの能力を身につけてから出直しておいで。


692:デフォルトの名無しさん
08/06/29 01:48:08
>>691
偉そうに言いながら「ら」抜き日本語かよww
正しくは「操られる」だろ
おまえこそまともな日本語使えよなww

693:デフォルトの名無しさん
08/06/29 01:55:52
>>692
ねーよ

694:デフォルトの名無しさん
08/06/29 01:57:52
int型のポインタを関数の引数に渡して、引数に、なんか値を戻してやる、
・・・って感じのこと、javaは、できないのか?

695:デフォルトの名無しさん
08/06/29 02:00:44
最近のJavaって終末感漂ってるよね
10年前の輝きは何だったんだろうね
新しい言語の説明ってどれもJavaの悪い部分との比較だったりするし
Cみたいに恒常的に長生きする言語でもないし

696:デフォルトの名無しさん
08/06/29 02:06:37
>>695
今、一番輝いてる言語ってなに?

697:デフォルトの名無しさん
08/06/29 02:07:00
>>695
他のツールが生き残らなかったから、javaと比較するしかないって?
それ程の勢力じゃないだろう。

698:デフォルトの名無しさん
08/06/29 02:07:52
>>673
ResultSet.TYPE_SCROLL_INSENSITIVE や ResultSet.TYPE_SCROLL_SENSITIVE を指定してないか?
それ、インメモリで処理するからメモリを馬鹿食いするはず。
ResultSet.TYPE_FORWARD_ONLY で解決しない?

699:デフォルトの名無しさん
08/06/29 02:09:00
>>686
よくわからんが、英語版の画面に切り替えれば、1.4.2_17 ならダウンロードできたぞ。

700:デフォルトの名無しさん
08/06/29 02:09:23
>>694
できない。どうしてもやりたいなら、クラスに包んで渡してやる必要がある

701:デフォルトの名無しさん
08/06/29 02:12:38
>>699
ありがとうございます。
目当てのバージョンをダウンロードできました。


702:デフォルトの名無しさん
08/06/29 02:16:18
>>694
void callee(int[] x) { x[0] = 100; }
void caller() { int[] x = new int[1]; callee(x); System.out.println(x[0]); }
滅多にこんなことしないけどなー。// 適切にクラス設計すればまず出番がない。全くないとは言わんが。

703:デフォルトの名無しさん
08/06/29 08:56:56
691 名前: デフォルトの名無しさん [sage] 投稿日: 2008/06/29(日) 01:22:41
>>689
あんたは会話が成立するレベルの日本語を
操れるだけの能力を身につけてから出直しておいで。

692 名前: デフォルトの名無しさん 投稿日: 2008/06/29(日) 01:48:08
>>691
偉そうに言いながら「ら」抜き日本語かよww
正しくは「操られる」だろ
おまえこそまともな日本語使えよなww


★「操れる」は「ら抜き言葉」じゃないだろ。
★「食べれる」なら「ら抜き言葉」だから間違ってるが、「操れる」は正しい日本語だよ
★「操れる」=操ることができる
★「操られる」=誰かが自分を操っている


704:デフォルトの名無しさん
08/06/29 09:13:07
しつけえ

705:デフォルトの名無しさん
08/06/29 14:49:55
超初心者で申しあけございませんが、
画像を複数枚表示させたら画像がちらつきます。
repain();でもちらつきます。
どのワードを打ったら常にはり絵でいられるでしょうか?

マルチですけど応答がないのでこちらに質問します。

706:r545
08/06/29 15:21:55
超初心者ですが、質問があります。

Cで言う構造体は、Javaではどのように定義すれば良いですか?以下のやつだと
どうなるか教えてください。

typedef struct cell { // セル構造体
char *key ; // 格納されたキー
int next ; // 次のセル(同族のキー)
} CELL;

 typedef struct bucket { // バケット構造体
int Bdepth ; // バケットのビット長
int nkeys ; // バケットに格納されているキーの個数
CELL cell[BSIZE] ; // キーを格納するハッシュテーブル
} BUCKET;

 typedef struct directory { // ディレクトリー構造体
BUCKET *ref ; // バケットへのポインタ
} DIRECTORY;



707:デフォルトの名無しさん
08/06/29 15:31:52
>>706
class Cell {
 String key;
 int next;
}
class Bucket {
 int Bdepth;
 int nkeys;
 Cell[] cell = new Cell[BSIZE];
}
class Dictionary {
 Bucket bucket;
}

708:r545
08/06/29 15:52:20
どうもありがとうございます。

3つのクラスファイルにした方が良いんですか?それとも、メインを含めて全部
まとめた方が良いですか?

あと、classの前にpublicはいらないんですが?

709:デフォルトの名無しさん
08/06/29 15:55:36
>>708
publicなクラスはファイルを分ける必要がある。
そうじゃない場合まとめて書いても良い。
publicにするかどうかは用途による。

710:r545
08/06/29 16:04:35
709>>

Cで書かれたプログラムをJavaで書き直せっていう課題が出てて、Cで構造体が使われて
いるんですよ。難しいです。。もし良かったら、
URLリンク(rg550.hp.infoseek.co.jp)
にのせてあるんで見てもらえますか?

711:デフォルトの名無しさん
08/06/29 16:14:29
そういう課題ってどこで出るの?
高校?専門?大学?

712:デフォルトの名無しさん
08/06/29 16:18:43
質問です。
次のような、タブペインに、newでインスタンスとして生成したラベルlabelをタブの数だけ配置するプログラムがあります。

public class TabbedPaneSample1 {
JLabel label;
public TabbedPaneSample1() {
JFrame frame = new JFrame("TabbedPane Sample");
JTabbedPane pane = new JTabbedPane();
for (int i = 0; i < 5; i++) {
label = new JLabel("Tab" + i);
pane.addTab("Tab " + i, label);
}
frame.add(pane);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
frame.setVisible(true);
}

public static void main(String[] args) {
new TabbedPaneSample1();
}
}

ボタンを押すなどしたときに「現在表示中の」ラベルの内容を書き換えるにはどうしたらいいでしょうか?
label.settext("A");などでは一番最後に貼り付けたラベルにメソッドが働いてしまうようです。

タブペインのgetSelectedComponent();メソッドでコンポーネントは取得できるようなのですが、
コンポーネントからそのメソッドを呼び出せるものなのでしょうか?

タブの数は不定なので、あらかじめラベルを用意しておく事は出来そうにないです。

713:デフォルトの名無しさん
08/06/29 16:21:36
>>710
つかロダのリストのどれやねん(笑

見た感じ直訳するか意訳するかがポイントかね。
コレクション使って書き直すか、Cのロジックでやってる部分をそのまま使うか。
そのまま直訳するならポインタをどう扱うかがポイントで、
意訳するなら処理の内容を理解してないと辛いかな。ソースは短くなると思うけど。

714:デフォルトの名無しさん
08/06/29 16:28:56
>>712
取得したコンポーネントをLabelでキャストしたらいいんじゃね?

715:デフォルトの名無しさん
08/06/29 16:40:16
>>714
キャストで出来ました!即答ありがとうございます

716:r545
08/06/29 16:51:55
713>>
すいません!課題は大学で出ました。
ロダの306.txtと310.txtと311.txtです。
Cプログラムをただ単にJavaに書き直せと言うことだそうです。
オブジェクト指向の考えはしなくて良いので全てまとめて良いらしいですが。
Javaは勉強中でして、ちょっと出来る気がしないので見てもらえますか?
よろしくお願いします

717:デフォルトの名無しさん
08/06/29 17:14:38
>>716
宿題スレじゃないからな、わからんとこだけワンポイントで質問しなされ

718:デフォルトの名無しさん
08/06/29 17:21:36
CとJava同時にやるとかおもしろいなぁ・・

719:デフォルトの名無しさん
08/06/29 19:46:05
つーかCをJavaのコードに直せとか
典型的なダメ教育だよな

720:デフォルトの名無しさん
08/06/29 19:49:33
逆にバリバリのオブジェクト指向で書いたjavaのコードをCに直させたら勉強になるかも

721:デフォルトの名無しさん
08/06/29 20:55:16
それJNI書くのと一緒じゃね

722:デフォルトの名無しさん
08/06/29 21:28:42
ナンダッテ?

723:r545
08/06/29 21:32:09
717>>

すいません。。

せめて、メイン関数だけJavaに直したのを教えてもらいたいんですが。。
少しづつやってるのですが不安で。残りはは、自分でやるので。

724:デフォルトの名無しさん
08/06/29 21:45:50
>>719-720
変な癖が付きそうで怖い。

725:デフォルトの名無しさん
08/06/29 21:58:55
Cでオブジェクト指向みたいなことをやってるのって、
GKT+あたりかな。

726:デフォルトの名無しさん
08/06/29 21:59:08
>>723
そもそもどっちかの言語をある程度使える状況になってからやる課題。
おまえさんには多分無理ということであきらめた方がいい

727:デフォルトの名無しさん
08/06/29 22:00:31
>>716
Cは読めるのか?
読めるならばどの部分がJavaに変換できないのかを質問してくれ

728:r545
08/06/29 22:24:22
727>>

Cは読めます。Cのメインは自分で作ったので。
メインが分らないんですが。。少しずつやってるんですけど。



729:デフォルトの名無しさん
08/06/29 22:32:25
質問です。
今、フルスクリーンとウィンドウを切り替えるようなものを作ろうとしているのですが
描画にはBufferStrategyでgetDrawGrapicsしたものを使用しています。

フルスクリーンからウィンドウに切り替える場合、ウィンドウにはなるものの
BufferStrategyがnullになってしまい描画処理が行えないという状況になりました。
少々強引ですが、runの頭でgetStrategyをし取得を試みたのですが上手くいきませんでした。

ウィンドウからフルスクリーンに切り替える場合setUndecoratedが実行できず
setUndecoratedを実行しないで切り替えると上と恐らく同じ理由で描画処理が行えませんでした。
もちろん、setUndecoratedにtrueを渡してフルスクリーンにしたいので
setUndecoratedを実行しないということはできればしたくありません。

よろしくお願いします。

730:デフォルトの名無しさん
08/06/29 22:37:07
>>728
メインの何処が分からないのかと

731:デフォルトの名無しさん
08/06/29 22:40:30
聞いてると
分からない所が分からない人なんじゃないのかなこの人

732:名無し
08/06/29 23:03:44
javaの影響でyoutubeが見れなくなってしまったんですが、どうすれば見れるようになりますか?
教えてください(>_<)

733:デフォルトの名無しさん
08/06/29 23:09:28
>>728
意地悪してるわけじゃないけど君の質問の仕方では答えのしようがないよ
きっと自分で何が分からないのかが分かってないんだと思うけど
そういう状態で人に物を聞くのは失礼というものですよ
社会に出る前にその癖を直したほうがいい

734:r545
08/06/29 23:22:06
728 731 733

すいません。遅れました。。

メインの変数定義からファイルを読み込むまでです。
int main (void){
FILE *fp; //ファイルポインタ宣言
char *a[HSIZE]; //格納用配列
int i; //ループ変数
char inv[100]; //入力値
char infile[80]="wordE100KR.dat";
double sec;
clock_t start, end;
DIRECTORY *directory;
int depth = 2; //バケットの深さ

if((fp = fopen(infile,"r")) == 0){
printf("ファイルオープンできません。\n");
exit(0);
}
i = 0; //初期化ループ変数初期化
while(fscanf(fp, "%s\n", inv) != EOF){ //キーの読込み
a[i] = strdup(inv); //ポインタ配列にデータを格納する.
printf("%s\n",a[i]);
i++;
if(i >= HSIZE)
break;
}
fclose(fp);//ファイルクローズ




735:r545
08/06/29 23:23:34
734をJavaにすると↓

public static void main(String args[]){

String a[]=new String[HSIZE];
String inv[]=new String[100];
int i;
double second;
clock_t start, end;
DIRECTORY[] directory;
int depth = 2;

i=0;

try{

BufferedReader f=
new BufferedReader(new FileReader("wordE100KR.dat"));
while((inv=f.readLine())!=null){
a[i] = inv;
System.out.println(a[i]);
i++;
if( i>= HSIZE)
break;
}
f.close();
}catch(FileNotFoundException e1){
System.out.println("NO File");
}catch(IOException e2){
System.out.println("Can not Open");
}


736:r545
08/06/29 23:24:14
合ってますか?

737:デフォルトの名無しさん
08/06/29 23:27:03
聞く前に試したら?
と言わざるを得ない

738:デフォルトの名無しさん
08/06/29 23:38:32
まぁファイル読み込みぐらい調べればすぐできるしな・・
次からが問題だなぁ

739:r545
08/06/30 00:44:08
737>>

動かしたんですが、警告は無視しても平気ですか。エラーは5個でたんですが。。
public class HashExtend {

static final int HM = 1048583; // 擬似キー生成時にハッシュ関数へ渡す素数
static final int BSIZE = 100; // バケットの容量
static final int BPOS_MAX = 100; // バケットの占有率上限での容量
static final int BPOS_MIN = 50; // バケットの占有率下限での容量
static final int BHM = 97; // セル格納時にハッシュ関数へ渡す
static final int BC = 29; //セル格納時に衝突した場合のハッシュの増分
static final int HSIZE = 100000;//配列のサイズ

上のコメント分が
警告: この文字は、エンコーディング MS932 にマップできません。

のように出るのですが。。

740:デフォルトの名無しさん
08/06/30 00:49:05
>>739
そりゃエディタの文字コードの設定か何かがおかしいだけ。
Windowsのメモ帳でソースを開いてみて、おかしいところが何とかして直すんだ。


741:r545
08/06/30 01:18:45
TeraPad でやってるんですが。

文字コードがSHFT-JISになっています。。分んないです。。



742:r545
08/06/30 03:29:22
740>>

すいません。解決できました。
しかし、次の問題が。。

HashExtend.java:46: 互換性のない型
検出値 : java.lang.String
期待値 : java.lang.String[]
while((inv = f.readLine())!=null){
^
HashExtend.java:47: 互換性のない型
検出値 : java.lang.String[]
期待値 : java.lang.String
a[i] = inv;
このエラーって、何ですか?invがString型になってないってことですか?



743:デフォルトの名無しさん
08/06/30 04:16:31
>>742
f.readLine() は String を戻すのであって String[] を戻すのではない。
BufferedReader を使ってファイルの読み込みをする場合、普通は

String line;
while ((line = f.readLine()) != null) {
System.out.println(line);
}

こんな感じ。

744:r545
08/06/30 06:00:29
742>>

どうもありがとうございます!!!Cと違って代入する方は
配列にしなくても良いってことですか?

String inv[]=new String[100];は

String inv;

にしてファイルを読み込みさせれば良いんですよね?
これならエラーは取れました!





745:デフォルトの名無しさん
08/06/30 06:30:31
>>744
URLリンク(java.sun.com)()
C言語が最低限理解出来てるならこれ見れば分かるだろ。

746:デフォルトの名無しさん
08/06/30 12:43:52
JSF&SSLの件有難うございました
何とかWeb.xmlをいじる方法で解決しました

747:デフォルトの名無しさん
08/06/30 16:11:27
最近JDK14→15になったのでGenericsで躓いています。
単体テストでフィールド変数の中身の確認が必要になり、


748:デフォルトの名無しさん
08/06/30 16:15:59
すみません途中で送ってしまいました。
単体対象クラスをTestというクラスだとすると

Class<? extends Test> cl = test.getClass();
Field fd = cl.getDeclaredField("fieldObjName");
Object obj = fd.get(test);

このfieldObjNameはtestの中にあるHashMap型の変数で、これが
Testクラスの持つclearメソッドでclearされていることを確認したいのですが、
ここからobjをHashMapに持っていく方法が分かりません。
そのままキャストすると勿論叱られます。
よろしくお願いいたします。

749:デフォルトの名無しさん
08/06/30 16:35:45
>>748
なんて言って叱られるの?

750:デフォルトの名無しさん
08/06/30 16:59:53
Java

751:747-748
08/06/30 17:03:08
Type safety: Unchecked cast from Object to HashMap<String,ResultSetMetaData>

ObjectからHashMapへの未検査キャストを叱られているのだと思います。
単体テスト用テストケースの中で、clear前はこのフィールドがcontainsKeyで
与えられたキーのオブジェクトを持っており、clear後は持っていないことを確認する
つもりだったのですが。
どうしたらいいんだろう。

752:デフォルトの名無しさん
08/06/30 17:10:19
>>751
Object から総称型へのキャストは怒られる。

警告つきでもいいならコンパイルオプションで -Xlint:unchecked つければコンパイルは通る。
警告抑止したいならメソッドにアノテーション @SuppressWarnings("unchecked") つけろ。

753:デフォルトの名無しさん
08/06/30 17:18:03
>>751
HashMap<String,ResultSetMetaData>にキャストしようとするから警告が出ているのね。
使い方としておかしいんだろうけど、それでも動くし、
HashMapにキャストする分には警告も出ないのでは?

754:747-748
08/06/30 17:47:25
>>752>>753
ありがとうございます。
やっぱりこの場合は警告無視するしかないんでしょうか。
例えばinstanceofとかでobjectがhashMapのインスタンスであることを確認するとか
なにかそういうような必要な手順があって、それをすれば叱られなくなるのかと思ってました。

ちなみにただのHashMapにキャストしようとすると警告が増えますw
HashMap は raw 型です。 総称型 HashMap<K,V> への参照は、パラメーター化する必要があります

とりあえず@SuppressWarnings付けて逃げました。
どうもありがとうございました。
もう少し頑張ってGenerics勉強します。

755:デフォルトの名無しさん
08/06/30 17:47:33
>>751
HashMap<?,?> にならキャストできるはず

756:デフォルトの名無しさん
08/06/30 17:52:02
もう終わったらしいよ

757:デフォルトの名無しさん
08/06/30 17:57:13
らしいね
無駄な労力になったが、まぁ暇潰しだし

758:747-748
08/06/30 18:00:52
>>755
うぉぉぉぉぉぉぉぉぉホントだー!ありがとうございます!!
なんでなんだろう奥が深すぎる_| ̄|〇

759:デフォルトの名無しさん
08/06/30 18:19:58
>>754
> HashMap は raw 型です。 総称型 HashMap<K,V> への参照は、パラメーター化する必要があります
それは、GenericじゃないHashMapに何かを詰めようとしているからでは?
クリアを確認したいと言う話だったような・・・?

760:747-748
08/06/30 19:27:31
fd.get(test)でアクセスしようとしているprivateフィールドfieldObjNameは、
HashMap<String,ResultSetMetaData>が本来の型なんですが。

1)
HashMap<String,ResultSetMetaData> hoge =
(HashMap<String,ResultSetMetaData>)fd.get(test);
→Type safety: Unchecked cast ~と叱られる

2)
HashMap hoge = (HashMap)fd.get(test);
→HashMap は raw 型です。 総称型 HashMap<K,V> への~と叱られる

3)
HashMap<?, ?> hoge = (HashMap<?, ?>)fd.get(test);
→おっけー!\(^o^)/


かくして3)の後、test.clearして、hoge.containsKeyがfalseになることを
確認できました。
いろいろ教えていただいて本当にありがとうございました。

761:デフォルトの名無しさん
08/06/30 22:46:01
質問っす
javaからphpにデータを送ろうとしていて、うまくphpにデータを送信できずこまってます
環境 ローカル
php環境 Apach2
String data = "data=1";
URL cgiURL=null;
try {
//URLの生成
try{
cgiURL = new URL("URLリンク(localhost)");
}catch(MalformedURLException e){
e.printStackTrace();
}
//設定
HttpURLConnection uc = (HttpURLConnection)cgiURL.openConnection();
uc.setRequestMethod("GET");
uc.setDoOutput(true);
uc.setUseCaches(false);
uc.setAllowUserInteraction(false);
// CGIへの書き込み用ストリームを開く
OutputStreamWriter pw = new OutputStreamWriter( uc.getOutputStream() );
// CGIにデータを送信する
pw.write(data);
// ストリームを閉じる
pw.flush();
pw.close();
}catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
apacheのログデータをみてみると、アクセスログさえのこっていません.php単体では動作するのですがなぜかjavaからphpにはできませんでしたどういう問題点があるのでしょうかご教授ください

762:>>761
08/06/30 22:47:08
エラーはとくにありませんでした

763:デフォルトの名無しさん
08/06/30 23:10:00
>>761
connect() をしていない所為か?

764:デフォルトの名無しさん
08/06/30 23:30:16
>>761
GETでDoOutputは有り得ない。


765:r545
08/06/30 23:57:58
以下のCをJavaにすると、mallocの領域確保のところはどうやって
表すのですか??調べたらnewを使うってのが出たんですが、使い方が分らない
です。。

// 入力引数: depth : ディレクトリのビット長
// 戻り値 DIRECTORY : ディレクトリ
DIRECTORY *create_directory(int depth) {
DIRECTORY *directory ;
directory = (DIRECTORY *)malloc(sizeof(DIRECTORY) * (unsigned int)pow(2, depth)) ; // 2のべき乗倍の領域を確保
if (directory == NULL) {
fprintf(stderr, "領域確報に失敗しました\n\n") ;
exit(EXIT_FAILURE) ;
}
return directory;
}


766:デフォルトの名無しさん
08/07/01 00:00:43
アプレットを使って定義した範囲での座標の取得の仕方は分かるんですが、アプレット以外の時はどうすればいいのでしょうか?

画面左上から(x,y)の地点にマウスカーソルがある。みたいなプログラムを作りたいです。
(簡単に言うとペイントの右下に表示されるようなのの全画面ver)

このクラスを使えばできる。みたいな感じで良いので教えてください。


767:デフォルトの名無しさん
08/07/01 00:05:38
>>765
JavaとCは違うんだから無理なこと考えるな
何をするプログラムでそれを満たすような実装であることが重要なだけ
先にやさしいJavaでも読んでから出直せ

768:デフォルトの名無しさん
08/07/01 00:15:37
>>765
Cのことは忘れて1からjava勉強しろ。考え方が違うから、それをJavaに1:1マッピングできたところで意味がない。

769:>>761
08/07/01 00:30:32
>>764

すみません、POSTの間違いでした
POSTでも結果はかわりません

connect() 
は参考サイトもしてなかったのでしてないです
しても結果はかわりませんでした

770:>>761
08/07/01 00:32:59
swingでウィンドウつくってやってるのでアプレットではないです
もしかしてそこらへんで通信できないのでしょうか

771:デフォルトの名無しさん
08/07/01 01:15:46
>>765
コードの意味を考えようよ。
pow(2,depth)個のDIRECTORYの場所を用意しているだけでしょ?


772:デフォルトの名無しさん
08/07/01 01:25:12
>>765
その宿題はJavaで明示的にメモリを管理させようとしてるの?
それとも結果が同じならOKなの?

コテハンつけてても一々過去のレスさかのぼって見ないんだから
宿題なら宿題である事と出題者の意図をださなきゃ答え様がないよ

773:デフォルトの名無しさん
08/07/01 02:43:47
イテレータとコレクションに関する質問です.

クラスHogeCollectionはgetFoos()でiteratorを返すのですが,

HogeCollection h = new HogeCollection();
h.add( new Foo() );

for(Iterator<Foo> it = h.getFoos(); it.hasNext(); ){
 Foo f = it.next();
}

h.getFoo()の部分で
"型の安全性:型Iteratorの式は、未検査の型変換を使用して
Iterator<Foo>に準拠するようにする必要があります。"
という警告がでます.

かといって
HogeCollection<Foo> h = new HogeCollection<Foo>();
とすると
"型HogeCollectionは総称ではありません。引数<Foo>でパラメータ化できません。"
とエラーになります.

LinkedList<E>クラスのときはできました.

LinkedList<Integer> l = new LinkedList<Integer>();
l.add(1);
for (Iterator<Integer> it = l.iterator(); it.hasNext();)
 System.out.println(it.next());

HogeCollectionの場合,どうすれば正しい構文になるのでしょうか.
Eclipse, JavaSE6です.

774:デフォルトの名無しさん
08/07/01 06:48:49
>>773

簡単な順に、

getFoos()の戻りがIterator<Foo>になるよう実装する。
中身ができてるなら、受け取った後でキャストするだけでもいい。


または、

HogeCollection implements Itarable<Foo> として、実装する。
この場合、イテレタの取得はiterator()で。


または、

HogeCollectionを総称化して、
HogeCollection<E> implementes Itarable<E> として実装する。
この場合、宣言と生成時は
HogeCollection<Foo> h= new HogeCollection<Foo>();
イテレタ取得は iterator();



Collection<E>を実装しないなら、HogeCollectionという命名がすでに紛らわしい。

総称の連鎖は面倒みてるときりがないので、どっかでキャストで断ち切るのも大事。

775:デフォルトの名無しさん
08/07/01 08:42:59
>>774
アドバイスありがとうございます.
あと出しのような形になってしまい,大変申し訳ないです.

そのHogeCollectionやgetFoos()は外部の(オープンソース?というのかはわかりませんが)
jarファイルに入っていたAPIを使っていまして,私がソースを改変するのは避けたいです.

方法1,2,3もすべて外部jarのソースをいじる必要がありますよね?

>Collection<E>を実装しないなら、HogeCollectionという命名がすでに紛らわしい。

私もそう思います.iteratorを得るメソッドもiterator()になってないですし.

>>752さんのレス見て
@SuppressWarnings("unchecked")で警告は消せますが,根本的な解決になっていなくて,
少し気持ち悪いですが,あきらめるしかないでしょうか.


776:デフォルトの名無しさん
08/07/01 08:52:40
そーゆー手が出せない(出したくない)状況で妥協するための方法だから、
@SuppressWarningsで回避しとくのだ妥当かと。


777:デフォルトの名無しさん
08/07/01 11:20:50
Iterator<?> it = h.getFoos()

778:デフォルトの名無しさん
08/07/01 20:49:41
皆さんにお聞きしたいのですが、さっき始めてJavaをダウンロードして環境変数を変えようと思ったら、環境変数の欄がありませんでした。
どうやって変えるか教えてください。
OSはXPでJavaはバージョン6です。

779:デフォルトの名無しさん
08/07/01 20:56:22
>>778
path?
コントロールパネル→システム→環境変数
あれば編集、なければ新規で作れば良いよ。

780:デフォルトの名無しさん
08/07/01 21:03:07
>>779
アリガトウございました。
解決しました。

781:デフォルトの名無しさん
08/07/01 22:15:56
先日質問に来た者です。
フルスクリーンとウィンドウの切り替えはなんとなくできるようになったのですが
なんだかできたりできなかったりとイマイチ安定しません。
そこで助言をいただきたいと思いました。

URLリンク(rg550.hp.infoseek.co.jp)
325です。

よろしくお願いします。

782:デフォルトの名無しさん
08/07/01 22:45:37
>>781
とりあえず、
> private boolean isFullScreenMode=true;
と言うのは合ってるの?

783:デフォルトの名無しさん
08/07/01 23:17:18
>>782
最初をウィンドウにするかフルスクリーンにするかというところなので問題ないはずです。
切り替え自体ができたりできなかったりという状況なのでそれぞれの状態での動作は問題ない
はずなのですが・・・。

784:デフォルトの名無しさん
08/07/01 23:25:43
安定しないのは仕方ないような気もするな
グラフィックボードに依存しちゃう処理だろうし

個人的には・・・
起動時にパラメータでフルスクリーンかどうかで起動方法を変えるほうが良いと思う。
もしくは起動時に起動モードを選択するパネルだけ出して、その後メインフレームをどっちかのモードで起動かね。

785:デフォルトの名無しさん
08/07/01 23:30:29
安定させたいならJOGL+AWTが良い

786:デフォルトの名無しさん
08/07/01 23:39:03
JOGLって3Dで使うもんだーって聞いていたのでよくわからないのですが
OpenGLの利用なんてまだ先な気がするので起動時のパラメーターで切り替えるようにしようかと思います。
切り替え自体はオマケみたいなもんだとわりきってみます・・・

787:デフォルトの名無しさん
08/07/01 23:50:28
>>783
キーイベントとrun()に
synchronized(bufferStrategy){
をかけてやると安定するだろうか?


788:デフォルトの名無しさん
08/07/02 07:01:33
BigDecimalでの値を、小数点以下を切り上げる方法って
あるんでしょうか?
Math.ceilメソッドに当たるメソッドってないですよね。
BigDecimal bd = new BigDecimal(10000.1)

結果が10001.0になるようにしたいのですが・・・。
ご教示お願いいたします。


789:デフォルトの名無しさん
08/07/02 07:24:51
setScaleでモード指定して1で割れば?

790:デフォルトの名無しさん
08/07/02 10:00:42
>>788
bd.setScale(0, RoundingMode.CEILING)

791:デフォルトの名無しさん
08/07/02 11:09:06
ヒントありましたら教えてください。
Swing で JTable に RowSorter を設定してソートしてますが、
ソート対象の列のヘッダに「▲」「▼」というソート対象&方向を示す
マークが付くのを止めたいのです。
列幅がぎりぎりなのでマークが付くとヘッダ文字列が省略されてしまって…。
どうやったら出来るものなのか(プロパティ設定するだけとか
レンダラ作ってなにかメソッド無効化しろとか)情報ありましたら教えてください。

792:デフォルトの名無しさん
08/07/02 11:34:16
教えてください。
現在の日付の前日を求めたいのですがどうしたらよいでしょうか?

793:デフォルトの名無しさん
08/07/02 11:53:13
ほい
URLリンク(sasuke.main.jp)

794:デフォルトの名無しさん
08/07/02 12:36:55
>>793
ありがとうございます!

795:デフォルトの名無しさん
08/07/02 15:15:16
>>794
これくらいぐぐれるようにならないとだめだぜべいびー

796:デフォルトの名無しさん
08/07/02 15:36:13
javaアプレットを作ろうとeclipseをインスコしたんですが、参考にしているサイトに載っているgetImageメソッドが使えませんでした。
仕方がないのでNetBeanでも試してみましたが、こちらでも使えなくて困ってます。
swingのImageIConも使えないので何かアプレット用の設定が必要なのだろうとは思いますが、調べてもわからないのです。

一体どのような設定が必要なのでしょうか…

797:デフォルトの名無しさん
08/07/02 15:38:36
参考にしているサイトでわかるとおもうか?
リンクぐらいつけれw

798:デフォルトの名無しさん
08/07/02 15:44:31
一応、参考にしているサイトはここなんですが、eclipseの使い方に関してはノータッチなのです。
URLリンク(wisdom.sakura.ne.jp)
import java.applet.Applet すればいいと思ってたんですが、違うんでしょうか…

799:デフォルトの名無しさん
08/07/02 15:58:38
>>798
どれよw

800:デフォルトの名無しさん
08/07/02 16:09:51
うわ、自己解決でけた!
class宣言にextends Applet無かったです…

801:デフォルトの名無しさん
08/07/02 17:10:12
>>89
無理やり抜くの痛そう、くしゃみ出る
普通にはさみで切ればいいさ
なんかシェーバーみたいなので切るやつあるけどアフロ山田読んでしまったせいで怖くて手が出せないぜw

802::デフォルトの名無しさん
08/07/02 23:43:45
お絵かきチャットをやろうとしたら「javaがインストールされていません。」とでて、出来ません。
最新のjavaはインストールしております。

インターネットオプションのセキュリティで「java アプレットのスクリプト」
「アクティブ スクリプト」「スクリプトの貼り付け処理による許可」を有効にしてます。

詳細設定でjavaの使用を設定してますが、
javaVM、MicrosoftVMというものはありませんでした。



インターネットセキュリティはNorton360を使っています。
ファイアウォールのプログラムルールでのjuschedは許可してます。

インターネットで色々調べたところ
javaが無効で、javaスクリプトは有効でした。


javaを有効にするにはどうすればいいでしょうか。


803::デフォルトの名無しさん
08/07/02 23:50:43
すみません。スレ間違いました

804:デフォルトの名無しさん
08/07/02 23:54:24
もし知ってる人がいたら教えてください
ActiveObjectsっていうORマッパなんですが
複合主キー使えるんでしょうか?

805:788
08/07/03 00:35:34
>>789
>>790
ありがとうございます。
setScaleメソッドを使えばよかったんですね。
気付かなかった・・・不覚。

806:デフォルトの名無しさん
08/07/03 01:46:16
>>804
こっちで聞くが吉
スレリンク(tech板)

807:デフォルトの名無しさん
08/07/03 13:01:25
インターネット一時ファイルは通常のファイルとは異なる扱いですか。

一時ファイルに対して
FILEのインスタンスを生成しようとしたらFile Not Foundとなってしまいました。

生成する方法はあるのでしょうか?

808:デフォルトの名無しさん
08/07/03 15:01:13
>>807
そこにあるのは見せかけ?だけで実体のファイルは別の所にある。
File#list()で一時ファイルのディレクトリ一覧を見ると実際の構造が分かると思う。

で、具体的に一時ファイルがあるのは直下のContent.IE5ってところだけど、
このディレクトリは一時ファイルのディレクトリに表示されない。
なので直接アドレスバーに\Temporary Internet Files\Content.IE5って続けて書いてアクセスする。プログラムから参照する場合も同様に。

809:デフォルトの名無しさん
08/07/03 15:55:35
例外クラスの大元であるExceptionクラスのサブクラスを作りたいときに
あなたが定義したほうがよいものを記述せよ、という問があるのだが
ぶっちゃけよくわからん
優しく教えて欲しいなり

810:デフォルトの名無しさん
08/07/03 16:27:04
その問は間違っている
例外クラスの大元は Throwable だ

811:デフォルトの名無しさん
08/07/03 17:55:06
その例外クラスを投げるクラスの目的によって違うだろ。

812:デフォルトの名無しさん
08/07/03 18:06:37
>>808

ありがとうございます。
無事目的の動作をさせることができました。

list()も使って確認してみました。
そういう構成になってたんですね。

813:デフォルトの名無しさん
08/07/03 18:56:03
>>809
問題の定義自体があいまい過ぎ

814:デフォルトの名無しさん
08/07/03 18:58:21
>>809
問題があってそれに対する独自の例外クラスを作るとかじゃないのか・・
好きなの作れと言われても漠然としてるなぁ

815:デフォルトの名無しさん
08/07/03 19:04:56
>>814
809ですがその通りなんです。問題文がこれで全てのためあいまい過ぎて
途方にくれてる状態です

816:デフォルトの名無しさん
08/07/03 19:22:54
URLリンク(rg550.hp.infoseek.co.jp)

332番のコードですが、MainCanvas()のコメントをはずすと
ぬるぽになります。なぜでしょうか?

817:デフォルトの名無しさん
08/07/03 19:27:51
>815
理解できないときは、まず出題者に質問しましょう

問題文をそのまま捉えれば、
・コンストラクタ(引数無し・文字列)
・有益な例外情報を得るためのコンストラクタとメソッド
を定義する必要があると思う。

818:デフォルトの名無しさん
08/07/03 19:41:39
>>816
kuni[1] = new Kuni();
kuni[2] = new Kuni();
kuni[3] = new Kuni();
が必要

819:816
08/07/03 20:13:03
回答ありがとうございます。できれば、このあたりのことを
日本語で解説しているwebサイトなどはないでしょうか?

820:デフォルトの名無しさん
08/07/03 20:25:49
サイトは知らないけど
booleanの初期値はfalse、intやfloatの初期値は0、オブジェクトの初期値はnull
ってことくらい、どこにでも載ってそうな気がする
new したばかりの Kuni[17] には、初期値として 17 個の null が詰まってる
インスタンスを new して代入しないと、ぬるぽは当然

821:816
08/07/03 20:52:47
ありがとうございました。なんでもかんでもnewをすれば
インスタンスがはいるものだと思ってました。

また質問しにくることがあると思いますがそのときは
よろしくお願いします。

822:デフォルトの名無しさん
08/07/04 10:57:20
パッケージ名には、企業のドメイン名を逆順でつけるのが推奨されていますが、
うちのドメイン名にはハイフンがついているのでそのままではパッケージ名に出来ません。

こういう場合に推奨される命名規約ってあるのでしょうか?

823:デフォルトの名無しさん
08/07/04 11:03:02
sun-java→sunJavaとか

824:デフォルトの名無しさん
08/07/04 11:34:50
>>822
ある、アンダースコアにすべし。

URLリンク(java.sun.com)
>If the domain name contains a hyphen, or any other special character not allowed in an identifier (§3.8),
>convert it into an underscore.

825:デフォルトの名無しさん
08/07/04 16:02:38
証券会社のトップとかに表示される為替レートをとりたいんですが、
ConnectURLだとやはりその部分が表示されません。
ああ言ったデータを読み取ることはJavaではできないでしょうか。

826:デフォルトの名無しさん
08/07/04 16:04:20
>>825
たとえばどのページ?

827:デフォルトの名無しさん
08/07/04 16:13:16
レスありがとうございます。
証券会社だとマネーパートナーとかのトップから落としたいのですが。

828:デフォルトの名無しさん
08/07/04 16:22:12
>>827
パケットキャプチャすればURLわかったよ。
そのURLでゲットすれば取れたよ。


829:デフォルトの名無しさん
08/07/04 16:37:05
なんと!
自分の未熟さがわかりました・・・
いまJava始めて2ヶ月ほどなのですが、パケットキャプチャという単語すら知らず。
自分も早く答えれる側になれるようがんばります。
ありがとうございました。

830:デフォルトの名無しさん
08/07/04 16:54:22
>>829
うむ。精進しなされ

831:デフォルトの名無しさん
08/07/04 16:55:05
脆弱なインターフェイスなのに好きだね~
そのサイトがデザインや仕組みを変えてこないとは限らないだろうに

832:デフォルトの名無しさん
08/07/04 17:29:11
元気な人が居るなw
>>831
確かに思うけど、個人ではそれが限界なのかも。まさか銀行に金払って送ってもらうほどでもないし。
>>829
いきなりパケットキャプチャ城ってのも酷だな

そんなことはどうでもいいんだけど、おすすめ2ちゃんなるに育児が入ってるのが地味におもしろい

833:319
08/07/04 18:22:36
自己組織化(雪の結晶の成長とか貝殻の形成とか砂浜の造成など…)をグラフィカルに表示するような Java を書いてみたいのですが、そういったソースコードはどこかに落ちていませんでしょうか?
もしくはそういったページをご存知でしたら教えていただけると嬉しいです。

834:319
08/07/04 18:31:20
「自己組織化」について学問・理系板の「全般」「物理」「化学」「生物」「機械・工学」「ロボット技術」「情報システム」「情報学」「シミュレート」「未来技術」「地球科学」 あたりはタイトル一覧を全て探してみたのですが見付かりませんでした。
他の分野は何となく無さそうだったので調べていません。「化学」と「生物」で見付からなかったのは驚きでした。



835:デフォルトの名無しさん
08/07/04 18:40:13
>>833
URLリンク(homepage3.nifty.com)

836:319
08/07/04 20:18:14
>>835
ありがとうございます!

837:デフォルトの名無しさん
08/07/04 20:19:53
strutsのActionServletやActionFormを継承したクラスのクラス編集に直列化できないフィールドを追加すると、
シリアライズしたときにエラーになると思いますが、実際この辺をシリアライズするのは
ウェブコンテナだと思いますが、コンテナがシリアライズ失敗したときにはシリアライズをあきらめるだけなので、
クラスタ構成をしていなければ問題無しと考えてよろしいでしょうか?

838:デフォルトの名無しさん
08/07/04 23:46:45
「'else'への'if'がありません。」と出たのですが、エラーを示されてる文には「else if」と入力されており、エラーの意味がわかりません。
どうすればいいですか?

839:デフォルトの名無しさん
08/07/04 23:53:47
>>838
if(~){

}else if(~){

}
の最初のifが無いんじゃね?

840:デフォルトの名無しさん
08/07/04 23:55:42
>>839
それはあります。

なんでできないのかいまだにわけがわかんないです。

841:デフォルトの名無しさん
08/07/05 00:01:14
該当部分のコードを貼るんだ
このままだと誰にもエスパー回答しかできないと思うが

842:デフォルトの名無しさん
08/07/05 00:03:59
どうせ{}忘れだろな~と

843:デフォルトの名無しさん
08/07/05 00:04:46
ソースの形を変えてみたら、少し改良の問題は残るものの一応コンパイルできました。
ただ、またこういうトラブルが起きたときに困りそうなので、とりあえず一通りソース貼ってみます。

(前略)
int num = (int)(Math.random()*11);
int N;
do{
System.out.println("1~10までの整数を入力してください。");
BufferedReader br =(以下略)
String str = br.read.line();
int num2 = Integer.parseInt(str);
if(num == N)
break;
else if(num > N)
System.out.println("もっと大きいです。");
else if(num < N)
System.out.println("もっと小さいです。");
else if((num != N && N > num+2)||(num != N && N < num-2))
System.out.println("もっと大きいです。");
System.out.println("惜しい");
else if((num != N && N < num+2)||(num != N && N < num-2))
System.out.println("もっと小さいです。");
System.out.println("惜しい");
}while(true);
System.out.println("あたりです。答えは"+num+"です。);
(以下略)

コンピュータがランダムで出した数字に対して、数字を入力し、正解していたらあたり、はずしていたら「もっと小さいです。」などを表示し、さらに誤差が±2以内であれば「惜しい」と表示されるプログラムです。

844:デフォルトの名無しさん
08/07/05 00:08:06
>>842
あなたは何時もただしい。

845:デフォルトの名無しさん
08/07/05 00:24:30
>>828
そのURLは
URLリンク(www.moneypartners.co.jp)
ですか?いろいろ試したんですが・・・

846:デフォルトの名無しさん
08/07/05 00:38:22
>>843
ifで{}が省略できるのは処理が1行のみのとき。

else if((num != N && N > num+2)||(num != N && N < num-2))
System.out.println("もっと大きいです。");
System.out.println("惜しい");
else if((num != N && N < num+2)||(num != N && N < num-2))
System.out.println("もっと小さいです。");
System.out.println("惜しい");

ここでelse if内にSystem.out・・・が2あるからダメかと。

あと、上のほうでnum == Nとしてるからnum != Nって省略してもいいと思うけど。


847:デフォルトの名無しさん
08/07/05 00:49:57
質問です
JavaBeansについて調べようと思ったのですが
EJBとかの本はたくさん出てるのに、
デスクトップアプリで使いそうな単なるJavaBeansの入門書とかの情報
は随分と古い本しかみつからないんですが、
もう使われてない技術なんでしょうか?

848:デフォルトの名無しさん
08/07/05 00:55:16
>>846最終行
上の方云々の前に、

N > num+2 ⇒ num != N

は自明だし、そもそも

num == N
num > N
num < N

で全部じゃないかというツッコミが…

>>843は論理式の勉強をして、カルノー図くらい書けるようになるのが先決だな

849:デフォルトの名無しさん
08/07/05 01:04:42
>>833
ぐぐってみた。
URLリンク(www001.upp.so-net.ne.jp)
URLリンク(www2.ttcn.ne.jp)
URLリンク(ja.wikipedia.org)

意外な所だけどこのスレがいいかも。

【ダンジョン】 自動生成 2 【地形】 @ゲーム制作板
スレリンク(gamedev板)

850:デフォルトの名無しさん
08/07/05 01:44:13
>>847
ググレば充分
JavaBeansは別に難しい技術じゃなくて、こういうルールで作ろうぜっていう決まりみたいなもん
XMLのルールはあるがどのようにXMLを使うかは技術次第とかそんな類

851:デフォルトの名無しさん
08/07/05 02:58:08
>>848
>int num2 = Integer.parseInt(str);
入力してるのは N じゃなく num2 だろというツッコミも…

852:791
08/07/05 05:56:40
自己解決しました。
DefaultTableCellHeaderRenderer のソースをやっと見られまして、アイコンとして設定していることが分かりました。
以下のレンダラを JTableHeader に設定することで「▲」「▼」が付かなくなりました。

class TableCellHeaderRenderer extends DefaultTableCellHeaderRenderer {
private static final long serialVersionUID = 1L;
@Override
public void setIcon(Icon icon) {
if(icon == UIManager.getIcon("Table.ascendingSortIcon") ||
icon == UIManager.getIcon("Table.descendingSortIcon") ||
icon == UIManager.getIcon("Table.naturalSortIcon")) return;
super.setIcon(icon);
}
}

853:デフォルトの名無しさん
08/07/05 06:08:13
>>843
なんという予想通りw。一応まとめ↓

//  前略。でも int N=Integer… ← int num2=Integer・・・ だよね
//  >843のif(N==num)のところから置き換え
if(N<=0 || 10<N) continue; // 入力が1~10でなければループの先頭からやり直す
if(num==N){ // 正解の場合。ループを抜ける
 System.out.println("あたりです。答えは"+num+"です。"); //正解のときに表示するんだから普通ここに書くべき
 break;
}
if(num < N){
 System.out.println("もっと小さいです。");
}else{ // すでに==にはなり得ないのでelseで十分
 System.out.println("もっと大きいです。");
}
// ↓ここにelseをつけないのが重要。else ifは、それ以前のifがヒットした時に無視される
if(num-2 <= N && N <= num+2){ // num-2 <= N <= num+2 の意味。
 System.out.println("惜しい");
}
} while(true);

数直線にしてみるとわかると思うが、else if((num != N && N… あたりの不等号が明らかにおかしい。
if((num != N && N > num+2)||(num != N && N < num-2)) には、
あと、random()は0もとり得るので、ソコは
int num = (int)(Math.random()*10) + 1; とかのほうがマシかと。
いや、Javaはあんま知らんから違ってたら誰か直して。

854:853
08/07/05 06:11:03
ミスった。Shift+Enterしてもたotz。
「あと、random・・・」の前の行は、
「if((num != N && N > num+2)||(num != N && N < num-2)) には、N=100もマッチするはず。」
と書きたかった。

855:デフォルトの名無しさん
08/07/05 07:04:48
javaコントロールパネルが開きません。
コントロールパネルからjavaのアイコンをクリックすると
「C:\Program Files\Java\jre1.6.0_06\bin\javacpl.exe」
と表示されるので、「javacpl.exe」をクリックすると今度は
「C:\Program Files\Java\jre1.6.0_06\bin\javaw.exe -Xbootclasspath/a:"C:\Program Files\Java\jre1.6.0_06\bin\..\lib\deploy.jar" -Duser.home="C:\Documents&Settings\ユーザー名" com.sun.deploy.panel.ControlPanel」
と表示されます。
どうか対処法をご教授くださいませ。

856:デフォルトの名無しさん
08/07/05 11:38:01
Ruby の File#truncate(バイト数) のように、
ファイルサイズを指定バイト数にするには、Java ではどうしたら良いのでしょうか。


857:デフォルトの名無しさん
08/07/05 11:51:08
>>856
RandomAccessFile raf = new RandomAccessFile(path, "rw");
raf.setLength(バイト数);
raf.close();

標準APIには、メソッド一発でできる様な便利メソッドはなかったような。

858:デフォルトの名無しさん
08/07/05 12:08:21
>>852
へえ、こんなんあるんだ

859:デフォルトの名無しさん
08/07/05 19:51:07
java初めて8年の初心者です。嘘です。あんまり初心者じゃない。

仕事で、金勘定とか在庫管理とか何だとか、いくつかのプロジェクトを周ってきたんだけど
「コード」「コード定数」とかいう言葉がよく使われますよね?
業界標準と考えていいのかな?
(お前のプロジェクトだけだwwって事なら、後で解説します・・)

んで、今まで周ってきた、どの会社のどのプロジェクトでも、このコードを
普通のクラスと普通の public static final String で定義する決まりになってるんですが
enum を使いたくない理由って何なのでしょうか?
DBに値を突っ込みにくいとか、あるいはDBからエンティティを復元しにくいとか?

でも enum を使えば、麺種別コードを入れるべき所に間違えてダシ種別コードを入れてしまうような
事故がなくなるはずなのに。
この事故のせいで、数十人月は損してるんじゃないかな?特に今回のアソコは・・・

860:デフォルトの名無しさん
08/07/05 20:12:08
>>859
enumはjava5からだから昔からあるシステムのメンテや追加だとまだ使いたがらないことが多い。

861:デフォルトの名無しさん
08/07/05 20:24:00
うちのシステムではなぜか定数はinterface派だな。
public interface Foo {
  int AAA = 1;
  String MSG = "UGO UGO";
}


862:デフォルトの名無しさん
08/07/05 20:36:42
>>859
「よく解らないので(知らないものは)採用できない」と言われたことあるぜw

863:デフォルトの名無しさん
08/07/05 21:05:58
むしろ定数自体が邪悪

864:デフォルトの名無しさん
08/07/05 21:31:43
うちもインターフェイスかな・・
Static importとか使う?

865:デフォルトの名無しさん
08/07/05 21:36:35
>>864
import java.util.*; のような表記は全然OKだけど、static import は使わない。

866:デフォルトの名無しさん
08/07/05 22:05:38
個人のサンデープログラマは気ままにEnumのみ

867:デフォルトの名無しさん
08/07/05 22:35:05
質問です。
画像ビューワみたいなのを作ってます。
画像を JScrollPane の中央に表示させたいんですけど、
ウィンドウのサイズをいじると左上に移動してしまいます。
これをなくしたいのですが。。。以下ソースコード(1/2)
package test;
import java.awt.*; import java.awt.image.*; import javax.swing.*; import javax.swing.event.*;

public class JSTest extends JFrame implements ChangeListener{
private JScrollPane sp;
private MyCanvas mc;
public JSTest(){
mc = new MyCanvas();
sp = new JScrollPane(mc);
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
getContentPane().add(sp);
JSlider js = new JSlider(20, 300, 100);
js.addChangeListener(this);
getContentPane().add(js);
pack(); setVisible(true);
}
public void stateChanged(ChangeEvent e){
int newScale = ((JSlider)e.getSource()).getValue();
mc.setScale(newScale);
// サイズに合わせて位置を調整
sp.getViewport().setViewPosition(new Point(newScale - 100, newScale - 100));
repaint();
}
public static void main(String[] args){ new JSTest();}

868:デフォルトの名無しさん
08/07/05 22:37:33
class MyCanvas extends JComponent{
private int scale = 100;
private Image img;
private Dimension size;

public MyCanvas(){
int[] pixelData = new int[240 * 240];
for(int i = 0; i < pixelData.length; i++) pixelData[i] = (255 << 24) | (int)(Math.random()*256*256*256);
MemoryImageSource mis = new MemoryImageSource(240, 240, ColorModel.getRGBdefault(), pixelData, 0, 240);
img = createImage(mis);
size = new Dimension(240, 240);
}
public int getWidth(){ return size.width * scale / 100;}
public int getHeight(){ return size.height * scale / 100;}
public void setScale(int scale){
this.scale = scale;
}

public void paintComponent(Graphics g){
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
}
}
}
ソースコード終わり。getWidth()とかオーバーロードしてるのがまずいんですかねぇ。。


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