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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath

前スレッド
【初心者】Java質問・相談スレッド53【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1094860940/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
2古代帝國富士皇朝総帥・伯壬旭:04/09/30 21:52:38
よくぞ次スレを立てた。
ほめてつかわす。
3デフォルトの名無しさん:04/09/30 21:52:38
2
4デフォルトの名無しさん:04/09/30 21:53:29
惜しかった(。・_・。)
5デフォルトの名無しさん:04/09/30 21:56:02
>>1
超合金乙
6全スレ約1000:04/09/30 21:56:40
惜しかった。
7デフォルトの名無しさん:04/09/30 21:58:17
ま、とりあえず J2SE 5.0 リリース おめでd (ノ ^ ▽ ^ )ノ
ttp://java.sun.com/j2se/1.5.0/download.jsp
8デフォルトの名無しさん:04/09/30 22:08:34
J2SE5だと、こんなコードが可能に、、、。

public String printf(String format, String... args)

なんかいやん。
9デフォルトの名無しさん:04/09/30 23:00:08
速レスだが>>1
10デフォルトの名無しさん:04/09/30 23:42:05
新スレたったばっかりで恐縮ですが質問です。
Jpanelの上にpaintcomponentメソッドで図を描いていて,それをjpgで出力する
メソッドを書いたのですが,実際実行すると非常に画質が悪いものが出力されてしまいます。
例えばある直線を書いてjpgで出力すると直線の周りに微小な斑点がついてたりとかで
とにかく画質が悪いのです。
コードの概略は以下の通りです。
String curDir = "../image";
JFileChooser fileChooser = new JFileChooser(curDir);
fileChooser.setFileFilter(new ImageFileFilter());
int ret = fileChooser.showDialog(content, "選択");
if (ret != JFileChooser.APPROVE_OPTION)
return;
File file = fileChooser.getSelectedFile();
String fileName = file.getAbsolutePath();
File outFile = new File(fileName + ".jpg");

try {
canvas_image.getGraphics().drawImage(cakeImg, 0, 0, this);
ImageIO.write(canvas_image, "jpg", outFile);
} catch (IOException e) {
}
基本的に画質を上げるには,どういう風に修正すれば良いのでしょうか?それとも
根本的なところが間違っているのでしょうか?
11デフォルトの名無しさん:04/09/30 23:45:29
>>10
>例えばある直線を書いてjpgで出力すると直線の周りに微小な斑点がついてたりとかで
>とにかく画質が悪いのです。

普通 jpeg とはそういうものです。
12デフォルトの名無しさん:04/09/30 23:49:58
pngだとキレイだよ
13デフォルトの名無しさん:04/09/30 23:59:31
>>10
アニメ的な色の境目がはっきりしている絵は、pngやgifを使って
写真のような色の境目が滑らかな絵は、jpegを使うとよいですよ
1410:04/10/01 00:09:27
ありがとうございます。確かにpngにすると画質がよくなりました。

ただ,上のコードの
File outFile = new File(fileName + ".jpg");
ImageIO.write(canvas_image, "jpg", outFile);
のjpgをpngにすると綺麗な画像が出力されたのですが、このjpgの部分を
bmpやgifなどの画像用の拡張子へ変えるだけでそれに対応する画像ファイル
が出力されるというのがちょっとしっくりこないのですが,そういうもの
なのですかね?
15デフォルトの名無しさん:04/10/01 00:18:58
>>10
対応形式はプラグインで増えるので
保存形式を文字列で指定するのは妥当かと。

あとImageWriterを取得して使えば
圧縮率とか細かく指定して保存できるはず。
16デフォルトの名無しさん:04/10/01 01:02:10
Javaから呼び出して、実行できるスクリプトは無いですか?
Luaみたいなのでお願いします。
17デフォルトの名無しさん:04/10/01 01:22:04
今日、checkstyleってやつをインストールして、以下のようなクラスでテストしてみました。

public class Test {
public static void main(String[] args) {
・・・
}
public static void aaa() {
・・・
}
}
そしたら、warningで
「スタティックメソッドしかもたないユーティリティクラスは、インスタンス化されないために
publicなデフォルトコンストラクタを持ってはいけないし、クラスはfinalにすべきだ」
って言われたんですけど、そういうもの?
継承したりしちゃいけないの?
18デフォルトの名無しさん:04/10/01 01:24:35
jacl = Java版Tcl
rhino = Java版JavaScript
jython = Java版Python
jruby = Java版Ruby
pnuts = Javaをスクリプト化したもの
groovy = Javaをスクリプト化したもの
19デフォルトの名無しさん:04/10/01 01:27:49
>>17
継承したいならabstract指定すれば?
20デフォルトの名無しさん:04/10/01 01:30:21
>17,19
「スタティックメソッドしか持たない」ユーティリティクラスを
継承したいという場面が思いつかないんだが、どんな場合?
2119:04/10/01 01:35:14
>>20
テストクラスにスタティックイニシャライザを持った基本クラスを置いておくと
main 呼び出し前に自動的に共通の初期化処理が実行されて便利。
22デフォルトの名無しさん:04/10/01 01:51:27
便利だからという理由(>>21の例では便利かどうかもあやしいが)
で継承してるんだったらやめたほうがいいよ。
23デフォルトの名無しさん:04/10/01 02:12:24
>>18
BeanShell を忘れとるがな。他にもいっぱいありそうな予感。
24デフォルトの名無しさん:04/10/01 07:35:36
>>18 >>23
どうもです。
25デフォルトの名無しさん:04/10/01 08:47:01
>>21
それならmainの先頭に、そのユーティリティクラスのスタティック
イニシャライザ部分をメソッドにしたやつを呼び出せばいい訳で。
exteds UtilityClass
public static void main(..) { UtilityClass.initializer();
両方とも同じ一文を追加する事は変わらないから。。。
26デフォルトの名無しさん:04/10/01 08:47:54
それならmainの先頭に、そのユーティリティクラスのスタティック
イニシャライザ部分をメソッドにしたやつを呼び出せばいい訳で。
exteds UtilityClass
public static void main(..) { UtilityClass.initializer();
両方とも一行だけを追加する事には変わらないから。。。
27デフォルトの名無しさん:04/10/01 09:11:58
OpenAMFやFlexなどのFLASHリモーティングに関する
情報って、どっかにありますか?
28デフォルトの名無しさん:04/10/01 09:13:31
iアプリでも動作して、かつ、WinやLinuxでも動くアプリというかバイナリは作れまつか?
29デフォルトの名無しさん:04/10/01 09:30:18
>>18
JPL
Java版Perlを忘れてる
30デフォルトの名無しさん:04/10/01 09:38:34
jdk入れたら、jreは不要でつか?
31デフォルトの名無しさん:04/10/01 09:46:28
>>30
不要。
JDKインストール時にJREもインストールされる。
32デフォルトの名無しさん:04/10/01 09:58:48
J2MEで作れば、全ての環境を制覇できまつか?
33デフォルトの名無しさん:04/10/01 10:00:11
>>32 profileが細かく違うから制覇できない。
34デフォルトの名無しさん:04/10/01 10:09:39
j2meの派生がj2seにしときゃ、制覇できたのにぃ。
S∪∩に抗議しる!
35デフォルトの名無しさん:04/10/01 10:12:03
>>34 いや、そういう問題じゃないから。
36デフォルトの名無しさん:04/10/01 10:14:24
連載記事「スマートなサーバ・サイドJava」は読んでためになりまつか?
37デフォルトの名無しさん:04/10/01 10:19:27
ならない。
3817:04/10/01 13:53:27
>>19-22,25,26
ありがと。
で、
>>22
>便利だからという理由(>>21の例では便利かどうかもあやしいが)
>で継承してるんだったらやめたほうがいいよ。
この「便利かもしんないけど、やめたほうがよい」理由を知りたいというのが、
今回の質問の根本なんです。
できれば、教えてください。

39デフォルトの名無しさん:04/10/01 14:56:19
>>38
クラス設計の根底に関わる問題だからです。
継承を用いる正しい基準に沿わないからと言えるでしょう。
継承は、インスタンスの機能を増やす為にこそ用いられるべきですので
インスタンスの操作が出来ないstaticメソッドonlyクラスでは
その意味が全く無くなるからです。
他にも、集約による多態性を実現する為にだけ継承を用いるのは良くない
など幾つかの制約基準があります。
まだ大きなプログラムを組んでないと、そこら辺の基準のありがたみが
なかなか分からないものですが、しばらくして大きなのを組むように
なり、いろいろクラス設計をしだせば、以前は便利だからとやってた事でも
なんか変な設計で気持ち悪いなって感じでやらなくなるものなのです。
40デフォルトの名無しさん:04/10/01 15:03:29
>>38
「スタティックメソッドしかもたないユーティリティクラスは、インスタンス化されないために
publicなデフォルトコンストラクタを持ってはいけないし、クラスはfinalにすべきだ」
に関してはそうだと思う。
クラスというより、ライブラリの性質をもったモノを作ろうとしてるわけだから
インスタンス化して使うモノとは区別しておいたほうがプログラム構造上わかりやすいということ。
これは、継承クラスの使い方を気をつければ問題ないんだが、継承したクラスのインスタンス化を
禁止する書式がないため、 1.4まででは もし、機能拡張をするのであれば継承せず、
内部で参照(USE)するなりして実現するということで表現することになる。

昨日リリースされた、J2SE5.0ではこの問題を解決する StaticImportという機能が用意されている。
ttp://www5.airnet.ne.jp/sakuraba/java/laboratory/J2SE1.5/LangSpec/StaticImport/StaticImport.html
スタティックメソッド(定数もOK)をインポートする機能です。
チェックしてみては?
4140:04/10/01 15:08:45
>>39
そうそう、そういいたかった。
>>39の言い方だと、 インスタンスに対する操作を拡張したくってするのが継承、
ライブラリの機能を拡張したくってつかうのが StaticImport。で、よろしい?
42デフォルトの名無しさん:04/10/01 15:25:05
Seasar2とSpringの違いって何?
できることとか文法とか、だいたいいっしょみたいなかんじが
するんですが
43sage:04/10/01 15:56:26
CSVをダウンロードするServletについてお聞きしたいことがあります。

Windows2000、IE5 SP3の環境で、

response.setContentType("application/x-csv");
response.setHeader("Content-Disposition", "attachment; fileName=\"" + fileName + "\"");

以上のように設定すると、ダウンロードダイアログで「ファイルを開く」を選択
すると、もう一度、ダウンロードダイアログが表示されます。
(さらに選択すると、正常にファイルが開かれる)

ContentTypeにダミーの文字を入れ、Content-Dispositionをinlineにすれば、こ
の問題は解消されましたが、
WindowsXP SP2の環境で、ダウンロードダイアログが表示されないという現象が
発生しました。

両環境で、一度だけ、ダウンロードダイアログを出したいのですが、良い解決策
があれば教えてください。
44デフォルトの名無しさん:04/10/01 15:56:28
>>20
ええと、マジで良く分からんのだけど、static初期化ブロックのことをいってるんだろうけど、
これってクラスロード時に自動的に呼び出されるんだよねえ? しかもstaticメンバにしか
アクセスできない。

ということは、スーパークラスのstatic初期化ブロックが初期化できるのは、スーパークラス
のstatic変数のみってことだよな。

一方、staticメンバにアクセスする時って、継承していようがなんだろうが、「クラス.staticメンバ」
という形になるよな(staticインポートを使ってないとする)。この段階でクラスがロードされるので、
static初期化ブロックが実行されるよな。

で、継承するとこれより便利になるってのが良く分からないんだけど。おれがバカなのかな。
まじ分からない。
45デフォルトの名無しさん:04/10/01 16:18:59
>>43
content-typeが間違ってる。
text/comma-separated-values
あと、サーブレットコンテナの設定でmimeにあるかどうかも確認。
46デフォルトの名無しさん:04/10/01 16:20:16
>>43
あー、でも>>46のにしちゃうとDLダイアログが出ずにそのまま表示されるかも。
確実にDLダイアログだしたい場合は、
application/octet-stream
47デフォルトの名無しさん:04/10/01 17:46:10
かなりスレ違いな質問ですが、どなたかご教授ください。
Hotmailのメール内URLをクリックすると、そのページに
ちゃんと飛ぶ場合とそのまま開かない場合があります。
開かない場合のURL上にマウスを持っていくと、左下に
「javascript:OpenWin('http:・・・・・・・・」と表示されます。
たぶんこれが原因だと思うのですが、どう操作すれば元通りに
なるのでしょうか?ちなみにyahooのメール内URLはちゃんと
開きます。よろしくお願いします。
48デフォルトの名無しさん:04/10/01 17:51:09
>>47
Javaというキーワードだけで来ちゃったね。
左下にそうでるのは問題ないと思うけど・・・?
ポップアップブロッカーとかが悪さしてない?
4947:04/10/01 18:13:43
早速の回答ありがとうございます!!
たぶんポップアップブロッカーが悪さしてるとは
思えないのですが、つい一昨日ぐらいまでは
普通にメール内URLをクリックすると、そのページに
ちゃんと飛んだのですが・・・ メールの送り主に
関係なく、メール内URL左下の表示が
「javascript:OpenWin('http://・・・・・・・・」
ならば開かなく、(URLコピペでは開くのですが)
http://・・・・・・・・」 
ならばちゃんと開く始末です。たまに左下表示が
前者のように表示される時があるので、
そのページにストレートに飛べなくて困ってます。
たぶんどれも後者になるようにすれば
問題ないのですが・・・ もう一度アドバイスお願いします。。
50デフォルトの名無しさん:04/10/01 18:26:11
>>47
スレ違い
>>1をよんでみそ
51デフォルトの名無しさん:04/10/01 19:54:55
現在実行しているメソッド名を動的に取得したいのですが、
どうすれば実現できるのでしょうか?

public void doSomthing() {
System.out.println(何らかの処理); // doSomthingという出力を得たい
}

例えば、Log4jなんかはlogメソッドを呼び出したクラスやメソッド名も
記録できますよね。その仕組みがどうなっているのか知りたいです。
Log4jのソースを見てみたのですが、該当箇所を見つけられませんでした。
52デフォルトの名無しさん:04/10/01 20:06:12
>>51
StackTraceElement[] ste=new Throwable().getStackTrace();
ste[0].getMethodName();
53デフォルトの名無しさん:04/10/01 20:08:21
>>51
new Throwable().getStackTrace()[0].getMehtodName();
で現在実行ポイントのメソッド名のStringが得られる
54デフォルトの名無しさん:04/10/01 20:10:01
>>51
new Exception() して、getStackTrace() すれば StackTraceElement[] が取れる。
StackTraceElementからクラス名やメソッド名が取れる。
・・・やりたいこと違います?
5551:04/10/01 20:24:54
>>52-54
ありがとうございます。

なるほど、そんな風にしてメソッド名を取得するんですね。
目から鱗です。

でも何となく new Throwable() は、例外をスローするみたいで使うのに
抵抗がありますね。別にスローするわけではないので問題はないと思いますが。
早速使ってみます。
56デフォルトの名無しさん:04/10/01 20:37:07
AspectJでも同じ子とできるよ
57デフォルトの名無しさん:04/10/01 21:07:59
AspectJまで持ち出す問題か?
58デフォルトの名無しさん:04/10/01 21:24:19
>>52-54
ありがとうございます。

なるほど、そんな風にしてメソッド名を取得するんですね。
目から鱗です。

でも何となく new Throwable() は、例外をスローするみたいで使うのに
抵抗がありますね。別にスローするわけではないので問題はないと思いますが。
早速使ってみます。
59デフォルトの名無しさん:04/10/01 22:52:07
ImageIconで生成したアイコンをウィンドウに表示させると思った大きさにできないんですけど
これはパネルとかのLayoutが悪いんですか?
自由に大きさや配置に便利な命令はありますか?
60デフォルトの名無しさん:04/10/01 23:03:26
>>59
自分で画像を Image に読み込んでから
java.awt.Image#getScaledInstance(int,int,int) とか使って思った大きさにしてから、
その後 javax.swing.ImageIcon#ImageIcon(Image) で ImageIcon 生成すれば?

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Image.html#getScaledInstance(int,%20int,%20int)
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/ImageIcon.html#ImageIcon(java.awt.Image)
61デフォルトの名無しさん:04/10/01 23:15:15
ありがつお、試してみます
6244:04/10/02 01:05:14
44でつ。
いまさらながら、参照先が間違ってるな.... >>17の間違い。
63デフォルトの名無しさん:04/10/02 02:00:36
java って activeX 使えますか?
IEコンポーネント使ったアプリ作ろうかと
思ってるんですが、SWT 使ってIEコンポーネント
使うってできるんですか。

できなきゃ、おとなしくC#で作ろうかと思うんですが、
できれば java の勉強したいなぁ・・と。
64デフォルトの名無しさん:04/10/02 02:31:13
SWT使うなら簡単。
SWT使わなくてもできなくはない。

しかしjavaの勉強するのにSWTやるのは無謀というか何というか。
65デフォルトの名無しさん:04/10/02 02:43:35
Sun、Java最新バージョンJ2SE 5.0を正式リリース
http://headlines.yahoo.co.jp/hl?a=20041002-00000093-myc-sci
66デフォルトの名無しさん:04/10/02 02:45:39
>>63
Geckoのラッパもあるでよ
ttp://jrex.mozdev.org/
ttps://jdic.dev.java.net/
6738:04/10/02 02:54:04
>>39,40
丁寧な説明ありがとう。
「あ、そういうことか!」ってほど理解というか、しっくりきていないところが悔しいですが。

>>44
なんか、ちょっと観点が違うような・・・

とにかく、もうちょっと精進して出直してきます。
レスくれたみなさんありがとうございました。
68デフォルトの名無しさん:04/10/02 05:13:45
>>66
GCJだとSWTと使わざるをえないわけだが・・・orz
69デフォルトの名無しさん:04/10/02 05:16:54
>>64の間違い・・・orz
7063:04/10/02 08:56:33
みなさん、レスありがとうございます。

>>64
SWT 使えば簡単ですか。よかった。
java の勉強したいですが、C++ なら使えますし、
java でも簡単なプログラムなら作れますので、
一から始めるわけじゃないので、SWT で作ってみたいなぁと。
(だって、Swing で作ると見た目がカコワルイ)

>>66
Gecko のラッパですか。そりゃいいや。
「C#で作ろう」→「いやどうせならJavaでプラットフォーム非依存で」
  →「いやIEコンポーネント自体がプラットフォーム依存だ・・・orz」
って感じだったんで、うれしい情報でした。


71デフォルトの名無しさん:04/10/02 09:19:07
SWTはプラットフォーム依…
72デフォルトの名無しさん:04/10/02 09:35:34
>>70
補足。SWTではBrowserというクラスがあり、これがブラウザの実装を隠蔽している。
実際に使われるブラウザは、WindowsならIEコンポーネント、LinuxならMozilla。
コード上は実装を意識せず書けた気がする。
73デフォルトの名無しさん:04/10/02 09:48:27
>>72 BrowserウィジットはWindowsでもmozillaを使うことできるよ。
74デフォルトの名無しさん:04/10/02 13:33:58
質問です。

public abstract class A
public class B

クラスAのことを「抽象クラス(abstract class)」というけど、
クラスBには何か名称が付いているんですか?
75デフォルトの名無しさん:04/10/02 13:35:56
>>74
Bをクラスといいます。
76デフォルトの名無しさん:04/10/02 13:45:52
あえて言うなら具象クラスですかね
77デフォルトの名無しさん:04/10/02 13:48:15
具象クラス、、、って言わない?
78デフォルトの名無しさん:04/10/02 13:50:45
79デフォルトの名無しさん:04/10/02 14:06:40
サウンドの終了を検知する方法が知りたいのですが
どのような方法(又はクラス)があるのでしょうか?

わかる方がおりましたら、なにとぞご教授お願いいたします。
80デフォルトの名無しさん:04/10/02 14:19:23
グショぬらすでつか、、、、。
81デフォルトの名無しさん:04/10/02 16:57:13
swingでwindowが他のwindow(swingの)に隠れないように設定するには
どうしたらいいんですか? お願いします。
82 :04/10/02 17:18:24
Swingで左クリックでポップアップを表示させたいのにやり方分かりません。
右クリックで出すサンプルはたくさんあるのですが、
どなたかご存知無いですか?
83デフォルトの名無しさん:04/10/02 18:52:35
>>82
右クリックでのクリック判定の部分を左クリックの判定に変える。
84デフォルトの名無しさん:04/10/02 19:10:20
以下のABCDというオブジェクトの配列を作りたいのですが、

ABCD abcd = new abcd[10];
という配列の宣言と、
ABCD abcd = new abcd(2);
このようなコンストラクタを用いるのをあわせて、
ABCD abcd = new abcd[10](2);
のようにはできないものでしょうか?

クラスABCDは以下のとおりです。

class ABCD
{
double[] Weight;

AAAA(int I)
 {
    Weight = new double[I];
  }
}
85デフォルトの名無しさん:04/10/02 19:20:49
>>84
残念ながらできません。
そういう使い方が、多いのだったら、そういう初期化するstaticメソッドを用意していてもいいのでは?

class ABCD
{
double[] Weight;

AAAA(int I)
 {
    Weight = new double[I];
  }
public static ABCD[] getInstances(int num,doublw w){
ABCD[] abcd = new ABCD[num];
for( int i=0;i<num;i++ )
{
abcd[i] = new ABCD[w];
}
return abcd;
}
}

で、ABCD abcd = new abcd[10](2); の代わりに、 ABCD[] abcd = ABCD.getInstances(10,2); とする。
86デフォルトの名無しさん:04/10/02 19:24:29
アブストラクトの対義語ということで
「コンクリートクラス」というのはどうだろう。

なんか硬そうだ。メタルスライムくらいは倒せそうだ。
87デフォルトの名無しさん:04/10/02 19:28:31
既出な質問くさいのですが、
なんでいきなり 5.0 なんでしょう?
Sun の政治的な何か?
88デフォルトの名無しさん:04/10/02 19:30:34
89デフォルトの名無しさん:04/10/02 19:32:33
>>87
なんか 1.4 -> 1.5 だとマイナーバージョンアップっぽく見えるので
ずっと変化しそうに無い "1." を削って(?) 5.0 にしたらしい。
90デフォルトの名無しさん:04/10/02 19:40:34
>>89
あーやっぱりそんな理由なのか。どもです。
91デフォルトの名無しさん:04/10/02 19:40:35
>>86
釣られてみる。コンクリートクラスでメタルスライム倒した友達いるよ。

誰か「またオレ用語か」って言ってくれるの待ってるらしい。
ドキドキ。オレも待ってみる。
9284:04/10/02 19:45:03
>>85
早速のお答えありがとうございます。

自分の書き込み見直したら変なところいっぱいあるのに、
ご親切に助言も下さりありがとうございました。
9344:04/10/02 20:06:27
1.2なのにJava2と呼ばせたのをもっと徹底的にしたんだろ。
1.2->名前:Java2 バージョン:1.2
1.5->名前:Java5 ついでにバージョンも5.0
94デフォルトの名無しさん:04/10/02 20:09:31
それがどんどん進んで2.0→20になるんだろうか…
ちょっと大きすぎるね^^;
95デフォルトの名無しさん:04/10/02 20:14:10
またオレ用語か
96デフォルトの名無しさん:04/10/02 20:16:29
>>95
世にある専門用語は全てもともと俺用語だよ。
使っている内に認められるものさ。
97デフォルトの名無しさん:04/10/02 20:34:37
ちなみにコンクリートクラスは、オブジェクト指向の世界で使われてる用語な。
>>86 すげえな。業界で使われてる言葉と同じだよ。センスあるねー
と漏れも釣られておく。
98デフォルトの名無しさん:04/10/02 20:38:41
>>79
AudioClip使ってるの?
JavaSound使えるなら
Clip作ってaddLineListenerで終了のイベント拾えるよ。

Java1.1ならcom.sunパッケージでなんかあった気がする。
99デフォルトの名無しさん:04/10/03 01:23:26
>>64
> しかしjavaの勉強するのにSWTやるのは無謀というか何というか。
すみません、ここのところをもう少し詳しく教えていただけないでしょうか。
100デフォルトの名無しさん:04/10/03 01:28:21
>>99
やる気があれば大丈夫。逐一ここで聞きに来るような軟弱者でなければ。
101デフォルトの名無しさん:04/10/03 02:33:27
>>93
> 1.5->名前:Java5 ついでにバージョンも5.0
JavaTM 2 Platform Standard Edition 5.0 Development Kit (JDK 5.0).
らしいので Java5 ではなく、Java2 のままですね。
10244:04/10/03 03:10:21
>>101
なるほど。参考になった。ありがとう。
しかしSUNの考え方はなんか複雑だな... 要するにJDKのバージョンナンバーが5.0ってことなんだね。

Java1.2->J2SE 1.2 (+JDK1.2)
Java1.5->J2SE 5.0 (+JDK5.0)

ってことでおK?
103デフォルトの名無しさん:04/10/03 04:18:09
>>102
> Java1.2->J2SE 1.2 (+JDK1.2)
> Java1.5->J2SE 5.0 (+JDK5.0)
そもそも Java1.2 とか Java1.5 とかいう表記は Sun は
(少なくとも公式な製品名としては)使って無いと思われ。
J2SE 1.2 とか J2SE SDK 1.2 みたいな表記は使ってたけど
当時はわざと JDK 1.2 という表記はしてないかったと思う。
J2SE 1.4 および J2SE SDK 1.4 だったのが
J2SE 5.0 および J2SE JDK 5.0(これの略称が JDK 5.0(?)) になったみたい?

っつか、詳しい事聞きたいなら Sun にメール出して聞いてくれ。
104デフォルトの名無しさん:04/10/03 04:38:37
>>103
漏れの記憶。
JDK -> J2SDK -> JDK。やっぱ長いのが嫌われたんでしょう。意味もよく分からないし。
Java言語的には、Java2( 1.2 )になった段階で大きく変わったということでバージョンアップ。
今回は JavaからJava2になったときほどポリシー変わっていないという姿勢なんでしょう。
でもマイナーバージョンアップというには大きい変更が入っているから
なんとかバージョンアップを目立たせたい、というか早く新しいバージョンをベースに物を作って欲しい、
そういう意図があって 5.0 と名づけたのでは?
javacの-sourceも1.4の変更のときは、デフォルト1.4じゃなかったのに、今回は 1.5がデフォルトになっている。
本当は、Java3とでもしたかったんだろうなぁ・・・
# Java2+ でなくてよかったと心底ホッとしているわけだが

取り合えず今度社内に残ってる元同僚に聞いとくよ。
105デフォルトの名無しさん:04/10/03 04:47:45
> 今回は JavaからJava2になったときほどポリシー変わっていないという姿勢なんでしょう。
あんまし関係ないと思われ。
っつか、Java2 の 2 って殆ど意味ないしね。
106デフォルトの名無しさん:04/10/03 04:48:18
>>104
> 取り合えず今度社内に残ってる元同僚に聞いとくよ。
ひょっとして Sun社員?
107104:04/10/03 04:59:45
>>105
いや、すくなくとも Java2のときは後方互換性を確保していなかったはず。
今回は、Java2のクラスなら動くはずだから。
>>106
元な。
108104:04/10/03 05:02:11
>>107
確保 -> 保証 かな?
109デフォルトの名無しさん:04/10/03 05:11:00
日本語APIリファレンスの誤訳をハケーンした場合はどこに連絡すべき?
110デフォルトの名無しさん:04/10/03 05:11:07
>>107
後方互換性ってJDK1.1で作ったソフトがJ2SE1.2で動く、とかそーゆー話だよね。
MSJVM の拡張使ってたとかでなければ保証されてたと思うけど。
111104:04/10/03 05:24:23
>>110
そりゃそうだよなぁ。ごめん。たぶん勘違い。
imcompatibility はあるけど互換性はあるって立場だったっけ?
112104:04/10/03 05:39:44
ttp://web.archive.org/web/19990506030708/http://java.sun.com/products/jdk/1.2/ja/compatibility.html
あった。
クラスファイルに問題があることがあるって書いてるけど上方互換性については保証してるな。
というわけで俺の記憶違いでした。
11344:04/10/03 05:40:04
Java 1.1と1.2って、イベントモデルがばっさり変わったうえに、AWTのかわりに
JFC/Swingが導入されたりとかなり大変なことになってたのは事実だな。
1.1と1.2はずいぶん違う。
5.0はコーディングの仕方が変わっただけといえばそれだけだしな。
114113:04/10/03 05:41:24
はー、おれずっと名前欄にまちがって数字いれてた。orz
鬱だ
115デフォルトの名無しさん:04/10/03 08:34:26
ダイアログを作成する際に、コンパイルするとコンストラクタの引数に対して
「ローカル変数xxxxxは内部クラスからアクセスされます。finalで宣言される必要があります。」

と表示されるのですが、どういう意味なのでしょうか?
参考書だとfinal付けなくても引数を使えてるみたいなのですが、このエラーの意味がよくわかりません。

よろしくおねがいします。
116デフォルトの名無しさん:04/10/03 08:51:35
ServletからJSPにRequestスコープの変数を渡す方法が
わからないのですが。
1.Servletでrequest.setAttribute("変数名", "hoge");
2.ServletでrequestDispatcher.forward(request, response);
3.JSPでString str = (String) request.getAttribute("変数名");
とやってみたところ、strがnullになってしまいます。
何かほかに必要な手順があるのでしょうか?
環境はJ2EE1.3(Servlet2.3,JSP1.2)&Tomcat4.1.30です。
よろしくお願いします。
117デフォルトの名無しさん:04/10/03 09:21:51
>>115
ローカル変数Aが内部クラスで使われるコードがある場合、その内部クラス
のコンストラクタ時に、新しい同型の変数領域が割り当てられて、そこに
ローカル変数Aの「値」自体がコピーされる形となる。
普通に考えれば、内部クラスからローカル変数をアクセスするのは不可能
なのだが、上記の様に「同じ値」(参照値ではない事に注意)をアクセス
させて実質的には同じ行為をしてると見せかける事によって、内部クラス
からのローカル変数アクセスを実現させている。
その為、内部クラスコンストラクタ時に、そのローカル変数Aはfinal
つまり不変宣言されてなければならない。

あと、>>>115の解決法は、その引数Aをfinal int B=A;などとして
Bを内部クラスからアクセスさせるようにすればOK
118デフォルトの名無しさん:04/10/03 09:37:42
>>104
JAVA開発チームが仮に日本人だったら、JAVA2なんて無闇に2を
付けないだろうな。
アメリカ人ってなんでこういちいち性能UPを不必要なまでに誇示したがって
名称にゴテゴテ数字を付けたがるのかね?
シンプルさ、扱いやすさ、認識しやすさを重視する哲学が全くない。
なんか外にも種類があるのかって思わせて、混乱させるようなネーミングは
やめれ。
119デフォルトの名無しさん:04/10/03 10:19:57
Seasar2なんていう国産DIコンテナがあるが...
120デフォルトの名無しさん:04/10/03 12:21:25
す、すいません。
1.5をインストールして、それまでのコードをコンパイルしたら
なんとコンパイルエラーが出てしまいました。
コンポーネントをコンストラクタする部分と、あとひどい所では
String s="aaa" + "bbb" + "ccc"
って感じのところです。何故なんでしょうか?
1.5って全然互換性がないのですか?
121デフォルトの名無しさん:04/10/03 12:25:28
エラーメッセージすら書くつもりが無いなら(・∀・)カエレ!
122デフォルトの名無しさん:04/10/03 12:29:40
5.0でだいぶC#に近くなりましたが
パクった機能の多くはC#出現当時ぼろくそに批判してませんでしたか?
123デフォルトの名無しさん:04/10/03 12:37:43
そりゃC#の*すべて*を批判してた馬鹿もいる。
だが有用な機能はどんどんパクったら良いだろ。言語の発展の歴史はパクリの歴史だ。

現に「catchしてなくて良い例外」とか「演算子オーバーロード」等の
有用でない機能(Javaにふさわしくない機能)は入ってない。他にもあるだろうな。
124デフォルトの名無しさん:04/10/03 12:42:51
>>120
javac -source 1.4 -target 1.4 おまえのソースコード.java
125デフォルトの名無しさん:04/10/03 12:44:32
>>123
でも、ほとんどのフレームワークで非検査例外を投げるようになってきてたり、throws Exceptionしてたりするけどね。
126デフォルトの名無しさん:04/10/03 12:46:10
>>120
ちゃんとjava5のjavac使ってる?
127デフォルトの名無しさん:04/10/03 12:49:20
>>122
俺は批判したのは、unsafeコードだけだったよ。
>>120
釣りかもしれんがコンパイル失敗するコード見てみたい。
コレクションあつかってるとこかもな。
128デフォルトの名無しさん:04/10/03 12:54:21
よい機能はどんどんパクるべきだと思いますが、
シンプルな文法で安定した開発が可能って売りが消えつつありません?
(馬鹿用言語と批判されるゆえんですが、私は優れた点だと思ってます)
129デフォルトの名無しさん:04/10/03 12:54:49
>>127
釣りじゃないです。
今日の朝、怒って1.5を消してしまって、1.4を再インストール
してしまったので、エラーの詳細については後で書きます。
130デフォルトの名無しさん:04/10/03 12:58:39
>>125
教えて欲しいのだが「ほとんどのフレームワーク」って例えばなに?

例外処理は難しいから、個人的にはその管理を放棄したくなる気持ちはわからんでもない。
しかしうまく使えばコードの信頼性を向上させることができるかもしれない。

個人的にはusingブロックが無いのは不満だし、演算子オーバーロードは絶対に取り入れて欲しくない。
一方ではGenericsを邪魔だと思う奴もいるだろう。
欲しい機能、迷惑な機能は人によって違う。

その中でJCPやらSunやらで検討した結果有用だと結論付けられた機能が
今回取り入れられたというだけ。
131デフォルトの名無しさん:04/10/03 13:05:17
>>130
演算子オーバーロードは、ユーザーの自由定義は排除して
各クラスによる固定定義だけは、是非とも取り入れて欲しかった。
Stringには初めからあるんだし。
例えばコレクションクラス。[]演算子で要素を取り出せるようにして
欲しかったね。あとラッパーはオートボクシングで解決されたけど
それ以前の初めっから、算術演算子オーバーロードを付け加えて欲しかった。

132115:04/10/03 13:10:21
>>117
回答ありがとうございました。おかげさまで無事解決できました^^
分からなくて困っていたので大変助かりました^^
133デフォルトの名無しさん:04/10/03 13:11:30
c[i]すると自動的に get/set 呼び出しに置き換えられるとかは欲しかったな。
134デフォルトの名無しさん:04/10/03 13:13:21
>>131
コレクションでget()なんてほとんど使わないし
for文拡張だけで十分だと思うのだが
135デフォルトの名無しさん:04/10/03 13:23:45
>>131
130の後半を読め。
こんな2chの初心者スレで個人的な好みで文法論議をしても始まらん。
せめて1.5スレか1.6スレでやれと。
136デフォルトの名無しさん:04/10/03 13:28:44
>>130
strutsやSpringやSeasarなど。
例外処理は難しいというより、処理中で例外が発生した段階で対策がとりようがないものの方が多い。
だから、Strutsでエラー表示したり、AOPでロールバックしたりする。
ロジック内で例外処理をすることのほうが例外的。
動的に入出力先が変わるときとか、その程度じゃないか。
フレームワークでめんどうが見れることが前提であれば、個々のロジック内で例外処理ってあんまりする必要がなさげ。
137デフォルトの名無しさん:04/10/03 13:36:18
投げる例外の種類が2〜3個程度のメソッドなら全部書いても良いけど、
そういうメソッドを何個か呼び出すようなメソッドでは5〜6個になっちゃうし、
その呼び出し元ではさらに・・・・
で結局どこかで握りつぶさないとthrowsだけで馬鹿みたいに行数とっちゃうんだよなぁ。
かといってthrows Exceptionじゃ旨さ半減だし。
138デフォルトの名無しさん:04/10/03 13:36:23
>>129 のエラーを予想してみようぜ
139デフォルトの名無しさん:04/10/03 13:45:33
>>137
にぎりつぶすんじゃなくて、非検査例外に変換して投げなおすんだよ。
140デフォルトの名無しさん:04/10/03 14:56:09
>>137
握りつぶすなよ馬鹿(笑
141でふぉるとのななしさん:04/10/03 17:38:14
J2SDK と J2EE の違いはなんですか?
142デフォルトの名無しさん:04/10/03 17:45:39
>>141
実行・開発環境と、拡張ライブラリです。
143デフォルトの名無しさん:04/10/03 18:18:27
>>142
後半が違う。J2EEはAPI仕様です。実装ではないのです。
J2SEというのは、これまた仕様です。SUNの実装が、J2SE SDKだったりします。
144デフォルトの名無しさん:04/10/03 18:26:06
>>137
普通はレベルが異なる層ごとに例外クラスを定義するだろ。
5個も例外返すなんてのは設計が悪いだけ。
145ジャズ紳士 ◆rHkT/SfI7A :04/10/03 19:38:52
SE5でコンパイルしたクラスを1.4.2とかで実行できるの?
146デフォルトの名無しさん:04/10/03 19:56:43
>>145
コンパイル時にオプションで -source 1.4 -target 1.4 して、
J2SE 以降で追加されたクラス、フィールド、メソッドを使用しないか、
使用しても、それらが無い場合でも動くように考慮してコードを組めば実行できる。
147ジャズ紳士 ◆rHkT/SfI7A :04/10/03 20:59:14
じゃあ拡張for文とかはだめなのか。
コンパイル時に平凡なfor文に書き換えてると思ってたよ>1.5
148デフォルトの名無しさん:04/10/03 21:35:11
>>147
-source 1.5 -target 1.4 でいけるかと思ったけど駄目だった。
>javac: リリース 1.5 のソースにはリリース 1.5 のターゲットが必要です。
こんなん言われちゃった。
149ジャズ紳士 ◆rHkT/SfI7A :04/10/03 21:46:22
>>148
わざわざサンクス。
回避方法考える楽しみができました
150デフォルトの名無しさん:04/10/03 21:56:45
JTextAreaのテキストの文字色変えたいんですけど
どうやるんですか?
コンテナにいれてるんですがセットカラーが使えません。アプレットを継承しないとだめ?
151デフォルトの名無しさん:04/10/03 22:05:39
なぜアプレットが出てくるんだ?
APIみた?
152デフォルトの名無しさん:04/10/03 22:16:37
はい、JTextAreaとContainerみましたが文字色を変えるのは無かった気が・・・
153デフォルトの名無しさん:04/10/03 22:18:43
wikiのHP見させてもらって設定してみたんですが、
どうしてもできないです。
パス設定もしてテキストエディタでソースコードを作ってみても
コマンドの使い方がわからないです。
教えてください
154デフォルトの名無しさん:04/10/03 23:04:03
APIのマニュアルにはっきりかいてあるんだけどなぁ

まったくわからないのならNetBEans立ち上げてみてプロパティをいろいろといじってみてごらん
155デフォルトの名無しさん:04/10/03 23:06:41
150ですが自己解決しますた
setForegroundでした。colorばっか探してマスタ
156デフォルトの名無しさん:04/10/04 00:13:39
次のように書いたのですがNullPointerExceptionが出ます。
どこを直せばよいのでしょうか。教えて下さい。
長すぎて書き込めないのでUpしました。
---
http://up.isp.2ch.net/up/8a6012baad6d.txt
157デフォルトの名無しさん:04/10/04 00:25:42
>>156
スタックトレースに行番号まで出てるもんだがな
158156:04/10/04 00:29:53
すみません。表現が正確ではありませんでした。
「どのように直せば」でした。
159デフォルトの名無しさん:04/10/04 00:32:44
どこでNullPointerExceptionが発生してるのかわかれば
どの変数がnullになってるのかわかるだろうよ。
その変数がnullにならないように直すかnullになっても問題ないように直せ
160デフォルトの名無しさん:04/10/04 00:33:52
>>159
ひでえな。ワラタ。
161デフォルトの名無しさん:04/10/04 01:19:09
>>156
見れないよ。
取り合えずスタックトレースのうち、自分の書いたクラスに関係する部分だけ抽出して張ってけろ。
それとそのトレースで示されている部分前後10行程度のコード。
162デフォルトの名無しさん:04/10/04 02:03:19
>>160
なにが?
的確なアドバイスだと思うが
163デフォルトの名無しさん:04/10/04 02:07:19
儲かるように転がせば株で儲かるとかいってる成金みてる気分です。はい
164デフォルトの名無しさん:04/10/04 02:10:16
>>163
お前はこの板には向いてないので、雑誌拾って100円で売る商売でもしてろ
165デフォルトの名無しさん:04/10/04 02:22:50
Nullになっている変数が分かってる状態で、NullPointerExceptionを直すのに
「その変数に値が入るようにする」「nullでもエラーにならないように制御文を
いれる」以外に解決法があるだろうか。
しかもソースがなんでか読めないし。
166デフォルトの名無しさん:04/10/04 02:27:05
そこで NullObject パターンですよ。
167デフォルトの名無しさん:04/10/04 02:52:00
>>165
あきらめる
168165:04/10/04 03:00:49
>>167
うおっ、おれが予想だにしていなかった解答だ。その手があったか...
169デフォルトの名無しさん:04/10/04 03:01:36
>>167
たしかに、>>156 は諦めるのが一番のような気がする。
170デフォルトの名無しさん:04/10/04 03:06:02
Exceptionとソースが見れれば10秒で解決するような気がするんだけどねぇ
171デフォルトの名無しさん:04/10/04 03:07:46
>>170
それができないからこその「あきらめる」
172デフォルトの名無しさん:04/10/04 10:21:30
質問です。
double の変数 d を四捨五入して long の変数 l に代入するにはどうしたら
よいでしょうか?

long l = (long) d; だと小数点以下が切り捨てられてしまいます。
丸め専用のメソッドがどこかにあると思ったのですが、見つからず、
現在のところ
long l = new BigDecimal(d).divide(new BigDecimal(1.0), 0, BigDecimal.ROUND_HALF_EVEN).longValue();
という回りくどいやり方をしております。

こういうやり方が良い、というアドバイスがありましたらお教えください。
173デフォルトの名無しさん:04/10/04 10:26:31
0.5足して切り捨てみたいな安易な方法じゃ駄目なのか?
174デフォルトの名無しさん:04/10/04 10:26:57
>>172
四捨五入でいいなら
long l = (long)(d + 0.5d)
175172:04/10/04 10:37:36
>>173-174
うわー!正直、ぜんぜん気が付かなかった。
しかし、そんな C みたいなやり方が Java の標準なんでせうか?
正直、納得いきません。

と思ってぐぐったら、こんなものが見つかりました。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Math.html#round(double)

ということで、これで行きます。
long l = Math.round(d);

まあ内部でやっていることは同じなんですけれど、私の好みということで。

それにしても、あんなに探して見つからなかったのに、質問したあとに探したら
あっという間に見つかってしまった。すみません。お騒がせしました。
176デフォルトの名無しさん:04/10/04 19:39:07
めちゃくちゃ勉強しはじめの初心者ですみません・・

public static void main(String args[]){

Circle myCircle = new Circle(3,3,2);
Circle myCircle = new Circle(3,3,2,4);

System.out.println("X座標=" + myCircle.getX());
System.out.println("Y座標=" + myCircle.getY());
System.out.println("円の面積=" + myCircle.areaCircle(int));
System.out.println("X座標=" + myCircle.getX());
System.out.println("Y座標=" + myCircle.getY());
System.out.println("楕円の面積=" + myCircle.areaCircle(int,int));
System.exit(0);
}
177176:04/10/04 19:40:49
class Circle{
int x; int y; double s;

public int getX(){return x;}
public int getY(){return y;}

public void Circle(int initX,int initY){
x=initX; y=initY;
}
public double areaCircle(int r){
System.out.println("円の面積");
s=r*r*3;
return s;
}
public double areaCircle(int a,int b){
System.out.println("楕円の面積");
s=a*b*3/4;
return s;
}
}

コンパイルすると1行目でclassまたはinterfaceがありません、とかいうエラーが出ます・・どこが間違っているんでしょうか?
178デフォルトの名無しさん:04/10/04 19:44:34
>>176
mainメソッドもどこかのクラスに所属する必要がある。
class Circle{
...
}
の内側に入れればOKでしょう。
179デフォルトの名無しさん:04/10/04 19:45:35
あ、あとコンストラクタ Circleに返り値定義はなし、
public void Circle(int initX,int initY){
->
public Circle(int initX,int initY){
180デフォルトの名無しさん:04/10/04 19:49:37
>>176
とにかくめちゃくちゃです
まずHello worldをつくって理解しよう
181デフォルトの名無しさん:04/10/04 20:05:01
>>176

Circle myCircle = new Circle(3,3,2);
Circle myCircle = new Circle(3,3,2,4);
同じ変数名を2回宣言している。2つめの変数は違う名前にしてあげよう。
コンストラクタの引数は(int, int)なのに3つも4つも渡してる。
2つだけにしてみよう。

System.out.println("円の面積=" + myCircle.areaCircle(int));
System.out.println("楕円の面積=" + myCircle.areaCircle(int,int));
areaCircleメソッドの引数に「int」を渡している。
「int」じゃなくて3とか4とか、実際の値を渡すようにしよう


あと円周率が3になってるけど、Math.PIっていう定数があるので使うといいかも。
ついでに楕円の面積は「長い軸」×「短い軸」×「円周率」
4で割る必要はないかも。
182156:04/10/04 22:50:33
>>157-171
ありがとうございました。とりあえず諦めました。(いや冗談ですが)
183デフォルトの名無しさん:04/10/04 22:52:20
>>182 ソース見たいよー 気になるよー
184デフォルトの名無しさん:04/10/04 23:06:19
JAVAを使った株ロボットプログラムコンテスト
大会期間は1ヶ月。
優勝賞金としてあなたのロボットがあげた利益をそのまま獲得できます!
ユニークなロボットには特別賞も!
ふるってご参加ください。

ttp://www.kaburobo.jp/
185デフォルトの名無しさん:04/10/04 23:26:28
出た!株ロボ!
186デフォルトの名無しさん:04/10/05 02:09:00
質問です。入れ子クラスと内部クラスの包含関係って

   入れ子クラス ⊃ 内部クラス

ですよね? そして、

   内部クラス ∋ {局所クラス、匿名クラス、非静的メンバクラス}

となっていますよね?
では、入れ子クラスであって内部クラスでないものをなんと呼ぶのか(どんなクラスがあるのか)
良く知られた名称を教えてください。
187デフォルトの名無しさん:04/10/05 04:35:37
>>186
静的メンバクラス
188デフォルトの名無しさん:04/10/05 04:42:39
*メンバクラス
  静的メンバクラス
  非静的メンバクラス
*インナークラス
  非静的メンバクラス
  局所クラス
  匿名クラス
*入れ子クラス
  静的メンバクラス
  非静的メンバクラス
  局所クラス
  匿名クラス
  子&孫以下の全てのクラス
189デフォルトの名無しさん:04/10/05 06:06:03
メソッドにつけるfinalはどんな意味なんでしょうか
190デフォルトの名無しさん:04/10/05 06:16:28
191デフォルトの名無しさん:04/10/05 08:07:07
>190
なるほどclassのfinalと同じって事ですね
メソッドにstatic finalとか無意味・無駄・無理・無茶ですよね?解釈間違ってます?
192デフォルトの名無しさん:04/10/05 09:01:45
>>191
abstract finalと勘違いしてないか
193デフォルトの名無しさん:04/10/05 09:25:06
>>191
たしかに無駄だね。
>>192
勘違いはおまいじゃなくて?
194デフォルトの名無しさん:04/10/05 10:54:07
Javaの勉強をはじめて1週間↓の超初心者です。
SoftBank社の「やさしいJava第2版」のLesson6練習問題の
2の答えを教えてください…ヒントでもいいです…


import java.io.*;

class Rensyu2
{
public static void main(String args[]) throws IOException
{
System.out.println("テストの点数を入力してください(0で終了)");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

do{
String nyuryoku = br.readLine();
res = Integer.parseInt(nyuryoku);

for(goukei = 1; goukei <= res; goukei++)
goukei += res;
}while(res > 0);

if(res == 0){
System.out.println("テストの合計点は" + goukei + "点です");
}
}}


自分でも「明らかに違う」と思うのですけど
どこをどう直したらいいのかわかりません…
繰り返しと、入力した数値を合計する方法がわからないです…お願いします。
195デフォルトの名無しさん:04/10/05 10:58:31
196デフォルトの名無しさん:04/10/05 11:02:40
>195
ありがとうございます。そっちに行きます。
197:04/10/05 11:09:07
すいません!!今研究で作ったJavaアプリケーションをApplet化しようとしてまして。。
とりあえずアプレットビューアでは動いたんです。
でもブラウザでは動きません。。。ブラウザの下のほうには「アプレット XXX notinited」と表示されています。

アプリケーションはローカルHDにあり、テキストファイルのデータを読み込んで動くようになっています。
うーん、これがいけないのでしょうか。何か分かる方がいらっしゃれば、どうか教えてくださいませ。
198デフォルトの名無しさん:04/10/05 11:23:21
>>197
Javaコンソール出してスタックトレース見れ。
199デフォルトの名無しさん:04/10/05 11:24:05
>>197
ブラウザが使用するJVMとクラスファイルのバージョン不整合かも知れないし

> アプリケーションはローカルHDにあり、テキストファイルのデータを読み込んで動くようになっています。
これかも知れない。

書き込みからわかるのはこれぐらい。
200デフォルトの名無しさん:04/10/05 11:27:39
アプレットってローカルファイルとか扱うときはなんかセキュリティ関連のアレがナニじゃなかったっけ?
201デフォルトの名無しさん:04/10/05 11:31:21
>>200
アプレット自体がローカルにあるなら、たぶん関係ないと思われ。
202:04/10/05 11:32:15
>>198-199
ご回答ありがとうございます。コンソールからコンパイルしてみました。
するとAppletのshow()というAPIが推奨されないという警告が出ました。
もうちょっと考えて見ます。
203デフォルトの名無しさん:04/10/05 11:36:23
>>202
setVisible(true)にすればOK
204:04/10/05 11:40:32
>>203
ありがとうございます。setVisible(true)にすればエラーは出なくなりました。
でも状況は変わらないです。。プログラムがでかすぎるのかな?けどViewerだと動くし。。
考えて見ます。
205:04/10/05 11:44:26
>>197あ、ブラウザの「ツール」からJavaコンソールが見えるんですね!!
最初のファイルが読み込めているんですが、その後エラーが起こっています。
java.security.AccessControlException: access denied (java.io.FilePermission IconImage/file.jpg read)

at java.security.AccessControlContext.checkPermission(Unknown Source)

at java.security.AccessController.checkPermission(Unknown Source)

at java.lang.SecurityManager.checkPermission(Unknown Source)

at java.lang.SecurityManager.checkRead(Unknown Source)

at sun.awt.SunToolkit.getImageFromHash(Unknown Source)

at sun.awt.SunToolkit.getImage(Unknown Source)

at javax.swing.ImageIcon.<init>(Unknown Source)

at javax.swing.ImageIcon.<init>(Unknown Source)

at OpePanel.<init>(OpePanel.java:103)

at SyncOperator.addFile(SyncOperator.java:99)

at ViewFrame.<init>(SomViewFrame.java:195)

at FuckinApplet.init(FuckinApplet.java:36)

at sun.applet.AppletPanel.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)
206デフォルトの名無しさん:04/10/05 11:52:47
>>201
大嘘
>>205
ロカールファイルへのアプレットのアクセスは制限される。
制限は、 ${JAVA_HOME}/jre/lib/security/java.policy か、ホームディレクトリ下の .javapolicy の内容を
変更してアクセス権限を設定しないと駄目。
207:04/10/05 12:08:41
>>206みたいですね。
java.policyにアプレットの制限をはずす以下を記述したのですが、同じです。。
permission java.security.AllPermission;
画像ファイルはローカルパスなのでこれかも?でもアクセス拒否エラーが出てるからパスはあってそうだし。。
難しいです。
208デフォルトの名無しさん:04/10/05 12:10:24
>>205
jpg ファイルをアプレットの配置されたディレクトリか、そのサブディレクトリ、
もしくはアプレット を jar に固める際に jpg も一緒に固めろ。
そうすれば java.applet.Applet#getDocumentBase() や
java.applet.Applet#getCodeBase() が返す URL をちゃんと使用すれば取得できるだろ。
209デフォルトの名無しさん:04/10/05 12:14:13
>>207
コンソールのスタックトレースはどうなってる?
セキュリティ以前に、-target指定しないでコンパイルしているにもかかわらず
ブラウザがデフォルトのVMを使うようになっているに一票。
210デフォルトの名無しさん:04/10/05 12:21:41
211デフォルトの名無しさん:04/10/05 12:27:39
>>207
ポリシー設定は下のように。しかし非常に危険。 >>208の言うように固定的に使うリソースならば
archiveで指定するjarファイルのなかに入れてしまうのが安全。

grant {
permission java.security.AllPermission;
};
212デフォルトの名無しさん:04/10/05 12:31:51
>>206
書き出しならともかく、読み込みアクセスなら
ローカルファイルへのアクセスを許すようにするのは下策。
213:04/10/05 12:43:17
>>208
ブラウザのVMのバージョンはeclipseでコンパイルしたものと同じです。うーん。
214211:04/10/05 12:51:00
>>213
そうそう、アプレットのVMって、JDKの下じゃなくて Program Files\Java\jre... の下にあるやつですよ。
ポリシーファイルもそこのをいじらないと駄目です。
215:04/10/05 13:00:23
あ!!動きました!!
ブラウザのインターネットオプション詳細設定の所で、MicrosoftVMの所のチェックをはずしたら動きました。
でも、前にエラーが出てた画像ファイルはボタンに使用しているのですが、それらは表示されないですね。。
これらはパスがおかしいのかな?getCodeBase()とか付け足していないので。
ひとまず動いた!ってことで、私の質問に答えてくださった皆さんに感謝いたします。
また何かあれば報告させてください!>>206の方も言ってるように、これは下策のようなので。。
216:04/10/05 13:06:07
追加報告です。画像は絶対パスにすればOKでした!
217デフォルトの名無しさん:04/10/05 13:18:58
>>216
絶対パスにすんなよ orz

アプレットにはしたけど web やイントラネットでも公開する気は全く無い、んだろうなぁ…
何のためにアプレットにしてんだか……
218:04/10/05 13:25:42
>>217
いや、公開するつもりです。とりあえず動作確認ということですので。
後はサーバの設定やら色々あると思うので後々考えます。
219211:04/10/05 14:26:26
>>218
いや、ちょっと待て公開しても相手先のマシンに絶対パスで仕込んだファイルがないと動かないし
何より相手のマシンのポリシーファイルを変更しないと動かないようなアプレットは公開する意味がない。
こういうポリシーを変更して使うってのは非常に限られた用途なんだぞ。
公開するなら今からでも遅くない、クラスと一緒のjarファイルのリソースに含めなさい。
でないとまた問題がたくさん発生する、それも本質的でないものが、だ。
220デフォルトの名無しさん:04/10/05 14:32:30
!=

って一言で言ったらどういう意味ですか?
演算子多すぎて覚えきれねぇ(涙
221デフォルトの名無しさん:04/10/05 14:35:09
>>220
ではない
222デフォルトの名無しさん:04/10/05 14:44:35
>221
ありがd!
223:04/10/05 15:42:06
>>219
とりあえずローカル絶対パスではなく、URLを取得して動くようにしました。
ポリシーファイルの件はそうですね。jarファイルに含める際はアプレットのクラスと同じ階層に納めればよろしいのでしょうか?
ちょっと忙しく、調べられない状況なのでごめんなさい。
224デフォルトの名無しさん:04/10/05 16:37:02
ネストって何?
225デフォルトの名無しさん:04/10/05 16:58:59
Actionで同じアクションを持つ二つのアイテムで一つはアイコン付きで一つはアイコン無しで
作りたいのですがいい方法が浮かびません。助けて
226デフォルトの名無しさん:04/10/05 17:12:53
>>225
何をしたいのかさっぱりわからん
227デフォルトの名無しさん:04/10/05 17:16:59
>>225
AbstractActionのソースを参照

アイコン無しのAbstractAction作ってclone()して
action2.putValue(Action.SMALL_ICON, icon);
とか
228225:04/10/05 17:21:07
えと、同じアクションをさせたいアイコン付きと無しの二つのアイテムが欲しいのです
今は同じActionからアイテム生成してるんで両方ともアイコンついちゃって。。。
別々のActionは作りたくないのでなんとか一つのActionで二つのアイテム作れないですか?
229225:04/10/05 17:23:50
>>227
ありがとうございます!試してみます。
230227:04/10/05 17:30:14
いや、やっぱりcloneじゃダメか
Mapオブジェクトが共有されてしまう

普通に2つインスタンス作ってやってくれ
231227:04/10/05 17:39:16
たびたびすまんぬ
230は無視してくれ

>>227でいけると思う
232225:04/10/05 19:00:57
片方はアイコン付きactionから生成して片方はアイテムを作成してからaddActionListener(action)にしますた
こんな簡単な方法があったなんて!!
233デフォルトの名無しさん:04/10/05 22:36:29
Listener系のクラスって無限ループ中でも割り込んで
呼び出ししたりできるの?
234デフォルトの名無しさん:04/10/05 23:30:13
>>233
そりゃスレッドの問題だろ。
235デフォルトの名無しさん:04/10/06 01:12:40
Calendarクラスのaddメソッドを使いたいと思っています。

Calendar の現在時刻から 5 日を引くには、以下のように呼び出します。
add(Calendar.DATE, -5)

とリファレンスにありますが、コンパイルできません。

abstractメソッドになっています。
継承してオーバーライドしなきゃ使えないの?なんでー?!
236デフォルトの名無しさん:04/10/06 01:13:41
GregorianCalendarかCalendar.getInstance()を使う
237デフォルトの名無しさん:04/10/06 01:13:56
getInstance()してるか?
238デフォルトの名無しさん:04/10/06 01:20:32
JavaのCalendarって、カレンダーというよりはカレンダー上の特定の時刻だよな。
絶対ネーミング間違ってるし設計的にもおかしい。
Dateのメソッドをdeprecatedにするより、CalendarとDateがもっと連携できるようにすべきだったんじゃなかろうか?
239デフォルトの名無しさん:04/10/06 01:48:43
>>238
特定の時刻を扱うのはDateで、そこに暦の扱いを与えるのがCalendarだ。
設計的におかしいというのなら、もっとすっきり特定の時刻への暦の操作をロケールによって切り替える仕組みを提案してみてくれ。
240デフォルトの名無しさん:04/10/06 02:06:09
238ではないがCalendarクラスが「暦法」と「暦法に基づく特定の時刻」の
両方の意味を持っているのはあまりいい設計ではないだろう。

例えばあるDateインスタンスから一ヶ月後のDateを計算したい場合現状では
 Date date1 = ...; // あるDate
 Calendar cal = Calendar.getInstance();
 cal.setTime(date1);
 cal.add(Calendar.MONTH, 1);
 Date date2 = cal.getTime();
とかやらないといけないけど、本来は
 Date date1 = ...; // あるDate
 Calendar cal = Calendar.getInstance();
 Date date2 = cal.add(date1, Calendar.MONTH, 1);
のような感じであるべきじゃないのか?
241デフォルトの名無しさん:04/10/06 02:15:50
1.5から導入されたOceanテーマですが、このテーマって背景色にグラデーション使ってますよね。
GradientPaintが使われるのかと思って調べたけどどうもわからんです。
あるボタンインスタンスだけだけ、自分の定義したグラデーションを適用したいってときは
どうすればよいのでしょうか?
242235:04/10/06 05:59:25
ごめんなさい。情報がぬけてました。
実は携帯のiアプリを作ろうとしているので、その関係もあるのかなと思っています。
j2sdk1.4.2_05, DoJa3.5の環境です。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -5);
とやっています。「 シンボルを解決できません。」となります。
243デフォルトの名無しさん:04/10/06 08:49:47
アニメーションgifを一枚づつ Image オブジェクトとってきたり
コマ時間をとってきたりするにはどうすりゃいいですか
244デフォルトの名無しさん:04/10/06 09:17:51
Javaで書かれたPC並みのWebブラウザが出たそうでつが、
将来的にはiモードJavaは無視して良い、ということでつか?
245デフォルトの名無しさん:04/10/06 09:31:41
なんでそんな素っ頓狂な発想に辿り着いたのか
246デフォルトの名無しさん:04/10/06 10:18:55
>>243
javax.swing.imageio.ImageReaderクラスのread(int pageNo)で
一枚づつ取得できる。
しかし、各コマの相対座標は取得できないので、部分コマが
含まれてる場合は、どこかでライブラリを探しててくるか
自分でGIFフォーマットの読み取りルーチンを書くしかない。
そんな難しくないし。
コマ時間の取得は不可能。それに特に必要ない。
247:04/10/06 11:18:45
すいません。ポリシーファイルをクラスと一緒のjarファイルのリソースに含めるのってどうやるのでしょうか?
248デフォルトの名無しさん:04/10/06 11:32:18
見ず知らずの第三者からポリシーファイルもらうっておかしいなって思わない?
249:04/10/06 11:37:18
>>248
確かにおかしいです。無理ですね。
なるほど、アクセスするデータはすべてJar内に入れてしまえって事ですね。ありがとうございます。
Jar内のデータにアクセスするのは何か必要なのですか?
250デフォルトの名無しさん:04/10/06 11:41:20
昨日答えはもらってるだろ。
251デフォルトの名無しさん:04/10/06 12:15:43
技術的なことを相談できるサイトって知りませんか?
252デフォルトの名無しさん:04/10/06 12:22:05
>>251
ここ。うまくつきあえば。
253デフォルトの名無しさん:04/10/06 13:47:45
254:04/10/06 14:37:01
>>253
解決しました!感謝です。
255デフォルトの名無しさん:04/10/06 15:30:13
今からJavaを勉強するにあたってオススメの本とかありますか?
現在、ソフトバンクの「やさしいJava」を使ってますが
もう1冊くらい買おうかな…と思ってます。
もしオススメありましたら教えてください。
256デフォルトの名無しさん:04/10/06 15:31:36
>>255
1冊で十分だ。
それに書いてあることをきっちり理解できるようになってから他の本に手を出すがいい。
257デフォルトの名無しさん:04/10/06 15:41:26
>>256
熟練者が理解に苦しむような本であった場合は?
258デフォルトの名無しさん:04/10/06 15:44:29
>>257
頑張れよ
259デフォルトの名無しさん:04/10/06 15:47:49
「やさしいJava」はじっくり読んできっちり理解するだけの価値がある本じゃないからなぁ。
文法の説明は載ってるけど、interfaceの記述がほとんどないし、ということはJavaの大切なことが書いてないということ。
もちろん、最初に読んでるのが良い本であれば一冊で充分で、それに書いてあることをきっちり理解して他の本に手を出すようにするというのもいいけど。

文法レベルの本として、おれは独習Javaくらいしかしらないけど、他にいい本ある?
260デフォルトの名無しさん:04/10/06 15:59:18
改訂版Java言語プログラミングレッスンとかいいと思う。上下巻で2冊だけど。
261デフォルトの名無しさん:04/10/06 15:59:22
>>259
Webの情報で十分。
というか、独習Java研修で持たされたが、まだ開いたのは片手で数えられるくらい。
あれって、どうなの?
262デフォルトの名無しさん:04/10/06 16:07:58
持ってるなら自分で見て判断しろ
263デフォルトの名無しさん:04/10/06 16:41:22
質問です。
java.util.Calendar のオブジェクトから java.sql.Date クラスの
オブジェクトを取得するには、どうしたらよいでしょうか?
今のやり方を下に示しますが、どうにも回りくどいのです。

Calendar cal = Calendar.getInstance();
java.sql.Date date = new java.sql.Date(cal.getTime().getTime());

もうひとつ質問です。
java.util.Date と java.sql.Date が分かれているのはなぜでしょうか?
理由がまったく分かりません。java.util.Date 型のオブジェクトをそのまま
プリペアドステートメントにセットできたら、とても楽なのに。

以上です。どなたかお願いいたします。
264デフォルトの名無しさん:04/10/06 16:43:35
>>261
Webの情報で十分といえるほど慣れてる人じゃなければ、悪くない。
さすがに古いけど。
265デフォルトの名無しさん:04/10/06 16:46:02
>>263
sqlのDate型は、日付のみをあらわすので意味が違うのです。
utilのDate型の名前がよくなかったのかもしれない。
266デフォルトの名無しさん:04/10/06 16:51:55
>>263
>どうにも回りくどいのです。
回りくどいかなぁ・・・・?俺にはそうでもない。
267デフォルトの名無しさん:04/10/06 16:53:06
J2SE5.0 SDKはまだかな・・・
268デフォルトの名無しさん:04/10/06 16:55:11
>>267
???先週から出て騒ぎはひと段落ついちゃってますが?
269デフォルトの名無しさん:04/10/06 16:56:19
これじゃだめ?
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html#getTime()

あとCalendarは抽象基底クラスで具象サブクラスとしてGregorianCalendarがあると
APIドキュメントに書いてあるので、俺はそっちを使うようにしてる
270デフォルトの名無しさん:04/10/06 16:58:24
あっとしつれいjava.sqlね
orz
271デフォルトの名無しさん:04/10/06 16:59:04
>>263
SQLのミリ秒で表す時刻の基準とjava.util.Dateのミリ秒で表す時刻の基準が違うからのようだ。
272263:04/10/06 17:17:33
皆様、いろいろありがとうございます。

これが特に煩雑になるのは、Calendar オブジェクトをプロパティして持つ
オブジェクトがあって、これを使ってプリペアドステートメントに値を入れようと
する場合などです。

//object.calendar が Calendar 型
pstatement.setDate(1, new java.sql.Date(object.calendar.getTime().getTime()));

setDate() のカッコの中に、さらにカッコが入って、ごちゃごちゃしていると思います。

せめてこう書けたら、まだ分かりやすいと思うのです。
pstatement.setDate(1, object.calendar.getTime().getTime());


java.util.Date が UNIX 時間の単なるラッパであることは分かるのですが、
java.sql.Date には、推奨されていないメソッドを除いて、わざわざクラスを新設
しなければならないほどの改変があるようには見えませんでした。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Date.html

しかし、
>>271
なるほど、Date.setTime()がオーバーライドされていますね。これがどうしても
必要だったようですね。よく分かりませんが。
273263:04/10/06 17:19:14
訂正です。
せめてこう書けたら、まだ分かりやすいと思うのです。
× pstatement.setDate(1, object.calendar.getTime().getTime());
○ pstatement.setDate(1, object.calendar.getTime());

あまり分かりやすくなっていませんでしたね。失礼しました。
274いはさお ◆44eNHrW70I :04/10/06 17:50:35
私の学習本はBlackBookですね。
かなり愛想が無いのが欠点だけど、
あれはあれでそれなりに良いものだと思います。
275デフォルトの名無しさん:04/10/06 17:54:18
Calendar cal = Calendar.getInstance();
java.sql.Date date = new java.sql.Date(cal.getTime().getTime());
と書くなら
java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
でもよさそう。
276デフォルトの名無しさん:04/10/06 19:16:22
>>275
実際にはなんかが入ってんだろ。
277デフォルトの名無しさん:04/10/06 21:08:13
Dateはある瞬間を表すオブジェクトであって、
CalendarはDateを設定する操作クラス
だから日付はDateで持つべし。

と思ってるがどうよ? >>263はそもそも日付をCalendarで持ってるのが悪い。

DateをimmutableにしなかったSunは馬鹿
クラス名をDateTimeにしなかったSunはもっと馬鹿
278デフォルトの名無しさん:04/10/06 21:10:49
と思ったら239が先に書いてたよ・・・
279デフォルトの名無しさん:04/10/06 23:23:37
Calendarって任意の精度での切捨て(例:時刻を切り捨て 04/01 00:01 -> 04:01 00:00)とか
切り上げ(例:時刻を切り上げ 04/01 00:01 -> 04/01 00:00)って無いの?
あと二つのCalendar(またはDate)の差を求めるとか。
すんごい不便なんだけどなんか見落としてるのかな・・・。
280デフォルトの名無しさん:04/10/06 23:40:14
getTime().getTime() >> getTimeInMillis() の方がいいような。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html#getTimeInMillis()
281デフォルトの名無しさん:04/10/06 23:43:25
切り捨て
→ない。素直に特定以下のフィールドに0を入れていくしかない。
ミリ秒とか忘れがち。
cal.set(year, month, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);


→ない。
ミリ秒を取り出して差を取って86400000で割って日数差にしちゃって
いいのかどうか。
どうせあっても微々たる物だが、閏秒とかどうなってたっけ?
282デフォルトの名無しさん:04/10/07 00:10:35
>>281
閏秒は扱えないんじゃないかな。
データベースなんかはちゃんと閏秒を格納できる仕組みをもってるけど。
とりあえず内蔵クロックが閏秒が必要なほどの精度を持ってないという話。
283デフォルトの名無しさん:04/10/07 00:18:37
>>279
切り捨て
org.apache.commons.lang.time.DateUtils#truncate
284279:04/10/07 00:45:53
切り上げの例を間違って意味不明な文章になってたけどレスサンクス。
日付の比較をしたかったんだけど、Dateは時間も持ってるから、ちゃんと時間を切り捨て、切り上げしないと意図どおりの結果にならないんだよねぇ。

ってゆーか日付の管理ってムズいネ・・・。
10時までって言うと普通10時を含まないよね。
でも5日までって言うと5日を含むんだよね・・・。
1日から数えて3日目って言うと、1+3=4日じゃなくて3日なんだよ・・・。
(1日が1日目になる)

ってゆーか日本語わかりにくいな・・・。
285デフォルトの名無しさん:04/10/07 01:01:58
更に、NTPなどの自動時刻合わせ機能が動いてると、
目的の時刻を飛ばしちゃったりして、
いつまでたっても目的の時刻が訪れない罠。
286デフォルトの名無しさん:04/10/07 09:47:47
>>263
もしそのobjectのクラスにメソッドを追加できるんだったら

public java.sql.Date getCalSqlDate() {
  return new java.sql.Date(calender.getTimeInMillis());
}

とすれば pstatement.setDate(1, object.getCalSqlDate()); で済む?
287デフォルトの名無しさん:04/10/07 11:16:25
Jtableクラスを引数にとって,その内容をExcelに出力するメソッドを
作りたいのですが,メソッドgetValueAtでtableの内容は取得できるのですが
ヘッダー(class HeaderRendererに相当)の内容をStringで取得する方法が
どうしてもわかりません。

getTableHeader() メソッドでJTableHeaderクラスを取得できても,
JTableHeaderクラスのparamString()メソッドがprotectになってて
使えないのです。

良い方法はありませんでしょうか。

288デフォルトの名無しさん:04/10/07 11:35:50
ん、HeaderRendererですか?
JTable#getColumnName()とか、TableModel#getColumnName()とかで
得られるカラム名じゃなく?
289デフォルトの名無しさん:04/10/07 11:37:50
>>287
paramString() って明らかに使い道が違うんだが javadoc は読んでるんだろうか。
JTable#getColumnName(int) では何か問題があるのだろうか。
290263:04/10/07 12:27:59
>>277-278
本来は Date を使うべきなのでしょうが、日付単位でのインクリメントが
非常に多いので、Calendar を使う方が合理的だと判断しました。

>>280
そうすれば、確かに少しは見やすくなりますね。ありがとうございました。

>>286
私にメソッド作成の権限はありますので、その手段をとることは出来ます。
ただ、もし既存のメソッド、プロパティ等があるなら、それを知りたかったのです。
どうやら、それは >>280 氏のもの以外ないということのようですが。

皆様、いろいろありがとうございました。
291287:04/10/07 16:12:24
たしかにgetColumnNameメソッドを使うと,デフォルトのカラム名のA,B,Cが得られました。

ただ,Jtableのカラム名をA,B,C以外の文字列に変更しているJtableを引数に
とった場合でもなぜか,A,B,C‥が返されてしまうのですがこの理由がわかりません。
292デフォルトの名無しさん:04/10/07 16:29:26
カラム名の設定にはどういう方法をとっていますか?
293287:04/10/07 17:31:05
>>292
class HeaderRendererの中で
setTextメソッドを使ってます

public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
if (column == 1) {
setText("X");
}

}
;
といった感じです
294デフォルトの名無しさん:04/10/07 17:50:28
j2sdk-1_4_2_04-windows-i586-pを落として
http://www.asahi-net.or.jp/~yf8k-kbys/newjavah1.html
で勉強してたんですけど
javac Hello.java
をしたら
javacは認識されてませんとでてコンパイルできません。なんででしょうか?
295デフォルトの名無しさん:04/10/07 17:58:10
とりあえず文法をマスターした程度の初心者です。
(他言語の開発経験はほとんど皆無)
指定したニュースサイトに、指定した語句を含む記事がうpされたら、
それを収集するクローラーを作りたいのですが、難易度はいかほどのものでしょうか?

もし参考になるサイトなどがありましたら、ご教授いただきたくよろしくお願いします。
296デフォルトの名無しさん:04/10/07 18:16:39
297165:04/10/07 19:28:52
>>296
やさしいな君。
これって >>1 にもろに書いてあるよなあ。
298297:04/10/07 19:29:27
くそ、また名前消し忘れた.... orz
299デフォルトの名無しさん:04/10/07 19:34:46
>>295
難易度 10段階(10高〜1低)でレベル3
使用API java.lang, java.io, java.util, java.net
推奨参考 JAVA・APIリファレンス(java.doc)でも十分
300295:04/10/07 19:41:34
>>299
レベル3とのことなので、
初心者でも手が出せるかなと勝手に解釈し、チャレンジしてみます。
どうもありがとうございました。
301デフォルトの名無しさん:04/10/07 19:43:47
レベル10がEclipseレベルだったりする罠
302デフォルトの名無しさん:04/10/07 19:54:11
つうか、Java・APIリファレンス以外の、ネットを参照するアプリケーションの知識が必要だね。
利用するAPIが基本的なものだからといって、作るのが簡単なわけではないし。

それなりに難しいと思うで。
303デフォルトの名無しさん:04/10/07 20:00:19
>>301
Eclipse?
ただのIDEのソフトの使いかただろ。
プログラミングとは関係無し。
304デフォルトの名無しさん:04/10/07 20:04:37
>>293
えーと、TableModelについてひととおり勉強してくださいとしか。
305294:04/10/07 20:14:53
>>296
見たんですけどjavacがやっぱり使えません。
JAVA_HOME C:\j2sdk1.4.2_04
PATH %JAVA_HOME%\bin
CLASSPATH .;%JAVA_HOME%\lib\tools.jar
としたんですが何がいけないんでしょうか?
306デフォルトの名無しさん:04/10/07 20:28:28
ADSLを使ってる場合、
ルータ : 192.168.0.1
PC   : 192.168.0.2
のようになります。
しかし、外から見たプロバイダに割り当てられたグローバルアドレスは
YahooBB2200460002**.bbtec.net(220.46.0.2**)
のようになります。

で、InetAddressなどを使ってPCやルータのアドレスを取得しようとすると、やはり192.168.0.xとなってしまいます。
プロバイダから割り当てられたグローバルアドレスを取得するにはどうしたらいいのでしょうか?ご教授お願いしますm(_ _)m
307デフォルトの名無しさん:04/10/07 20:42:11
>>306
とりあえず、スレ違いじゃない?
308デフォルトの名無しさん:04/10/07 20:44:05
プロンプトで echo %PATH% とやれば何かわかるかも
309デフォルトの名無しさん:04/10/07 20:47:05
>>307
あ!Javaネットワークプログラミングってスレがあった・・・orz
そっちに逝きます。お邪魔しましたf^^;
310デフォルトの名無しさん:04/10/07 20:51:07
echo off
echo javac
で何か表示されないかな?
311デフォルトの名無しさん:04/10/07 20:56:43

指定されたjpgやgifファイル(illustratorで作成)
からImageIconを作ろうと思ってるのですが
たまに以下のエラーが出てしまいます。
sun.awt.image.ImageFormatException: Unsupported color conversion request
at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
at sun.awt.image.JPEGImageDecoder.produceImage(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)

サポートしていない色を使ってるみたいなエラーのようですが,
こういうエラーが発生せず,思ったとおりにImageIconをつくるために
注意すべき点などありますでしょうか
312305:04/10/07 21:07:42
誰か教えてくれないでしょうか?
313デフォルトの名無しさん:04/10/07 21:10:35
>>312
何がいけないかと言えば、お前の頭
314デフォルトの名無しさん:04/10/07 21:32:31
>>312
原因がわかるまでは
C:\j2sdk1.4.2_04\bin\javac
でやってれば?
315デフォルトの名無しさん:04/10/07 22:03:41
>305>312
%JAVA_HOME% は一体どうなってるの?
ちゃんとインスコしたフォルダになってる?
書いてる通りなんだろけど、
echo %JAVA_HOME% してみそ。

それか、素直に>314サソの書いた通りに、フルパスで打ってみれ。
それでダメならインスコ失敗してるんじゃねーのか?
とマジレスしてみる。
316312:04/10/07 22:32:15
>>314
コンパイルできました。
ありがとうございます。
>>315
%JAVA_HOME% は%JAVA_HOME% のままにしてます。

echo %JAVA_HOME% をしたら
C:\j2sdk1.4.2_04
と表示されました。
これでいいんでしょうか?

317デフォルトの名無しさん:04/10/07 22:47:42
再起動したの?
318306:04/10/07 22:57:34
Javaネットワークスレに行ったら過疎板になってて、こっちに誘導されました^^;

プロバイダから割り当てられたアドレス(リモートアドレス)を調べる方法なんですけど、
色々調べた結果、サーブレットのgetRemoteAddr()メソッドを使えば取得できることがわかりました。
そこで、クライアント側はブラウザを使わないでJavaアプリケーションからサーブレットサーバに接続する方法ってありますか?


できれば、TomcatやApacheなどの外部プログラムに依存したくないので、サーブレットを使用しない(CGIも使わない)サーバプログラムが理想です。
(まぁクライアント側のみでリモートアドレスがわかればそれに越したことはないんですが)
319デフォルトの名無しさん:04/10/07 22:58:11
>>317
1回再起動しました。
320デフォルトの名無しさん:04/10/07 23:16:37
>>319
ん〜なんだろ。2000使ってる?オレもたまに環境変数がうまく認識されないときがあるんだよねぇ。
解決するまでの対応策として、バッチファイルを使って環境変数を一時的に設定する方法があるよ。

jdk.bat
set JAVA_HOME=C:\j2sdk1.4.2_04
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar
set PATH=%PATH%;%JAVA_HOME%\bin;

これをC:\jdk.batに保存したとする。次にコマンドプロンプトのショートカットをデスクトップなどに作成する。
そのショートカットのプロパティの「リンク先」の値が
%SystemRoot%\system32\cmd.exeとなってる事を確認。(XPだと違ってるかも)
これを、%SystemRoot%\system32\cmd.exe /k C:\jdk.bat と変更し、OKボタンを押す。
ショートカットからコマンドプロンプトを立ち上げると、普通にjavacが通るはず。
以降、javacを使うときはこのショートカットを利用すればいい。

まぁ別バージョンのJDKを共存させるための方法なんだけども、応急処置として。
321319:04/10/07 23:25:47
>>320
親切に詳しく教えてくださってありがとうございます。
OSはxpでホームエディションです。
最近OSの調子が悪いんで多分そのせいだと思います。
眠たくなったんで明日試してみます。
ありがとうございました。
322デフォルトの名無しさん:04/10/07 23:33:42
>>306
YBB使っててそれは無いと思うけど。
自分の使ってるルータとYBBのモデムの間にもう一個ルータかPCか無い?

あるならそれのアドレスを取得すればいい。
てか、YBBならルータつかわずにハブでつなげばglobalIP直接使えるよ
323デフォルトの名無しさん:04/10/08 00:14:21
Javaで透明色を指定して画像を表示するのはどうすればいいんでしょうか?
透明GIFではなく、普通の画像ファイルの特定色を指定して、その色が透明になる
という風にしたいんです。
よろしくお願いします。
324デフォルトの名無しさん:04/10/08 01:23:08
>>316,320
問題は、PATH環境変数じゃない?
環境変数の定義順によってはPATH設定時に
うまくJAVA_HOMEが定義されていないことがあるかもしれん。
PATHの定義は、%JAVA_HOME% を使わずにC:\j2sdk1.4.2_04 を埋め込んでミソ。
あと、そのCLASSPATHは定義しないこと。
com.sun.* パッケージをたたくとかしなければ必要ない。
325デフォルトの名無しさん:04/10/08 01:25:26
>>324
%JAVA_HOME%使わせろよ。
326デフォルトの名無しさん:04/10/08 03:39:33
>>322
YBBじゃなくても、他のプロバイダや、学内からでも使えるようにしたいんです。
ネットワークプログラムを作っているんですが、それをグローバル対応させたいんです。
327324:04/10/08 04:20:06
>>325
まずはPATHをいじって動くようになるのを確認してからだろ、それは。
328デフォルトの回答者:04/10/08 04:27:06
>>326
なにを作ろうとしているのか怪しいが、何でグローバルIPが必要なんだ?
Inboundのアクセスをさせるためだっていうんだったら、そのグローバルIPを知るだけじゃ駄目で
ファイアウォールで、Inboundなパケットを許可しないといけないんやけど・・・
# それを知らずにグローバル対応ってのは、技術的にちょいと怪しいなぁ・・・
ま、無駄かも知れんけどグローバルIPの取得方法を言っておく。
単体では無理、グローバルIPを持つ(もしくはグローバルIPで到達可能なマシン)が必要。
そのマシンに接続元のIPを返答するようなサービスを立ち上げておく、ま、HTTPで立ち上げておくのが楽か。
dynamic DNSの更新方法なんかの更新方法の応用かな。(逆か?)
329デフォルトの名無しさん:04/10/08 06:34:23
>>328
>なにを作ろうとしているのか怪しいが、何でグローバルIPが必要なんだ?
グローバルIPを知らないと、クライアント側のリモートメソッドが呼び出せないからです。

>ファイアウォールで、Inboundなパケットを許可しないといけないんやけど・・・
クライアント側でファイアウォールの設定をさせるのはやむをえないと思っています。

やはりサーバを用意する必要があるんですね。
ソケット渡し(ttp://www2s.biglobe.ne.jp/~cru/library/java/watasi.html)みたいにCGIを使えばなんとかなりそうなんですが、
サーバプログラムを移行しやすいように、CGIに依存しないでクライアントIPを取得できればいいのですが・・・。
現在ソケット通信で接続元のアドレスが取得できないか奮闘中です。
330デフォルトの回答者:04/10/08 06:45:47
>>329
うーん、さらに分からなくなった。
ソケットの接続が完了したら、接続元のアドレスは簡単に取れるはずなんだが・・・
ttp://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html#getRemoteSocketAddress()
そのソケット接続をグローバルIP側から開始できないから問題なんじゃないのか?
331デフォルトの回答者:04/10/08 06:52:54
>>329
追加、ファイアウォール設定はクライアント側の設定というより
経路の設定が問題でしょう。
学内なんかプライベートIPで振られている端末に外からアクセスなんて普通無理だって。
よほどの馬鹿が設定してもプライベートIPを設定する脳みそがあればInboundのパケットは弾くって。
332デフォルトの名無しさん:04/10/08 07:01:03
VPN(Virtual Private Network)とか、トンネリングとかで調べてみそ。
なんでもJavaでやればいいわけじゃなくて、こういう技術と組み合わせればいいのさ。
333デフォルトの回答者:04/10/08 07:19:31
>>332
そいつがOKなんだったらだいぶらくなんだけなぁ。>>329がどういう状況なのかいまいちわからんし。
windowsクライアントが主ならPPP over SSHも調べとけ。金かからん上に、プロトコルの通過確率(?)も高い。
どうもシチュエーションが違うような気がするけどな。(サーバ/クライアント型のソフトではないような気がする・・・)
334デフォルトの名無しさん:04/10/08 07:20:31
流れぶったぎってすいません。質問なのですが・・・
コンボボックスは1行に1つしか表示できないんでしょうか?
「▼」を押すと、例えば「001|山田」「002|佐藤」みたいな・・・
VBだと簡単にできるようですが、Javaだと複数列にできないんでしょうか。
335デフォルトの名無しさん:04/10/08 07:28:48
>>327
> まずはPATHをいじって動くようになるのを確認してからだろ、それは。
わけわからんこというな。
JAVA_HOMEとPathが通ってるjava.exeバージョンが違ったらどうするんだよ。
336デフォルトの名無しさん:04/10/08 07:36:15
「クライアント側のリモートメソッドが呼び出せない」ということは、サーバ側から、アクセス
してきたクライアントのグローバルIPを知りたいってことだよね?

そりゃServerSocketのaccept()が返すSocketに対してgetInetAddress()するだけだろ。
うちで2台のPCつかってやってみたら、ちゃんとクライアントのグローバルIP(実際には
ルータに割り当てられてるやつ)が取得できたぞ。

192.168.*.*のアドレスが返ってくるのは、そりゃルータの内側でサーバをたてて、ルータの
内側のクライアントから接続して、InetAddressを処理してるからじゃないの?

ルータの外側にサーバを置いてると、クライアントのアドレスを得ようとすると、ルータの
グローバルIPしか得られんはずだ。NATとはそういうもん。接続に来てるのはルータなん
だから。

実際にサーバから(ルータではなく)クライアントPCにアクセスするには、クライアント側で
ルータにポートフォワード設定をしてもらう必要がある。RMIの使用ポートをクライアントPCに
振るように設定する。
337デフォルトの名無しさん:04/10/08 07:44:12
>>330
そんなおいしいメソッドがあるなんて初めて知りましたw
ソケットはつい数時間前に勉強したばかりなのでわかんないコトが多くて・・・。
APIをちゃんと読むべきでしたねf^^;

>そのソケット接続をグローバルIP側から開始できないから問題なんじゃないのか?
ServerSocketを作成する際、ServerSocket(80, 100, InetAddress.getHostByName("YahooBB2200460002**.bbtec.net"));
のように、LAN内にあるPC(192.168.0.2)が、グローバルアドレス(Yahoo〜)でサーバソケットを作成しようとするとエラーが出ますね。

>>328でおしゃったように、グローバルIPを割り当てられたPCを使えば解決しそうです。
338デフォルトの名無しさん:04/10/08 09:38:18
>>323
BufferedImage imgの指定色myColorを透明色にする

int target=myColor.getRGB();
int alpha=target&0xffffff;
for(int y=0; y<img.getHeight(); ++y) {
  for(int x=0; x<img.getWidth(); ++x) {
    if(img.getRGB(x,y)==target) {
      img.setRGB(x,y, alpha);
    }
  }
}

ただimgをImageIO.read()などでJPEGファイルからロードした場合は
imgがアルファバンドを持たないので、上記の処理の前に
imgをアルファバンドを持つBufferedImageに変換する作業が必要。
339デフォルトの名無しさん:04/10/08 12:34:07
>>334
JComboBoxにaddItem()したオブジェクトのtoString()でカスタマイズできる。
つまりこういうクラスを作って、そのオブジェクトをコンボボックスに入れる。
public class ComboItem{
 private String id;
 private String name;
 public String toString(){
  return id + " | " + name;
 }
}

または、ComboBoxRedererでカスタマイズすることもできる。くわしくはこちらを。
ttp://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
340デフォルトの名無しさん:04/10/08 17:32:41
Class Path 内にあるテキストファイルを読み込むにはどうすればいいのでしょうか?
341デフォルトの名無しさん:04/10/08 18:15:12
>>339
ありがとうございます。独自関数なんですね。
ComboBoxRendererは知ってたのですが、どうにもうまくいかなくて。
JDBCなのですよ。コンボボックスで値を選ぶとデータが表示・・・みたいな。
とりあえず悪戦苦闘しながら、試してみることにします。
342デフォルトの名無しさん:04/10/08 18:16:27
>>340
Class#getResource(String)で
343デフォルトの名無しさん:04/10/08 19:43:25
Javaで書かれたソース付きのWebアンテナってありませんか?

ちょっと自分で機能をいじれるモノが欲しいと思いまして。
無いようなら自分で1から書いてみますが
もし知っている人がいましたら、よろしくです。
344デフォルトの名無しさん:04/10/08 20:26:44
Actionから作ったボタンを

class btnAction AbstractAction{
   public void actionPerformed(ActionEvent e){}

で作ったんですけどこれを自分で呼び出すにはどうやればいいんですか?
ボタンが押されないと絶対呼ばれない?
345デフォルトの名無しさん:04/10/08 20:45:02
>>344
SwingUtilities#notifyActionで呼び出せる
346デフォルトの名無しさん:04/10/08 23:31:16
>>344,345
深く考えずボタンを押すコードを書けばよい。
例えばJButonn#doClick()とか。
347デフォルトの名無しさん:04/10/08 23:45:47
>>346
ボタンが押されてしまうとフォーカスが変わったりと、いろいろ
不都合が起こる。純粋にactionを呼び出さねばならない。
348デフォルトの名無しさん:04/10/09 00:06:27
actionが呼び出せないんですけどどうやるのですか?

actionにはKeyStroke, KeyEvent, Object , int とかいうのは
入ってないんですけど
349デフォルトの名無しさん:04/10/09 00:09:42
すみません。SwingUtilities#notifyActionでの呼び出し方がわからないという事です
registerKeyboardActionとかつかってないし
KeyEventもまだつけてません。
350デフォルトの名無しさん:04/10/09 00:33:08
>>349
SwingUtilities.notifyAction(任意のAction, null, null, null, 0);

とりあえずこれでやってみてください。エラーが出たらまた来てください。
351デフォルトの名無しさん:04/10/09 00:51:41
NullPointerExceptionのエラーがでてしまいました。
SwingUtilities.notifyAction(Unknown Source)とかいっぱいでました
352デフォルトの名無しさん:04/10/09 01:50:01
>>351
じゃあ、これなら上手くいきます。
actionがアナタの設定したActionオブジェクトで、buttonはそのActionを
つけたJButtonです。

KeyEvent ke=new KeyEvent(button, 0, 0, 0, 0, (char)0);
SwingUtilities.notifyAction(action, null, ke, this, 0);

KeyEventだけは設定する必要があるのです。
353デフォルトの名無しさん:04/10/09 03:55:42
こんばんは。
標準APIを使って、簡単にHTMLページのリンクを抽出する方法ってないでしょうか?
URLの配列を返してくれるメソッドとか。
354デフォルトの名無しさん:04/10/09 04:02:08
標準APIじゃないとだめ?
355デフォルトの名無しさん:04/10/09 04:09:27
うん。。
356デフォルトの名無しさん:04/10/09 04:16:00
>>353
ページソース取得して、正規表現でゲットするしかないと思う
357354:04/10/09 04:17:32
HttpUnitを使えば簡単なのに....
358353:04/10/09 04:42:53
ありがとう
359デフォルトの名無しさん:04/10/09 08:55:47
今日から○日昔の日付をjava.sql.Date型で取得したいです。
本日の日付は以下のようにして取得できるんですが、
これ以降がよくわかりません。どなたかよろしくお願いします。

Date today = Calendar.getInstance().getTime();

360デフォルトの名無しさん:04/10/09 09:03:00
>>359
java.sql.Date today = new java.sql.Date(new java.util.Date().getTime());
361359:04/10/09 09:21:35
>>360
すいません、質問の仕方が悪かったですが、
わからないのはjava.util.Date型をjava.sql.Date型に
変更する方法ではなく、「5日前の日付を取得する方法」なんです。

Calendar#add で可能かと思ったんですが、
抽象クラスになっているので、そのままは使用できないのです。

どなたかよろしくお願いします。
362デフォルトの名無しさん:04/10/09 10:14:30
Calendar cal = Calendar.getInstance().add( Calendar.DATE, -5);
Date day = cal.getTime();
363359:04/10/09 11:25:34
>>362
ありがとうございます。解決しました。
抽象メソッドの理解が足りませんでした。
精進します。。。
364デフォルトの名無しさん:04/10/09 12:01:21
結果が何件返ってくるか分からないデータを格納するにはどうすれば
良いのですか?
例えばデータベースにselect * from hogeと問い合わせたとき。
Object[][] foo = new Object[?][?]
ご教授ください。
365デフォルトの名無しさん:04/10/09 12:06:06
>>364
どうやって受け取るつもりなんだお前は?
366デフォルトの名無しさん:04/10/09 12:13:13
>>364
まずはJDBCの基礎から始めよう。
367デフォルトの名無しさん:04/10/09 12:31:57
>>365

Class.forName("com.mysql.jdbc.Driver");
(中略)
Object[][] rowData = new Object[][];
int i=0;
while(rs.next()){
rowData[i][0] = rs.getString(1);
rowData[i][1] = rs.getString(2);
rowData[i][2] = rs.getString(3);
i++;
}
return rowData;
368U ◆CZtFsGiu0c :04/10/09 12:35:06
>>364
配列ではなくコレクションオブジェクト(ArrayListとか)を使う。ネット上で検索すれば
腐るほどサンプルが見つかると思うよ。
369デフォルトの名無しさん:04/10/09 12:42:07
>>368
なるほど。勉強になりました。
ArrayListとVectorって何処が違うの?
370デフォルトの名無しさん:04/10/09 12:46:30
>>364
そもそも*で取ってくるのが間違ってる
371デフォルトの名無しさん:04/10/09 12:47:57
BeanUtils使えばオシマイだな
372デフォルトの名無しさん:04/10/09 12:51:26
>>370
いちいち列名指定しないといけない?
373デフォルトの名無しさん:04/10/09 12:59:01
スレ違いだがはっきりいって常識レベルだな
374デフォルトの名無しさん:04/10/09 12:59:20
>>369
Vector:昔のJavaでも使えるが遅い。
ArrayList:Java2以降に追加。速い。
375デフォルトの名無しさん:04/10/09 13:15:17
Class.forName("com.mysql.jdbc.Driver");
(中略)
ArrayList list = new ArrayList();
while(rs.next()){
list.add(rs.getString(1));
list.add(rs.getString(2));
list.add(rs.getString(3));
}
return list;
これでおk?
376デフォルトの名無しさん:04/10/09 13:16:30
>>369
ArrayListはスレッドセーフじゃない
377デフォルトの名無しさん:04/10/09 13:23:24
>>375
もう勘弁してくれ
いいところつまみ食いしようとしないでちゃんと本読んで一から勉強してくれ

>>376
Vectorだってあんなもん同期してるとなんかとても言えないよ
378デフォルトの名無しさん:04/10/09 14:00:42
1.2以降でVector使ってる奴は例外なくJavaもスレッドもわかってない奴。

スピードの問題でもない。
379デフォルトの名無しさん:04/10/09 15:24:24
>>378
> 1.2以降でVector使ってる奴は例外なくJavaもスレッドもわかってない奴。
例外なくってのは全く根拠無いな。
ArrayList 使ってる奴の中にだってJavaもスレッドもわかってない奴はたくさんいるし。

馬鹿には一応 Vector 使わせとけ、というのはありだと思うが。
380デフォルトの名無しさん:04/10/09 15:38:08
まあ、好きにすればいいじゃないか。
両方のソースを見比べてみればいいんだから。
381デフォルトの名無しさん:04/10/09 15:39:33
失礼します……

無職だめ板のプログラミングスレで、「Javaで何か作らない?」という話が出て
「Vixみたいの作れないかな」とカキコしたら
プゲラされてしまったのでつが
どの辺がプゲラなのかさっぱり分かりません。
どなたかご指摘頂けないでしょうか?

// ちなみに、性能上同等のものを作るとかではなく、
// 単にJavaの勉強するのに何か目標が欲しいよね、という話です。
382デフォルトの名無しさん:04/10/09 17:04:15
自分で作って黙らせろ。んなもん全然技術の話じゃねーんだよハゲ!
383デフォルトの名無しさん:04/10/09 17:28:44
384デフォルトの名無しさん:04/10/09 17:44:37
文章問題なのですが。はい、いいえでお願いします。あ、出来れば理由も。
HashMapやArrayListなどの同期をとらないコレクションAPIは、
マルチスレッド環境化で同時にgetメソッドが呼ばれると
期待した結果が返らない場合がある。
385デフォルトの名無しさん:04/10/09 17:46:11
いいえ
386デフォルトの名無しさん:04/10/09 18:08:19
プゲラはJavaという言葉に反応します。
Javaで前向きな活動しようとすると現れます。
387デフォルトの名無しさん:04/10/09 18:19:31
>ArrayList 使ってる奴の中にだってJavaもスレッドもわかってない奴はたくさんいるし。
何度か見たことある
スレッドが違えば同期化しなきゃ保障されないのを知らないやつな
グリーンスレッドのときはたしか動いていた気もする
388デフォルトの名無しさん:04/10/09 20:33:40
質問です。
SoftReferenceでラップした参照値のオブジェクトは、メモリーが
足りなくなると、そのオブジェクトが強可到達であっても
ガーベジコレクタによってクリアされてしまうのでしょうか?
389デフォルトの名無しさん:04/10/09 22:32:34
windowClosingでウィンドウをクローズさせずにイベントを終わらせる方法はないですか?
return;じゃウィンドウ閉じてしまうのですが
390デフォルトの名無しさん:04/10/09 23:23:20
>>389
他の WindowListener も全部 windowClosing でウィンドウ閉じないようにしないとダメなんでは?
391デフォルトの名無しさん:04/10/09 23:23:39
>>389
JFrame#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
を加えればOK
392デフォルトの名無しさん:04/10/09 23:39:13
スタティックイニシャライザに関しての質問です。JDKは1.4.2です。

public static final intな変数を、処理に応じた値に初期化したいと考えています。
その処理は例外が発生する可能性があるので、次のようなスタティックイニシャライザを書きました。
(実際はtryブロックで処理をし、tryブロックの最終行で初期化していますが、
初期化部分以外を削除して、下記のコードにしても同様のエラーが出ます)
class Test {
public static final int VALUE;
static {
try {
VALUE = 1;
} catch (Exception e) {
VALUE = -1;
}
}
}
これをコンパイルすると
Test.java:7: variable VALUE might already have been assigned
VALUE = -1;
と怒られます。7行目をコメントアウトすると、予想通り
Test.java:1: variable VALUE might not have been initialized
class Test {
と怒られます。
どのように書けばよいのでしょうか?
393デフォルトの名無しさん:04/10/09 23:41:41
テンポラリな変数に一回値を設定してしまえば?
394デフォルトの名無しさん:04/10/09 23:47:46
>>393
あっ、それいただき。有難うございます。
でもこれコンパイラのバグじゃないのかなぁ。
395デフォルトの名無しさん:04/10/09 23:52:58
final宣言してるのに定数でないとはこれいかに
396デフォルトの名無しさん:04/10/10 00:23:24
>>392
エラーメッセージのまんまだと思うが・・・
何もおかしいところは無い
397デフォルトの名無しさん:04/10/10 00:29:40
public static final
という意味をよく見直してごらん。
http://msugai.fc2web.com/java/memberVar.html
398デフォルトの名無しさん:04/10/10 00:30:25
java1.5をインストールして、1.4で書いてたコードをコンパイルは出来たのですが
実行したら、下記の実行時エラーが出てしまいました。

java.lang.VerifyError: (class:〜) Incompatible object argument for function call

どうすればいいんでしょうか? 実行できるような対策法を教えてください。
399デフォルトの名無しさん:04/10/10 00:32:47
イミュータブルな変数を定数として扱いたいんだね。
400デフォルトの名無しさん:04/10/10 00:40:30
>>395
public staticで初期化後に変更されたくない時はfinal使うんじゃないですか?
コンパイル時に決定する定数じゃなくて、起動時にpropertyファイルで(からDB検索して)決定する定数なんですが。

>>396
えぇっ?
7行目でvariable VALUE might already have been assignedって事は
5行目のVALUE = 1;で初期化済みのVALUEに再度初期化する可能性があるとコンパイラは言ってるんですよね。
try節最終行のVALUE=1で割り当て後に例外が発生するはず無いから問題無いと思うのですが。
   |::|  ;''':' '`っ V
   |::|  ノ / ̄ ,;;;;;;;;;;;;.、
   |::| ||  |  {;;;;;;;;;;;;;:}
   |::| ||., \  ':;;;;;;;;;;'
   |::| | \  `''"~   ""'ヽ
   |::|__.|_.` i         i )シュッ
   |::|―--  `i  人   :| 'ノ  .ニ二二|:::|
   |::|     |       l|i|! !|il!シュッ  |:::|
        i, `' i       i'ニ-'" シュッ//
402デフォルトの名無しさん:04/10/10 00:51:27
>>400
定数宣言だから変更は不可能
もしやりたいのならゲッターつくれ
403デフォルトの名無しさん:04/10/10 01:04:03
>>402
スタティックイニシャライザで*初期化*は出来ると思いますが。↓はコンパイルとおりますよ。
class Test {
public static final int VALUE;
static {
int temp;
try {
temp = 1;
} catch (Exception e) {
temp = -1;
}
VALUE = temp;
}
}
404デフォルトの名無しさん:04/10/10 01:08:38
それやるなら
int temp=-1;
try{
 temp = 1;
} catch(Exception e){
 // do nothing
}finally {
 VALUE = temp;
}
の方が好きだな。
405デフォルトの名無しさん:04/10/10 01:27:12
>>403
ただの揚げ足取りだな
どのみちstaticだけだし、設計的にgetterのほうがよさそうだ
406デフォルトの名無しさん:04/10/10 01:31:27
「不可能」と断言してるんだから、揚げ足とりとは言わんだろ。
407デフォルトの名無しさん:04/10/10 02:12:42
java1.5をインストールして、1.4で書いてたコードをコンパイルは出来たのですが
実行したら、下の様な文字列連結の部分で実行時エラーが出てしまいました。
(java.lang.VerifyError)。codeは、int型変数です。

"コードは" + code + "です"

まさか、java1.5じゃ上記のような文字連結文は使えないのでしょうか?




どうすればいいんでしょうか? 実行できるような対策法を教えてください。
408デフォルトの名無しさん:04/10/10 02:18:42
                        |
                        |
      ∩___∩              |  ぷらぷら
      | ノ  _,  ,_ ヽ        ((   |
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)  >>407 ))
    彡、   |∪|  ノ  
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ

409デフォルトの名無しさん:04/10/10 04:07:25
>>407
オレは2ch初心者だから釣り氏なんて怖くないぜ。
ってことでマジレス。

1.4でもint型を文字列として扱うことは出来ないよ。型変換しなきゃ。
例えば、"コードは" + Integer.toString(code) + "です" ってやったり、String str = new String(code) (以下略) ってやったり・・・。
410デフォルトの名無しさん:04/10/10 04:26:43
                        |
                        |
      ∩___∩              |  ぷらぷら
      | ノ  _,  ,_ ヽ        ((   |
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)  >>409 ))
    彡、   |∪|  ノ  
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ
411デフォルトの名無しさん:04/10/10 04:28:04
コンパイルは通るんですが実行すると
C:\>java aaa

C:\>java aaa
と何も表示されずに終わるんです。
これはなんですか?
412デフォルトの名無しさん:04/10/10 04:51:07
>>400
catchを書いてExceptionで受けている以上、コンパイラは何かしらの未チェック例外が
tryブロックで発生すると仮定する。チェック例外なら「発生しない例外をcatchしようとして
るけど?」とか言われるが、すべてに合致するExceptionで受けてるから、「なんか知らんが、
ともかくなんか起きるんだろう。だってプログラマがそう言ってるし」と仮定する。

だからtryブロックもcatchブロックも両方とも実行される可能性があると仮定する。
おまえがそう書いたんだからなんか発生するんだよ。コンパイラには想像もつかないが
なんか発生するらしい。

するとVALUEが二回初期化される可能性があるということになって、コンパイルエラーに
なる。
413デフォルトの名無しさん:04/10/10 05:21:54
>>409
いやべつに1.4でも+で普通に文字列連結できるだろ...
414デフォルトの名無しさん:04/10/10 06:55:20
ここは香ばしいインターネッツですね
415デフォルトの名無しさん:04/10/10 08:35:28
フィールド変数は初期値を与えない場合は自動的に型に応じた初期値が与えられる。これは言語仕様。
例えばint なら 0 boolean なら false

「(フィールド変数のfinalは)宣言時に初期化しなければならない」
javaの認定試験の本に書いてありました。
416415:04/10/10 08:41:03
あ、ごめん

〜finalな変数の初期化〜

staticなフィールドなら静的初期化子で初期化することもできるとあった・・・。
417デフォルトの名無しさん:04/10/10 08:42:54
非staticなフィールドの場合定義の場所で初期化せずに、コンストラクタで初期化することもできる。とあった。
418デフォルトの名無しさん:04/10/10 08:46:47
>>417
オレ的にはそれが気持ちいい。
非staticなフィールドはインタンス生成さられたときに初期化されると考えるほうが自然じゃないかな?
じゃないと生まれる前から運命が決まってるみたいで( ´Д`)キモッ
419403:04/10/10 10:29:41
>>405
getterはクラス内で変更できちゃうからやだ。

>>412
たぶんその理由でしょうね。
でも、例外がどの文で発生する可能性があるという事はコンパイラにはわかっているので、フロー解析は可能。
フロー解析すれば、2回は割り当てないことは明白なので、コンパイラの手抜きだと思います。

>>416
だから最初っから「スタティックイニシャライザ」って書いています。知らない単語が出てきたら
ぐぐってから話題に参加して欲しいです。
420デフォルトの名無しさん:04/10/10 10:53:26
>>407
CLASSPATHに1.4のライブラリが通ってたりしない?
421デフォルトの名無しさん:04/10/10 12:23:42
>>403=419
>でも、例外がどの文で発生する可能性があるという事はコンパイラにはわかっているので、フロー解析は可能。

確かにコンパイラは例外がどの文で発生する可能性があるかわかるけど
class ファイルになるとその情報は消えてしまうので実行時にはわからなくなってしまうのですよ。
つまり実行時のことを考えると、初期化に失敗して投げられた例外をキャッチしたのか
初期化は成功したもののその後投げられた例外をキャッチしたのかが区別できないので
コンパイラはそういうエラーメッセージを出すわけです。
422デフォルトの名無しさん:04/10/10 12:26:43
その後投げられた例外を → その後別の処理をして投げられた例外を
423デフォルトの名無しさん:04/10/10 12:30:28
代入で起こるRuntimeExceptionってどんなのがあるの?
424デフォルトの名無しさん:04/10/10 12:33:07
前からずっと気になってました。Java の
new っていうのは演算子なんですか? メンバ関数なんですか?
425デフォルトの名無しさん:04/10/10 12:58:16
>>424
言語仕様の用語で言えば、new は演算子でもメンバ関数でもない。
オレ用語なら勝手にすればよいのでは?
426デフォルトの名無しさん:04/10/10 13:03:13
>>425
っつか、言語仕様ではメンバ関数って使ってないような……
427デフォルトの名無しさん:04/10/10 13:07:10
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/other.html

sunのページには「new Operator」って書いてますが
operatorって演算子だよな
428424:04/10/10 13:13:34
いや、というのも私はもともとC++の人間だったんですよ。
C++だと new と delete は演算子と見なされてます。

で、Java で非静的メンバクラスのインスタンスを生成するときに
TopClass e = new TopClass();
TopClass.NonStaticMember i = e.new NonStaticMember();
って書きますけど、じゃあこの場合2行目の new は e のメンバなのか? って疑問に持ったので。

注)  TopClass ∋ NonStaticMember
429デフォルトの名無しさん:04/10/10 13:15:50
>>407
public class TigerTest {
public static void main(String[] args) {
int code = 10;
String s = "コードは" + code + "です。";
System.out.println(s);
}
}
とりあえずこのコードはコンパイルも実行も問題なくできた。
このぐらいのコードで再現するなら環境の問題と思われ。
貴重な情報だから環境晒してくれ

409は馬鹿だから無視すること
430デフォルトの名無しさん:04/10/10 13:16:29
>>427
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#41147
> Unqualified class instance creation expressions begin with the keyword new.
> An unqualified class instance creation expression may be used to create an instance of a class,
> regardless of whether the class is a top-level (§7.6), member (§8.5, §9.5), local (§14.3) or anonymous class (§15.9.5).

みたいに JLS では the keyword new とか the new keyword とかって書かれてます。

other operators で演算子なのは .、 ?:、instanceof だけのような…
単にC++の慣習が抜けてない人が書いただけだと思われ。
431デフォルトの名無しさん:04/10/10 13:17:20
>>429
VerifyErrorが出るって事はコンパイル時のバージョンと実行時のバージョンが違ってるからだろう。
単に javac は 1.5 の、javaは 1.4 のものにパスが通ってると思われ。
432デフォルトの名無しさん:04/10/10 13:23:11
>>430
それって単に「予約語」って意味だろ?
433デフォルトの名無しさん:04/10/10 13:25:51
>>432
そうだよ。Java言語仕様では「new演算子」とは呼ばないって話だから。
434430:04/10/10 13:26:19
>>431
いや、(オプション無しで)1.5のjavacでコンパイル、1.4.2_04のjava.exeで実行すると、
うちではUnsupportedClassVersionErrorになる。実行すらされない。

>実行したら、下の様な文字列連結の部分で実行時エラーが出てしまいました。
なんてことにはならないのだよ。

Exception in thread "main" java.lang.UnsupportedClassVersionError: TigerTest (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)

だから407の情報が欲しい。
435デフォルトの名無しさん:04/10/10 13:38:03
参考までに
C#では「new」を「新しい式」と呼ぶ。
436デフォルトの名無しさん:04/10/10 13:39:42
機械翻訳?
437デフォルトの名無しさん:04/10/10 13:41:06
>>435
C# では new は演算子だったような。
438407:04/10/10 13:42:14
>>434
java.lang.VerifyError: (class:〜) Incompatible object argument for function call

環境はJBuilder7なんです。
+による文字連結の部分で実行時VerifyErrorが出てしまうのです。
439デフォルトの名無しさん:04/10/10 13:43:06
>>436
>>435 のはコンパイルエラーに出てくる文言ね。
他に訳しようが無かったのかな?
440407:04/10/10 13:43:33
1.4を削除した後に、JBuilderのJDK設定を1.5にして、それで再ビルド
して、実行してもそうなってしまうのです。
441デフォルトの名無しさん:04/10/10 13:45:58
内部コンパイラ使ってるんじゃない?
StringBufferが微妙にかわったらしく、コンパイラとライブラリの対応が食い違うとそうなるみたい。
442デフォルトの名無しさん:04/10/10 13:48:53
>>393提案のテンポラリ変数方式で回避できたのでどうでもといえば、どうでもいいのですが。

>>421
> 初期化は成功したもののその後別の処理をして投げられた例外
VALUE=1の後に別の処理は無いのだから、コンパイラは初期化が成功した後には
例外が発生する可能性が無いということは追跡可能なはずです。
try節の中も文単位でフロー解析しろよコンパイラ。
という主張です。
443デフォルトの名無しさん:04/10/10 13:51:37
>>441
そだね。
1.5 では StringBuffer から StringBuilder との共通部分を AbstractStringBuilder に追い出した。
で、AbstractStringBuilder#append() は AbstractStringBuilder を返し、
StringBuffer#append() は StringBuffer を返すというように covariant return type 使ってる。

それで verify error 出てるのかも。
444デフォルトの名無しさん:04/10/10 13:53:09
>>442
責めるならコンパイラじゃなく、
「例外が発生したとき」の処理は明示的に書けるのに
「例外が発生しなかったとき」の処理を明示的に書けない言語仕様を責めるべきだ。
445デフォルトの名無しさん:04/10/10 13:54:09
>>442
・クラスファイルになってしまえば追跡は不可能 (追跡する仕組みがないから)
・クラスファイルはコンパイラ以外からも生成可能

クラスファイルの仕様の問題であってコンパイラでは対応不可能。
446デフォルトの名無しさん:04/10/10 14:16:10
>>430 >>407
というわけでBorlandのサポートか、JBuilderのMLなりなんなりで相談した方がよさげ
447デフォルトの名無しさん:04/10/10 14:16:27
>>445
それならばクラスファイルになってしまえば二重初期化は検出できないので、
コンパイラがこれをエラーにするのは、余計なお世話という事になりませんか?
「スタティックイニシャライザの中なら何度でも割り当てていいぜ、最後の割り当てが有効」ならすっきりしますが。

>>444は結構説得力あります。
448デフォルトの名無しさん:04/10/10 14:23:00
>>442
そりゃフロー解析はできるだろうけど、そんなことしたら
"コンパイラの実装によって通ったり通らなかったりする"
ようなコードが世の中に流通することになる。困るよ.

言語仕様からはずれたソースを弾くのも
コンパイラの大事な仕事のひとつだよ。

言語仕様はなるべくシンプルにしておいて欲しいし
あのソースは弾くのが正しい挙動かと思われ。
449デフォルトの名無しさん:04/10/10 14:26:18
>>423
int x = 1 / 0;
450デフォルトの名無しさん:04/10/10 14:27:50
>449
それは代入前に右辺の演算だけでエラーが発生するのと違う?
451デフォルトの名無しさん:04/10/10 14:28:32
>>448
そうですね。
回避方法もあるのでこれで納得します。お付き合い有難うございました。
452デフォルトの名無しさん:04/10/10 14:30:09
int x = 2100000000 * 2100000000;
453デフォルトの名無しさん:04/10/10 14:30:44
long x = Long.MAX_VALUE + 1;
454デフォルトの名無しさん:04/10/10 14:31:10
すいません、Javaの変数は値渡しだということで質問です。

例えば1Gバイトの超巨大ファイルをバイナリーデータとして
バッファに読み込み、全てバイト配列にコピーしてreturnするような
メソッドを作ったとします。
すると、呼び出し側で用意する受け用のバイト配列と合わせ、
実に3GBのメモリが必要になると思うのですが、マジな話なのでしょうか。
455デフォルトの名無しさん:04/10/10 14:32:49
ばか、配列は参照渡しだ
456デフォルトの名無しさん:04/10/10 14:33:16
すべての配列型は
Objectクラスを継承する
457デフォルトの名無しさん:04/10/10 14:34:09
>>454
ウィンドウを関数に渡したらウィンドウが二つ作成されるとでも?
458デフォルトの名無しさん:04/10/10 14:35:36
>>452-453
ダウト

>>454
配列は参照値の値渡しになる。
459デフォルトの名無しさん:04/10/10 14:52:20
Object o = new ArrayList();

ArrayList a = o;
460デフォルトの名無しさん:04/10/10 15:13:22
えっと、コンパイルエラーがでるよね?っていうはなし?
461エスパー:04/10/10 15:23:20
>>460
392がコンパイラの手抜きなら459もコンパイラの手抜きってことになるな。
と言っているのではないかと。
462デフォルトの名無しさん:04/10/10 15:44:18
配列に限らずオブジェクトは全部参照渡しだろ。というかnewしたら返ってくるものって参照だし。
配列もオブジェクトだし。
463デフォルトの名無しさん:04/10/10 15:46:46
よく本にJavaは値渡しだってかいてあるんだけど、あれって微妙な言い回しだな。
確かに渡す時に参照を勝手に作ったりはしないんだけど、参照を値渡ししてるって
説明が抜けてるんだよなあ。
464デフォルトの名無しさん:04/10/10 16:13:15
変数はすべて値渡し。

「変数」にたまたま「オブジェクトインスタンスへの参照」が入っていたら、
「オブジェクトインスタンスへの参照」を値渡しするだけ。
呼び出し先メソッドで何があっても、呼び出し元の実引数の「変数」はなんら影響を受けない。

言ってるの同じことだけどね。
465デフォルトの名無しさん:04/10/10 16:43:27
またこの話か
466デフォルトの名無しさん:04/10/10 17:08:30
連休で雨でみんなヒマなんだよ。
467デフォルトの名無しさん:04/10/10 17:44:49
基本部分の話になると一番盛り上がるとは、何と言っていいのか。。。
468& ◆LMRaV4nJQQ :04/10/10 18:43:26
Javaで言ってる参照と、参照渡しと言うときの参照でまったく意味が違うんだから、
むしろ参照を値渡しするなんて表現のほうがよっぽど意味不明じゃないのか?
俺はそういう風に解説してる本やサイトのほうが問題だと思うが。
469デフォルトの名無しさん:04/10/10 18:52:09
ぽかーん。
470デフォルトの名無しさん:04/10/10 18:53:13
「参照の値」ってのが理解できない奴にはなんと言っても無駄。
471デフォルトの名無しさん:04/10/10 19:13:58
Cがわかっているなら自由に値を操作できないポインタと考えればすぐにわかるはずだが
472デフォルトの名無しさん:04/10/10 19:22:41
>>469
変数の参照の場合、オブジェクトの参照を指しているという意味。

Object a = b;
a = new Object(); // b は影響を受けない。

一方、参照渡しの場合変数への参照を渡すと言う意味。

myMethod( Object a )
{
 a = new Object(); // 仮に参照渡しなら、b が影響を受ける。
}
myMethod( b );

まったく別のものに同じ言葉を用いているから455や462のような馬鹿が混乱する。
参照の値渡しとか、参照の参照渡しとか、値の参照渡しとか、そういう表現することが問題を生む。
473デフォルトの名無しさん:04/10/10 19:47:36
さらにぽかーん
474デフォルトの名無しさん:04/10/10 19:52:45
> 一方、参照渡しの場合変数への参照を渡すと言う意味。
これが間違い。
「参照渡し」は「参照を渡す」でなく「参照で渡す」だろ。
475デフォルトの名無しさん:04/10/10 20:15:50
>>474
日本語不自由な人?
476デフォルトの名無しさん:04/10/10 20:23:02
pass by reference の日本語訳である「参照渡し」だけを見て
「参照を渡す」と解釈するのは相当アレだろ。
477デフォルトの名無しさん:04/10/10 20:28:44
>>476
「参照で渡す」ことと「参照を渡す」ことに本質的な違いがあるようには思えないが?
「メールで送る」などと言う場合、それは「メールを送る」ことに他ならない。

第一主題はそこじゃない。
478デフォルトの名無しさん:04/10/10 20:36:45
> 「参照で渡す」ことと「参照を渡す」ことに本質的な違いがあるようには思えないが?
全然違うね。
「値渡し」と「参照渡し」が区別されてるのは、
渡されるのが参照なのか値なのかが違うのかを区別したいのではなく
渡すときに、参照で渡すのか値で渡すのかを区別したいんだよ。
479デフォルトの名無しさん:04/10/10 20:41:37
>>478
「参照を渡す」と言っている「参照」は、Javaの「参照」とはまったく別物なんだが。
478の一番最後の行で「参照で渡す」と言っているときに渡されている何物かを称して「参照」と呼んでいる。
480デフォルトの名無しさん:04/10/10 20:49:19
> 478の一番最後の行で「参照で渡す」と言っているときに渡されている何物かを称して「参照」と呼んでいる。
違う。
渡されている何物かが「参照」だから「参照渡し」なのではなくて
渡している方法そのものが「参照渡し」なんだよ。
481デフォルトの名無しさん:04/10/10 21:04:29
>>480
視点が違うだけ。
俺は「参照を渡す」ことを「参照で渡す」ことと同じ事象を別の表現で書いたに過ぎない。
もし480が、この2つは違う事象だ、と言うならそれは俺の表現がつたなくて誤解を与えてしまったと言うことだから謝る。
482デフォルトの名無しさん:04/10/10 21:05:37
みんなレトリックであそぶのが好きですね。
483デフォルトの名無しさん:04/10/10 21:05:57
>>481
視点が違う、ねぇ。

では、>>479 の定義で例えば C/C++ でポインタ渡したら何故「参照渡し」で悪いのか?
それとも渡されたのがポインタだから「ポインタ渡し」になるのか?
484デフォルトの名無しさん:04/10/10 21:10:20
>>483
ポインタ渡したらポインタ渡しでそ。
485デフォルトの名無しさん:04/10/10 21:11:08
やべ、また言葉足らずだ。
ポインタの値渡し、ね。
486デフォルトの名無しさん:04/10/10 21:13:31
>>484
「参照渡し」で何故悪いのか? にも答えてね。
487デフォルトの名無しさん:04/10/10 21:17:12
VMの解説には参照という言葉が出てくるけど、これはVM実装者が知ってればいい事で、
参照などと呼ばずにObject IDとでも呼べば混乱しない。
488デフォルトの名無しさん:04/10/10 21:19:31
>>486
int i;
func( &i );
なら参照渡しと同じようにも見えるけど。

int *pi = &i;
func( i );
は明らかにポインタの値渡しでそ。
489デフォルトの名無しさん:04/10/10 21:22:11
>>488
答えになってないよ。
「参照渡し」で何故悪いのか? に答えてね。

490デフォルトの名無しさん:04/10/10 21:30:13
>>489
「参照を渡し」ても「参照で渡し」てもいない。
参照渡しと呼ぶ理由が無いでしょ。
491デフォルトの名無しさん:04/10/10 21:31:59
そうだよねぇ。
オブジェクトIDと呼んでれば、かなりすっきり。
492デフォルトの名無しさん:04/10/10 21:33:30
>>490
では、ポインタと「参照」の違いは何?
493デフォルトの名無しさん:04/10/10 21:34:17
>>487
object ID って名前は VM の実装で使われているから無理っぽ
494デフォルトの名無しさん:04/10/10 21:36:30
>>492
無関係な質問やめてくれ。
値渡しの「値」と、参照渡しの「参照」の違いなら意味があるだろうけど、
ポインタと参照の違いはこの際関係ない。
495デフォルトの名無しさん:04/10/10 21:36:43
なんか、「どちて坊や」がいるね。
496デフォルトの名無しさん:04/10/10 21:37:42
>>494
関係あるね。「『参照』を渡す」なら「参照」の定義は非常に重要。
497デフォルトの名無しさん:04/10/10 21:39:03
>>494
> 値渡しの「値」と、参照渡しの「参照」の違いなら意味があるだろうけど、
ポインタが「値」であって「参照」でない理由は? でも良いよ。
498デフォルトの名無しさん:04/10/10 21:46:44
FAQなんだし、このスレ的ベストな解説を考えてみてはどうだろ?
#よっぽど建設的だと思うけど
499デフォルトの名無しさん:04/10/10 21:49:21
>>498
無理無理。

「参照」も「参照渡し」も一人一人ちょっとずつ違う意味で使ってるんだから。
一人一人に別の解説が必要になるのでベストな解説なんて作れない。
500デフォルトの名無しさん:04/10/10 21:50:56
普通参照渡しって言ったら Fortran みたいな引数の渡し方を言うんであって
Java の場合参照値だろうがそうでなかろうが参照渡しではありえない。
501デフォルトの名無しさん:04/10/10 21:51:07
そうそう「参照渡し」すなわち pass by reference が「参照を渡す」なら
pass by name は「名前を渡す」で、渡されるのは「名前」なのかな?
502デフォルトの名無しさん:04/10/10 21:51:25
わけわからずかき乱すやつがいるからなぁ。
503デフォルトの名無しさん:04/10/10 21:53:03
(;´Д`) まだやってる・・・
504デフォルトの名無しさん:04/10/10 21:55:46
>>501
そのとおり名前だよ。遅延評価を実装してる処理系 (関数型言語に多い) ではたまにある。
505デフォルトの名無しさん:04/10/10 21:57:13
47x位のころに話してたのと今質問してるやつ別人じゃないか?
質問が的外れと言うか頓珍漢と言うか、レベルが下がってる。

>>497
ポインタは値じゃない。ポインタの値はあるが。
ポインタは参照じゃない、とは言い切れない。
ぬるぽはnull参照に対して出る。一方C++の参照とポインタは明確に別物。
そんなのは単語のローカル定義に依存する。
506デフォルトの名無しさん:04/10/10 22:01:41
>>505
答えになってないね。
単語のローカル定義なら C/C++ のポインタと「参照渡し」の「参照」で。
507デフォルトの名無しさん:04/10/10 22:03:26
>>504
違うね。名前に関連付けられた変数を渡すんだよ。
名前だけ渡したって意味ないだろ。
508デフォルトの名無しさん:04/10/10 22:08:20
>>493
じゃあ、いっその事「おぶぽ」と呼ぼう。
「おぶぽ」はオブジェクトを識別するものの名称であって特に何かの短縮系ではない。
509デフォルトの名無しさん:04/10/10 22:10:12
>>508
自分で勝手に呼べば良いのでは?
それで他人と話が通じなくなっても知った事ではないが。
510デフォルトの名無しさん:04/10/10 22:17:53
Javaでプログラム書いてる人間なら
みんなわかってる話のはずなのに、
なんでこんなにかみあわないのかと。
511デフォルトの名無しさん:04/10/10 22:19:46
>>507
細かいけど、変数じゃなくて引数じゃない?
512デフォルトの名無しさん:04/10/10 22:21:18
>>510
みんなわかってる、ってのが幻想だから。
基礎に近いところほど(正しくないかもしれない知識でも)暗記して
応用に突っ走る方が効率が(っつーより給料が)良いからさ。

例えば他人に読めるなら漢字の書き順違ってても良い、みたいな。
513デフォルトの名無しさん:04/10/10 22:22:27
>>506
C/C++の「ポインタ」と「参照渡し」の「参照」じゃ名前も機能も何の関連も無いよ・・・。
せめてC++の「参照」と、「参照渡し」の「参照」の違い、とかならまだしも。

C++の場合:
「ポインタ」は別の変数のアドレスを保持している変数で、
逆参照やインクリメントなどのいわゆるポインタ演算が出来る。
「参照」は別の変数の別名として使用できる変数。
式の結果参照できたり、const参照とか扱いが変わるので厳密には違うが・・・。
変数の一種としての「参照」と、「参照渡し」の「参照」は同じ代物。

つーか、だから何?
もしかして質問攻めにして揚げ足取るタイミング見計らってる?
こういう厨は放置したほうがいいのか・・・?

>>507
別に名前だけ渡しといて、受け手がその名前をキーにして値をとってくることも出来るんじゃないか?
# 結果的に値も渡してるのでどうでもいいが・・・。
514デフォルトの名無しさん:04/10/10 22:23:37
つまり──
不立文字[ふりゅうもんじ]なのだ。言葉で完全に明確に表すことは不可能。
この一点における限りJavaは禅に通じる。……あれ?
515デフォルトの名無しさん:04/10/10 22:24:50
>>513
ちっとは自分で考えろ。馬鹿に考えさせるように質問出してるんだから。
516デフォルトの名無しさん:04/10/10 22:26:01
>>512
たとえ話の下手くそな奴だ。
517デフォルトの名無しさん:04/10/10 22:28:13
 処理能力を奪わないでバックグラウンドで処理を行うようなプログラムをJavaで
作りたいのですが、どうやればいいのでしょうか?
 自分では、単純にメインスレッドの優先度を下げればいいように思いますが、
それでは、VMの中に存在するプログラムの中で優先度が低いという事になるような
気がします(ここらへん理解があいまいなんでご教授いただけたらと思います)。
 よろしくおねがいします。
518デフォルトの名無しさん:04/10/10 22:29:45
>>515
すまん。馬鹿でした。
次からは放置するようにします。
519462=463:04/10/10 22:34:25
オブジェクト参照を値渡ししてるんだよ。それでなんか問題あるのか?
520デフォルトの名無しさん:04/10/10 22:35:41
無いよ。
521222:04/10/10 22:48:24
質問があります。
クラスAからクラスBのmainメソッドを呼び出す処理を
したいのですが、エラーになってしまいます。
別クラスのmainメソッドを呼ぶことは出来ないのでしょうか?
522デフォルトの名無しさん:04/10/10 22:57:53
>>521
できます。
523デフォルトの名無しさん:04/10/10 23:07:16
>>517
それはJavaの外側の話になるね
そのOSでのプロセス優先度の変更方法を調べてくれ
524デフォルトの名無しさん:04/10/10 23:13:04
>>521

String[] args = new String[0];
ClassB.main(args);
525デフォルトの名無しさん:04/10/10 23:16:32
>>513
>別に名前だけ渡しといて、受け手がその名前をキーにして値をとってくることも出来るんじゃないか?
># 結果的に値も渡してるのでどうでもいいが・・・。

call by name では関数内部で使われてない引数は値を渡さない
(というか評価において必要になるまで値をとってこない)。
例えば int zero(int x) { return 0; } なんて関数を zero(1/0) なんて呼び出そうとすると
call by value では 1/0 が先に計算されるのでエラーになるが
call by name では (内部で x が使われてないから 1/0 が計算されないので) 普通に 0 が帰ってくる。
526517:04/10/10 23:18:12
>>523
 解決方法としてはVMの優先度を下げるという事でしょうか?。それとも
ネイティブのソースを書いてどうにかしてVM内のそのプログラムの優先度
を下げるという事をしなくてはならないのでしょうか?
 後者の場合は、私のスキルではちと大変そうです。
527222:04/10/10 23:27:16
>>524
>String[] args = new String[0];
>ClassB.main(args);
この方法でコンパイル通りました。
有難うございます。
528デフォルトの名無しさん:04/10/10 23:27:23
>>526
java.lang.Thread#setPriority(int) とか
java.lang.ThreadGroup#setMaxPriority(int) とかじゃダメなん?

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Thread.html#setPriority(int)
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/ThreadGroup.html#setMaxPriority(int)
529デフォルトの名無しさん:04/10/10 23:33:58
>>526
unixだったらnice java ClassNameで下げられるだろ。ウイソは知らぬ。
530デフォルトの名無しさん:04/10/10 23:38:22
ウィンドウがアクティブ?(前面にある)時はテキストフィールドにいつでも書き込めるよう常にこの”|”の点滅してるやつみたいなの
ある状態にしたいんですけどこれはどこのクラスでしょう?
531デフォルトの名無しさん:04/10/10 23:43:56
>>528
それはJava仮想マシンの中でスレッドの優先順位が下がるだけ。
>>526がいってるのはJavaプログラム自体の優先度を他の(ネイティブの)プログラムより
下げたいという話。
532デフォルトの名無しさん:04/10/11 00:18:27
>>531
java.lang.Thread#setPriority(int)
でJava仮想マシンのメインのプロセス(スレッド)の優先順位下げればいけるよ。
俺も昔重いソフト作って、他のネイティブアプリが動作不能になったからメインスレッドの優先順位下げたらいけたよ。

俺の手持ちの資料では、javaのスレッドはwindows環境ではネイティブwin32スレッドに変換されて実行されるので、優先度がOSの動作に影響されるよ。

以下、資料からのコピペ。

javaの優先順位  : win32の優先順位

1,2 :THREAD_PRIORITY_LOWEST
3 :THREAD_PRIORITY_BELOW_NOMAL
4,5,6 :THREAD_PRIORITY_NOMAL
7, :THREAD_PRIORITY_ABOVE_NORMAL
8,9 :THREAD_PRIORITY_HIGHEST
10 :THREAD_PRIORITY_TIME_CRITICAL

優先度下げすぎると、環境によっては、windowsのセキュリティー関連サービスよりも優先されなくなって、かなりパフォーマンスが落ちるケースがあるようです。
533デフォルトの名無しさん:04/10/11 00:23:04
メインのプロセスっていうのは、いま実行してるメインの処理系。
public static void main(String args[]){

Thread.setPriority(3);

}

みたいな感じでコード書けばOK
534デフォルトの名無しさん:04/10/11 00:42:38
勉強になった!
535デフォルトの名無しさん:04/10/11 02:01:36
class Hoge {
Fuga[] fuga;
int size;
public Hoge(int size) {
this.size = size;
this.fuga = new Fuga[size];
}
public void print() {
for (int i = 0; i < size; i++) { System.out.print((fuga[i]).isSize()); }
}
public static void main(String[] args) {
Hoge hoge = new Hoge(3);
hoge.print();
}
}
class Fuga {
int i;
public Fuga() { this.i = 3; }
public int isSize() { return this.i; }
}
が だめな理由を教えてください.
536デフォルトの名無しさん:04/10/11 02:06:17
fuga[0]〜fuga[2]がぬるぽ
537デフォルトの名無しさん:04/10/11 02:23:15
isSizeがダメだと思う。
538デフォルトの名無しさん:04/10/11 06:01:01
現在表示されている画面のピクセルの色を取得する方法はどんなものでしょうか?

特定のウィンドウを指定してその中のピクセルを取得する場合と、
複数のウィンドウが重なっている時、最前面のウィンドウの特定のピクセル(画面上の指定ピクセル)を取得とでは
539517:04/10/11 10:33:00
>>532
>>533
 非常にわかりやすい説明ありがとうございます。普通にスレッドの優先度を
下げればOKなんですね。これはラクチン!!
 ありがとうございました。
540デフォルトの名無しさん:04/10/11 10:39:07
staticなメンバーを普通にシリアライズはできないらしいんですが、staticなクラス
そのものをシリアライズする事はできるのでしょうか?
(書き込むクラスに含まれているstaticなクラスではなく、staticなクラスそのものを
書き込もうとした場合という事です)
どこぞの神おしえて!!
541デフォルトの名無しさん:04/10/11 12:07:35
staticメンバクラスのオブジェクトなら普通にできますよ。
542デフォルトの名無しさん:04/10/11 12:09:46
>>540
class A がstatic class Bを含んでるとして、Aのインスタンスを
シリアライズしても、当然、Bのインスタンスまではされないが、
static class Bのインスタンスのシリアライズは、これもまた当然
できます。
543デフォルトの名無しさん:04/10/11 12:15:29
>>541
>>542
 ありがとうございます。書き込んだ後、自分で調べてから書き込め!!って
言われそうだったので、実際にやってみたところ、普通にできました。
 親切にどうも。
544デフォルトの名無しさん:04/10/11 12:20:46
シリアライズしないようにする修飾子ってなんだっけ
545デフォルトの名無しさん:04/10/11 12:41:11
>>544
transient
546デフォルトの名無しさん:04/10/11 12:42:54
それだ! あー、すっきりした。
547デフォルトの名無しさん:04/10/11 13:28:21
servlet(tomcat)で同じディレクトリからPOSTしているの2つのプログラムで、
片方は問題なし、片方はHTTP method POST is not supported by this URL。
なんで?
548デフォルトの名無しさん:04/10/11 13:36:20
>547
tomcatのログとか、他のWWW鯖と連携させてるならその鯖のログとか読んだ?
549デフォルトの名無しさん:04/10/11 14:30:03
ダイアログを作成するときに、引数にfinalを付けないといけないようなエラーメッセージが表示されます。
finalをつけるとコンパイルはうまくいくのですが、そのままだとその引数の値を変更できないため困っています。
どうしたらよいのでしょうか?
550デフォルトの名無しさん:04/10/11 14:32:40
>>549
Javaの文法を勉強したらいいと思います。
551デフォルトの名無しさん:04/10/11 14:33:26
別の変数にコピったらだめなのか?
552デフォルトの名無しさん:04/10/11 14:40:44
>>548
読んだけど、エラーない。
ヒントない?
553デフォルトの名無しさん:04/10/11 15:25:09
>>549
ああ、そりゃその引数を、そのメソッドorコンストラクタ内にある
内部クラスで使ってるからでしょう。
その引数を、初めにfinal変数にコピーして、そのfinal変数を
内部クラスが使うようにすればOK


554538:04/10/11 21:27:55
何かヒントでもあれば教えてください...
555デフォルトの名無しさん:04/10/11 21:32:22
>>538
全体のスクリーンショットなら
java.awt.Robot#createScreenCapture(java.awt.Rectangle)
でとれる。
556デフォルトの名無しさん:04/10/11 22:30:53
ありがとうございます。
なるほどこれ使えばいいんですね。

ところで
陰に隠れて見えないウィンドウの特定のピクセルを取得するなんてことは
可能なのでしょうか?
557デフォルトの名無しさん:04/10/11 23:34:25
>>556
普通の方法ではできない、と思うけどわからんちん

もしかしたら
BufferedImage作ってcreateGraphics()して
そのウィンドウのpaint()に渡す、とかでできるかも
558U ◆CZtFsGiu0c :04/10/12 00:25:37
>>547
えーと、整理すると同じコンテキスト以下に2つのサーブレットがあって、そのサーブレット
に対するPOSTリクエストを投げると片方は成功、片方はエラー、というlことでいい?

エラーの出るサーブレットはdoPostをオーバライドしてますか?
559デフォルトの名無しさん:04/10/12 01:46:11
だれか>>530分かりませんか?
フォーカスが変わってもすぐにテキストフィールドに戻したいのですが。
560デフォルトの名無しさん:04/10/12 01:52:32
>>559
java.awt.Componentやjavax.swing.JComponentのrequestFocusやrequestFocusInWindowでどう?
561デフォルトの名無しさん:04/10/12 16:09:18
Javaアプレットを起動させようとしたのですが、
アプレットビューアで起動させたところ
「Start:アプレットは初期化されていません」
と出てきます。
どうしたらいいんでしょうか?おねがいします・・・
562デフォルトの名無しさん:04/10/12 16:25:57
こまったね。
勝手にこまってろとしかいいようがないけどね。
563デフォルトの名無しさん:04/10/12 17:18:36
他人が作った Java Beans(JAR ファイルに格納されている)を
自分のアプレットから使うときって
その JAR ファイルも一緒にパッキングしなくちゃならないんですよね?

その場合 {自作のクラスファイル、Beans が入った JAR ファイル} を纏めるんですか?
じゃあ、JAR ファイルをそのままもういちど JAR にしてしまっても大丈夫なんですか?
564デフォルトの名無しさん:04/10/12 17:28:14
libファイルだと思えばいい
基本的に組み込んじゃだめというライブラリがあるとは思えないから
Jarの中に組み込んでいいと思うけどね
LGPLでもライブラリ部分の差し替え方法を明記すればいいだけなので
Jarコマンド使ってくださいと書けばいいだけ
565デフォルトの名無しさん:04/10/12 17:33:44
>>564
JAR ファイルの中に2重構造で JAR ファイルがあっても問題ないんですよね…?
566デフォルトの名無しさん:04/10/12 17:37:32
>>565 クラスローダを自分で作ればね。
567デフォルトの名無しさん:04/10/12 17:49:17
>>565
ねたじゃなくて本当にわからないようだから教えると
org.〜とかcom.〜以下をコピーする

たしかJBuilderとかだとこのへん自動でやってくれたな

ただしJavaSoundのSPIとかそういうのはclassファイルだけではだめで
META-INFの中もこぴーとかある
568デフォルトの名無しさん:04/10/12 18:22:12
>>561
せめて「Java アプレット 初期化」くらいはググれよ。

上の方に出てきたやつ:
ttp://msugai.fc2web.com/java/applet/
569デフォルトの名無しさん:04/10/12 18:24:21
>>563
beansが入ったjarファイルをjar -xf で展開して、自作のクラスをjar化するときに一緒に
まとめたら、クラスパスとか分かりやすい。
570デフォルトの名無しさん:04/10/12 19:41:06
>>563
素直に別jarにして、アーカイブ指定を両jarしてやればよいのでは?
まとめる必要はないよ。
jarファイルは複数指定できるよ。
571デフォルトの名無しさん:04/10/12 20:32:56
突然お邪魔します。
外国為替証拠金取引とかなんとかいう相場表のJavaアプレットをホームページ
にくっつけたいと試みているのですがうまくいきません。
 ttp://www.saxobank.com/?id=485&Lan=JA&Au=2&Grp=6-12
上のサイトから会員登録してソースを入手したんですが動かない!
色々ためしたんだけど動かない!

ちなみに<head>内に下記のソースを入れてます。
<script language="JavaScript" src="http://cs.iitech.dk/Site/PartnerProgramme/Scripts/DCQuoteList.asp?ID=与えられたIDが入ります"></script>

そして<body>タグ内に
<script language="javascript">
QuoteListFull('EURUSD|USDJPY','Bid|Ask|Time','Symbol,bid,ask,GMT','210','','FFFFFF','FFFFFF','000000','','','','406449');
</script>
を入れます。

画面は表示されますが、肝心の相場などが表示されません!
長々とスイマセン。知ってる方いらっしゃいますか?


572デフォルトの名無しさん:04/10/12 20:45:55
                        |
                        |  
      ∩___∩              |  ぷらぷら
      | ノ  _,  ,_ ヽ        ((   |
     /  ●   ● |         (=)>571
     |    ( _●_)  ミ _ (⌒)    J  ))
    彡、   |∪|  ノ  
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ
573デフォルトの名無しさん:04/10/12 20:46:13
フィールドの敬称に関する質問です。
既に存在するParentクラスのprintTeisu()のロジックを
継承して使いたいとします。

しかし、下のようなChildクラスを作っても、出力されるのは
"parent"になります。
"parent"をなんとか表示させる(=printTeisu()の中で、Childクラスの
定数を参照させる)方法は無いのでしょうか。

public class Parent{
private static final String TEISU = "parent";
protected void printTeisu(){
System.out.println(TEISU);
}
}
public class Child extends Parent{
private static final String TEISU = "child";
}
public class Test{
public static void main(String[] args){
Child c = new Child();
c.printTeisu();
}
}
574573:04/10/12 20:47:06
すいません、
>"parent"をなんとか表示させる



"child"をなんとか表示させる

でした・・。
575デフォルトの名無しさん:04/10/12 20:58:11
>>574
リフレクションを使ってみる。
576デフォルトの名無しさん:04/10/12 21:12:56
>>573
public class Child extends Parent{
  private static final String TEISU = "child";
  protected void printTeisu(){
    System.out.println(TEISU);
  }
}
childクラスをこうすればOK
577デフォルトの名無しさん:04/10/12 22:31:12
こんばんは、すごくいやみな書き方かもしれないです。が。
親のPrivate フィールドを、子でも使うな。
というのを、書いてあるのを読んだことあります。
メンテナンスって言うのも大事ですので、オブジェクトだし。
578デフォルトの名無しさん:04/10/12 22:34:18
>>577
親のprivateフィールドをどうやって子が使うんだよバーヤ。
579デフォルトの名無しさん:04/10/12 22:47:15
何で、バーヤってわかるんですか。
580573:04/10/12 22:48:22
>>575
それはちょっと・・・

>>576
それもちょっと・・・printTeisu()は本当はちょっと長いメソッドなのです。
でも生TEISUに代えてprotectedのゲッターを使えばいけますね。
ちょっと納得いきませんけど。

>>577
ええ、ですから使いたくないのですが、使ってしまうので困ってます。
581デフォルトの名無しさん:04/10/12 22:53:14
>>580
どういう用途?
ロジックを使いまわしたいってことは、ライブラリ的な性質なんだろうけど
そのロジックのパラメータであるはずのフィールドが親がprivateでがっちり持ってるってこと?

ライブラリクラスなんだったら継承なんて考えずに、コピペ&別クラス作成でいいのでは?
親クラスを使う意味はないと思うんだが・・・
582573:04/10/12 23:07:26
>>581
だいたいおっしゃる通りです。
ちなみに、大元はフィールドでなく文字定数べた書きだったらしいですが、
いつからかstatic finalに書き換えられたらしいです。
こういう場合はコピペの方がいいんでしょうか?
583バーヤ:04/10/12 23:29:37
>>582
>>581サンの言いたいことは、
メソッドだけ別クラスじゃないでしょうか。
そうすれば、引数として、privateフィールドを宣言大丈夫でしょうから。
584デフォルトの名無しさん:04/10/13 04:40:29
static final → final
親クラスをコンストラクタで制御変わるように変更

これが無難だろうな。
親クラス変更できないならコピペ
585デフォルトの名無しさん:04/10/13 07:31:06
>>573
privateな変数はもともと外部からのアクセスを想定していない。
それを使うこと自体が間違い。
親のロジックが使いたいなら、superを使って呼び出せばいい。
親には親のプライバシーがあるってことだ。
それがオブジェクト指向の考え方。
586デフォルトの名無しさん:04/10/13 08:41:07
>>585
この場合はsuper使っても同じことだと思われ・・
587デフォルトの名無しさん:04/10/13 13:22:01
なんか継承したメンバ変数を、親の物と勘違いしている気がする
abstract class A{
private int i;
}

class B extends A{
public static void main(String[] args){
 i = 30; // エラーではない
}
}

……みたいな
588デフォルトの名無しさん:04/10/13 13:48:12
java始めて1ヶ月が経つのですが上達しません。
どうすれば上手になれますか?
589デフォルトの名無しさん:04/10/13 13:55:44
ひたすら書け!
何か作りたいものを決めて、途中で出てくる疑問をひとつずつ潰す。
あるとき突然すべてが頭の中でつながるときがくるんだよ。
590デフォルトの名無しさん:04/10/13 13:57:45
591デフォルトの名無しさん:04/10/13 14:00:34
>>589-590
レスありがとう。
諦めずに頑張ります。
592デフォルトの名無しさん:04/10/13 14:09:40
>>590-591
ぶっちゃけ訳さなくても日本語ドキュメントがあるぞ
http://java.sun.com/j2se/1.4/ja/docs/ja/api/overview-summary.html
593デフォルトの名無しさん:04/10/13 14:39:11
検索してたら引っかかりました。

>>334>>339でコンボボックスについての書き込みがありましたが。
これ(複数列の表示)ってJDBCの場合でも行くんでしょうか?
例えばgetListCellRendererComponentとか・・・
594デフォルトの名無しさん:04/10/13 16:57:39
>>593
なんか2つの問題が切り離されてないぞ。
595デフォルトの名無しさん:04/10/13 20:30:34
JavaからTwainスキャナを使う方法はあるのでしょうか?
596デフォルトの名無しさん:04/10/13 21:13:16
<identifier> がありません。

って出てくるんですが何でしょう?
指摘されるのが全て『(』ばかりなんです。
597デフォルトの名無しさん:04/10/13 21:45:54
HTMLを解析するクラスとかないですか?

javax.swing.text.html
javax.swing.text.html.parser

がそれっぽいんですけど、使い方が判らなくて。
どういう風に使うんでしょうか?
598デフォルトの名無しさん:04/10/13 22:27:24
>>596
単に括弧の数があってないだけじゃないの。ちゃんとインデント入れてコーディングしてる?
599デフォルトの名無しさん:04/10/13 22:30:47
プログラミングって難しいですね。
授業についていけない・・・
600デフォルトの名無しさん:04/10/13 22:32:42
授業って出来ないやつに合わせて進めるのに。
それについていけないなんて気の毒だな・・・。
601デフォルトの名無しさん:04/10/13 22:39:23
>>600
それを言わないで・・・
予習・復習した方がいいですかね?
602デフォルトの名無しさん:04/10/13 22:42:13
自分でコードを書いてみること。
ごく単純な制御文の練習問題をいくつか解いてみること。
603デフォルトの名無しさん:04/10/13 22:45:00
>>597
たくさんある。
ttp://java-source.net/open-source/html-parsers

NekoHTMLはけっこう有名。
604デフォルトの名無しさん:04/10/13 22:59:48
Java言語勉強したいんですが、お勧めの本とかありますか?
605デフォルトの名無しさん:04/10/13 23:00:17
>>602
アドバイスありがとう。
頑張ります!
606デフォルトの名無しさん:04/10/13 23:02:47
授業のプログラミング楽だよね
講師といってもHITA○HIとかから来た雇いさんだから
全員100点でも構わないみたいで
みんな100点取ってるしw

試験問題が楽すぎて、後で教授から文句出たかもしれんが・・・w

授業とかいって、結局みんな好き勝手してたけどね
607デフォルトの名無しさん:04/10/13 23:11:49
うん。俺最初の日しか講義でなかったけど単位もらったよ。
608デフォルトの名無しさん:04/10/13 23:15:53
>>595
商用じゃなければ無料で使えるやつがgnome系のプロジェクトであった気が。
609デフォルトの名無しさん:04/10/14 00:06:12
うん。俺最初の日すら講義でなかったけどトップの成績だったよ。
610デフォルトの名無しさん:04/10/14 01:09:05
専門なんてプログラミングの実習がタイピングの練習状態らしいぞ
プリント写すだけらしい
611デフォルトの名無しさん:04/10/14 01:25:55
Javaで動的バインディングってできませんか?
C++で「仮想継承による動的バインディング」を勉強したのですが、
Javaではどういう手法があるのかわかりません。
612デフォルトの名無しさん:04/10/14 01:31:04
Javaはデフォルトで動的バインディングです。
613デフォルトの回答者:04/10/14 01:39:44
>>610
やるとこはちゃんとやるでしょ。
少なくともコンパイラの設計、実装くらいはしてもらわないと、
その学科を出ただけで資質を疑われてしまいますよ。
614611:04/10/14 01:45:35
612>>
言葉が足りなかったのと、私の知識が足りないためこういう返事を頂けたのだと思います。
申し訳ありません。

そのですね、
parent クラスにvoid func()関数があったとして、
parent クラスを継承したchild クラスがvoid func()関数を
オーバーライドしていたとします。
で、parent p = new child(); と言う形でnewしてやった場合、
p.func()で実行されるのはparent クラスのvoid func()関数ですよね?
(child)p.func()としてやればchild クラスのvoid func()関数を
実行する事が出来ますが、(child)と書きたくないのです。
615デフォルトの名無しさん:04/10/14 01:53:35
>>614
違うよ。
オーバーライドしてるなら p.func() で child#func() が呼ばれる。
逆に言うとオーバーライドされてるなら
p.func() で parent#func() を呼ぶには p = new parent(); しないといけない。
616デフォルトの名無しさん:04/10/14 02:05:49
>>610
少なくとも俺の通ってた、専門学校のとある科ではかなりの数の課題だったぞ……。
Javaだけで500はやる
617デフォルトの名無しさん:04/10/14 02:09:34
>>614
>で、parent p = new child(); と言う形でnewしてやった場合、
>p.func()で実行されるのはparent クラスのvoid func()関数ですよね?

Javaならそれでちゃんとchildのfuncメソッドを呼ぶぞ、確かめてみろって・・・
618611:04/10/14 02:25:40
>>615
>>617
確認してきました。
ちゃんとchildのfuncメソッドを呼んでました。

>>612
>>615
>>617
ありがとうございました。
小生の勉強不足を実感致しました。
619デフォルトの名無しさん:04/10/14 06:18:37
問題。
SunのJDK5.0でコンパイル・実行するとします。

final String name = false ? "はろ" : "わるど";
System.out.println(name);

とすると「わるど」が表示されます。
それでは、次のコードでは何が表示されるでしょうか?

final String name = false ? "はろ" : null;
System.out.println(name);
620デフォルトの名無しさん:04/10/14 06:37:08
???
621デフォルトの名無しさん:04/10/14 06:37:57
age
622デフォルトの名無しさん:04/10/14 06:40:21
623デフォルトの名無しさん:04/10/14 07:18:14
>>619
おかしいね
624デフォルトの名無しさん:04/10/14 08:19:36
>>619
ぬるぽ?
625デフォルトの名無しさん:04/10/14 08:45:17
String str;
URL url = new URL(getCodeBase(), "http://www.yahoo.co.jp/");
str = url.toString(); //ここを何にすればいいか教えてください
System.out.println(str);
626デフォルトの名無しさん:04/10/14 09:23:46
>>625
それで問題ないです
627デフォルトの名無しさん:04/10/14 11:19:44
>>625
何をしたいのか書いてないのに、何にすればいいかなんて分かるわけないだろ
628デフォルトの名無しさん:04/10/14 11:26:38
>>624
ガッ
629デフォルトの名無しさん:04/10/14 12:04:11
アドミニストレーターが実行するアプリの場合アプリ内でアクセス
権を制限する方法はありますか?
630U ◆CZtFsGiu0c :04/10/14 12:08:32
>>629
まず、アドミニストレーターとは何か、と何のアクセス権を制限したいかを
明確にしてください。
631デフォルトの名無しさん:04/10/14 12:12:44
>>630
すいません。アドミニストレーターは全ファイルにアクセス出来る権限のあるUSERで、
アクセス権は、java.io.*でお願いします
632595:04/10/14 13:29:21
>>608
サンキュー。

USBドライバを書いて、それをJavaから制御するしかないかも。
633デフォルトの名無しさん:04/10/14 13:42:16
>>624
そうなるはずだけど、JDK5.0ではそうならない。
634629:04/10/14 13:49:23
書き方が悪かったので直しました。
全ファイルにアクセス出来るユーザーがアプリを実行するとして、
そのアプリ内で、特定のディレクトリにのみファイル出力を許可する
ように出来るでしょうか?
具体的に書くと、ネット上の文字列から新たに作成するディレクトリ名を
取得した場合、文字列に"../../"が含まれるとシステムのディレクトリが
壊れたりしないでしょうか?
635デフォルトの名無しさん:04/10/14 13:51:16
>>633
少なくとも JDK 1.1 以降は "null" (と改行)が出力されるよ。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/PrintStream.html#print(java.lang.String)
> 文字列を出力します。引数が null の場合は、"null" が出力されます。
636U ◆CZtFsGiu0c :04/10/14 13:55:27
>>631
つまりアドミニストレーターとは、アプリケーション固有のユーザということ
ですね。java.io.*ということは、クラスファイルに対するアクセス制限という
ことですか?

ポリシーファイルを使用して、特定のプリンシパルに対してアクセス制限をする
エントリを追加すればできるんじゃじゃないですかね。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/PolicyFiles.html
637デフォルトの名無しさん:04/10/14 14:04:01
>>635
JDK5.0で試してみ。
ちなみに-source1.4以下を指定するとそのとおりに動く。
638デフォルトの名無しさん:04/10/14 14:05:08
>>634
外部から入力された文字列を、そのまんまディレクトリ作成等に使ったりしない
のがセキュリティの常識。
普通はサニタイズといって問題を起こしそうな文字(/とか\とか:とかとかとか)を
取り除いてから使う。

何をするか(ここではディレクトリ作成)によって危険な文字の集合が変わって
くるので、ちゃんと調べて万全を期すべし。
639デフォルトの名無しさん:04/10/14 14:05:44
できる。以上。


だけだとあんまりなのでヒントを。
File#getCanonicalPath()を使うと、「.」や「..」を除いて正規化された絶対パス名が得られるので、
そのパス名が指定したディレクトリ名を含むかどうか判断すればどうでしょう。
640デフォルトの名無しさん:04/10/14 14:22:51
>>637
あ、コンパイラのバグみたいね。
BugParade に報告されてるから次のリリースでは直ると思われ。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5105890

ちなみに、final String name = false ? "a" : (String)null; みたいにすると回避できるみたい?
641デフォルトの名無しさん:04/10/14 14:24:53
>>637
あと、-source 1.4 は関係無いような?
642デフォルトの名無しさん:04/10/14 14:40:37
>>641
元ネタのTheServerSide.COMの記事を読み違えてた・・・。
643デフォルトの名無しさん:04/10/14 16:22:13
 UNIX上でshellからjavaアプリケーションを動かす予定です。
javaアプリけーしょんの中で
UNIXで利用されている環境変数を使いたいのですが
そもそも環境変数をjavaアプリケーションで使うことは可能でしょうか?

#セキュリティの関係上アプリケーションとはいえ
#環境変数を取得することは可能かなぁと思いまして。

 調べたところ、getPropertyがもっとも近いようでしたが
こちらが意図した環境変数を取ることができないようでした。
(意図する=自分が設定した、という意味)

 ググってみましたが、java内で設定したプロパティを使うってあたりの
情報しか探せず書込しました。
もしそのような情報のあるサイトがあれば教えて頂きたいのですが…
644デフォルトの名無しさん:04/10/14 16:39:34
645デフォルトの名無しさん:04/10/14 16:45:53
env、awk、xargsあたりを組み合わせれば、
環境変数をすべてjava コマンドの-Dオプションに指定してから実行するスクリプトがかけそうな気がする。
646デフォルトの名無しさん:04/10/14 17:03:43
>>645
antってそういう風にフィルタコマンドかまして環境変数を手渡してたような気がする・・・
647>>629=>>634:04/10/14 18:14:16
>>638 >>636
サニタイズを加えてみます。ありがとうございました
648デフォルトの名無しさん:04/10/14 19:55:52
こんばんは、よろしくお願います。

JToolBar のメソッド add(Action a)で、JButton を追加したいのですが、
引数が、Actionであるのに、
いろいろ検索していると、
Action ac = new AbstractAction(){
処理
}
JButton bu = new JButton(Action);
JToolBar.add(bu)
このようになっている文を見つけました。
どうして、JButtonを引数に入れられるのでしょうか。
649648:04/10/14 19:57:26
訂正です。
JButton bu = new JButton(Action);
上記の部分
JButton bu = new JButton(ac);
です。すみません。
650デフォルトの名無しさん:04/10/14 19:57:45
>>648
APIリファレンスをよく読んでください。
add(Action a)は、今では推奨されないメソッドになってます。
よってボタンをaddする方が正しいのです。
651648:04/10/14 20:00:19
肝心な部分抜かしてます。
ほんとに申し訳ありません。
下記のところを参照しました。
ttp://www.sist.jp/~suganuma/cpp/man/Java/example/JToolBar1.txt
652648:04/10/14 20:04:56
>>650

そうなのですか。もっと上のAPI見ないといけないのかも。
ありがとうございました。
653デフォルトの名無しさん:04/10/14 20:18:34
>>652
いえ、上級じゃなくて普通のAPIリファレンス、java.docに
載ってるんですが。。。
java1.3以降は、推奨されませんと。。。
654デフォルトの名無しさん:04/10/14 20:44:01
JToolBar の親の Container に add(Component) が定義されてるよ
JButton は Component のサブクラスだから,このメソッドに渡すことができる.
655648:04/10/14 20:53:35
>>653
ありがとございます。そうかかれていました。
>>654

そういうことですか。
親切にありがとうございます。
皆様いろいろありがとうございました。


656デフォルトの名無しさん:04/10/14 22:14:53
アプレットで
url.openStream()
すると
access denied
って言われるんですけど、そういうものですか?

url は httpでyahooのサイトを指定してます
657デフォルトの名無しさん:04/10/14 22:18:08
>>656
そーゆーもん。
yahoo のサイトにアクセスできるのは yahoo にあるアプレットだけ。
658デフォルトの名無しさん:04/10/14 22:51:39
JTreeでディレクトリツリーを描く場合、
空のディレクトリはどう表現すべきなのでしょうか?
659デフォルトの名無しさん:04/10/14 23:14:50
空のディレクトリに見えるように表現すべきなのでは?
660デフォルトの名無しさん:04/10/15 00:04:31
つまり、
661デフォルトの名無しさん:04/10/15 00:41:53
空のディレクトリは常にExpand状態にすれば良いって事だな。
662デフォルトの名無しさん:04/10/15 00:58:16
っつか、JTree の(っつーかTreeUIの)アイコン使わないで自前のアイコン使えばいーだけのよーな気もするが。
663658:04/10/15 00:58:28
ディレクトリは枝、ファイルは葉で表すのが適当だろうけど、
枝と葉の違いは子を持っているかどうかだけみたいなので、
子を持たない枝とか、あるいは見えない・選択できない子を持った枝とか
作れないかなぁ、と思いまして。
664デフォルトの名無しさん:04/10/15 01:06:09
>>663
>>枝と葉の違いは子を持っているかどうかだけみたいなので、

違います。
665デフォルトの名無しさん:04/10/15 01:07:26
そんだけならディレクトリなら問答無用で javax.swing.tree.TreeNode#isLeaf() で false を返せば良いだけのような…
666658:04/10/15 01:09:53
>664
ガ━━━(゚Д゚;)━━━ン!!!!!
・・・ということは何か根本的な解決方法が見つかりそうですね
皆さんありがとうございます
667658:04/10/15 01:13:50
>public boolean isLeaf()
>このノードに子がない場合は true を返します。
>子のないノードと、子を持てないノードを見分けるには
>(たとえば、ファイルを空のディレクトリと区別するには)、
>このメソッドを getAllowsChildren と組み合わせて使います。

うわぁ、公式APIに・・・出直してきます

ありがとうございました
668デフォルトの名無しさん:04/10/15 01:17:18
>>666
JTreeのコンストラクタには複数の種類があり、その中に
asksAllowChidrenのパラメータを持つコンストラクタがあります。
それをtureにすると、各TreeNodeのコンストラクタ時にallowChildrenフラグを
tureにしたノードだけを枝とし、falseにしたノードを葉とします。
子の有無は関係なくなります。
669デフォルトの名無しさん:04/10/15 01:33:12
>>668
JTree は葉か節かの判断に TreeModel#isLeaf(Object) を使用する。
で、特に指定しなければ JTree は DefaultTreeModel を使用し、
コンストラクタで asksAllowChildren に true を渡さなければ
DefaultTreeModel は TreeNode#isLeaf() を見る、と思ったが。
もっとも、DefaultMutableTreeNode#isLeaf() だと子の有無を返しちゃうんだけど。

だから asksAllowChildren を false もしくは無指定で
isLeaf() のオーバーライドでもいけるはず。
670デフォルトの名無しさん:04/10/15 10:40:54
質問させてくれませんか?コンピュータサイエンスってどんな勉強してどんなことができるようになるのでしょうか?
マジレスです
671デフォルトの名無しさん:04/10/15 10:45:23
プログラミングだけに留まらず、あらゆる知識が必要です。
手始めに情報処理試験の勉強からはじめたほうがいいでしょう。
672デフォルトの名無しさん:04/10/15 11:06:54
質問です。

AppletとServletの通信でデータのやり取りする
Webアプリを作ってるんですが、
Appletから送信するデータ量が多くなると
その後の処理の画面で「400」や「403」などのバットリクエスト
エラーが出てしまいます。

データ量が少なかったら問題ないのですが・・・・・
どなたか思い当たる原因とか知らないですか?
673デフォルトの名無しさん:04/10/15 11:07:00
java.sql.Dateとjava.util.Dateの違いはなんですか?
674デフォルトの名無しさん:04/10/15 11:21:27
java.util.Dateは時・分・秒・ミリ秒まで保持しているが、
java.sql.Dateは時以下の単位の部分はゼロに正規化されている。
675デフォルトの名無しさん:04/10/15 11:28:19
>>674
サンクスコ
676670:04/10/15 11:36:15
>671
大学で何を専攻しようか迷っているんです。CSときくと格好いい感じがありますね。
どういったことができるようになるのか教えてもらえればありがたいです
677デフォルトの名無しさん:04/10/15 11:42:45
>>676
カコイイとかだけで選ぶとデジドカになるだけだからやめた方がいいぞ
678670:04/10/15 11:46:11
>677
ええ、今悩んでるんですよ。やりたいことが山ほどあるんです。そこでCS勉強すればどういったことができるようになるのか
と思ったんです。
679デフォルトの名無しさん:04/10/15 11:47:48
>>678
やりたいことがあるんならそっちに進めばいいじゃない
680デフォルトの名無しさん:04/10/15 11:55:30
>>678
>>679に賛成だ。
やりたいことが山ほどあるなら、なにができるかわからないことやらずに、やりたいことやれ。
681オブジェクトの複製:04/10/15 12:20:08
オブジェクトの複製について質問させて下さい。

ClassA a = new ClassA();

a.x = "xxxx";
a.y = "yyyy";
a.z = "zzzz";

ClassA b = a;

b.x = "XXXX";

とすると a.x も "XXXX"になってしまいますよね。
同メモリを参照しているからだと思うのですが、
これを別メモリにする方法を教えて下さい。
以上お願いします。
682デフォルトの名無しさん:04/10/15 12:21:37
>>681
ClassA b = new ClassA();
b.x = a.x;
b.y = a.y;
b.z = a.z;

b.x = "XXXX";
683681:04/10/15 12:24:48
>>682
申し訳ないです。
それをしたくなかったので質問しました。
他に方法はないでしょうか?
684デフォルトの名無しさん:04/10/15 12:34:52
同じオブジェクトなんだから同じメモリにあって当然だと思うが。
意図がわからない。
685デフォルトの名無しさん:04/10/15 12:35:42
>>683
Cloneableインタフェースを実装
686デフォルトの名無しさん:04/10/15 12:37:59
>>683
なんでそれをやりたくないん?
めんどくさいってだけなら、プログラマやめるかCommons BeanUtils使え。
687デフォルトの名無しさん:04/10/15 13:04:27
>>681
コピーコンストラクタ定義すれば?
public ClassA(ClassA original){
 x = original.x;
 y = original.y;
 z = original.z;
}
688デフォルトの名無しさん:04/10/15 13:08:13
>>686
めんどくさいというのもありますが、
自分の作成したところではないのであまり触りたくなかったのです。

Cloneableでできたようです。
皆さんありがとうございました。
689デフォルトの名無しさん:04/10/15 13:54:40
>>688
Cloneableにしてcloneを自作したり、コピーコンストラクタを自作
しなくても、もっと簡単にメモリごと複製する方法はあります。
690デフォルトの名無しさん:04/10/15 15:32:18
呼び出した側のフレームウィンドウだけを閉じたいのですが、
setDefaultCloseOperation(2);
ではできません。
フレームA上のボタンを押すと、フレームBが現れるイベントで実現したい
のです。
691デフォルトの名無しさん:04/10/15 16:23:38
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
でOK
692デフォルトの名無しさん:04/10/15 16:29:28
各種ファイルを簡単に印刷できるような便利なライブラリはありませんか?
フリーでも商業でもOK。
693643:04/10/15 16:55:53
遅れましたが、レスありがとうございました。

いろいろと検討したのですが、
SDKのバージョンが変更できないのと、引数が増やせないという話が
出たので、また別の方法でやろうということになりそうです。

ありがとうございました。
694デフォルトの名無しさん:04/10/15 17:12:54
class Test {
 private B b;
 public Test() {
  A a = new A(b);
  b = new B();
 }
}

こういう形のプログラムを書いてます。Aクラスの中でbのメソッドにアクセスしようとするとぬるぽになってしまいます。確かにaを作るときはbがnullなわけですが、そのすぐ後でbにインスタンスを代入してます。なぜぬるぽになってしまうんでしょうか?
695デフォルトの名無しさん:04/10/15 17:16:01
白紙のコピーとってから元の紙に絵描いてるから。
696デフォルトの名無しさん:04/10/15 17:41:27
aを作るとき渡すbがnullでどこ指すか分かってないからあとでbを作ってもaのbはnullのままってことですね。

では、AがBへの参照ほしくてBがAへの参照ほしい場合はどう書けばいいんでしょう?

class Test {
 private A a;
 private B b;
 public Test() {
  a = new A(b);
  b = new B(a);
 }
}

だとだめですよね・・・こういう場合何か定石があるのでしょうか?
697デフォルトの名無しさん:04/10/15 18:02:04
>>696
設計が悪いので設計を見直す
698デフォルトの名無しさん:04/10/15 18:02:44
まず両方を作ってから setXXX で互いにセットし合う。
699デフォルトの名無しさん:04/10/15 18:09:36
>>696
class Test {
 private B[] b;
 public Test() {
  A a = new A(b);
  b = new B[]{new B()};
 }
}

として、Aクラスの中では、b[0]に対してアクセスするようにすればOK
700デフォルトの名無しさん:04/10/15 18:12:37
C++なら参照があるから、スマートにできるんだけどね。。。
同じ参照でもえらい違いでずっこんばっこんじゃ
701デフォルトの名無しさん:04/10/15 18:22:43
すみません、jdk1.5のソースが見たいんですけど、どこ行けばいいですか?
702デフォルトの名無しさん:04/10/15 18:25:11
>>701
Sunのサイトかな
703デフォルトの名無しさん:04/10/15 18:25:45
サンマイクロシステムズと5.0のキーワードでGO
704デフォルトの名無しさん:04/10/15 18:52:01
>>697 >>698 >>699
アドバイスありがとうございます。

>>697
設計やっぱ悪いですか・・・
>>698
なるほど!さっそく使ってみます。
>>699
ト、トリッキーな方法ですね。んー、なんでこれでOKなのかすぐにはわかりませんが・・・試してみます。
705デフォルトの名無しさん:04/10/15 18:53:00
>>699
全然ダメだろ
706デフォルトの名無しさん:04/10/15 18:55:21
せめて何が駄目なのか書けよ
707デフォルトの名無しさん:04/10/15 18:59:59
708デフォルトの名無しさん:04/10/15 19:05:20
なんだ、ただダメといいたいだけかw
709デフォルトの名無しさん:04/10/15 19:05:28
>>707
「自称」中級者ってとこだな。
>>704の返レスで分かるよ。
710デフォルトの名無しさん:04/10/15 19:07:37
今頃意味がわかった・・・orz
711デフォルトの名無しさん:04/10/15 19:11:44
要素数1の配列ほど使いたい物はないけどな
712デフォルトの名無しさん:04/10/15 19:12:50
使いたくない と書こうとしたんだがどうでもよくなった

ここまできたら要素数1の配列マンセー
これでswapできるぞバンザイ
713デフォルトの名無しさん:04/10/15 19:15:14
>>712
以前、宿題スレにいた人か。
714デフォルトの名無しさん:04/10/15 19:16:13
>>712
その時も同じやり方を書いたよ。
715デフォルトの名無しさん:04/10/15 19:27:54
>>699
それじゃ同じヌルポだよ。正しくはこうだろが。

class Test {
 private B[] b = new B[1];
 public Test() {
  A a = new A(b);
  b[0] = new B();
 }
}
として、Aクラスの中では、b[0]に対してアクセスするようにすればOK
716デフォルトの名無しさん:04/10/15 19:30:06
どちらにしろ汚いのでだめ
717デフォルトの名無しさん:04/10/15 19:36:04
>>699
君は一から勉強し直しなさい。
718初期不良:04/10/15 20:19:25
class A{
 private B b;
 public A(B[] b){
   this.b = b[0];
 }
}

とかやりそう
719デフォルトの名無しさん:04/10/15 20:55:00
>>699のような回答を出す人がいると、このスレの信憑性が
下がるが、ああいう人は極少数なので、これからも呆れずに
どんどん質問してください。>>694
720デフォルトの名無しさん:04/10/15 20:59:00
>>699
氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね
721694:04/10/15 21:03:38
やっぱり>>699の方法だめですよね・・・配列使ってるだけでどうしてできるのかわからなかった。
ただ>>699にも悪気があったとは思えないけど。
722デフォルトの名無しさん:04/10/15 21:07:46
つーかなぜサイズ1の配列なんだ?
値を持ったクラスに適切な名前をつけて作るのが常套手段だろうが。
723デフォルトの名無しさん:04/10/15 21:11:46
配列の実体(最低1個でいい)作っておけば渡してもnullにならないからだよね。
あとから配列の中身は設定できる。

でもあまりきれいな方法じゃないね。
>>698が一番いいと思う。
724デフォルトの名無しさん:04/10/15 21:17:42
た、大変申し訳ないんですけど、し、質問です。
私はCプログラマでC++も少しは出来るんですけど、Javaをはじめるのにはなにを用意すればいいんでしょう?
Sun MicrosystemsのJavaのページにJ2SE v 1.4.2 JRE とかJ2SE v 1.4.2 SDK よく分からないんです…
725デフォルトの名無しさん:04/10/15 21:18:28
>>724
J2SE 5.0
726デフォルトの名無しさん:04/10/15 21:19:08
>>722
クラス作るよりは、サイズ1の配列を使う方が簡単だからだろうが。。。
いずれにせよヌルポインタを見抜けない>>699は、このスレ立ち入り禁止。
727デフォルトの名無しさん:04/10/15 21:28:01
>>724
JREとは、JAVAアプリケーションを動かす為だけの実行環境であり
SDKとは、JAVAアプリケーションの開発環境+実行環境で、JREも含んでます。
よってSDKだけをダウンロードしてください。
現在の開発キットの最新バージョンは、1.4ではなく、「JDK1.5.0」なので
それをダウンロードしてください。
728デフォルトの名無しさん:04/10/15 21:29:30
>>725
JDK
729デフォルトの名無しさん:04/10/15 21:34:24
>>724
あと、jAVAの最新バージョンには、「1.5」と「5.0」の二つの
呼び方がありますが。どちらも全く同じなのです。
全く同じものに、二通りのバージョン名をつけてるのです。
気にせずに「JDK1.5.0」をダウンロードしてください。
JREはしなくていいのです。「JDK1.5.0」に含まれてますから。
迷わずに「JDK1.5.0」だけをダウンロードしてください。
730デフォルトの名無しさん:04/10/15 21:42:56
このスレッドで回答権を得る為には、例の試験をクリアしなきゃ
いけないはずなんだがな。そうじゃないと回答をカキコしても
アップされないんだよ。
731デフォルトの名無しさん:04/10/15 21:48:12
J2SE 1.4.2 SDK しか見つかんないよぉ(;´д⊂ヽヒックヒック
732デフォルトの名無しさん:04/10/15 21:52:54
J2SE2.0で一気に10バージョンが上がるのだろうか?
わかりにくいから、3個目のバージョン付けを開発するのだろうか?
733デフォルトの名無しさん:04/10/15 21:54:12
次はJ2SE .NET 2006になります。
734デフォルトの名無しさん:04/10/15 21:58:03
>>732
J2SE5.0 が出た後で J2SE2.0 出したら単なるバージョンダウンだな。
735デフォルトの名無しさん:04/10/15 22:10:27
J3SE 1.0を出して5.0?1.5.0?何それ?とか言い出したりして
736デフォルトの名無しさん:04/10/15 22:19:29
たぶん J2SE n.0 -> J3SE (n+1).0 みたいにすると思われ。
J2SE 9.0(1.9.0) -> J3SE 10.0(1.10.0) とか。
737デフォルトの名無しさん:04/10/15 22:22:47
JDK1.1からJ2SE SDK1.2になったときもバージョンナンバーのリセットはしなかったしね。
738デフォルトの名無しさん:04/10/15 22:34:28
JDK1.2になる時は、
JDK2.0ってすれば良かったのに。
何故、JAVA2なんて混乱を生むような名前にしたんだ?
SUNってデザインにしろネーミングにしろ本当にセンスないね。
739デフォルトの名無しさん:04/10/15 22:42:14
>>738
そのアンバランスさが玄人が玄人たる所以なのだよ。
740デフォルトの名無しさん:04/10/15 22:43:26
>>731
ここにあるけど、1.5は大分変わったよ
http://java.sun.com/j2se/1.5.0/ja/download.html

1.4.2のほうが枯れてて良いかも
741デフォルトの名無しさん:04/10/15 22:44:43
そーいや 1.4.2_06 が出てましたな。
742デフォルトの名無しさん:04/10/15 22:48:24
じぇねりくすとか勉強しなきゃ・・・
743724:04/10/15 23:54:21
無事Java2 SDK, SE v1.4.2_05をDLしました。
ところがインストール中に

ソースインストールデータベース
C:\WINDOWS\Installer5c1d447.msiからの読み込みに失敗しました

というメッセージが出てインストールできません。
どうすればいいんですか?
744デフォルトの名無しさん:04/10/15 23:54:29
Genericsに使ったら1.4も現行C#も嫌になった。
どうしてくれる
745デフォルトの名無しさん:04/10/15 23:57:09
J2SE5を使えと言う神のお告げです
746デフォルトの名無しさん:04/10/15 23:59:45
>>745
同時に二人にレスしたんですね?
747デフォルトの名無しさん:04/10/16 00:30:01
>>744
sunに1.4.xのコンパイラにGenerics機能をつけるやつあるから探してみ
748デフォルトの名無しさん:04/10/16 01:10:10
>>747
adding_generics early access 使うんだったら素直に JDK1.5.0 使ったほうがよさげ。
749デフォルトの名無しさん:04/10/16 01:16:00
>>748
そりゃそうだが、>>744が1.4も嫌になったとか言うからつい・・・
750デフォルトの回答者:04/10/16 02:24:54
>>743
ダウンロード失敗の恐れ。再ダウンロードを。
俺のお勧めは J2SE5.0。一応、1.4までのソースもコンパイルできるしな。
何より、バージョンが上なのはJVMが改良されているということだし。
>>744 >>747
それは、EarlyAccessのヤツでは?機能不十分でお勧めできない。
>>694

class Test {
 private B b;
 public Test() {
  b = new B();
  A a = new A(b);
 }
}

素直にこうするべし。
引数は、「変数そのもの」を渡すのではなく「変数の差すオブジェクト」を渡している。
なので、>>694 のやり方ではうまくいかない。呼び出しもとの b が変わろうがしったこっちゃないからだ。
>>694の要求は、「b の 差すオブジェクトが変わったときに、a に教えたい」ということなので
b をプロパティ(getter,setter)で実装してやり、そのsetterの中でaにbの変更を教えてやる、などとするべきだろう。
(個々の代入文の後にaの変更をする場合はロジックが分散して好ましくない)
さらにJava流なら、BChangeListener とか作って、Listenerにaを登録するとかか?

何故、bの差すオブジェクトが変わったときaにわたったオブジェクトもすり返られないのかというと
理由は明確。そんなことが許されれば クラスAで、bがいつすりかわってもよいように作らなくてはいけない。
というか、コアクラスから返ってきたオブジェクトが知らないうちに別のになっていたら?
そんな面倒くさいことにならないように、今の引数の仕組みが出来ているのです。
751デフォルトの名無しさん:04/10/16 13:04:30
actionPerformedメソッド内からmainメソッドにObjectを返したい
のですが、不可能でしょうか?
752デフォルトの名無しさん:04/10/16 13:23:27
void メソッドと決められているので無理です。
753デフォルトの名無しさん:04/10/16 13:25:19
>>752
何か方法な無いですか?
方法がなかなか見つからなくて。
754751:04/10/16 13:28:13
mainメソッドから別クラスを呼び出し、そこで値を入力
その結果をmainメソッドで扱う
ってプログラムを組みたいです
755デフォルトの名無しさん:04/10/16 13:29:10
Observerパターン
制御の反転
756751:04/10/16 13:35:18
>>755
デザパタを学ばなくては駄目ですかorz
757デフォルトの名無しさん:04/10/16 13:38:40
そもそもイベントドリブン、マルチスレッドについてわかっていないのが原因
758デフォルトの名無しさん:04/10/16 13:40:20
デザパタは学ぶものじゃなくてパクって使うものだ。

実際、755は10行ぐらい懇切丁寧に説明した後に延々と質問・回答のやりとりが
続くであろう事柄をたった2行で表している。
759751:04/10/16 13:42:39
>>757
ごめんなさい。
mainに拘らなくても動くので、がんばってみます。
760デフォルトの名無しさん:04/10/16 15:35:25
Number クラスに値が再設定できないのはなぜでしょう?
もう一度 new するのはコストがかさむと思うのですが。
761デフォルトの名無しさん:04/10/16 16:17:38
「値」として扱いたいから。

Immutable イミュータブル 不変クラス あたりでぐぐってみな
762デフォルトの名無しさん:04/10/16 16:27:36
>>761
なるほど。ありがとうございます。勉強します。
763デフォルトの名無しさん:04/10/16 16:35:51
入出力関係がわかりやすく解説してあるサイトありましたら
ぜひ教えてください。 
764デフォルトの名無しさん:04/10/16 17:06:23
>>470
ポインタ値
765デフォルトの名無しさん:04/10/16 21:08:56
GridLayoutのsetVgapを使いたいのですが使い方が分かりません
どうやるんですか?
766デフォルトの名無しさん:04/10/16 21:12:53
thanx
767デフォルトの名無しさん:04/10/16 21:50:35
765、自己解決しますた
768デフォルトの名無しさん:04/10/17 04:32:30
初歩的な質問なんですが、
受け取ったバイトデータ(byte[])を、int[]、short[]で扱い。
「シフトしてorして」だとパフォーマンスが落ちるのでできれば、
int[] intArray = (int[])binData ;
こんな風に出来ればベストなんだけど。
何か方法ないでしょうか?
769デフォルトの名無しさん:04/10/17 04:51:20
質問のしかたが初歩的、ということだね。
770デフォルトの名無しさん:04/10/17 04:54:52
>>768
何言ってるのか分からん
771デフォルトの名無しさん:04/10/17 04:56:49
日本語の初心者だからね。
772デフォルトの名無しさん:04/10/17 04:57:39
>>768
パンツ脱ぎかけのままトイレから出てきたような文章で質問して
恥ずかしくないのか?
773デフォルトの名無しさん:04/10/17 05:09:00
>>768
ByteBuffer
774デフォルトの名無しさん:04/10/17 14:59:37
>>769--772
あの質問を読んで、DataInputStream#readInt()による逐次処理とか
ByteBuffer#getInt()を使う事などを、パッと連想もできないような
自称中級者達は黙っててください。
スレ汚しですので。
775デフォルトの名無しさん:04/10/17 15:15:20
学校でJavaを勉強しなきゃいけないことになったんですけど
先生の話聞いてノートとってテキスト読んでるだけじゃ
さっぱり意味不明な状態です。どうしたらいいでしょう。
なんか本とか買ったほうがいいんでしょうか。
776デフォルトの名無しさん:04/10/17 15:56:23
>>7757
学校の勉強程度なら『やさしいJava』を買うといい。
ていうかノートって・・・
777デフォルトの名無しさん:04/10/17 16:02:44
まぁ実地が一番だから
一番やさしいJavaの本を買って
初期設定をきっちりして
少しずつ課題をクリアしていくしかない
778デフォルトの名無しさん:04/10/17 16:15:18
>>776
『やさしいJava』ですか。んじゃちょっくら探してみます。
っていうかノートとる以外すること無いんすよ授業中。
779デフォルトの名無しさん:04/10/17 17:18:07
>>776
自分のコンピュータにJAVAをインストールして、実際に動くか試してご覧
780デフォルトの名無しさん:04/10/17 17:22:36
if〜elseをヅラヅラ並べられるようになると楽しくなってくるし、
else ; を忘れて3日くらい悩むのもまた楽し
781デフォルトの名無しさん:04/10/17 18:25:59
JListのスクロールバーを選択してるとこにもってきたいのですがどうやるんですか?
いまはリストに載せる数よりも表示数を少なくして勝手にスクロールバーがついてるだけの状態なんですけど
782デフォルトの名無しさん:04/10/17 19:22:13
>>778
「やさしいJava」は良い本でも役に立つ本でもないけど、簡単なことしか書いてないからやさしいことは確か。
学校で義務として「やらされる」のなら、その本がピッタリ。

先生がJavaわかってない、プログラムわかってない可能性が高いな。
783デフォルトの名無しさん:04/10/17 19:26:30
>>781
JList#getCellBounds(int,int) で得られた矩形を表示するように
JScrollPane の JViewport#scrollRectToVisible(Rectangle) を呼ぶ、とか。
784デフォルトの名無しさん:04/10/17 20:45:59
Visual Studio 買うとMFCクラス階層図っていうポスターがついてくるよね?
あれの Java 版みたいなやつって無い? 無いよね?

今 AWT/Swing コンポーネントクラス階層図っていうの作ってるんだけど
無駄な努力にならないよね?
785デフォルトの名無しさん:04/10/17 20:51:54
やって意味のないことではないけど、その図を見る機会はないはず。
ほとんどの場合JavaDocの階層ツリーたどれば用が足りるし。
786デフォルトの名無しさん:04/10/17 21:03:32
787デフォルトの名無しさん:04/10/17 21:05:34
というかJavadocのあれがコンポーネントクラス階層図だろ?
788デフォルトの名無しさん:04/10/17 21:09:02
Listenerってのはthreadみたいなものなの?
789デフォルトの名無しさん:04/10/17 21:10:30
ぜんぜんちがうぞ
790デフォルトの名無しさん:04/10/17 21:22:09
ちがうの?
おいらのイメージではsleepしながらイベントを見張ってるのかなと思ってたんだが
内部的にはどうなってんの?
791デフォルトの名無しさん:04/10/17 21:33:13
>>790
内部的にはAWTのイベントループがあって、イベントを監視してる。
キューに入ってきたイベントを引数に、
Component.dispatchEventy(AWTEvent e)
を呼び出す。各コンポーネントは、その中で登録されている
リスナーを自前で呼び出すだけ。
792デフォルトの名無しさん:04/10/17 21:43:48
>>790
それはリスナーとは別のはなし。
793デフォルトの名無しさん:04/10/17 21:52:07
リスナー自体は、単にObserverパターン。
コンポーネントのイベント伝搬はChainOfResposibilityパターン。
794デフォルトの名無しさん:04/10/17 22:01:22
と、パターン厨が申しております。
795デフォルトの名無しさん:04/10/17 22:03:23
リスナ自体は別にスリープもしてないし待ってもいない。
リスナを登録する先のオブジェクトが、それっぽいタイミングがきたら
登録されてるリスナの特定のメソッドを呼び出すだけ。

MouseListnerだと、イベント見張ってるのはリスナじゃなくてイベント
ディスパッチャのほうで、イベントが起こったら、登録されてるリスナ
のメソッドを呼び出す。
796デフォルトの名無しさん:04/10/17 23:43:12
A というクラスのいくつかのメソッド中で、
A のオブジェクトを生成して用いているとします。

A のサブクラスで、それらのメソッドをオーバーライドしなければ、
そのメソッド中では A のオブジェクトが作成されます。

A のサブクラスで、それらのメソッドをオーバーライドすることなく、
サブクラスのオブジェクトを生成するようにする良い方法はないでしょうか。

Class クラスを使えばうまくいくような気もしますが、良く分かりません。

よろしくお願いします。
797デフォルトの名無しさん:04/10/17 23:52:22
class A {
public static void main(String[] args) {
new A().doSomething();
new ASub().doSomething();
}
public void doSomething() {
A a1 = createInstance();
System.out.println(a1);
}
protected A createInstance() { return new A(); }
}
class ASub extends A {
@Override
protected A createInstance() { return new ASub(); }
}
798デフォルトの名無しさん:04/10/17 23:55:56

1.4だとpublic class Aでないとあかんかも。
Aのオブジェクトを生成して用いてるいくつかのメソッド: doSomething()な。
ついでに private A(){}も追加しとけ。
799デフォルトの名無しさん:04/10/18 00:06:05
>>796
thisを使えば?

private A getA() throws InstantiationException, IllegalAccessException {
return (A) this.getClass().newInstance();
}
800デフォルトの名無しさん:04/10/18 00:08:50
よくわからんが this.getClass().getInstance() とかできるんじゃない?
801デフォルトの名無しさん:04/10/18 00:10:45
一般論としてクライアントコードでreflectionは使わない方が良い。Class#newInstance()とか
802デフォルトの名無しさん:04/10/18 00:27:30
>>796
っつか、素直にオーバーライドした方がよさげ。
803デフォルトの名無しさん:04/10/18 01:18:15
>>801
サーバーコードでならrefrection使ってもいいという理由もナゾだな。
804デフォルトの名無しさん:04/10/18 02:02:20
>>803
サーバー?そういう意味じゃなくて、
ライブラリとかフレームワークの中の人が使うのはまぁ良い、という意味。
805デフォルトの名無しさん:04/10/18 02:44:01
class Hoge{
public static void main(String[] args){
int i;
int tmp = Integer.parseInt(args[0]);
for(i=0; i<tmp; i++){
System.out.println(i);
}
}
}
これってふつうにコンパイルできるよね?
でもこれと同じ内容をあるプログラム中に書き込むと、コンパイルできない。
tmpのシンボルを解決できませんって出るんだが…
tmpを別の名前にしても、別にint型の変数を作ってtmpの代わりに入れても無理。
tmpじゃなくて「9」とかの整数値にすればコンパイルできる…
なぜ?
806デフォルトの名無しさん:04/10/18 02:44:04
綴りが違うのがナゾだな
807デフォルトの回答者:04/10/18 04:19:30
>>805
どこか別のスコープでtmp変数を使ってないか確認
808デフォルトの名無しさん:04/10/18 04:26:36
>>804
あぁ、そういうことね。
下々のものはリフレクション使うな、と。
809デフォルトの回答者:04/10/18 04:33:16
>>808
無用に利用しなければいいだけだと思うぞ。
リフレクションを多用するとJavaのコンパイル時の型チェックの機能を活用できないし。
・・・ということが分からず、関数ポインタの代わりみたいに使うというのが好ましくないのだと思う。
810デフォルトの名無しさん:04/10/18 05:18:20
コンパイル時型チェックは、最近どんどんどうでもよくなっていってる気がする。
811デフォルトの名無しさん:04/10/18 09:00:22
>>804
そゆこと。自分で書くときだって使い分ける。

>>809
アホなこというなよ。型安全性が無くなったらそれはもうJavaじゃない。PerlやRubyと同じ。
812811:04/10/18 09:02:29
すまん。寝ぼけてた。

>>808
そゆこと。自分で書くときだって使い分ける。

>>810
アホなこというなよ。型安全性が無くなったらそれはもうJavaじゃない。PerlやRubyと同じ。
813デフォルトの名無しさん:04/10/18 11:54:18
jarファイルの中のリソースを読み込みたいのですが、上手くいきません。
getClass().getResourceAsStream("path")がnullを返します。
ファイルはフォルダ下にあって、"path"は"dir/file.txt"といった感じです。
何が問題なのでしょうか?

また、他には、jarファイル中のリソースにアクセスする方法はどういったものがあるんでしょうか?
814デフォルトの名無しさん:04/10/18 12:55:11
多分ここで聞くのは場違いな気がするんですが質問です。

Robotクラスを使って(別のアプリケーションを操作するため)マウスボタンを押すプログラムを組んだんですが
ちゃんとクリックが受け付けられて期待通り動作できる場合と、クリックしたけどクリックできないという場合があります。
mousePressの後mouseReleaseやってないとかいうことではないと思います。

こういうプログラムからの操作がブロックされてるような場合には
Robotクラスではもう不可能でしょうか?
というか、このセキュリティ?を破ることは通常の方法では無理でしょうか?」
815デフォルトの名無しさん:04/10/18 12:59:33
まずは言語やライブラリ以前にクラスパスを勉強してくださいね


というのをここで何度言った&見たことか
816U ◆CZtFsGiu0c :04/10/18 13:33:33
>>813
「pathはdir/file.txtといった感じです」ってpathとはいったい何者?
「path」から「dir/file.txt」に読み替えられることを期待しているようだけど、
どういう理屈でそうなるのかさっぱりわからん。

あーもしかして、pathって書いてあるところに実際はdir/file.txtって指定して
あるってことかな? であれば、クラスのパッケージ+dir/file.txtを探しにいく
はずだけど、そうなっているかな? まずは、JavaDocをしっかり読んだほうがいい
と思うよ。
817813:04/10/18 13:49:28
ありがとうございます。
>あーもしかして、pathって書いてあるところに実際はdir/file.txtって指定して
>あるってことかな?
その通りです。pathはjarファイル内のエントリー名を意図しています。
でもファイルが読めません。
818U ◆CZtFsGiu0c :04/10/18 14:10:30
>>817
じゃあ、/dir/file.txtって指定したら読める?
819813:04/10/18 15:06:23
別の問題がありました。
>>818
それも必要でした。

そして解決できました。
お付き合いいただきありがとうございました。
820デフォルトの名無しさん:04/10/18 15:43:17
>>815
クラスパスの勉強は言語やライブラリのあとでいいと思うが。
821デフォルトの名無しさん:04/10/18 15:47:15
>>812
別に、型安全性がJavaのアイデンティティじゃないし。
重要な特徴ではあるけど。

ま、Javaに型安全性がなくなると、Groovyと呼ばれるわけだが。
822デフォルトの名無しさん:04/10/18 16:41:11
>>821
Javaのアイデンテティっつーか、静的型言語のアイデンテティではあるわな。
それに >>796 のような用途でreflection使って型安全性を崩すのは良くない。
823デフォルトの名無しさん:04/10/18 19:12:50
J2EEパターンの一つ、DAO(Data Access Object)について教えてください。

例えば、「利用者はCustomer(DB)から従業員情報を得る」という仕様の場合、
J2EEパターンによくある例のクラス図は次のようになります。

業務ロジック--->CustomerDAO
  |        |
 ∨        |
Customer<−−−−−−
業務ロジックでDAOを扱う

これよりも

業務ロジック-->Customer-->CustomerDAO
CustomerでDAOを扱う(業務ロジックはDAOの存在を知らない)

の方が仕様に沿っていて良いと思うんですがどうなんでしょうか?
824デフォルトの名無しさん:04/10/18 20:00:58
> 「利用者はCustomer(DB)から従業員情報を得る」

これがそもそも違う気が。
「利用者はDBから従業員情報(Customer)を得る」
じゃないの?
Customerって従業員情報だよね?
825デフォルトの名無しさん:04/10/18 20:07:39
名前じゃないの?
Customer(DB)というTable名
どうでもいいがw
826デフォルトの名無しさん:04/10/18 20:27:20

・エディタで文字を入力しなくても補完が働いて勝手にコードが完成した。
827デフォルトの名無しさん:04/10/18 23:15:47
基本的な質問申し訳ないのですが、以下のソース(★)部分で
long型を示すLをつけた場合、add_msecの値は8640000000に
なるのですが、つけないと50065408になります。

long型なのでLをつける必要があるのはわかったのですが、
つけない場合は何を計算して50065408という値が出てくるのでしょうか。

ちなみに現在の日付、時刻に100日足した日付、時刻を出すプログラムです。

/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
mport java.util.*;

public class Lesson_10_2_2 {
public static void main(String args[]){

long add_msec = 100*24*60*60*1000L; (★)
long add_all = 0;

Date msec_obj = new Date();
add_all = add_msec + msec_obj.getTime();

System.out.println("経過時間(単位ミリ秒) " +add_all);

msec_obj.setTime(add_all);
System.out.println("現在日付+100日の時間は " + msec_obj);

}
}
/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
828デフォルトの名無しさん:04/10/18 23:27:00
>>827
> 100*24*60*60*1000L;
L を付けないと、整数リテラル「1000」の型は int型になる。
int型 * int型の計算結果は int型になる。

http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#5036
> もし整数乗算がオーバフローしたならば,その結果は数学的な積を
> 十分大きな2の補数形式で表現したときの低位ビットとする。
> その結果として,もしオーバフローが発生したならば,その結果の符号は
> 二つのオぺランド値の数学的積の符号と同じでないかもしれない。

で、8640000000(0x202FBF000) の下位32ビットが 50065408(0x02FBF000) だから。
829デフォルトの名無しさん:04/10/18 23:33:31
>>828
早速の回答ありがとうございます。オーバーフローすると
下位ビットが使用されるとはしりませんでした。

仕事中にJAVAを勉強し始めたんですが、
今日ここの部分で「何で!?」になったところだったので
回答をいただけてすっきりしました。

でもオーバーフローでプログラムが落ちたりはしないんですね。
私はプログラムでオーバーフローになると落ちるのかと思ってました。
830デフォルトの名無しさん:04/10/18 23:34:10
ttp://www.y-adagio.com/public/standards/tr_javalang/4.doc.htm#51035

計算は、int型同士で行われます。
(100*24*60*60)*1000 = 8640000 * 1000 = 8640000000
これは、int型の表現(2147483647以下)を越えているので演算結果がint型で丸められます。
8640000000 % 2147483648 = 50065408
です。
831デフォルトの名無しさん:04/10/18 23:43:16
>>829
普通のプログラミング言語は足し算でラップアラウンドが発生、
とか乗算でオーバーフロー発生、とかの場合は落ちないと思う。
832デフォルトの名無しさん:04/10/18 23:53:24
>>828 830 831

皆さん回答ありがとうございます。
非常に勉強になります。

また悩むことがあるかもしれませんが、
地道にがんばっていきたいと思います。

また何かありましたらよろしくお願い致します。
833デフォルトの名無しさん:04/10/18 23:55:25
class Test{ public int a; }

ってやって、別のクラスで
Test t[] = new Test[10];
とかってやると、t[0].a 等でアクセスできますか?

最低ランクの質問スマン orz
834デフォルトの名無しさん:04/10/18 23:57:25
classとかメソッドの分け方とかヘタなんですけど
どうやれば見やすい&綺麗になりますか?
答えとかはないとおもうけど参考になるHPとかあったら教えて下さい
835デフォルトの名無しさん:04/10/19 00:00:45
>>833
t[0]に、ちゃんとインスタンスを突っ込んだ後ならそれでOK。
836デフォルトの名無しさん:04/10/19 00:02:01
>>833
なんで試してみないんだこの阿呆

それからTest t[] はやめれ Test[] tだ
837833:04/10/19 00:06:27
>>835
嗚呼ああァァ・・・この行だけではt[0]にインスタンスは入らないのか・・・。
そうか、そうだった・・・サンクス

>>836
ゴメン&アリガト
838デフォルトの名無しさん:04/10/19 00:27:04
>>836
コーディングスタイルは人や周囲の環境による
839_:04/10/19 00:47:12
今週の金曜日テストなんですけど全然分かりません。
今からでも間に合いますか?
もう泣きそうです・・・
840デフォルトの名無しさん:04/10/19 00:47:48
間に合うからガンガレ
841_:04/10/19 00:51:21
>>840
がんばります・・・
842デフォルトの名無しさん:04/10/19 01:33:06
>>838
けども、自由にやるならTest[]の方が推奨されるよ。
Javaの場合は、Javaとしてのおすすめコーディングスタイルがあるわけだし。
843デフォルトの名無しさん:04/10/19 02:01:25
>>836の言い方は推奨とは程遠いがな
844842:04/10/19 02:22:32
836が阿呆であることと、特にコーディングスタイルを決めてないのならJava推奨のコーディングスタイルを使った方がいいこととは別の話。
845デフォルトの名無しさん:04/10/19 02:43:43
どうでもいいけど、ustomer DBに従業員情報て、Employeeじゃないのか。

846デフォルトの名無しさん:04/10/19 06:31:40
質問します。

javaで特定のファイルのパーミッションを
変えることはできるでしょうか。
847デフォルトの名無しさん:04/10/19 08:46:37
超初心者です。申し訳ありませんが、教えて下さい。

「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
のエラーがでます。

1にあったwikiroomのリンクにも行ってみました。
コマンドプロンプトで「java -version」と入力すれば、javaのバージョンは
表示されます。

どの設定を直せばいいのかを教えて下さい。
宜しくお願いします。
848デフォルトの名無しさん:04/10/19 08:49:55
849デフォルトの名無しさん:04/10/19 08:50:16
JREしか入っていない
850589:04/10/19 09:17:14
質問なんですが、javaでUSB
またはComポート(RS-232)を使うには、どうすればよいでしょうか?
851デフォルトの名無しさん:04/10/19 09:22:45
>>850
RS-232Cはこれで
ttp://java.sun.com/products/javacomm/reference/api/index.html

USBはなにをしたいかわからんがこんなのがある
http://jusb.sourceforge.net/
852589:04/10/19 10:14:14
>>851
レス、ありがとうございます。
なにをしたいかと言うと、レゴのマインドストームと
通信できるプログラムを作りたいんです。
それで、通信用の赤外線タワーを使いたいんですが、
それがRS-232C用とUSB用があって、どうしようかなと。
どっちのほうが使いやすいでしょうか?
853デフォルトの名無しさん:04/10/19 10:17:08
>>847
せめて >>1 くらい読んでから書け。
854デフォルトの名無しさん:04/10/19 10:17:31
>>852
RS-232Cだろうな
855853:04/10/19 10:18:03
>>847
あ、すまん。1は読んでの上だと書いてあるな。ごめん。
856589:04/10/19 10:20:37
>>854
ありがとうございます。
ひとまず、RS-232で組んでみます。
857デフォルトの名無しさん:04/10/19 10:23:55
初歩的な質問なんですが。
a という変数ががなんらかのクラスの参照を持っています。
例えば Object a = new Object();とかでもいいです。
んで
Object b = a; と参照を代入したとします。
aもbも同じ参照を持っているわけですから、
b.xxx (何かの値を設定したりとか) というような事をすればaの中の値も
変わるのは理解できます。
では
b = null;とした場合、aが保持している参照も消えてしまうのでしょうか?それとも
bがただ何も参照しなくなるというだけでしょうか?
ここでbが何も参照しなくなるだけだとしたら、2つのクラスが参照している実態を
イレースするにはどうすればよいのでしょうか(やはりガーベジコレクションだけですかね?)
ふと気になったので質問してみました。
どなたかご教授ください。おねがいします。
858デフォルトの名無しさん:04/10/19 10:25:36
>>852
Java Lego MindStorm あたりでググるといろいろヒットするようだが、これ使えないの?
ttp://www.slewis.com/rcxport/
ttp://www.linux.or.jp/JF/JFdocs/Lego/javalibs.html
Javaから動かすAPIが既にあるようだが・・・MindStormは使ったこと無いから知らないけど。
859デフォルトの名無しさん:04/10/19 10:33:30
>>857
参照をポインタかなんかに置き換えて読めば、すぐ理解できるのでは?

> a という変数ががなんらかのクラスの参照を持っています。
なんらかのクラスのインスタンスの参照ね。

> bがただ何も参照しなくなるというだけでしょうか?
yes

> ここでbが何も参照しなくなるだけだとしたら、2つのクラスが参照している実態を
> イレースするにはどうすればよいのでしょうか(やはりガーベジコレクションだけですかね?)
a, b 以外に同じインスタンスの参照を誰も持っていない場合は
a = null; b = null;
すればよいだけ。
860デフォルトの名無しさん:04/10/19 10:35:41
>>857
その場合、bが何も参照しなくなるだけ。
実体は誰からも参照されなくなったら、ガベージコレクションで削除される。
861デフォルトの名無しさん:04/10/19 10:39:22
>>859
>>860
なるほど、やはりそうなんですね。
プログラム組んでてnullを代入するというコードを書いてた時に、実態が消えたら
大混乱だなと思って心配になってしまったんです。
すっきりしました。
ついでに質問なんですが、javaで関数にクラスを値渡しってできないんでしょうか?
(参照渡しではないという意味です)
862589:04/10/19 10:42:12
>>858
ひとまずは、Sunのだけで組んでみようかなと思ってました。
けど、RCX java APIは使えそうなのでこっちでやってみようと思います。
863デフォルトの名無しさん:04/10/19 10:43:44
>>861
クラスを渡すって何? java.lang.Class のインスタンスを渡すって事か?
あと、Java には参照渡しは無いぞ。
864デフォルトの名無しさん:04/10/19 10:44:57
>>861
呼び出した関数の中で、渡したインスタンスのフィールドを変えられたくない場合は、
そのインスタンスのクラスをimmutableで設計するか、コピーを作って渡すようにする。
865デフォルトの名無しさん:04/10/19 10:47:10
>>861
Javaでは全て値渡しですよ・・・っていかん、この話をすると、また無駄に半スレ消費する。
オブジェクトをコピーして渡せば、お望みのことができるかと。
StringBufferなら、

StringBuffer original = new StringBuffer("hoge");

とあったときに、

StringBuffer arg = new StringBuffer(original.toString());
someMethod(arg);

とする、とかかな。

ただ、コピーの方法は、セマンティクスも含めてケースバイケースなので
これで決まり、というものはありません。
866デフォルトの名無しさん:04/10/19 10:50:33
>>861
っつか、>>859が参照をポインタに置き換えろとか書かれてるじゃん。
C/C++しか出来ない人むけにいうと、
Javaの参照型の渡し方はC/C++でポインタを値渡ししてるのと似てる。
867デフォルトの名無しさん:04/10/19 11:02:15
>>864
>>865
>>866
なるほど、VBみたいに値渡しか参照渡しを選ぶというような方法はないんですね。
つまりいつも参照を意識していないといけないわけですね。なんか、知らないとこで
変なバグがでそうで怖い。自分忘れっぽいもので。
とりあえず、皆さんご返答ありがとうございました。
868デフォルトの名無しさん:04/10/19 11:08:26
というか、変更不可オブジェクトにするか、コピーしてから渡せばいいだろ。
869デフォルトの名無しさん:04/10/19 11:09:11
論理輪である縦線2つはどうやって出すんですか?
もう、全然分かんないよ〜
870デフォルトの名無しさん:04/10/19 11:10:54
>>869
> 論理輪である縦線2つはどうやって出すんですか?
使ってるキーボードによる。
とりあえずコピペ用に貼っておくか 「||」
871デフォルトの名無しさん:04/10/19 11:12:14
> 使ってるキーボードによる。
あとは OS のキーボードレイアウトの設定とか。
872847:04/10/19 11:22:41
>847さん、ありがとうございます。
早速、いろいろググってみます。

>853さん、とんでもないです。分かりづらい
文章で申し訳ありませんでした。

また、不明な点があればご助言を聞き来ます。
ありがとうございました。
873デフォルトの名無しさん:04/10/19 11:49:48
>>872
まじでJREだけ入れて、SDKを入れてないんじゃない?
874デフォルトの名無しさん:04/10/19 12:03:18
コーディングなんては、所詮下流工程のプログラマーの
仕事だからね。誰でもできる。
そこら辺の勉強はなるべく短くすませて先に進みたい罠
875デフォルトの名無しさん:04/10/19 12:09:07
じゃあコーディングなんてせずにいきなり設計から勉強すればいいじゃない
876デフォルトの名無しさん:04/10/19 12:09:11
>>874
下流の仕事分からずして上流になるなかれ。
まさに「罠」
877デフォルトの名無しさん:04/10/19 12:15:01
874みたいなのにコード書かせたくないし
コーディングをわかってないヤツに設計させたくない。
使えないSEの典型にならないようにせいぜいがんばってくれや。
878デフォルトの名無しさん:04/10/19 12:24:16
釣りなのに・・・
879デフォルトの名無しさん:04/10/19 12:29:09
釣りじゃない。
ソフトウェア開発では個々の部分はブラックボックスにして構わない。
ブラックボックスの開発は、そこいらから下流プログラマーを
持ってきて割り当てるだけでよい。
一番難しい、そして重要なのは、その区分けと、それらを無難に
まとめあげる設計技法だ。コーティングは所詮、単純労働だし
肉体労働だからね。誰でもできる。
880デフォルトの名無しさん:04/10/19 12:48:22
コーダとプログラマはちがう
881デフォルトの名無しさん:04/10/19 12:49:57
>コーティングは所詮、単純労働だし肉体労働
こういうヤツが仕切るからあべしみたいな会社がのさばる。
人海戦術と残業で乗り切れ!みたいな。
FもNもHも似たような物か。
882デフォルトの名無しさん:04/10/19 12:54:22
実際に設計やってる奴は単純労働や肉体労働の方が得意っつーか
むしろ単純労働や肉体労働しかできなかったりする罠。
883デフォルトの名無しさん:04/10/19 12:56:55
>>880
同じだよ。
コーダーの装飾名がプログラマだ。
プログラマのやる事は、所詮「コーディング」だけだ。上流工程担当者の
指示&割り当て通りにコーディングするだけのロボットであり、流れ作業の一部だ。
「プログラマ」なる名将は、何時か自分のアイディアで開発が出来る日が
来るって望みをつなぐだけの、願望にすぎない。
884デフォルトの名無しさん:04/10/19 12:59:57
そういう既出過ぎる退屈な雑談は2行2レス以内にまとめるかマ板で延々ループしてろ
885デフォルトの名無しさん:04/10/19 13:00:57
>>883
オマエのところでは「コーダーの装飾名がプログラマ」なだけ。
「コード書かせると危険な奴の装飾名が設計」なところもあったり。
886デフォルトの名無しさん:04/10/19 13:03:47
Javaの話題ではないな
釣り師(>>883)はカエレ
887デフォルトの名無しさん:04/10/19 13:04:49
・コーディングとは、設計の甘い見通しが厳しい現実に出逢う夜明けだ。
・設計とコーディングは相互に補いあう創造的なプロセスである。
-- by Kent Beck.
888デフォルトの名無しさん:04/10/19 13:07:07
>>883 のところは仕切っているSEが糞だなw
指示&割り当て通りにコーディングするだけのロボットができる作業は
人海戦術に頼らないで自動生成するんだよ。
技術を知らないからそいういう手法もXPのような開発手法も知らないで
ひたすら残業になるんだろうねw

>>885
ワロタ。その通りだ。
889デフォルトの名無しさん:04/10/19 13:31:14
>>888
自動生成できる程のものじゃないコードが多いのが現実だ。
自動生成できないコード=高度なテクニックを要されるコード
と勘違いしてないか? 自分達のやってる作業(コーディング)が
価値あるものだとでも思いたいのだろうが、上流工程担当者から見れば
全くのお笑い草なのだよ。
890デフォルトの名無しさん:04/10/19 13:40:57
勝利宣言キター
891デフォルトの名無しさん:04/10/19 14:11:46
おれたちでオートコーダを実装しないか?
892デフォルトの名無しさん:04/10/19 14:16:45
883はつまりそういう教育を受けて鵜呑みにしてますってことだろ。

設計する人間は当然自分の設計したものを(時間と金さえ許せば)コーディング
できる能力が無いといけないと思うけどね。役割が違うからやってないだけで。

ほとんどの「上流工程担当者」さんは自分が設計したものが実現できるものなのか、
あるいは実現に工数がかかるものなのかも把握しとらんよ。だって、そんな
下級な仕事はとっとと卒業しちゃったのでさっぱりわからんそうな。
893デフォルトの名無しさん:04/10/19 14:17:39
>>889
> 自動生成できる程のものじゃないコードが多いのが現実だ。
設計が悪い
894デフォルトの名無しさん:04/10/19 14:20:03
>>893
んなこたーない
895デフォルトの名無しさん:04/10/19 14:27:14
>>892
>>自分が設計したものが実現できるものなのか、
>>あるいは実現に工数がかかるものなのかも把握しとらんよ

設計者にとって個々の部分が実現できるかどうかは、もはやコーディングを
理解してるかどうかの問題でなく、レベルの高いコーダーを連れてくるか
誰かがダメで時間がかかるのなら、また別の人間を連れてくるって
人事管理的な問題になるからね。
896デフォルトの名無しさん:04/10/19 14:28:43
俺が思うに、レベルの高いコーダーが必要かどうかも判断できない人が大部分かと。
897デフォルトの名無しさん:04/10/19 14:51:45
>>896
あー、違う違う。レベルの高いコーダは、設計者を通り越して
顧客の意図を汲み取って、変な設計(と呼ばれるジャンク)からコードを起こす人のことです。
つまり、「オレの設計どおりにコード書けば問題ねーんだ、コラ」とか言ってる人には
全員必要です。そんな人が、顧客の意図を正しく設計できてるかはかなり疑わしいですから。

って、初心者質問スレの話題じゃないって。
誘導
スレッドを立てるまでもない質問雑談スレ17
http://pc5.2ch.net/test/read.cgi/prog/1096623147/
898デフォルトの名無しさん:04/10/19 18:37:46
JButton の BeanInfo ってどうやって取得できるの?

今 SDK の rt.jar なんかを調べてコードも見てみたんだけど、
それらしき記述が無いの。なのに使ってるエディタは
普通にさりげなくアイコンとか取得できちゃってるし。
899デフォルトの名無しさん:04/10/19 20:02:53
エディタが気を利かせて特別扱いしてるだけだろ
900デフォルトの名無しさん:04/10/19 20:09:37
キーボードのキーを押すとイベントが起きるんですが
キーを長押しされると処理が追いつきません。
一時、キーイベント(?)をとめるにはどうすればいいですか?
901デフォルトの名無しさん:04/10/19 20:59:54
>>899
「Java Beans のインポート」を選択、わざと
SDK に入ってる rt.jar を選択してみる。

そうすると「ユーザーが追加した beans」みたいなところに
JButton や JFrame が表示されるわけだが、ちゃんとアイコンも表示されている。

これってコンポーネントがアイコンを持っているって考えられない?

※ ちなみに使ってるエディタは Netbeans 3.6 と Bean Builder 1.1β
902デフォルトの名無しさん:04/10/19 21:21:13
>>900
KeyListenerでは入力をためる処理だけやって
実際の処理は別のスレッドでやりつつ
溢れた入力は適宜捨てる、とか
903_:04/10/19 21:22:16
>>870
どうもありがとうございます!
この恩は忘れません。
904デフォルトの名無しさん:04/10/19 22:12:01
>>901
考えられない。

アイコンもなにも元は*.javaというテキストファイルだぞ
905デフォルトの名無しさん:04/10/19 22:59:57
>>904
「アイコンもなにも元は*.javaというテキストファイルだぞ」

クラスファイルもなにも元は*.javaというテキストファイルだぞ
サーブレットもなにも元は*.javaというテキストファイルだぞ
JDKもなにも元はjdk-1_5_0-windows-i586.exeというネイティブバイナリだぞ

いろいろな使い方が思い浮かぶ、夢のある言い回しですね。
906_:04/10/19 23:10:11
2次元配列が難しいです。
どうしよう・・・
907デフォルトの名無しさん:04/10/19 23:30:04
質問があります。
String型の文字列でprintlnでは画面上に表示されないエスケープシーケンス?
なども表示させたく文字列のヘキサダンプを行いたいのですが、どのように
行うのでしょうか。
908デフォルトの名無しさん:04/10/19 23:30:36
>>906
2次元配列などない。
と思えばいい。
909デフォルトの名無しさん:04/10/19 23:31:05
>>907
charAt
910907:04/10/19 23:37:57
>>909
ありがとうございます。やってみます。
911222:04/10/19 23:40:35
教えて下さい。
SwingのJButtonコンポーネントに設定されているBackgroundを取得し、
JPanelのBackgroundに設定したいのですがうまくいきません。
Color c = new Color(button.getColor());
こんな感じで変数cにbuttonの設定色をいれたいのですが
わかるかた教えて下さい。
912デフォルトの名無しさん:04/10/19 23:51:34
で、うまくいかないっていうのは、どういうことをうまくいかないといってんの?

ところで、なんでわざわざ新しいインスタンス作るの?
913デフォルトの名無しさん:04/10/20 00:02:28
>>912
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
914デフォルトの名無しさん:04/10/20 00:03:31
>>911
panel.setBackground( button.getBackground() )
でOK
915222:04/10/20 01:01:05
>912さん
ごめんなさい、うまくいかないとはnew Color(button.getColor());の
JButtonインスタンスbuttonが「シンボルが解決できない」になるコンパイル
エラーのことです。
新しく作ったcをpanel.setBackground(c)ってすればうまくいくかなって
思ってました。

>914さん
有難うございます、出来ました。
自分で複雑に考えすぎました。
916デフォルトの回答者:04/10/20 01:39:40
>>915
ちょっと待った。APIドキュメントをちゃんと読むようにすること!
質問はその後! 読めばgetColor()がないことくらい20秒で分かることだから。
917デフォルトの名無しさん:04/10/20 01:46:41
jadを試したみた。
衝撃を受けた。
だから、age。
918デフォルトの名無しさん:04/10/20 04:05:21
過労でストレスがたまってるのかもしれないが、
簡単な質問があると、わざわざおちょくる嫌な奴がたまにいるよな。
素直に答えるか、無視するかすればいいのに。
>>916のことじゃないよ。
919デフォルトの名無しさん:04/10/20 04:31:33
過労でストレスがたまってるのかもしれないが、
足りない質問への指摘があると、わざわざおちょくる嫌な奴がたまにいるよな。
無視すればいいのに。
>>918のことじゃないよ。
920デフォルトの名無しさん:04/10/20 05:06:37
UNIXサーバ(solaris)上の、ファイル名(EUC_JP)に 「〜 ‖ - ¢ £ ¬」が含まれるファイルを、
Fileクラスなどで、オブジェクト化するときに、FileNotFoundExceptionが発生してしまいます。
どなたか、解決策をご存じないでしょうか。

・ファイル名を規制する。
・ファイル名をEUC_JP以外で保存する。
というのは、なしでお願いします。

「〜 ‖ - ¢ £ ¬」が含まれない日本語ファイル名のファイルは、正常にオブジェクト化できます。
jdk1.2.xです。

921デフォルトの名無しさん:04/10/20 05:19:06
いずれも、EUC と UCS (unicode) の相互変換で問題がある
文字のような気がします。EUC->UCS 変換をしたり
してませんか。そして、祖のときに互換文字ではな違法に変換さ
してたりしませんか?
922デフォルトの名無しさん:04/10/20 05:44:50
>>921さん、ありがとうございます。
確かにFULLWIDTHをマッピングしています。明日(今日)、互換文字で試してみます。
923デフォルトの名無しさん:04/10/20 11:25:47
void method(){
}



void method()
{
}
どっちがいいですかね?
924デフォルトの名無しさん:04/10/20 11:27:48
>>923
前者
925デフォルトの名無しさん:04/10/20 11:33:23
appletを含むコードとHTMLテキストを例題通りに作ったのですが,
appetクラスを生成した後にHTMLファイルをダブルクリックしても
うまくappletの内容が表示されません。appletの範囲が前面灰色になった
ものしか表示されません。

一応同じフォルダの中にHTMLファイルとappletがあるクラスを入れているのですけど
なぜか表示されません。どこか設定の問題なんでしょうか?

どうすれば表示できるのか教えていただけないでしょうか。
926デフォルトの名無しさん:04/10/20 11:36:16
>>925
環境は?
927デフォルトの名無しさん:04/10/20 11:37:19
928925:04/10/20 12:05:43
WINDOWS XPです。
929デフォルトの名無しさん:04/10/20 12:26:33
>>925
ブラウザ、JavaVMの情報があるといいかも。
930初期不良:04/10/20 12:36:47
インスタンス変数名に接頭辞として _ を付ける方法についてですけど、
せっかくネームスペースが分かれているのに名前に属性を入れるのって
すごくスマートじゃない気がするんですよ。
だから setter では this.member = member とかなるべきだと思うし、
他の場面でもインスタンス変数のアクセスには this を
省略しない(またはできない)方がいいんじゃないかとも思います。

http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/CodeConventions.doc8.html#367

でも _ から始めるべきではないと書いてあるので、
別に変な話じゃないとは思うんですが、ちょっと反対意見が
周囲にあったので、意見を聞かせて欲しいのですが...
931デフォルトの名無しさん:04/10/20 12:58:18
>>919
いや、ほんとに916のことじゃないんだが。
悪意が怖い。
駄レスごめん。
932デフォルトの名無しさん:04/10/20 12:58:30
>>930
どっちにしてもデメリットあるけど、
最近はEclipseみたいなツールでそれをフォローする設定ある
から昔みたいに気合入れて議論するほどでもないかな。
フィールドにアクセスするときはthis.memberを強制するとか、
フィールドとローカル変数の名前がかぶったときはエラー/警告出すとか。
getter/setterつくるときは_/fみたいな接頭子を考慮するとか。
933デフォルトの名無しさん:04/10/20 12:58:54
>>917
jad触ってみた。
うはー、こりゃ難読化ツールも必要だわな。
934デフォルトの名無しさん:04/10/20 13:50:51
jadだと逆コンパイルできないコードが存在する
935916:04/10/20 14:48:29
>>931
>>919 は オレじゃないっす。
>>916 はAPIドキュメント読む癖を付けといたほうがいいと思って。
>>933
いや、むしろ見られて恥ずかしくないコードを書いておくべきか、と。
セキュリティの観点からなのであれば、コードは読まれるものとして
コードの外に安全を確保する部分を出しておくことを考えないといけないですよね。難しいのですが。
936925:04/10/20 14:57:11
プラウザはインターネットエクスプローラです。

java VMについてですが,eclipseでコードを作ってて,デフォルトのままです。
あまり詳しくないのですが
windows->設定で見ると 名前欄にJ2re1.4.2_05のとこにcheckがあって
タイプは標準 VMとなっております。
937デフォルトの名無しさん:04/10/20 15:16:30
>>936
まず自分で作ったアプレットをどのような環境(VMの種類・バージョン等)で
動かしたいのかアプレットの要求仕様を「自分で」決める。
MicrosoftVMを使うかとかSunのやつ使うかとか。

次にその環境に合わせてブラウザで使うVMを設定する。

次にEclipseのコンパイラを動かしたい環境に合わせて設定する。
「ウィンドウ」->「設定」->「Java」->「コンパイラ」んとこの
バージョンとか。

また、動かなかった場合はブラウザからJavaコンソールを
開いてエラーメッセージを確認すること。
938デフォルトの名無しさん:04/10/20 15:18:56
>>936 そこのVM設定はEclipseが使う設定であって
ブラウザから呼ばれるVMじゃないから注意。
939918:04/10/20 15:45:28
>>935
916には何の批判もないんです。
質問や姿勢への指摘が嫌いって言ったわけじゃないし。
わかりにくいレスしてすみません。

たまに、相手が初心者でものを知らないのをいいことに、
まわりくどく馬鹿にしたみたいなレスを返してるのを見ると気分が悪かったので、
ついつい書いてしまいました。流すべきでした。
今朝は、私の読み方も悪かったと思います。申し訳ない。
940初期不良:04/10/20 16:17:16
>>932
>フィールドにアクセスするときはthis.memberを強制するとか、
>フィールドとローカル変数の名前がかぶったときはエラー/警告出すとか。
>getter/setterつくるときは_/fみたいな接頭子を考慮するとか。

3番目のやり方はわかるんですけど、それ以外のやり方がわからんです。
どの変使うんだろ?
941デフォルトの名無しさん:04/10/20 16:45:37
>>940
「インスタンス・フィールドへの無条件アクセス」
「ローカル変数宣言が他のフィールドまたは変数を隠蔽」
942初期不良:04/10/20 17:41:47
>>941
どうもです。見っけました。Code Assist じゃなくて Compiler で設定する話だったのか...
英語の方では Unqualified access to instance field でした。
こういうオプションがあると言うことで、少し考えに自信をもてました。
943デフォルトの名無しさん:04/10/20 19:22:51
人工無能を作りたいんですけど、参考になるようなサイト
を教えてください。
944デフォルトの名無しさん:04/10/20 19:52:38
自分自身が無能なら、それで充分だろ
945デフォルトの名無しさん:04/10/20 19:53:33
>>943
2ch。
人工無能がうようよいる。
946デフォルトの名無しさん:04/10/20 20:07:45
このスレも本物の人間の書き込みは20レスくらいだしね
947デフォルトの名無しさん:04/10/20 20:09:39
>>946
適当な事言ってんなよ
948デフォルトの名無しさん:04/10/20 20:27:00
>>947
レスアンカーがついてないレスは人工無能スクリプトによる可能性が高い。
949デフォルトの名無しさん:04/10/20 20:33:53
ごめん、間違えて走らせたオレの人工無能スクリプトが>>947を投稿した。
950デフォルトの名無しさん:04/10/20 21:02:39
え、このスレって俺を含めて人工知能が書いてるんだよ?
951デフォルトの名無しさん:04/10/20 21:08:17
>>944-950
まじでおねがい
952人工無能エミー:04/10/20 21:11:00
まじでおねがいするなら、ふさわしいスレに行けばいいのに。
953デフォルトの名無しさん:04/10/20 21:13:20
人工無能の定義って、何だろう。
「何か(仮)」は、人工無能に入るんだろうか。

面白そうな定義だな。でも、作るとなるとひたすら面倒なだけって気ガス。
954デフォルトの名無しさん:04/10/20 21:39:50
えーと・・テーブル上で書き込んだ計算式を
計算するようなクラスはどうすれば・・
TreeNodeで分岐させて作ればいいのかな?
955デフォルトの名無しさん:04/10/20 21:49:13
マジ素人的な質問ですみません
ファイル出力用のソースを書いておりますが、
出力時、8KBに達するとエラーで落ちてしまいます。
出力classはBufferedWriterを使用してます。

「おい、こんなん、こうやればチョチョイのチョイだよ!」と
仰る神々の皆様、この哀れな名無しに救いの手を!!!
956943:04/10/20 21:49:32
アイフルのまでとは言わないが、ふつーに意味不明な会話が出来ればいい。
質問の内容をデータベースに溜めて、上位10件くらいの返答内容を準備する。
その繰り返し。
最終的に人工無能同士で会話をさせたい。
957デフォルトの名無しさん:04/10/20 21:49:51
>955
ソースうpきぼん。
958デフォルトの名無しさん:04/10/20 21:51:11
>>956
特定のキーワードに反応する答えを用意しておけばいいだけだろ
959デフォルトの名無しさん:04/10/20 21:55:10
>>954
自分で計算するクラスを作るか、計算してくれるクラスを探すか。
ちなみに、javax.swing.tree.TreeNode は計算してくれない。
そもそもクラスじゃないし、用途が全然違う。
960デフォルトの名無しさん:04/10/20 21:56:22
学校でJavaプログラミングを勉強しているのですが、
マスターできれば何ができるようになれますか?
新一年生です・・・
961デフォルトの名無しさん:04/10/20 21:57:46
ベーション
962デフォルトの名無しさん:04/10/20 21:58:14
>>955
エラーの全文とソースを載せろ。話はそれからだ。
963デフォルトの名無しさん:04/10/20 22:00:38
学校なんて点さえ取れれば、なんでもよい

趣味で何かしたい!と思うなら、先生に勉強の仕方を聞いて
自分でやるしかない

専門学校でないなら、ほとんど意味はない
964955:04/10/20 22:02:27
>957
恥ずかしながら公開します。
部分的ですが。

// ファイルオープン(出力ファイル名=ofilename)
FileWriter fw = new FileWriter(ofilename);
//バッファ書き出しコンストラクタ定義
BufferedWriter bw = new BufferedWriter(fw);
//バッファ書き出しコンストラクタ定義(入力ファイル名=A[i])
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(A[i]), "SJIS"));
//一行読み込み
lineStr = fileLine;
//出力
bw.write(lineStr +"\n");

こんな感じです。よろしくお願いします。
965デフォルトの名無しさん:04/10/20 22:03:23
> マスターできれば何ができるようになれますか?

こういう質問する時点で、向いてないか先生の教え方が悪いか、だな。
「教養身につけると何ができるようになれますか?」
みたいなね。
966デフォルトの名無しさん:04/10/20 22:09:28
>>964 エラー貼れって。
967955:04/10/20 22:11:52
>>966
英語なのでわからないと思いますので
ソースを書きました。
968デフォルトの名無しさん:04/10/20 22:14:02
>967
いや、その英語のやつが重要なんだが。
969デフォルトの名無しさん:04/10/20 22:14:15
>>967 お前、おもしろいよ。
ソースも該当部分のせてないしな。ReadLineで帰り値の
チェックしてなくて、ぬるぽ出てると適当に書いてみる。
970デフォルトの名無しさん:04/10/20 22:17:30
特殊な環境でOutOfMemoryErrorなのかもしれぬ。
8KBに達すると落ちるってなんかかわいいな。
971955:04/10/20 22:19:18
967の955は偽者ですよ。
972デフォルトの名無しさん:04/10/20 22:21:02
このスレの内に解決するんかな
ともあれ>971、本物なら早くエラーも晒しんさい。
973デフォルトの名無しさん:04/10/20 22:21:20
>>963
そうなのか・・・
じゃあ、テキトーにやるかな。
974955:04/10/20 22:23:20
実行時、例外エラーが起きてるらしく、以下のソースに飛びます。
catch(ArrayIndexOutOfBoundsException ex){
System.out.println("Err:" );

すみません、ホント初心者なんでデバッグ情報拾えないんです。
拾い方を囁いてくださる神々の皆様!哀れな子羊に福音を!!
975デフォルトの名無しさん:04/10/20 22:25:10
福音の使い方が間違ってる。
976デフォルトの名無しさん:04/10/20 22:26:34
配列が足りないんじゃん。
そこに、ex.printStackTrace()って入れてみれば発生箇所もわかるはず。
977デフォルトの名無しさん:04/10/20 22:26:39
まともに例外処理できないならcatchするなと。つーかそれ
入出力関係ないだろと。
978デフォルトの名無しさん:04/10/20 22:28:10
>>974
> System.out.println("Err:" );
ex.printStackTrace(); にしろ。
979955:04/10/20 22:28:58
>配列が足りないんじゃん。
>そこに、ex.printStackTrace()って入れてみれば発生箇所もわかるはず。

とりあえず、やってみます。
皆さんありがとぉー!!
980955:04/10/20 22:33:43
やってみました。
なんかでました。
とりあえず、貼ります。

java.lang.ArrayIndexOutOfBoundsException: 6
at KAWASE001.CutRateFile(KAWASE001.java:36)
at KAWASE001.main(KAWASE001.java:102)
981955:04/10/20 22:35:24
ソースコードの36行目がおかしいのかなぁー?
982デフォルトの名無しさん:04/10/20 22:36:18
>>960
マスターすればJavaプログラムが組めるようになる。
983デフォルトの名無しさん:04/10/20 22:37:19
>981
エラーにはそう書いてあるね。
ただ、A[i]の宣言・生成の辺りを見直した方が良さそうだ。
984955:04/10/20 22:42:18
>983
ありがとうございます。
入出力含めてこの周辺見直してみます!
また報告します!!
985955:04/10/20 22:53:35
途中経過です。
入出力とも特に変な文字列はありませんでした。
A[i]の辺りを貼ります。
//ファイル存在チェック
File f =new File(idir);  ←引数でDirを指定。
String A[] = f.list();
int Cnt=0;
try{//@ルーチン
for (int i=0;i<=100;i++){ //Aファイル検索
if (A[i]==null) break;
Cnt++;//File Found!!
A[i] = idir + A[i]; //DIR,File名結合

引数でディレクトリを指定し、そのディレクトリ内にファイルが存在するか
否かチェックし、存在していればそのファイル名を取得し、ディレクトリ名とファイル名を結合しています。
出力結果を見るとファイル名はすべて取得できているんですが、
ファイル出力はできないんですよね。謎です。また調べます。ノシ
986デフォルトの名無しさん:04/10/20 22:57:33
for (int i=0; i<A.length; i++) {
でヨサゲ。
987955:04/10/20 23:02:46
>986
試してみました。
なんで
for (int i=0;i<=100;i++){ が
for (int i=0; i<A.length; i++) { でもいいのか
理解できてませんが、動作は一緒でした。
エラーも一緒でした。
ぴったり8,192バイト出力して止まるんですよねぇー。
なぞだ。
988デフォルトの名無しさん:04/10/20 23:06:25
>>955
・・・・・
System.out.println(A.length);
for (int i=0; i<A.length; i++) {
System.out.println(i);
・・・・・
と直して出力結果見せて。
989デフォルトの名無しさん:04/10/20 23:13:24
フラッシュしてるのか?
990955:04/10/20 23:14:09
>988
ありがとう。

結果を貼ります。
N:\>java KAWASE001 N:\input\ output.txt
0
N:\input\aaa.txt
1
N:\input\AfandMadia.dat
2
N:\input\Americas.dat
3
N:\input\Asia.dat
4
N:\input\EU.dat
5
N:\input\US.dat
6
java.lang.ArrayIndexOutOfBoundsException: 6
at KAWASE001.CutRateFile(KAWASE001.java:38)
at KAWASE001.main(KAWASE001.java:103)

途中のフルパスファイル名は、無視してください。
確かにこの順序で読み込んでいるんですが、出力ファイルは4の次のEU.dat
の内容の途中で止まってます。
991デフォルトの名無しさん:04/10/20 23:16:36
>>955
System.out.println(A.length);
の結果は?

>出力ファイルは4の次のEU.datの内容の途中で止まってます。
バッファリングしてるんだから、おかしくはないよ。
992955:04/10/20 23:20:18
>System.out.println(A.length);
の結果は?
これです。
0
1
2
3
4
5
6

・・・あれ?なんで7個でてるんだ?入力ファイル6個なのに。
993デフォルトの名無しさん:04/10/20 23:22:32
for文をもう一度確認しる。
994デフォルトの名無しさん:04/10/20 23:27:55
9月にJavaかCかのプログラミングを選択するので
Javaを選んだんですが結果的には良かったんですかね?
995デフォルトの名無しさん:04/10/20 23:28:30
>>992
それは
System.out.println(i);
の部分の出力です。

A.lengthの値はAの配列の数なので固定されてるはず
996デフォルトの名無しさん:04/10/20 23:29:13
>>992
おかしい。System.out.println(A.length); が、出ていない。
forのループの終了判定は本当に、 i<A.length に変えたか?
コンパイルはしなおしたか?
997デフォルトの名無しさん:04/10/20 23:29:48
>>994
プログラマとしては C が読めないのは致命的。
Java は必ずしも致命的ではない。

C が出来ないなら、悪い選択をした可能性が高い。
998デフォルトの名無しさん:04/10/20 23:29:56
>>994
Cも勉強しといた方がいいよ。
999デフォルトの名無しさん:04/10/20 23:30:36
>>992
i<=A.lengthになってるんじゃないか?

>>994
よかった。

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