【初心者】Java質問・相談スレッド107【大歓迎】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語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あたりで。
2デフォルトの名無しさん:2007/10/18(木) 10:13:16
JSP2.0を使ってます。
変数の値を出力するのに
<h1>${title}</h1>
としていたのですが、サニタイズされないことが分かりました。
仕方ないので
<h1><c:out value="${title}"/></h1>
と書き直しているのですが、すごくばからしくなってきました。
なんとか ${title} の書き方でサニタイズされることはできないでしょうか。
つうかなんでサニタイズされないのだ? <c:out/>はデフォルトでされるというのに。
3デフォルトの名無しさん:2007/10/18(木) 11:52:24
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();
4デフォルトの名無しさん:2007/10/18(木) 11:58:17
BufferedReaderとかOutputStreamWriterがテキスト読み込み向けだからじゃないの?
ImageReaderとかあるよ
5デフォルトの名無しさん:2007/10/18(木) 12:14:45
>>3
Reader や Writer をはさまずに、直接 InputStream から読み込んで FileOutputStream に出力すればいいんじゃない
6デフォルトの名無しさん:2007/10/18(木) 12:26:42
>>4, 5
ありがとうございます。できました。
7デフォルトの名無しさん:2007/10/18(木) 12:56:13
質問させてください。

PreparedStatementを使用して、"select 〜for update wait ?"で
待機時間をバインド変数でプログラムを組みたいと思っているんですが、
上手くいきません。
setIntやsetDouble、Longを試してみましたが、
なにかよい方法はないのでしょうか。
8デフォルトの名無しさん:2007/10/18(木) 13:40:05
すみませんが、質問です。
プロパティファイルなどの設定ファイルを、どのように管理したらいいもので
しょうか?

・開発機、テスト機、本番機でそれぞれ設定内容が異なる
・開発機の場合、ここの開発者の環境ごとに設定内容が少しずつ異なる
・設定項目の種類はいずれも共通だが、開発中に増えたり減ったりする
こういうものをCVSで管理するにはどうしたらいいものか、考えあぐねています。

Ruby on Rails だと、開発機、テスト機、本番機用の3種類のファイルがデフォ
ルトで用意されていました。開発者ごとの環境設定は、個々人で修正すること
になっていました。
9デフォルトの名無しさん:2007/10/18(木) 14:08:16
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;
}
}
10デフォルトの名無しさん:2007/10/18(木) 14:10:22
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つのクラスをつなげてもうまくいきません。
どのようにすれば実行結果を得られるのでしょうか、教えてください。
11デフォルトの名無しさん:2007/10/18(木) 14:19:11
うおー >>2 を誰かお願いします

>JSP2.0を使ってます。
>変数の値を出力するのに
><h1>${title}</h1>
>としていたのですが、サニタイズされないことが分かりました。
>仕方ないので
><h1><c:out value="${title}"/></h1>
>と書き直しているのですが、すごくばからしくなってきました。
>なんとか ${title} の書き方でサニタイズされることはできないでしょうか。
>つうかなんでサニタイズされないのだ? <c:out/>はデフォルトでされるというのに。
12デフォルトの名無しさん:2007/10/18(木) 14:28:14
逆に、タグを出力したいときはどうする?
13デフォルトの名無しさん:2007/10/18(木) 14:52:48
>>10
"つなげる" てのはどうやってるのかな?
例えば Kadai20.java に両方書くってんなら、Tokuten は public 外して
public class Kadai20 { ... }
class Tokuten { ... }
と宣言すればいい。
仮に Tokuten を public にしたいなら別々の .java ファイルにする。
(そうしろっていうコンパイルエラーが出てないかい?)
149-10:2007/10/18(木) 15:02:42
>>13
別々のjavaファイルでそれぞれのクラスがあるのですが、
それぞれをコンパイルしてKadai20.javaを実行しても結果が表示されないんです。
だからつなげればよいのかと考えたのですが・・・
159-10:2007/10/18(木) 15:10:10
すいません、解決しました。
些細なことで質問してすみませんでした。
>>13さん、ありがとうございました。
16デフォルトの名無しさん:2007/10/18(木) 16:29:58
17デフォルトの名無しさん:2007/10/18(木) 18:42:19
IE7でドキュメントのトップページが真っ白になってん何も表示されないんですが
なんででしょう?
ソース表示したらソースは読みこんでます
18デフォルトの名無しさん:2007/10/18(木) 18:49:01
↓エスパーよろ
19デフォルトの名無しさん:2007/10/18(木) 18:50:45
俺のESPによると、↓じゃないかと
ttp://ja.wikipedia.org/wiki/Internet_Explorer
>IE7を使ってウェブにアクセスすると、低くない頻度でページの読み込みが止まり、ページが真っ白又は背景しか表示されない不具合が確認されている。F5キーなどで再読込(更新)すれば表示できることがあり
ttp://sattontanabe.blog86.fc2.com/blog-category-8.html
20デフォルトの名無しさん:2007/10/18(木) 18:51:37
真っ白なページを出すソースだったんじゃない
21デフォルトの名無しさん:2007/10/18(木) 19:00:23
有名な不具合じゃないか。スレ違いだが。
22デフォルトの名無しさん:2007/10/18(木) 19:05:25
>>16
さんくすです。fn:escapeXml()を使うのか。
でもこれ、いけてねー
${fn:escapeXml(var)}
<c:out value="${var}"/>
あんましかわらん。。。
やっぱり ${} はデフォルトでエスケープすべき。
したくないときだけ <c:out value="${}" escapeXml="false"/> を使うのがいいんじゃないか。
23デフォルトの名無しさん:2007/10/18(木) 20:04:43
>>17
俺も同じ症状だノシ
とりあえずFirefox使って凌いでる。おそらくローカルドキュメントのセキュリティ関連だと思うが、
バグかもしれんので原因を探す気にはなれない。
248:2007/10/18(木) 20:17:38
どなたか >>8 についてのアドバイスをいただけないでしょうか?
率直に言って、みんなどうやっているのか不思議です。
WARを作る際にAntなどでファイル名を変更しているのでしょうか?
25デフォルトの名無しさん:2007/10/18(木) 22:00:44
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が通りません。誰か教えてください。
26デフォルトの名無しさん:2007/10/18(木) 22:57:24
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を再度実行してみても「すでにインストールされています」と表示されるのみです。

どうすればいいのでしょうか?
28デフォルトの名無しさん:2007/10/18(木) 23:42:15
>>8
デフォルトは固定で持たせておいて、開発用の設定ファイルはVM引数で渡したり、設定ファイル郡を定義する設定ファイルを読み込んだり(web.xmlでもOK)する事が多い
29デフォルトの名無しさん:2007/10/18(木) 23:46:06
>>27
OSは?
あと、JavaSE6ってJDKを入れたのか、JREをいれたのか?

とりあえず、コンパネからアプリケーションの追加と削除で、1.3を消してしまえ。
以前、1.3を入れた覚えとかあるならば、環境変数のpathに1.3のbinが通ってないかも確認する方がいい。
ついでにclasspathとか入っているならば一度消すべし
30デフォルトの名無しさん:2007/10/18(木) 23:57:07
>>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("テスト");

【出力結果】
改ページ・テスト


※ \は実際には「バックスラッシュ」です
33デフォルトの名無しさん:2007/10/19(金) 00:45:00
質問です。

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をちゃんと引数として持って来れていないのが原因と考えていますが、直す事ができません。
どうすればいいのでしょうか?
34デフォルトの名無しさん:2007/10/19(金) 02:20:05
そりゃ f は main のローカル変数だからだろ、他の場所からは見えんよ
たぶん new FileDialog(MyFrame.this, "SAVE画面", FileDialog.SAVE); でいけるかと思うが
GUI の前にもうちょっと Java の言語自体を勉強したほうがいいような
35デフォルトの名無しさん:2007/10/19(金) 02:32:04
>>34
エラーがなくなり、実行できるようになりました。
ずっと悩み続けていて、Webサイトや参考書で調べてみたりしたのですが
mainでのローカル変数は取り辛い、ということしか解らず解決策を見いだせずにいました。
解決策を拝見し、javaについての知識が浅すぎたという気持ちでいっぱいです。
もっと精進できるよう努力します。ありがとうございました。
36デフォルトの名無しさん:2007/10/19(金) 02:59:58
すみません、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("ななし");
 }
}
37デフォルトの名無しさん:2007/10/19(金) 03:21:10
>>36
実行時エラーを出すも何も、そもそもそのソースはコンパイルできないだろ。

a = new Person[max];
はPerson型を格納する配列を作成しているだけで、
その要素であるPerson型のインスタンスを生成しているわけではない。
だから、
a[0].SetName(insert);
で配列要素の初期値であるnullに対してメソッドを呼び出そうとして例外が投げられる。
配列の要素もちゃんと生成しろ。
3836:2007/10/19(金) 03:31:06
コンパイルは通るんですが、
実行してもNullPointerExceptionが返るって、、
まったく状況似たようなもんですけどね。


すみませんが、なんかサンプルみたいのないでしょうか。
レスしてくださったのはありがたいんですが、
概念がさっぱり。。。インスタンスについて完全にわかってないせいでしょうか。。。
39デフォルトの名無しさん:2007/10/19(金) 03:33:28
>>38
class 2ch{

> 配列の要素もちゃんと生成しろ。

> なんかサンプルみたいのないでしょうか
sunのドキュメントやチュートリアル
4036:2007/10/19(金) 03:36:21
>class 2ch{
テキトウなクラス名つけておいたら、
実際にやってみたら、通りませんでした(汗
class Eとかつけてたんですが、そのまま書けばよかった。


6時間格闘してるんですが、
正直何がわかってないかがわかってないだけに
どこを探せばよいのか。。。
41デフォルトの名無しさん:2007/10/19(金) 03:38:43
2chのレスで出てくる用語が理解できたら、そもそも質問なんて投げないよな。
そこら辺もきちんと説明してあげたらどうよ?
4236:2007/10/19(金) 03:44:19
それなりにクラス、インスタンスの概念はわかってたつもりなんですが、
こういう風にクラスを3つ使うパターンを
実践してみたことがなくて、何が起きてるかわからなくて。
43デフォルトの名無しさん:2007/10/19(金) 04:19:11
>>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]に代入する方法も分かるよね?代入演算子を使えばいい。
44デフォルトの名無しさん:2007/10/19(金) 04:29:02
>>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
もっと細分化して簡単にしてあげればアホでも分かるだろう
46デフォルトの名無しさん:2007/10/19(金) 07:10:37
Javaの配列は理解できるまで特殊だからなー
特に初心者本でいい加減に解説されていることが多いのが問題。

 Person p と宣言したときは、pは当然ながらPersonインスタンスを参照する
 Person[] p と宣言した場合は、pはPerson[]インスタンスを参照する
 しかし、Personインスタンスは生成していないから、p[0]には何も参照がない
4742:2007/10/19(金) 08:34:35
>>43-46
たくさんのご返答ありがとうございます。
>>43さんの指示通りAddressのコンストラクタの末行に
for(int i=0; i<max; i++) a[i] = new Person();
を加えることで対処できました。

実際に動くのを目で見てみると、
>>37の「格納する配列を作っただけで、配列の要素を作ってない」
という意味がわかりました。
また>>44のクラスを3つ使ってるから陥ったわけでもないというのもわかりました。

しかし、我ながらまだインスタンスと配列の概念があやふやだと思うので、
みなさんのレスも合わせて勉強しなおしたいと思います。
48デフォルトの名無しさん:2007/10/19(金) 08:39:50
URLConnectionからログインサーバにUserIDとpasswordを書き込んだのですが、クッキーが取得できません。
IEブラウザで行うとローカルプロキシには
Browser reload detected...
Posting 155 bytes...
とログが残るのですが、JAVAでリロードを感知するにはどうしたらいいのでしょうか?
49デフォルトの名無しさん:2007/10/19(金) 09:32:46
ある数の約数を求め、そこから累乗(4, 9, 16...)で割り切れる数をぬきだしたいんですが、どうすればいいかわかりません。
たとえば12の場合約数は

1, 2, 3, 4, 6, 12

でこっから累乗で割り切れる数を抜き出した場合、

1, 2, 3, 6

どうにか約数をリストアップさせることはできたんですが、累乗で割り切れる数を抜き出すことができません。
誰かお助けを。 よろしくお願いします。
50デフォルトの名無しさん:2007/10/19(金) 10:00:44
感覚的に、累乗ってめちゃ大きくなるから、指定されたある数までの累乗リストを作って、
求めた約数の配列に対して順次演算処理していけば良いんじゃないかな。
逐一累乗を計算するより良いかと思う。
51デフォルトの名無しさん:2007/10/19(金) 10:14:24
>>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初心者なんで... もう頭がおかしくなってきました。もっと考えみますが、誰かなにかアドバイスがありましたらご指摘お願いします。
52デフォルトの名無しさん:2007/10/19(金) 10:15:12
>>50
アドバイスどうもありがとうございます
53デフォルトの名無しさん:2007/10/19(金) 10:20:14
>>51
ごめんなさい、facInt1はすべてint1です。^^;
54デフォルトの名無しさん:2007/10/19(金) 11:45:12
データの登録画面を作っていて、プルダウンとテキストがある画面なんですが
入力のチェックがあり、エラーが出ると登録されず登録画面のままにし、
その際選択したプルダウンを選択したままの状態にする際はどうしたらいいんでしょうか
558:2007/10/19(金) 12:04:48
>>28, >>30
ありがとうございます。参考になります。

さらに質問なのですが、たとえばweb.xmlなどはどうしておられますか?
errorpage要素、welcome要素などが、開発、テスト、本番ごとに、定義してあっ
たりなかったりするのですが、どの環境でもファイル名はweb.xmlでないと動き
ません。別のファイル名をつけて、デプロイ時にリネームするのでしょうか?

また、内容の大部分は重複しているので、もしファイルを3つ作るとすると、3
つのファイルに同じような編集を繰り返さなければなりません。エラーの元に
もなるし、どうしたものかと思っています。

56デフォルトの名無しさん:2007/10/19(金) 12:23:40
>>54
JavaScriptでは無くサーバで値チェックてことだよね。
選択したoptionにselectedをつければ選択されるが、
"selected"が入った変数をセッションで渡して、
${}, <%= %>で表示すればいいと思う。
57デフォルトの名無しさん:2007/10/19(金) 12:28:01
すみませんが、Pure Javaの行列演算ライブラリはありませんか?
JNI経由でblasなどを呼び出すという話があるようなのですが、マルチスレッド
環境を考えると不安なので、どこかにPure Javaなライブラリがないかと思うの
ですが。
5857:2007/10/19(金) 12:30:28
すみません、自己解決しました。
Commons Math というのがあるのですね。
http://jakarta.apache.org/commons/math/
使ってみて、不満だった時にまた質問します。
59デフォルトの名無しさん:2007/10/19(金) 14:22:57
>>56
レスありがとうございます。
確認してやってみたいと思います。
60デフォルトの名無しさん:2007/10/19(金) 16:13:55
ゲームを作っていて、そのランキングをXMLでファイルに保存しています。
JavaでのXMLの取り扱いについて調べてみると数年前の情報しか見つからず、
その情報を頼りにDOMで実装しました。

今現在DOMよりも一般的な方法があれば教えてください。
61デフォルトの名無しさん:2007/10/19(金) 16:35:03
>>55
Antのコピーでフィルタかけるとか。

あるいは、環境で変る箇所はweb.xmlから追い出すとか。
62デフォルトの名無しさん:2007/10/19(金) 16:49:00
>>60
JDOM,SAX,StAX
一般的かどうかは自分の目で判断してくれ。
俺は裾野が広がった、と見ている。
63デフォルトの名無しさん:2007/10/19(金) 17:13:26
失礼します。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の読み込みに失敗しました。
このファイルが存在するかどうか、およびこのファイルへのアクセス権があるかどうかを」

何とかしてインストールしたいので宜しくお願いします。
6564:2007/10/19(金) 17:53:13
JavaはVer6Update3でした。
デフォルトの6は今まで使えてました。
何故アップデート出来ないのでしょうか・・・。
6664:2007/10/19(金) 17:55:51
情報が小出しで済みません。
WindowsはVistaビジネス32bit版です。
IE7です
67デフォルトの名無しさん:2007/10/19(金) 18:03:16
>>60
JDOMマジオススメ。w3cの方使ってからだと感動する。
68デフォルトの名無しさん:2007/10/19(金) 18:29:56
>>63
すいません、わかりました。^^;
6954: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で表記するのですが
この記述を簡略化することはできますでしょうか。
70デフォルトの名無しさん:2007/10/19(金) 19:14:01
>>26
できました。ありがとうございます。
71デフォルトの名無しさん:2007/10/19(金) 20:18:20
やっぱりできません。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とうってもバッチファイルとして認識できませんと出ます。
アドバイスください。
72デフォルトの名無しさん:2007/10/19(金) 20:37:20
>>71
pathの方だが、JAVA_HOMEは認識しないぞ
ちゃんとフルパスで入力汁
あと、classpathは色々と面倒な事になるから消しとけ
必要な場合は起動時に指定するべし
73デフォルトの名無しさん:2007/10/19(金) 20:59:21
これのコンパイルが通らないのは型が違うからでしょうか?
byte s = Byte.parseByte(args[0]) - 1;
74デフォルトの名無しさん:2007/10/19(金) 21:11:09
>>73
エラー
75デフォルトの名無しさん:2007/10/19(金) 21:13:29
>>73
1行づつ分解してコンパイルしてみればいい
76デフォルトの名無しさん:2007/10/19(金) 21:14:07
C言語、winのSetConsoleTextAttributeの
javaバージョンがありましたら教えてください。
77デフォルトの名無しさん:2007/10/19(金) 21:14:55
>>73
byte s = (byte)(Byte.parseByte(args[0]) - 1);
78デフォルトの名無しさん:2007/10/19(金) 21:17:56
>>77>>75>>74
ありがとうございます。原因が分かりました。
79デフォルトの名無しさん:2007/10/19(金) 21:23:22
>>76
標準のコンソールを操作するクラスはjava.io.Consoleだけどほとんど機能はない
自分でGUI組むしかないんじゃない?
80デフォルトの名無しさん:2007/10/19(金) 21:42:37
>>79
なるほど、分かりました。
ありがとうございました。
81デフォルトの名無しさん:2007/10/20(土) 00:01:47
>>25,71
> C:\Program Files\Java\jdk1.6.0_<version>

まさか <version> の部分を文字通り <version> と書いているわけじゃないよな?
82デフォルトの名無しさん:2007/10/20(土) 00:11:04
>>81
既に別のスレで指摘されている
というか>>71はマルチじゃね
83デフォルトの名無しさん:2007/10/20(土) 12:40:25
別のスレで質問したのですが、回答をいただけなかったのでこちらで再度質問させてください。
マルチになってしまい、失礼なのは解っていますが、どうかお願いします。

フレームをバックグラウンド(非アクティブ)にした状態でマウスイベントの取得はできますか?
できるならばその手法について教えてください‥どこを探しても載っていないので本当に実現できるか心配でorz
84デフォルトの名無しさん:2007/10/20(土) 17:38:11
心配なら確かめればいいよ。自分で。
85デフォルトの名無しさん:2007/10/20(土) 17:52:38
>>83
とりあえず最低限のもの作って自分で確かめろよ。
86デフォルトの名無しさん:2007/10/20(土) 18:18:58
超初心者の質問ですが
OS=XPpro
Javaランタイムの現在のバージョンは1.6.0_03をインストール済み
旧バージョンの1.6.0_01/1.6.0_02はどうすればいいのでしょうか

以前の1.5.0_10などはプログラムの追加と削除からアンインストールしてました
諸先輩方 ご教授願います。
87デフォルトの名無しさん:2007/10/20(土) 18:32:52
削除していいよ
8886:2007/10/20(土) 18:41:12
http://www.java.com/ja/download/faq/index_general.xml
ここに質問と↑ ここに回答が書いてありました↓ HDDに余裕があるので1.6.0_01/1.6.0_02は残します
http://www.java.com/ja/download/faq/5000070400.xml
お騒がせしました _(_^_)_
89デフォルトの名無しさん:2007/10/20(土) 19:13:19
脆弱性のあるソフトウェアは、JREに限らず削除しておくべき
9083: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ファイルも作成されないようなのでよくわかりません。
わかるひとにはくだらない質問だと思いますが、どうぞよろしくご教授お願いいたします。
92デフォルトの名無しさん:2007/10/20(土) 20:57:58
>>90
java.awt.MouseInfo
非アクティブでも使えるかしらん

>>91
jar マニフェスト
93デフォルトの名無しさん:2007/10/20(土) 21:00:07
>>91
もしくはexewrapとかjsmoothとかlaunch4j
あとはgcjでバイナリにしちゃうとか
94デフォルトの名無しさん:2007/10/20(土) 21:10:19
ある数字をカウントするプログラムを作りたいのですが考え方が全く分かりません
例えば1から15までの数の1を数えたい場合は8と出力させたいのですが

これはやはり数学的にどうにかなるようなものなのですか?
95デフォルトの名無しさん:2007/10/20(土) 21:14:44
各数字において10のn乗で割った余りに1が出たらカウントするとかそんなんでいいのか?
96デフォルトの名無しさん:2007/10/20(土) 21:22:27
if (i % 10 == 1) {
count++;
}
if (i / 10 == 1) {
count++;
}
97デフォルトの名無しさん:2007/10/20(土) 21:34:14
いったん文字列に変換してカウントした方がわかりやすい気がする
98デフォルトの名無しさん:2007/10/20(土) 21:50:00
JavaでIDropTargetを実装するにはどうすればいいですか?
9983:2007/10/20(土) 21:54:05
>>92
java.awt.MouseInfoをグーグルで検索を行い、マウスの位置を非アクティブで
確認することができました。
プログラムに組み込めるよう応用してみます。大変助かりました。ありがとうございます。
10094:2007/10/20(土) 22:13:44
なるほど、みなさん参考になります。
こんな事も自分の頭で考えられないとは…
101デフォルトの名無しさん:2007/10/20(土) 22:42:57
>>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
103102:2007/10/21(日) 01:01:00
補足です。

System.out.printlnでキー入力値が表示されないので、おそらくkeyPressedの
イベントが呼ばれてないように見えます。
104デフォルトの名無しさん:2007/10/21(日) 01:07:16
>public void init(){

これがどこからも呼ばれてないんじゃ?
105104:2007/10/21(日) 01:07:58
PanelTest の方の init ね
106デフォルトの名無しさん:2007/10/21(日) 01:08:00
>>102
イベントリスナを登録していないから呼ばれるわけがない。
PanelTest#init()を明示的に呼ぶか、
AppletTest#init()の中でpanelにadd*Listener()するか汁。
PanelTestのコンストラクタの中でthisをadd*Listenerするのは止めておけ。
たぶん勘違いしているのだろうがinit()が勝手に呼ばれるのは、
Appletクラスのサブクラスをアプレットとして呼ぶ場合だけだぞ。
10760:2007/10/21(日) 01:58:38
>>62,67
レスありがとうございます。

JDOM使ってみたんですが、これすごいですね。
DOMと比べて記述が直感的に分かりやすい。それに動作が洗練されていて、効率的。
XMLの取り扱いがここまで簡単になるなんて思っていませんでした。
これは感動しました。

概要を掴む為のサイトを探し出すのに非常にホネが折れました。
ttp://web.archive.org/web/20061209062051rn_2/www-06.ibm.com/jp/developerworks/java/010810/j_j-jdom.html

公式サイトに詳しい解説ページがあるようなので、今からちまちま読んでいこうと思います。
108デフォルトの名無しさん:2007/10/21(日) 07:19:16
109102:2007/10/21(日) 07:57:10
>>104-106
ありがとう。

classをnewすると、classのinitが自動的によばれるものと勘違いしてました…
110デフォルトの名無しさん:2007/10/21(日) 14:24:02
お初。
フレームを常に最前面に表示させたいんですが…
toFrontで簡単に出来るかと思ったんですが調べてもできませんでした…
どなたか教えてください…。
111デフォルトの名無しさん:2007/10/21(日) 15:40:10
教えてくれ.
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に値を設定できるんだ?
112111:2007/10/21(日) 15:44:37
v.add("foo")で設定できるのはわかっているのだが,
空のVectorに,位置を指定して要素を設定したいのだ.
113デフォルトの名無しさん:2007/10/21(日) 15:47:07
>空のVectorに,位置を指定して要素を設定したいのだ.

無理。できない。
114111:2007/10/21(日) 16:12:26
>>113
ありがとう.そうか.まぁ,考えてみればそうだよな.
配列ならできるんだろうが,Vector以外のデータ構造で
>>111でやりたいようなことができるものって,
Java-APIで準備されたもので他に何かないかな?
ううむ.なさそうだな.
Vector初期化のときに捨てデータでも入れておいて,
あとからset()/setElementAt()で設定する,という手ぐらいか.
115デフォルトの名無しさん:2007/10/21(日) 16:13:05
そういうことがしたいなら配列を使うか必要なだけnullでもaddするか
116111:2007/10/21(日) 16:22:44
>>115
「必要なだけnullでadd」してみたんだが,
これはだめじゃなかったかな.
nullを入れても空と同じ扱いだったような…
(未確認だが)
結局,「Vector初期化のときに捨てデータ」
で試行中.助言ありがとう.
117115: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));
}
}
118デフォルトの名無しさん:2007/10/21(日) 17:01:16
それとも、新しいクラスを定義するほどでもないと思うなら、
Vector#setSize(int)を使えば初期化時にnullを必要なだけ追加してくれる。
119デフォルトの名無しさん:2007/10/21(日) 17:04:05
少しニュアンスが違った。
Vector#setSize(int)を初期化時に使えば自分で追加するコードを書かなくても
だね
120デフォルトの名無しさん:2007/10/21(日) 17:16:22
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?)次の要素はないですよね?
121デフォルトの名無しさん:2007/10/21(日) 17:23:49
>>120
疑問点がよく分からないんだけど、listには要素"A"が1個入ってるんだから、
最初にwhileの条件式を評価する段階ではitr.hasNext()はtrueになるんじゃないの?
122デフォルトの名無しさん:2007/10/21(日) 17:26:45
なんで最初からAを指してると思うんだ
123デフォルトの名無しさん:2007/10/21(日) 17:30:57
>>120
もしかして、itr = list.iterator()の段階でitrは"A"を指していると勘違いしている?
itrは"A"の前を指していると思えばいい。それでないとIteratorで全てを取り出すことができないじゃないか。
だから、最初にnext()すると"A"を取り出せる。"A"を取り出せる状態なんだからhasNext()は真になる。
124デフォルトの名無しさん:2007/10/21(日) 17:32:42
>>123>>122>>121
ありがとうございます。勘違いしていたようです。
確かに一つ前と考えると納得がいきます。
125デフォルトの名無しさん:2007/10/21(日) 17:34:45
>>120
最初にAをさしていると考えてもいいんだが
その場合はhasNextはさしているものがまだある時にtrueを返し
nextはさしているものを返してから次に進むと考えないといけない
126デフォルトの名無しさん:2007/10/21(日) 17:44:34
キャレット(テキスト入力時にある|)みたいに考えればいいんじゃないかと思う。
127デフォルトの名無しさん:2007/10/21(日) 17:54:12
横からで申し訳ありませんがエディタについて質問です。
今自分は秀丸のCompleteXでコーディングしているのですが、
他にオススメのエディタってありますか?
よろしくお願いします。
128デフォルトの名無しさん:2007/10/21(日) 17:57:26
>>127
エディタの良し悪しは使用者の使用スタイルや嗜好が結構決め手になるので
自分がどういうものをエディタに求めているかを示したほうがいい
129デフォルトの名無しさん:2007/10/21(日) 17:59:56
>>127
vi
130デフォルトの名無しさん:2007/10/21(日) 18:04:23
>>128
使用スタイルとかはまだ決まっていないのですが
関数や文字を入力した際に色で分けてもらえるといいです。

>>129
探してみます。
131デフォルトの名無しさん:2007/10/21(日) 18:04:40
>>127
Eclipseでいいじゃん
エディタなんて好み、秀丸に金払っているならば秀丸使えばいい
132デフォルトの名無しさん:2007/10/21(日) 18:11:09
>>131
秀丸はちょっと使いにくくて・・・^^;
Elipseってよさそうですね。早速使ってみます。
133デフォルトの名無しさん:2007/10/21(日) 18:12:14
>>130
統合開発環境を入れるほどではないと思うなら、
せっかくJavaプログラミングだしjEditでも入れてみたら?
Jeditじゃないよ
134デフォルトの名無しさん:2007/10/21(日) 18:16:10
>>132
使いにくいと思うのは構わんが、使いこなしているとは思えんがなぁ・・・
メソッドや文字の色分けなんかは秀丸でも対応しているわけで。
ま、俺もEclipseでいいと思うよ。
135デフォルトの名無しさん:2007/10/21(日) 18:20:11
>>133
ありがとうございます。
jEditも使ってみます。

>>134
確かに秀丸は使いこなせてません・・・。
JAVA専用!ってエディタが欲しくて^^;
136デフォルトの名無しさん:2007/10/21(日) 18:26:11
>>135
EclipseはIDEだけど、まあJavaのための環境が必要なら、Eclipseは間違いじゃない・・・多少重いのを除けば。
137デフォルトの名無しさん:2007/10/21(日) 21:58:39
質問です。
例えば、
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]としても使用することができませんでした。
138137:2007/10/21(日) 22:10:08
すいません。事故解決しました^^;
139デフォルトの名無しさん:2007/10/21(日) 23:53:58
>>110
Window#setAlwaysOnTop
140111:2007/10/22(月) 00:13:22
一応報告.
助言を参考にやってみたが,nullで要素を初期化しても
思うように動作しなかった.
null以外の捨てデータを入れてあとから書き換えも考えたが,
結局配列を使うのが最も手軽のように思えるので,
その方向で作業することにした.いろいろありがとう.
141デフォルトの名無しさん:2007/10/22(月) 00:23:53
>>140
nullも要素とするようなデータ群を入れるなら、
>>117でnullをaddする代わりにクラス内に適当なprivateオブジェクトをダミーとして作って、
それをaddするようにすればいい。
その場合はgetとかの取り出す系のメソッドもオーバーライドして、
ダミーデータを取り出そうとした場合、例外なりを出すようにすればいい。
てか、もしかして思うように動作しなかったってのは、
nullが入った要素を取り出して何かをやろうとしてNullPointerExceptionが投げられたんじゃ?
142デフォルトの名無しさん:2007/10/22(月) 00:28:59
>>111
くどいようだが、なにを実現したいのかが不明だよ。
VecrorなりListは可変長のリストを管理するクラスだし、一般的にその方が使いやすい。

単純にインデックスと値を対応させたいと言うならば、Mapを使うのが筋。
例えば、
HashMap map = new HashMap();
map.put(100, "データ");
map.put(102, "データ2");
と自然にかける。
実現したいのはこっちじゃねーの?
143デフォルトの名無しさん:2007/10/22(月) 10:59:07
俺もそう思う。

>>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
144111:2007/10/22(月) 12:08:40
>>みなさま
なるほど.Map系のクラスが使いやすいね.
Map系クラスだと重くなるかと思い配列かVectorかで
やってしまおうと思っていた.
ほとんど配列でやってしまったのだが,
Map系クラスのほうがスマートだね.
もういちど書き換えることにする.ありがとう.
ついでにご教示願いたいのだが,
Map系クラスを使ったときのメモリ効率とか
生成のためのオーバーヘッドなどは
処理を重くしないのだろうか.
145デフォルトの名無しさん:2007/10/22(月) 12:15:58
↑おまえみたいな自己忠にはおしえられんなあ
146デフォルトの名無しさん:2007/10/22(月) 12:24:09
>>143
俺もこの問題をMapで対処してたんだが、ずっとHashmap使ってた。
TreeMapの方がパフォーマンスよかったのね、勉強になったわ。
147デフォルトの名無しさん:2007/10/22(月) 12:26:07
平衡木やハッシュテーブルによる辞書の実装を勉強汁
アルゴリズムとしては基本だから
148デフォルトの名無しさん:2007/10/22(月) 12:28:56
>>146
ハッシュ関数の精度にもよるが実行時間オーダはHashMapの方が優秀
要素数が少なければ大して変わらんが
149デフォルトの名無しさん:2007/10/22(月) 12:43:36
>>111
殆ど隙間なく要素が入ってるなら
配列,Listは最小限のメモリ消費、
MapはKey,Entryの分、少し余計に消費する。

隙間が多いなら、
Mapは最小限のメモリ消費、
配列,Listは要素数 * 参照型変数サイズの分、余計に消費する。

どちらも要素数が10万未満ならまず気にすることは無いかと。


拡張のオーバーヘッドはVector, ArrayListが比較的大きい。
LinkedListなら小さいがランダムアクセスの
オーバーヘッドが大きくなる。

Mapは拡張、ランダムアクセス両方とも小さい。
詳細はjavadoc参照で。

>>146
いや、パフォーマンスとかじゃなく、
iterator(for文)の順序がソート済みになるってこと。
HashMapで順序合わせると for(int i=0〜が必要。
SortedMap見ると良いとオモ。

順序保証でパフォーマンス気になるなら
SortedMap + .entrySet()で回すのが最速かと。
150デフォルトの名無しさん:2007/10/22(月) 12:56:07
>>147-149
なるほど、パフォーマンスがよくなる訳じゃないのね。
二分木なんかは一応勉強してたんだけど、インターフェイスがMapだから、ツリーがないと思ってた。
151デフォルトの名無しさん:2007/10/22(月) 13:40:11
何処に実行負荷をかけるかというタイミングの問題。
アルゴリズムというよりデータ構造の特徴の問題。

挿入時にソートするか、利用時にソートするか。
利用パターンによってどのデータ構造が良いかを考えるのがプログラマの仕事。
152デフォルトの名無しさん:2007/10/22(月) 13:53:39
>>150
もうちょっと深くデータ構造を勉強した方が役に立つと思う
153デフォルトの名無しさん:2007/10/22(月) 14:21:12
serialVersionUID = 1L;
って何でしょう?
ほっといてもいいですか?
154デフォルトの名無しさん:2007/10/22(月) 14:22:00
良い
155デフォルトの名無しさん:2007/10/22(月) 14:26:15
>>153
1.5以降で、シリアライズしないのが分かっているなら
@SuppressWarnings( "serial" )
でもいい。
156デフォルトの名無しさん:2007/10/22(月) 16:25:33
シリアライズするかしないか私にはわかりません。
157デフォルトの名無しさん:2007/10/22(月) 16:29:08
ここにいる奴には、もっとわからん
158111:2007/10/22(月) 16:33:56
>>みなさま
移動中に盛り上がっていただいているようで幸いに存じます.
移動中考えましたが,>>149さんご指摘と同じような
メモリ効率に思い至りました.
結局,要素が隙間なく密に並んでいることが保証されるものに
対しては配列を,疎になる可能性のあるものに対してはMapを
使うことに決めました.これに関してはもう書きません.
どうもありがとうございました.
159デフォルトの名無しさん:2007/10/22(月) 20:26:01
>>111
重いと思い込むのは一番ダメ
ほとんどは都市伝説なんだから
気になるならば実測、これで解決

いるんだよ、未だにArrayListは遅いから禁止とか言う馬鹿・・・
160デフォルトの名無しさん:2007/10/22(月) 20:40:12
Cやアセンブリでやってるならともかく、
Javaでやるならそれほど神経質になることはないと思うんだけどなあ。
161デフォルトの名無しさん:2007/10/22(月) 20:42:04
時期尚早な最適化ってやつだな
162デフォルトの名無しさん:2007/10/22(月) 21:37:20
File#listRoots()でPCにあるドライブを取得できますが、
それがハードディスクなのか、リムーバブルディスクなのか、CDドライブなのかなど、
種類を判定する方法ってありますか?
163デフォルトの名無しさん:2007/10/22(月) 22:11:32
Vista マシンで RMI-IIOP 使ってるんだけどクソ重たい・・・
リモートメソッド一回呼ぶごとに、
XP より最大 0.2秒のオーバーヘッドが余計につく
VM変えようがファイアウォール切ろうがまるで変化なし
どうしたらいいの〜
164デフォルトの名無しさん:2007/10/22(月) 22:16:57
すみません。質問です。サーバーにPOSTするときのレスポンスコードとhttpHeadersの取り方なんですが、
OutputStreamで書き出した後でいいんでしょうか?
165デフォルトの名無しさん:2007/10/22(月) 22:18:25
>>162
ちょっとググったけど、なかなかないねえ。
ドライブの種類を調べて何がしたいの?それを書けば代替えの方法を教えてくれるかもしれないよ。
166デフォルトの名無しさん:2007/10/22(月) 22:21:55
>>163
OSレベルでなんらかのセキュリティでも働いているのかね

>>162
たぶん無理
Java6ならばシステム環境変数とか取得できるんで、その辺に情報があれば…って程度。
167デフォルトの名無しさん:2007/10/22(月) 22:22:56
>>165
まずは日本語でおk

クライアントが投げるときの処理なのか、サーバーでレスポンスを返すときの処理なのかどちらとも取れないw
168デフォルトの名無しさん:2007/10/22(月) 22:24:20
アンカー間違ってないか?
169デフォルトの名無しさん:2007/10/22(月) 22:24:58
いまどき意味もなくVector使ってるやつっていったい?
170164:2007/10/22(月) 22:40:44
>>167
う。クライアントがサーバーにポストして、クライアントがレスポンスコードを受け取りたいのです。
171164:2007/10/22(月) 22:45:13
じゃなくて、クライアントがサーバーにポストするときに、クライアントがサーバーからHTTPHeadersを取得したいのです。
クライアントのJAVAアプリです。
172デフォルトの名無しさん:2007/10/22(月) 22:50:42
>>171
まずは餅付け。このAAでも見て一息入れるとよろし。

     /\⌒ヽペタン
   ∩ ∩/⌒)ノ ∩ ∩
   | |_| | \ (( | |_| |  ペタン
  (; ´Д`))' ))(・∀・ ;)
  /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
 (O   ノ ) ̄ ̄ ̄(.)__   )
  )_)_) (;;;;;;;;;;;;;;;;)(_(
おまいらモチツケ!
173デフォルトの名無しさん:2007/10/22(月) 23:00:10
サウンドの再生が終わったのに
mediaActionが全く呼び出されないんですが
原因は何が考えられるでしょうか…?
174デフォルトの名無しさん:2007/10/22(月) 23:09:37
175162:2007/10/22(月) 23:13:19
>>165
>>166
ありがとうございます。
Windowsのエクスプローラみたいなものを作ってまして、
純粋にドライブの種類を表示したいんです。
176デフォルトの名無しさん:2007/10/22(月) 23:15:41
>>173
どうしてお前らマルチは死なないんだ?
叩いても叩いてもゴキブリのごとく湧いてきやがる。いい加減死ね。
177デフォルトの名無しさん:2007/10/22(月) 23:20:34
新基準javaプログラミングという本を使っていたのですが、コンパイルができなくなり困っています。
勉強していたプログラムはdodaiという教科書の著者が作ったクラスを利用して作られているんですが、
今までできていたものが「Exception in thread "main" java.lang.NoClassDefFoundError: 」と表示され、
できなくなりました。原因は何かと思いコンピュータの復元で探していったんですが、どうやらjavaのアップデート後と、アップデート前で違うようでした。
javaのアップデートで今まで使っていたクラスが急に使えなくなるなんてあるんでしょうか?どなたか回答お願いいたします
178デフォルトの名無しさん:2007/10/22(月) 23:21:02
>>175
そうなるともう直接Win32APIを呼ぶしかないな。
それにしても、Javaでエクスプローラを作るってのはまた歌舞いてるな。
どう考えても向いてないぞ?Javaはマルチプラットホームを前提とした言語なんだから、
Windows固有の操作や情報なんかはひどく取得しにくい。めったにこういうことする人間もいないから情報も少ないしな。
まだP/Invokeで呼び出せるC#のほうが向いてる。
179デフォルトの名無しさん:2007/10/22(月) 23:26:48
>>177
ソースみてみなきゃ解らんが、コンパイルが通らなくなる事はほとんどないと思うが・・・。
180179:2007/10/22(月) 23:29:06
新基準javaプログラミングって最近出た本かよ。
ふざけたクラス名(dodai)とか、5〜6年前の教科書かと思ったわ
181デフォルトの名無しさん:2007/10/22(月) 23:30:45
コンパイル時にソースのJRE準拠レベルを変更することが可能じゃなかったっけ?
それを使って元のバージョンを指定し、コンパイルが通ればアップデートのせい。
通らなければそれ以外の要因。
個人的には>>179と同意見。
182デフォルトの名無しさん:2007/10/22(月) 23:35:58
>>178
nio2に期待しながら作り始めてるってのはどうかね?
183デフォルトの名無しさん:2007/10/22(月) 23:37:57
すいません、勘違いをしていました。コンパイルではなくて、javaの実行でした。
javaの実行において、以前はできていたのですが、新しいアップデートでできなくなったんです。
表示されたのは
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
でした。
184デフォルトの名無しさん:2007/10/22(月) 23:54:03
>>183
ずっとEclipse使ってたせいで、コマンドラインのエラーはあんまり見ないんだが、
実行しようとしてるファイルにMainメソッドがないと言ってるんじゃないか?
本当にMainが含まれたバイナリコードかもう一度確認しな。
185デフォルトの名無しさん:2007/10/22(月) 23:55:44
いや、まず、エラーを小出しにしているウチはスルーでいいだろ。
186183: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のアップデート前では実行できたのですが、アップデート後では実行できなくなりました。
187183: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)

こちらが正しいほうです
188デフォルトの名無しさん:2007/10/23(火) 00:14:28
>>186
俺の勘違いでなければ、

C:\JavaGOGO\Sample3-3>java FusenExec
のように、実行時に指定する文字列はクラス名だったはずだが。
189デフォルトの名無しさん:2007/10/23(火) 00:22:19
>>175
Windows であれば、javax.swing.filechooser.FileSystemView#getSystemTypeDescription(File f)
を使えば、3.5インチフロッピーディスク、ローカルディスク、 CDドライブ、ぐらいならとれる。
DVDドライブでもCDドライブって表示されるけど。
190デフォルトの名無しさん:2007/10/23(火) 00:30:41
java FusenExec.java

java FusenExec
191デフォルトの名無しさん:2007/10/23(火) 00:32:13
C:\JavaGOGO\Sample3-3 に Dodai.java が無い

に1票
192デフォルトの名無しさん:2007/10/23(火) 00:35:30
俺も>>191に一票で
193163:2007/10/23(火) 00:42:53
同じ Vista Business でも 他社製のは問題ないことがワカタ
メーカ製もしくはサードパーティ製の何かが悪いのか・・・
いろいろ消したり止めたりしたんだけどなぁ〜
194デフォルトの名無しさん:2007/10/23(火) 00:51:00
いろいろと試したんですが、java(TM)6Update3をアンインストールしたら問題なく実行できました。
何故問題なく実行できたのかはわかりませんが、とりあえず解決いたしました。皆様どうも迷惑をかけました。
195デフォルトの名無しさん:2007/10/23(火) 01:00:29
ちおおょぉいおおおおおおおっっっとおおおまってえええええええええい〜!〜!!!

そんなわけあるかああああああああああ。
そんな解決間違っとる!!!!!!!!!

帰ってこんかい。
196デフォルトの名無しさん:2007/10/23(火) 01:31:31
lib/ext にDodai.classを放り込んでるとか
197デフォルトの名無しさん:2007/10/23(火) 07:31:46
なんとなくライブラリ関係の気がする。
198デフォルトの名無しさん:2007/10/23(火) 07:43:56
実行できる方がおかしいんだけどなw
後はクラスパスに余計なのが指定されている、ってのが定番か
199デフォルトの名無しさん:2007/10/23(火) 08:08:42
B+treeについて学んでいます。
ためになるサイトを教えて戴けないでしょうか。
Javaで書かれたサンプルプログラムや、アプレットとかがあると嬉しいです。
200デフォルトの名無しさん:2007/10/23(火) 10:24:36
>>139
ありがとう解決した。
201デフォルトの名無しさん:2007/10/23(火) 10:41:32
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を使ってみても総称型は実行時に型判定できないようですので今回の用途には向かないようです。
原因として設計が下手なのでしょうが、もし定石やスマートな方法があればご教示頂ければ幸いです。
203163:2007/10/23(火) 12:33:21
結局NICまわりがタコいことがわかりまんた なんたるマヌケ
Autoでなく10MB Half にすると快適
ドライバ最新なんだけど・・・
IE は別段問題なかったので
やりとり頻繁だったから、とか UDP(使ってるの?)だから、とかそんなことみたい
204デフォルトの名無しさん:2007/10/23(火) 12:44:13
>>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){〜
  }
以下同様。
205デフォルトの名無しさん:2007/10/23(火) 12:47:02
>>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) { ... }
  });
 }
}
206205:2007/10/23(火) 12:48:21
こうすることで、Genericsのデータ型的汎用性と、
継承のポリモーフィズムを両立できる。
欲しい型のDataクラスを、継承によって作成し、
データ型によって処理を分けたいところは、ポリモーフィズムを使って各クラスに処理させる。
わかっていると思うが、GenericsではIntegerとかDoubleでボクシングするのを忘れるなよ。
207204:2007/10/23(火) 12:49:28
>>206
ごめん、204の間違いだった。206と205は別人。
204=206=207
208デフォルトの名無しさん:2007/10/23(火) 14:28:28
全部のプロジェクトで使うユーティリティみたいなライブラリってどこにおいてる?
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認証に対応できるのか、
教えてください!


他のサイトとマルチでスイマセン・・・
若干追い詰められてます(´・ω・`)
210デフォルトの名無しさん:2007/10/23(火) 15:38:05
mouseinfoではマウスの位置をフレーム外でも把握できましたが…
マウスが押されたの事をフレーム外で把握できるような命令はないでしょうか…?
211デフォルトの名無しさん:2007/10/23(火) 15:43:41
>>203
Vistaのドライバはまだ信用できないからな。
めげずにがんばってくれ。
212209: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用に直してあります。
213デフォルトの名無しさん:2007/10/23(火) 16:12:41
>>210
ない。
プラットフォーム依存になるけどネイティブコードでシステムのイベントをフックしてみるとか。
214デフォルトの名無しさん:2007/10/23(火) 16:39:13
>>212
SQLServer2005は全く使ったことがないけど、この辺見ると、
Windows認証を使う場合は、URLにパラメタを加える必要があると読める。
ttp://msdn2.microsoft.com/ja-jp/library/ms378988.aspx
ttp://msdn2.microsoft.com/ja-jp/library/ms378956.aspx
integratedSecurity=trueがアヤスイ。
まずはドキュメント読んで試してみたら?
215デフォルトの名無しさん:2007/10/23(火) 19:07:25
>>204>>205
ありがとうございます
お教えに従っていろいろ試行錯誤してみてました。お礼が遅くなって済みません
216デフォルトの名無しさん:2007/10/23(火) 21:47:06
マルチ全部片付けておけよな
217209:2007/10/23(火) 22:14:22
>>214
情報ありがとうございます。
残念ながらintegratedSecurity=trueで解決できませんでした・・・ショック

うーん、ヤバイ(´・ω・`)
色々やってみます
218デフォルトの名無しさん:2007/10/24(水) 00:17:33
下記のようにbuttonが押されるまで待機して、押された後に処理2に
進むにはどうしたらよいですか?

 処理1
 buttonが押されるまで待機
 処理2

考えたのが、

 処理1
219218: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;
}



220デフォルトの名無しさん:2007/10/24(水) 00:22:08
すみません 質問させてください
お絵かき掲示板に投稿しようとすると
access denied (java.net.SocketPermission (数字)connect.resolve)
というエラー文が出てきて投稿できなくなるんです
心当たりのある方、お願いします
221デフォルトの名無しさん:2007/10/24(水) 00:34:55
>>219
なんでそんなことする必要があるんだ?
ボタンをリスナーに登録すりゃいいんじゃないの?
JButton jButton = new JButton();
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
処理2;
}
});

222デフォルトの名無しさん:2007/10/24(水) 01:01:29
>>218
GUIプログラミングをやるならイベント駆動の考え方に慣れておいた方がいいよ
223デフォルトの名無しさん:2007/10/24(水) 01:52:03
>>202
突っ込みだけ

>また、返り値があるメソッドを作りたいので、継承によるポリモーフィズムもうまく使えない気がします。
ジェネリクスの導入の副作用として、シグネチャだけでなく返り値もそのサブクラスなら上書きできる。
224デフォルトの名無しさん:2007/10/24(水) 02:00:09
>>219
MessageBox 使えば簡単だよ
225210:2007/10/24(水) 02:58:07
>>213
返事が遅くなりすみませんでした。
軽く調べてみた結果、JNIみたいですね…。今まで足を踏み入れた事がない部分なので正直焦っています…。
とにもかくにも、ありがとうございました。
226デフォルトの名無しさん:2007/10/24(水) 09:31:15
>>223
関係ないかもしれないけど、関連質問

Object#clone()は、publicでオーバライドして、Cloneableをimplementsして
Hoge copy = (Hoge)hoge.clone()
とするのがこれまで定石だったけど、
@Override
public Hoge clone(){・・・
としておkになって、キャスト不要で問題なしでハッピーってこと?

clone()の使い方をぐぐるとどこもキャストしてるのでいまいち自信ないのさ
227デフォルトの名無しさん:2007/10/24(水) 10:48:23
コンパイルエラー
228デフォルトの名無しさん:2007/10/24(水) 11:06:54
>>226
そのあたりは、これから作られるクラスはハッピーになるが、
これまでに作られたクラスは互換性維持のため従来通り。

ArrayDeque#clone() の戻り値は ArrayDeque だけど ArrayList#clone() の戻り値は Object。
Javadoc みてみ。
229デフォルトの名無しさん:2007/10/24(水) 11:35:03
>>228
そうなんだ!

でも互換性維持ってどういう事だろう?
ArrayList#clone()の戻り値をArrayListに換えちゃっても、
これまでのソースでキャストもObjectへの代入も問題ないと思うんだけど
instanceof での比較が引っかかるからダメって事かな?
230デフォルトの名無しさん:2007/10/24(水) 11:49:46
例えば、従来は通ってた

class MyList extends ArrayList {
 public Object clone() { ... }
}

っていうコードが、ArrayList#clone の戻り値が ArrayList に変わると、通らなくなってしまう
戻り値を緩める方向にオーバーライドすることは出来ない
231デフォルトの名無しさん:2007/10/24(水) 12:06:00
>>183>>187 エラーメッセージにそのまま書かれてるジャン。
Dodai at FusenExec.main(FusenExec.java:5)
FusenExecのメインクラス内のDodaiクラスがないって。
Dodaiクラスもコンパイルしないとだめだよ。

超亀レスだけど。
232デフォルトの名無しさん:2007/10/24(水) 12:11:16
>>230
あ、なるほどそこですね。勉強になります

しかし、それぐらいだったらコンパイルエラーで修正も楽だしエンバグもなさそうだし
ごめんね、と一言断ってから互換無視して強行しちゃったほうがライブラリ的には綺麗な気がしますね
233デフォルトの名無しさん:2007/10/24(水) 12:20:26
「Java をアップデートしたら動かなくなったんですけど」 っていうユーザのクレームが 232 に殺到するところを想像してみるといいよ
234デフォルトの名無しさん:2007/10/24(水) 12:23:15
すみません。質問です。クライアントからソケットを使ってサーバーのHTTP HEADERを取りたいのですが、
ACKパケットは自動で送ってくれますか?
235デフォルトの名無しさん:2007/10/24(水) 12:31:11
>>232
Javaは互換性を重要視してるからね。
新機能を導入するときも、細心の注意を払ってしてるし。
236デフォルトの名無しさん:2007/10/24(水) 13:55:54
>ライブラリ的には綺麗な気がしますね

??
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は「_」後の数字なのでしょうか?
239デフォルトの名無しさん:2007/10/24(水) 17:34:37
>>237
ありがとうございます。パケットキャプチャーではSYNやACKパケットが見られるんですが、
ソケットのInputStreamには何も来ないので、JavaVMが自動で対応しているんですよね?
240デフォルトの名無しさん:2007/10/24(水) 17:45:01
>>238
アップデートする時って普通リリースノートを読むものじゃないのか?
ttp://java.sun.com/javase/ja/6/webnotes/ReleaseNotes.html
241240:2007/10/24(水) 17:50:17
むう、やっぱり日本語ドキュメントはちょっと遅いね。b04のままだ。
ttp://java.sun.com/javase/6/webnotes/ReleaseNotes.html
242デフォルトの名無しさん:2007/10/24(水) 18:00:17
verは1.6.0
updateは_03
ビルド番号はb05
ビルド番号は、ターゲットリリースごとに付けられるらしいです。
243デフォルトの名無しさん:2007/10/24(水) 18:10:27
>>242
ありがとうございます。安心しました。
なるほどです。
244218:2007/10/24(水) 18:53:31
>>221>>222>>224

ありがと。

処理1をやってる間はbuttonを押しても処理1は継続、
処理1後にbuttonを押されたら処理2を開始
ってのがしたいのです。

“イベント駆動”っていう考え方に慣れてないのかも。
MessageBoxとかその他をもう少し調べてみます。
245デフォルトの名無しさん:2007/10/24(水) 19:57:56
プログラムをまったくやったことない初心者です。
JAVAがいいといわれたので勉強したいのですが、
お勧めの書籍はあるでしょうか?
246デフォルトの名無しさん:2007/10/24(水) 20:32:12
絵板に投稿しようとすると
access denied (java.net.SocketPermission ***connect.resolve) (***はIPと思しき数字)
ってでてくるんですがこれなんでしょうか…投稿できません
どなたがお願いします
247デフォルトの名無しさん:2007/10/24(水) 20:39:13
>>246
しつけえ、一度質問してダメだったらあきらめろ。
248デフォルトの名無しさん:2007/10/24(水) 20:52:00
>>247
すみません 確かにしつこいのは承知ですが…
249デフォルトの名無しさん:2007/10/24(水) 20:52:35
Collectionを実装しているオブジェクトをdeep copyする時、
Serializeを使わずclone()を使う方法で一般的な方法はありますか?
一つ一つとりだしてclone()してもいいんですが、
より良い手段があれば紹介してください。
250デフォルトの名無しさん:2007/10/24(水) 21:29:21
ない。
Serializeを使うのも一般的ではない。
251デフォルトの名無しさん:2007/10/24(水) 21:30:05
つーかその絵板の管理人に聞けよ
252デフォルトの名無しさん:2007/10/24(水) 21:48:58
>>246
どこの絵板だよ
それで答えが返ると思っているのが間違い
253デフォルトの名無しさん:2007/10/24(水) 22:03:08
private void repaintWindow(){
Graphics g = strategy.getDrawGraphics();
Graphics2D g2 = (Graphics2D)g;
...
}
のように2Dグラフィックを使って描写しているのですが、
描写が増えるに従ってかなり重くなるように感じます。

for文、if文とメソッド呼び出しを大量に使っているせいだと思い出来る限り減らしていますが、
javaの処理で最もCPUを使うのはどういった命令文でしょうか。
抽象的な質問ですいませんが、軽くするテクニックを教えてください。
分かりにくければソースごと上げてみます。
254デフォルトの名無しさん:2007/10/24(水) 22:04:16
ソースなんかいくら眺めてもムダ
プロファイリングしる
255デフォルトの名無しさん:2007/10/24(水) 22:06:19
しぃペイントはことごとくそうなってしまう状態です
256デフォルトの名無しさん:2007/10/24(水) 22:07:54
>>253
それほど長くなければソースごと挙げた方がいいと思う。的確にボトルネックを指摘してくれるはず。

一般論で言わせてもらうと、もともとJavaは描画系が早くない。
でも、それをふまえた上で重いといってるんだとしたら、アルゴリズムに問題があるか、
そもそも無茶なプログラムを書いてるかのどちらかだと思う。
257デフォルトの名無しさん:2007/10/24(水) 22:16:04
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クラスを使った時点で
オブジェクト指向から外れることになるよな?
この矛盾、おまえらどう説明つけるわけ?
259デフォルトの名無しさん:2007/10/24(水) 22:19:52
>>257
ちょっっwおまwwww
JavaVM上でバーチャルマシン走らせるとかどれだけ酔狂なんだよwwww
っていうか、メリットねえwww
260デフォルトの名無しさん:2007/10/24(水) 22:23:13
>>258
オブジェクト指向であってオブジェクト原理主義ではない
261ジャズ紳士 ◆rHkT/SfI7A :2007/10/24(水) 22:33:01
ああ、やっぱそう割り切ってるわけ?
じゃあStaticな共通関数クラスなんて作っちゃうんだ?
262デフォルトの名無しさん:2007/10/24(水) 22:35:19
キモ
263デフォルトの名無しさん:2007/10/24(水) 22:35:26
細かいことは気にしない主義
264デフォルトの名無しさん:2007/10/24(水) 22:37:22
もっといろんなところで割り切ってるだろ
そんなどうでもいいとこじゃなくて
265デフォルトの名無しさん:2007/10/24(水) 22:38:01
>>261
それに何か問題でも?
266253:2007/10/24(水) 22:38:17
>>254
プロファイリングについて少し調べてきます。
>>256
長いのかはわかりませんが、900行ちょっとあったので
直接は貼れません。アップローダ探してきます。

どのくらいが無茶なプログラムか、自分では判断がつかないので・・。
267デフォルトの名無しさん:2007/10/24(水) 22:39:04
>>246
おきのどくですがあなたからの接続は拒否されました
268デフォルトの名無しさん:2007/10/24(水) 22:39:38
>>261
現にjava.lang.Mathはそうだし。
逆に実体のある概念をstaticにするのは馬鹿ばかしすぎる。
それだけだろ。

static無かったらSingleton実現できないしな
269デフォルトの名無しさん:2007/10/24(水) 22:43:19
こら
270デフォルトの名無しさん:2007/10/24(水) 22:43:51
>>246
セキュリティポリシーに引っかかってるのかもな
俺はエスパーじゃないので全く分からん

>>266
eclipseにtptpでも入れとけ
271デフォルトの名無しさん:2007/10/24(水) 22:48:01
>>266
なげえ、一つのクラスで900行は長すぎるよ、スレッガーさん・・・。
まあ冗談はおいといても、そのdraw部分だけでどれくらいあるんだ?
そこだけで何百行もあるなら、クラス化や関数化できてないと思わざるを得ない。
再利用できるところや意味的に分離できるところはクラス化、関数化しないとバグも増えるよ。
272デフォルトの名無しさん:2007/10/24(水) 22:51:54
>>259
確かに贅沢なんですけど
「アプリは1つ。サーバーがコードを吐き出すことで、クライアントアプリを自由自在に動かしたい」
という要望でして…。
273253:2007/10/24(水) 22:52:11
ttp://love.freedeai.com/index.html
ここの up9020.zip に上げてみました。
>>271
描写部のみでは190行程度あります・・
間違っているかもしれませんが、
3Dクラスを使うには別途インストールが必要ということで、
友達に見て貰うとき手間にならないよう全部2Dで表現したのです。
やはり冗長でしょうか。
274デフォルトの名無しさん:2007/10/24(水) 22:54:07
>>271
行数だけで判断するなよ
275ジャズ紳士 ◆rHkT/SfI7A :2007/10/24(水) 22:54:28
Java知らない人が多いみたいだね、このスレ。
276デフォルトの名無しさん:2007/10/24(水) 22:56:15
ケータイはよくわからんが
PushbackInputStreamはつかえねーの?
switchの代わりにハッシュマップはつかえねーの?
277デフォルトの名無しさん:2007/10/24(水) 22:56:51
そりゃそうだろ、知ってるなら質問スレには来ない
278デフォルトの名無しさん:2007/10/24(水) 22:57:54
>>273
チラ見だけしたが、どうにも同じような関数が多いなあ。
もっと再利用できるところがいっぱいあるはず。
279253:2007/10/24(水) 23:00:20
>>278
はい、精進します・・。

追記、描写に関係ないかもしれませんが、
カーソルキーで移動、
Shift+カーソルキーorShift+z,xで回転、
エンターで視点変更できます。・・多分。
280デフォルトの名無しさん:2007/10/24(水) 23:01:41
なんで状態を持つオブジェクトにstatic使ってんの?
281デフォルトの名無しさん:2007/10/24(水) 23:02:11
>>279
少し動かしてみたけど、なかなかおもしろいもの作ってるなあ。
ちょっとリファクタリングしてみるから期待せずに待ってろ。
ちなみに放置してねるかも試練から、レスがつかないからって恨むなよ。
282デフォルトの名無しさん:2007/10/24(水) 23:04:33
repaintWindowなんて勝手な関数つくってんじゃねえ
JPanel継承したらpaintComponentオーバライドしろ
283253:2007/10/24(水) 23:13:22
>>280
何かを読んでそうしたと思ったのですが忘れてしまいました。
よく考えると確かにstaticで無くても良い気がします。

>>281
よろしくお願いします。

>>282
最初にpaintComponentを使ってみて、
repaintを使うと思い通りのタイミングで描写できず、
調べて見たところ自分で作るといいとあったので使ってみました。
284デフォルトの名無しさん:2007/10/24(水) 23:14:28
>>279
ごめん、リファクタリング無理だわ。
つっこみどころが多すぎてどこから手を付ければいいのかわからん。
例えば、TetrisMainの80行目あたり、押されたキーの識別に実数使ってるけど、これって何か意図があってやってるの?
普通は、 if (code == e.VK_AみたいにKeyEvent上で定義されてる定数を使うものだよ。

全体を見た感じからすると、C言語から移ってきた人じゃない?
それなりに動いてるところからすると、実力はあるみたいだけど、
いかんせんJavaをほとんど理解せずに書いてるから、Javaの長所を殺してる感じだなあ。
今でこれだけ動くものが作れるんだから、OOPやJava言語の仕様を理解すればもっとスマートにかけると思う。
285253:2007/10/24(水) 23:26:18
>>284
ありがとうございました。

私はeclipseを使っているのですが、
そのcodeを定数にしたのは、e.VK_Z等を使った時警告が出て、
内容を考えても理解し難かったため、暫定的に定数を置いているものでした。
API仕様の説明から見ておかしいとは思ったのですが、
先におおまかに動作するよう作りたかったので、
迷った末警告の出ない方にしました。直しておきます。

もっとjavaを勉強してから出直してきますね・・
286253:2007/10/24(水) 23:29:48
って今見直したら簡単な警告でした、なんで理解できなかったんだろ・・?
287デフォルトの名無しさん:2007/10/24(水) 23:32:59
>>286
Eclipse使ってるならフォーマット機能も使った方がいい。C-S-Fのショートカットで実行できる。
3.3では保存時に自動でフォーマットしてくれる機能もついたからマジおすすめ。
まあイコールの桁をそろえたいとか思うかも試練が、なれればこっちの方がよっぽど便利。
288デフォルトの名無しさん:2007/10/24(水) 23:35:06
自動フォーマットはどうなんだろうな?
フォーマットしないアホに強制させるという点は評価できるんだけど、1ラインごとに保存する自分にはうざったい。
自分だけ切るわけにもいかないからなぁ
289デフォルトの名無しさん:2007/10/24(水) 23:37:59
>>283
>最初にpaintComponentを使ってみて、
そいつはすまなかった。
でもこの程度のスピードならアクティブレンダリング使わなくてもpaintComponent + JPanel#repaintいけると思うんだけどね
290デフォルトの名無しさん:2007/10/24(水) 23:49:02
>>250
了解です。
いままでどおり地道にやることにします。
291デフォルトの名無しさん:2007/10/25(木) 00:18:54
3Dテトリスすげーな
面白そーだね
292デフォルトの名無しさん:2007/10/25(木) 00:38:31
>>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()のところで止まり)途中で止まります。
タスクマネージャで確認するとプロセス(上記で言う”ある実行ファイル”)は動いているようなのですが、
いつまで経っても終わりません。 かといって落ちているわけでもないようですし。。。

ウインドウズの場合は何が起こっているのでしょうか?
294デフォルトの名無しさん:2007/10/25(木) 03:31:35
ステップ実行したらどうなりました?
295デフォルトの名無しさん:2007/10/25(木) 03:33:26
的外れでした。
ある実行ファイルが終わらなければwaitから抜ける訳ありません。
ある実行ファイルが悪の根源です。
そいつを何とかしてください。ウィンドウズがどうこう以前のもんだいです。
296デフォルトの名無しさん:2007/10/25(木) 09:27:51
>>253
もういないかもしれないけど、プロファイル取ってみた。
draw で食いつぶされてる。

単に描画が多すぎるだけみたいだから、
ブロックをあらかじめ Image で持っておいてコピーするとか
下で固まったブロックを毎回再描画しないようにするとかする必要があると思う。
297293:2007/10/25(木) 11:26:16
>>295
「ある実行ファイル」ではログを吐くようになっていて、今回のケースではログが一切出力されません。
「ある実行ファイル」の最初で止まっているような雰囲気です。
ちなみに、この「ある実行ファイル」はウインドウズから直接実行できることは確認しました。

このリナックスで動作し、ウインドウズでも直接なら動作する「ある実行ファイル」がやはり悪いのでしょうか?
298デフォルトの名無しさん:2007/10/25(木) 13:55:06
>>297
それはやっぱりある実行ファイルのある場所に悪いところがあるんじゃないかな。
299デフォルトの名無しさん:2007/10/25(木) 14:36:45
ある実行ファイルが悪いある
300デフォルトの名無しさん:2007/10/25(木) 14:40:04
waitFor() で止まったらタスクマネージャから 「ある実行ファイル」 のプロセスが残ってるか確認すれ。
もし存在するなら強制停止して続きが実行されるか確認すれ。
301デフォルトの名無しさん:2007/10/25(木) 15:19:44
>>293
標準出力や標準エラー出力に文字列残ってるんじゃね?

p.getInputStream().close(); p.getErrorStream().close();
int ret = p.waitFor();
とかして明示的に破棄してからサブプロセス終了待ってみれば?
302デフォルトの名無しさん:2007/10/25(木) 16:07:25
みなさん助けてください!
ある会社のある人が作ったあるプログラムがあるところで止まったまま動きません。
どうしたらいいですか?
303デフォルトの名無しさん:2007/10/25(木) 16:09:00
強制終了させるといいと思うよ
304デフォルトの名無しさん:2007/10/25(木) 16:11:25
死ねば良いと思うよ。
305デフォルトの名無しさん:2007/10/25(木) 16:16:06
>>302
ある人に相談する。
306デフォルトの名無しさん:2007/10/25(木) 16:18:41
>>302
辞表を提出する
307デフォルトの名無しさん:2007/10/25(木) 16:40:00
まず最初に、プログラム動かなくて困るかどうかを考えてみたらどうだろう。
308デフォルトの名無しさん:2007/10/25(木) 16:59:01
あるプログラムはあるデータを読み込んである結果を出力するものなのですが
ある業務に重要なため止まってしまうと大変困ったあるよ。助けてほしいあるよ。
309デフォルトの名無しさん:2007/10/25(木) 17:15:49
プログラムが止まって業務に支障が出るのなら、上司に説明し指示をあおげ。
上司はにちゃんに書き込んで助けを求めろって言ったのかい?勝手な事をしたら後で問題になるかもよ。
310デフォルトの名無しさん:2007/10/25(木) 17:17:27
あるある。そういうこと。
311デフォルトの名無しさん:2007/10/25(木) 17:36:58
上司は今、ちゅごくに帰ったあるよ。連絡とれないあるよ。
312デフォルトの名無しさん:2007/10/25(木) 18:17:55
log4jで1日ローテーションでログを吐いているのですが、
バックアップファイル名は変更できないのでしょうか?

デフォルトだと XXX.log.YYYY-MM-DD となっているやつです。
313デフォルトの名無しさん:2007/10/25(木) 18:46:23
>>312
マニュアル嫁
314デフォルトの名無しさん:2007/10/25(木) 18:55:06
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ファイルの設定がおかしいのでしょうか?
どなたか教えてください。
315デフォルトの名無しさん:2007/10/25(木) 19:06:30
>>314
実行しているディレクトリの構成(ソースの場所、クラスファイルの場所、myfileの場所)を書くべし
多分、myfile.propertiesが参照できていないんだと思われ
316デフォルトの名無しさん:2007/10/25(木) 19:14:37
実行しているディレクトリ:c:/cygwin/home/***/practice/java
ソースのある場所:同じ場所
myfileのある場所:同じ場所
クラスファイルのある場所:同じ場所

です。
317デフォルトの名無しさん:2007/10/25(木) 19:20:15
ファイル名がmyfile.propertiesじゃないといけないと思って、名前を変えて実行しましたが、挙動は変わりませんでした。
318253:2007/10/25(木) 19:27:53
>>296
遅くなりましたがありがとうございました。
コピーするようにしてみます。
319デフォルトの名無しさん:2007/10/25(木) 22:18:55
Javaプログラムクイックリファレンス第2版のp.123のServerについてです。
本には「サーバが開始したら、GenericClientを使ってこれらのサービスに接続できます。」とあるのですが
例えばどのようなhostとportを入力したら接続できるのかわかりません。
教えてください。

GenericClientのコマンド
java GenericClient <hostname> <port>

Server.java
http://intranet.cs.man.ac.uk/software/java/JavaExamples2/com/davidflanagan/examples/net/Server.java
GenericClient.java
http://intranet.cs.man.ac.uk/software/java/JavaExamples2/com/davidflanagan/examples/net/GenericClient.java
320デフォルトの名無しさん:2007/10/25(木) 22:27:57
ソース嫁ドアフォ!

System.err.println("Usage: java Server " +
 "[-control <password> <port>] " +
 "[<servicename> <port> ... ]");
321319:2007/10/25(木) 22:34:26
あ、すみません。
Serverのコマンドは
java Server -control secret 3000 Server$Time 3001 Server$Reverse 3002
です。
322デフォルトの名無しさん:2007/10/25(木) 22:38:48
>>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 以前にネットワークを勉強してからでないと、サーバプログラミングは無謀すぎるよ。
325319:2007/10/25(木) 22:58:28
>>320,323
java Server -control secret 3000
ということですか?
すみません。どんなことを指摘してくださってるのかわかりませんでしたorz

>>322
java GenericClient localhost 3000で接続できました。
3001,3002も同様です。
ありがとうございます!

>>324
なるほど。。。
コレを機に勉強しようと思います。

回答してくださった方ありがとうございました。
326293:2007/10/26(金) 01:28:28
>>301
ビンゴ!
出力がたまっていたのが原因でした。ありがとうございました。
327デフォルトの名無しさん:2007/10/26(金) 02:15:37
現在、ボウリングのデータを入力してデータ変換して表示したり、分析する
システムを作っているのですが、データ変換するときに何らかの推論機能を
追加しようと思うのですが、何かいい推論機能があれば教えてください。
よろしくお願いしま〜す
328デフォルトの名無しさん:2007/10/26(金) 02:36:05
推論機能とはなんだか想像もつかん。
入力補完でもしてくれんのかね?
329デフォルトの名無しさん:2007/10/26(金) 07:22:02
>>327
データ変換だけじゃどういう変換をしてるのか誰もわからん。
何を分析するの?推論ってどうなることを推論したいの?
要するになーんもわかんねーんだろ?っっっww
330デフォルトの名無しさん:2007/10/26(金) 08:57:13
>>313
冷たい、何のためのスレだ?
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;
}
334デフォルトの名無しさん:2007/10/26(金) 09:27:55
>>327
要件のことはボウリング板にでも言って聞いた方がいいんじゃないか
335デフォルトの名無しさん:2007/10/26(金) 09:30:34
>>331
コンパイルすら通らないし、com.nttdocomo.ui.*; ってなんだ?
携帯用のアプリか?
Javaの文法とかを学習した上で携帯アプリ作れ、な。
336デフォルトの名無しさん:2007/10/26(金) 10:17:40
発表用に、明後日までに作りたいんです。
それで本買ってやってみてるんですが、いかんせん時間が足りなくて…。
携帯用の本を2冊読んで、JAVAの基礎が分からないどうにもならないと悟り、
入門書をざっと読んで、今週丸つぶしでトライしてますが、こんな感じです。
英語の方が、よっぽど簡単に思えます。
もしよろしければ、このプログラムに付け足すべきor変えるべき命令なんか、
思いついたら教えていただきたいです。
よろしくお願いします。
337デフォルトの名無しさん:2007/10/26(金) 10:34:33
発表用?
課題って言ってなかった?
338デフォルトの名無しさん:2007/10/26(金) 10:38:00
確認した。課題って言ってたのはここのスレじゃ無かった。
つーか向こうの方が書き込み時間早いんだから向こうで答えてもらえよマルチ君。
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
諦めて首でも吊れよ。
342デフォルトの名無しさん:2007/10/26(金) 11:25:55
>>336
カスは巣に帰れ。ここはお前専用のスレじゃない。
343デフォルトの名無しさん:2007/10/26(金) 11:30:37
Javaもできないような奴が携帯アプリに手をだすなよ……
344デフォルトの名無しさん:2007/10/26(金) 11:43:51
サーブレットについて質問です。掲示板情報をの色々を詰めるArrayListインスタンス
が一つあるとしますよね。Aがトップページから本ページにアクセス画面の切り替えを行っている間
Bがページの切り替えを行った場合、ArrayListはAが使用中なので
Bが切り替えを行うとエラーが出るんですか?
345デフォルトの名無しさん:2007/10/26(金) 11:57:31
>>344
説明不足で何が言いたいのかよくわからないが、同期・非同期のことを聞いているのだとすると、
ArrayListはVectorと違いマルチスレッドでも使える。
んで、心配してる同時にアクセスした場合だが、一方のアクセスが終わるまでもう片方はアクセスできない。
終わるまで待ってるはず。といっても一瞬だから、パフォーマンス的にはほとんど問題ない。
これ以上マルチスレッドについて聞きたいなら専用スレいった方が早いか。
346デフォルトの名無しさん:2007/10/26(金) 12:00:33
>ArrayListはVectorと違いマルチスレッドでも使える。 

逆じゃ?
ArrayList は同期されてないよ
347デフォルトの名無しさん:2007/10/26(金) 12:04:21
>>345
それVector
つか並行処理に使うコレクションは用件によって微妙に変わる
Java5以上ならjava.util.concurrentを覗いてみることをお勧めする
348345:2007/10/26(金) 12:07:47
ごめん、その通りだった。C++やらC#やってたせいでごっちゃになってた。
349344:2007/10/26(金) 12:10:04
とても分りやすい説明ありがとうございました。
350デフォルトの名無しさん:2007/10/26(金) 12:11:29
>>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
>>351
Random,nextInt
353デフォルトの名無しさん:2007/10/26(金) 14:21:02
例えば、適当なmp3ファイルがあるとして、
そのファイルに関連付けられてるソフト(メディアプレイヤーとか)、で実行するにはどうすればいいですか?
354デフォルトの名無しさん:2007/10/26(金) 14:28:55
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?@?

何で動かない…
356デフォルトの名無しさん:2007/10/26(金) 15:09:44
cmd /c start
357デフォルトの名無しさん:2007/10/26(金) 15:23:33
サンクス、サンクス
358331:2007/10/26(金) 15:42:12
マルチになってしまって申し訳ないです。
向こうに書いた後、こっちを発見したので…。
会社の先輩から、プレゼン用に週末までに作って来いといわれて、
週頭から本を読み始めました。
eclipse、使わさせていただきます。
ありがとうございます。
359デフォルトの名無しさん:2007/10/26(金) 15:44:16
>>358
あんたアホか?
会社の仕事ならば会社の先輩に相談するのが常識だろ
360331:2007/10/26(金) 15:51:12
全員プログラムはやったことないです。
新規事業プランの提案なんですが、
サンプルがあった方がいいということで、こういうことになりました。
まわりにプログラムに詳しい人が全くいないので、ここで相談させていただいたわけです。
不愉快だったら申し訳ありません。
361デフォルトの名無しさん:2007/10/26(金) 16:07:49
>>360
首吊って良いよ。
362デフォルトの名無しさん:2007/10/26(金) 16:18:07
>>355-356
よく考えるとOS依存じゃん…
OSに依存しない方法ない?ここまでPure Javaで作ったんだ…
363デフォルトの名無しさん:2007/10/26(金) 16:24:16
java6ならDesktop.openが使えるかな
364デフォルトの名無しさん:2007/10/26(金) 16:39:51
>>363
おーーサンクス。これならデスクトップがサポートされてたら動くね。
ひと段落着いたので晩ご飯の材料買いに行ってくる。
365デフォルトの名無しさん:2007/10/26(金) 16:57:08
俺カレー希望
366デフォルトの名無しさん:2007/10/26(金) 17:15:12
今日の夕飯はいらないや
367デフォルトの名無しさん:2007/10/26(金) 17:24:59
>>331
パワーポイントとかエクセルでも使ってろ
368デフォルトの名無しさん:2007/10/26(金) 17:31:00
byte配列を、16進数表示のString文字列にするにはどうすればいいでしょうか?
369デフォルトの名無しさん:2007/10/26(金) 17:37:24
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();
370デフォルトの名無しさん:2007/10/26(金) 17:52:37
binary[i]&0xFFで基数変換した方がスマートだと思う。
371デフォルトの名無しさん:2007/10/26(金) 18:06:36
わざわざ文字列長調べて 0 パディングするのがスマートなの?
372デフォルトの名無しさん:2007/10/26(金) 18:15:00
そういやJavaではビッグエンディアン・リトルエンディアンの問題ってないの?
CPUが違えば結果も変わりそうなんだけど、そこら辺はVMで上手く処理してるのかな。
373デフォルトの名無しさん:2007/10/26(金) 18:18:13
>>372
仕様でビックエンディアンと決まってる
374368:2007/10/26(金) 18:19:56
ありがとうございます。

自分で考えてたのは、>>369 さんのを
for (int i = 0; i < binary.length; i++) {
buf.append( ((Byte)b[i]).toString());
}
にしたやつなんですが、もっと何か一行でできるようなのはないかなと思いまして。

375デフォルトの名無しさん:2007/10/26(金) 18:27:26
あ、0で埋めたいわけね〜 勘違いしてました。すみません。
376デフォルトの名無しさん:2007/10/26(金) 18:57:16
1行
for (int i = 0; i < binary.length; i++) buf.append( ((Byte)b[i]).toString());
377デフォルトの名無しさん:2007/10/26(金) 19:02:53
>>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();
379デフォルトの名無しさん:2007/10/26(金) 20:31:12
String(byte[] bytes);
でどうぢゃ
380368:2007/10/26(金) 21:18:16
色々ご意見ありがとうございます。
1行っていうのは処理全部で1行ってことです。
そういうメソッドがあるかなと思ったんですけど、なさそうですね。

Stringになるなら10進数でも16進数でも滅茶苦茶なエンコードでもいいんですが、
>>379 は大概エンコードできませんよね?
381デフォルトの名無しさん:2007/10/26(金) 21:21:06
大学でどうしてもJAVAプログラミングの講義を受けないといけないのですが
プログラミングのプの字もわからないド素人にもわかりやすい入門書ってどれなんでしょうかね?
色々あってどれがいいのかが・・・
382デフォルトの名無しさん:2007/10/26(金) 21:28:12
>>380
String(byte[] bytes, String charsetName)ってのは?
383デフォルトの名無しさん:2007/10/26(金) 21:31:14
>>381
Javaの入門書のほとんどはド素人にはわかりにくい本が多い。
中途半端というか苦労する
Rubyなんだが、
http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb
がオススメ
本にもなっているけど、プログラミングに重要なところは学べる
まったくの初めてでも1ヶ月もあれば読めるだろう。
その後Javaやっても遠回りどころか近道と思う
384デフォルトの名無しさん:2007/10/26(金) 21:39:48
結構適当な説明ってのでも有名だけど、ソフトバンク出版の「やさしいJava」が本当にやさしくておすすめ。
読み終わって定着してきたら修正すべき考えがところどころあるけど、そんなのも含めて親しみやすさからこれをすすめます。
385デフォルトの名無しさん:2007/10/26(金) 21:43:10
>>384
ダメ、絶対
あれは解った気にさせる最悪の本
書いてあること嘘ばかり
386デフォルトの名無しさん:2007/10/26(金) 21:48:08
いや、それは上でも述べたように分かってるんだけどさ、一番初めに読む物としてはおすすめだよ
プログラミング始めたころなんて、本質叩き込まれても拒否反応でちゃうだけじゃん?
「仕方なく勉強する」という考え方のようだから尚更これがいいと思ったんだけどな。
387デフォルトの名無しさん:2007/10/26(金) 21:51:54
>>381
プログラミングのド素人でも考え方が分かるヤツにはプログラムは
言語を問わず理解できるはず。
逆に、頭の巡りの悪いのは1年やっても駄目らしい。
>>383
ちらっと見てきたが・・・・
講義受けながらだったらJavaとの差異で混乱するんじゃないか・・・?
むしろ、プログラムとは何なのかが理解できる本を読んだ方がいいんじゃないかと。

読んだことはないけどこの辺りはどうか?
ttp://www.amazon.co.jp/dp/4822282708
388デフォルトの名無しさん:2007/10/26(金) 21:54:23
>>386
難しい本を嫁って言うわけじゃないよ
やさしく書きすぎているんで、読んでも何も習得できないんだよ、あれ。
for文の文法は書いてあっても、処理を繰り返す為にfor文を使うという本質が抜けている最悪の本なのよ
389デフォルトの名無しさん:2007/10/26(金) 21:55:16
春先になったらJavaWorldで新人に向けた特集でもやるんじゃね?
390デフォルトの名無しさん:2007/10/26(金) 21:59:49
>>387
それはちょっと違うな。
これからCをやるってなら有だけど。

http://www.amazon.co.jp/dp/427420264X
これを推薦しておこう。
基本的なデータ構造とか反復処理などが丁寧に書かれている良書
391デフォルトの名無しさん:2007/10/26(金) 22:00:43
JavaWorldって廃刊じゃね?
392デフォルトの名無しさん:2007/10/26(金) 22:21:18
今はITアーキテクトって言うんだっけ
393デフォルトの名無しさん:2007/10/26(金) 22:22:28
JSTL 1.1 + Tomcat 5.5 を使っていて

<c:out value="234 + 123 = ${234 + 123}"/>

というタグが HTML 変換後に 「234 + 123 = ${234 + 123}」 という出力になってしまうのですが
何がおかしいのでしょうか? どうも拡張タグは動作してるのに EL が利いていないようなのですが。
394デフォルトの名無しさん:2007/10/26(金) 22:26:47
>>393
その記述で、なにを期待しているんだ?
System.out.println("234 + 123 = ${234 + 123}");
を実行して出力しているのと大差ないぞ
395デフォルトの名無しさん:2007/10/26(金) 22:36:55
>>394
単に計算結果を出力するだけのサンプルなのですが。
<c:out> の value 属性内の EL って処理されないってことですか?
396デフォルトの名無しさん:2007/10/26(金) 22:39:45
>>395
おまいの脳内VMでは、System.out.println("1+1"); は2と表示されるのか?
397デフォルトの名無しさん:2007/10/26(金) 22:45:01
>>396
あの、JSP の中での話なんですが何の言ってるんですか?
398デフォルトの名無しさん:2007/10/26(金) 22:47:54
>>397
JSPってどういうものですか?
399デフォルトの名無しさん:2007/10/26(金) 22:59:23
web.xml で J2EE 1.3 の DTD 宣言をしていたのが原因だったようです。
DTD 宣言を削除して J2EE 1.4 (Servlet API 2.4) のスキーマに変更したら
JSP 内で EL が評価されるようになりました。

<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 ↓↓↓
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

>>398
あのー、ひょっとしてですが EL ってどういうものか知らなかっ(ry
400デフォルトの名無しさん:2007/10/26(金) 23:17:26
>>399
ELってどういうものですか?
401デフォルトの名無しさん:2007/10/26(金) 23:54:10
えええええええええええええええええええええええええええええええええ

やさしいJavaだめなの?もう半分くらいやったのに(´・ω・`)
402デフォルトの名無しさん:2007/10/26(金) 23:58:33
だめ
403デフォルトの名無しさん:2007/10/27(土) 00:10:14
>>401
大丈夫だって。
404デフォルトの名無しさん:2007/10/27(土) 01:43:17
バイナリファイルの読み出しする時に
RandomAccessFileとかのreadShort()とか使ってるんだけど
一度にファイル構造をごっそり読み取るのってどうするの?

Cで構造体にごっそり読み込む感じのがしたいんだけど。
405デフォルトの名無しさん:2007/10/27(土) 01:52:39
無理。
ファイルを作るのも Java プログラムなら ObjectOutputStream#writeObject()/ObjectInputStream#readObject() を使え。
406デフォルトの名無しさん:2007/10/27(土) 02:05:01
>>405
サンクス
やっぱ読み込むデータのクラス作って内装するしかないか。
407デフォルトの名無しさん:2007/10/27(土) 02:43:32
構造体

なつかしい。
408デフォルトの名無しさん:2007/10/27(土) 04:47:24
お前らちゃんとスレタイ嫁
【初心者】【大歓迎】
つまり回答者も初心者なんだよ!

>>400
JSP+ELでぐぐr
JSP2.0の策定の時、散々話題に上っただろうが
409デフォルトの名無しさん:2007/10/27(土) 10:24:32
>>401
後輩があれ見てJavaをわかった気になってたが、
実際に書かせてみると本当に本一冊読んだのかと疑うほど書けなかった。
まあ、入門には最適みたいだから、これで満足せず次の本を読んでいけば大丈夫だと思う。
410デフォルトの名無しさん:2007/10/27(土) 11:20:05
その解った気にさせてしまうのが最大の問題かと思われ
簡単なことしか都合よく書いてないから
411デフォルトの名無しさん:2007/10/27(土) 12:35:50
女が書いた本は女にしか理解できない
412デフォルトの名無しさん:2007/10/27(土) 13:06:33
やさしい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アプリケーションの開発をゼロから完成までトレースできるような
参考書などがありましたらぜひ教えてください。

すみません。よろしくお願いします。
414デフォルトの名無しさん:2007/10/27(土) 14:49:32
要約すると「JavaでWebアプリが作りたいんだけど、どうすればいいの?」ってことでおk?
415413: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で実行しててブラウザでできるやつ
418デフォルトの名無しさん:2007/10/27(土) 15:53:06
つーかJSPとか使わなくても普通にHTMLとか使えるわけだが。
419デフォルトの名無しさん:2007/10/27(土) 16:04:41
くそ難しいサンプル本何度もやり込めば自然と腕上がるよ
420デフォルトの名無しさん:2007/10/27(土) 16:11:03
>>413
1. 違う。ASP のページに相当するものはサーブレットクラスや JSP。AWT/Swing なら
イベントリスナクラス。ASP で使えるその Request やら Form やらのオブジェクトが、
どういうプロパティを持って何を呼べばどう動くかを設計するのがクラスを設計するということ。
オブジェクトの「型」がクラスです。

2. 技術的には可能だがトリッキーすぎて初心者にはお勧めできない。ぱっと思いつくのは
アプリが作った HTML を Swing の JEditorPane (超貧弱) や SWT (非標準) の Browser に
食わせるとか、簡易HTTPサーバ起動してブラウザ起動→ブラウザ終了時にサーバも終了とか
(ソケット通信とHTTPプロトコル実装が必要)。

3. 知らん。数作って苦労しる。
421デフォルトの名無しさん:2007/10/27(土) 17:13:58
業務で使う専用端末なら、サーバの終了とかいらないんじゃね?
Tomcat動かしっぱなし。
422デフォルトの名無しさん:2007/10/27(土) 21:12:59
>>421
おいおい。
サーバを綺麗に終了させることは重要なことだぞ。
423413:2007/10/27(土) 22:34:13
>>416-421
色々と教えてくださりありがとうございました。何となくではありますがASPとJavaの違いが分かりました。
サーブレットやJSPなどに関しても勉強してみようと思います。
424デフォルトの名無しさん:2007/10/28(日) 00:54:10
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ     >>422
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
425デフォルトの名無しさん:2007/10/28(日) 02:22:27
>>424
>>422じゃないけど、何考え込んでるの??
重要なことだぞ?中規模以上のシステム基盤の設計経験ないのか?
もしくは運用経験
サーバ製品が単一で存在するわけないだろ
いくつかの製品が連携するシステムだってあるんだからさ・・・
426デフォルトの名無しさん:2007/10/28(日) 02:34:41
単に話の流れに対してレスが頓珍漢なだけだろ。
427デフォルトの名無しさん:2007/10/28(日) 03:14:15
javaの性能測定の観点を教えてください。

今度、とある製品のapiの性能測定を任されることになったんだけど、
性能測定って一体何やればいいのか、正直わからない。

いきなりマニュアル渡されて、
ビルド環境を構築したまでは良かったんだけど、
「じゃ、システムのボトルネックみつけて。
大量なデータを登録するとき、でるとおもうから。
やり方は自由でかまわないよ。」
なんていわれても、やったことないし、わけわかめ。。。

調べた感じだと、↓みたいなことがわかればいいみたいだけど
これ以外に何かありますか?

・どのメソッドが処理時間を消費しているのか
・どのメソッドが頻繁に呼び出されているのか
・どのオブジェクトがヒープを大量に消費しているのか
428デフォルトの名無しさん:2007/10/28(日) 03:19:17
>>427
特定しますたwwwwww
おまえさ、まかせるとはいったけど、観点が分からないならちゃんと聞けよ
429デフォルトの名無しさん:2007/10/28(日) 03:23:42
>>428

特定したならお前だってわかってんだろ
うちのマネージャがプログラムできないの
別部署を納得させるためのデータがほしいだけなんだよ
430デフォルトの名無しさん:2007/10/28(日) 03:25:43
業務連絡は会社で。
431デフォルトの名無しさん:2007/10/28(日) 03:30:15
測定するメソッドを繰り返し呼び出すプログラムを作って、それを動かしながら
プロファイラ使って計測。JProfiler ってのがシンプルな割りに必要な情報は
取れるので長いこと使ってるけど、最近はもっと良いのがあるかもしれん。
オヌヌメのプロファイラあったら誰か教えて。
432デフォルトの名無しさん:2007/10/28(日) 04:23:22
textfieldに入力した値を読み込んで、
その値を計算に使いたいのですが、
getText()をどう使ったらいいのですか。教えてください。
433デフォルトの名無しさん:2007/10/28(日) 04:30:12
String s = textField.getText();
int i = Integer.parseInt(s);
とか。
実数を扱うのなら
double d = Double.parseDouble(s);
とか。
434デフォルトの名無しさん:2007/10/28(日) 04:30:29
String num = field.getText();
int value = Integer.parseInt(num);
field.setText(String.valueOf(value * 2));
435デフォルトの名無しさん:2007/10/28(日) 04:36:59
ありがとうございます。ということは、
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
この会社におけるボトルネックは僕です。
早急に解雇して下さい。
437デフォルトの名無しさん:2007/10/28(日) 10:26:43
double m[] = new double[10000000];
としたらjava.lang.outofmemoryerror: Java Heap Space とでるんですが、これはどうしたらいいんでしょうか? どうしても10000000個のエレメントをArrayに入れたいのです。誰かお助けを。
438デフォルトの名無しさん:2007/10/28(日) 10:37:36
>>437
およそ10MBx8=80MBもの容量を確保しようとしたから、VMがそんなに取れないってエラー吐いてる。
VMのオプションでヒープ容量を増やすヤツがあったはずだから、それを使えばいいと思うけど、そもそも何に使うの?
なんでもないプログラムでそんなコードを書くのは設計が間違ってるとしか思えない。
439デフォルトの名無しさん:2007/10/28(日) 10:43:03
課題でn=100000000 の場合、????の値を求めよというのがあったので。 ありがとうございます。
440デフォルトの名無しさん:2007/10/28(日) 10:46:53
>>439
????はなんだ?
丸投げではないから解答はここでは示さないけど、ロジックの組み立てに問題があるんじゃないのか?
つまり、
 nが少ない場合は配列を使えば出来ますね。
 nが多い場合は工夫して配列を使わないようにしましょう。
というのが、課題の意図な気がするぞ。
441デフォルトの名無しさん:2007/10/28(日) 10:57:47
>>440
ありがとうございます。実は問題は:
0<x<1、0<y<1であるとき x^2 + y^2 <=1 となる確立は何か? xとyをそれぞれ10000000回ランダムで選んだときの確率を求めよ。。。という問題です。
これをプログラムにして解けという問題なんですが。 どなたかどうやるかご存知でしたら教えてください。本当に助かります。
442デフォルトの名無しさん:2007/10/28(日) 10:59:27
何で配列が絡んでくるんだよw
443デフォルトの名無しさん:2007/10/28(日) 11:00:58
>>442
もう本当に初心者で配列での方法しかわかりません(TдT)  本当にバカですね私。
444デフォルトの名無しさん:2007/10/28(日) 11:03:53
>>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);
445デフォルトの名無しさん:2007/10/28(日) 11:06:11
指定範囲の
xの値をrandomで求めます。
yの値をrandomで求めます。
数式に代入してtrueならカウントします。

以上を10000000回繰り返します。
カウント数/10000000*100が求めるものだと思います。
446デフォルトの名無しさん:2007/10/28(日) 11:07:24
>>445
なるほど。。Booleanを使うのですね。やってみます。どうもありがとうございます。
447デフォルトの名無しさん:2007/10/28(日) 11:17:17
ああ、円周率を求める問題ね。俺も昔やったよ。
448デフォルトの名無しさん:2007/10/28(日) 11:18:30
>>442
>>445

本当に私何やってたんだろ^^; できました、どうもありがとうございます。
449デフォルトの名無しさん:2007/10/28(日) 11:19:53
つーかそもそも配列を使う必要どこにもねえw
450デフォルトの名無しさん:2007/10/28(日) 11:29:16
>>449

たしかに^^;
451デフォルトの名無しさん:2007/10/28(日) 11:35:00
初心者のころは多かれ少なかれ皆アホなことをやるもんだ
452デフォルトの名無しさん:2007/10/28(日) 11:43:09
>>451
ありがとうございます>< がんばって上達してみせます!
453デフォルトの名無しさん:2007/10/28(日) 11:50:08
繰返し処理 → 配列とfor文!
典型的な「やさしいJava脳」です
454デフォルトの名無しさん:2007/10/28(日) 11:51:36
どうでもいいけどやさしいJavaってアンチ多いよな
455デフォルトの名無しさん:2007/10/28(日) 11:55:00
売れているのはどうでもいい。
ただ、現場に被害が及ぼしているがアンチを生み出している理由。
読んで基礎を理解したと勘違いさせるからね
456デフォルトの名無しさん:2007/10/28(日) 12:03:53
そんなに間違いが多いのか?
風評だけじゃなくて、具体例を出せよ。根拠なく批判してもウザいだけ。
457デフォルトの名無しさん:2007/10/28(日) 12:06:08
java始めてからさり気なくスルーしてたんだけどラッパークラスなどの意って
intだったらIntegerの機能をお手軽に使うためのクラス?
458デフォルトの名無しさん:2007/10/28(日) 12:08:25
netbeansのvisualwebpackをやってるんですが
今数冊出てるJavaStudioCreator本って参考になりますか?
どれがいいんでしょうか?
459デフォルトの名無しさん:2007/10/28(日) 12:12:45
間違いというかテキトーでいい加減。
1つだけ例をあげておくが、それ以上はスレ違いなので自重

例外に関する話。
catch(Exception e)とか平気で書いて例外を握りつぶしてきたアホがいたんでヒアリングしてみた。
俺「例外はExceptionでcatchしちゃまずいね」
アホ「どうしてです?」
俺「問題が起きたならば適切に処理するか、上に通知しないとわからなくなるでしょ」
アホ「でも、やさしいJavaでは例外が発生してしまう時にはtryで囲め、と書いてありましたよ」
俺「例外ってどういう時に発生するかわかる?」
アホ「解らないから、catchするんじゃないですか?」
俺「・・・・」

実際に例外に関するところを流し読みしてみた。
すると、例外の説明は適当でコンパイルが通るようにはどうするかしか書いてなかった
460デフォルトの名無しさん:2007/10/28(日) 12:15:52
>>457
オブジェクトとしてintを使いたい為にある
逆に言えば歴史的な背景でintをオブジェクトではなくプリミティブとしたのがJava
intには基本的な演算しか出来ないけど、Integerは様々なメソッドが定義されている。

まあ、Rubyなんかはintに相当する型も全てオブジェクトなんだけど、Javaが出来た頃はパフォーマンスやら色々な点からやらなかったんだわ
461460:2007/10/28(日) 12:18:15
補足すると、Tiger(5.0)で追加されたボクシングは、ある程度はプリミティブとオブジェクトの相互変換をやろうっていう試みね。
List list;
list.add(100); // = list.add(new Integer(100));
とか書ける様になったのはかなり楽になったわけだ
逆に変換に惑わされて、はまる時もあるんだけど・・・
462デフォルトの名無しさん:2007/10/28(日) 12:22:17
>>461
たしかにTigerですごく楽になった。いちいち手動でボクシングするのが、すごくだるかったから。
でも、そこら辺が隠蔽されたせいで、なんでGenericsでプリミティブ型が使えないのかわからない初心者が増えたけど。
463デフォルトの名無しさん:2007/10/28(日) 12:23:52
植田佳奈 さんってこんな人だったの・・・?
相手の人、可哀想;;

http://www.nicovideo.jp/watch/sm1282003
25分14秒付近より

●植田佳奈、最近人生を丸投げしたくなることは?というフリに、「こないだー、悪口を絶賛喋ってた
ら、後ろに本人いて(笑)あんなことほんとにあるんだ!って思って、超びっくりしちゃった(笑)
実名って言うかその人しかあり得ないような悪口をバンバン言ってたの。そしたら、”そんな風に思っ
てたんだ、ごめんね”って逆に謝られちゃって…(笑)」
464デフォルトの名無しさん:2007/10/28(日) 12:25:41
>>462
それは初心者というよりは、複雑化してきたJavaの問題だよな。
ちゃんとTiger以降の機能を使える奴を育てるには、半年程度は1.4で開発させるべきだよ。

うちでは、プロジェクトで新人には1.4文法で書かせている
後からレビュー時に5.0の機能を説明しつつ修正
手間はかかるけど、ちゃんと育てないと後で泣く
465デフォルトの名無しさん:2007/10/28(日) 13:21:42
超初心者質問なんですが
Eclipseで「実行」を
ショートカットでやるときどうやるんですか?
Shift+Alt+X,Jらしいんですが
押しても実行されません(´・ω・`)
466デフォルトの名無しさん:2007/10/28(日) 13:30:15
>>465
エディタに開いているファイルが、Mainメソッドを含んでいるか?
あと、Eclispeスレで聞いた方がいいと思うぞ。
467デフォルトの名無しさん:2007/10/28(日) 13:33:11
Ctrl+F11は?
468デフォルトの名無しさん:2007/10/28(日) 13:36:31
>>467
それは再実行だから、一度しないと実行できないはず。
それと、3.1か2あたりで、Ctrl-F11の実行対象が変化したから、一度設定を見直す必要あり。
469デフォルトの名無しさん:2007/10/28(日) 21:31:28
Javaでスレッドがタイムアウトするってどういう意味なのですか?
470デフォルトの名無しさん:2007/10/28(日) 21:37:40
>>469
もう少しそのフレーズが出てきた前後関係を書かなきゃ解らんよ
471デフォルトの名無しさん:2007/10/28(日) 23:26:39
eclipseでJ2EE開発する場合は、動的Webプロジェクトってので開発するのがデフォなんでしょうか?
変なフォルダ階層が作られたりweb.xmlへの記述も自動化されちゃったりservlet作ると意味不明な雛形が作られたり…
色々決まり事があって逆に分かりづらいです。
総合開発環境ってのはこういうもんなんでしょうか?
472デフォルトの名無しさん:2007/10/28(日) 23:32:47
フォルダ階層はプロジェクトの設定で変えられるし、サーブレットも web.xml も手書きで書けるし。
今まで秀丸+コマンドプロンプトでやってきたならオレ流が出来てるだろうからもどかしいのは分かる。
つまりそーゆーもんです。
473デフォルトの名無しさん:2007/10/28(日) 23:54:55
>>471
色々と決まりごとがあるから、どんなWebアプリでもどこに何を配置すればいいかが解りやすいのです。
全てのアプリで好き勝手置けたとしたならば、非常に効率悪いでしょう。
流行のRails然り、Maven2然り、構造や作り方を決めてしまい、共通化してしまおうという時代の流れでもあります。

つまり、そーゆうもんです。
474471:2007/10/29(月) 00:20:31
>>472
>>473
なるほど…知らずうちにオレ流になってたのかもしれない。
柔軟性を失うのを嫌ってツールを避けてたんだけど、
逆にツールに対応できない堅い頭になってたみたいです。
レスありがとうございました。
475デフォルトの名無しさん:2007/10/29(月) 00:31:11
質問させていただきます。
URLConnectionを用いて、HTMLのソースを取得しているのですが、
文字コードに対応するため、HTMLのMETAデータにある、charsetの値を取得して
文字コードに対応させたいのですが、
Javaの正規表現などを使ってどのように処理すれば実現できますか?
よろしくお願いします。
476デフォルトの名無しさん:2007/10/29(月) 00:54:44
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
プッ
478デフォルトの名無しさん:2007/10/29(月) 06:55:16
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になる理由が分かりません。
流れを教えてもらえませんか?
479デフォルトの名無しさん:2007/10/29(月) 06:59:09
わかりました。ごめんなさい。
480デフォルトの名無しさん:2007/10/29(月) 07:05:17
sum(3)                   = 6
 ↓                     ↑
3 + sum(2)           = 3 + 3 = 6
    ↓                ↑
   2 + sum(1)      = 2 + 1 = 3
       ↓           ↑
      1 + sum(0) = 1 + 0 = 1

と、ここまで書いて分かりましたとは orz
481デフォルトの名無しさん:2007/10/29(月) 13:56:47
質問、失礼します。

javaアプリケーションでフレームに画像を出力したいのですが…どうしてもできません。
Image img = getImage(getCodebase(),"test.jpeg");
g.drawImage(img,0,0,null);
としてみましたが、getCodeがアプレットのため使えませんでした…。
どうすればいいでしょうか?どなたか教えてください。お願いします。
482デフォルトの名無しさん:2007/10/29(月) 14:48:14
Image img = Toolkit.getDefaultToolkit().getImage(getClass().getResource("test.jpeg"));
483デフォルトの名無しさん:2007/10/29(月) 18:55:29
JDBCの質問です

H2をembeddedしてデスクトップアプリを作ろうと考えてます
データをやりとりするときにSQL書いて、Statementを作って実行させるのですが、
「何度も実行する処理は、コンパイル済みのPreparedStatementを使え」とよく聞きます
ここで、「何度も実行する」とは、どれぐらいの頻度のことと考えたらいいでしょう?

アプリ中で使うSQLはすべてPreparedStatementで作っておいてアプリ終了まで保持したほうが良いのでしょうか?
あるいは単発selectみたいなのはStatementでも良いんでしょうか?

業務としてJDBCをよく使われるような方はどういう設計にするのが普通ですかね
最初は全部Statementで書いておいて、プロファイル取りながら遅いところだけ
順番にPreparedStatementに変えていくような作り方でもおかしくないですか
484デフォルトの名無しさん:2007/10/29(月) 19:22:04
PreparedStatement はトランザクションの期間中だけ有効。
つまり Connection を commit または rollback するまでの間。
485デフォルトの名無しさん:2007/10/29(月) 20:09:21
>>484
なんと!

本当ですね、JDBC API 入門で見つけました

>データベースシステムによっては、コミットを跨がって PreparedStatement が保持されないものもあります。
>そのような場合は、各回のコミット後にドライバが PreparedStatement をコンパイルし直す必要があります。
>つまり、これらの DBMS に関して言えば、多くの回数実行する Statement オブジェクトを PreparedStatement
>オブジェクトに置き換えて使用すると、実際にはより効果的でなくなる場合があります。

H2は保持されるのかどうか調べてきます
486デフォルトの名無しさん:2007/10/29(月) 20:27:44
それはむしろ 「コミットを跨っても PreparedStatement が保持されるもものあります」 と表現すべきところ。
昔の DB2 みたいに (今もか?) PreparedStatement をクローズしない限りプロセス終了まで
ネイティブドライバ-DB側で残す奴もあるが、基本的にトランザクションをまたがっては使わない。
初心者が使うと SQL インジェクションもあるから PreparedStatement 使っとけ。
どうせその後の DB 処理に比べたら微々たる負荷なんだし。
487デフォルトの名無しさん:2007/10/29(月) 23:22:03
サーブレットで文字コード指定する時って
res.setContentType と req.setCharacterEncoding
というのがあるんですけど
何が違うんですか?
488デフォルトの名無しさん:2007/10/30(火) 00:00:42
出力されるHTMLが違う
489デフォルトの名無しさん:2007/10/30(火) 00:09:19
ContentTypeはブラウザが表示する時に判断するヘッダ情報に関連
CharacterEncodingはHTMLで吐き出す時のエンコード

HTMLを表示した時にブラウザが文字コードの判別ミスって文字化けするのは、この対応がうまくいってないか、ContentTypeが指定されずにブラウザが判断し間違っているか、ブラウザのバグってこと
490デフォルトの名無しさん:2007/10/30(火) 00:09:23
>>487
responseは表示するHTMLのエンコード
requestはフォームなんかから来る文字列のエンコード
491489:2007/10/30(火) 00:13:58
よく読んでなかった
resとreqかよw
492デフォルトの名無しさん:2007/10/30(火) 00:42:03
古いJava Runtime Environmentをアンインストールして
新しいバージョンをインストールしようとしたのですが
「このソフトウェアは使用中のコンピュータにすでにインストールされています。再インストールしますか?」
と出て、「はい」を選択すると
「内部エラー 2753。 RegUtils」と出てインストール出来ません。
これはどういう事なのでしょうか?
またどうすればインストール出来るのでしょうか?
493デフォルトの名無しさん:2007/10/30(火) 00:45:16
>>492
どうやってアンインストールしたの?
まさかフォルダを削除しただけとか・・・?
494デフォルトの名無しさん:2007/10/30(火) 00:46:45
495デフォルトの名無しさん:2007/10/30(火) 00:58:42
そもそもクラスっていうのは、プロパティがあった場合自分のメソッドで
プロパティを操作するでわないか。プロパティの設計が必要上いらないなら
インターフェイスとかになるのではないか。というより、私がいいたいのは
インターフェイスにはプロパティがあってはいけないものだろう。

ところがどうだ?Enumerationインターフェイス。
俺は今までこれはクラスだとおもっていたが、JavaDocをみたらインターフェイスではないか。
そのくせ、列挙中に次の値が存在するか?などのメソッドがあり、ファイルポインタのようなプロパティが必要そうな
存在ではないか。これは、明らかに利用者を混乱に陥れるクラス設計である。MicroSoftの言語には
このような設計ミスはない。Javaは明らかに利用者が混乱しやすい言語設計になっている!淘汰されるべきである!
496デフォルトの名無しさん:2007/10/30(火) 01:02:10
うん、そうだね。
はい、次の質問、どうぞ。
497495:2007/10/30(火) 01:03:31
>>496 貴様のこの問題に対する持論を吐け!
498デフォルトの名無しさん:2007/10/30(火) 01:06:10
釣りはもうおなかいっぱい
499デフォルトの名無しさん:2007/10/30(火) 01:06:39
うんうん、君の気持ちも分かるよ。
はい、次の質問、どうぞ。

精神科の先生の苦労も分かるよ。
500デフォルトの名無しさん:2007/10/30(火) 01:10:55
>>487
フォームの情報をサーブレットに送って、処理をするとしよう。
フォームの情報もサーブレットに来るときはリクエストとして一緒に送られてくる。

当然、日本語は2バイトでくる。そうなると処理するサーブレット側が
何の文字エンコードを使ってるかわかっていなくちゃいけない。その情報を
Windows-31Jと教えてやるわけだ。
501デフォルトの名無しさん:2007/10/30(火) 01:16:34
>>495

お前は明治生まれのじじいかw

文体が硬い、思考に柔軟性がない。出直せ
502487:2007/10/30(火) 01:40:22
たくさんのレスありがとうございます。よく分かりました。
送られてくるデータの文字コードも意識しないといけなかったんですね
503481:2007/10/30(火) 02:33:02
>>482
返事遅くなり、大変申し訳ないです。
その一文を入れたことでイメージが表示できました。
ありがとうございました。
504デフォルトの名無しさん:2007/10/30(火) 03:02:34
remove(button);やrepaint();を行った後に

Graphics g = getGraphics();

で描画を行うとなぜか描画した物が消えてしまいます…。
プログラムはremoveとrepaintを同時に用いたいと考えているのですが、描画したものが消えてしまう原因が解らなく、四苦八苦してます…。解決策を教えていただけないでしょうか?
505デフォルトの名無しさん:2007/10/30(火) 08:22:48
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を使っています。
508デフォルトの名無しさん:2007/10/30(火) 16:19:54
マルチって何で減らないのかな
509デフォルトの名無しさん:2007/10/30(火) 18:35:06
昔C言語を少しかじりいまJAVAに取り組んでいます
いかのような疑問がわいています
お忙しいところ恐縮ですが
どなたか回答やご指導などお願いします
1.メソッドとはC言語における関数と同じ意味でしょうか
2.メソッドとクラスの違いは
3.インスタンスとは、宣言した変数の領域を確保することでしょうか
4.ストリームとはファイル操作全般を意味するのでしょうか
510デフォルトの名無しさん:2007/10/30(火) 18:51:26
メソッド ≒ 関数
クラス ≒ 型
インスタンス ≒ オブジェクト
ストリーム ≒ FILE*
511デフォルトの名無しさん:2007/10/30(火) 20:08:40
>>508
馬鹿が減らないのと同じ理由。
512デフォルトの名無しさん:2007/10/30(火) 20:12:12
log4jでVMの起動タイミングでローリングをする設定はできないでしょうか。
public static void mainを実行するたびにログファイルを別に、前のログはリネームして残るようにしたいです。
log4jのバージョンは1.2系です。
513デフォルトの名無しさん:2007/10/30(火) 20:14:51
>>509
メソッドとストリームは>>510であってると思うけど、
クラスとインスタンスはオブジェクト指向の概念なので、難しい。
C言語から流れてきた人用に説明すると、
クラスは構造体に関数がついたもの。インスタンスは確保した領域そのものを指す単語かな?
ただ、クラス周辺は仕組みがわかっただけでは上手く扱えないので、オブジェクト指向を勉強した方がいい。
514デフォルトの名無しさん:2007/10/30(火) 21:12:54
>>509
メソッド = 特定の構造体付属の関数
クラス = 構造体 (プロパティ) + 関数 (メソッド)
インスタンス = malloc(sizeof(構造体)) の領域
ストリーム = データを逐次で読み込める/書き込めるもの = ファイル, ソケット, バイト配列, etc.

>>512
DailyRollingFileAppender のソースを参考にそーゆー Appender クラスを作ってください。
515504:2007/10/30(火) 21:38:32
>>505
実現できました。
ありがとうございます。
516デフォルトの名無しさん:2007/10/30(火) 21:51:47
唐突に質問なんですがJavaの1つのクラスのソースの行数はどれぐらいが適切でしょうか

昔、Cの関数は50行以下とか100行以下、それ以上になる場合は分割しろ、とよく言われた物です
これは短ければ短いほど人間には理解しやすくなるのでバグが減るという事だと思いますが
この伝で行くと、Javaのクラスは、メソッド数×50行以下にしろ、という感じだと思います

しかし、メソッドを20とか持つクラスになると、1000行以上になったりして、さすがに嫌な感じです
こういう場合、クラスの分割を検討した方が良いとは思うのですが
このクラスの許容最大行の慣例みたいな数字はありませんか?

プロジェクトのルールなどで実在した数字があれば教えてもらうと参考になりますのでよろしくお願いします
517デフォルトの名無しさん:2007/10/30(火) 22:09:23
>>516
俺は、
5割:100行以下
4割:300行以下
1割:500行以下
という感じ。500行以上のファイルはほぼない。
Genericsや多様化を使えば大きく増えることはないと思う。

こういうときに便利な単位にメトリクスというものがあって、こんなプラグインがある。

メトリクスプラグイン - EclipseWiki
http://eclipsewiki.net/eclipse/index.php?cmd=read&page=%A5%E1%A5%C8%A5%EA%A5%AF%A5%B9%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3&word=%A5%E1%A5%C8%A5%EA%A5%AF%A5%B9

俺自身は使ったことがないが、参考になるんじゃね?
518デフォルトの名無しさん:2007/10/30(火) 22:19:26
>>516
1メソッドあたり30行程度。
具体的にはEclipse等で開いて、メソッドの開始から終了までが1画面に収まるかを目安にしている。
1クラスのメソッドは10以下、3〜5程度がわかりやすい。
そうなると、概ね100〜300程度になるから、>517と同じくらいかな

ただ、平均をとってみると多くなりがちなのはBean等が含まれるから。
単純なデータクラスに関してはフィールドの数が10程度と考えている。
519デフォルトの名無しさん:2007/10/30(火) 22:53:45
>>517>>518
ありがとうございます
結構短いですね(汗
私の今やってるプログラムのクラスは、500超がごろごろ…

どうやらもっとガシガシリファクタリングしなきゃいけなさそうです
早速教えてもらったツールで計ってみます
520デフォルトの名無しさん:2007/10/31(水) 00:17:48
行数よりも、サイクロマティック複雑度を目標にしたほうが良いと思う。
521デフォルトの名無しさん:2007/10/31(水) 00:25:36
まずは行数でいいだろ
行数が少なければ自然と複雑度も低くなる
行数を減らせと言ったらワンライナー風に書くバカでもない限りはな
522デフォルトの名無しさん:2007/10/31(水) 00:39:35
同意
500行超のソースが乱立している時点でクラス設計とかもっと原始的な目標を立てるべき。
サイクロマティックなんかはある程度ちゃんと作られているアプリを計る、もしくはとんでもないアプリを作り直させる為に計るもの
523デフォルトの名無しさん:2007/10/31(水) 06:40:42
絶対的な尺度はないが
よくコードを把握していない他人の目で見て分かるかどうかを
考えてコードを書くのは重要だといつも念頭に置いてる。

大体、何でも要素が二桁になったあたりから集約とかを考え始めるかな。
プライベートメソッドが増えてきたら、
それはユーティリティクラスとして切り出した方がよくないかとか。
クラスが10コくらいで機能を実現してたらサブパッケージにする方がいいかとか。
後は1画面制限か?ループの中身が1画面を越える時とか処理を
プライベートメソッドに分けたりする。
ループの多重度は、2が限界。3つループ入ったら何かがおかしい。
ロジックを見直す。どうしても必要でもループごとプライベートメソッドに切り出したりする。
3つのループが1つに見えていないといけない状況は、そうそうない。

まあ、ライブラリの実装とかで汎用クラスの場合はちょっと尺度が
変わったりもするけどアプリケーションの場合はこんな感じかな。
524デフォルトの名無しさん:2007/10/31(水) 09:57:34
メトリクスの各指標を日本語で理論的に詳解してあるサイトや書籍でおすすめはありませんか?
サイクロマティックは、なぜこのように計算するのか、なぜ分岐の数は引くのか、と言った背景の理論を勉強したいです
525デフォルトの名無しさん:2007/10/31(水) 10:16:27
>>524
ググればザックリとした情報は出てくるよな?
それ以上の情報は英語でしかみたことない
どちらにせよこのスレの範囲としてはサイクロマティックを抑える方法までで、そのアルゴリズム関係はスレ違いだと思われ
526デフォルトの名無しさん:2007/10/31(水) 11:14:10
>>525
たしかに少々すれ違いかも知れません、すいません

サイクロマティックは10以下にしろ、そしてメトリクスツールで測るとお前のソースはこうだと言われたとき
その指標の意味や計測原理を知らないと、どう直していいやらと思ったものでして
527デフォルトの名無しさん:2007/10/31(水) 11:21:25
>>526
細かい原理なんか知る必要はないよ。
一般的なコーディング規約を守り、基本的な事さえ守ればいい
ループのネストは2階層まで、ifと合わせても3階層まで、1メソッドは30行程度。
省略するような書式(3項演算子やメソッドの連鎖コール)はなるべく避ける。
引数が4〜5個になったならばメソッドの責務を再検討など。

ぶっちゃけ、これらを守って係数が10以上とかに出来る方が凄い
528デフォルトの名無しさん:2007/10/31(水) 11:24:58
例を1つ
典型的なダメコード
while(条件) {
  if(条件A) {
    if(条件B) {
      if(条件C) {
         // 処理
      }
    }
  }
}

読みやすいコード
while(条件) {
  if(!条件A) continue;
  if(!条件B) continue;
  if(!条件C) continue;
  // 処理
}
529デフォルトの名無しさん:2007/10/31(水) 11:40:52
>>528
どうでもいいつっこみかもしれんが、それならこっちの方が見やすくね?
while(条件) {
 if (条件A && 条件B && 条件C)
 {
  処理
 }
}
530デフォルトの名無しさん:2007/10/31(水) 12:22:11
>529
後々条件が増えたり減ったりした時にどっちのが変更しやすい?
あと、条件Aが単純な式(isFoo)とかなら読みやすいけど、
0 <= foo.getFoo() && foo.getFoo() <= 100
が1つの条件とかになってくると、括弧だらけで読みにくい。
531デフォルトの名無しさん:2007/10/31(水) 12:51:46
>>530
条件が増えたり減ったりすることがわかってんならメソッドに割ったほうがよくね?
532デフォルトの名無しさん:2007/10/31(水) 13:18:33
>531
それはそれで1つの手だし、もっと複雑になるならばクラスとして抽出まで考えればいい
これはあくまで一例だから適当に流してくれ
533デフォルトの名無しさん:2007/10/31(水) 13:22:13
まあコーディングスタイルは人それぞれだからな。
534デフォルトの名無しさん:2007/10/31(水) 13:25:47
空気読まないでマジ突っ込みする奴ってどこにでもいるのな。
535デフォルトの名無しさん:2007/10/31(水) 13:56:24
>>534
うは、典型的ゆとり発言キタ━━━━━━(゚∀゚)━━━━━━ !!
536デフォルトの名無しさん:2007/10/31(水) 13:57:36
>>534
ゆとりキタ━━━━━━(゚∀゚)━━━━━━ !!キタ━━━━━━(゚∀゚)━━━━━━ !!キタ━━━━━━(゚∀゚)━━━━━━ !!
537デフォルトの名無しさん:2007/10/31(水) 14:06:00
そもそもここはゆとりのためのスレだろ
538デフォルトの名無しさん:2007/10/31(水) 14:10:28
ゆとりと言っていれば優位に立てる。
そう思っていた時期が僕にもありました。
539デフォルトの名無しさん:2007/10/31(水) 14:29:16
みなさん僕のために争うのはやめてください!!

僕が頑張ってもっとコーディングが上手くなれば済むことですから
頑張りますから!!
540デフォルトの名無しさん:2007/10/31(水) 14:39:16
放物線の式はy=ax^2+bx+cだと思うのですが
javaで記述する場合も一緒ですか?
541デフォルトの名無しさん:2007/10/31(水) 14:41:56
x^2という記述はできない。
x*x。
542デフォルトの名無しさん:2007/10/31(水) 14:45:44
axとかbxもダメだよ、念のため・・・
543デフォルトの名無しさん:2007/10/31(水) 14:52:42
ゆとりのなかよし幼稚園があると聞いて飛んできました(^.^)
544デフォルトの名無しさん:2007/10/31(水) 15:36:40
\(^ェ^)>
545デフォルトの名無しさん:2007/10/31(水) 15:46:21
   (゚д゚)ウマー
 (゚д゚)(゚д゚)ウマー     (゚д゚)ウマー
(゚д゚)(゚д゚)(゚д゚)ウマー (゚д゚)(゚д゚)ウマー
 (゚д゚)(゚д゚)ウマー  (゚д゚)(゚д゚)(゚д゚)ウマー
   |//         (゚д゚)(゚д゚)ウマー
   |            |//
   |     ワーイ    /
   |   ∧ ∧    /
   |   (,,・∇・)   /    ⊂,'⊃
   | ̄| ̄ ̄ ̄ ̄ ̄~|
   |  |  厨房   |
   |  |    号   _|
    ̄ ̄ ̄ ̄ ̄ ̄

   /  ̄ ̄\               〜〜〜〜
⊂⊃             /\     ⊂⊃
/⊂⊃        \/   \ /\  ⊂⊃  /\
〜〜〜〜        \     \     /\/   \
                        /  /       \
546デフォルトの名無しさん:2007/10/31(水) 16:40:59


告白します


schedoleをずっと


スチェドールと読んでいました。
547デフォルトの名無しさん:2007/10/31(水) 16:45:01
schedole って何?
548デフォルトの名無しさん:2007/10/31(水) 16:49:12
doleはバナナに張ってあるシールのことかな
549デフォルトの名無しさん:2007/10/31(水) 16:53:27
sche はドイツ語っぽいな。
550デフォルトの名無しさん:2007/10/31(水) 16:55:42
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 があるんだけど。
551デフォルトの名無しさん:2007/10/31(水) 17:12:47
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フィールドに値が設定されません。
555デフォルトの名無しさん:2007/10/31(水) 21:22:54
パソコンのやり過ぎで近視になりました。
夜にもなればEclipseとShrareとWinnyのアイコンの判別がもたつきます。
俺ってダメですよね?
556デフォルトの名無しさん:2007/10/31(水) 21:37:23
scheduleスケジュール じゃね?
557デフォルトの名無しさん:2007/10/31(水) 21:40:50
schedole に一致する日本語のページ 7 件中 1 - 7 件目 (0.22 秒)

もしかして: schedule
558デフォルトの名無しさん:2007/10/31(水) 21:41:53
イギリス英語だとシェジュールだけどな
559デフォルトの名無しさん:2007/10/31(水) 22:45:17
>>541>>542
ありがとうございます
560デフォルトの名無しさん:2007/11/01(木) 00:28:21
質問です。
Java5以降で、関数の可変長引数が使えるようになりましたが、
これを利用した、Listの初期化はできないでしょうか?

List<String> list = new ArrayList<String>("ほげ", "ふが", "うぐ");

こんな感じのコードを、どこかで見たような気がするのですが。
561デフォルトの名無しさん:2007/11/01(木) 00:29:38
asList か?

List<String> list = Arrays.asList("hoge", "fuga", "ugu");
562デフォルトの名無しさん:2007/11/01(木) 00:31:54
標準APIだと、
List<String> list = java.util.Arrays.asList("ほげ", "ふが");
ぐらいだっけか?

不便だと思うなら自前でユーティリティメソッドつくるんでもいいし。
563560:2007/11/01(木) 00:33:20
>>561
おお、たぶんこれです!ありがとうございます。
564560:2007/11/01(木) 00:34:17
>>562
失礼。リロードし損ねました。同様にありがとうございます。
565デフォルトの名無しさん:2007/11/01(木) 03:45:26
うお、知らんかった・・・・
Arrays.asList(new String[]{"ふー","ばー"})
使い続けてた・・・
566デフォルトの名無しさん:2007/11/01(木) 08:24:35
可変長引数のやつか。
567デフォルトの名無しさん:2007/11/01(木) 11:48:34
javaでwindowsコマンドのpingを打って、返ってきたパケットの中身を調べたいのですが
どんなクラス、メソッドを使えばできるのでしょうか?
例としてソース出して頂けると更に嬉しいです。
568デフォルトの名無しさん:2007/11/01(木) 11:52:07
他のプロセスがやり取りしているパケットの中身を見る方法があったら大変なことなんですけど。
569デフォルトの名無しさん:2007/11/01(木) 11:55:10
Windowsのプロセスにハックしなきゃ無理だわな
ウィルスバスターでも作りたいわけ?
570デフォルトの名無しさん:2007/11/01(木) 12:01:38
できないんですか^−^;
DatagramPacketで返ってきたパケットの中身を見るのも無理ですか?
571デフォルトの名無しさん:2007/11/01(木) 12:02:57
ping の実行結果 (到達可能かどうか、パケット速度等) を Java から
参照したいだけなら、コマンドの実行をパイプして結果を取得。

DatagramPacket は UDP、ping は ICMP。Java から ICMP は直接使えない。
572デフォルトの名無しさん:2007/11/01(木) 15:33:01
質問です。
windowが非アクティブの状態でキーイベントを起こしたいのですが
どうしたらいいんでしょうか?
573デフォルトの名無しさん:2007/11/01(木) 16:29:41
キーイベントをおこすなら java.awt.Robot#keyPress(int) とか
java.awt.Robot#keyRelease(int) で。

非アクティブっつーか、javaが管理するwindow以外の
キーイベント取るのは標準APIだけでは無理だったと思うが。
574デフォルトの名無しさん:2007/11/01(木) 19:43:17
Java Bean と データベース(OraclとかPostgreSQLなど)というのはどういう関係なんでしょうか?
独学で勉強してるのですが、Beanの概念がなかなか理解出来ません。
MVCモデルというのがありますが、
本によってはモデル=データベースだったりモデル=Beanだったりします。
かといってBeanはデータベースに代われる物でもないようです。
自分なりに考えた限りでは、
プログラムとデータベースの橋渡し=Beanという感じもするのですが
別に橋渡しなんか無くても何の不便も無さそうだしやっぱりよく分かりません
575デフォルトの名無しさん:2007/11/01(木) 19:51:37
(一般的な) Bean とデータベースは何の関係もございません。
まぁ SQL とトランザクションを駆使して手続き型処理をゴリゴリ書く羽目になる DB を、
オブジェクト指向言語である Java から使いやすくするために OR マッピングなどで
Bean をかますことはある。
576デフォルトの名無しさん:2007/11/01(木) 19:58:34
>>574 一般的な手法としてはデータベースの内容をリストに詰めてBEANで送り
JSPで一斉に表示するという方法がある。が基本的にBEANとデータベースは無関係。
577574:2007/11/01(木) 21:05:13
>>575
>>576
なるほど、Beanはプログラム内でデータを手軽に扱う手段という感じですね。
となるとやっぱり元のデータベースの勉強を先にした方いいのかな。
とにかくイメージが湧きました。ありがとうございました。
578デフォルトの名無しさん:2007/11/01(木) 21:17:08
超初心者的質問?で申し訳ないのだけれど

class Hello
{
 class hoge()
 {
  int n;
 }
 public static void main(String argv[])
 {
  hoge c = new hoge();
 }
};

というソースをコンパイルすると、↓というエラーがでます
「static でない 変数 this を static コンテキストから参照することはできません。」
newのところが悪いっぽいのですが、暗黙のthis受け渡しが発生するような記述には見えません。

内部クラスの生成にはthisが使われるということでしょうか?
579デフォルトの名無しさん:2007/11/01(木) 21:19:28
>>578
正解、thisが使われています。
内部クラスをstatic にすればいける。
static class hoge() 
580デフォルトの名無しさん:2007/11/01(木) 21:22:46
>>579
ありがとうございます。なるほど
クラスのインスタンスが生成されたときに、内部クラスの定義もインスタンス内に作られる…とかですかね。

Java 内部クラス でぐぐって探してみてるのですが「何故thisが使われるのか」まで踏み込んだページが見つかりません。
もし知っていればそのあたり(言語仕様まわり)の情報があるサイトなどを紹介していただけませんでしょうか
581デフォルトの名無しさん:2007/11/01(木) 21:30:53
>>580
サイトは知らんが、四種のクラスの違いはEffective Javaで読んだな。

>>578のthisは、コンパイラがこう解釈するからエラーになる。
 public static void main(String argv[])
 {
  hoge c = "this."new hoge();
 }

通常の内部クラスはその外のクラスにバインドされる。
だから、内部クラスから外のクラスのフィールドやメンバに直接アクセスできるわけだ。
そもそも、内部クラスは正確に書くと、
(外のクラス名).(内部クラス名) value = (外のクラスのインスタンス名).new (内部クラス名)(引数);
となるわけで、そう書かれてないのは暗黙的にthisを省略してるに過ぎない。
582デフォルトの名無しさん:2007/11/01(木) 21:33:22
なるほど。外のクラスのメンバにアクセスできるようにするためにthisと関連付けられてるってわけですね
そしてその意図(関連付ける必要)がないならstaticにすればいいと
よくわかりました。
ありがとうございました!
583デフォルトの名無しさん:2007/11/01(木) 21:34:51
だから、>>579のいうようにstaticにしたときも、正確に書くと
Hello.hoge c = Hello.new hoge();
となるわけだ。内部クラスを単なるネストされたクラスだと考えていると>>578のように躓くから、
外のクラスと密接に関係したクラスであることを強く意識する必要がある。
584デフォルトの名無しさん:2007/11/01(木) 22:10:50
staticでない内部クラスはたとえばIteretorとかSubListとかみたいに
内部構造は隠したいけれども、そのオブジェクトを他の表現で表したいときに使うな。

そうでない場合はたいていstaticネストクラスを使うほうが正しい場合が多い。
こっちのほうは(アクセス権とかで)若干そのクラスとの結びつきが強いだけの、別個のオブジェクトになる。
585デフォルトの名無しさん:2007/11/01(木) 22:20:24
こんばんわ。
独習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]);
      }
   }
}

こうなったんですが、コンパイルして実行してもなんも表示されません。
どこかおかしいんですかね・・・
586デフォルトの名無しさん:2007/11/01(木) 22:22:43
×for(int i = 0; i > 11; i++){
○for(int i = 0; i < 10; i++){
587デフォルトの名無しさん:2007/11/01(木) 22:58:34
あっ
盲点でした。ありがとうございます
独習Javaを入門書にするのはやめといたほうがいいのかな・・・
588デフォルトの名無しさん:2007/11/01(木) 23:00:42
独習Javaでいいと思うよ
589デフォルトの名無しさん:2007/11/01(木) 23:23:42
独習系は総じて難しいと思う。全体的にある程度プログラムができることを前提としてるような気がする。
だから、二つ目以降の言語を学習するには最適だけど、プログラム初心者が読むのにはむいてない。
590デフォルトの名無しさん:2007/11/01(木) 23:25:40
入門書なんて何でもいいと思う
難しい本選んで苦悩してもそれが財産になる
悩まず綺麗に教えられた人って全然応用力無いんだよね
591デフォルトの名無しさん:2007/11/01(木) 23:31:17
>>584
それ以外に、ストラテジーパターンでも使う。メソッドごとごっそり入れ替えられて便利。
蛇足だけど、C#では内部クラスは外のクラスのフィールドにアクセスできない。
つまり、全部の内部クラスがJavaでいうstaticクラスになる。
592デフォルトの名無しさん:2007/11/01(木) 23:34:40
>>590
難しい本で挫折しちゃったら元も子もないでしょ。
593デフォルトの名無しさん:2007/11/02(金) 00:13:13
>>590
それは教えられ方によるんじゃないかな?
うまくアウトプットを引き出させるような教え方をされた人は、ちゃんと応用できる

要は、自分でものを考えないまま正解を教えられたやつは〜、ってことだろ
そういう意味では独習系ってアウトプットを要求するから、良本なんだよねぇ
594デフォルトの名無しさん:2007/11/02(金) 00:19:30
独習は問題の解答あるから良いよ
そもそも難しいとはいえない、量があるのは確かだがね
じっくり時間を掛けられるならば一番いい入門書だと思う
やっぱり最初は書いて書いて書きまくるべき
595デフォルトの名無しさん:2007/11/02(金) 01:02:42
独習は他の言語をマスターした人がJavaを学ぶために読む本だよ。
いきなりJavaから始めるような本当の意味で初心者が読む本じゃない。
596デフォルトの名無しさん:2007/11/02(金) 01:04:22
今なら明解Javaだな。
597デフォルトの名無しさん:2007/11/02(金) 01:10:09
長い渡り廊下であの人と
すれ違うたび心臓が止まる





























 
598デフォルトの名無しさん:2007/11/02(金) 01:24:50
>>593
さあ?俺は教えてもらった事なんかないけど?
ただ、本を読んで自分で試しただけだ。
599デフォルトの名無しさん:2007/11/02(金) 01:32:06
>>598
独学だから賢いと思いこんでる馬鹿ハッケ〜ンw
独学だろうが教えられようが賢いヤツは応用も出来るに決まってるだろw
600デフォルトの名無しさん:2007/11/02(金) 01:46:52
やっぱりjava使いは馬鹿が多いね。
世界一簡単な言語だから仕方ないけど
601デフォルトの名無しさん:2007/11/02(金) 01:48:06
VBを差し置いてそれは無いと思うが
602デフォルトの名無しさん:2007/11/02(金) 01:53:53
>>600
シンタックスシュガーと統一性のない言語仕様に阻まれてほかの言語が使えない人間よりかは、
世界一簡単なJava言語使いの馬鹿のほうがまし。
603デフォルトの名無しさん:2007/11/02(金) 01:56:51
>>601
初めてVBを見たとき、あのアポストロフィみたいなのでコメントを表すなんて難しい言語だと思った。
604デフォルトの名無しさん:2007/11/02(金) 01:59:37
rem よりいいべw
605デフォルトの名無しさん:2007/11/02(金) 03:57:34
N88BASIC をバカにするな
606デフォルトの名無しさん:2007/11/02(金) 09:11:34
アポストロフィよりもREMの方が中間言語は短いから、メモリの節約になる。
607デフォルトの名無しさん:2007/11/02(金) 09:23:37
>>606
それって、機能考えたら当然だと思われw
608デフォルトの名無しさん:2007/11/02(金) 14:41:04
すません。。

document.formname.submit(); このformnameの値を動的に変えたい場合どうすればよろしいですか。

function chg(formname)
{
 document.formname.submit();
}

こうやってみてもダメでした・・
609デフォルトの名無しさん:2007/11/02(金) 14:57:14
すれ違い。次から 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と違いました申し訳ありません。 
611デフォルトの名無しさん:2007/11/02(金) 15:01:28
>>610>>1の先頭2行すら読めないのだろうか・・・。
612JAVA初心者:2007/11/02(金) 19:16:09
こんにちは。
いつも参考にさせていただいています。

STRUTS使用のJSPで、html:textを使用するときに
フォームのプロパティに値がsubmit後に入ってくると思いますが、
formの直下にプロパティがない場合、
たとえば
formの直下にaBeanというビーンがあります。
そして、そのビーンの下にbBeanがあり、
そのbBeanの下のプロパティにsubmit後に
ユーザの入力値を設定したい場合は
そのようなことは技術的に可能でしょうか?
また、可能であれば、どのようにJSPにかけばよろしいでしょうか?
よろしくご教授してください、、
613デフォルトの名無しさん:2007/11/02(金) 19:22:47
614デフォルトの名無しさん:2007/11/02(金) 22:07:42
標準の JDK に含まれていないロケール (例えばモンゴルとか) を実行環境に追加
って出来ますか? 日付や数値フォーマットは SimpleDateFormat や DecimalFormat
使って誤魔化せるんですが、ISO 三文字コードとか Locale クラスが final 宣言され
ているので何ともならないのですが。
615デフォルトの名無しさん:2007/11/02(金) 22:20:56
アクセス修飾子の話なのですが、何故publicだった関数をprotectedに変更することができないのでしょうか?

protected を private にできないのは、Javaがprivateな関数をを仮想関数テーブルに加えないからだと納得いくのですが
public を protected にさせない理由がわかりません

もしかして、結局のところアップキャストしてアクセスすれば、アクセスできちゃうから。
つまり意味がないからでしょうか
616デフォルトの名無しさん:2007/11/02(金) 22:33:50
そういうこと。
617デフォルトの名無しさん:2007/11/02(金) 22:35:21
javaでサーバーアプリケーションは作れますよね?
そのサーバーアプリケーションにjavaアプレットからsocketで繋げてやり取りできますか?
618デフォルトの名無しさん:2007/11/02(金) 22:39:06
アプレットのダウンロード元と同じホストなら出来ます。
619デフォルトの名無しさん:2007/11/02(金) 22:44:06
ありがとうございます
620デフォルトの名無しさん:2007/11/02(金) 23:16:44
コマンドライン引数って何個まで指定できますかね。
無限でしょうか
621デフォルトの名無しさん:2007/11/02(金) 23:23:14
言語仕様的には無限。
実行環境のシェルのバッファの限界に依存。
622デフォルトの名無しさん:2007/11/02(金) 23:34:11
>>614
1.6 からは java.util.spi.LocaleServiseProvider あるから、それ使えばできるんじゃねーかと。
623デフォルトの名無しさん:2007/11/02(金) 23:37:31
Javaは変数の参照渡しはできないんですか!orz
624デフォルトの名無しさん:2007/11/02(金) 23:43:52
>>623
できない。

参照型でラップして、似非参照渡しとかならできるけど
class IntRef { public int value; }
public void method(IntRef ref){ ref.value++; }
public void method2(int[] a){ a[0]++; }
オススメはしない。
625デフォルトの名無しさん:2007/11/02(金) 23:46:08
そもそもプリミティブ型でもなければそのまま渡して何も問題ないしな
626デフォルトの名無しさん:2007/11/02(金) 23:51:05
Java に参照渡しはない、あるのは参照の値渡しだ、とツバ飛ばしながら
揚げ足取る人間が昔は居たものだが。
627623:2007/11/02(金) 23:51:22
>>624
それは、オブジェクトは参照渡しできるようなので、
変数だけのクラスを作ってそれを引数にするってことですよね?
お奨めじゃないんですか、
普通はどうしてるんですか?


628デフォルトの名無しさん:2007/11/02(金) 23:53:07
配列にして渡すかなw
629デフォルトの名無しさん:2007/11/02(金) 23:56:13
return で返す。
630623:2007/11/02(金) 23:59:45
ググリました。
ttp://www.asahi-net.or.jp/~dp8t-asm/java/tips/MultiValueReturn.html
ここの指定されたオブジェクトに通知する方法や、
エンティティオブジェクトを復帰値にする方法は、
普通しませんか?
631デフォルトの名無しさん:2007/11/03(土) 00:31:44
アイコンってどう作るの?Javaでメモ帳を作ったんだが(まだ、開くと保存しかない)いちいちjava Sampleで起動してるからカッコ悪い。
632デフォルトの名無しさん:2007/11/03(土) 00:33:36
>>631
jar にまとめたら?
633デフォルトの名無しさん:2007/11/03(土) 00:43:00
jarだったらアイコンはOSから指定されてしまうんでない?
独自のを使いたいならexeWrapかなんかでラッピングしてやったらいいんじゃないかな?
634デフォルトの名無しさん:2007/11/03(土) 04:33:58
うんこ
635デフォルトの名無しさん:2007/11/03(土) 04:44:36
636デフォルトの名無しさん:2007/11/03(土) 04:45:08
>>635
(・∀・)イイ!!
637デフォルトの名無しさん:2007/11/03(土) 07:04:27
>>635
精神的ブラクラ
638デフォルトの名無しさん:2007/11/03(土) 09:41:34
そうでもない
639デフォルトの名無しさん:2007/11/03(土) 09:56:57
どんだけ〜
640デフォルトの名無しさん:2007/11/03(土) 14:43:21
キーを押しっぱなしにしてから離すと、
Pressedイベントが貯まってReleasedイベントの検知が遅れます。

Releasedを検知するまでのラグを無くそうと調べたところ、
Windowsが貯まっている分のキーイベントを保持している事が分かりました。

直接Windowsが保持しているキーイベントを操作する方法、
もしくはそれ以外の、遅れを抑える方法があったら教えてください。
641デフォルトの名無しさん:2007/11/03(土) 14:58:47
> 直接Windowsが保持しているキーイベントを操作する方法、
できない。少なくとも標準APIだけでは。
642デフォルトの名無しさん:2007/11/03(土) 16:04:26
>>640
AWTのイベントキューに登録されてるなら、
java.awt.EventQueue#peekEvent(int) と
java.awt.event.KeyEvent#KEY_RELEASED 使えば取れるかもしれん。
643デフォルトの名無しさん:2007/11/03(土) 16:35:51
スレッドを複数使う場合は変数をどういう風に記述すれば良いですか?
644デフォルトの名無しさん:2007/11/03(土) 16:39:55
複数のスレッドからどういう風に使われるかによって変わる。
645デフォルトの名無しさん:2007/11/03(土) 16:49:14
説明の仕方があまりわからないのですが
円を4つ表示させて、それぞれ別の動き方にしたいです
646デフォルトの名無しさん:2007/11/03(土) 16:58:08
シングルスレッドで作れる件
647デフォルトの名無しさん:2007/11/03(土) 16:58:35
長い渡り廊下であの人と
648デフォルトの名無しさん:2007/11/03(土) 16:59:46
>>645
paint(graphics g)
649デフォルトの名無しさん:2007/11/03(土) 17:08:53
>>645
途中で送信してしもた・・・orz

要するにそれぞれ円を動かして描画するメソッドを順番に呼び出せばマルチスレッドにする必要なんてない
650デフォルトの名無しさん:2007/11/03(土) 17:10:12
円それぞれにランダムな動きや状態変化とかさせたいんじゃないかな
651デフォルトの名無しさん:2007/11/03(土) 17:11:52
>>650
それにしてもマルチスレッドにする必要性ゼロだなw
652デフォルトの名無しさん:2007/11/03(土) 17:14:14
細胞とかのシミュレーションならマルチスレッドで行くでしょw
ごの場合たぶんちがうと思うけどw
653デフォルトの名無しさん:2007/11/03(土) 17:18:43
イベントディスパッチャースレッドの中でやる気か?
654デフォルトの名無しさん:2007/11/03(土) 17:20:44
>>653
本質とは関係ないな
655デフォルトの名無しさん:2007/11/03(土) 17:26:27
は?
イベントディスパッチャースレッドの中で連続して円描いて動かす気かと聞いてるのだが?
656デフォルトの名無しさん:2007/11/03(土) 17:29:58
657デフォルトの名無しさん:2007/11/03(土) 17:31:36
658デフォルトの名無しさん:2007/11/03(土) 17:37:55
あまりスレッドは使わないほうがいいよ
659デフォルトの名無しさん:2007/11/03(土) 17:41:30
Swing と AWT では、おのずと違ってくるだろう。
660640:2007/11/03(土) 17:45:49
>>641
>>642
現在はSwingを使っていますが、
似たようなメソッドが無いか調べてみます。
661デフォルトの名無しさん:2007/11/03(土) 17:54:42
「やさしいJava」にそんなんあったぞ。
1キャラ事にスレッド作ってんの。
初心者相手にあーゆーのいいんかいな。
662デフォルトの名無しさん:2007/11/03(土) 18:10:44
効率を求めるのはやさしくなくなってからで良いだろ。
663デフォルトの名無しさん:2007/11/03(土) 18:26:48
>>660
低レベルなイベントはAWTとSwingで共通。
664デフォルトの名無しさん:2007/11/03(土) 18:38:25
>>655
だからそれは質問の本質とは関係ないと言っている
665デフォルトの名無しさん:2007/11/03(土) 18:41:21
>>664
いや質問者じゃなくてお前に聞いてんだけど。
666デフォルトの名無しさん:2007/11/03(土) 18:47:23
>>665
だからそれを俺に聞いても質問の解決には無関係だし、意味がない。
667デフォルトの名無しさん:2007/11/03(土) 18:54:22
>>666
いやお前のその回答間違ってんじゃねーの? って話してんだから関係ないわけないだろ。
で、スレッド立てないでイベントディスパッチャースレッドの中で連続描画してアニメーションさすのをお勧めしてるわけ?
668デフォルトの名無しさん:2007/11/03(土) 18:56:34
なんか、どんどん自分脳が発展してるなw
669デフォルトの名無しさん:2007/11/03(土) 18:57:55
>>667
イベントディスパッチャースレッドの中とは一言も書いてない
で、それが問題の本質と何の関係があるのか知りたいわけだが
670デフォルトの名無しさん:2007/11/03(土) 19:00:50
課題:4つのスレッドを作り円を描くようにしなさい

答え:イベントディスパッチャースレッドでやるのかよ、ありえないよ、だからやらね

評価:不可。来年頑張ってね。
671デフォルトの名無しさん:2007/11/03(土) 19:03:45
宿題は宿題スレへ
672デフォルトの名無しさん:2007/11/03(土) 19:04:46
>>668
>>646-651 を見ればそう読めるだろ。paint(Graphics) 実行するのはイベントディスパッチャースレッドなんだし、
スレッド立てる必要がないというならイベントディスパッチャースレッドの中で連続描画しろと言ってるわけだし。

だから真意としては、ひょっとしてイベントディスパッチャースレッド以外から描画系のメソッド呼ぼうなんて
無知な方法薦めようとしてんじゃねーかと思ってね。
673645:2007/11/03(土) 19:06:11
達也も和也も、私を奪い合うのはやめて!
674デフォルトの名無しさん:2007/11/03(土) 19:07:14
まあ、643の回答でないことは確かだなw
675デフォルトの名無しさん:2007/11/03(土) 19:13:00
だからそういってるわけだが。
反論ありませんその通りです知りませんでしたという回答でいいわけね。
676デフォルトの名無しさん:2007/11/03(土) 19:14:41
逃げ足だけは速そうだなw
677デフォルトの名無しさん:2007/11/03(土) 19:19:38
ここのスレがこんなにあれるなんて珍しいな。
678デフォルトの名無しさん:2007/11/03(土) 19:23:37
勝利宣言w
図星かよ ┐(´ー`)┌
679デフォルトの名無しさん:2007/11/03(土) 19:28:46
>>677
回答側に突っ込みが入るとかなりの確率で荒れます。
680デフォルトの名無しさん:2007/11/03(土) 19:41:13
>>672
paintはコード書こうと思った途中で間違って送っただけなんで、関係ないです。申し訳ないです。
ところで>>643は円にそれぞれスレッドを割り当てて描画したいという意図だと読み取ったんだけど
それならわざわざマルチスレッドにする必要がないということであって
イベントディスパッチャースレッド云々は関係ないというかそれで別スレッド作ったから
マルチスレッドじゃねーかっていう突っ込みに意味がある?
681デフォルトの名無しさん:2007/11/03(土) 19:51:00
どうした?納得しちゃった?
682デフォルトの名無しさん:2007/11/03(土) 20:03:57
>>680
「アニメーション用のスレッドは 1 つ立てればいい」 というのをシングルスレッドとは言わない。
シングルスレッドで良い = 多重化しない = メインのスレッド (GUIの場合イベントディスパッチャースレッド) 以外不要、
という意味になる。
683デフォルトの名無しさん:2007/11/03(土) 20:12:41
>>682
だから、わざわざ円一つごとにスレッド作らなくてもいいという話に
イベントディスパッチャーが関係あるのかって話
ちなみに別スレッド作らなくてもタイマを使うという手がある
684デフォルトの名無しさん:2007/11/03(土) 20:14:19
すみません。0〜9までの数字を入力するJSPがあり、そこの入力値を
サーブレットで受け取って、受け取った値が空じゃないか?
数字以外じゃないか?数字だとしたら0〜9の範囲内の値か?をエラーチェックして
最終的に0〜9までの数字をRandomクラスで出してそれと一致すれば
「当たり」と表示するアプリケーションがあります。これは本のサンプルです。

一番最初実行していたときはjspで数字を入力してサーブレットで結果をみてたりしてたんですが
サーブレットで結果をみて戻るボタンを押してJSPに戻ってまた数字を入力してと
繰り返ししていたら(エラーチェックなどをした)サーブレットになにも表示されないまま(空白画面)となってしまいました。

どうすればちゃんと表示されるようになりますか?
685デフォルトの名無しさん:2007/11/03(土) 20:20:20

java.util.Locale について質問です。

 IP2C というIPアドレスから国のStringを返すJavaのコードがあります。
 http://firestats.cc/wiki/ip2c
 
 知りたいことは、国の情報から代表的な言語の情報を返すことです。
 たとえば "JP" を代入すると "ja" を文字列で返すといったようなことです。
 
 そこでまず new java.util.Locale("言語", "国") を使ってみようとしましたが、
 "言語"に""文字列を入れないと何も空白の文字列しか帰ってきませんでした。
 
どうぞ、よろしくお願いいたします。
686デフォルトの名無しさん:2007/11/03(土) 20:27:57
>>683
ないよ。だがシングルスレッドでと言ったならイベントディスパッチャースレッド内で、と等価だっつー話。

>>684
サーブレットのエラーログに何か出力されてないか見る。

>>685
標準 API でそれは無理。むしろ俺も知りたい。
687684:2007/11/03(土) 20:32:23
>>686
どうもありがとうございます。トムキャットのエラーログはなにも書いてないですが、
時間がたって再度やったらうまくいきました。。。なんだろう。。不思議ですが、よくなったので
どうもありがとうございました。
688デフォルトの名無しさん:2007/11/03(土) 20:40:25
>>685
Localeクラスでは無理

このへんみながら自分で対応表作るしかないんじゃないかな
http://en.wikipedia.org/wiki/List_of_official_languages_by_country
689684:2007/11/03(土) 20:45:15
guess.jspからはbasic.guessServletにリンクをはってあるはずだったんですが、
input.guessServletになっていました。basic.guessServlet.javaをコンパイルしなおしても
だめでした(input.guessServletにリンク張ってあったから無駄だった。)
でも、guess.jspのリンクを直した後もトムキャットはinput.guessServletに
リンク変移するのでworkディレクトリしたの該当ファイルを消したら
最終的にすべてうまくいきました。

>>686さんどうもありがとうございました。
690デフォルトの名無しさん:2007/11/03(土) 21:02:05
>>686
>だがシングルスレッドでと言ったならイベントディスパッチャースレッド内で、と等価だっつー話。

タイマー使う手もあるわけだし、ただ単に重箱の隅をつついてるようにしか見えない
691デフォルトの名無しさん:2007/11/03(土) 21:03:03
javaやるにはサイトのどれダウンロードすればいいんだ
本にはJ2SEをクリックって書いてあるけど
サイトにはそんなのないんだけど
692デフォルトの名無しさん:2007/11/03(土) 21:09:49
>>690
質問者があの流れでタイマーとか思い浮かぶと思ったのか?
下らねえ揚げ足だな。
693デフォルトの名無しさん:2007/11/03(土) 21:11:34
>>692
だから、わざわざ円ごとにスレッド作る必要ないって話だよ
揚げ足取りしてるのはそっちだろ
694デフォルトの名無しさん:2007/11/03(土) 21:17:55
>>691
jdkの最新バージョン落とせばいい。
695デフォルトの名無しさん:2007/11/03(土) 21:24:21
>>693
お前はシングルスレッドと言ってるだけでそんな事は言ってないわけだが。
揚げ足じゃなくてお前の理解不足。
696デフォルトの名無しさん:2007/11/03(土) 21:27:01
見苦しいからもうやめようぜ。
697デフォルトの名無しさん:2007/11/03(土) 21:35:33
初心者スレで回答側に突っ込むとこうなります。
なぜなら彼らもまた初心者だからです。
698デフォルトの名無しさん:2007/11/03(土) 21:39:13
面白いから続けていいよ
699デフォルトの名無しさん:2007/11/03(土) 21:44:15
(ю:】
700os:2007/11/03(土) 21:45:54
javaでosを作ろうと思ってる。
どうすればいい?
701デフォルトの名無しさん:2007/11/03(土) 21:46:24
>>695
だからタイマー使えばシングルスレッドでも出来るって言ってるだろ
理解不足なのはそっち
702デフォルトの名無しさん:2007/11/03(土) 21:47:44
あれ?もう終わり?口ほどにもない奴だな。
703デフォルトの名無しさん:2007/11/03(土) 21:50:09
アホがループし始めた。
704デフォルトの名無しさん:2007/11/03(土) 21:50:47
別にこんな絶対に進展しない話で勝ち負け決めたって意味ないんだけどなぁ
イベントディスパッチャスレッドどうこうは本質とは関係ないし
タイマー使えばシングルスレッドに出来る
705デフォルトの名無しさん:2007/11/03(土) 21:51:49
>>701
OSに必要なプログラムを書けばいいよ
706デフォルトの名無しさん:2007/11/03(土) 21:52:50
>>703
本質とは無関係なイベントディスパッチスレッドにこだわって
シングルスレッドじゃ無理みたいな言い方するからタイマーでできると言ったらなんだか
そんなの文章じゃ読み取れんとか理解不足とか言い出すし
理解してないのどっちだよって話
707デフォルトの名無しさん:2007/11/03(土) 21:54:57
>>704
これだけ無知さらしておいてまだ食い下がるのか。
シングルスレッドってのはアプリケーションでスレッドを開始しないという意味ではない。
お前の脳内サーブレットコンテナはシングルスレッドなのか?
708デフォルトの名無しさん:2007/11/03(土) 21:56:05
はい、論破
709デフォルトの名無しさん:2007/11/03(土) 21:58:02
>>707
そうきたか、ワロタ。
どう見ても質問者はサーバーサイドJavaの話なんかしてないからなぁw
710デフォルトの名無しさん:2007/11/03(土) 21:58:56
GUIをゼロから学んだ方が良いよ。
学生君。
711デフォルトの名無しさん:2007/11/03(土) 22:00:55
そこまでくるともう揚げ足取り以外の何物でもないなw
712デフォルトの名無しさん:2007/11/03(土) 22:01:06
>>706
事の発端はおまえの 「シングルスレッド」 発言な。

>>709
例えに逃げ道を見つけたかw
713デフォルトの名無しさん:2007/11/03(土) 22:02:08
もうお前の勝ちでいいよ、つき合いきれん
714デフォルトの名無しさん:2007/11/03(土) 22:04:03
アニメーションするのにタイマーって使うもの?
715デフォルトの名無しさん:2007/11/03(土) 22:10:01
使わないと早すぎるか遅すぎるかどっちかじゃね?
716デフォルトの名無しさん:2007/11/03(土) 22:14:23
そりゃ sleep() や wait() で済む話。
それらより誤差が大きいタイマーなんて普通使わない。道具の使い方が間違ってる。
717デフォルトの名無しさん:2007/11/03(土) 22:48:03
タイマーってTimerのことなのか?
sleepもwaitもタイマーの一種だと思うが・・・
718デフォルトの名無しさん:2007/11/03(土) 23:12:02
>>717
APIちゃんと読め
719デフォルトの名無しさん:2007/11/03(土) 23:19:54
ナイチンゲールに聞けよ
720デフォルトの名無しさん:2007/11/03(土) 23:21:26
jdk-6u3-windows-i586-p.exe
てのをダウンロードしたんだけどこれでよかったかな?
これからどうしよ
binファイルがないんだけども
PATH設定とかわかりません
721デフォルトの名無しさん:2007/11/03(土) 23:22:20
bin ファイルっておまいさん Linux か何かかい?
722デフォルトの名無しさん:2007/11/03(土) 23:30:15
すいません。
ファイルから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();
}
}

この探索処理がよくわからなくて…
723デフォルトの名無しさん:2007/11/03(土) 23:42:05
単純に出すだけなら
TransformerFactory.newInstance().newTransfomer().transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(System.out)));

private static void inspect(Element elem){

}
724デフォルトの名無しさん:2007/11/03(土) 23:45:35
domはやめてxsltを使う。
725デフォルトの名無しさん:2007/11/03(土) 23:46:05
書きかけで送っちまった。

全ノードを走査するなら以下のように再起処理を実装して 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;
}
726685: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";
}
727デフォルトの名無しさん:2007/11/03(土) 23:50:57
>>726
代表的な言語と言いつつ最初に見つかったので良いのかよ。
728デフォルトの名無しさん:2007/11/03(土) 23:52:30
昔このスレで見かけた、ブラウザで使える逆コンパイラのURLって誰か知りませんか?
729デフォルトの名無しさん:2007/11/03(土) 23:55:42
>>725
ありがとうございます。
試してみます。
730デフォルトの名無しさん:2007/11/03(土) 23:59:34
だからナイチンゲールに聞けよ
731685:2007/11/04(日) 00:03:30
Locale.getAvailableLocales()の順番が丁度よかったので
732デフォルトの名無しさん:2007/11/04(日) 00:03:30
 凸                     (○o○)
【□】                   (o○)
 ■            ⌒⌒     (Оo)
 □          ⌒⌒       o°     ⌒⌒
 ■                  ┌─┐  ⌒⌒
 □     ┌──┐     ┌─┐ ┝〓┥
[口] ┌──┐□□│     │°└─┴─┴─┐
口口口 │□□│□ ______│○ ○ ○ ○└─┐
▲▲▲▲▲▲□│□ \ ¥   └─────────┴─┐
┃┃┃┃┃┃□│□□ \ YOKOHAMAファニチャー丸│
〓〓〓〓〓〓〓〓〓〓〓 )━━━━━━━━━━━━━━━/
〜〜〜〜〜〜〜〜〜〜彡彡彡〜〜彡〜〜〜彡〜〜彡〜〜彡彡彡彡彡〜〜
山下公園とマリンタワー 彡彡      彡  彡  彡彡彡彡彡
733デフォルトの名無しさん:2007/11/04(日) 00:09:44
だから標準のDOMは使うなとあれほど・・・。
JDOM使え、JDOM。コードの量が半分以下になるから。
734デフォルトの名無しさん:2007/11/04(日) 00:43:46
>>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デフォルトの名無しさん:2007/11/04(日) 01:26:43
>>734
試してみてくれ
737デフォルトの名無しさん:2007/11/04(日) 03:56:32
>>736
すいません。めちゃめちゃ嘘つきました。ごめんなさい。

配列のサイズは VM のメモリサイズに影響されるらしいので、
実行時によって違うみたいです…。

int のサイズとかは全然関係ないですが、調子こいて指定すると下記の様な
例外が出る様です。

Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
738デフォルトの名無しさん:2007/11/04(日) 09:00:35
上限に達するような状況自体、設計に問題があるだろ
739デフォルトの名無しさん:2007/11/04(日) 09:35:51
>>734
あーすまん、その通りだわ。言い方が悪かった。
言語仕様調べてみたが特に幾つまでとは書いてないな。ただ int 型でインデックシングするとは
あるから実質 int の最大値か。となるとインデックスの最大値は int の最大値 - 1 という事になる
ので、どんなにメモリが割り当てられても array[Integer.MAX_VALUE] という記述は失敗することになるな。
740デフォルトの名無しさん:2007/11/04(日) 10:54:44
intの上限に達するargumentって
英字のペーパーバックが一体何冊入るんだ?
741デフォルトの名無しさん:2007/11/04(日) 12:03:44
javaのapiを見てていつも不思議に思うことがあるんですが、
本来インタフェースのメソッドは中身が空で未実装のはずなのに
apiにあるインタフェースのメソッドは機能を持ってますよね。
例えばIteratorインタフェースのhasNext()というメソッドは中身が空なのに、
次の要素の有無によって返す値が異なる、という意味を既に持っている。
この機能はどこで付与されてるんですか??
742デフォルトの名無しさん:2007/11/04(日) 12:10:52
どっかにそのインターフェースを implement したクラスがあって、その中で実装されています。
API リファレンスに載ってるインターフェースの説明は、使う側にこうしなさいとうものであると
同時に、実装する場合はこうしなさいというものでもあります。ArrayList#iterator() などから
ソースを追っていってください。
743741:2007/11/04(日) 12:30:57
>>742
なるほど、あの説明が機能そのものを示すわけではないんですね。
ソースの方も落として読んでみたいです。
ありがとうございました。
744デフォルトの名無しさん:2007/11/04(日) 12:45:53
>>743
機能というのはちょっと曖昧
インターフェイスってのは仕様だけが決まっていて実装されていない
逆に言えば仕様を満たしている限りどんな実装でもいいって事
(仕様は契約ともいう)
機能って言うと仕様なんだか実装なんだかごちゃごちゃに聞こえるから使わない方がいいよ。
745デフォルトの名無しさん:2007/11/04(日) 13:11:28
746デフォルトの名無しさん:2007/11/04(日) 14:45:16
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)
747デフォルトの名無しさん:2007/11/04(日) 17:02:33
↑例外発生する前に request.setCharacterEncoding("UTF-8") やってます。
748デフォルトの名無しさん:2007/11/04(日) 18:12:31
fillOvalっていうので描いたものを動かして
半分ぐらいから色を変える事は可能?それとも不可能??
749デフォルトの名無しさん:2007/11/04(日) 18:13:36
上書きして違う色で書くか、最初から半分づつ描画すればいいだろ
750デフォルトの名無しさん:2007/11/04(日) 18:14:18
半分くらいというのは動かす距離の半分なのか円周の半分なのかどっちだ。
まぁどっちにしても可能だが。
751デフォルトの名無しさん:2007/11/04(日) 18:17:18
ていうかわざわざそんな事せずに
URLEncoder.encode ("aiueo","UTF-8");
じゃだめなの?
752デフォルトの名無しさん:2007/11/04(日) 18:38:26
>>751
いえ request.getParameter() の中で例外が発生するんですけど。
何で URLEncoder?
753デフォルトの名無しさん:2007/11/04(日) 18:58:27
だからもともとそんな形式(%u とか)で送らなきゃいいって話よ。
754デフォルトの名無しさん:2007/11/04(日) 19:13:00
なぜサーブレットの質問で送信側が Java で実装されていると判断されたか分かりませんが、、、
ブラウザから送っているものです。リクエスト送信元のページは UTF-8 でエンコードされています。
755デフォルトの名無しさん:2007/11/04(日) 19:33:36
ブラウザから%uの形式で送ってくる事なんてある?
なんのブラウザ使ってるの?
756デフォルトの名無しさん:2007/11/04(日) 19:46:33
>>750
>>749の言うとおり半分づつ色を変えれば良いみたいでした><

ありがとうございました。
757デフォルトの名無しさん:2007/11/04(日) 19:46:59
ファイルの読み込みについて質問です。
今、テキストファイルの内容を読み込んで、テキストエリアに表示する
プログラムを作ろうとしています。
BufferedReaderのreadLine()を使って読み込んでいるんですが、
readLine()で読んだ文字列をそのまま出力すると改行されませんよね。
元のファイルと同じ位置で改行させるにはどうすればいいですか?
758デフォルトの名無しさん:2007/11/04(日) 19:47:56
reader.readLine () + "¥n";
759デフォルトの名無しさん:2007/11/04(日) 20:26:08
アサーションなどのに使用するために、オブジェクトが同一スレッド内で
同期化されているかどうかを判定する機能があったと思うけどどのクラス
でしたっけ?
760デフォルトの名無しさん:2007/11/04(日) 20:28:40
Thread#holdsLock かな
761デフォルトの名無しさん:2007/11/04(日) 20:35:26
Oh, thank you.
762757:2007/11/04(日) 21:48:18
>>758
それもやってみたんですが、それだと元のファイルの最終行で改行されてない場合
(文字の後に改行が無い場合)にも改行されてしまったんです。
この場合に余計な改行がつかないようにしたいんですが...
763デフォルトの名無しさん:2007/11/04(日) 21:52:22
>>762
readLineつかわず、readで一文字ずつ取得しろ
764デフォルトの名無しさん:2007/11/04(日) 21:55:34
>>757
だったらreadLine() 使うなよw
765デフォルトの名無しさん:2007/11/04(日) 22:03:40
String str = "";
String line = null;

while ((line = reader.readLine ()) != null)
{
str += line + "¥n";
}
if (str.length () > 0)
{
str = str.substring (0,str.length () - 1);
}
766デフォルトの名無しさん:2007/11/04(日) 22:05:03

実行時の遅さは知らん。
767デフォルトの名無しさん:2007/11/04(日) 22:25:32
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()); 
768デフォルトの名無しさん:2007/11/04(日) 22:32:29
>>767
while の中で int を定義しまくるのはどうかと思うが…
769デフォルトの名無しさん:2007/11/04(日) 22:35:43
>>768
それって考えた方がいいの?
Javaの標準のライブラリ中のソースでも平気でそういうソースあるけど。
770デフォルトの名無しさん:2007/11/04(日) 22:36:14
>>768
これぐらいなら最適化してくれるんじゃないの?
771デフォルトの名無しさん:2007/11/04(日) 22:39:33
スタックポインタが動くだけの事を何気にしてんだ?
new でヒープ確保するのと同じとでも思ってるのか?
772デフォルトの名無しさん:2007/11/04(日) 23:17:12
>>768
時代遅れ甚だしい
あれか、カウンタ変数を再利用する人種か?
773デフォルトの名無しさん:2007/11/04(日) 23:28:08
再定義なんかしてないだろ条項
774デフォルトの名無しさん:2007/11/04(日) 23:28:19
>>772
20年くらい時代遅れかね?
775デフォルトの名無しさん:2007/11/04(日) 23:48:11
>>771
その「動く」事に対して時間はかからないの?

俺は

int を定義する、メモリ確保、ローカルスコープ終了・破棄、
また int を定義………

と思ったけど、違うの?
すいません、20年遅れなもんでw
776デフォルトの名無しさん:2007/11/04(日) 23:56:15
>>775
違うよ。
777デフォルトの名無しさん:2007/11/05(月) 00:03:00
私もそこらへん詳しくしらないので分かる方ぜひ詳しく教えてください。
778デフォルトの名無しさん:2007/11/05(月) 00:10:22
      _,..--------、_
     r| |      | /ヽ,
     | l l ,.へ  | || iユ、
     |j_l∠へ-゙-⊥」_/゙T´
     |_,.. -:;;:-- 、...__n`y
     ⊥_、 u__,,,,,,,,.リト|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     代07  ヘ0フ ||,ヘ < 第1話だけ限定放送かよ、これはDVD売るための罠だ
       !  |__  ,_ ̄u ||_ソ  \______________________
      |uイ――ヾ u ,リ,へ、
     人|.  ̄ ̄`リ_〃゙ (9入_
  _,..-=|| ,.`'ー|l|ー</// ̄人9、>-、_
/(9ト-||('-ジ'リト=-ソ__ゞ´/ニ、9ト9Y゙/6\
779デフォルトの名無しさん:2007/11/05(月) 00:13:43
>>775
詳しく知らないのは構わない
だが、時間がかかると自分で試した事あるのか?
変数を使いまわした場合と再定義した場合、10万回程度ループさせてどれだけの差が出るか実験してみろよ。
780デフォルトの名無しさん:2007/11/05(月) 00:18:34
>>777
とりあえず、
whileの中にintがある場合

whileの外にintがある場合
のそれぞれのclassファイルについて、javap -c で逆アセンブルしてみろ。
ニーモニック表とオペコード解説が、何故かWikipediaにある。
http://ja.wikipedia.org/wiki/Java%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3
781デフォルトの名無しさん:2007/11/05(月) 00:19:56
>>775
全然違う。スタック変数の確保開放なんてのは単純な整数値の足し算引き算。
20 年前のプログラマがそんなん知らんで何作ってたんだ。
782デフォルトの名無しさん:2007/11/05(月) 00:34:18
・プログラミングで扱うメモリと言うのは大きくスタックとヒープに分かれている。
・ヒープは new で確保する領域。広大な代わりにページ管理やらフラグメントやらで遅い。
・スタックは起動時に何kB〜何MB か確保されている固定領域。上限が低い変わりに
確保する順序と開放する順序が分かっているため、スタックポインタという 「次に変数が
必要なときはここから」 という整数に加減算するだけなので速い。バイト配列のインデッ
クスのようなもの。

詳しくは Wikipedia でも見れ。
783デフォルトの名無しさん:2007/11/05(月) 00:35:57
Java始めたばかりなんだけど
標準ライブラリのリファレンスがあるサイトとかないですか?

PHPのマニュアルのようなサイトとか・・・
784デフォルトの名無しさん:2007/11/05(月) 00:39:41
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].");
}
}
785デフォルトの名無しさん:2007/11/05(月) 00:40:50
test 1:12 [msec].
test 2:5 [msec].

正直、結構違うもんだな〜と思った。
786デフォルトの名無しさん:2007/11/05(月) 00:43:31
>>780-782
ご丁寧にありがとうございます。時間かけて少しずつ理解しようと思います!
787デフォルトの名無しさん:2007/11/05(月) 00:50:32
>>784-785
順序逆転してみたら結果も逆転したくらいあてにならんのだが。
788デフォルトの名無しさん:2007/11/05(月) 00:53:12
nanoTime使えよ
789デフォルトの名無しさん:2007/11/05(月) 00:58:22
マルチタスク OS 上でのナノ秒計測なんて意味なし。
790デフォルトの名無しさん:2007/11/05(月) 01:50:38
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/System.html#currentTimeMillis()
>多くのオペレーティングシステムでは、時間を 10 ミリ秒の単位で計測します。
791デフォルトの名無しさん:2007/11/05(月) 01:56:47
質問失礼します。
int型の三次元配列のデータをファイルから読み込み、処理を行った後に同じデータを同じファイルに保存したいのですが
どうすればいいでしょうか?
参考となるものを探しているのですが、殆どが文字列を扱う入出力のみで、数値を扱う物を見つけられずに困っています。
792デフォルトの名無しさん:2007/11/05(月) 02:04:35
いわゆる AT 互換機だと INT 8 のハードウェア割り込み使って得られる精度は 55msec。
Win32 API 使っても 10〜20msec くらい。CPU クロック使えばもっと正確なの出せるだろうけど。
ナノ秒必要なの (正確に測れるの) って電話の交換機とかの環境。
793デフォルトの名無しさん:2007/11/05(月) 02:05:45
>>791
そのファイルの内容によりけり。数値を文字列として保存していれば文字列として読み込めばいいし、
バイナリファイルならフォーマットやエンディアンを知らんと何ともならん。
794デフォルトの名無しさん:2007/11/05(月) 02:10:42
DataOutputStream/DataInputStream あたりが簡単じゃね?
795デフォルトの名無しさん:2007/11/05(月) 02:14:50
>>780
まじだwwwwワロスwwwwwwwwwwwwww
796デフォルトの名無しさん:2007/11/05(月) 02:56:19
>>792
ゲームでfpsを調整するために普通に使うわけだが……?
797デフォルトの名無しさん:2007/11/05(月) 03:30:35
>>793
バイナリファイルではなく、あくまで三次元int配列の中身の数値を保存したいと思っています。

>>794
DataOutputStreamで配列を保存してみましたが、保存した配列を見るとすごいことになっていました…。
入力し、それを再度出力させると数値は保存されているのが確認できたプログラムを動かす上では問題なさそうです。
ただ、チラッとファイルを開いて中身を確認することは不可能ですが…。


とにもかくにも、問題を解決できました。大変感謝しています。ありがとうございました。
798デフォルトの名無しさん:2007/11/05(月) 04:12:54
おまんこ
 
799デフォルトの名無しさん:2007/11/05(月) 04:17:31
まんげ
800デフォルトの名無しさん:2007/11/05(月) 04:19:41
>>796
1000fpsを超えるゲームなんて聞いたことないのだが
801デフォルトの名無しさん:2007/11/05(月) 04:35:14
ナイチンゲールもおそらく知らないでしょう
802デフォルトの名無しさん:2007/11/05(月) 06:10:06
>>800
データの単位がナノなだけでなんでそこまでfpsあげなきゃなんないんだ馬鹿
もしかして1ナノまで正確にあってないといけないメソッドかと思ってるのか?
803デフォルトの名無しさん:2007/11/05(月) 07:12:51
extendsとimplements両方乗っける場合どちらを先に記述する?
804デフォルトの名無しさん:2007/11/05(月) 08:02:53
>>803
extends。implementsは後から追加するかもしれんから。
805デフォルトの名無しさん:2007/11/05(月) 09:12:59
implementsを先に記述することなんかできたっけ?
806デフォルトの名無しさん:2007/11/05(月) 11:18:42
Swing について調べているのだけど
1.4 で導入されたという、EventHandler というのは何だかすごく便利そうですね。
http://java.sun.com/javase/ja/6/docs/ja/api/java/beans/EventHandler.html

もしかして、もう今では、ちょっとしたボタンのリスナとかは、
匿名の内部クラスとかで作ったりはしなくなっちゃったの?
俺の知っている匿名内部クラスをリスナーにするというのは、廃れた古いやりかた?

あるいは1.5や1.6では、EventHandler より、もっと便利な物とか出ていたりする?

それとも今は、もうその辺りはあんまり気にせず、
IDE とかで生成させるにまかせるのが主流?

教えて、偉い人。
807デフォルトの名無しさん:2007/11/05(月) 11:34:28
俺も調べているような状況だけど、NetBeans6を見る限り、EventHandlerが主流になるような感じだね
Swingのパーツもガンガン作れるし、イベント定義まではIDEがザクザクつくって行くのが主流になりそうな感じ
まだ不安定だけど、6のβ2で試すといいよ
808デフォルトの名無しさん:2007/11/05(月) 13:38:57
>>802
>もしかして1ナノまで正確にあってないといけないメソッドかと思ってるのか?

>>792
>ナノ秒必要なの (正確に測れるの)
           ~~~~~~~~~~~~~~~~
809デフォルトの名無しさん:2007/11/05(月) 13:58:53
>>802
そりゃ使ってるってだけであって、その精度が保障されてて必須ってわけじゃないだろう。
ゲームごときと交換機を一緒にするなよ。
810デフォルトの名無しさん:2007/11/05(月) 14:11:53
>>806
それなんてデリゲート?
811デフォルトの名無しさん:2007/11/05(月) 14:40:01
くっくっくっくくえすちょん
812デフォルトの名無しさん:2007/11/05(月) 14:48:47
最近Javaはじめたのですが、抽象メソッド・クラスというものがよくわかりません。
なぜわざわざ抽象化する必要があるのか、どういう場面で使うのかがよくわかりません。
調べてもたいていabstractの書き方とかしかのってなくて・・・
813デフォルトの名無しさん:2007/11/05(月) 14:55:47
>>812
インターフェイスとは何か?
それはどのような場面でどのような意図で使われるか?
その辺りを調べていくと、抽象メソッド・クラスの意味も解ってくるはず。
814デフォルトの名無しさん:2007/11/05(月) 15:14:20
>>812
スーパークラス/サブクラスを自力で設計する必要が出てくれば自ずと分かる。
815デフォルトの名無しさん:2007/11/05(月) 15:19:16
>>812
オブジェクト指向に関係する概念だが、オブジェクト指向関連の解釈や説明は人の数だけあるので、
多態性(ポリモーフィズム)でググって理解してくれ。
816812:2007/11/05(月) 15:38:13
>>813
黙れゆとり
817812:2007/11/05(月) 15:38:59
>>814
なにを偉そうにw
818デフォルトの名無しさん:2007/11/05(月) 15:44:32
>>816-817
本当に812だとすれば、敵意に値するよ。
つまり、死ねってことさ。
819デフォルトの名無しさん:2007/11/05(月) 15:47:46
>本当に812だとすれば、敵意に値するよ。

っておかしくね?w
820812:2007/11/05(月) 15:50:35
>>813-815
レスどうもありがとうございます。
教えていただいた語句を元に検索したところよさそうなサイトが見つかりました。
ttp://www.nextindex.net/java/index.html
interfaceから多態性までのっているみたいなので、
まだ読んでいませんが今から期待しつつ読んできます。

>>816-817は当然偽者ですのでお気になさらず・・・
というかこの板IDでないんですね。
821812:2007/11/05(月) 15:52:07
>>820
騙りはやめて
822デフォルトの名無しさん:2007/11/05(月) 15:53:17
>>820
おまえ、結局そのアフィサイトを宣伝したかっただけだろ。
それが目的なんだろ。バレバレなんだよカス。
通報しました。
823デフォルトの名無しさん:2007/11/05(月) 15:54:36
IDでない板で調子乗って荒らしてると規制されるよ
824デフォルトの名無しさん:2007/11/05(月) 15:56:38
ID出ない板で調子乗ってアフィ宣伝してると規制されるよ
825デフォルトの名無しさん:2007/11/05(月) 15:58:43
>>822
よく見抜いたな
826デフォルトの名無しさん:2007/11/05(月) 15:59:18
>>822
お前ひねくれてんなw
別にクリックしなきゃいいじゃんよ
ていうか誰も気にもとめないし
アメリカ人がjapは他人が儲けることが気に入らない国民性って言ってたが
そのレスみてまさにその通りだと思った
827デフォルトの名無しさん:2007/11/05(月) 16:02:20
管理人必死だなw
828デフォルトの名無しさん:2007/11/05(月) 16:03:46
もう俺が悪いって事でいいから喧嘩はやめろ。
829デフォルトの名無しさん:2007/11/05(月) 16:30:37
>>828
いいんちょ乙。
830デフォルトの名無しさん:2007/11/05(月) 16:38:53
俺のサイトとnextindexが同じIPだということに気付いた
831791: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の宣言も考えましたが、途中でプログラムを終了してしまうと、データが消えたままになってしまいます。
なにか良い解決策はないでしょうか?
832デフォルトの名無しさん:2007/11/05(月) 18:53:28
とりあえず 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に保存するやり方か、
分かり易い説明のあるサイトを教えて下さい。
834デフォルトの名無しさん:2007/11/05(月) 18:57:44
>>831
ファイルを出力用に開くのは本当に出力を行う直前にせれよ。
実行した段階で、とかプログラムの途中で、とか意味わかんねーところで開くなよ。
835791: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の中身が
消えたままになってしまうため、行いませんでした。

なにか解決策はないでしょうか?
836デフォルトの名無しさん:2007/11/05(月) 19:21:46
>連続で宣言すると、save.txtの中身が消えてしまい、データの読み込みを行う事ができません。
そのやり方は間違い。
>ボタンアクション内でAを宣言して解決しようと考えたのですが
そのやり方が正しい。
>outのシンボルが見つけられませんと表示されました。
お前さんの書いたコードのバグが原因。ちゃんと書け。
>プログラムの途中で宣言しようと思ったのですが
思うな。ボタンアクション内でAを書け。その上でバグを潰せ。
837デフォルトの名無しさん:2007/11/05(月) 19:28:05
>new FileOutputStream("save.txt")

これを実行した瞬間に、save.txt の内容は消去される (これから新しい内容を書き込む準備のために)。

終了時に書き込むのなら、そのときに初めて FileOutputStream を作れ。
前もってあらかじめ作成しておくのは間違い。
838デフォルトの名無しさん:2007/11/05(月) 19:36:55
サーブレットを書き直すとトムキャットの再起動が必要ですが
クラスファイルの場合も絶対必要なのですか?
839デフォルトの名無しさん:2007/11/05(月) 19:38:35
>>838
はい
840838:2007/11/05(月) 20:04:46
>>839 ありがとうございました。もやもやがはっきりしました。
本にはサーブレットは書いてあるんです。クラスファイルはどうかな?
とおもいまして。よくわかりました。
841791:2007/11/05(月) 20:12:05
今、連続投稿してるのに気づきましたorz 専ブラが落ちてしまって、書き込めてないと思い再度書き込んでしまいました。
大変申し訳ありませんでした。

>>832
ObjectOutputStreamについて、今始めて知りました。これから調べてみます。

>>834 >>837
解りました。自分も、なるべく直前にファイルを開きたいと思っているので、プログラム途中で開かないようにします。

>>836
バグの内容ですが、今一度コンパイルしてみた結果、どうやら、catchの条件に問題があるようです。
なんとかバグを潰してみます。
842デフォルトの名無しさん:2007/11/05(月) 20:19:36
アプリケーションに同梱しているJRE(Sun JRE6u3, 70MBもある)から
不用なファイルを取り除いてダイエットさせようと思うのですが、
どういった手法を取るのが簡単でしょうか。
843デフォルトの名無しさん:2007/11/05(月) 20:27:14
>>833
画面からの入力ってのは何を意図しているか不明。
単純にJavaのオブジェクトからXMLを出力するライブラリであればBetwixとか
最近は標準ライブラリにもあるんだっけ?
844デフォルトの名無しさん:2007/11/05(月) 20:30:31
>>841
ObjectOutputStream とかのサンプルを作ってみた。
間違いとかあっても知らんけど俺の環境では動いた。

http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/70.java
845デフォルトの名無しさん:2007/11/05(月) 20:31:57
>>843
すみません。
Strutsを利用したサーブレットからです。

入力結果をxmlに出力したいです
846デフォルトの名無しさん:2007/11/05(月) 21:28:54
一番簡単なのは out.print で繋げちゃう方法じゃないの?w
847デフォルトの名無しさん:2007/11/05(月) 21:34:31
シリアライズは本当はめんどいから、必要なければやめるのが無難
ファイルに新規データを上書きする前に、動かすかコピーして元のファイルの内容はとっておくのが普通
抽象クラスは、詳細が全体に依存するという、オブジェクト指向プログラミングと
構造的プログラミングの根本的な差異を生み出す重要な役目を果たす
848デフォルトの名無しさん:2007/11/05(月) 21:55:15
さらに言うと、このような伝家の宝刀を効果的に使うには、
必要のないところでは、無駄に抽象クラスなどは使わないこと

必要かどうかの判断は、その問題のドメインに対する知識が有効だが、
とりあえずシンプルに作っておいて実際に必要になってから抽象化するといった、
アジャイル的な開発手法が有効と思われ
また、テストの記述にて生じる抽象化は適切なことが多いらしいので、
テスト駆動開発が有効らしいヨ
849デフォルトの名無しさん:2007/11/05(月) 22:02:10

尻まで読んだ
850デフォルトの名無しさん:2007/11/05(月) 22:20:19
詳細が全体に依存する←何?
オブジェクト指向プログラミングと構造的プログラミングの根本的な差異を生み出す←生み出してどうする?
伝家の宝刀←プログラムに切り札があるの?
その他はもっとわからん
851デフォルトの名無しさん:2007/11/06(火) 00:11:38
プログラムに切り札はあるだろ、常考
852デフォルトの名無しさん:2007/11/06(火) 00:12:31
万能の切り札はないけどね。
853デフォルトの名無しさん:2007/11/06(火) 00:21:20
切り札(笑)
854デフォルトの名無しさん:2007/11/06(火) 00:42:24
ドコモの切り札905i
855デフォルトの名無しさん:2007/11/06(火) 01:47:51
初歩的なんですがファイルからXML文章読み込んでDOM木を作って
そのノードを探索するってことしたいんですが
ファイルの読み込み部分でうまくいかなくて・・・

実行時 java 実行ファイル名 読み込みファイル名.xml 
としたいんですが 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document doc = parser.parse(args[0]);
・・・・
の開始じゃまずいですか?
856デフォルトの名無しさん:2007/11/06(火) 02:56:02
最近、アジ演説が増えたな。
857デフォルトの名無しさん:2007/11/06(火) 03:03:23
アジ演説の意味分かって言ってんのかと。
858デフォルトの名無しさん:2007/11/06(火) 03:24:02
>>850
構造化プログラミングでは、詳細なメソッドを順に積み上げていくことにより全体を構築する。
つまり、全体をあらわすロジックは、これらの詳細なメソッドに依存していることを意味する。
したがって、これらの詳細なメソッドを変更すると、全体のロジックに影響を及ぼす。

一方、オブジェクト指向プログラミングでは、詳細なクラス・メソッドを抽象化することで、
全体のロジックをこれらの詳細に依存せずに記述することができる。
これらの抽象クラスの所有権は全体のロジックの方であり、
むしろ、これらの実装の方が全体に依存することになる。

これにより、ソフトウェア開発のテーマの1つに挙げられるオープンクローズドを達成することができる。
これは、拡張に対して開いていて(拡張可能であり)、
修正に対して閉じている(拡張する場合でも修正する必要がない)ということを表す。
要するに、全体のロジックはそのままで、実装を入れ替えるだけで機能を拡張できる。

ただし、抽象化を行うと当然、それだけ分かりにくくなりコードの量も増え、保守のコストが増える。
一方、全ての拡張変更に対してオープンクローズドを満たすは無理。
したがって、どこを抽象化するかが問題になる。
その手がかりとして、問題領域に対する専門的な知識や、アジャイル的な開発、
テスト駆動による開発が挙げられる。

という眠れない夜の話
859デフォルトの名無しさん:2007/11/06(火) 04:04:34
ほ〜、概念を文字で表すと言うのは難しいことなんだな。
ここはひとつ、比喩によるアプローチを試みてみようと思う。

構造化プログラミングを>>860とおけば、さしずめオブジェクト
指向プログラミングは>>861である。

うむ我ながらうまいたとえだ。
860デフォルトの名無しさん:2007/11/06(火) 05:00:05
くっくっくっくっくえすちょん
疑問珍問
861デフォルトの名無しさん:2007/11/06(火) 05:53:48
>>855
> 実行時 java 実行ファイル名 読み込みファイル名.xml 
これでやるなら
Document doc = parser.parse(new File("読み込みファイル名.xml"));
引数にStringを渡すときはURI指定。
862デフォルトの名無しさん:2007/11/06(火) 12:05:09
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;
}
}
こんな感じで構造体?を宣言しておいて(続きます)
863デフォルトの名無しさん:2007/11/06(火) 12:05:50
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());
直接アクセスする場合も、セッターを使う場合も、そのコードの行で止まってしまい、次の行にいきません。
よろしくお願いします><
864デフォルトの名無しさん:2007/11/06(火) 12:47:11
止まるってどういう事?
例外が出るって事?
865デフォルトの名無しさん:2007/11/06(火) 12:50:29
うるせーよゆとり
866862 :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;をコメントアウトすると、正常終了(想定どおりの終了)します。

867デフォルトの名無しさん:2007/11/06(火) 13:10:39
>>866
どうせ、他の部分でぶっとんでんだろw
エクリプスなら、デバッガ使ってトレース汁。
868862 :2007/11/06(火) 13:13:53
>>867
たとえそうだったとしても
lsd[pos].schedule = schedule;
の部分をコメントアウトすると動くのに、有効にすると次の行のコードを実行せずに終了するってのはここがおかしいと
思うのですが。。。
869デフォルトの名無しさん:2007/11/06(火) 13:15:14
>>868
posの値ぐらいチェックしてるんだろうな
870862 :2007/11/06(火) 13:33:19
pos=0で初期化、直前でprint出力しても0で表示されます。
871デフォルトの名無しさん:2007/11/06(火) 13:34:59
lsd[pos] = new ListScheduleData();
872デフォルトの名無しさん:2007/11/06(火) 13:39:43
>>870
じゃあscheduleが不定なんだろ
873862 :2007/11/06(火) 13:42:12
>>871
それはいったい。。。?

>>872
schduleってローカルのほうですか?そっちなら、ちゃんと文字列入ってます。
クラスで宣言しているほうのscheduleは初期値でnullとかいれないといけないんでしょうか?
874デフォルトの名無しさん:2007/11/06(火) 13:58:47
lsd[pos] = new ListScheduleData();
lsd[pos].schedule = schedule;
875デフォルトの名無しさん:2007/11/06(火) 14:05:17
それはいったいじゃねー
配列の各要素のインスタンスを作れ
空の配列にアクセスして怒ってんじゃねーよw
876デフォルトの名無しさん:2007/11/06(火) 15:40:23
AVL木のノードを削除した後、その後のバランスの取り直し方は、
どのようにすればいいのでしょうか?
助けてください…
挿入時の、回転によるバランスの取り方は理解でき、コードを書くことができました。
877デフォルトの名無しさん:2007/11/06(火) 16:02:24
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側にプログラムを作成したい場合どのようにしたらよいでしょうか??
879デフォルトの名無しさん:2007/11/06(火) 16:19:28
なぜUTF-8で送らないのかと
880877:2007/11/06(火) 16:20:34
getAttributeからIntegerにキャストしたらとれました。
881デフォルトの名無しさん:2007/11/06(火) 16:23:19
>>877
int value = ((Number)session.getAttribute(name)).intValue();

>>878
Writer out = new FileWriter("filename");
 ↓
Writer out = new OutputStreamWriter(new FileOutputStream("filename"), "MS932");
882デフォルトの名無しさん:2007/11/06(火) 16:38:49
>>874
>>875
解決しました。
オブジェクト型はメモリ確保後に、配列ごとにインスタンス化しないといけないのですね。
勉強になりました。ありがとうございます。
883デフォルトの名無しさん:2007/11/06(火) 19:04:37
インスタンス化って言い方は普通に使うのかな。
インスタンスを作成する、とか実体化するとかはすんなり解るけど。
884デフォルトの名無しさん:2007/11/06(火) 19:33:25
インスタンス化 の検索結果 約 118,000 件
885デフォルトの名無しさん:2007/11/06(火) 20:23:03
インスタンスラーメン の検索結果 約 1,670 件
886デフォルトの名無しさん:2007/11/06(火) 20:29:11
イスンタンスの検索結果 4 件中 1 - 4 件目 (0.15 秒)
インタンス の検索結果 約 984 件中 1 - 100 件目 (0.36 秒)
887デフォルトの名無しさん:2007/11/06(火) 20:53:29
コンパイルして、
srcフォルダ以下の複数のパッケージにまたがる
javaファイルをclassフォルダ以下にクラスファイルを作成したいと思い、
次のようなコマンドを実行したのですが、うまくいきませんでした。

javac -d .\class -sourcepath src

どうしたらコンパイルできるようになりますか?

Testフォルダの下にsrcとclassフォルダがあり、
Testに移動してから、上記のコマンドを実行しております。

ご教授お願いいたします。
888デフォルトの名無しさん:2007/11/06(火) 22:10:52
classファイルからjavaファイルに変換できないようにできますか?
889デフォルトの名無しさん:2007/11/06(火) 22:15:57
>>888
理論的には出来ないが、難読化ツールをかませば復元したコードをかなり読みづらくはさせられる。
890デフォルトの名無しさん:2007/11/06(火) 22:51:29
HttpServletResponseクラスをどうにかシリアライズし、DBに格納できるようにしたいのですが、
どうもデフォルトコンストラクタがなくてはできないようで・・
HttpServletResponseWrapperでデフォルトコンストラクタを作ってもsuper()を呼び出すようで
うまくいきません。
どうすればHttpServletResponseをDBに格納できますか?
891デフォルトの名無しさん:2007/11/06(火) 23:01:05
>>888
プラットフォームを限定するならクラスファイルを暗号化して
JNIで実装した復号用の独自クラスローダで呼び出すとか

参考?
http://web.archive.org/web/20060715231148/http://www-06.ibm.com/jp/developerworks/java/041217/j_j-onejar.html
892デフォルトの名無しさん:2007/11/06(火) 23:01:43
>>890
HttpServletResponse はレスポンスデータを送信するための機能のクラスなので保存できませんし
保存する意味もありません。

やりたいのは出力結果をデータベースに保存したいということだと思うのだが、出力内容をメモリ上にも
保持する出力ストリームクラスと、その内容を DB に保存するフィルタクラスとレスポンスクラスを作れば
何とかなるんじゃないか。
893デフォルトの名無しさん:2007/11/06(火) 23:20:53
クラスが初期化されるタイミングって決まってるんでしょうか?
例えばフィールドに値が代入されるタイミングとか。
クラスがロードされた時点ではフィールドに値が入ってないようなので。
894デフォルトの名無しさん:2007/11/06(火) 23:31:46
クラス変数が初期化されるタイミングはクラスのロード時。
インスタンス変数が初期化されるタイミングはインスタンス生成時。
895デフォルトの名無しさん:2007/11/06(火) 23:33:28
>>892
実はTomcatでAjaxなプログラムを作っていまして、その際にResponseを配列に
格納しているのですが擬似的なコネクションの情報を一時的にDBに格納し、取り出せる
ようにしたいのです。

なので、レスポンスを返すための情報をあらかじめ取り出し、新しくレスポン
スを作ればいいでしょうが、どうにもこのインターフェイスには単独でnew
するためのコンストラクタもなく、またどういったフィールドが接続相手の情報
を保持しているのかも分からない状態で・・

良い案がありましたら教えてください。
896デフォルトの名無しさん:2007/11/06(火) 23:38:16
>>895
サーバから任意のタイミングでデータを送り付けたいのなら無理だ。
HTTP を勉強しろ。
897デフォルトの名無しさん:2007/11/06(火) 23:44:56
>>896
いえ、その点につきましてはもう解決済みです。具体的にはtomcat6から実装
されたCometを利用してデータの送信には成功しています。

しかし、複数のサーブレットからデータを送るにはやはりDBにコネクションの
情報を格納したいので、どうにかなる方法はないかな?というのが今回の相談です。
898デフォルトの名無しさん:2007/11/07(水) 00:02:49
現状と問題点と目的
もうちょっと話をまとめてから相談しないと分からないよ
899デフォルトの名無しさん:2007/11/07(水) 00:12:11
サーブレットまたいでレスポンスを共有したいなんて事は無理。
設計しなおせ。
900デフォルトの名無しさん:2007/11/07(水) 00:18:03
>>895
Filter
901デフォルトの名無しさん:2007/11/07(水) 00:42:37
どうでも良いけどブラウザが同一サイトに使える TCP/IP 接続って 2 つまでなんだけど、
COMET ってそのうちの一本を占有しちゃうから、同一プロセスで別ウィンドウ立ち上げて
COMET 使ったり、ファイルダウンロードしたりするともうブラウザが通信できなくなっちゃうのよな。

そのへんちゃんと分かってて使ってるのかな。
902デフォルトの名無しさん:2007/11/07(水) 01:20:32
>>901
分かってないんだろうな。



てか、分かってなかったので今DNSを立ててます。
ホスト名大量生産・・・
903デフォルトの名無しさん:2007/11/07(水) 01:30:01
やべぇww

何がしたいのかすら理解できねぇwwww

俺\(^o^)/オワタ
904デフォルトの名無しさん:2007/11/07(水) 01:43:10
とりあえず

擬似コネクションをDBに
 ->あきらめた。メモリ好きなだけ食ってくれ。
同一ドメインに対しての制限(TCP/IP接続)
 ->XXX.hoge.fuga.jp (XXXはサーブレット名とか?)のようなアドレスを大量に。
  あとはIframeで飛んでどうにか。。。
ということにしました。

こんな未熟者に付き合っていただき本当にありがとうございました。
905デフォルトの名無しさん:2007/11/07(水) 03:39:54
配列の中から偶数と奇数の個数を表示する方法を教えてください

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] );
}
}

↑でどこがちがうのでしょうか?
906デフォルトの名無しさん:2007/11/07(水) 04:00:45
i>8
907デフォルトの名無しさん:2007/11/07(水) 07:55:09
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] );
}
908デフォルトの名無しさん:2007/11/07(水) 07:57:41
↑参考までに。最後の}はコピペ失敗の余分だから消しておくれ。
909デフォルトの名無しさん:2007/11/07(水) 09:04:33
質問です。
B木をinorderで巡回するためのアルゴリズムを教えてください。
910デフォルトの名無しさん:2007/11/07(水) 09:05:55
変数名とクラス名が気持ち悪い…というのはさておき、そのコードにはバグがある。
偶数・奇数は補集合なのだから、偶数をカウントして残りを奇数とすべき。
911デフォルトの名無しさん:2007/11/07(水) 09:52:26
a[Math.abs(dt[i] % 2)]++;
かな。if文取ろうと思ったんだが、abs呼び出し分損するなあ。
912デフォルトの名無しさん:2007/11/07(水) 10:27:23
1と論理積
913デフォルトの名無しさん:2007/11/07(水) 10:41:48
暇なんでいじってたらこんなんなりました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] +"個");
}
914デフォルトの名無しさん:2007/11/07(水) 14:44:48
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] );
}
915デフォルトの名無しさん:2007/11/07(水) 15:19:19
インデントしろカス
916デフォルトの名無しさん:2007/11/07(水) 15:23:02
半角打てないから全角で誤魔化してインデントしたりもするけど
馬鹿がコピペして動きませんとかいいそうで最近はあんまやってないなあ
917デフォルトの名無しさん:2007/11/07(水) 15:24:38
>>915
なんだこいつ?
918デフォルトの名無しさん:2007/11/07(水) 15:32:45
誰が入れ歯だ
919デフォルトの名無しさん:2007/11/07(水) 15:37:32
知ってるとは思うけど
タブ文字と、2つ以上連続した半角スペースの2つ目以降は
2ちゃんねるでは表示されない(というか無かった事にされる)
全角スペースが混じっているとコンパイルエラーの元
なのでインデント無しが無難
920デフォルトの名無しさん:2007/11/07(水) 15:39:30
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);
}
}
921デフォルトの名無しさん:2007/11/07(水) 15:39:54
コピペして動きませんなんてのはバカでも回答できるから大丈夫だろ。
922デフォルトの名無しさん:2007/11/07(水) 15:54:37
変に全角でインデントとか入れられると、コピペして変換しなきゃならん。
そのままベタでうpの方が楽。
見づらかったらオートインデントすりゃいいし、この程度の長さなら別に見にくくはないだろ。
923デフォルトの名無しさん:2007/11/07(水) 15:55:25
躓いたのでお助けください
参考書等を見ながら作ったのですが、
点が画面端まで行って困ってます。
どこを変えれば途中で動きを止めれるのでしょうか?
例えば、10上に動かしたら繰り返すです。

作ったソース→http://www12.axfc.net/uploader/93/so/File_2396.txt.html

924デフォルトの名無しさん:2007/11/07(水) 15:58:13
netbeansをで開発するときもpathの設定はしないといとできませんか?
925デフォルトの名無しさん:2007/11/07(水) 16:01:32
>>923
スレッドの悪い使い方の見本だな
まぁいいけど

例えば、10上に動かしたら繰り返す場合、単純に考えて
 a.y = a.y - 3;

 a.y = a.y - 3;
 if (a.y <= 135) {
  a.y = 145;
 }
にすればいいんじゃないかと思う
926デフォルトの名無しさん:2007/11/07(水) 16:15:44
前にゲ制作技術の方でも見かけたけど、動かすオブジェクト毎にスレッド作るのって有名なサイトか何処かに載ってるのか?
どう考えても普通やらないと思うんだが。
927デフォルトの名無しさん:2007/11/07(水) 16:30:09
>>925
ありがとうございます。
これで先に進めそうです。
928デフォルトの名無しさん:2007/11/07(水) 16:32:00
>>926
動かすオブジェクトごとにスレッド作る必要ないって趣旨なのに
イベントディスパッチスレッドがどうとかシングルスレッドじゃないとか
関係ないところで絡んできた奴がいたので話が進んでいません
929デフォルトの名無しさん:2007/11/07(水) 16:50:10
つか、お前誰だよw
質問者ならちゃんとレス番を名前にいれろやw
930デフォルトの名無しさん:2007/11/07(水) 17:26:13
>>918
そらポリデントやがな。
931デフォルトの名無しさん:2007/11/07(水) 18:02:16
>>920
if文つかってるじゃんw普通すぎw
932デフォルトの名無しさん:2007/11/07(水) 18:08:13
>>928
シングルスレッドって言ってみたかったバカが約一名居ただけ。
933デフォルトの名無しさん:2007/11/07(水) 18:10:02
揚げ足取りがすきだねぇ
934デフォルトの名無しさん:2007/11/07(水) 18:10:19
ポリデントじゃないのかw
935デフォルトの名無しさん:2007/11/07(水) 18:11:32
タフデントなんじゃね?
936デフォルトの名無しさん:2007/11/07(水) 18:13:18
どこかのホームページでクラスは1クラス名と同じ名前のファイルに一つだけってみたのだけど
2つ以上あるとなにか不都合でもあるんですか?
937デフォルトの名無しさん:2007/11/07(水) 18:14:37
イソジンを忘れちゃ困るぜwっっw
938デフォルトの名無しさん:2007/11/07(水) 18:15:06
>>936
不都合というかそういう仕様
939デフォルトの名無しさん:2007/11/07(水) 18:15:21
スレッドが一つでいいかどうかなんて設計によりけりじゃん。
いちいち描画のタイミングで条件判定やらデータロードやらしてたらカクカクゲームになるんじゃないのか。
940デフォルトの名無しさん:2007/11/07(水) 18:15:33
>>936
ねーよ、管理しっかりすればな。
941デフォルトの名無しさん:2007/11/07(水) 18:22:57
初心者に対して不正確な回答するなボケ。
942デフォルトの名無しさん:2007/11/07(水) 18:23:14
なんかシングルスレッド君にすっげー根に持たれてるみたいなんすけどw
943デフォルトの名無しさん:2007/11/07(水) 18:24:57
シングルスレッド君って誰?
944デフォルトの名無しさん:2007/11/07(水) 18:26:10
945デフォルトの名無しさん:2007/11/07(水) 18:26:36
不正確な回答をするなと言っておきながら正確な回答を出さない人ってなんだろうね
946デフォルトの名無しさん:2007/11/07(水) 18:28:16
>>941
不正確ってどこが?
947デフォルトの名無しさん:2007/11/07(水) 18:31:24
>>941 のレス先が >>940 なのか >>938 なのか気になる
948デフォルトの名無しさん:2007/11/07(水) 18:34:22
>>938は不正確。
1ファイル1クラスという制限は、
public修飾子が宣言されている場合に限定される。
949938:2007/11/07(水) 18:35:56
どうせオレなんだろうけど>>936な認識の奴にpublicクラス以外ならいくつ書いてもOKとか書いて意味あるのか?
950デフォルトの名無しさん:2007/11/07(水) 18:38:11
今日の悪役は938になりますた。頑張ってください。
951デフォルトの名無しさん:2007/11/07(水) 18:40:27
>>949
本気で知らなかった以外で 「仕様」 と断言してしてしまうわけはないと思うんだが。
952デフォルトの名無しさん:2007/11/07(水) 18:41:29
モジュロ演算子( % )って、負数の場合は負数の余りが返るんだな。
doubleの場合とかどうなるんだろ、使わんから解らんw
953デフォルトの名無しさん:2007/11/07(水) 18:43:26
>>952
実数の割り算での余りとはなんぞや?
954デフォルトの名無しさん:2007/11/07(水) 18:45:44
うん、それが解らんからな。有効数字で切ったりするんかな。
955デフォルトの名無しさん:2007/11/07(水) 18:46:15
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
956デフォルトの名無しさん:2007/11/07(水) 18:48:49
fmod
957デフォルトの名無しさん:2007/11/07(水) 19:33:01
http://www.techscore.com/tech/DesignPattern/Bridge.html
このホームページのソースコード間違ってませんか?
例えば7番目と8番目のソースコードは継承してないし
2番目と3番目はabstractがついているのはおかしいと思います。
それか自分がまちがってるのか自信がありません。
教えてください。
958デフォルトの名無しさん:2007/11/07(水) 20:30:15
Web上の書いてあるだけのソースは大概間違ってますよ
デバッグぐらいしたらいいのにといつも思います
仕事が少なくて暇で転職考えてるような人が書いてるでしょうからそれなりの
ものしかないってことでしょうね
959デフォルトの名無しさん:2007/11/07(水) 20:44:29
解説に使うソースなんて要点示すためにいらんところ削除してるだろ。
まんまで実用性求めてる奴なんているのか?
960デフォルトの名無しさん:2007/11/07(水) 21:01:36
957があってるかあってないかが聞きたいのだけど
961デフォルトの名無しさん:2007/11/07(水) 21:04:55
すみません、プログラムのことがまったく解らないど素人なのですが、
どこで質問していいか、それすらわからないまま、ここにたどり着きました。
技術的な事なのですが、

http://web.archive.org/web/20070612135614/hinan.ekd.ne.jp/atopi/subback.html

ここのスレッド一覧の
http://web.archive.org/web/20070612135614/http://hinan.ekd.ne.jp/test/read.cgi/atopi/1073982368/l50
にアクセスすると、
http://web.archive.org/web/20050310194910/hinan.ekd.ne.jp/test/read.cgi/atopi/1073982368/l50
転送されます。つまり、
2007年6月12日のアーカイブにアクセスしても
2005年3月10日に取得されたアーカイブ転送。


http://web.archive.org/web/20060301214747/http://hinan.ekd.ne.jp/atopi/subback.html
ここのスレッド一覧の
http://web.archive.org/web/20060301214747/http://hinan.ekd.ne.jp/test/read.cgi/atopi/1073982368/l50
にアクセスすると
http://web.archive.org/web/20050310194910/hinan.ekd.ne.jp/test/read.cgi/atopi/1073982368/l50
に転送されます。

2006年3月12日のアーカイブにアクセスしても
2005年3月10日のアーカイブに転送。
962デフォルトの名無しさん:2007/11/07(水) 21:06:52
このような、自動的に転送するプログラムというのは
WayBack archiveのサーバーに取り付けするのでしょうか?
それとも他のサーバーから転送させることができるのでしょうか?
963デフォルトの名無しさん:2007/11/07(水) 21:12:03
すいません、JAVAの超初心者です。

例えば12345678という数字があります。
これを 1234 5678 にするにはどうすればいいんでしょうか。 (一つのブロック最高4つの数です)

どうかよろしくお願いします。
964デフォルトの名無しさん:2007/11/07(水) 21:16:11
>>963
ベントラーベントラー
965デフォルトの名無しさん:2007/11/07(水) 21:17:49
>>964
レスありがとうございます。ベントラーって一体なんでしょうか^^;
966デフォルトの名無しさん:2007/11/07(水) 21:28:43
>>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);
}
です
967デフォルトの名無しさん:2007/11/07(水) 21:34:17
AクラスがあってBクラスとCクラスがAクラスを継承していたら
3つファイルがいりますよね?
968デフォルトの名無しさん:2007/11/07(水) 21:39:33
>>966
中途半端な桁はどうするの? あと、途中で零が挟まってる場合とか

12345054321
→ 12345  5432  1 ?
→ 12345  54321 ?
→ 1  23450  54321 ?
969デフォルトの名無しさん:2007/11/07(水) 21:41:16
>>967
public なクラスは 1 個ごとに 1 つファイルが必要
public でないクラスは他のクラスと同じファイルに入れられる
970デフォルトの名無しさん:2007/11/07(水) 21:42:32
>>968
レスありがとうございます。中途半端な桁はそのままでいいです。
12345054321
→ 12345 5432 1

どうかよろしくお願いします。
971デフォルトの名無しさん:2007/11/07(水) 21:44:02
>>968
あ、すいません、0を含む場合は
12345054321
→ 12345 05432 1
です^^;

972デフォルトの名無しさん:2007/11/07(水) 21:44:54
>>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 のソースでも読め。
973デフォルトの名無しさん:2007/11/07(水) 21:47:14
>>972
どうもありがとうございます。
974デフォルトの名無しさん:2007/11/07(水) 21:56:00
2chにソースをコピペするとインデントが無くなる。不便
975デフォルトの名無しさん:2007/11/07(水) 22:25:48
全角のインデントなんかつけんじゃねーよカスがw
976デフォルトの名無しさん:2007/11/07(水) 22:29:11
>>974
そーっすか?
977デフォルトの名無しさん:2007/11/07(水) 22:29:18
コピペ厨乙
978デフォルトの名無しさん:2007/11/07(水) 22:29:43
>>975
調子にのるなゆとり
979デフォルトの名無しさん:2007/11/07(水) 22:31:57
何が事件だ
980デフォルトの名無しさん:2007/11/07(水) 22:33:34
>>978
うは、ゆとりときたかw
981デフォルトの名無しさん:2007/11/07(水) 22:39:50
次スレ
【初心者】Java質問・相談スレッド108【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1194442749/
982デフォルトの名無しさん:2007/11/07(水) 22:40:04
ThreadLocalを使用してクラスAとクラスBで同じオブジェクトを参照するような処理を書く場合、
クラスAのメソッドでThreadLocalをnewして、setを読んだ後クラスBでどうやってこれを参照すればよいのですか?
983デフォルトの名無しさん:2007/11/07(水) 22:45:36
>>982
ThreadLocal を使用しないでクラスAとクラスBで同じオブジェクトを参照する場合と同様にやればよい

ThreadLocal を何か勘違いしてないか?
984デフォルトの名無しさん:2007/11/07(水) 22:49:50
>>982
クラス A に ThreadLocal に入れる値の getter 付ければ良いじゃん。
あと ThreadLocal はメソッド内で new するもんじゃない。

class A{
  private static final ThreadLocal tl = new ThreadLocal();
  public static Object getObject(){ return tl.get(); }
}
985デフォルトの名無しさん:2007/11/07(水) 22:51:38
スーパークラスAに抽象メソッドがないときに、サブクラスB、Cで抽象メソッドをオーバーライド
してオブジェクトAにオブジェクトBかCを代入するとどうなりますか?
986デフォルトの名無しさん:2007/11/07(水) 22:53:13
>>985
> 抽象メソッドがないときに
> 抽象メソッドをオーバーライドして

ないメソッドはオーバーライドできません。
987デフォルトの名無しさん:2007/11/07(水) 22:58:50
>>985
たぶん同名のメソッドを定義した場合ってことだろうけど、基底のメソッドがprivateだとしたら、
名前が同じなだけの、全く別のメソッドとして扱われるだろうよ。
もしprotected以上ならfinalなせいで同名のメソッドは定義できない。
988デフォルトの名無しさん:2007/11/07(水) 23:05:18
Jakarta Commons の FileUpload って、ひょっとして受信中に例外発生したら
GC まで未完成のファイルを削除できないというウンコ設計?

ソース読んだ限りでは parseRequest() 内で例外発生すると明示的に削除する
術がないみたいなんだけど。
989デフォルトの名無しさん:2007/11/08(木) 00:00:06
んなばかな
990デフォルトの名無しさん:2007/11/08(木) 00:01:19
そこで専ブラのポップアップですよ。
>>920
991デフォルトの名無しさん:2007/11/08(木) 06:21:51
>>988
ファイナライザがなんのためにあるのかと
992デフォルトの名無しさん:2007/11/08(木) 09:02:38
次スレ頼む!
993デフォルトの名無しさん:2007/11/08(木) 09:12:21
PreparedStatementで
select * from hoge where hoge_id = ?

pstmt.setString("hoge");

とした場合、hoge_idがchar(20)の場合、検索結果が0件になります。

pstmt.setString("hoge        ");
といった感じで桁数を合わせてやると正常に検索されます。

CHAR型の場合は、このようにスペースを付加して
桁数を合わせる必要があるのでしょうか?
DBはOracleです。
もっとスマートな方法はあるでしょうか?
994デフォルトの名無しさん:2007/11/08(木) 09:13:32
995デフォルトの名無しさん:2007/11/08(木) 09:16:53
>>993
CHARは固定長文字列の型なので、そういうもんだ
イヤならVARCHAR2を使え
996デフォルトの名無しさん:2007/11/08(木) 10:42:02
>>995
了解です。
997デフォルトの名無しさん:2007/11/08(木) 16:12:52
型変換して内部的にはStringで扱ったほうが楽ジャン
998デフォルトの名無しさん:2007/11/08(木) 16:14:08
次スレ誘導忘れずによろしく
999デフォルトの名無しさん:2007/11/08(木) 16:19:03
次スレ
【初心者】Java質問・相談スレッド108【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1194442749/
1000デフォルトの名無しさん:2007/11/08(木) 16:19:56
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。