【初心者】Java質問・相談スレッド107【大歓迎】
1 :
デフォルトの名無しさん :
2007/10/18(木) 09:08:26 プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド106【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1190169553/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
次スレは
>>980 あたりで。
JSP2.0を使ってます。 変数の値を出力するのに <h1>${title}</h1> としていたのですが、サニタイズされないことが分かりました。 仕方ないので <h1><c:out value="${title}"/></h1> と書き直しているのですが、すごくばからしくなってきました。 なんとか ${title} の書き方でサニタイズされることはできないでしょうか。 つうかなんでサニタイズされないのだ? <c:out/>はデフォルトでされるというのに。
Javaのサーブレットから画像ファイルを取得したく以下の ようにソースを書いたのですが 出力されたファイルはバイト数は正しいのですが 画像が変になってしまいます。 どこか間違いがありますでしょうか? URL url = new URL(urlString); //受信 InputStream is = url.openStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); //ファイルに出力 FileOutputStream fos = new FileOutputStream(fileName); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw); int c; while ((c = reader.read()) != -1) { bw.write(c); } bw.flush(); reader.close(); bw.close();
BufferedReaderとかOutputStreamWriterがテキスト読み込み向けだからじゃないの? ImageReaderとかあるよ
>>3 Reader や Writer をはさまずに、直接 InputStream から読み込んで FileOutputStream に出力すればいいんじゃない
7 :
デフォルトの名無しさん :2007/10/18(木) 12:56:13
質問させてください。 PreparedStatementを使用して、"select 〜for update wait ?"で 待機時間をバインド変数でプログラムを組みたいと思っているんですが、 上手くいきません。 setIntやsetDouble、Longを試してみましたが、 なにかよい方法はないのでしょうか。
すみませんが、質問です。 プロパティファイルなどの設定ファイルを、どのように管理したらいいもので しょうか? ・開発機、テスト機、本番機でそれぞれ設定内容が異なる ・開発機の場合、ここの開発者の環境ごとに設定内容が少しずつ異なる ・設定項目の種類はいずれも共通だが、開発中に増えたり減ったりする こういうものをCVSで管理するにはどうしたらいいものか、考えあぐねています。 Ruby on Rails だと、開発機、テスト機、本番機用の3種類のファイルがデフォ ルトで用意されていました。開発者ごとの環境設定は、個々人で修正すること になっていました。
public class Tokuten { protected String name; // 名前 protected int eng; // 英語得点 protected int math; // 数学得点 protected int sci; // 理科得点 // コンストラクタ(データを受け取る) public Tokuten(String n, int e, int m, int s) { name = n; eng = e; math = m; sci = s; } // データの見出しを文字列にして返す public String getHeader() { // \t … タブ文字 return "name\teng\tmath\tsci"; } // データを文字列にして返す public String getData() { return name + "\t" + eng + "\t" + math + "\t" + sci; } }
public class Kadai20 {
public static void main(String args[]) {
// データの初期設定
Tokuten tokuten[] = new Tokuten[3];
tokuten[0] = new Tokuten("taro", 80, 70, 60);
tokuten[1] = new Tokuten("hanako", 70, 80, 70);
tokuten[2] = new Tokuten("jiro", 60, 90, 80);
// データを表示させる
System.out.println("No.\t" + tokuten[0].getHeader());
for (int i = 0; i < tokuten.length; i++)
System.out.println(i + "\t" + tokuten[i].getData());
}
}
質問おねがいします。
>>9 のTokutenを、Kadai20クラスを使って表示させたいのですが
2つのクラスをつなげてもうまくいきません。
どのようにすれば実行結果を得られるのでしょうか、教えてください。
うおー
>>2 を誰かお願いします
>JSP2.0を使ってます。
>変数の値を出力するのに
><h1>${title}</h1>
>としていたのですが、サニタイズされないことが分かりました。
>仕方ないので
><h1><c:out value="${title}"/></h1>
>と書き直しているのですが、すごくばからしくなってきました。
>なんとか ${title} の書き方でサニタイズされることはできないでしょうか。
>つうかなんでサニタイズされないのだ? <c:out/>はデフォルトでされるというのに。
逆に、タグを出力したいときはどうする?
>>10 "つなげる" てのはどうやってるのかな?
例えば Kadai20.java に両方書くってんなら、Tokuten は public 外して
public class Kadai20 { ... }
class Tokuten { ... }
と宣言すればいい。
仮に Tokuten を public にしたいなら別々の .java ファイルにする。
(そうしろっていうコンパイルエラーが出てないかい?)
14 :
9-10 :2007/10/18(木) 15:02:42
>>13 別々のjavaファイルでそれぞれのクラスがあるのですが、
それぞれをコンパイルしてKadai20.javaを実行しても結果が表示されないんです。
だからつなげればよいのかと考えたのですが・・・
15 :
9-10 :2007/10/18(木) 15:10:10
すいません、解決しました。
些細なことで質問してすみませんでした。
>>13 さん、ありがとうございました。
IE7でドキュメントのトップページが真っ白になってん何も表示されないんですが なんででしょう? ソース表示したらソースは読みこんでます
↓エスパーよろ
真っ白なページを出すソースだったんじゃない
有名な不具合じゃないか。スレ違いだが。
>>16 さんくすです。fn:escapeXml()を使うのか。
でもこれ、いけてねー
${fn:escapeXml(var)}
<c:out value="${var}"/>
あんましかわらん。。。
やっぱり ${} はデフォルトでエスケープすべき。
したくないときだけ <c:out value="${}" escapeXml="false"/> を使うのがいいんじゃないか。
>>17 俺も同じ症状だノシ
とりあえずFirefox使って凌いでる。おそらくローカルドキュメントのセキュリティ関連だと思うが、
バグかもしれんので原因を探す気にはなれない。
24 :
8 :2007/10/18(木) 20:17:38
どなたか
>>8 についてのアドバイスをいただけないでしょうか?
率直に言って、みんなどうやっているのか不思議です。
WARを作る際にAntなどでファイル名を変更しているのでしょうか?
c:\usr\local\bin;c:\gs\gs7.07\bin;%SystemRoot%;%SystemRoot%\system32;%SystemRoot%\wbem;c:\gs\gs7.07\lib;c:\dviout;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Java\jdk1.6.0_<version>\bin としたんですけど、pathが通りません。誰か教えてください。
JAVA_HOME = C:\Program Files\Java\jdk1.6.0_<version> path = %path%;%JAVA_HOME%\bin; でどうなる?
27 :
デフォルトの名無しさん :2007/10/18(木) 23:38:54
JavaSE6をインストールしたのですが、コマンドプロンプトでjava -versionを見ると java 1.3.1_01と表示されてしまいます。 コンパイルまでは出来るのですが、実行しようとすると「UnsupportedClassVersionError」と表示されてしまいます。 調べてみるとどうやら作成した環境と実行した環境のバージョンが違うときに出るみたいです。 Cドライブを色々見てみても、java1.3.1は見つかりません。 JavaSE6を再度実行してみても「すでにインストールされています」と表示されるのみです。 どうすればいいのでしょうか?
>>8 デフォルトは固定で持たせておいて、開発用の設定ファイルはVM引数で渡したり、設定ファイル郡を定義する設定ファイルを読み込んだり(web.xmlでもOK)する事が多い
>>27 OSは?
あと、JavaSE6ってJDKを入れたのか、JREをいれたのか?
とりあえず、コンパネからアプリケーションの追加と削除で、1.3を消してしまえ。
以前、1.3を入れた覚えとかあるならば、環境変数のpathに1.3のbinが通ってないかも確認する方がいい。
ついでにclasspathとか入っているならば一度消すべし
>>8 ・開発機の場合、ここの開発者の環境ごとに設定内容が少しずつ異なる
>28も書いているが、起動引数などで設定ファイルを指定できるようにした上で、
自分の環境用の設定ファイルはローカルに作って、SVNなどのバージョン管理対象からはずす。
SVNで管理するのはあくまで本番用と本番環境でのデバッグ用、UT用くらいだろうな。
パッケージングする時にそれらを含めないようにWARなどを作ればいいだけ
まあ、含んでいても問題は生じないけど
31 :
その1 :2007/10/19(金) 00:39:12
始めまして。 StringBufferに格納した文字列を、Printableで出力する処理を作成しています。 その際、StringBufferに「\n」を格納すると、改行させることが出来るのですが(例1)、 「\f」を格納して改ページをさせようと思っても、中点(・)が印字されてしまい、 上手く改ページさせることが出来ません(例2)。 改ページをさせるには、どうしたら宜しいのでしょうか? 以上、宜しくお願い致します。
32 :
その2 :2007/10/19(金) 00:40:26
※ 例1 【PGM】 StringBuffer sb = new StringBuffer(); sb.append("改行"); sb.append(\n); sb.append("テスト"); 【出力結果】 改行 テスト ※ 例2 【PGM】 StringBuffer sb = new StringBuffer(); sb.append("改ページ"); sb.append(\f); sb.append("テスト"); 【出力結果】 改ページ・テスト ※ \は実際には「バックスラッシュ」です
質問です。 BufferdImageで定義したimageをダイアログを用いて保存する方法についてですが、 fileDialog内の引数が上手く取れずに困っています。現在、 public class neko { public static void main(String[] args){ MyFrame f = new MyFrame(); 中略}} class MyFrame extends Frame{ 中略 public MyFrame(){ b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 中略 FileDialog fileDialog = new FileDialog( f , "SAVE画面" , FileDialog.SAVE); という形にしていますが、new FileDialogの部分でシンボルが見つかりませんというエラーが出ました。 fをちゃんと引数として持って来れていないのが原因と考えていますが、直す事ができません。 どうすればいいのでしょうか?
そりゃ f は main のローカル変数だからだろ、他の場所からは見えんよ たぶん new FileDialog(MyFrame.this, "SAVE画面", FileDialog.SAVE); でいけるかと思うが GUI の前にもうちょっと Java の言語自体を勉強したほうがいいような
>>34 エラーがなくなり、実行できるようになりました。
ずっと悩み続けていて、Webサイトや参考書で調べてみたりしたのですが
mainでのローカル変数は取り辛い、ということしか解らず解決策を見いだせずにいました。
解決策を拝見し、javaについての知識が浅すぎたという気持ちでいっぱいです。
もっと精進できるよう努力します。ありがとうございました。
すみません、Addressクラス内でPersonクラスのメソッドを 利用しようとしてもNull Pointerが返されてしまいます。 どうすればよいでしょうか? import java.io.*; // for I/O class Person{ String myName; public void SetName(String name) { myName = name; } } class Address{ public Person[] a; public Address(int max){ a = new Person[max]; } public void insert(String insert){ a[0].SetName(insert); } } class 2ch{ public static void main(String[] args){ Address ad; ad = new Address(100); ad.insert("ななし"); } }
>>36 実行時エラーを出すも何も、そもそもそのソースはコンパイルできないだろ。
a = new Person[max];
はPerson型を格納する配列を作成しているだけで、
その要素であるPerson型のインスタンスを生成しているわけではない。
だから、
a[0].SetName(insert);
で配列要素の初期値であるnullに対してメソッドを呼び出そうとして例外が投げられる。
配列の要素もちゃんと生成しろ。
38 :
36 :2007/10/19(金) 03:31:06
コンパイルは通るんですが、 実行してもNullPointerExceptionが返るって、、 まったく状況似たようなもんですけどね。 すみませんが、なんかサンプルみたいのないでしょうか。 レスしてくださったのはありがたいんですが、 概念がさっぱり。。。インスタンスについて完全にわかってないせいでしょうか。。。
>>38 class 2ch{
> 配列の要素もちゃんと生成しろ。
> なんかサンプルみたいのないでしょうか
sunのドキュメントやチュートリアル
40 :
36 :2007/10/19(金) 03:36:21
>class 2ch{ テキトウなクラス名つけておいたら、 実際にやってみたら、通りませんでした(汗 class Eとかつけてたんですが、そのまま書けばよかった。 6時間格闘してるんですが、 正直何がわかってないかがわかってないだけに どこを探せばよいのか。。。
2chのレスで出てくる用語が理解できたら、そもそも質問なんて投げないよな。 そこら辺もきちんと説明してあげたらどうよ?
42 :
36 :2007/10/19(金) 03:44:19
それなりにクラス、インスタンスの概念はわかってたつもりなんですが、 こういう風にクラスを3つ使うパターンを 実践してみたことがなくて、何が起きてるかわからなくて。
>>40 a = new Person[max];
によってaにはmax個のnullが詰まった配列への参照が代入される。
new Address(100);
ならPerson型を100個格納できる配列が作られる。
それは配列が作られただけで、その中に入れるPerson型のインスタンスが作られたわけではない。
100個分入れられる容器が作られただけ。
だから、次にその容器=配列に入れるためのPerson型のインスタンスを作ってやらないといけない。
a[0].SetName(insert);
でエラーになるのは、aという配列の1番目の要素a[0]に入っているべきPerson型のインスタンスがまだ作られておらず、
nullというPerson型でない特別なものが入った状態だから。
エラーにならないようにするには、そうやって使う前にa[0]にPerson型のインスタンスを作って入れてやらないといけない。
Person型のインスタンスの作りどころとしては、Addressのコンストラクタの中で作ってa[0]に代入するとか、
insertメソッドの中でa[0]がnullなら作成して代入するとか。
Person型のインスタンスの作り方は分かるよね?new演算子を使えばいい。
それをa[0]に代入する方法も分かるよね?代入演算子を使えばいい。
>>42 クラスを3つ使うことでハマっているわけじゃないと思うよ
class E {
public static void main(String[] args){
Person[] a = new Person[100]; //1
a[0].SetName("ななし"); //2
}
}
ってやろうとしているのと同じ
1と2の行間に
a[0] = new Person();
がないとa[0]はnullが入っているから2でぬるぽになるんだ
配列を作ることと配列の中身を作ることは別の話になる
45 :
デフォルトの名無しさん :2007/10/19(金) 04:49:24
もっと細分化して簡単にしてあげればアホでも分かるだろう
Javaの配列は理解できるまで特殊だからなー 特に初心者本でいい加減に解説されていることが多いのが問題。 Person p と宣言したときは、pは当然ながらPersonインスタンスを参照する Person[] p と宣言した場合は、pはPerson[]インスタンスを参照する しかし、Personインスタンスは生成していないから、p[0]には何も参照がない
47 :
42 :2007/10/19(金) 08:34:35
>>43-46 たくさんのご返答ありがとうございます。
>>43 さんの指示通りAddressのコンストラクタの末行に
for(int i=0; i<max; i++) a[i] = new Person();
を加えることで対処できました。
実際に動くのを目で見てみると、
>>37 の「格納する配列を作っただけで、配列の要素を作ってない」
という意味がわかりました。
また
>>44 のクラスを3つ使ってるから陥ったわけでもないというのもわかりました。
しかし、我ながらまだインスタンスと配列の概念があやふやだと思うので、
みなさんのレスも合わせて勉強しなおしたいと思います。
URLConnectionからログインサーバにUserIDとpasswordを書き込んだのですが、クッキーが取得できません。 IEブラウザで行うとローカルプロキシには Browser reload detected... Posting 155 bytes... とログが残るのですが、JAVAでリロードを感知するにはどうしたらいいのでしょうか?
ある数の約数を求め、そこから累乗(4, 9, 16...)で割り切れる数をぬきだしたいんですが、どうすればいいかわかりません。 たとえば12の場合約数は 1, 2, 3, 4, 6, 12 でこっから累乗で割り切れる数を抜き出した場合、 1, 2, 3, 6 どうにか約数をリストアップさせることはできたんですが、累乗で割り切れる数を抜き出すことができません。 誰かお助けを。 よろしくお願いします。
感覚的に、累乗ってめちゃ大きくなるから、指定されたある数までの累乗リストを作って、 求めた約数の配列に対して順次演算処理していけば良いんじゃないかな。 逐一累乗を計算するより良いかと思う。
>>50 System.out.println("数字を入れてください");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
int int1 = Integer.parseInt(str1);
double square = Math.sqrt(facInt1);
System.out.print(int1 + ":");
for (int y = 1; y <= facInt1; y++)
{
for (double b = 2; b <= square; b++)
{
if (facInt1 % y == 0 && y % Math.pow(b, 2) != 0)
{
System.out.print(y + ",");
}
}
}
System.out.println("");
}
}
で、出力が12をいれた場合、
1,1,1,2,2,2,3,3,3,4,4,6,6,6,12,12
一応累乗で割り切れる数はそれぞれ三つずつではなく二つずつ表示されているんですが・・・^^;
もう本当にJava初心者なんで... もう頭がおかしくなってきました。もっと考えみますが、誰かなにかアドバイスがありましたらご指摘お願いします。
>>51 ごめんなさい、facInt1はすべてint1です。^^;
データの登録画面を作っていて、プルダウンとテキストがある画面なんですが 入力のチェックがあり、エラーが出ると登録されず登録画面のままにし、 その際選択したプルダウンを選択したままの状態にする際はどうしたらいいんでしょうか
55 :
8 :2007/10/19(金) 12:04:48
>>28 ,
>>30 ありがとうございます。参考になります。
さらに質問なのですが、たとえばweb.xmlなどはどうしておられますか?
errorpage要素、welcome要素などが、開発、テスト、本番ごとに、定義してあっ
たりなかったりするのですが、どの環境でもファイル名はweb.xmlでないと動き
ません。別のファイル名をつけて、デプロイ時にリネームするのでしょうか?
また、内容の大部分は重複しているので、もしファイルを3つ作るとすると、3
つのファイルに同じような編集を繰り返さなければなりません。エラーの元に
もなるし、どうしたものかと思っています。
>>54 JavaScriptでは無くサーバで値チェックてことだよね。
選択したoptionにselectedをつければ選択されるが、
"selected"が入った変数をセッションで渡して、
${}, <%= %>で表示すればいいと思う。
すみませんが、Pure Javaの行列演算ライブラリはありませんか? JNI経由でblasなどを呼び出すという話があるようなのですが、マルチスレッド 環境を考えると不安なので、どこかにPure Javaなライブラリがないかと思うの ですが。
58 :
57 :2007/10/19(金) 12:30:28
>>56 レスありがとうございます。
確認してやってみたいと思います。
ゲームを作っていて、そのランキングをXMLでファイルに保存しています。 JavaでのXMLの取り扱いについて調べてみると数年前の情報しか見つからず、 その情報を頼りにDOMで実装しました。 今現在DOMよりも一般的な方法があれば教えてください。
>>55 Antのコピーでフィルタかけるとか。
あるいは、環境で変る箇所はweb.xmlから追い出すとか。
>>60 JDOM,SAX,StAX
一般的かどうかは自分の目で判断してくれ。
俺は裾野が広がった、と見ている。
失礼します。51番です。もう少しで終わるんですが、最後の一歩が踏み出せません。 本当に基本的な質問でしょうが、一つの配列に同じ整数が入ってた場合return falseとかえしたいのですが どうすればいいんでしょうか。 たとえば 配列に (2, 3, 3) と入ってる場合です。 簡単なコードを書いてもらえれば幸いです。よろしくお願いします。
64 :
デフォルトの名無しさん :2007/10/19(金) 17:43:31
現在Javaのインストールでつまづいてます。 Java Ver6をWebからインストールしようとすると途中で止まりエラーになってしまいます。 下記がエラーメッセージです。 「htt://javadl.sun.com/webapps/download/GetFile/1.6.o 03-b05/windows-i586/jre1041.MSTの読み込みに失敗しました。 このファイルが存在するかどうか、およびこのファイルへのアクセス権があるかどうかを」 何とかしてインストールしたいので宜しくお願いします。
65 :
64 :2007/10/19(金) 17:53:13
JavaはVer6Update3でした。 デフォルトの6は今まで使えてました。 何故アップデート出来ないのでしょうか・・・。
66 :
64 :2007/10/19(金) 17:55:51
情報が小出しで済みません。 WindowsはVistaビジネス32bit版です。 IE7です
>>60 JDOMマジオススメ。w3cの方使ってからだと感動する。
69 :
54 :2007/10/19(金) 18:30:32
HTMLだとできなそうなので以下のようにしてみました。 <select name="mail"> <% if (mail !=null){ switch (Integer.parseInt(mail)) { case 0 : out.println("<option value=\"1\">age"); out.println("<option value=\"2\" selected>sage"); 省略 break; case 1 :out.println("<option value=\"00\" >age"); out.println("<option value=\"00\" >sage"); 省略 break; } }else{ out.println("<option value=\"00\"selected >age"); out.println("<option value=\"01\">sage"); 省略 } %> </select> 大分省略してるんですが、この記述だとプルダウンの項目ごとにcaseで表記するのですが この記述を簡略化することはできますでしょうか。
やっぱりできません。jdk-6u3-windows-i586-pをインストールして、pathを通そうと思ったんですけど、 通りません。自分のシステム環境変数は path=c:\usr\local\bin;c:\gs\gs7.07\bin;%SystemRoot%;%SystemRoot%\system32;%SystemRoot%\wbem;c:\gs\gs7.07\lib;c:\dviout ;C:\Program Files\QuickTime\QTSystem\;%JAVA_HOME%\bin; classpath=ip;.;C:\Program Files\QuickTime\QTSystem\QTJava.zip;.;C:\Program Files\Java\jdk1.6.0_<version>\lib QTJAVA=C:\Program Files\QuickTime\QTSystem\QTJava.zip JAVA_HOME=C:\Program Files\Java\jdk1.6.0_<version> となっています。コマンドプロンプトでjavacとうってもバッチファイルとして認識できませんと出ます。 アドバイスください。
>>71 pathの方だが、JAVA_HOMEは認識しないぞ
ちゃんとフルパスで入力汁
あと、classpathは色々と面倒な事になるから消しとけ
必要な場合は起動時に指定するべし
これのコンパイルが通らないのは型が違うからでしょうか? byte s = Byte.parseByte(args[0]) - 1;
>>73 1行づつ分解してコンパイルしてみればいい
C言語、winのSetConsoleTextAttributeの javaバージョンがありましたら教えてください。
>>73 byte s = (byte)(Byte.parseByte(args[0]) - 1);
>>76 標準のコンソールを操作するクラスはjava.io.Consoleだけどほとんど機能はない
自分でGUI組むしかないんじゃない?
>>79 なるほど、分かりました。
ありがとうございました。
>>25 ,71
> C:\Program Files\Java\jdk1.6.0_<version>
まさか <version> の部分を文字通り <version> と書いているわけじゃないよな?
別のスレで質問したのですが、回答をいただけなかったのでこちらで再度質問させてください。 マルチになってしまい、失礼なのは解っていますが、どうかお願いします。 フレームをバックグラウンド(非アクティブ)にした状態でマウスイベントの取得はできますか? できるならばその手法について教えてください‥どこを探しても載っていないので本当に実現できるか心配でorz
心配なら確かめればいいよ。自分で。
>>83 とりあえず最低限のもの作って自分で確かめろよ。
超初心者の質問ですが OS=XPpro Javaランタイムの現在のバージョンは1.6.0_03をインストール済み 旧バージョンの1.6.0_01/1.6.0_02はどうすればいいのでしょうか 以前の1.5.0_10などはプログラムの追加と削除からアンインストールしてました 諸先輩方 ご教授願います。
削除していいよ
88 :
86 :2007/10/20(土) 18:41:12
脆弱性のあるソフトウェアは、JREに限らず削除しておくべき
90 :
83 :2007/10/20(土) 19:15:29
>>84-85 バックグラウンドで動かしたいプログラムは作ってはあります。
プログラムはフレームを開きマウスイベントのfillやdrawでフレームとイメージに描画を行いますが
IEを全画面で開き、フレームをバックグラウンドにして実行した時は描画が行われず、
IEを全画面ではなく、小さくした状態でフレームが見れる状態にした場合はIEから出ている部分では描画が行われていました。
なので、IEの上でのマウスの位置が取得できていない、つまりマウスイベントの取得ができていないように感じました。
自分は、全画面でアクティブになったものの下にフレームを置き描画を行いたいのですが現段階では実現できていません。
この解決策についてどうかご教授願えませんでしょうか?
91 :
デフォルトの名無しさん :2007/10/20(土) 20:52:24
いつもはDelphiやVBでプログラムをつくってきましたが、 今度初めてEclipseでJAVA GUIプログラム作りました。 ほかのアプリケーションのようにアイコンをクリックして起動させたいのですがどうしたらよいのでしょうか? classファイルをクリックしてもダメだし、exeファイルも作成されないようなのでよくわかりません。 わかるひとにはくだらない質問だと思いますが、どうぞよろしくご教授お願いいたします。
>>90 java.awt.MouseInfo
非アクティブでも使えるかしらん
>>91 jar マニフェスト
>>91 もしくはexewrapとかjsmoothとかlaunch4j
あとはgcjでバイナリにしちゃうとか
ある数字をカウントするプログラムを作りたいのですが考え方が全く分かりません 例えば1から15までの数の1を数えたい場合は8と出力させたいのですが これはやはり数学的にどうにかなるようなものなのですか?
各数字において10のn乗で割った余りに1が出たらカウントするとかそんなんでいいのか?
if (i % 10 == 1) { count++; } if (i / 10 == 1) { count++; }
いったん文字列に変換してカウントした方がわかりやすい気がする
JavaでIDropTargetを実装するにはどうすればいいですか?
99 :
83 :2007/10/20(土) 21:54:05
>>92 java.awt.MouseInfoをグーグルで検索を行い、マウスの位置を非アクティブで
確認することができました。
プログラムに組み込めるよう応用してみます。大変助かりました。ありがとうございます。
100 :
94 :2007/10/20(土) 22:13:44
なるほど、みなさん参考になります。 こんな事も自分の頭で考えられないとは…
>>98 java.awt.dnd.DropTarget とか java.awt.dnd.DropTargetListener あたり
102 :
デフォルトの名無しさん :2007/10/21(日) 00:59:41
panelにKeyListenerをimplementsして、keyTypedのイベントを検知しようと してもできません。 プログラム概要としては下記です。 よろしくお願いします。 public class AppletTest extends Applet{ PanelTest panel=new PanelTest(); public void init() { setLayout(new BorderLayout()); add("Center", panel); }} class PanelTest extends Panel implements KeyListener, ActionListener, MouseListener{ public void init(){ addKeyListener(this); addMouseListener(this); } public void keyPressed(KeyEvent e){ char ch; ch=e.getKeyChar(); System.out.println("キー入力:"+ch); }} 環境 javac 1.5.0_12 windowsXP
103 :
102 :2007/10/21(日) 01:01:00
補足です。 System.out.printlnでキー入力値が表示されないので、おそらくkeyPressedの イベントが呼ばれてないように見えます。
>public void init(){ これがどこからも呼ばれてないんじゃ?
105 :
104 :2007/10/21(日) 01:07:58
PanelTest の方の init ね
>>102 イベントリスナを登録していないから呼ばれるわけがない。
PanelTest#init()を明示的に呼ぶか、
AppletTest#init()の中でpanelにadd*Listener()するか汁。
PanelTestのコンストラクタの中でthisをadd*Listenerするのは止めておけ。
たぶん勘違いしているのだろうがinit()が勝手に呼ばれるのは、
Appletクラスのサブクラスをアプレットとして呼ぶ場合だけだぞ。
107 :
60 :2007/10/21(日) 01:58:38
109 :
102 :2007/10/21(日) 07:57:10
>>104-106 ありがとう。
classをnewすると、classのinitが自動的によばれるものと勘違いしてました…
お初。 フレームを常に最前面に表示させたいんですが… toFrontで簡単に出来るかと思ったんですが調べてもできませんでした… どなたか教えてください…。
教えてくれ. java.util.Vectorの使いかたがわからん. import java.util.*; public class vectest { static Vector v; public static void main(String[] args) { v = new Vector(1);//容量を指定してVector作成(ア) v.set(0,"foo");//A案(イ) v.setElementAt("foo",0);//B案(ウ) } } (ア)で容量を指定してvを生成しているにもかかわらず, (イ)のA案でやっても java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0 (ウ)のB案でやっても java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 というExceptionが出てしまう. どうすれば空のVectorに値を設定できるんだ?
112 :
111 :2007/10/21(日) 15:44:37
v.add("foo")で設定できるのはわかっているのだが, 空のVectorに,位置を指定して要素を設定したいのだ.
>空のVectorに,位置を指定して要素を設定したいのだ. 無理。できない。
114 :
111 :2007/10/21(日) 16:12:26
>>113 ありがとう.そうか.まぁ,考えてみればそうだよな.
配列ならできるんだろうが,Vector以外のデータ構造で
>>111 でやりたいようなことができるものって,
Java-APIで準備されたもので他に何かないかな?
ううむ.なさそうだな.
Vector初期化のときに捨てデータでも入れておいて,
あとからset()/setElementAt()で設定する,という手ぐらいか.
そういうことがしたいなら配列を使うか必要なだけnullでもaddするか
116 :
111 :2007/10/21(日) 16:22:44
>>115 「必要なだけnullでadd」してみたんだが,
これはだめじゃなかったかな.
nullを入れても空と同じ扱いだったような…
(未確認だが)
結局,「Vector初期化のときに捨てデータ」
で試行中.助言ありがとう.
117 :
115 :2007/10/21(日) 16:34:26
>>116 だめだと思う前に確認しようよ
import java.util.*;
public class XVector<E> extends Vector<E> {
public XVector() {}
public XVector(Collection<? extends E> c) { super(c); }
public XVector(int initialCapacity) { super(initialCapacity); }
public XVector(int initialCapacity, int capacityIncrement) { super(initialCapacity, capacityIncrement); }
public E set(int index, E element) {
while (index >= size()) add(null);
return super.set(index, element);
}
public void setElementAt(E obj, int index) {
while (index >= size()) add(null);
super.setElementAt(obj, index);
}
public static void main(String[] args) {//test
XVector<Object> v = new XVector<Object>();
v.set(10, new Object());
System.out.println(v.size());
System.out.println(v.get(10));
}
}
それとも、新しいクラスを定義するほどでもないと思うなら、 Vector#setSize(int)を使えば初期化時にnullを必要なだけ追加してくれる。
少しニュアンスが違った。 Vector#setSize(int)を初期化時に使えば自分で追加するコードを書かなくても だね
LinkedList <String> list = new LinkedList <String>(); list.add("A"); Iterator <String> itr = list.iterator(); while(itr.hasNext()) { String s = itr.next(); System.out.print(s + " "); } ここのwhileはなぜ実行されるのでしょうか?イテレータが指す(ここではA?)次の要素はないですよね?
>>120 疑問点がよく分からないんだけど、listには要素"A"が1個入ってるんだから、
最初にwhileの条件式を評価する段階ではitr.hasNext()はtrueになるんじゃないの?
なんで最初からAを指してると思うんだ
>>120 もしかして、itr = list.iterator()の段階でitrは"A"を指していると勘違いしている?
itrは"A"の前を指していると思えばいい。それでないとIteratorで全てを取り出すことができないじゃないか。
だから、最初にnext()すると"A"を取り出せる。"A"を取り出せる状態なんだからhasNext()は真になる。
>>120 最初にAをさしていると考えてもいいんだが
その場合はhasNextはさしているものがまだある時にtrueを返し
nextはさしているものを返してから次に進むと考えないといけない
キャレット(テキスト入力時にある|)みたいに考えればいいんじゃないかと思う。
横からで申し訳ありませんがエディタについて質問です。 今自分は秀丸のCompleteXでコーディングしているのですが、 他にオススメのエディタってありますか? よろしくお願いします。
>>127 エディタの良し悪しは使用者の使用スタイルや嗜好が結構決め手になるので
自分がどういうものをエディタに求めているかを示したほうがいい
129 :
デフォルトの名無しさん :2007/10/21(日) 17:59:56
>>128 使用スタイルとかはまだ決まっていないのですが
関数や文字を入力した際に色で分けてもらえるといいです。
>>129 探してみます。
>>127 Eclipseでいいじゃん
エディタなんて好み、秀丸に金払っているならば秀丸使えばいい
>>131 秀丸はちょっと使いにくくて・・・^^;
Elipseってよさそうですね。早速使ってみます。
>>130 統合開発環境を入れるほどではないと思うなら、
せっかくJavaプログラミングだしjEditでも入れてみたら?
Jeditじゃないよ
>>132 使いにくいと思うのは構わんが、使いこなしているとは思えんがなぁ・・・
メソッドや文字の色分けなんかは秀丸でも対応しているわけで。
ま、俺もEclipseでいいと思うよ。
>>133 ありがとうございます。
jEditも使ってみます。
>>134 確かに秀丸は使いこなせてません・・・。
JAVA専用!ってエディタが欲しくて^^;
>>135 EclipseはIDEだけど、まあJavaのための環境が必要なら、Eclipseは間違いじゃない・・・多少重いのを除けば。
質問です。 例えば、 public void actionPerformed(ActionEvent e){ int r[] =new int [10]; for(i=0;i<10;i++){ r[i] += 5; } } とした場合、その後に作る public void paint(Graphics g){ } の中でその配列に入れた値を使いたい場合、どのようにすればいいのでしょうか。 public void paint(Graphics g) の中でそのままr[0]としても使用することができませんでした。
138 :
137 :2007/10/21(日) 22:10:08
すいません。事故解決しました^^;
>>110 Window#setAlwaysOnTop
140 :
111 :2007/10/22(月) 00:13:22
一応報告. 助言を参考にやってみたが,nullで要素を初期化しても 思うように動作しなかった. null以外の捨てデータを入れてあとから書き換えも考えたが, 結局配列を使うのが最も手軽のように思えるので, その方向で作業することにした.いろいろありがとう.
>>140 nullも要素とするようなデータ群を入れるなら、
>>117 でnullをaddする代わりにクラス内に適当なprivateオブジェクトをダミーとして作って、
それをaddするようにすればいい。
その場合はgetとかの取り出す系のメソッドもオーバーライドして、
ダミーデータを取り出そうとした場合、例外なりを出すようにすればいい。
てか、もしかして思うように動作しなかったってのは、
nullが入った要素を取り出して何かをやろうとしてNullPointerExceptionが投げられたんじゃ?
>>111 くどいようだが、なにを実現したいのかが不明だよ。
VecrorなりListは可変長のリストを管理するクラスだし、一般的にその方が使いやすい。
単純にインデックスと値を対応させたいと言うならば、Mapを使うのが筋。
例えば、
HashMap map = new HashMap();
map.put(100, "データ");
map.put(102, "データ2");
と自然にかける。
実現したいのはこっちじゃねーの?
俺もそう思う。
>>111 Mapについては書かれてるけど、
仮想配列のイメージならTreeMapの方が良い。
Map<Integer,String> m = new TreeMap<Integer,String>();
m.put(1, "A");
m.put(12, "D");
m.put(3, "B");
m.put(5, "C");
for(int index : m.keySet()){
System.out.println("" + index + " = " + m.get(index));
}
--結果-----------------
1 = A
3 = B
5 = C
12 = D
144 :
111 :2007/10/22(月) 12:08:40
>>みなさま なるほど.Map系のクラスが使いやすいね. Map系クラスだと重くなるかと思い配列かVectorかで やってしまおうと思っていた. ほとんど配列でやってしまったのだが, Map系クラスのほうがスマートだね. もういちど書き換えることにする.ありがとう. ついでにご教示願いたいのだが, Map系クラスを使ったときのメモリ効率とか 生成のためのオーバーヘッドなどは 処理を重くしないのだろうか.
↑おまえみたいな自己忠にはおしえられんなあ
>>143 俺もこの問題をMapで対処してたんだが、ずっとHashmap使ってた。
TreeMapの方がパフォーマンスよかったのね、勉強になったわ。
平衡木やハッシュテーブルによる辞書の実装を勉強汁 アルゴリズムとしては基本だから
>>146 ハッシュ関数の精度にもよるが実行時間オーダはHashMapの方が優秀
要素数が少なければ大して変わらんが
>>111 殆ど隙間なく要素が入ってるなら
配列,Listは最小限のメモリ消費、
MapはKey,Entryの分、少し余計に消費する。
隙間が多いなら、
Mapは最小限のメモリ消費、
配列,Listは要素数 * 参照型変数サイズの分、余計に消費する。
どちらも要素数が10万未満ならまず気にすることは無いかと。
拡張のオーバーヘッドはVector, ArrayListが比較的大きい。
LinkedListなら小さいがランダムアクセスの
オーバーヘッドが大きくなる。
Mapは拡張、ランダムアクセス両方とも小さい。
詳細はjavadoc参照で。
>>146 いや、パフォーマンスとかじゃなく、
iterator(for文)の順序がソート済みになるってこと。
HashMapで順序合わせると for(int i=0〜が必要。
SortedMap見ると良いとオモ。
順序保証でパフォーマンス気になるなら
SortedMap + .entrySet()で回すのが最速かと。
>>147-149 なるほど、パフォーマンスがよくなる訳じゃないのね。
二分木なんかは一応勉強してたんだけど、インターフェイスがMapだから、ツリーがないと思ってた。
何処に実行負荷をかけるかというタイミングの問題。 アルゴリズムというよりデータ構造の特徴の問題。 挿入時にソートするか、利用時にソートするか。 利用パターンによってどのデータ構造が良いかを考えるのがプログラマの仕事。
>>150 もうちょっと深くデータ構造を勉強した方が役に立つと思う
serialVersionUID = 1L; って何でしょう? ほっといてもいいですか?
良い
>>153 1.5以降で、シリアライズしないのが分かっているなら
@SuppressWarnings( "serial" )
でもいい。
シリアライズするかしないか私にはわかりません。
ここにいる奴には、もっとわからん
158 :
111 :2007/10/22(月) 16:33:56
>>みなさま
移動中に盛り上がっていただいているようで幸いに存じます.
移動中考えましたが,
>>149 さんご指摘と同じような
メモリ効率に思い至りました.
結局,要素が隙間なく密に並んでいることが保証されるものに
対しては配列を,疎になる可能性のあるものに対してはMapを
使うことに決めました.これに関してはもう書きません.
どうもありがとうございました.
>>111 重いと思い込むのは一番ダメ
ほとんどは都市伝説なんだから
気になるならば実測、これで解決
いるんだよ、未だにArrayListは遅いから禁止とか言う馬鹿・・・
Cやアセンブリでやってるならともかく、 Javaでやるならそれほど神経質になることはないと思うんだけどなあ。
時期尚早な最適化ってやつだな
162 :
デフォルトの名無しさん :2007/10/22(月) 21:37:20
File#listRoots()でPCにあるドライブを取得できますが、 それがハードディスクなのか、リムーバブルディスクなのか、CDドライブなのかなど、 種類を判定する方法ってありますか?
Vista マシンで RMI-IIOP 使ってるんだけどクソ重たい・・・ リモートメソッド一回呼ぶごとに、 XP より最大 0.2秒のオーバーヘッドが余計につく VM変えようがファイアウォール切ろうがまるで変化なし どうしたらいいの〜
すみません。質問です。サーバーにPOSTするときのレスポンスコードとhttpHeadersの取り方なんですが、 OutputStreamで書き出した後でいいんでしょうか?
>>162 ちょっとググったけど、なかなかないねえ。
ドライブの種類を調べて何がしたいの?それを書けば代替えの方法を教えてくれるかもしれないよ。
>>163 OSレベルでなんらかのセキュリティでも働いているのかね
>>162 たぶん無理
Java6ならばシステム環境変数とか取得できるんで、その辺に情報があれば…って程度。
>>165 まずは日本語でおk
クライアントが投げるときの処理なのか、サーバーでレスポンスを返すときの処理なのかどちらとも取れないw
アンカー間違ってないか?
いまどき意味もなくVector使ってるやつっていったい?
170 :
164 :2007/10/22(月) 22:40:44
>>167 う。クライアントがサーバーにポストして、クライアントがレスポンスコードを受け取りたいのです。
171 :
164 :2007/10/22(月) 22:45:13
じゃなくて、クライアントがサーバーにポストするときに、クライアントがサーバーからHTTPHeadersを取得したいのです。 クライアントのJAVAアプリです。
>>171 まずは餅付け。このAAでも見て一息入れるとよろし。
/\⌒ヽペタン
∩ ∩/⌒)ノ ∩ ∩
| |_| | \ (( | |_| | ペタン
(; ´Д`))' ))(・∀・ ;)
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
(O ノ ) ̄ ̄ ̄(.)__ )
)_)_) (;;;;;;;;;;;;;;;;)(_(
おまいらモチツケ!
サウンドの再生が終わったのに mediaActionが全く呼び出されないんですが 原因は何が考えられるでしょうか…?
175 :
162 :2007/10/22(月) 23:13:19
>>165 >>166 ありがとうございます。
Windowsのエクスプローラみたいなものを作ってまして、
純粋にドライブの種類を表示したいんです。
>>173 どうしてお前らマルチは死なないんだ?
叩いても叩いてもゴキブリのごとく湧いてきやがる。いい加減死ね。
新基準javaプログラミングという本を使っていたのですが、コンパイルができなくなり困っています。 勉強していたプログラムはdodaiという教科書の著者が作ったクラスを利用して作られているんですが、 今までできていたものが「Exception in thread "main" java.lang.NoClassDefFoundError: 」と表示され、 できなくなりました。原因は何かと思いコンピュータの復元で探していったんですが、どうやらjavaのアップデート後と、アップデート前で違うようでした。 javaのアップデートで今まで使っていたクラスが急に使えなくなるなんてあるんでしょうか?どなたか回答お願いいたします
>>175 そうなるともう直接Win32APIを呼ぶしかないな。
それにしても、Javaでエクスプローラを作るってのはまた歌舞いてるな。
どう考えても向いてないぞ?Javaはマルチプラットホームを前提とした言語なんだから、
Windows固有の操作や情報なんかはひどく取得しにくい。めったにこういうことする人間もいないから情報も少ないしな。
まだP/Invokeで呼び出せるC#のほうが向いてる。
>>177 ソースみてみなきゃ解らんが、コンパイルが通らなくなる事はほとんどないと思うが・・・。
180 :
179 :2007/10/22(月) 23:29:06
新基準javaプログラミングって最近出た本かよ。 ふざけたクラス名(dodai)とか、5〜6年前の教科書かと思ったわ
コンパイル時にソースのJRE準拠レベルを変更することが可能じゃなかったっけ?
それを使って元のバージョンを指定し、コンパイルが通ればアップデートのせい。
通らなければそれ以外の要因。
個人的には
>>179 と同意見。
>>178 nio2に期待しながら作り始めてるってのはどうかね?
すいません、勘違いをしていました。コンパイルではなくて、javaの実行でした。 javaの実行において、以前はできていたのですが、新しいアップデートでできなくなったんです。 表示されたのは 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 でした。
>>183 ずっとEclipse使ってたせいで、コマンドラインのエラーはあんまり見ないんだが、
実行しようとしてるファイルにMainメソッドがないと言ってるんじゃないか?
本当にMainが含まれたバイナリコードかもう一度確認しな。
いや、まず、エラーを小出しにしているウチはスルーでいいだろ。
186 :
183 :2007/10/23(火) 00:10:54
すいません。どのようなエラーだったのか、どのようなソースコードだったのかきちんと書きます。 ソースコードは class FusenExec { public static void main(String[] args){ //一枚目の付箋の土台 Dodai fusen1 = new Dodai(); fusen1.setSize(200,50); fusen1.setLocation(0,0); fusen1.setVisible(true); //二枚目の付箋の土台 Dodai fusen2 = new Dodai(); fusen2.setSize(100,20); fusen2.setLocation(50,100); fusen2.setVisible(true); //三枚目の付箋の土台 Dodai fusen3 = new Dodai(); fusen3.setSize(50,50); fusen3.setLocation(300,50); fusen3.setVisible(true); } } で、コンパイルは通るのですが、実行しようとすると C:\JavaGOGO>cd Sample3-3 C:\JavaGOGO\Sample3-3>javac FusenExec.java C:\JavaGOGO\Sample3-3>java FusenExec.java Exception in thread "main" java.lang.NoClassDefFoundError: FusenExec/java という上記のエラーが出るんです。これがdodaiというクラスを利用しないプログラムなら問題なく実行できるのですが、 このdodaiというクラスが入っているこのプログラムだと実行できないんです。 そしてこれはjavaのアップデート前では実行できたのですが、アップデート後では実行できなくなりました。
187 :
183 :2007/10/23(火) 00:13:53
度々すいません、エラーの文章が間違っていました C:\JavaGOGO\Sample3-3>java FusenExec Exception in thread "main" java.lang.NoClassDefFoundError: Dodai at FusenExec.main(FusenExec.java:5) こちらが正しいほうです
>>186 俺の勘違いでなければ、
C:\JavaGOGO\Sample3-3>java FusenExec
のように、実行時に指定する文字列はクラス名だったはずだが。
>>175 Windows であれば、javax.swing.filechooser.FileSystemView#getSystemTypeDescription(File f)
を使えば、3.5インチフロッピーディスク、ローカルディスク、 CDドライブ、ぐらいならとれる。
DVDドライブでもCDドライブって表示されるけど。
java FusenExec.java → java FusenExec
C:\JavaGOGO\Sample3-3 に Dodai.java が無い に1票
193 :
163 :2007/10/23(火) 00:42:53
同じ Vista Business でも 他社製のは問題ないことがワカタ メーカ製もしくはサードパーティ製の何かが悪いのか・・・ いろいろ消したり止めたりしたんだけどなぁ〜
いろいろと試したんですが、java(TM)6Update3をアンインストールしたら問題なく実行できました。 何故問題なく実行できたのかはわかりませんが、とりあえず解決いたしました。皆様どうも迷惑をかけました。
ちおおょぉいおおおおおおおっっっとおおおまってえええええええええい〜!〜!!! そんなわけあるかああああああああああ。 そんな解決間違っとる!!!!!!!!! 帰ってこんかい。
lib/ext にDodai.classを放り込んでるとか
なんとなくライブラリ関係の気がする。
実行できる方がおかしいんだけどなw 後はクラスパスに余計なのが指定されている、ってのが定番か
B+treeについて学んでいます。 ためになるサイトを教えて戴けないでしょうか。 Javaで書かれたサンプルプログラムや、アプレットとかがあると嬉しいです。
request.getSession().invalidate(); されたセッションが有効か無効か判定する方法はあるでしょうか?
202 :
デフォルトの名無しさん :2007/10/23(火) 12:27:11
質問させてください。 汎用的なデータクラスDataの設計を考えています。 このDataのインスタンスはString, int, double, long のどれかの配列とデータの名前を保持しており、 他のクラスなどで使用されます。それらのクラスでは、void method(Data[] data)などとまとめて 受け取ったデータをその実際のデータの型に応じてそれぞれ処理を行います。 これらのデータ型はどれを使うかは実行時にしか分からないので、あらかじめ指定はできません。 また、返り値があるメソッドを作りたいので、継承によるポリモーフィズムもうまく使えない気がします。 よって、この場合やむなく、 abstract class Data{ private String name; Data(String name){this.name = name;} String getName{return this.name} } class IntData extends Data{ private int[] data; IntData(String name, int[] data){ super(name); this.data = data.clone(); } int[] get(){return this.data.clone();} } class StringData extends Data{.... として、使用クラス側でif(data instanceof IntData)などで場合分けすると、なんかスマートでは無いですし、 一方、Genericsを使ってみても総称型は実行時に型判定できないようですので今回の用途には向かないようです。 原因として設計が下手なのでしょうが、もし定石やスマートな方法があればご教示頂ければ幸いです。
203 :
163 :2007/10/23(火) 12:33:21
結局NICまわりがタコいことがわかりまんた なんたるマヌケ Autoでなく10MB Half にすると快適 ドライバ最新なんだけど・・・ IE は別段問題なかったので やりとり頻繁だったから、とか UDP(使ってるの?)だから、とかそんなことみたい
>>202 いい手かはわからんが、Genericsと継承を組み合わせて作る。
private class BaseData<DataType> {
private String name;
private DataType[] data;
public BaseData(String name, DataType[] data) {
this.name = name;
this.data = data;
}
public String getName() {
return this.name;
}
public DataType[] getData() {
return data;
}
}
class StringData extends BaseData<String> {
public StringData(String name, String[] data){〜
}
以下同様。
>>202 こんなのとか。
interface DataVisitor {
void visit(IntData data);
void visit(StringData data);
}
abstract class Data { abstract void accept(DataVisitor visitor); }
class IntData extends Data{ void accept(DataVisitor visitor){ visitor.visit(this); }}
class StringData extends Data{ void accept(DataVisitor visitor){ visitor.visit(this); }}
void method(Data[] data) {
for (Data datum: data) {
datum.accept(new DataVisitor(){
void visit(IntData intData) { ... }
void visit(StringData stringData) { ... }
});
}
}
206 :
205 :2007/10/23(火) 12:48:21
こうすることで、Genericsのデータ型的汎用性と、 継承のポリモーフィズムを両立できる。 欲しい型のDataクラスを、継承によって作成し、 データ型によって処理を分けたいところは、ポリモーフィズムを使って各クラスに処理させる。 わかっていると思うが、GenericsではIntegerとかDoubleでボクシングするのを忘れるなよ。
207 :
204 :2007/10/23(火) 12:49:28
>>206 ごめん、204の間違いだった。206と205は別人。
204=206=207
全部のプロジェクトで使うユーティリティみたいなライブラリってどこにおいてる? common-langっていう便利なやつがあって重宝してるんだけど、 C:\Program Files\Java\jdk1.6.0_03\lib においてたせいで、バージョンがあがるたびにパスを変更しなくちゃならない。 ここにおけば便利とか、そういうコツみたいなのあるんだろうか?
209 :
デフォルトの名無しさん :2007/10/23(火) 15:32:51
Javaの開発をしてます。 今までSQLServer2005に混合モードでTorque3.0.2で接続してて問題なかったんですが、 Windows認証モードにしたところ、DBのオブジェクトが生成されずNullPointerExceptionになりました。 Jdbc2Poolを使ってたんですが、ここの設定をどう変えればWindows認証に対応できるのか、 教えてください! 他のサイトとマルチでスイマセン・・・ 若干追い詰められてます(´・ω・`)
mouseinfoではマウスの位置をフレーム外でも把握できましたが… マウスが押されたの事をフレーム外で把握できるような命令はないでしょうか…?
>>203 Vistaのドライバはまだ信用できないからな。
めげずにがんばってくれ。
212 :
209 :2007/10/23(火) 15:47:29
torque.dsfactory.xxxx.factory=org.apache.torque.dsfactory.Jdbc2PoolDataSourceFactory torque.dsfactory.xxxx.pool.defaultMaxActive=10 torque.dsfactory.xxxx.pool.testOnBorrow=true torque.dsfactory.xxxx.pool.validationQuery=SELECT 1 torque.dsfactory.xxxx.connection.driver = oracle.jdbc.driver.SQLServerDriver torque.dsfactory.xxxx.connection.url =jdbc:microsoft:sqlserver://xxxxx:1433;DatabaseName=xxxxx;SelectMethod=cursor torque.dsfactory.xxxx.connection.user = xxxx torque.dsfactory.xxxx.connection.password = xxxx 確かこんな内容だったと思います。 connection.urlのあたりはちょっとうろ覚えです;;; 2005用に直してあります。
>>210 ない。
プラットフォーム依存になるけどネイティブコードでシステムのイベントをフックしてみるとか。
>>204 >>205 ありがとうございます
お教えに従っていろいろ試行錯誤してみてました。お礼が遅くなって済みません
マルチ全部片付けておけよな
217 :
209 :2007/10/23(火) 22:14:22
>>214 情報ありがとうございます。
残念ながらintegratedSecurity=trueで解決できませんでした・・・ショック
うーん、ヤバイ(´・ω・`)
色々やってみます
下記のようにbuttonが押されるまで待機して、押された後に処理2に 進むにはどうしたらよいですか? 処理1 buttonが押されるまで待機 処理2 考えたのが、 処理1
219 :
218 :2007/10/24(水) 00:20:02
誤って途中で書いちゃいました… 下記のようにbuttonが押されるまで待機して、押された後に処理2に 進むにはどうしたらよいですか? 処理1 buttonが押されるまで待機 処理2 考えたのが、 下記なんですけどwhileループが無駄に重い気がして 処理1 while(not_pushed){ } 処理2 public void actionPerformed(ActionEvent e){ not_pushed=false; }
すみません 質問させてください お絵かき掲示板に投稿しようとすると access denied (java.net.SocketPermission (数字)connect.resolve) というエラー文が出てきて投稿できなくなるんです 心当たりのある方、お願いします
>>219 なんでそんなことする必要があるんだ?
ボタンをリスナーに登録すりゃいいんじゃないの?
JButton jButton = new JButton();
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
処理2;
}
});
>>218 GUIプログラミングをやるならイベント駆動の考え方に慣れておいた方がいいよ
>>202 突っ込みだけ
>また、返り値があるメソッドを作りたいので、継承によるポリモーフィズムもうまく使えない気がします。
ジェネリクスの導入の副作用として、シグネチャだけでなく返り値もそのサブクラスなら上書きできる。
224 :
デフォルトの名無しさん :2007/10/24(水) 02:00:09
225 :
210 :2007/10/24(水) 02:58:07
>>213 返事が遅くなりすみませんでした。
軽く調べてみた結果、JNIみたいですね…。今まで足を踏み入れた事がない部分なので正直焦っています…。
とにもかくにも、ありがとうございました。
>>223 関係ないかもしれないけど、関連質問
Object#clone()は、publicでオーバライドして、Cloneableをimplementsして
Hoge copy = (Hoge)hoge.clone()
とするのがこれまで定石だったけど、
@Override
public Hoge clone(){・・・
としておkになって、キャスト不要で問題なしでハッピーってこと?
clone()の使い方をぐぐるとどこもキャストしてるのでいまいち自信ないのさ
コンパイルエラー
>>226 そのあたりは、これから作られるクラスはハッピーになるが、
これまでに作られたクラスは互換性維持のため従来通り。
ArrayDeque#clone() の戻り値は ArrayDeque だけど ArrayList#clone() の戻り値は Object。
Javadoc みてみ。
>>228 そうなんだ!
でも互換性維持ってどういう事だろう?
ArrayList#clone()の戻り値をArrayListに換えちゃっても、
これまでのソースでキャストもObjectへの代入も問題ないと思うんだけど
instanceof での比較が引っかかるからダメって事かな?
例えば、従来は通ってた class MyList extends ArrayList { public Object clone() { ... } } っていうコードが、ArrayList#clone の戻り値が ArrayList に変わると、通らなくなってしまう 戻り値を緩める方向にオーバーライドすることは出来ない
>>183 >>187 エラーメッセージにそのまま書かれてるジャン。
Dodai at FusenExec.main(FusenExec.java:5)
FusenExecのメインクラス内のDodaiクラスがないって。
Dodaiクラスもコンパイルしないとだめだよ。
超亀レスだけど。
>>230 あ、なるほどそこですね。勉強になります
しかし、それぐらいだったらコンパイルエラーで修正も楽だしエンバグもなさそうだし
ごめんね、と一言断ってから互換無視して強行しちゃったほうがライブラリ的には綺麗な気がしますね
「Java をアップデートしたら動かなくなったんですけど」 っていうユーザのクレームが 232 に殺到するところを想像してみるといいよ
すみません。質問です。クライアントからソケットを使ってサーバーのHTTP HEADERを取りたいのですが、 ACKパケットは自動で送ってくれますか?
>>232 Javaは互換性を重要視してるからね。
新機能を導入するときも、細心の注意を払ってしてるし。
>ライブラリ的には綺麗な気がしますね ??
237 :
デフォルトの名無しさん :2007/10/24(水) 15:06:54
>>234 何のサーバかも書かずに答えられるわけが無いが、
一般的に考えて、正常なら送ってくる、異常なら送ってこない。
238 :
デフォルトの名無しさん :2007/10/24(水) 17:15:41
あの。ver6update3にしたのですが、 バージョン情報を見ると、 1.6.0_03-b05と出ているのですが、 よろしいのですか? 私的には1.6.3になるものと思っていたので。 Updateは「_」後の数字なのでしょうか?
>>237 ありがとうございます。パケットキャプチャーではSYNやACKパケットが見られるんですが、
ソケットのInputStreamには何も来ないので、JavaVMが自動で対応しているんですよね?
241 :
240 :2007/10/24(水) 17:50:17
verは1.6.0 updateは_03 ビルド番号はb05 ビルド番号は、ターゲットリリースごとに付けられるらしいです。
>>242 ありがとうございます。安心しました。
なるほどです。
244 :
218 :2007/10/24(水) 18:53:31
>>221 >>222 >>224 ありがと。
処理1をやってる間はbuttonを押しても処理1は継続、
処理1後にbuttonを押されたら処理2を開始
ってのがしたいのです。
“イベント駆動”っていう考え方に慣れてないのかも。
MessageBoxとかその他をもう少し調べてみます。
プログラムをまったくやったことない初心者です。 JAVAがいいといわれたので勉強したいのですが、 お勧めの書籍はあるでしょうか?
絵板に投稿しようとすると access denied (java.net.SocketPermission ***connect.resolve) (***はIPと思しき数字) ってでてくるんですがこれなんでしょうか…投稿できません どなたがお願いします
>>246 しつけえ、一度質問してダメだったらあきらめろ。
>>247 すみません 確かにしつこいのは承知ですが…
Collectionを実装しているオブジェクトをdeep copyする時、 Serializeを使わずclone()を使う方法で一般的な方法はありますか? 一つ一つとりだしてclone()してもいいんですが、 より良い手段があれば紹介してください。
ない。 Serializeを使うのも一般的ではない。
つーかその絵板の管理人に聞けよ
>>246 どこの絵板だよ
それで答えが返ると思っているのが間違い
private void repaintWindow(){ Graphics g = strategy.getDrawGraphics(); Graphics2D g2 = (Graphics2D)g; ... } のように2Dグラフィックを使って描写しているのですが、 描写が増えるに従ってかなり重くなるように感じます。 for文、if文とメソッド呼び出しを大量に使っているせいだと思い出来る限り減らしていますが、 javaの処理で最もCPUを使うのはどういった命令文でしょうか。 抽象的な質問ですいませんが、軽くするテクニックを教えてください。 分かりにくければソースごと上げてみます。
ソースなんかいくら眺めてもムダ プロファイリングしる
しぃペイントはことごとくそうなってしまう状態です
>>253 それほど長くなければソースごと挙げた方がいいと思う。的確にボトルネックを指摘してくれるはず。
一般論で言わせてもらうと、もともとJavaは描画系が早くない。
でも、それをふまえた上で重いといってるんだとしたら、アルゴリズムに問題があるか、
そもそも無茶なプログラムを書いてるかのどちらかだと思う。
Java上でバーチャルマシーンを作っているのですが、相談があります。 while(trur) { Byte by = readByte(); switch(by) { case ADD_INT: 処理 break: case SUB_INT: 処理 break: case IF: 処理 break } } といった形で、1バイトのイベントを見て、switchで切り分けて処理する。というのを繰り返すだけの単純なものです。 携帯電話上(iアプリ)で動かしているのですが、かなり遅いのです。 遅い原因は調べた限り2点ありまして ■readIntが遅い GOTO命令で前に戻ったりするので、DataInputStreamが使えず、自前で int n = (readByte() << 24) | (readByte() << 16) | (readByte() << 8) | readByte(); とやっており、これが遅い。 ※readByte()は独自の、現在の読み取りポイントのByteを1Byteもってきて、読み取りポイントを進める関数 ■switchが遅い ジャンプテーブルが作られて高速化されるかな…と思っていたのですがJavaはそうではないのでしょうか? 意外と遅いです 改善のアドバイスいただけないでしょうか。よろしくお願いします
258 :
ジャズ紳士 ◆rHkT/SfI7A :2007/10/24(水) 22:19:12
JavaってStringUtilsクラスを使った時点で オブジェクト指向から外れることになるよな? この矛盾、おまえらどう説明つけるわけ?
>>257 ちょっっwおまwwww
JavaVM上でバーチャルマシン走らせるとかどれだけ酔狂なんだよwwww
っていうか、メリットねえwww
>>258 オブジェクト指向であってオブジェクト原理主義ではない
261 :
ジャズ紳士 ◆rHkT/SfI7A :2007/10/24(水) 22:33:01
ああ、やっぱそう割り切ってるわけ? じゃあStaticな共通関数クラスなんて作っちゃうんだ?
キモ
細かいことは気にしない主義
もっといろんなところで割り切ってるだろ そんなどうでもいいとこじゃなくて
266 :
253 :2007/10/24(水) 22:38:17
>>254 プロファイリングについて少し調べてきます。
>>256 長いのかはわかりませんが、900行ちょっとあったので
直接は貼れません。アップローダ探してきます。
どのくらいが無茶なプログラムか、自分では判断がつかないので・・。
>>246 おきのどくですがあなたからの接続は拒否されました
>>261 現にjava.lang.Mathはそうだし。
逆に実体のある概念をstaticにするのは馬鹿ばかしすぎる。
それだけだろ。
static無かったらSingleton実現できないしな
こら
>>246 セキュリティポリシーに引っかかってるのかもな
俺はエスパーじゃないので全く分からん
>>266 eclipseにtptpでも入れとけ
>>266 なげえ、一つのクラスで900行は長すぎるよ、スレッガーさん・・・。
まあ冗談はおいといても、そのdraw部分だけでどれくらいあるんだ?
そこだけで何百行もあるなら、クラス化や関数化できてないと思わざるを得ない。
再利用できるところや意味的に分離できるところはクラス化、関数化しないとバグも増えるよ。
>>259 確かに贅沢なんですけど
「アプリは1つ。サーバーがコードを吐き出すことで、クライアントアプリを自由自在に動かしたい」
という要望でして…。
273 :
253 :2007/10/24(水) 22:52:11
275 :
ジャズ紳士 ◆rHkT/SfI7A :2007/10/24(水) 22:54:28
Java知らない人が多いみたいだね、このスレ。
ケータイはよくわからんが PushbackInputStreamはつかえねーの? switchの代わりにハッシュマップはつかえねーの?
そりゃそうだろ、知ってるなら質問スレには来ない
>>273 チラ見だけしたが、どうにも同じような関数が多いなあ。
もっと再利用できるところがいっぱいあるはず。
279 :
253 :2007/10/24(水) 23:00:20
>>278 はい、精進します・・。
追記、描写に関係ないかもしれませんが、
カーソルキーで移動、
Shift+カーソルキーorShift+z,xで回転、
エンターで視点変更できます。・・多分。
なんで状態を持つオブジェクトにstatic使ってんの?
>>279 少し動かしてみたけど、なかなかおもしろいもの作ってるなあ。
ちょっとリファクタリングしてみるから期待せずに待ってろ。
ちなみに放置してねるかも試練から、レスがつかないからって恨むなよ。
repaintWindowなんて勝手な関数つくってんじゃねえ JPanel継承したらpaintComponentオーバライドしろ
283 :
253 :2007/10/24(水) 23:13:22
>>280 何かを読んでそうしたと思ったのですが忘れてしまいました。
よく考えると確かにstaticで無くても良い気がします。
>>281 よろしくお願いします。
>>282 最初にpaintComponentを使ってみて、
repaintを使うと思い通りのタイミングで描写できず、
調べて見たところ自分で作るといいとあったので使ってみました。
>>279 ごめん、リファクタリング無理だわ。
つっこみどころが多すぎてどこから手を付ければいいのかわからん。
例えば、TetrisMainの80行目あたり、押されたキーの識別に実数使ってるけど、これって何か意図があってやってるの?
普通は、 if (code == e.VK_AみたいにKeyEvent上で定義されてる定数を使うものだよ。
全体を見た感じからすると、C言語から移ってきた人じゃない?
それなりに動いてるところからすると、実力はあるみたいだけど、
いかんせんJavaをほとんど理解せずに書いてるから、Javaの長所を殺してる感じだなあ。
今でこれだけ動くものが作れるんだから、OOPやJava言語の仕様を理解すればもっとスマートにかけると思う。
285 :
253 :2007/10/24(水) 23:26:18
>>284 ありがとうございました。
私はeclipseを使っているのですが、
そのcodeを定数にしたのは、e.VK_Z等を使った時警告が出て、
内容を考えても理解し難かったため、暫定的に定数を置いているものでした。
API仕様の説明から見ておかしいとは思ったのですが、
先におおまかに動作するよう作りたかったので、
迷った末警告の出ない方にしました。直しておきます。
もっとjavaを勉強してから出直してきますね・・
286 :
253 :2007/10/24(水) 23:29:48
って今見直したら簡単な警告でした、なんで理解できなかったんだろ・・?
>>286 Eclipse使ってるならフォーマット機能も使った方がいい。C-S-Fのショートカットで実行できる。
3.3では保存時に自動でフォーマットしてくれる機能もついたからマジおすすめ。
まあイコールの桁をそろえたいとか思うかも試練が、なれればこっちの方がよっぽど便利。
自動フォーマットはどうなんだろうな? フォーマットしないアホに強制させるという点は評価できるんだけど、1ラインごとに保存する自分にはうざったい。 自分だけ切るわけにもいかないからなぁ
>>283 >最初にpaintComponentを使ってみて、
そいつはすまなかった。
でもこの程度のスピードならアクティブレンダリング使わなくてもpaintComponent + JPanel#repaintいけると思うんだけどね
>>250 了解です。
いままでどおり地道にやることにします。
3Dテトリスすげーな 面白そーだね
>>253 はライブラリを使うのに抵抗があるみたいだけど、俺はやっぱり使うべきだと思う。
使い込まれたライブラリだからバグもないし、気にしていたスピードも段違いに上がる。
リリース時はjarファイルに入れてしまえばライブラリを使っててもJREさえあればどこでも動くし(はず)。
293 :
デフォルトの名無しさん :2007/10/25(木) 02:13:09
ProcessBuilder pb = new ProcessBuilder("ある実行ファイル"); Process p = pb.start(); int ret = p.waitFor(); System.out.println("終了"); とすると、リナックスでは最後に終了と表示されるまで動作するのですが、 ウインドウズだと(おそらくwaitFor()のところで止まり)途中で止まります。 タスクマネージャで確認するとプロセス(上記で言う”ある実行ファイル”)は動いているようなのですが、 いつまで経っても終わりません。 かといって落ちているわけでもないようですし。。。 ウインドウズの場合は何が起こっているのでしょうか?
ステップ実行したらどうなりました?
的外れでした。 ある実行ファイルが終わらなければwaitから抜ける訳ありません。 ある実行ファイルが悪の根源です。 そいつを何とかしてください。ウィンドウズがどうこう以前のもんだいです。
>>253 もういないかもしれないけど、プロファイル取ってみた。
draw で食いつぶされてる。
単に描画が多すぎるだけみたいだから、
ブロックをあらかじめ Image で持っておいてコピーするとか
下で固まったブロックを毎回再描画しないようにするとかする必要があると思う。
297 :
293 :2007/10/25(木) 11:26:16
>>295 「ある実行ファイル」ではログを吐くようになっていて、今回のケースではログが一切出力されません。
「ある実行ファイル」の最初で止まっているような雰囲気です。
ちなみに、この「ある実行ファイル」はウインドウズから直接実行できることは確認しました。
このリナックスで動作し、ウインドウズでも直接なら動作する「ある実行ファイル」がやはり悪いのでしょうか?
>>297 それはやっぱりある実行ファイルのある場所に悪いところがあるんじゃないかな。
ある実行ファイルが悪いある
waitFor() で止まったらタスクマネージャから 「ある実行ファイル」 のプロセスが残ってるか確認すれ。 もし存在するなら強制停止して続きが実行されるか確認すれ。
>>293 標準出力や標準エラー出力に文字列残ってるんじゃね?
p.getInputStream().close(); p.getErrorStream().close();
int ret = p.waitFor();
とかして明示的に破棄してからサブプロセス終了待ってみれば?
302 :
デフォルトの名無しさん :2007/10/25(木) 16:07:25
みなさん助けてください! ある会社のある人が作ったあるプログラムがあるところで止まったまま動きません。 どうしたらいいですか?
強制終了させるといいと思うよ
304 :
デフォルトの名無しさん :2007/10/25(木) 16:11:25
死ねば良いと思うよ。
まず最初に、プログラム動かなくて困るかどうかを考えてみたらどうだろう。
308 :
デフォルトの名無しさん :2007/10/25(木) 16:59:01
あるプログラムはあるデータを読み込んである結果を出力するものなのですが ある業務に重要なため止まってしまうと大変困ったあるよ。助けてほしいあるよ。
プログラムが止まって業務に支障が出るのなら、上司に説明し指示をあおげ。 上司はにちゃんに書き込んで助けを求めろって言ったのかい?勝手な事をしたら後で問題になるかもよ。
310 :
デフォルトの名無しさん :2007/10/25(木) 17:17:27
あるある。そういうこと。
311 :
デフォルトの名無しさん :2007/10/25(木) 17:36:58
上司は今、ちゅごくに帰ったあるよ。連絡とれないあるよ。
log4jで1日ローテーションでログを吐いているのですが、 バックアップファイル名は変更できないのでしょうか? デフォルトだと XXX.log.YYYY-MM-DD となっているやつです。
java.util.loggingについて質問です。 「詳解Javaプログラミング」という本を読んで勉強しています。 myfileというプロパティファイルと、以下のような、LogTest.javaというソースファイルを作成し、 --LogTest.java-- import java.util.logging.Logger; public class LogTest { public static void main(String[] args){ Logger logger = Logger.getLogger("prv.tagawa.LogTest"); logger.severe("Power lost -- running on backup!"); logger.warning("Database connection lost, retrying ... "); logger.info("Start up completely"); logger.config("Server configuration: standalone, JVM version1.4"); logger.fine("Loadig graphing package"); logger.finer("Doing pie chart"); logger.finest("Starting bubble sort: value = " + 42); } } --myfile-- # Set the default logging level .level = FINEST # Direct output to the console handlers = java.util.logging.ConsoleHandler java -Djava.util.logging.config.file=myfile.properties LogTest と実行したのですが、コンソール上に何も応答がありません。 java LogTestのときは、INFOレベル以上の出力があるのですが、propertiesファイルの設定がおかしいのでしょうか? どなたか教えてください。
>>314 実行しているディレクトリの構成(ソースの場所、クラスファイルの場所、myfileの場所)を書くべし
多分、myfile.propertiesが参照できていないんだと思われ
実行しているディレクトリ:c:/cygwin/home/***/practice/java ソースのある場所:同じ場所 myfileのある場所:同じ場所 クラスファイルのある場所:同じ場所 です。
ファイル名がmyfile.propertiesじゃないといけないと思って、名前を変えて実行しましたが、挙動は変わりませんでした。
318 :
253 :2007/10/25(木) 19:27:53
>>296 遅くなりましたがありがとうございました。
コピーするようにしてみます。
319 :
デフォルトの名無しさん :2007/10/25(木) 22:18:55
320 :
デフォルトの名無しさん :2007/10/25(木) 22:27:57
ソース嫁ドアフォ! System.err.println("Usage: java Server " + "[-control <password> <port>] " + "[<servicename> <port> ... ]");
321 :
319 :2007/10/25(木) 22:34:26
あ、すみません。 Serverのコマンドは java Server -control secret 3000 Server$Time 3001 Server$Reverse 3002 です。
>>321 portは自分で指定しているだろ 3000と。
hostは質問しても解るわけねーだろwww
同じマシンでやってるならばlocalhostだが
323 :
デフォルトの名無しさん :2007/10/25(木) 22:42:01
これと、 Usage: java Server [-control <password> <port>] [<servicename> <port> ... ] これ java Server -control secret 3000 Server$Time 3001 Server$Reverse 3002 よーく見比べてみよう。
324 :
デフォルトの名無しさん :2007/10/25(木) 22:44:17
>>319 ,321
java 以前にネットワークを勉強してからでないと、サーバプログラミングは無謀すぎるよ。
325 :
319 :2007/10/25(木) 22:58:28
>>320 ,323
java Server -control secret 3000
ということですか?
すみません。どんなことを指摘してくださってるのかわかりませんでしたorz
>>322 java GenericClient localhost 3000で接続できました。
3001,3002も同様です。
ありがとうございます!
>>324 なるほど。。。
コレを機に勉強しようと思います。
回答してくださった方ありがとうございました。
326 :
293 :2007/10/26(金) 01:28:28
>>301 ビンゴ!
出力がたまっていたのが原因でした。ありがとうございました。
327 :
デフォルトの名無しさん :2007/10/26(金) 02:15:37
現在、ボウリングのデータを入力してデータ変換して表示したり、分析する システムを作っているのですが、データ変換するときに何らかの推論機能を 追加しようと思うのですが、何かいい推論機能があれば教えてください。 よろしくお願いしま〜す
推論機能とはなんだか想像もつかん。 入力補完でもしてくれんのかね?
>>327 データ変換だけじゃどういう変換をしてるのか誰もわからん。
何を分析するの?推論ってどうなることを推論したいの?
要するになーんもわかんねーんだろ?っっっww
331 :
デフォルトの名無しさん :2007/10/26(金) 09:20:53
アプリを作っているのですが、ここからどうすれば動くのか七転八倒してます。 プログラムは、問題に1〜3のボタンを押すことで答える三択問題ゲームで、合計10問。 最後に正解数が得点として表示されます。 もしよろしければ、アドバイス等いただけませんでしょうか。 ホントにテンパってます。よろしくお願いします。 import com.nttdocomo.ui.*; import java.util.*; //kakezan(キャンバス) public class B extends Canvas { //シーン定数 private final static int; S_title =0,//タイトル S_play =1,//プレイ S_kekka =2,//得点画面 //システム private static int keyEvent //キーイベント private static Graphics g; //グラフィックス
332 :
デフォルトの名無しさん :2007/10/26(金) 09:21:51
//メインループ void exe(){ string str; Image img; try{ //システム int scene =S_title; int init =S_title; int stage =1; long sleepTime =0L; g=getGraphics(); //イメージの読み込み Image[] image=new Image[12]; for(i=0;i<13;i++)image[i]=getImage(i+".gif"); //バックライトオン PhoneSystem.setAttribute( PhoneSystem.DEV_BACKLIGHT, PhoneSystem.ATTR_BACKLIGHT_ON); } //共通の初期化 scene =init; init =-1; keyEvent=-999; } //アプリの終了 if(keyEvent==Display.key_soft0){ IApplication.getCurrentApp().terminate(); }
333 :
デフォルトの名無しさん :2007/10/26(金) 09:22:34
//タイトルの処理 if(scene==S_TITLE){ //キーイベント if(keyEvent==Display.KEY_soft1)init=S_1; //プレイの処理 else if() int[] tensu = new int [9]; if(scene==S_1){ if(keyEvent==Display.KEY_soft1)init=S_2; tensu[1]=1; else if(keyEvent==Display.KEY_soft2)init=S_2; tensu[1]=0; else if(keyEvent==Display.KEY_soft3)init=S_2; tensu[1]=0; else() 2〜10同様 if(scene==S_kekka){ g.drawString("合計 = "+tensu[1]+tensu[2]+tensu[3];tensu[4]+tensu[5]+tensu[6]+tensu[7]+tensu[8];tensu[9]+tensu[10]+" 点"); if(keyEvent==Display.KEY_SELECT)init=S_title; }
>>327 要件のことはボウリング板にでも言って聞いた方がいいんじゃないか
>>331 コンパイルすら通らないし、com.nttdocomo.ui.*; ってなんだ?
携帯用のアプリか?
Javaの文法とかを学習した上で携帯アプリ作れ、な。
336 :
デフォルトの名無しさん :2007/10/26(金) 10:17:40
発表用に、明後日までに作りたいんです。 それで本買ってやってみてるんですが、いかんせん時間が足りなくて…。 携帯用の本を2冊読んで、JAVAの基礎が分からないどうにもならないと悟り、 入門書をざっと読んで、今週丸つぶしでトライしてますが、こんな感じです。 英語の方が、よっぽど簡単に思えます。 もしよろしければ、このプログラムに付け足すべきor変えるべき命令なんか、 思いついたら教えていただきたいです。 よろしくお願いします。
発表用? 課題って言ってなかった?
確認した。課題って言ってたのはここのスレじゃ無かった。 つーか向こうの方が書き込み時間早いんだから向こうで答えてもらえよマルチ君。
339 :
デフォルトの名無しさん :2007/10/26(金) 10:50:37
>>331 ひどすぎるね。カンマ , とセミコロン ; の使い分けすらできていない。
eclipse みたいな java 専用エディタを使えば、こんな凡ミスは無くなると思うが。
340 :
デフォルトの名無しさん :2007/10/26(金) 10:54:11
>>336 夏休みの宿題を8月末に全部やろうとして慌てている中学生ですか?
341 :
デフォルトの名無しさん :2007/10/26(金) 11:23:49
>>336 カスは巣に帰れ。ここはお前専用のスレじゃない。
Javaもできないような奴が携帯アプリに手をだすなよ……
344 :
デフォルトの名無しさん :2007/10/26(金) 11:43:51
サーブレットについて質問です。掲示板情報をの色々を詰めるArrayListインスタンス が一つあるとしますよね。Aがトップページから本ページにアクセス画面の切り替えを行っている間 Bがページの切り替えを行った場合、ArrayListはAが使用中なので Bが切り替えを行うとエラーが出るんですか?
>>344 説明不足で何が言いたいのかよくわからないが、同期・非同期のことを聞いているのだとすると、
ArrayListはVectorと違いマルチスレッドでも使える。
んで、心配してる同時にアクセスした場合だが、一方のアクセスが終わるまでもう片方はアクセスできない。
終わるまで待ってるはず。といっても一瞬だから、パフォーマンス的にはほとんど問題ない。
これ以上マルチスレッドについて聞きたいなら専用スレいった方が早いか。
>ArrayListはVectorと違いマルチスレッドでも使える。 逆じゃ? ArrayList は同期されてないよ
>>345 それVector
つか並行処理に使うコレクションは用件によって微妙に変わる
Java5以上ならjava.util.concurrentを覗いてみることをお勧めする
348 :
345 :2007/10/26(金) 12:07:47
ごめん、その通りだった。C++やらC#やってたせいでごっちゃになってた。
349 :
344 :2007/10/26(金) 12:10:04
とても分りやすい説明ありがとうございました。
>>344 そのArrayListがセッション間で共有されないなら問題ない。
つまり、サーブレットでこうしているなら問題なし。
ArrayList list = new ArrayList();
list.add(...);
request.setAttribute("list", list);
が、これをセッションに入れると問題が出てくる。つまりこう。
ArrayList list = (ArrayList)(session.getAttribute("list"));
list.add(...);
351 :
デフォルトの名無しさん :2007/10/26(金) 14:13:37
データベースの削除されてない行から無作為情報をに取り出すメソッドとか 有ります?
352 :
デフォルトの名無しさん :2007/10/26(金) 14:16:57
353 :
デフォルトの名無しさん :2007/10/26(金) 14:21:02
例えば、適当なmp3ファイルがあるとして、 そのファイルに関連付けられてるソフト(メディアプレイヤーとか)、で実行するにはどうすればいいですか?
Runtime.getRuntime().exec("start c:\\hoge\\music.mp3");
355 :
デフォルトの名無しさん :2007/10/26(金) 14:48:28
try{ Runtime.getRuntime().exec("start E:\\test.txt"); }catch(Exception ex){ System.out.println(ex); } java.io.IOException: Cannot run program "start": CreateProcess error=2, ?w?????t?@? 何で動かない…
cmd /c start
357 :
デフォルトの名無しさん :2007/10/26(金) 15:23:33
サンクス、サンクス
358 :
331 :2007/10/26(金) 15:42:12
マルチになってしまって申し訳ないです。 向こうに書いた後、こっちを発見したので…。 会社の先輩から、プレゼン用に週末までに作って来いといわれて、 週頭から本を読み始めました。 eclipse、使わさせていただきます。 ありがとうございます。
359 :
デフォルトの名無しさん :2007/10/26(金) 15:44:16
>>358 あんたアホか?
会社の仕事ならば会社の先輩に相談するのが常識だろ
360 :
331 :2007/10/26(金) 15:51:12
全員プログラムはやったことないです。 新規事業プランの提案なんですが、 サンプルがあった方がいいということで、こういうことになりました。 まわりにプログラムに詳しい人が全くいないので、ここで相談させていただいたわけです。 不愉快だったら申し訳ありません。
361 :
デフォルトの名無しさん :2007/10/26(金) 16:07:49
362 :
デフォルトの名無しさん :2007/10/26(金) 16:18:07
>>355-356 よく考えるとOS依存じゃん…
OSに依存しない方法ない?ここまでPure Javaで作ったんだ…
java6ならDesktop.openが使えるかな
364 :
デフォルトの名無しさん :2007/10/26(金) 16:39:51
>>363 おーーサンクス。これならデスクトップがサポートされてたら動くね。
ひと段落着いたので晩ご飯の材料買いに行ってくる。
俺カレー希望
今日の夕飯はいらないや
367 :
デフォルトの名無しさん :2007/10/26(金) 17:24:59
>>331 パワーポイントとかエクセルでも使ってろ
byte配列を、16進数表示のString文字列にするにはどうすればいいでしょうか?
byte[] binary = new byte[256]; StringBuffer = new StringBuffer(binary.length * 2); for(int i=0; i<binary.length; i++){ buffer.append(Character.forDigit((binary >> 4) & 0x0F, 16)); buffer.append(Character.forDigit((binary >> 0) & 0x0F, 16)); } String hex = buffer.toString();
binary[i]&0xFFで基数変換した方がスマートだと思う。
わざわざ文字列長調べて 0 パディングするのがスマートなの?
そういやJavaではビッグエンディアン・リトルエンディアンの問題ってないの? CPUが違えば結果も変わりそうなんだけど、そこら辺はVMで上手く処理してるのかな。
374 :
368 :2007/10/26(金) 18:19:56
ありがとうございます。
自分で考えてたのは、
>>369 さんのを
for (int i = 0; i < binary.length; i++) {
buf.append( ((Byte)b[i]).toString());
}
にしたやつなんですが、もっと何か一行でできるようなのはないかなと思いまして。
あ、0で埋めたいわけね〜 勘違いしてました。すみません。
376 :
デフォルトの名無しさん :2007/10/26(金) 18:57:16
1行 for (int i = 0; i < binary.length; i++) buf.append( ((Byte)b[i]).toString());
>>374 Byte#toString って 10 進数じゃない?
378 :
デフォルトの名無しさん :2007/10/26(金) 19:04:12
StringBuffer buffer = new StringBuffer(binary.length * 2); for (int i: binary) buffer.append(String.format("%02x", i)); String hex = buffer.toString();
String(byte[] bytes); でどうぢゃ
380 :
368 :2007/10/26(金) 21:18:16
色々ご意見ありがとうございます。
1行っていうのは処理全部で1行ってことです。
そういうメソッドがあるかなと思ったんですけど、なさそうですね。
Stringになるなら10進数でも16進数でも滅茶苦茶なエンコードでもいいんですが、
>>379 は大概エンコードできませんよね?
大学でどうしてもJAVAプログラミングの講義を受けないといけないのですが プログラミングのプの字もわからないド素人にもわかりやすい入門書ってどれなんでしょうかね? 色々あってどれがいいのかが・・・
>>380 String(byte[] bytes, String charsetName)ってのは?
384 :
デフォルトの名無しさん :2007/10/26(金) 21:39:48
結構適当な説明ってのでも有名だけど、ソフトバンク出版の「やさしいJava」が本当にやさしくておすすめ。 読み終わって定着してきたら修正すべき考えがところどころあるけど、そんなのも含めて親しみやすさからこれをすすめます。
>>384 ダメ、絶対
あれは解った気にさせる最悪の本
書いてあること嘘ばかり
386 :
デフォルトの名無しさん :2007/10/26(金) 21:48:08
いや、それは上でも述べたように分かってるんだけどさ、一番初めに読む物としてはおすすめだよ プログラミング始めたころなんて、本質叩き込まれても拒否反応でちゃうだけじゃん? 「仕方なく勉強する」という考え方のようだから尚更これがいいと思ったんだけどな。
>>386 難しい本を嫁って言うわけじゃないよ
やさしく書きすぎているんで、読んでも何も習得できないんだよ、あれ。
for文の文法は書いてあっても、処理を繰り返す為にfor文を使うという本質が抜けている最悪の本なのよ
389 :
デフォルトの名無しさん :2007/10/26(金) 21:55:16
春先になったらJavaWorldで新人に向けた特集でもやるんじゃね?
JavaWorldって廃刊じゃね?
392 :
デフォルトの名無しさん :2007/10/26(金) 22:21:18
今はITアーキテクトって言うんだっけ
JSTL 1.1 + Tomcat 5.5 を使っていて <c:out value="234 + 123 = ${234 + 123}"/> というタグが HTML 変換後に 「234 + 123 = ${234 + 123}」 という出力になってしまうのですが 何がおかしいのでしょうか? どうも拡張タグは動作してるのに EL が利いていないようなのですが。
>>393 その記述で、なにを期待しているんだ?
System.out.println("234 + 123 = ${234 + 123}");
を実行して出力しているのと大差ないぞ
>>394 単に計算結果を出力するだけのサンプルなのですが。
<c:out> の value 属性内の EL って処理されないってことですか?
>>395 おまいの脳内VMでは、System.out.println("1+1"); は2と表示されるのか?
>>396 あの、JSP の中での話なんですが何の言ってるんですか?
401 :
デフォルトの名無しさん :2007/10/26(金) 23:54:10
えええええええええええええええええええええええええええええええええ やさしいJavaだめなの?もう半分くらいやったのに(´・ω・`)
だめ
403 :
デフォルトの名無しさん :2007/10/27(土) 00:10:14
バイナリファイルの読み出しする時に RandomAccessFileとかのreadShort()とか使ってるんだけど 一度にファイル構造をごっそり読み取るのってどうするの? Cで構造体にごっそり読み込む感じのがしたいんだけど。
無理。 ファイルを作るのも Java プログラムなら ObjectOutputStream#writeObject()/ObjectInputStream#readObject() を使え。
>>405 サンクス
やっぱ読み込むデータのクラス作って内装するしかないか。
407 :
デフォルトの名無しさん :2007/10/27(土) 02:43:32
構造体 なつかしい。
お前らちゃんとスレタイ嫁
【初心者】【大歓迎】
つまり回答者も初心者なんだよ!
>>400 JSP+ELでぐぐr
JSP2.0の策定の時、散々話題に上っただろうが
>>401 後輩があれ見てJavaをわかった気になってたが、
実際に書かせてみると本当に本一冊読んだのかと疑うほど書けなかった。
まあ、入門には最適みたいだから、これで満足せず次の本を読んでいけば大丈夫だと思う。
その解った気にさせてしまうのが最大の問題かと思われ 簡単なことしか都合よく書いてないから
女が書いた本は女にしか理解できない
やさしいJavaの何が駄目かわかるようになるまでがんばればいいよ。
413 :
デフォルトの名無しさん :2007/10/27(土) 13:23:53
今まで、VBScriptを使ったActiveServerPages+MicrosoftAccessで、行事予定の登録と表示を行うという すごく簡単なWebアプリケーションを作ったことはあるんですが、 今度はJavaでスタンドアロンアプリケーションを作ることになりました。 ダウンロードして初心者サイトを参考に一週間ぐらい触ってみましたが、 全然考え方が違うのでなかなか理解できません。そこで3つ質問したいのですが、 1、Javaにおけるクラスというのは、ASPにおける各ページのような感じのものと考えればいいのでしょうか。 他のページからRequest.Formでデータを受け取って処理を行うASPと同じように、 インターフェースか何かで他のクラスからデータを受け取って処理すると考えればいいのですか? 2、Javaアプレットではなく、スタンドアロンなJavaアプリケーションのユーザーインターフェースとして、 HTMLを用いる(Webブラウザを経由させる)ことは可能ですか? 3、ゼロから始まって、「最初にこれをして、次にこれをして、最後にこれとこれを組み合わせて完成」と いうように、小規模なJavaアプリケーションの開発をゼロから完成までトレースできるような 参考書などがありましたらぜひ教えてください。 すみません。よろしくお願いします。
要約すると「JavaでWebアプリが作りたいんだけど、どうすればいいの?」ってことでおk?
415 :
413 :2007/10/27(土) 15:41:07
>>414 ええと、Webアプリではなくて、回線を用いずにパソコン本体内だけで完結する
デスクトップアプリケーションです。何か紛らわしいことを書いてしまいすみません。
416 :
デフォルトの名無しさん :2007/10/27(土) 15:42:38
>>413 サーブレット・JSPの参考書見れ。別に自分でやるなら、勉強がてら
サーブレットとJSPで作ればいい。おまいさんのやりたい事が全部できる。
基礎からのサーブレット/JSP SE必修
↑やればおk
417 :
デフォルトの名無しさん :2007/10/27(土) 15:44:53
>>415 サーブレット・JSPは回線使っても使わなくてもできるWebアプリだよ。
いってみればASPを自分のパソコンでIISで実行しててブラウザでできるやつ
つーかJSPとか使わなくても普通にHTMLとか使えるわけだが。
419 :
デフォルトの名無しさん :2007/10/27(土) 16:04:41
くそ難しいサンプル本何度もやり込めば自然と腕上がるよ
>>413 1. 違う。ASP のページに相当するものはサーブレットクラスや JSP。AWT/Swing なら
イベントリスナクラス。ASP で使えるその Request やら Form やらのオブジェクトが、
どういうプロパティを持って何を呼べばどう動くかを設計するのがクラスを設計するということ。
オブジェクトの「型」がクラスです。
2. 技術的には可能だがトリッキーすぎて初心者にはお勧めできない。ぱっと思いつくのは
アプリが作った HTML を Swing の JEditorPane (超貧弱) や SWT (非標準) の Browser に
食わせるとか、簡易HTTPサーバ起動してブラウザ起動→ブラウザ終了時にサーバも終了とか
(ソケット通信とHTTPプロトコル実装が必要)。
3. 知らん。数作って苦労しる。
業務で使う専用端末なら、サーバの終了とかいらないんじゃね? Tomcat動かしっぱなし。
>>421 おいおい。
サーバを綺麗に終了させることは重要なことだぞ。
423 :
413 :2007/10/27(土) 22:34:13
>>416-421 色々と教えてくださりありがとうございました。何となくではありますがASPとJavaの違いが分かりました。
サーブレットやJSPなどに関しても勉強してみようと思います。
424 :
デフォルトの名無しさん :2007/10/28(日) 00:54:10
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
>>422 ( \ / _ノ | |
.\ “ /__| |
\ /___ /
>>424 >>422 じゃないけど、何考え込んでるの??
重要なことだぞ?中規模以上のシステム基盤の設計経験ないのか?
もしくは運用経験
サーバ製品が単一で存在するわけないだろ
いくつかの製品が連携するシステムだってあるんだからさ・・・
単に話の流れに対してレスが頓珍漢なだけだろ。
javaの性能測定の観点を教えてください。 今度、とある製品のapiの性能測定を任されることになったんだけど、 性能測定って一体何やればいいのか、正直わからない。 いきなりマニュアル渡されて、 ビルド環境を構築したまでは良かったんだけど、 「じゃ、システムのボトルネックみつけて。 大量なデータを登録するとき、でるとおもうから。 やり方は自由でかまわないよ。」 なんていわれても、やったことないし、わけわかめ。。。 調べた感じだと、↓みたいなことがわかればいいみたいだけど これ以外に何かありますか? ・どのメソッドが処理時間を消費しているのか ・どのメソッドが頻繁に呼び出されているのか ・どのオブジェクトがヒープを大量に消費しているのか
>>427 特定しますたwwwwww
おまえさ、まかせるとはいったけど、観点が分からないならちゃんと聞けよ
>>428 特定したならお前だってわかってんだろ
うちのマネージャがプログラムできないの
別部署を納得させるためのデータがほしいだけなんだよ
業務連絡は会社で。
測定するメソッドを繰り返し呼び出すプログラムを作って、それを動かしながら プロファイラ使って計測。JProfiler ってのがシンプルな割りに必要な情報は 取れるので長いこと使ってるけど、最近はもっと良いのがあるかもしれん。 オヌヌメのプロファイラあったら誰か教えて。
textfieldに入力した値を読み込んで、 その値を計算に使いたいのですが、 getText()をどう使ったらいいのですか。教えてください。
String s = textField.getText(); int i = Integer.parseInt(s); とか。 実数を扱うのなら double d = Double.parseDouble(s); とか。
String num = field.getText(); int value = Integer.parseInt(num); field.setText(String.valueOf(value * 2));
ありがとうございます。ということは、 TextField text[]; String ,str[]; と定義したら、 for(int i = 0 ; i < 10 ; i++){ str[i]= text[i].getText(); } で、まず値はstrに入りますか?
436 :
デフォルトの名無しさん :2007/10/28(日) 08:32:25
>>427 この会社におけるボトルネックは僕です。
早急に解雇して下さい。
double m[] = new double[10000000]; としたらjava.lang.outofmemoryerror: Java Heap Space とでるんですが、これはどうしたらいいんでしょうか? どうしても10000000個のエレメントをArrayに入れたいのです。誰かお助けを。
>>437 およそ10MBx8=80MBもの容量を確保しようとしたから、VMがそんなに取れないってエラー吐いてる。
VMのオプションでヒープ容量を増やすヤツがあったはずだから、それを使えばいいと思うけど、そもそも何に使うの?
なんでもないプログラムでそんなコードを書くのは設計が間違ってるとしか思えない。
課題でn=100000000 の場合、????の値を求めよというのがあったので。 ありがとうございます。
>>439 ????はなんだ?
丸投げではないから解答はここでは示さないけど、ロジックの組み立てに問題があるんじゃないのか?
つまり、
nが少ない場合は配列を使えば出来ますね。
nが多い場合は工夫して配列を使わないようにしましょう。
というのが、課題の意図な気がするぞ。
>>440 ありがとうございます。実は問題は:
0<x<1、0<y<1であるとき x^2 + y^2 <=1 となる確立は何か? xとyをそれぞれ10000000回ランダムで選んだときの確率を求めよ。。。という問題です。
これをプログラムにして解けという問題なんですが。 どなたかどうやるかご存知でしたら教えてください。本当に助かります。
何で配列が絡んでくるんだよw
>>442 もう本当に初心者で配列での方法しかわかりません(TдT) 本当にバカですね私。
>>440 今こんな感じです
int int1 = 10000000
double j[] = new double[int1];
double k[] = new double[int1];
double l[] = new double[int1];
for (int i = 0; i <= int1 - 1; i++)
{
j[i] = Math.random();
k[i] = Math.random();
l[i] = Math.pow(j[i], 2) + Math.pow(k[i], 2);
if (l[i] <= 1) counter++;
}
double prob = counter/int1;
System.out.println(prob);
指定範囲の xの値をrandomで求めます。 yの値をrandomで求めます。 数式に代入してtrueならカウントします。 以上を10000000回繰り返します。 カウント数/10000000*100が求めるものだと思います。
>>445 なるほど。。Booleanを使うのですね。やってみます。どうもありがとうございます。
ああ、円周率を求める問題ね。俺も昔やったよ。
つーかそもそも配列を使う必要どこにもねえw
初心者のころは多かれ少なかれ皆アホなことをやるもんだ
>>451 ありがとうございます>< がんばって上達してみせます!
繰返し処理 → 配列とfor文! 典型的な「やさしいJava脳」です
どうでもいいけどやさしいJavaってアンチ多いよな
売れているのはどうでもいい。 ただ、現場に被害が及ぼしているがアンチを生み出している理由。 読んで基礎を理解したと勘違いさせるからね
そんなに間違いが多いのか? 風評だけじゃなくて、具体例を出せよ。根拠なく批判してもウザいだけ。
457 :
デフォルトの名無しさん :2007/10/28(日) 12:06:08
java始めてからさり気なくスルーしてたんだけどラッパークラスなどの意って intだったらIntegerの機能をお手軽に使うためのクラス?
458 :
デフォルトの名無しさん :2007/10/28(日) 12:08:25
netbeansのvisualwebpackをやってるんですが 今数冊出てるJavaStudioCreator本って参考になりますか? どれがいいんでしょうか?
間違いというかテキトーでいい加減。 1つだけ例をあげておくが、それ以上はスレ違いなので自重 例外に関する話。 catch(Exception e)とか平気で書いて例外を握りつぶしてきたアホがいたんでヒアリングしてみた。 俺「例外はExceptionでcatchしちゃまずいね」 アホ「どうしてです?」 俺「問題が起きたならば適切に処理するか、上に通知しないとわからなくなるでしょ」 アホ「でも、やさしいJavaでは例外が発生してしまう時にはtryで囲め、と書いてありましたよ」 俺「例外ってどういう時に発生するかわかる?」 アホ「解らないから、catchするんじゃないですか?」 俺「・・・・」 実際に例外に関するところを流し読みしてみた。 すると、例外の説明は適当でコンパイルが通るようにはどうするかしか書いてなかった
>>457 オブジェクトとしてintを使いたい為にある
逆に言えば歴史的な背景でintをオブジェクトではなくプリミティブとしたのがJava
intには基本的な演算しか出来ないけど、Integerは様々なメソッドが定義されている。
まあ、Rubyなんかはintに相当する型も全てオブジェクトなんだけど、Javaが出来た頃はパフォーマンスやら色々な点からやらなかったんだわ
461 :
460 :2007/10/28(日) 12:18:15
補足すると、Tiger(5.0)で追加されたボクシングは、ある程度はプリミティブとオブジェクトの相互変換をやろうっていう試みね。 List list; list.add(100); // = list.add(new Integer(100)); とか書ける様になったのはかなり楽になったわけだ 逆に変換に惑わされて、はまる時もあるんだけど・・・
>>461 たしかにTigerですごく楽になった。いちいち手動でボクシングするのが、すごくだるかったから。
でも、そこら辺が隠蔽されたせいで、なんでGenericsでプリミティブ型が使えないのかわからない初心者が増えたけど。
463 :
デフォルトの名無しさん :2007/10/28(日) 12:23:52
植田佳奈 さんってこんな人だったの・・・?
相手の人、可哀想;;
http://www.nicovideo.jp/watch/sm1282003 25分14秒付近より
●植田佳奈、最近人生を丸投げしたくなることは?というフリに、「こないだー、悪口を絶賛喋ってた
ら、後ろに本人いて(笑)あんなことほんとにあるんだ!って思って、超びっくりしちゃった(笑)
実名って言うかその人しかあり得ないような悪口をバンバン言ってたの。そしたら、”そんな風に思っ
てたんだ、ごめんね”って逆に謝られちゃって…(笑)」
>>462 それは初心者というよりは、複雑化してきたJavaの問題だよな。
ちゃんとTiger以降の機能を使える奴を育てるには、半年程度は1.4で開発させるべきだよ。
うちでは、プロジェクトで新人には1.4文法で書かせている
後からレビュー時に5.0の機能を説明しつつ修正
手間はかかるけど、ちゃんと育てないと後で泣く
465 :
デフォルトの名無しさん :2007/10/28(日) 13:21:42
超初心者質問なんですが Eclipseで「実行」を ショートカットでやるときどうやるんですか? Shift+Alt+X,Jらしいんですが 押しても実行されません(´・ω・`)
>>465 エディタに開いているファイルが、Mainメソッドを含んでいるか?
あと、Eclispeスレで聞いた方がいいと思うぞ。
Ctrl+F11は?
>>467 それは再実行だから、一度しないと実行できないはず。
それと、3.1か2あたりで、Ctrl-F11の実行対象が変化したから、一度設定を見直す必要あり。
Javaでスレッドがタイムアウトするってどういう意味なのですか?
>>469 もう少しそのフレーズが出てきた前後関係を書かなきゃ解らんよ
eclipseでJ2EE開発する場合は、動的Webプロジェクトってので開発するのがデフォなんでしょうか? 変なフォルダ階層が作られたりweb.xmlへの記述も自動化されちゃったりservlet作ると意味不明な雛形が作られたり… 色々決まり事があって逆に分かりづらいです。 総合開発環境ってのはこういうもんなんでしょうか?
フォルダ階層はプロジェクトの設定で変えられるし、サーブレットも web.xml も手書きで書けるし。 今まで秀丸+コマンドプロンプトでやってきたならオレ流が出来てるだろうからもどかしいのは分かる。 つまりそーゆーもんです。
>>471 色々と決まりごとがあるから、どんなWebアプリでもどこに何を配置すればいいかが解りやすいのです。
全てのアプリで好き勝手置けたとしたならば、非常に効率悪いでしょう。
流行のRails然り、Maven2然り、構造や作り方を決めてしまい、共通化してしまおうという時代の流れでもあります。
つまり、そーゆうもんです。
474 :
471 :2007/10/29(月) 00:20:31
>>472 >>473 なるほど…知らずうちにオレ流になってたのかもしれない。
柔軟性を失うのを嫌ってツールを避けてたんだけど、
逆にツールに対応できない堅い頭になってたみたいです。
レスありがとうございました。
質問させていただきます。 URLConnectionを用いて、HTMLのソースを取得しているのですが、 文字コードに対応するため、HTMLのMETAデータにある、charsetの値を取得して 文字コードに対応させたいのですが、 Javaの正規表現などを使ってどのように処理すれば実現できますか? よろしくお願いします。
String contentType = con.getContentType(); Pattern pattern = new Pattern("(?i)\\s*text/html.*;\\s*charset\\s*=\\s*\"?([^\";]*).*"); Matcher matcher = pattern.matcher(contentType); if(matcher.matches()){ String charset = matcher.group(1); // ... } else { // 一致しなかった場合の処理 } と、ここまで書いて HTML の中の META タグの事かよ orz
477 :
デフォルトの名無しさん :2007/10/29(月) 02:38:27
プッ
public class RecSum { public static void main(String[] args) { System.out.println( sum(3) ); } public static int sum(int a) { if (a == 0) return 0; else return (a + sum(a-1)); } } これのアウトプットが6になる理由が分かりません。 流れを教えてもらえませんか?
わかりました。ごめんなさい。
sum(3) = 6 ↓ ↑ 3 + sum(2) = 3 + 3 = 6 ↓ ↑ 2 + sum(1) = 2 + 1 = 3 ↓ ↑ 1 + sum(0) = 1 + 0 = 1 と、ここまで書いて分かりましたとは orz
質問、失礼します。 javaアプリケーションでフレームに画像を出力したいのですが…どうしてもできません。 Image img = getImage(getCodebase(),"test.jpeg"); g.drawImage(img,0,0,null); としてみましたが、getCodeがアプレットのため使えませんでした…。 どうすればいいでしょうか?どなたか教えてください。お願いします。
Image img = Toolkit.getDefaultToolkit().getImage(getClass().getResource("test.jpeg"));
JDBCの質問です H2をembeddedしてデスクトップアプリを作ろうと考えてます データをやりとりするときにSQL書いて、Statementを作って実行させるのですが、 「何度も実行する処理は、コンパイル済みのPreparedStatementを使え」とよく聞きます ここで、「何度も実行する」とは、どれぐらいの頻度のことと考えたらいいでしょう? アプリ中で使うSQLはすべてPreparedStatementで作っておいてアプリ終了まで保持したほうが良いのでしょうか? あるいは単発selectみたいなのはStatementでも良いんでしょうか? 業務としてJDBCをよく使われるような方はどういう設計にするのが普通ですかね 最初は全部Statementで書いておいて、プロファイル取りながら遅いところだけ 順番にPreparedStatementに変えていくような作り方でもおかしくないですか
PreparedStatement はトランザクションの期間中だけ有効。 つまり Connection を commit または rollback するまでの間。
>>484 なんと!
本当ですね、JDBC API 入門で見つけました
>データベースシステムによっては、コミットを跨がって PreparedStatement が保持されないものもあります。
>そのような場合は、各回のコミット後にドライバが PreparedStatement をコンパイルし直す必要があります。
>つまり、これらの DBMS に関して言えば、多くの回数実行する Statement オブジェクトを PreparedStatement
>オブジェクトに置き換えて使用すると、実際にはより効果的でなくなる場合があります。
H2は保持されるのかどうか調べてきます
それはむしろ 「コミットを跨っても PreparedStatement が保持されるもものあります」 と表現すべきところ。 昔の DB2 みたいに (今もか?) PreparedStatement をクローズしない限りプロセス終了まで ネイティブドライバ-DB側で残す奴もあるが、基本的にトランザクションをまたがっては使わない。 初心者が使うと SQL インジェクションもあるから PreparedStatement 使っとけ。 どうせその後の DB 処理に比べたら微々たる負荷なんだし。
サーブレットで文字コード指定する時って res.setContentType と req.setCharacterEncoding というのがあるんですけど 何が違うんですか?
出力されるHTMLが違う
ContentTypeはブラウザが表示する時に判断するヘッダ情報に関連 CharacterEncodingはHTMLで吐き出す時のエンコード HTMLを表示した時にブラウザが文字コードの判別ミスって文字化けするのは、この対応がうまくいってないか、ContentTypeが指定されずにブラウザが判断し間違っているか、ブラウザのバグってこと
>>487 responseは表示するHTMLのエンコード
requestはフォームなんかから来る文字列のエンコード
491 :
489 :2007/10/30(火) 00:13:58
よく読んでなかった resとreqかよw
492 :
デフォルトの名無しさん :2007/10/30(火) 00:42:03
古いJava Runtime Environmentをアンインストールして 新しいバージョンをインストールしようとしたのですが 「このソフトウェアは使用中のコンピュータにすでにインストールされています。再インストールしますか?」 と出て、「はい」を選択すると 「内部エラー 2753。 RegUtils」と出てインストール出来ません。 これはどういう事なのでしょうか? またどうすればインストール出来るのでしょうか?
>>492 どうやってアンインストールしたの?
まさかフォルダを削除しただけとか・・・?
495 :
デフォルトの名無しさん :2007/10/30(火) 00:58:42
そもそもクラスっていうのは、プロパティがあった場合自分のメソッドで プロパティを操作するでわないか。プロパティの設計が必要上いらないなら インターフェイスとかになるのではないか。というより、私がいいたいのは インターフェイスにはプロパティがあってはいけないものだろう。 ところがどうだ?Enumerationインターフェイス。 俺は今までこれはクラスだとおもっていたが、JavaDocをみたらインターフェイスではないか。 そのくせ、列挙中に次の値が存在するか?などのメソッドがあり、ファイルポインタのようなプロパティが必要そうな 存在ではないか。これは、明らかに利用者を混乱に陥れるクラス設計である。MicroSoftの言語には このような設計ミスはない。Javaは明らかに利用者が混乱しやすい言語設計になっている!淘汰されるべきである!
うん、そうだね。 はい、次の質問、どうぞ。
497 :
495 :2007/10/30(火) 01:03:31
>>496 貴様のこの問題に対する持論を吐け!
釣りはもうおなかいっぱい
うんうん、君の気持ちも分かるよ。 はい、次の質問、どうぞ。 精神科の先生の苦労も分かるよ。
>>487 フォームの情報をサーブレットに送って、処理をするとしよう。
フォームの情報もサーブレットに来るときはリクエストとして一緒に送られてくる。
当然、日本語は2バイトでくる。そうなると処理するサーブレット側が
何の文字エンコードを使ってるかわかっていなくちゃいけない。その情報を
Windows-31Jと教えてやるわけだ。
501 :
デフォルトの名無しさん :2007/10/30(火) 01:16:34
>>495 お前は明治生まれのじじいかw
文体が硬い、思考に柔軟性がない。出直せ
502 :
487 :2007/10/30(火) 01:40:22
たくさんのレスありがとうございます。よく分かりました。 送られてくるデータの文字コードも意識しないといけなかったんですね
503 :
481 :2007/10/30(火) 02:33:02
>>482 返事遅くなり、大変申し訳ないです。
その一文を入れたことでイメージが表示できました。
ありがとうございました。
remove(button);やrepaint();を行った後に Graphics g = getGraphics(); で描画を行うとなぜか描画した物が消えてしまいます…。 プログラムはremoveとrepaintを同時に用いたいと考えているのですが、描画したものが消えてしまう原因が解らなく、四苦八苦してます…。解決策を教えていただけないでしょうか?
void paint(Graphics g)やvoid paintComponent(Graphics g)内で描画する。
506 :
デフォルトの名無しさん :2007/10/30(火) 09:11:30
>>495 そのまとまりのない文章、3年前の俺の小論文見てるみたいだw
507 :
デフォルトの名無しさん :2007/10/30(火) 16:13:20
JDK1.6.0_03とJRE1.6.0_03とJAVA3Dをインストールし、参考書に載っていた3D画像を表示する サンプルプログラムをコンパイルして実行しようとしたところ、コンパイルはできる のですが、実行しようとするとコマンドプロントが一瞬表示されるだけで、何も起こりません。 PrintScreenで確認したところ、 「'-askclose'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたは バッチファイルとして認識されていません。」となってました。 再インストールなど色々試してはみましたが全くわかりません。 どなたかアドバイスをお願いします>< ちなみに、jcpadを使っています。
マルチって何で減らないのかな
509 :
デフォルトの名無しさん :2007/10/30(火) 18:35:06
昔C言語を少しかじりいまJAVAに取り組んでいます いかのような疑問がわいています お忙しいところ恐縮ですが どなたか回答やご指導などお願いします 1.メソッドとはC言語における関数と同じ意味でしょうか 2.メソッドとクラスの違いは 3.インスタンスとは、宣言した変数の領域を確保することでしょうか 4.ストリームとはファイル操作全般を意味するのでしょうか
メソッド ≒ 関数 クラス ≒ 型 インスタンス ≒ オブジェクト ストリーム ≒ FILE*
log4jでVMの起動タイミングでローリングをする設定はできないでしょうか。 public static void mainを実行するたびにログファイルを別に、前のログはリネームして残るようにしたいです。 log4jのバージョンは1.2系です。
>>509 メソッドとストリームは
>>510 であってると思うけど、
クラスとインスタンスはオブジェクト指向の概念なので、難しい。
C言語から流れてきた人用に説明すると、
クラスは構造体に関数がついたもの。インスタンスは確保した領域そのものを指す単語かな?
ただ、クラス周辺は仕組みがわかっただけでは上手く扱えないので、オブジェクト指向を勉強した方がいい。
>>509 メソッド = 特定の構造体付属の関数
クラス = 構造体 (プロパティ) + 関数 (メソッド)
インスタンス = malloc(sizeof(構造体)) の領域
ストリーム = データを逐次で読み込める/書き込めるもの = ファイル, ソケット, バイト配列, etc.
>>512 DailyRollingFileAppender のソースを参考にそーゆー Appender クラスを作ってください。
515 :
504 :2007/10/30(火) 21:38:32
>>505 実現できました。
ありがとうございます。
唐突に質問なんですがJavaの1つのクラスのソースの行数はどれぐらいが適切でしょうか 昔、Cの関数は50行以下とか100行以下、それ以上になる場合は分割しろ、とよく言われた物です これは短ければ短いほど人間には理解しやすくなるのでバグが減るという事だと思いますが この伝で行くと、Javaのクラスは、メソッド数×50行以下にしろ、という感じだと思います しかし、メソッドを20とか持つクラスになると、1000行以上になったりして、さすがに嫌な感じです こういう場合、クラスの分割を検討した方が良いとは思うのですが このクラスの許容最大行の慣例みたいな数字はありませんか? プロジェクトのルールなどで実在した数字があれば教えてもらうと参考になりますのでよろしくお願いします
>>516 1メソッドあたり30行程度。
具体的にはEclipse等で開いて、メソッドの開始から終了までが1画面に収まるかを目安にしている。
1クラスのメソッドは10以下、3〜5程度がわかりやすい。
そうなると、概ね100〜300程度になるから、>517と同じくらいかな
ただ、平均をとってみると多くなりがちなのはBean等が含まれるから。
単純なデータクラスに関してはフィールドの数が10程度と考えている。
>>517 >>518 ありがとうございます
結構短いですね(汗
私の今やってるプログラムのクラスは、500超がごろごろ…
どうやらもっとガシガシリファクタリングしなきゃいけなさそうです
早速教えてもらったツールで計ってみます
行数よりも、サイクロマティック複雑度を目標にしたほうが良いと思う。
まずは行数でいいだろ 行数が少なければ自然と複雑度も低くなる 行数を減らせと言ったらワンライナー風に書くバカでもない限りはな
同意 500行超のソースが乱立している時点でクラス設計とかもっと原始的な目標を立てるべき。 サイクロマティックなんかはある程度ちゃんと作られているアプリを計る、もしくはとんでもないアプリを作り直させる為に計るもの
絶対的な尺度はないが よくコードを把握していない他人の目で見て分かるかどうかを 考えてコードを書くのは重要だといつも念頭に置いてる。 大体、何でも要素が二桁になったあたりから集約とかを考え始めるかな。 プライベートメソッドが増えてきたら、 それはユーティリティクラスとして切り出した方がよくないかとか。 クラスが10コくらいで機能を実現してたらサブパッケージにする方がいいかとか。 後は1画面制限か?ループの中身が1画面を越える時とか処理を プライベートメソッドに分けたりする。 ループの多重度は、2が限界。3つループ入ったら何かがおかしい。 ロジックを見直す。どうしても必要でもループごとプライベートメソッドに切り出したりする。 3つのループが1つに見えていないといけない状況は、そうそうない。 まあ、ライブラリの実装とかで汎用クラスの場合はちょっと尺度が 変わったりもするけどアプリケーションの場合はこんな感じかな。
メトリクスの各指標を日本語で理論的に詳解してあるサイトや書籍でおすすめはありませんか? サイクロマティックは、なぜこのように計算するのか、なぜ分岐の数は引くのか、と言った背景の理論を勉強したいです
>>524 ググればザックリとした情報は出てくるよな?
それ以上の情報は英語でしかみたことない
どちらにせよこのスレの範囲としてはサイクロマティックを抑える方法までで、そのアルゴリズム関係はスレ違いだと思われ
>>525 たしかに少々すれ違いかも知れません、すいません
サイクロマティックは10以下にしろ、そしてメトリクスツールで測るとお前のソースはこうだと言われたとき
その指標の意味や計測原理を知らないと、どう直していいやらと思ったものでして
>>526 細かい原理なんか知る必要はないよ。
一般的なコーディング規約を守り、基本的な事さえ守ればいい
ループのネストは2階層まで、ifと合わせても3階層まで、1メソッドは30行程度。
省略するような書式(3項演算子やメソッドの連鎖コール)はなるべく避ける。
引数が4〜5個になったならばメソッドの責務を再検討など。
ぶっちゃけ、これらを守って係数が10以上とかに出来る方が凄い
例を1つ 典型的なダメコード while(条件) { if(条件A) { if(条件B) { if(条件C) { // 処理 } } } } 読みやすいコード while(条件) { if(!条件A) continue; if(!条件B) continue; if(!条件C) continue; // 処理 }
>>528 どうでもいいつっこみかもしれんが、それならこっちの方が見やすくね?
while(条件) {
if (条件A && 条件B && 条件C)
{
処理
}
}
>529 後々条件が増えたり減ったりした時にどっちのが変更しやすい? あと、条件Aが単純な式(isFoo)とかなら読みやすいけど、 0 <= foo.getFoo() && foo.getFoo() <= 100 が1つの条件とかになってくると、括弧だらけで読みにくい。
>>530 条件が増えたり減ったりすることがわかってんならメソッドに割ったほうがよくね?
>531 それはそれで1つの手だし、もっと複雑になるならばクラスとして抽出まで考えればいい これはあくまで一例だから適当に流してくれ
まあコーディングスタイルは人それぞれだからな。
空気読まないでマジ突っ込みする奴ってどこにでもいるのな。
>>534 うは、典型的ゆとり発言キタ━━━━━━(゚∀゚)━━━━━━ !!
>>534 ゆとりキタ━━━━━━(゚∀゚)━━━━━━ !!キタ━━━━━━(゚∀゚)━━━━━━ !!キタ━━━━━━(゚∀゚)━━━━━━ !!
そもそもここはゆとりのためのスレだろ
ゆとりと言っていれば優位に立てる。 そう思っていた時期が僕にもありました。
みなさん僕のために争うのはやめてください!! 僕が頑張ってもっとコーディングが上手くなれば済むことですから 頑張りますから!!
放物線の式はy=ax^2+bx+cだと思うのですが javaで記述する場合も一緒ですか?
x^2という記述はできない。 x*x。
axとかbxもダメだよ、念のため・・・
ゆとりのなかよし幼稚園があると聞いて飛んできました(^.^)
\(^ェ^)>
(゚д゚)ウマー (゚д゚)(゚д゚)ウマー (゚д゚)ウマー (゚д゚)(゚д゚)(゚д゚)ウマー (゚д゚)(゚д゚)ウマー (゚д゚)(゚д゚)ウマー (゚д゚)(゚д゚)(゚д゚)ウマー |// (゚д゚)(゚д゚)ウマー | |// | ワーイ / | ∧ ∧ / | (,,・∇・) / ⊂,'⊃ | ̄| ̄ ̄ ̄ ̄ ̄~| | | 厨房 | | | 号 _|  ̄ ̄ ̄ ̄ ̄ ̄ /  ̄ ̄\ 〜〜〜〜 ⊂⊃ /\ ⊂⊃ /⊂⊃ \/ \ /\ ⊂⊃ /\ 〜〜〜〜 \ \ /\/ \ / / \
告白します schedoleをずっと スチェドールと読んでいました。
schedole って何?
doleはバナナに張ってあるシールのことかな
sche はドイツ語っぽいな。
Transformer 使って DOM からストリームへ XML を出力するとき、 <hoge attr1="long-long-long-long-long-long-long-long-long-value" attr2="long-long-long-long-long-long-long-long-long-value" attr3="long-long-long-long-long-long-long-long-long-value" /> みたいに要素内で改行できないかな? 属性一つ一つが長すぎて可読性 悪い XML があるんだけど。
XMLに可読性を求めるのが筋違い
552 :
デフォルトの名無しさん :2007/10/31(水) 19:42:42
JDKの実行ファイルへのパス(環境変数)を設定したいのですが Javaコンパネの詳細タブに環境変数を設定できそうなところが見当たりません、、 テンプレを見て頑張って調べてるんですが、、 どなたかお知恵をくださいませんでしょうか
553 :
デフォルトの名無しさん :2007/10/31(水) 20:35:50
552は自己解決できました。すみません。
554 :
デフォルトの名無しさん :2007/10/31(水) 20:49:14
質問させてください。 DatagramSocket.setTrafficClassをWindows2003のIPv6環境で使用された方はいらっしゃいますでしょうか? IPv4環境ではTPCヘッダのTOSフィールドに値がセットされますが、IPv6環境でTrafficClassフィールドに値が設定されません。
パソコンのやり過ぎで近視になりました。 夜にもなればEclipseとShrareとWinnyのアイコンの判別がもたつきます。 俺ってダメですよね?
556 :
デフォルトの名無しさん :2007/10/31(水) 21:37:23
scheduleスケジュール じゃね?
schedole に一致する日本語のページ 7 件中 1 - 7 件目 (0.22 秒) もしかして: schedule
イギリス英語だとシェジュールだけどな
質問です。 Java5以降で、関数の可変長引数が使えるようになりましたが、 これを利用した、Listの初期化はできないでしょうか? List<String> list = new ArrayList<String>("ほげ", "ふが", "うぐ"); こんな感じのコードを、どこかで見たような気がするのですが。
asList か? List<String> list = Arrays.asList("hoge", "fuga", "ugu");
標準APIだと、 List<String> list = java.util.Arrays.asList("ほげ", "ふが"); ぐらいだっけか? 不便だと思うなら自前でユーティリティメソッドつくるんでもいいし。
563 :
560 :2007/11/01(木) 00:33:20
>>561 おお、たぶんこれです!ありがとうございます。
564 :
560 :2007/11/01(木) 00:34:17
>>562 失礼。リロードし損ねました。同様にありがとうございます。
うお、知らんかった・・・・ Arrays.asList(new String[]{"ふー","ばー"}) 使い続けてた・・・
可変長引数のやつか。
javaでwindowsコマンドのpingを打って、返ってきたパケットの中身を調べたいのですが どんなクラス、メソッドを使えばできるのでしょうか? 例としてソース出して頂けると更に嬉しいです。
他のプロセスがやり取りしているパケットの中身を見る方法があったら大変なことなんですけど。
Windowsのプロセスにハックしなきゃ無理だわな ウィルスバスターでも作りたいわけ?
できないんですか^−^; DatagramPacketで返ってきたパケットの中身を見るのも無理ですか?
ping の実行結果 (到達可能かどうか、パケット速度等) を Java から 参照したいだけなら、コマンドの実行をパイプして結果を取得。 DatagramPacket は UDP、ping は ICMP。Java から ICMP は直接使えない。
572 :
デフォルトの名無しさん :2007/11/01(木) 15:33:01
質問です。 windowが非アクティブの状態でキーイベントを起こしたいのですが どうしたらいいんでしょうか?
キーイベントをおこすなら java.awt.Robot#keyPress(int) とか java.awt.Robot#keyRelease(int) で。 非アクティブっつーか、javaが管理するwindow以外の キーイベント取るのは標準APIだけでは無理だったと思うが。
Java Bean と データベース(OraclとかPostgreSQLなど)というのはどういう関係なんでしょうか? 独学で勉強してるのですが、Beanの概念がなかなか理解出来ません。 MVCモデルというのがありますが、 本によってはモデル=データベースだったりモデル=Beanだったりします。 かといってBeanはデータベースに代われる物でもないようです。 自分なりに考えた限りでは、 プログラムとデータベースの橋渡し=Beanという感じもするのですが 別に橋渡しなんか無くても何の不便も無さそうだしやっぱりよく分かりません
(一般的な) Bean とデータベースは何の関係もございません。 まぁ SQL とトランザクションを駆使して手続き型処理をゴリゴリ書く羽目になる DB を、 オブジェクト指向言語である Java から使いやすくするために OR マッピングなどで Bean をかますことはある。
576 :
デフォルトの名無しさん :2007/11/01(木) 19:58:34
>>574 一般的な手法としてはデータベースの内容をリストに詰めてBEANで送り
JSPで一斉に表示するという方法がある。が基本的にBEANとデータベースは無関係。
577 :
574 :2007/11/01(木) 21:05:13
>>575 >>576 なるほど、Beanはプログラム内でデータを手軽に扱う手段という感じですね。
となるとやっぱり元のデータベースの勉強を先にした方いいのかな。
とにかくイメージが湧きました。ありがとうございました。
超初心者的質問?で申し訳ないのだけれど class Hello { class hoge() { int n; } public static void main(String argv[]) { hoge c = new hoge(); } }; というソースをコンパイルすると、↓というエラーがでます 「static でない 変数 this を static コンテキストから参照することはできません。」 newのところが悪いっぽいのですが、暗黙のthis受け渡しが発生するような記述には見えません。 内部クラスの生成にはthisが使われるということでしょうか?
>>578 正解、thisが使われています。
内部クラスをstatic にすればいける。
static class hoge()
>>579 ありがとうございます。なるほど
クラスのインスタンスが生成されたときに、内部クラスの定義もインスタンス内に作られる…とかですかね。
Java 内部クラス でぐぐって探してみてるのですが「何故thisが使われるのか」まで踏み込んだページが見つかりません。
もし知っていればそのあたり(言語仕様まわり)の情報があるサイトなどを紹介していただけませんでしょうか
>>580 サイトは知らんが、四種のクラスの違いはEffective Javaで読んだな。
>>578 のthisは、コンパイラがこう解釈するからエラーになる。
public static void main(String argv[])
{
hoge c = "this."new hoge();
}
通常の内部クラスはその外のクラスにバインドされる。
だから、内部クラスから外のクラスのフィールドやメンバに直接アクセスできるわけだ。
そもそも、内部クラスは正確に書くと、
(外のクラス名).(内部クラス名) value = (外のクラスのインスタンス名).new (内部クラス名)(引数);
となるわけで、そう書かれてないのは暗黙的にthisを省略してるに過ぎない。
なるほど。外のクラスのメンバにアクセスできるようにするためにthisと関連付けられてるってわけですね そしてその意図(関連付ける必要)がないならstaticにすればいいと よくわかりました。 ありがとうございました!
だから、
>>579 のいうようにstaticにしたときも、正確に書くと
Hello.hoge c = Hello.new hoge();
となるわけだ。内部クラスを単なるネストされたクラスだと考えていると
>>578 のように躓くから、
外のクラスと密接に関係したクラスであることを強く意識する必要がある。
staticでない内部クラスはたとえばIteretorとかSubListとかみたいに 内部構造は隠したいけれども、そのオブジェクトを他の表現で表したいときに使うな。 そうでない場合はたいていstaticネストクラスを使うほうが正しい場合が多い。 こっちのほうは(アクセス権とかで)若干そのクラスとの結びつきが強いだけの、別個のオブジェクトになる。
こんばんわ。 独習Javaの問題やってて 次のプログラムを作成しなさい。10個の要素から成るint型配列を作成し、forループを使って-1〜10の値を配列要素に初期設定します。 その後、別のforループで配列要素を表示します。 ってのがあって class うんこ{ public static void main(String args[]){ int array[] = new int[10]; int sum = 0; for(int i = -1; i > -11; i--){ array[sum] = i; ++sum; } for(int i = 0; i > 11; i++){ System.out.println(array[i]); } } } こうなったんですが、コンパイルして実行してもなんも表示されません。 どこかおかしいんですかね・・・
×for(int i = 0; i > 11; i++){ ○for(int i = 0; i < 10; i++){
あっ 盲点でした。ありがとうございます 独習Javaを入門書にするのはやめといたほうがいいのかな・・・
独習Javaでいいと思うよ
独習系は総じて難しいと思う。全体的にある程度プログラムができることを前提としてるような気がする。 だから、二つ目以降の言語を学習するには最適だけど、プログラム初心者が読むのにはむいてない。
入門書なんて何でもいいと思う 難しい本選んで苦悩してもそれが財産になる 悩まず綺麗に教えられた人って全然応用力無いんだよね
>>584 それ以外に、ストラテジーパターンでも使う。メソッドごとごっそり入れ替えられて便利。
蛇足だけど、C#では内部クラスは外のクラスのフィールドにアクセスできない。
つまり、全部の内部クラスがJavaでいうstaticクラスになる。
>>590 難しい本で挫折しちゃったら元も子もないでしょ。
>>590 それは教えられ方によるんじゃないかな?
うまくアウトプットを引き出させるような教え方をされた人は、ちゃんと応用できる
要は、自分でものを考えないまま正解を教えられたやつは〜、ってことだろ
そういう意味では独習系ってアウトプットを要求するから、良本なんだよねぇ
独習は問題の解答あるから良いよ そもそも難しいとはいえない、量があるのは確かだがね じっくり時間を掛けられるならば一番いい入門書だと思う やっぱり最初は書いて書いて書きまくるべき
独習は他の言語をマスターした人がJavaを学ぶために読む本だよ。 いきなりJavaから始めるような本当の意味で初心者が読む本じゃない。
今なら明解Javaだな。
長い渡り廊下であの人と すれ違うたび心臓が止まる
>>593 さあ?俺は教えてもらった事なんかないけど?
ただ、本を読んで自分で試しただけだ。
>>598 独学だから賢いと思いこんでる馬鹿ハッケ〜ンw
独学だろうが教えられようが賢いヤツは応用も出来るに決まってるだろw
やっぱりjava使いは馬鹿が多いね。 世界一簡単な言語だから仕方ないけど
VBを差し置いてそれは無いと思うが
>>600 シンタックスシュガーと統一性のない言語仕様に阻まれてほかの言語が使えない人間よりかは、
世界一簡単なJava言語使いの馬鹿のほうがまし。
>>601 初めてVBを見たとき、あのアポストロフィみたいなのでコメントを表すなんて難しい言語だと思った。
rem よりいいべw
N88BASIC をバカにするな
アポストロフィよりもREMの方が中間言語は短いから、メモリの節約になる。
>>606 それって、機能考えたら当然だと思われw
608 :
デフォルトの名無しさん :2007/11/02(金) 14:41:04
すません。。 document.formname.submit(); このformnameの値を動的に変えたい場合どうすればよろしいですか。 function chg(formname) { document.formname.submit(); } こうやってみてもダメでした・・
すれ違い。次から WebProg の JavaScript スレで聞く様に。 document.forms[formname].submit(); または id 指定で <form id="A"> ... </form> <form id="B"> ... </form> function chg(formid){ document.getElementById(formid).submit(); // または document.all(formid).submit() }
610 :
デフォルトの名無しさん :2007/11/02(金) 14:59:06
>>609 ありがとうございます。
javaとjavascriptと違いました申し訳ありません。
612 :
JAVA初心者 :2007/11/02(金) 19:16:09
こんにちは。 いつも参考にさせていただいています。 STRUTS使用のJSPで、html:textを使用するときに フォームのプロパティに値がsubmit後に入ってくると思いますが、 formの直下にプロパティがない場合、 たとえば formの直下にaBeanというビーンがあります。 そして、そのビーンの下にbBeanがあり、 そのbBeanの下のプロパティにsubmit後に ユーザの入力値を設定したい場合は そのようなことは技術的に可能でしょうか? また、可能であれば、どのようにJSPにかけばよろしいでしょうか? よろしくご教授してください、、
標準の JDK に含まれていないロケール (例えばモンゴルとか) を実行環境に追加 って出来ますか? 日付や数値フォーマットは SimpleDateFormat や DecimalFormat 使って誤魔化せるんですが、ISO 三文字コードとか Locale クラスが final 宣言され ているので何ともならないのですが。
アクセス修飾子の話なのですが、何故publicだった関数をprotectedに変更することができないのでしょうか? protected を private にできないのは、Javaがprivateな関数をを仮想関数テーブルに加えないからだと納得いくのですが public を protected にさせない理由がわかりません もしかして、結局のところアップキャストしてアクセスすれば、アクセスできちゃうから。 つまり意味がないからでしょうか
そういうこと。
javaでサーバーアプリケーションは作れますよね? そのサーバーアプリケーションにjavaアプレットからsocketで繋げてやり取りできますか?
アプレットのダウンロード元と同じホストなら出来ます。
ありがとうございます
コマンドライン引数って何個まで指定できますかね。 無限でしょうか
言語仕様的には無限。 実行環境のシェルのバッファの限界に依存。
>>614 1.6 からは java.util.spi.LocaleServiseProvider あるから、それ使えばできるんじゃねーかと。
623 :
デフォルトの名無しさん :2007/11/02(金) 23:37:31
Javaは変数の参照渡しはできないんですか!orz
>>623 できない。
参照型でラップして、似非参照渡しとかならできるけど
class IntRef { public int value; }
public void method(IntRef ref){ ref.value++; }
public void method2(int[] a){ a[0]++; }
オススメはしない。
そもそもプリミティブ型でもなければそのまま渡して何も問題ないしな
Java に参照渡しはない、あるのは参照の値渡しだ、とツバ飛ばしながら 揚げ足取る人間が昔は居たものだが。
627 :
623 :2007/11/02(金) 23:51:22
>>624 それは、オブジェクトは参照渡しできるようなので、
変数だけのクラスを作ってそれを引数にするってことですよね?
お奨めじゃないんですか、
普通はどうしてるんですか?
配列にして渡すかなw
return で返す。
630 :
623 :2007/11/02(金) 23:59:45
アイコンってどう作るの?Javaでメモ帳を作ったんだが(まだ、開くと保存しかない)いちいちjava Sampleで起動してるからカッコ悪い。
jarだったらアイコンはOSから指定されてしまうんでない? 独自のを使いたいならexeWrapかなんかでラッピングしてやったらいいんじゃないかな?
うんこ
そうでもない
どんだけ〜
キーを押しっぱなしにしてから離すと、 Pressedイベントが貯まってReleasedイベントの検知が遅れます。 Releasedを検知するまでのラグを無くそうと調べたところ、 Windowsが貯まっている分のキーイベントを保持している事が分かりました。 直接Windowsが保持しているキーイベントを操作する方法、 もしくはそれ以外の、遅れを抑える方法があったら教えてください。
> 直接Windowsが保持しているキーイベントを操作する方法、 できない。少なくとも標準APIだけでは。
>>640 AWTのイベントキューに登録されてるなら、
java.awt.EventQueue#peekEvent(int) と
java.awt.event.KeyEvent#KEY_RELEASED 使えば取れるかもしれん。
スレッドを複数使う場合は変数をどういう風に記述すれば良いですか?
複数のスレッドからどういう風に使われるかによって変わる。
説明の仕方があまりわからないのですが 円を4つ表示させて、それぞれ別の動き方にしたいです
シングルスレッドで作れる件
長い渡り廊下であの人と
>>645 途中で送信してしもた・・・orz
要するにそれぞれ円を動かして描画するメソッドを順番に呼び出せばマルチスレッドにする必要なんてない
円それぞれにランダムな動きや状態変化とかさせたいんじゃないかな
>>650 それにしてもマルチスレッドにする必要性ゼロだなw
細胞とかのシミュレーションならマルチスレッドで行くでしょw ごの場合たぶんちがうと思うけどw
イベントディスパッチャースレッドの中でやる気か?
は? イベントディスパッチャースレッドの中で連続して円描いて動かす気かと聞いてるのだが?
あまりスレッドは使わないほうがいいよ
Swing と AWT では、おのずと違ってくるだろう。
660 :
640 :2007/11/03(土) 17:45:49
>>641 >>642 現在はSwingを使っていますが、
似たようなメソッドが無いか調べてみます。
「やさしいJava」にそんなんあったぞ。 1キャラ事にスレッド作ってんの。 初心者相手にあーゆーのいいんかいな。
効率を求めるのはやさしくなくなってからで良いだろ。
>>660 低レベルなイベントはAWTとSwingで共通。
>>655 だからそれは質問の本質とは関係ないと言っている
>>664 いや質問者じゃなくてお前に聞いてんだけど。
>>665 だからそれを俺に聞いても質問の解決には無関係だし、意味がない。
>>666 いやお前のその回答間違ってんじゃねーの? って話してんだから関係ないわけないだろ。
で、スレッド立てないでイベントディスパッチャースレッドの中で連続描画してアニメーションさすのをお勧めしてるわけ?
なんか、どんどん自分脳が発展してるなw
>>667 イベントディスパッチャースレッドの中とは一言も書いてない
で、それが問題の本質と何の関係があるのか知りたいわけだが
課題:4つのスレッドを作り円を描くようにしなさい 答え:イベントディスパッチャースレッドでやるのかよ、ありえないよ、だからやらね 評価:不可。来年頑張ってね。
宿題は宿題スレへ
>>668 >>646-651 を見ればそう読めるだろ。paint(Graphics) 実行するのはイベントディスパッチャースレッドなんだし、
スレッド立てる必要がないというならイベントディスパッチャースレッドの中で連続描画しろと言ってるわけだし。
だから真意としては、ひょっとしてイベントディスパッチャースレッド以外から描画系のメソッド呼ぼうなんて
無知な方法薦めようとしてんじゃねーかと思ってね。
673 :
645 :2007/11/03(土) 19:06:11
達也も和也も、私を奪い合うのはやめて!
まあ、643の回答でないことは確かだなw
だからそういってるわけだが。 反論ありませんその通りです知りませんでしたという回答でいいわけね。
逃げ足だけは速そうだなw
ここのスレがこんなにあれるなんて珍しいな。
勝利宣言w 図星かよ ┐(´ー`)┌
>>677 回答側に突っ込みが入るとかなりの確率で荒れます。
>>672 paintはコード書こうと思った途中で間違って送っただけなんで、関係ないです。申し訳ないです。
ところで
>>643 は円にそれぞれスレッドを割り当てて描画したいという意図だと読み取ったんだけど
それならわざわざマルチスレッドにする必要がないということであって
イベントディスパッチャースレッド云々は関係ないというかそれで別スレッド作ったから
マルチスレッドじゃねーかっていう突っ込みに意味がある?
681 :
デフォルトの名無しさん :2007/11/03(土) 19:51:00
どうした?納得しちゃった?
>>680 「アニメーション用のスレッドは 1 つ立てればいい」 というのをシングルスレッドとは言わない。
シングルスレッドで良い = 多重化しない = メインのスレッド (GUIの場合イベントディスパッチャースレッド) 以外不要、
という意味になる。
>>682 だから、わざわざ円一つごとにスレッド作らなくてもいいという話に
イベントディスパッチャーが関係あるのかって話
ちなみに別スレッド作らなくてもタイマを使うという手がある
684 :
デフォルトの名無しさん :2007/11/03(土) 20:14:19
すみません。0〜9までの数字を入力するJSPがあり、そこの入力値を サーブレットで受け取って、受け取った値が空じゃないか? 数字以外じゃないか?数字だとしたら0〜9の範囲内の値か?をエラーチェックして 最終的に0〜9までの数字をRandomクラスで出してそれと一致すれば 「当たり」と表示するアプリケーションがあります。これは本のサンプルです。 一番最初実行していたときはjspで数字を入力してサーブレットで結果をみてたりしてたんですが サーブレットで結果をみて戻るボタンを押してJSPに戻ってまた数字を入力してと 繰り返ししていたら(エラーチェックなどをした)サーブレットになにも表示されないまま(空白画面)となってしまいました。 どうすればちゃんと表示されるようになりますか?
java.util.Locale について質問です。
IP2C というIPアドレスから国のStringを返すJavaのコードがあります。
http://firestats.cc/wiki/ip2c 知りたいことは、国の情報から代表的な言語の情報を返すことです。
たとえば "JP" を代入すると "ja" を文字列で返すといったようなことです。
そこでまず new java.util.Locale("言語", "国") を使ってみようとしましたが、
"言語"に""文字列を入れないと何も空白の文字列しか帰ってきませんでした。
どうぞ、よろしくお願いいたします。
>>683 ないよ。だがシングルスレッドでと言ったならイベントディスパッチャースレッド内で、と等価だっつー話。
>>684 サーブレットのエラーログに何か出力されてないか見る。
>>685 標準 API でそれは無理。むしろ俺も知りたい。
687 :
684 :2007/11/03(土) 20:32:23
>>686 どうもありがとうございます。トムキャットのエラーログはなにも書いてないですが、
時間がたって再度やったらうまくいきました。。。なんだろう。。不思議ですが、よくなったので
どうもありがとうございました。
689 :
684 :2007/11/03(土) 20:45:15
guess.jspからはbasic.guessServletにリンクをはってあるはずだったんですが、
input.guessServletになっていました。basic.guessServlet.javaをコンパイルしなおしても
だめでした(input.guessServletにリンク張ってあったから無駄だった。)
でも、guess.jspのリンクを直した後もトムキャットはinput.guessServletに
リンク変移するのでworkディレクトリしたの該当ファイルを消したら
最終的にすべてうまくいきました。
>>686 さんどうもありがとうございました。
>>686 >だがシングルスレッドでと言ったならイベントディスパッチャースレッド内で、と等価だっつー話。
タイマー使う手もあるわけだし、ただ単に重箱の隅をつついてるようにしか見えない
691 :
デフォルトの名無しさん :2007/11/03(土) 21:03:03
javaやるにはサイトのどれダウンロードすればいいんだ 本にはJ2SEをクリックって書いてあるけど サイトにはそんなのないんだけど
>>690 質問者があの流れでタイマーとか思い浮かぶと思ったのか?
下らねえ揚げ足だな。
>>692 だから、わざわざ円ごとにスレッド作る必要ないって話だよ
揚げ足取りしてるのはそっちだろ
>>693 お前はシングルスレッドと言ってるだけでそんな事は言ってないわけだが。
揚げ足じゃなくてお前の理解不足。
見苦しいからもうやめようぜ。
初心者スレで回答側に突っ込むとこうなります。 なぜなら彼らもまた初心者だからです。
面白いから続けていいよ
(ю:】
700 :
os :2007/11/03(土) 21:45:54
javaでosを作ろうと思ってる。 どうすればいい?
>>695 だからタイマー使えばシングルスレッドでも出来るって言ってるだろ
理解不足なのはそっち
702 :
デフォルトの名無しさん :2007/11/03(土) 21:47:44
あれ?もう終わり?口ほどにもない奴だな。
アホがループし始めた。
別にこんな絶対に進展しない話で勝ち負け決めたって意味ないんだけどなぁ イベントディスパッチャスレッドどうこうは本質とは関係ないし タイマー使えばシングルスレッドに出来る
>>703 本質とは無関係なイベントディスパッチスレッドにこだわって
シングルスレッドじゃ無理みたいな言い方するからタイマーでできると言ったらなんだか
そんなの文章じゃ読み取れんとか理解不足とか言い出すし
理解してないのどっちだよって話
>>704 これだけ無知さらしておいてまだ食い下がるのか。
シングルスレッドってのはアプリケーションでスレッドを開始しないという意味ではない。
お前の脳内サーブレットコンテナはシングルスレッドなのか?
708 :
デフォルトの名無しさん :2007/11/03(土) 21:56:05
はい、論破
>>707 そうきたか、ワロタ。
どう見ても質問者はサーバーサイドJavaの話なんかしてないからなぁw
710 :
デフォルトの名無しさん :2007/11/03(土) 21:58:56
GUIをゼロから学んだ方が良いよ。 学生君。
そこまでくるともう揚げ足取り以外の何物でもないなw
>>706 事の発端はおまえの 「シングルスレッド」 発言な。
>>709 例えに逃げ道を見つけたかw
もうお前の勝ちでいいよ、つき合いきれん
アニメーションするのにタイマーって使うもの?
使わないと早すぎるか遅すぎるかどっちかじゃね?
そりゃ sleep() や wait() で済む話。 それらより誤差が大きいタイマーなんて普通使わない。道具の使い方が間違ってる。
タイマーってTimerのことなのか? sleepもwaitもタイマーの一種だと思うが・・・
ナイチンゲールに聞けよ
720 :
デフォルトの名無しさん :2007/11/03(土) 23:21:26
jdk-6u3-windows-i586-p.exe てのをダウンロードしたんだけどこれでよかったかな? これからどうしよ binファイルがないんだけども PATH設定とかわかりません
bin ファイルっておまいさん Linux か何かかい?
すいません。 ファイルからXML文書を読み込んでDOM木を生成し、そのDOM木のすべてのノードを検索して、 ノードの名前とノードの値を出力するプログラムを作ってるのですが、質問があります。 import org.w3c.dom.*; import javax.xml.parsers.*; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; public class oppai { public static void main(String[] args) { System.out.println("current time = " + new java.util.Date()); try { /* XMLプロセッサの生成 */ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringElementContentWhitespace(true); /* 空白記号処理の設定 */ DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(args[0]); /* ここから探索処理 */ } catch (Exception e) { e.printStackTrace(); } } この探索処理がよくわからなくて…
単純に出すだけなら TransformerFactory.newInstance().newTransfomer().transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(System.out))); private static void inspect(Element elem){ }
domはやめてxsltを使う。
書きかけで送っちまった。
全ノードを走査するなら以下のように再起処理を実装して inspect(doc.getDocumentElement())
した後に
>>723 で出力。
private static void inspect(Element elem){
NodeList list = elem.getChildNode();
for(inti=0; i<list.getLength(); i++){
Node node = list.item(i);
if(node instanceof Element){
Element child = (Element)node;
// ここで要素名や属性名を何かすれ
inspect(child);
} else {
// Text, PI など他のノードの処理
}
}
return;
}
726 :
685 :2007/11/03(土) 23:47:54
>686,688 お返事いただきありがとうございました。 標準ではできないとわかり、自力で機能を作ってみました。 public String getIP2Language(String ip) { try { Country c = IP2Country.getCountry(ip); String country = c.get2cStr(); Locale[] locales = Locale.getAvailableLocales(); for (int i = 0; i < locales.length; i++) { if (country.equals(locales[i].getCountry())) return locales[i].getLanguage(); } } catch (IOException e) {} return "en"; }
>>726 代表的な言語と言いつつ最初に見つかったので良いのかよ。
昔このスレで見かけた、ブラウザで使える逆コンパイラのURLって誰か知りませんか?
>>725 ありがとうございます。
試してみます。
だからナイチンゲールに聞けよ
731 :
685 :2007/11/04(日) 00:03:30
Locale.getAvailableLocales()の順番が丁度よかったので
凸 (○o○) 【□】 (o○) ■ ⌒⌒ (Оo) □ ⌒⌒ o° ⌒⌒ ■ ┌─┐ ⌒⌒ □ ┌──┐ ┌─┐ ┝〓┥ [口] ┌──┐□□│ │°└─┴─┴─┐ 口口口 │□□│□ ______│○ ○ ○ ○└─┐ ▲▲▲▲▲▲□│□ \ ¥ └─────────┴─┐ ┃┃┃┃┃┃□│□□ \ YOKOHAMAファニチャー丸│ 〓〓〓〓〓〓〓〓〓〓〓 )━━━━━━━━━━━━━━━/ 〜〜〜〜〜〜〜〜〜〜彡彡彡〜〜彡〜〜〜彡〜〜彡〜〜彡彡彡彡彡〜〜 山下公園とマリンタワー 彡彡 彡 彡 彡彡彡彡彡
だから標準のDOMは使うなとあれほど・・・。 JDOM使え、JDOM。コードの量が半分以下になるから。
>>621 String [] になっているので、int の範囲以上は指定できないのではないですか?
735 :
■強姦は65年の1/3。殺人は55年の1/3。騙されるな! :2007/11/04(日) 01:17:11
みんな騙されないで!!
レイプ強姦事件は、中期的に見たら、激減しています!
しかもレイプ殺人なんて実は年間0件。(殺人既遂は年700件、強盗殺人は年60件)
昭和40年には実に7000件近くもあった強姦事件は(むごい少女強姦も多発)
最近ではずーっと毎年2000〜2400件ぐらいと(全て外国人含む)
中期的には実は★激減している★のが本当の真実です。騙されないで!!
●平成14年警察庁犯罪詳細統計
http://www.npa.go.jp/toukei/keiji8/H14_03_1.pdf 認知件数
http://www.npa.go.jp/toukei/keiji8/H14_05_2.pdf レイプ殺人なんて精々数年に1件
●昭和40年代の犯罪統計〜強姦の激減が一目瞭然〜
http://www.npa.go.jp/hakusyo/s49/s49s0401.html 認知件数
凶悪なレイプ犯罪が最近激増しているという虚偽の洗脳イメージのバックには、●日本最強力の圧力&権力団体●になった
フェミニズムの凄まじい圧力と要求の一つ(男性に多い犯罪をことさらわめき立てること)があります。
フェミに汚染されたヒステリー報道に刷り込まれた虚像と、本当の真実の落差から色々なことに気付いて欲しい。
●●中期的には、強姦は激減しています(7000件⇒2300件)●●
また殺人等殆どの犯罪で実は被害者は男性の方が多く(統計)、犯罪の全体像が極めて歪んだ形で刷り込まれています。
【参考】内閣府男女共同参画局予算(年間9兆9千億円!!!毎年増額/国家総予算82兆円中)
その実体は過激ババアフェミ学者&団体員の巣窟。
既に国家・社会・生活の●ありとあらゆる面に●巨大かつキチガイじみた影響力を陰に陽に行使。
スーパー省庁として全ての官庁/審議会に過激メンバーが出向し、そこでも凶悪な害悪を撒き散らしています。
1997-99年にだまし討ち的に出来たばかりの局が(外野でわめいていたフェミ団体が権力中枢に殺到)
財政が火の車にも拘らず、毎年桁外れの●天文学的な●予算を浪費・支配。
「男=悪・ダメ」の洗脳&一般女総フェミ化戦略。膨大なアファーマティブアクション下駄政策。
「女男」という表記に徹する検定教科書も既に複数本登場。
※本投稿は拡散希望です。事実を一人でも多くの人に!!
>>736 すいません。めちゃめちゃ嘘つきました。ごめんなさい。
配列のサイズは VM のメモリサイズに影響されるらしいので、
実行時によって違うみたいです…。
int のサイズとかは全然関係ないですが、調子こいて指定すると下記の様な
例外が出る様です。
↓
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
上限に達するような状況自体、設計に問題があるだろ
>>734 あーすまん、その通りだわ。言い方が悪かった。
言語仕様調べてみたが特に幾つまでとは書いてないな。ただ int 型でインデックシングするとは
あるから実質 int の最大値か。となるとインデックスの最大値は int の最大値 - 1 という事になる
ので、どんなにメモリが割り当てられても array[Integer.MAX_VALUE] という記述は失敗することになるな。
intの上限に達するargumentって 英字のペーパーバックが一体何冊入るんだ?
javaのapiを見てていつも不思議に思うことがあるんですが、 本来インタフェースのメソッドは中身が空で未実装のはずなのに apiにあるインタフェースのメソッドは機能を持ってますよね。 例えばIteratorインタフェースのhasNext()というメソッドは中身が空なのに、 次の要素の有無によって返す値が異なる、という意味を既に持っている。 この機能はどこで付与されてるんですか??
どっかにそのインターフェースを implement したクラスがあって、その中で実装されています。 API リファレンスに載ってるインターフェースの説明は、使う側にこうしなさいとうものであると 同時に、実装する場合はこうしなさいというものでもあります。ArrayList#iterator() などから ソースを追っていってください。
743 :
741 :2007/11/04(日) 12:30:57
>>742 なるほど、あの説明が機能そのものを示すわけではないんですね。
ソースの方も落として読んでみたいです。
ありがとうございました。
>>743 機能というのはちょっと曖昧
インターフェイスってのは仕様だけが決まっていて実装されていない
逆に言えば仕様を満たしている限りどんな実装でもいいって事
(仕様は契約ともいう)
機能って言うと仕様なんだか実装なんだかごちゃごちゃに聞こえるから使わない方がいいよ。
Tomcat 5.5 を使っておりますけど、Unicode 形式の URL エンコーディング (%uXXXX) って対応してないの? 0xFF 以下の %XX 形式で送られる文字は大丈夫なんだけど、%uXXXX になる日本語が混じると getParameter() で 例外が発生するんですが。 2007/11/04 14:42:57 org.apache.tomcat.util.http.Parameters processParameters 警告: Parameters: Character decoding failed. Parameter skipped. java.io.CharConversionException: isHexDigit at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:87) at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:48) at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:411) at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:393) at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:344) at org.apache.catalina.connector.Request.parseParameters(Request.java:2381) at org.apache.catalina.connector.Request.getParameter(Request.java:1005) at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:353)
↑例外発生する前に request.setCharacterEncoding("UTF-8") やってます。
fillOvalっていうので描いたものを動かして 半分ぐらいから色を変える事は可能?それとも不可能??
上書きして違う色で書くか、最初から半分づつ描画すればいいだろ
半分くらいというのは動かす距離の半分なのか円周の半分なのかどっちだ。 まぁどっちにしても可能だが。
ていうかわざわざそんな事せずに URLEncoder.encode ("aiueo","UTF-8"); じゃだめなの?
>>751 いえ request.getParameter() の中で例外が発生するんですけど。
何で URLEncoder?
だからもともとそんな形式(%u とか)で送らなきゃいいって話よ。
なぜサーブレットの質問で送信側が Java で実装されていると判断されたか分かりませんが、、、 ブラウザから送っているものです。リクエスト送信元のページは UTF-8 でエンコードされています。
ブラウザから%uの形式で送ってくる事なんてある? なんのブラウザ使ってるの?
>>750 >>749 の言うとおり半分づつ色を変えれば良いみたいでした><
ありがとうございました。
ファイルの読み込みについて質問です。 今、テキストファイルの内容を読み込んで、テキストエリアに表示する プログラムを作ろうとしています。 BufferedReaderのreadLine()を使って読み込んでいるんですが、 readLine()で読んだ文字列をそのまま出力すると改行されませんよね。 元のファイルと同じ位置で改行させるにはどうすればいいですか?
reader.readLine () + "¥n";
アサーションなどのに使用するために、オブジェクトが同一スレッド内で 同期化されているかどうかを判定する機能があったと思うけどどのクラス でしたっけ?
Thread#holdsLock かな
Oh, thank you.
762 :
757 :2007/11/04(日) 21:48:18
>>758 それもやってみたんですが、それだと元のファイルの最終行で改行されてない場合
(文字の後に改行が無い場合)にも改行されてしまったんです。
この場合に余計な改行がつかないようにしたいんですが...
>>762 readLineつかわず、readで一文字ずつ取得しろ
>>757 だったらreadLine() 使うなよw
String str = ""; String line = null; while ((line = reader.readLine ()) != null) { str += line + "¥n"; } if (str.length () > 0) { str = str.substring (0,str.length () - 1); }
↑ 実行時の遅さは知らん。
Reader in = new FileReder(file); StringBuilder buffer = new StringBuilder(); char[] buf = new char[1024]; while(true){ int len = in.read(buffer); if(len < 0) break; buffer.append(buf, 0, len); } textArea.setText(buffer.toString());
>>767 while の中で int を定義しまくるのはどうかと思うが…
>>768 それって考えた方がいいの?
Javaの標準のライブラリ中のソースでも平気でそういうソースあるけど。
>>768 これぐらいなら最適化してくれるんじゃないの?
スタックポインタが動くだけの事を何気にしてんだ? new でヒープ確保するのと同じとでも思ってるのか?
>>768 時代遅れ甚だしい
あれか、カウンタ変数を再利用する人種か?
再定義なんかしてないだろ条項
>>771 その「動く」事に対して時間はかからないの?
俺は
int を定義する、メモリ確保、ローカルスコープ終了・破棄、
また int を定義………
と思ったけど、違うの?
すいません、20年遅れなもんでw
私もそこらへん詳しくしらないので分かる方ぜひ詳しく教えてください。
_,..--------、_ r| | | /ヽ, | l l ,.へ | || iユ、 |j_l∠へ-゙-⊥」_/゙T´ |_,.. -:;;:-- 、...__n`y ⊥_、 u__,,,,,,,,.リト| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 代07 ヘ0フ ||,ヘ < 第1話だけ限定放送かよ、これはDVD売るための罠だ ! |__ ,_ ̄u ||_ソ \______________________ |uイ――ヾ u ,リ,へ、 人|.  ̄ ̄`リ_〃゙ (9入_ _,..-=|| ,.`'ー|l|ー</// ̄人9、>-、_ /(9ト-||('-ジ'リト=-ソ__ゞ´/ニ、9ト9Y゙/6\
>>775 詳しく知らないのは構わない
だが、時間がかかると自分で試した事あるのか?
変数を使いまわした場合と再定義した場合、10万回程度ループさせてどれだけの差が出るか実験してみろよ。
>>775 全然違う。スタック変数の確保開放なんてのは単純な整数値の足し算引き算。
20 年前のプログラマがそんなん知らんで何作ってたんだ。
・プログラミングで扱うメモリと言うのは大きくスタックとヒープに分かれている。 ・ヒープは new で確保する領域。広大な代わりにページ管理やらフラグメントやらで遅い。 ・スタックは起動時に何kB〜何MB か確保されている固定領域。上限が低い変わりに 確保する順序と開放する順序が分かっているため、スタックポインタという 「次に変数が 必要なときはここから」 という整数に加減算するだけなので速い。バイト配列のインデッ クスのようなもの。 詳しくは Wikipedia でも見れ。
783 :
デフォルトの名無しさん :2007/11/05(月) 00:35:57
Java始めたばかりなんだけど 標準ライブラリのリファレンスがあるサイトとかないですか? PHPのマニュアルのようなサイトとか・・・
public class LoopTest { public static void main (String [] args) { long test1,test2; long startTime = System.currentTimeMillis (); for (long loop = 0;loop <= 100000;loop ++) { int test = 0; test += 100; test /= 100; } test1 = System.currentTimeMillis () - startTime; startTime = System.currentTimeMillis (); int test; for (long loop = 0;loop <= 100000;loop ++) { test = 0; test += 100; test /= 100; } test2 = System.currentTimeMillis () - startTime; System.out.println ("test 1:" + test1 + " [msec]."); System.out.println ("test 2:" + test2 + " [msec]."); } }
test 1:12 [msec]. test 2:5 [msec]. 正直、結構違うもんだな〜と思った。
>>780-782 ご丁寧にありがとうございます。時間かけて少しずつ理解しようと思います!
nanoTime使えよ
マルチタスク OS 上でのナノ秒計測なんて意味なし。
質問失礼します。 int型の三次元配列のデータをファイルから読み込み、処理を行った後に同じデータを同じファイルに保存したいのですが どうすればいいでしょうか? 参考となるものを探しているのですが、殆どが文字列を扱う入出力のみで、数値を扱う物を見つけられずに困っています。
いわゆる AT 互換機だと INT 8 のハードウェア割り込み使って得られる精度は 55msec。 Win32 API 使っても 10〜20msec くらい。CPU クロック使えばもっと正確なの出せるだろうけど。 ナノ秒必要なの (正確に測れるの) って電話の交換機とかの環境。
>>791 そのファイルの内容によりけり。数値を文字列として保存していれば文字列として読み込めばいいし、
バイナリファイルならフォーマットやエンディアンを知らんと何ともならん。
DataOutputStream/DataInputStream あたりが簡単じゃね?
795 :
デフォルトの名無しさん :2007/11/05(月) 02:14:50
>>780 まじだwwwwワロスwwwwwwwwwwwwww
>>792 ゲームでfpsを調整するために普通に使うわけだが……?
>>793 バイナリファイルではなく、あくまで三次元int配列の中身の数値を保存したいと思っています。
>>794 DataOutputStreamで配列を保存してみましたが、保存した配列を見るとすごいことになっていました…。
入力し、それを再度出力させると数値は保存されているのが確認できたプログラムを動かす上では問題なさそうです。
ただ、チラッとファイルを開いて中身を確認することは不可能ですが…。
とにもかくにも、問題を解決できました。大変感謝しています。ありがとうございました。
おまんこ
まんげ
>>796 1000fpsを超えるゲームなんて聞いたことないのだが
ナイチンゲールもおそらく知らないでしょう
>>800 データの単位がナノなだけでなんでそこまでfpsあげなきゃなんないんだ馬鹿
もしかして1ナノまで正確にあってないといけないメソッドかと思ってるのか?
extendsとimplements両方乗っける場合どちらを先に記述する?
>>803 extends。implementsは後から追加するかもしれんから。
implementsを先に記述することなんかできたっけ?
俺も調べているような状況だけど、NetBeans6を見る限り、EventHandlerが主流になるような感じだね Swingのパーツもガンガン作れるし、イベント定義まではIDEがザクザクつくって行くのが主流になりそうな感じ まだ不安定だけど、6のβ2で試すといいよ
>>802 >もしかして1ナノまで正確にあってないといけないメソッドかと思ってるのか?
>>792 >ナノ秒必要なの (正確に測れるの)
~~~~~~~~~~~~~~~~
>>802 そりゃ使ってるってだけであって、その精度が保障されてて必須ってわけじゃないだろう。
ゲームごときと交換機を一緒にするなよ。
くっくっくっくくえすちょん
812 :
デフォルトの名無しさん :2007/11/05(月) 14:48:47
最近Javaはじめたのですが、抽象メソッド・クラスというものがよくわかりません。 なぜわざわざ抽象化する必要があるのか、どういう場面で使うのかがよくわかりません。 調べてもたいていabstractの書き方とかしかのってなくて・・・
>>812 インターフェイスとは何か?
それはどのような場面でどのような意図で使われるか?
その辺りを調べていくと、抽象メソッド・クラスの意味も解ってくるはず。
>>812 スーパークラス/サブクラスを自力で設計する必要が出てくれば自ずと分かる。
>>812 オブジェクト指向に関係する概念だが、オブジェクト指向関連の解釈や説明は人の数だけあるので、
多態性(ポリモーフィズム)でググって理解してくれ。
816 :
812 :2007/11/05(月) 15:38:13
817 :
812 :2007/11/05(月) 15:38:59
>本当に812だとすれば、敵意に値するよ。 っておかしくね?w
820 :
812 :2007/11/05(月) 15:50:35
821 :
812 :2007/11/05(月) 15:52:07
>>820 おまえ、結局そのアフィサイトを宣伝したかっただけだろ。
それが目的なんだろ。バレバレなんだよカス。
通報しました。
IDでない板で調子乗って荒らしてると規制されるよ
ID出ない板で調子乗ってアフィ宣伝してると規制されるよ
>>822 お前ひねくれてんなw
別にクリックしなきゃいいじゃんよ
ていうか誰も気にもとめないし
アメリカ人がjapは他人が儲けることが気に入らない国民性って言ってたが
そのレスみてまさにその通りだと思った
管理人必死だなw
もう俺が悪いって事でいいから喧嘩はやめろ。
俺のサイトとnextindexが同じIPだということに気付いた
831 :
791 :2007/11/05(月) 18:51:01
昨夜、書き込みした者です。再度ですが、質問失礼します。 DataInputStream in = new DataInputStream(new FileInputStream("save.txt")); …@ DataOutputStream out = new DataOutputStream(new FileOutputStream("save.txt")); …A と連続して書くと、プログラムを実行した段階で、save.txtの内容が全て消えてしまい、save.txtが白紙になってしまいました…。 私は、javaアプリケーションで、処理の最後にボタンを押して終了時に3次元配列のデータの書き込みを行いたいと考えているのですが、 ボタンアクションの際に、例外のキャッチ、スロー宣言ができず、try-catch命令を用いてAを宣言しようとすると outのシンボルが見つけられませんと表示されてしまい、目的の仕様を達成できません。 プログラムの途中でのAの宣言も考えましたが、途中でプログラムを終了してしまうと、データが消えたままになってしまいます。 なにか良い解決策はないでしょうか?
とりあえず ObjectOutputStream で writeObject () じゃだめなのかね。 俺ならめんどいからそうする。
833 :
デフォルトの名無しさん :2007/11/05(月) 18:54:04
コード[ ] 名前 [ ] 備考 [ ] 選択 □A □B □C □D 上のような画面からの入力を <test> <code>コード</code> <name>名前</name> <bikou>備考</bikou> <sentaku value="A"> <sentaku value="C"> <sentaku value="D"> </test> みたいなxmlに保存するやり方か、 分かり易い説明のあるサイトを教えて下さい。
>>831 ファイルを出力用に開くのは本当に出力を行う直前にせれよ。
実行した段階で、とかプログラムの途中で、とか意味わかんねーところで開くなよ。
835 :
791 :2007/11/05(月) 19:10:18
昨夜質問した者です。再度質問させてください。 DataInputStream in = new DataInputStream(new FileInputStream("save.txt"));…@ DataOutputStream out = new DataOutputStream(new FileOutputStream("save.txt")); …A と連続で宣言すると、save.txtの中身が消えてしまい、データの読み込みを行う事ができません。 私は、javaアプリケーションで3次元配列のデータを読み込み、作業を行い、終了時に ボタンを押してデータの書き込みを行って終了するプログラムを作っているのですが、 データの読み込みを行えないため実現できません。 ボタンアクション内でAを宣言して解決しようと考えたのですが、throws IOException例外の報告ができず try-catch命令内で宣言すると、outのシンボルが見つけられませんと表示されました。 プログラムの途中で宣言しようと思ったのですが、途中で終了した場合、save.txtの中身が 消えたままになってしまうため、行いませんでした。 なにか解決策はないでしょうか?
>連続で宣言すると、save.txtの中身が消えてしまい、データの読み込みを行う事ができません。 そのやり方は間違い。 >ボタンアクション内でAを宣言して解決しようと考えたのですが そのやり方が正しい。 >outのシンボルが見つけられませんと表示されました。 お前さんの書いたコードのバグが原因。ちゃんと書け。 >プログラムの途中で宣言しようと思ったのですが 思うな。ボタンアクション内でAを書け。その上でバグを潰せ。
>new FileOutputStream("save.txt") これを実行した瞬間に、save.txt の内容は消去される (これから新しい内容を書き込む準備のために)。 終了時に書き込むのなら、そのときに初めて FileOutputStream を作れ。 前もってあらかじめ作成しておくのは間違い。
838 :
デフォルトの名無しさん :2007/11/05(月) 19:36:55
サーブレットを書き直すとトムキャットの再起動が必要ですが クラスファイルの場合も絶対必要なのですか?
840 :
838 :2007/11/05(月) 20:04:46
>>839 ありがとうございました。もやもやがはっきりしました。
本にはサーブレットは書いてあるんです。クラスファイルはどうかな?
とおもいまして。よくわかりました。
841 :
791 :2007/11/05(月) 20:12:05
今、連続投稿してるのに気づきましたorz 専ブラが落ちてしまって、書き込めてないと思い再度書き込んでしまいました。
大変申し訳ありませんでした。
>>832 ObjectOutputStreamについて、今始めて知りました。これから調べてみます。
>>834 >>837 解りました。自分も、なるべく直前にファイルを開きたいと思っているので、プログラム途中で開かないようにします。
>>836 バグの内容ですが、今一度コンパイルしてみた結果、どうやら、catchの条件に問題があるようです。
なんとかバグを潰してみます。
アプリケーションに同梱しているJRE(Sun JRE6u3, 70MBもある)から 不用なファイルを取り除いてダイエットさせようと思うのですが、 どういった手法を取るのが簡単でしょうか。
>>833 画面からの入力ってのは何を意図しているか不明。
単純にJavaのオブジェクトからXMLを出力するライブラリであればBetwixとか
最近は標準ライブラリにもあるんだっけ?
845 :
デフォルトの名無しさん :2007/11/05(月) 20:31:57
>>843 すみません。
Strutsを利用したサーブレットからです。
入力結果をxmlに出力したいです
一番簡単なのは out.print で繋げちゃう方法じゃないの?w
シリアライズは本当はめんどいから、必要なければやめるのが無難 ファイルに新規データを上書きする前に、動かすかコピーして元のファイルの内容はとっておくのが普通 抽象クラスは、詳細が全体に依存するという、オブジェクト指向プログラミングと 構造的プログラミングの根本的な差異を生み出す重要な役目を果たす
さらに言うと、このような伝家の宝刀を効果的に使うには、 必要のないところでは、無駄に抽象クラスなどは使わないこと 必要かどうかの判断は、その問題のドメインに対する知識が有効だが、 とりあえずシンプルに作っておいて実際に必要になってから抽象化するといった、 アジャイル的な開発手法が有効と思われ また、テストの記述にて生じる抽象化は適切なことが多いらしいので、 テスト駆動開発が有効らしいヨ
↑ 尻まで読んだ
詳細が全体に依存する←何? オブジェクト指向プログラミングと構造的プログラミングの根本的な差異を生み出す←生み出してどうする? 伝家の宝刀←プログラムに切り札があるの? その他はもっとわからん
プログラムに切り札はあるだろ、常考
万能の切り札はないけどね。
切り札(笑)
ドコモの切り札905i
初歩的なんですがファイルからXML文章読み込んでDOM木を作って そのノードを探索するってことしたいんですが ファイルの読み込み部分でうまくいかなくて・・・ 実行時 java 実行ファイル名 読み込みファイル名.xml としたいんですが DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); Document doc = parser.parse(args[0]); ・・・・ の開始じゃまずいですか?
最近、アジ演説が増えたな。
アジ演説の意味分かって言ってんのかと。
>>850 構造化プログラミングでは、詳細なメソッドを順に積み上げていくことにより全体を構築する。
つまり、全体をあらわすロジックは、これらの詳細なメソッドに依存していることを意味する。
したがって、これらの詳細なメソッドを変更すると、全体のロジックに影響を及ぼす。
一方、オブジェクト指向プログラミングでは、詳細なクラス・メソッドを抽象化することで、
全体のロジックをこれらの詳細に依存せずに記述することができる。
これらの抽象クラスの所有権は全体のロジックの方であり、
むしろ、これらの実装の方が全体に依存することになる。
これにより、ソフトウェア開発のテーマの1つに挙げられるオープンクローズドを達成することができる。
これは、拡張に対して開いていて(拡張可能であり)、
修正に対して閉じている(拡張する場合でも修正する必要がない)ということを表す。
要するに、全体のロジックはそのままで、実装を入れ替えるだけで機能を拡張できる。
ただし、抽象化を行うと当然、それだけ分かりにくくなりコードの量も増え、保守のコストが増える。
一方、全ての拡張変更に対してオープンクローズドを満たすは無理。
したがって、どこを抽象化するかが問題になる。
その手がかりとして、問題領域に対する専門的な知識や、アジャイル的な開発、
テスト駆動による開発が挙げられる。
という眠れない夜の話
ほ〜、概念を文字で表すと言うのは難しいことなんだな。
ここはひとつ、比喩によるアプローチを試みてみようと思う。
構造化プログラミングを
>>860 とおけば、さしずめオブジェクト
指向プログラミングは
>>861 である。
うむ我ながらうまいたとえだ。
くっくっくっくっくえすちょん 疑問珍問
>>855 > 実行時 java 実行ファイル名 読み込みファイル名.xml
これでやるなら
Document doc = parser.parse(new File("読み込みファイル名.xml"));
引数にStringを渡すときはURI指定。
class ListScheduleData{ String schedule; String place; String owner_id; public String getOwner_id() { return owner_id; } public void setOwner_id(String owner_id) { this.owner_id = owner_id; } public String getPlace() { return place; } public void setPlace(String place) { this.place = place; } public String getSchedule() { return schedule; } public void setSchedule(String schedule) { this.schedule = schedule; } } こんな感じで構造体?を宣言しておいて(続きます)
ListScheduleData[] lsd = new ListScheduleData[512]; インスタンス化して、ローカル変数の値を、構造体?クラスの変数に入れようとするとなぜかプログラムが停止します。 なぜでしょうか?構造体はprivate宣言してないので、直接でもセッターでも書き換えできると思うのですが。。。 したの様な感じでアクセスしてます。 System.out.println("user_id ="+user_id); System.out.println("time_buf = "+time_buf); System.out.println("schedule ="+schedule); System.out.println("place ="+place); lsd[pos].schedule = schedule; lsd[pos].owner_id = user_id; lsd[pos].place = place; lsd[pos].setSchedule(schedule); lsd[pos].setOwner_id(user_id); lsd[pos].setPlace(place); //System.out.println(lsd[pos].getSchedule()); //System.out.println(lsd[pos].getOwner_id()); //System.out.println(lsd[pos].getPlace()); 直接アクセスする場合も、セッターを使う場合も、そのコードの行で止まってしまい、次の行にいきません。 よろしくお願いします><
止まるってどういう事? 例外が出るって事?
うるせーよゆとり
866 :
862 :2007/11/06(火) 13:01:46
>>864 イクリプスでやってるのですが、コンソール上で正常終了します。
例外処理のprint出力もしているのですがでません。たとえば
System.out.println("place ="+place);
lsd[pos].schedule = schedule;
System.out.println("aaa");
とデバッグ文をいれても、aaaが出力されずに正常終了(といってもプログラム的にはバグ)します。
lsd[pos].schedule = schedule;をコメントアウトすると、正常終了(想定どおりの終了)します。
>>866 どうせ、他の部分でぶっとんでんだろw
エクリプスなら、デバッガ使ってトレース汁。
868 :
862 :2007/11/06(火) 13:13:53
>>867 たとえそうだったとしても
lsd[pos].schedule = schedule;
の部分をコメントアウトすると動くのに、有効にすると次の行のコードを実行せずに終了するってのはここがおかしいと
思うのですが。。。
>>868 posの値ぐらいチェックしてるんだろうな
870 :
862 :2007/11/06(火) 13:33:19
pos=0で初期化、直前でprint出力しても0で表示されます。
lsd[pos] = new ListScheduleData();
873 :
862 :2007/11/06(火) 13:42:12
>>871 それはいったい。。。?
>>872 schduleってローカルのほうですか?そっちなら、ちゃんと文字列入ってます。
クラスで宣言しているほうのscheduleは初期値でnullとかいれないといけないんでしょうか?
lsd[pos] = new ListScheduleData(); lsd[pos].schedule = schedule;
それはいったいじゃねー 配列の各要素のインスタンスを作れ 空の配列にアクセスして怒ってんじゃねーよw
AVL木のノードを削除した後、その後のバランスの取り直し方は、 どのようにすればいいのでしょうか? 助けてください… 挿入時の、回転によるバランスの取り方は理解でき、コードを書くことができました。
HttpSession#setAttribute(String name, Object value) でvalueにint値を格納してもコンパイルが通るんですが、 getAttribute(String name)でint値を取得する方法はあるんでしょうか?
878 :
デフォルトの名無しさん :2007/11/06(火) 16:18:29
質問です。 SunとWindowsで通信をするとEUC(Sun側)とS-JIS(Windows)でどうしても文字化けが起こってしまいます。 JavaコードでWindows側にプログラムを作成したい場合どのようにしたらよいでしょうか??
なぜUTF-8で送らないのかと
880 :
877 :2007/11/06(火) 16:20:34
getAttributeからIntegerにキャストしたらとれました。
>>877 int value = ((Number)session.getAttribute(name)).intValue();
>>878 Writer out = new FileWriter("filename");
↓
Writer out = new OutputStreamWriter(new FileOutputStream("filename"), "MS932");
>>874 >>875 解決しました。
オブジェクト型はメモリ確保後に、配列ごとにインスタンス化しないといけないのですね。
勉強になりました。ありがとうございます。
インスタンス化って言い方は普通に使うのかな。 インスタンスを作成する、とか実体化するとかはすんなり解るけど。
インスタンス化 の検索結果 約 118,000 件
インスタンスラーメン の検索結果 約 1,670 件
イスンタンスの検索結果 4 件中 1 - 4 件目 (0.15 秒) インタンス の検索結果 約 984 件中 1 - 100 件目 (0.36 秒)
コンパイルして、 srcフォルダ以下の複数のパッケージにまたがる javaファイルをclassフォルダ以下にクラスファイルを作成したいと思い、 次のようなコマンドを実行したのですが、うまくいきませんでした。 javac -d .\class -sourcepath src どうしたらコンパイルできるようになりますか? Testフォルダの下にsrcとclassフォルダがあり、 Testに移動してから、上記のコマンドを実行しております。 ご教授お願いいたします。
888 :
デフォルトの名無しさん :2007/11/06(火) 22:10:52
classファイルからjavaファイルに変換できないようにできますか?
>>888 理論的には出来ないが、難読化ツールをかませば復元したコードをかなり読みづらくはさせられる。
HttpServletResponseクラスをどうにかシリアライズし、DBに格納できるようにしたいのですが、 どうもデフォルトコンストラクタがなくてはできないようで・・ HttpServletResponseWrapperでデフォルトコンストラクタを作ってもsuper()を呼び出すようで うまくいきません。 どうすればHttpServletResponseをDBに格納できますか?
>>890 HttpServletResponse はレスポンスデータを送信するための機能のクラスなので保存できませんし
保存する意味もありません。
やりたいのは出力結果をデータベースに保存したいということだと思うのだが、出力内容をメモリ上にも
保持する出力ストリームクラスと、その内容を DB に保存するフィルタクラスとレスポンスクラスを作れば
何とかなるんじゃないか。
クラスが初期化されるタイミングって決まってるんでしょうか? 例えばフィールドに値が代入されるタイミングとか。 クラスがロードされた時点ではフィールドに値が入ってないようなので。
クラス変数が初期化されるタイミングはクラスのロード時。 インスタンス変数が初期化されるタイミングはインスタンス生成時。
>>892 実はTomcatでAjaxなプログラムを作っていまして、その際にResponseを配列に
格納しているのですが擬似的なコネクションの情報を一時的にDBに格納し、取り出せる
ようにしたいのです。
なので、レスポンスを返すための情報をあらかじめ取り出し、新しくレスポン
スを作ればいいでしょうが、どうにもこのインターフェイスには単独でnew
するためのコンストラクタもなく、またどういったフィールドが接続相手の情報
を保持しているのかも分からない状態で・・
良い案がありましたら教えてください。
>>895 サーバから任意のタイミングでデータを送り付けたいのなら無理だ。
HTTP を勉強しろ。
>>896 いえ、その点につきましてはもう解決済みです。具体的にはtomcat6から実装
されたCometを利用してデータの送信には成功しています。
しかし、複数のサーブレットからデータを送るにはやはりDBにコネクションの
情報を格納したいので、どうにかなる方法はないかな?というのが今回の相談です。
現状と問題点と目的 もうちょっと話をまとめてから相談しないと分からないよ
サーブレットまたいでレスポンスを共有したいなんて事は無理。 設計しなおせ。
900 :
デフォルトの名無しさん :2007/11/07(水) 00:18:03
どうでも良いけどブラウザが同一サイトに使える TCP/IP 接続って 2 つまでなんだけど、 COMET ってそのうちの一本を占有しちゃうから、同一プロセスで別ウィンドウ立ち上げて COMET 使ったり、ファイルダウンロードしたりするともうブラウザが通信できなくなっちゃうのよな。 そのへんちゃんと分かってて使ってるのかな。
>>901 分かってないんだろうな。
てか、分かってなかったので今DNSを立ててます。
ホスト名大量生産・・・
やべぇww 何がしたいのかすら理解できねぇwwww 俺\(^o^)/オワタ
とりあえず 擬似コネクションをDBに ->あきらめた。メモリ好きなだけ食ってくれ。 同一ドメインに対しての制限(TCP/IP接続) ->XXX.hoge.fuga.jp (XXXはサーブレット名とか?)のようなアドレスを大量に。 あとはIframeで飛んでどうにか。。。 ということにしました。 こんな未熟者に付き合っていただき本当にありがとうございました。
配列の中から偶数と奇数の個数を表示する方法を教えてください public class task1_2{ public static void main(String args[]){ int[] a = new int[2]; int i, j ; a[0] = a[1] =0 ; j = 0 ; int dt[] = {4, 0, 3, 1, 3, 2, -4, -2}; for(i = 0; i > 8; i++){ j = dt[i] % 2 ; if (j == 0){ a[0]++; } else{ a[1]++; } } System.out.println("偶数=" + a[0] ); System.out.println("奇数=" + a[1] ); } } ↑でどこがちがうのでしょうか?
i>8
int[] a = {0,0}; int[] dt = {4, 0, 3, 1, 3, 2, -4, -2}; for(int i = 0; i < dt.length; i++){ a[dt[i] % 2]++; } System.out.println("偶数=" + a[0] ); System.out.println("奇数=" + a[1] ); }
↑参考までに。最後の}はコピペ失敗の余分だから消しておくれ。
質問です。 B木をinorderで巡回するためのアルゴリズムを教えてください。
変数名とクラス名が気持ち悪い…というのはさておき、そのコードにはバグがある。 偶数・奇数は補集合なのだから、偶数をカウントして残りを奇数とすべき。
a[Math.abs(dt[i] % 2)]++; かな。if文取ろうと思ったんだが、abs呼び出し分損するなあ。
1と論理積
暇なんでいじってたらこんなんなりましたorz.... final int DIV_NUMBER = 15; int[] dataAr = {4, 0, 3, 1, 3, 2,6,-4,-1,-2,7,13}; int[] totalAr = new int[DIV_NUMBER]; for(int i = 0; i < dataAr.length; i++){ totalAr[Math.abs(dataAr[i] % DIV_NUMBER)]++; } System.out.println("データ配列を" + DIV_NUMBER + "で割ったときの余り別の個数は"); for(int i = 0; i < totalAr.length; i++){ System.out.println("余り" + i + ":"+totalAr[i] +"個"); }
int[] a = {0,0}; int[] dt = {4, 0, 3, 1, 3, 2, -4, -2}; for(int i = 0; i < dt.length; i++){ a[dt[i] & 1]++; } System.out.println("偶数=" + a[0] ); System.out.println("奇数=" + a[1] ); }
インデントしろカス
半角打てないから全角で誤魔化してインデントしたりもするけど 馬鹿がコピペして動きませんとかいいそうで最近はあんまやってないなあ
誰が入れ歯だ
知ってるとは思うけど タブ文字と、2つ以上連続した半角スペースの2つ目以降は 2ちゃんねるでは表示されない(というか無かった事にされる) 全角スペースが混じっているとコンパイルエラーの元 なのでインデント無しが無難
public class task1_2 { public static void main(String[] args) { int guusuu = 0; int kisuu = 0; int dt[] = {4, 0, 3, 1, 3, 2, -4, -2}; for (int i = 0; i < dt.length; i++){ if ((dt[i] % 2) == 0) { guusuu++; } else { kisuu++; } } System.out.println("偶数 = " + guusuu); System.out.println("奇数 = " + kisuu); } }
コピペして動きませんなんてのはバカでも回答できるから大丈夫だろ。
変に全角でインデントとか入れられると、コピペして変換しなきゃならん。 そのままベタでうpの方が楽。 見づらかったらオートインデントすりゃいいし、この程度の長さなら別に見にくくはないだろ。
924 :
デフォルトの名無しさん :2007/11/07(水) 15:58:13
netbeansをで開発するときもpathの設定はしないといとできませんか?
>>923 スレッドの悪い使い方の見本だな
まぁいいけど
例えば、10上に動かしたら繰り返す場合、単純に考えて
a.y = a.y - 3;
を
a.y = a.y - 3;
if (a.y <= 135) {
a.y = 145;
}
にすればいいんじゃないかと思う
前にゲ制作技術の方でも見かけたけど、動かすオブジェクト毎にスレッド作るのって有名なサイトか何処かに載ってるのか? どう考えても普通やらないと思うんだが。
>>925 ありがとうございます。
これで先に進めそうです。
>>926 動かすオブジェクトごとにスレッド作る必要ないって趣旨なのに
イベントディスパッチスレッドがどうとかシングルスレッドじゃないとか
関係ないところで絡んできた奴がいたので話が進んでいません
つか、お前誰だよw 質問者ならちゃんとレス番を名前にいれろやw
>>928 シングルスレッドって言ってみたかったバカが約一名居ただけ。
揚げ足取りがすきだねぇ
ポリデントじゃないのかw
タフデントなんじゃね?
どこかのホームページでクラスは1クラス名と同じ名前のファイルに一つだけってみたのだけど 2つ以上あるとなにか不都合でもあるんですか?
イソジンを忘れちゃ困るぜwっっw
スレッドが一つでいいかどうかなんて設計によりけりじゃん。 いちいち描画のタイミングで条件判定やらデータロードやらしてたらカクカクゲームになるんじゃないのか。
初心者に対して不正確な回答するなボケ。
なんかシングルスレッド君にすっげー根に持たれてるみたいなんすけどw
シングルスレッド君って誰?
俺
不正確な回答をするなと言っておきながら正確な回答を出さない人ってなんだろうね
>>938 は不正確。
1ファイル1クラスという制限は、
public修飾子が宣言されている場合に限定される。
949 :
938 :2007/11/07(水) 18:35:56
どうせオレなんだろうけど
>>936 な認識の奴にpublicクラス以外ならいくつ書いてもOKとか書いて意味あるのか?
今日の悪役は938になりますた。頑張ってください。
>>949 本気で知らなかった以外で 「仕様」 と断言してしてしまうわけはないと思うんだが。
モジュロ演算子( % )って、負数の場合は負数の余りが返るんだな。 doubleの場合とかどうなるんだろ、使わんから解らんw
うん、それが解らんからな。有効数字で切ったりするんかな。
C:\Documents and Settings\aaa\a>copy con a.java public class a{ a.java を上書きしますか? (Yes/No/All): y public static void main(String[] args){ System.out.println(100.0 % Math.PI); } } ^Z 1 個のファイルをコピーしました。 C:\Documents and Settings\aaa\a>javac a.java C:\Documents and Settings\aaa\a>java a 2.6106277387164134
fmod
958 :
デフォルトの名無しさん :2007/11/07(水) 20:30:15
Web上の書いてあるだけのソースは大概間違ってますよ デバッグぐらいしたらいいのにといつも思います 仕事が少なくて暇で転職考えてるような人が書いてるでしょうからそれなりの ものしかないってことでしょうね
解説に使うソースなんて要点示すためにいらんところ削除してるだろ。 まんまで実用性求めてる奴なんているのか?
957があってるかあってないかが聞きたいのだけど
このような、自動的に転送するプログラムというのは WayBack archiveのサーバーに取り付けするのでしょうか? それとも他のサーバーから転送させることができるのでしょうか?
すいません、JAVAの超初心者です。 例えば12345678という数字があります。 これを 1234 5678 にするにはどうすればいいんでしょうか。 (一つのブロック最高4つの数です) どうかよろしくお願いします。
>>964 レスありがとうございます。ベントラーって一体なんでしょうか^^;
>>964 963です
実は今やろうとしてるのはStringをAsciiの値に変え、一つのブロックがK以下にしたいんです。
例えば
intList("HERE IS AN EXAMPLE STRING", k=0) = 7269826932738332657832698865778076693283482737871
これでk=100000の場合、 72698 26932 73833 26578 。。。
何とかAsciiの値を返すことは今できたのですが分けることができません。誰かお助けを。・゚・(ノД`)・゚・。
今現在のコードは
private static BigInteger intList(String s)
{
byte[] asciiCodes = s.getBytes();
return new BigInteger(asciiCodes);
}
です
AクラスがあってBクラスとCクラスがAクラスを継承していたら 3つファイルがいりますよね?
>>966 中途半端な桁はどうするの? あと、途中で零が挟まってる場合とか
12345054321
→ 12345 5432 1 ?
→ 12345 54321 ?
→ 1 23450 54321 ?
>>967 public なクラスは 1 個ごとに 1 つファイルが必要
public でないクラスは他のクラスと同じファイルに入れられる
>>968 レスありがとうございます。中途半端な桁はそのままでいいです。
12345054321
→ 12345 5432 1
どうかよろしくお願いします。
>>968 あ、すいません、0を含む場合は
12345054321
→ 12345 05432 1
です^^;
>>966 超適当コード
int keta = String.valueOf(k).length() - 1;
if(keta <= 0) return s;
List<String> list = new ArrayList<String>();
for(int i=0; i<s.length(); i+=keta){
if(i + keta <= s.length()){
list.add(s.substring(i, i + keta));
} else {
list.add(s.substring(i);
}
}
>>967 パッケージプライベートなクラスなら 1 ファイル内に幾らでも入れられる。
Timer とか JDK のソースでも読め。
974 :
デフォルトの名無しさん :2007/11/07(水) 21:56:00
2chにソースをコピペするとインデントが無くなる。不便
全角のインデントなんかつけんじゃねーよカスがw
コピペ厨乙
何が事件だ
ThreadLocalを使用してクラスAとクラスBで同じオブジェクトを参照するような処理を書く場合、 クラスAのメソッドでThreadLocalをnewして、setを読んだ後クラスBでどうやってこれを参照すればよいのですか?
>>982 ThreadLocal を使用しないでクラスAとクラスBで同じオブジェクトを参照する場合と同様にやればよい
ThreadLocal を何か勘違いしてないか?
>>982 クラス A に ThreadLocal に入れる値の getter 付ければ良いじゃん。
あと ThreadLocal はメソッド内で new するもんじゃない。
class A{
private static final ThreadLocal tl = new ThreadLocal();
public static Object getObject(){ return tl.get(); }
}
スーパークラスAに抽象メソッドがないときに、サブクラスB、Cで抽象メソッドをオーバーライド してオブジェクトAにオブジェクトBかCを代入するとどうなりますか?
>>985 > 抽象メソッドがないときに
> 抽象メソッドをオーバーライドして
ないメソッドはオーバーライドできません。
>>985 たぶん同名のメソッドを定義した場合ってことだろうけど、基底のメソッドがprivateだとしたら、
名前が同じなだけの、全く別のメソッドとして扱われるだろうよ。
もしprotected以上ならfinalなせいで同名のメソッドは定義できない。
Jakarta Commons の FileUpload って、ひょっとして受信中に例外発生したら GC まで未完成のファイルを削除できないというウンコ設計? ソース読んだ限りでは parseRequest() 内で例外発生すると明示的に削除する 術がないみたいなんだけど。
んなばかな
>>988 ファイナライザがなんのためにあるのかと
992 :
デフォルトの名無しさん :2007/11/08(木) 09:02:38
次スレ頼む!
PreparedStatementで select * from hoge where hoge_id = ? pstmt.setString("hoge"); とした場合、hoge_idがchar(20)の場合、検索結果が0件になります。 pstmt.setString("hoge "); といった感じで桁数を合わせてやると正常に検索されます。 CHAR型の場合は、このようにスペースを付加して 桁数を合わせる必要があるのでしょうか? DBはOracleです。 もっとスマートな方法はあるでしょうか?
>>993 CHARは固定長文字列の型なので、そういうもんだ
イヤならVARCHAR2を使え
997 :
デフォルトの名無しさん :2007/11/08(木) 16:12:52
型変換して内部的にはStringで扱ったほうが楽ジャン
998 :
デフォルトの名無しさん :2007/11/08(木) 16:14:08
次スレ誘導忘れずによろしく
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。