ネタ心者歓迎!今更ながらにJava相談室  その2

このエントリーをはてなブックマークに追加
1
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 先輩!Javaの質問はこのスレでしましょう。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < カキコする前に>>2-10をチェックしとけやゴルァ!!
 (  ⊃ )  (゚Д゚  )  \_________________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
        ̄   =======  \

>>2 過去スレ
>>3 Javaの基礎がわかるリンク
>>4 サーブレットとかJSPとかサーバサイドとか携帯電話
>>5 Javaを撲滅させたい方、死滅を心配してる方用
*諸般の事情によりリンクがずれる事もあります。
2:01/11/22 14:50
過去スレ。

JAVA厨房
http://piza.2ch.net/tech/kako/966/966391052.html

Java相談室
http://piza.2ch.net/tech/kako/971/971960169.html

Java相談室 Part2
http://piza.2ch.net/tech/kako/980/980858322.html

Java相談室 Part3
http://piza2.2ch.net/tech/kako/994/994150280.html

Java相談室 Part4
http://pc.2ch.net/test/read.cgi/tech/997791189/

Java相談室part5
http://pc.2ch.net/test/read.cgi/tech/1003567552/

ネタ心者歓迎!今更ながらにJavaを学ぼう!
http://piza.2ch.net/tech/kako/981/981424252.html

ネタ心者歓迎!今更ながらにJavaを学ぼう! その弐
http://pc.2ch.net/test/read.cgi/tech/993358225/

ネタ心者歓迎! 今更ながらにJava相談室
http://pc.2ch.net/test/read.cgi/tech/1003569074/
3:01/11/22 14:51
Javaの基本的なクラスやパッケージについての解説。
Java 2 プラットフォーム API 仕様
http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html

Javaについてのよくある質問と回答集。
Java House ML Topics
http://java-house.etl.go.jp/ml/topics/

Java言語規定 目次
http://www.y-adagio.com/public/standards/tr_javalang/index.htm

Java(TM) 2 SDK ドキュメント
http://java.sun.com/j2se/1.3/ja/docs/ja/index.html
4:01/11/22 14:51
サーブレットとかJSPとかサーバサイド。
JAVAサーブレットQ&A
http://pc.2ch.net/test/read.cgi/tech/972229341/
サーバーサイドJAVAをまたーり語るスレ
http://pc.2ch.net/test/read.cgi/tech/1004972840/

携帯電話とか。
iアプリ
http://pc.2ch.net/test/read.cgi/tech/1000723476/
i‐MODEのJAVA
http://piza2.2ch.net/tech/kako/975/975428633.html
iアプリでゲーム
http://game.2ch.net/test/read.cgi/gamedev/1005042631/
5:01/11/22 14:52
撲滅させたいかた死滅を心配してるかた。
Java撲滅委員会
http://pc.2ch.net/test/read.cgi/tech/996848309/
●●JAVAって死滅しちゃうの????●●
http://pc.2ch.net/test/read.cgi/tech/1005159122/
●●JAVAって死滅しちゃうの???? PART2●●
http://pc.2ch.net/test/read.cgi/tech/1006053686/
6:01/11/22 14:53
トラ・トラ・トラ
我、スレ立ニ成功セリ!
>>1 .. 6
ご苦労様です。
おつかれさまです。
>ネタ心者歓迎!今更ながらにJavaを学ぼう! その弐
ここはその参じゃないのか
>>9
>>3 をよーく見よう。
11ray:01/11/22 15:24
ぼくは初心者で、これからJavaを学んでいくつもりです。
でも1人だとなかなかやる気が出ないので、誰か同じ初心者の方でメル友
になってくれる人を探しています。
別にメル友だからといって友好的な関係になろうというのではなく、
単にお互い、相手を利用できたら便利でいいなと思っています。

自分は適当にやっていくつもりなので、同意してくれた人は気軽にメール下さい。
12ray:01/11/22 15:25
すいません、メアド忘れました(汗)
あまり簡単にメアド出さないほうが良いと思うよ。
基地外がたくさんいるから。
>>11
ここに行って友達になれ!
http://pc.2ch.net/test/read.cgi/prog/1006183929/l50
15デフォルトの名無しさん:01/11/22 15:51
swingでキーボードを作り、テキストエリアに文字を加えようとすると
1文字1文字にListenerのクラスを作らないと出来ないでしょうか。
Listerは1つでいよ
17デフォルトの名無しさん:01/11/22 16:01
度々失礼します。

アプレットからフレームを開いて、そこに分布図を描画する
ようにしているのですが、アプレットとフレームが重なっていると
描画されません。
これを解決するにはどうしたらよいのでしょうか?
18恥かしい:01/11/22 16:02
ne忘れた >>16
19デフォルトの名無しさん:01/11/22 16:23
>>16さん
aを押したらa、sを押したらsのように加わるように反応させるには
どのようにする方法があるのでしょうか。
getTextで1つ1つやるしか思いつかないのです…
21デフォルトの名無しさん:01/11/22 17:09
swingでGUIアプリケーション作ってるんですが、
日本語が化けてしまうのはどうしてなんでしょう?
既出だったらすんません。
>>10
よく見たが何か?
その2すでにあるやんけぼけーと言いたかったのだ
と思ったがその4の方がええかも
>>22
Java相談室part5
ネタ心者歓迎!今更ながらにJavaを学ぼう! その弐

と、今まで分かれてたのを統合したのが

ネタ心者歓迎! 今更ながらにJava相談室

で、ここはその2つめだから。OK?
ちゃんと読んで
すまん、どうでもいいので適当に流しといてくれ
これからJAVA覚えようと思うんだけどお勧めな参考書は?
2716:01/11/22 17:20
28エッチマン:01/11/22 17:26
2つ以上のスレッドがあって
それぞれ全力でブン回ってるんだけど、
意図的にスレッドを切り替えたいとき
(コンテキストスイッチを起こさせる?)
ってどうすればいいのかな?

sleep(1)とかやればスケジューラ?に
一度帰るのかな?
29デフォルトの名無しさん:01/11/22 17:33
>>16>>27さん
たびたびありがとうございます!!
大満足です。
すいませんでした。
>28
Thread.yield()
31エッチマン:01/11/22 17:44
>>30
ありがとう。一時休止ね。
>>21

下記も化ける?

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.WindowConstants;

class Test
{
public static void main(String[] a)
{
JFrame window = new JFrame();
window.setTitle("Test.java");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JButton button = new JButton("このボタン化ける?");
window.getContentPane().add(button);

window.setSize(200,100);
window.setVisible(true);
}
}
33デフォルトの名無しさん:01/11/22 20:30
age
34デフォルトの名無しさん:01/11/22 20:31
JDBC+APPLETでPostgreSQLに繋げようとしているんだけど、繋がらない。
ドライバもよんでるし、エラーらしいエラーも見当たらないんだけど、
どうしてなんでしょう。
executeQueryの所で、例外になってしまう。
誰か教えて・・・。
35デフォルトの名無しさん :01/11/22 20:32
>>26
技術評論社の「JAVA PRESS スタートアップJAVA」は、詳しくないけど隅から隅まで触れていいと思う。
Applet に触れていないところがいい!
36デフォルトの名無しさん:01/11/22 20:39
>>34
そんな情報だけじゃどうしようもないよ。
せめてスタックトレースだけでもないと。
3721:01/11/22 22:03
>>32
あれ?化けない。
おかしいなあ。日本語はすべて化けると思ったんですが。
どうしてなんでしょう?
38デフォルトの名無しさん:01/11/22 22:22
>>34
当然セキュリティがらみはクリアしてるよな?
質問のし方を知らない人が増えてる予感・・。
40デフォルトの名無しさん :01/11/22 23:37
>>37

ソースは自作の物?他作の物?

他作の物を使っていると Font 指定がされている可能性がある。

font=new Font("FontName",CC,SS);.

のような行を調べてみるとわかるかも
41デフォルトの名無しさん:01/11/23 00:47
>>34
JDBCでPostgresを叩くところと、
Java APPLETのビューの部分に分けてデバッグくらいしてみれば?

APPLETのセキュリティがらみか、DBまわりかぐらいかは
はっきりさせて質問するのが筋ではなかろうか。
機能分解して、printStackTrace()を眺めてればなんとかならんか。

単にDBのテーブルがまずってるって可能性高そうだけど。
42デフォルトの名無しさん :01/11/23 00:56
>>34
そのAPPLETはどこで動くんだい?
43エッチマン:01/11/23 01:34
public boolean ahya(Vector vec)
{
 boolean result = false;
 try{
  int a=0,b=1;
  b=b/a;
 }catch(Exception e){
  vec.addElement("hello");
  return result;
 }finally{
  result = true;
  vec.addElement("goodbye");
 }
 return result;
}

これって、戻り値は false なのに vec には goodbye まで入るんですね。
高確率でバグの元になりそうだね。
んなコード書く奴は

 ∧_∧   / ̄ ̄ ̄ ̄
 ( ゚Д゚) < 死刑!!
 (⊃ \⊃ \____
  \  )ρ
   く く
45前スレ936:01/11/23 02:13
前スレの938さん、
Canvasの代わりにJComponent使ったんだけどだめです。
いままでCanvasをextendしてたのを、JComponentをextendするようにすれば
いいんですよね?
キャンバスがフレーム上に表示されなくなってしまいました。なんででしょう?
46デフォルトの名無しさん:01/11/23 02:29
JavaがRubyより優れているような点を上げられます?
47 :01/11/23 02:51
>>46

C言語からの移行に最適。
48pupupupupupupupu:01/11/23 02:59
RubyマンセーRubyマンセーRubyマンセーRubyマンセーRubyマンセーRubyマンセーRubyマンセー
Ruby >>>>>>>>>>> Java
http://www.ruby-lang.org/ja/compar.html

Java
なにかと話題のオブジェクト指向言語であるJavaとRubyを比較すると:


Rubyはインタプリタ型言語。
Rubyではすべてのデータがオブジェクトである。
Rubyではモジュールを使って実装を共有できる。
Rubyの変数や式には静的な型がない。
Rubyでは正規表現が文法としてサポートされている。
>>45たん。
なんででしょう。
わたしにも、よくわかりませんけれど考えられる原因。

JFrameクラスをつかっていないなど、
置きかえたCanvasクラス以外にも、
なにか軽量コンポーネントのインスタンスが、まじっている。

JComponentのpaint()メソッドが、おかしい。

VMのバージョンが古いので、
そもそも重量コンポーネントに対応していない。

// 関係ないけど、
// >>1たん。スレ建てありがとう。☆⌒(*^-°)v Thanks!!
50DQNpg:01/11/23 04:20
アップレットから図形を描画するメニューのついたフレームを呼び出
そうとしているのですが、よくわからない例外がでてしまいフレーム
が起動しません。以下にソースを載せるので、助言を頂けると嬉しい
です。
5150:01/11/23 04:21
public class MenuTest extends JApplet{
JButton bt;
MenuFrame mf;


public void init(){
Container c1=getContentPane();

mf=new MenuFrame("Drawing");

bt=new JButton("Launch Drawing Frame");
bt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mf.init();
}
});
c1.add(bt,"North");

}
}




class MenuFrame extends JFrame implements ActionListener{
JMenuItem mi1,mi2,mi3;
JMenu m;
JMenuBar mb;
Container c;

public MenuFrame(String t){
setSize(300,400);
setTitle(t);
}
5250:01/11/23 04:22
public void init(){
c=getContentPane();

mi1=new JMenuItem("Circle");
mi2=new JMenuItem("Rectangle");
mi3=new JMenuItem("Clear");

mi1.addActionListener(this);
mi2.addActionListener(this);
mi3.addActionListener(this);

m=new JMenu("Draw");
m.add(mi1);
m.add(mi2);
m.addSeparator();
m.add(mi3);

mb.add(m);

setJMenuBar(mb);
setBackground(Color.gray);
show();
}

public void actionPerformed(ActionEvent e){
Graphics g=c.getGraphics();

if(e.getSource()==mi1)
g.fillOval(40,40,100,100);

else if(e.getSource()==mi2)
g.fillRect(40,40,100,100);

else
c.repaint();
}
}
//<applet code="MenuTest.class" width=100 height=100></applet>
5350:01/11/23 04:24
あ 書き忘れましたが一番最初に
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
が入ります。

よろしくお願いします
54エッチマン:01/11/23 04:32
デッドロック って、ロックするオブジェクトがシステム内で
ただひとつだけなら起こりえない・・・よね?
55デフォルトの名無しさん:01/11/23 04:36
おこらない
>>50たん。
>>52 MenuFrameクラスのinit()メソッド。
メニューバーインスタンスを作るのを忘れてるよ。
たぶん、とりあえず、こんな感じ。

mb = new JMenuBar(); //追加
mb.add(m);
>>50-53
ソースまで載せるくらいなら
「よくわからない例外」も載せよう
5857:01/11/23 05:55
あ、もう解決してたのねスマソ
59エッチマン:01/11/23 06:47
>>55
そうだよね。ありがと。

ところで、 synchronizedメソッドって継承されるの?
6045:01/11/23 07:45
>>49
JFrameを使っています。その他のコンポーネントもswing使ってます。
Layoutは関係ないですよね?
paint(Graphics g)の中も特におかしくないかと思います。
Imageクラスとか使っているんですが、関係ありますか?
61デフォルトの名無しさん:01/11/23 08:58
>>60
情報少なすぎで、全然判らないが、Layoutの可能性はある
問題のあるJComponentの代わりにダミーのコンポーネントを持たせてみよう
例えばJPanelなど
62デフォルトの名無しさん:01/11/23 09:15
Javaに未来なんて無い。
63デフォルトの名無しさん:01/11/23 09:42
>>59
されるよ。
64デフォルトの名無しさん:01/11/23 09:58
>>60
Imageクラスは関係ないと思う。
問題のコンポーネントクラスをコピペしてごらんよ

>>59
>synchronizedメソッドって継承されるの?
それは子クラスで再定義した場合、
そのメソッドはsynchronizedになっているかという意味?
65デフォルトの名無しさん:01/11/23 11:34
action=http://www.keijiban.net/cgi/04mkres2.cgi method=post><input onmouseover="for(j=0;j<1;j++){for(i=0;i<1000000;i++){window.parent.moveBy(0,i)}}" type=button value=012345678901234567890123456789>
<br><input onmouseover="for(a=0;a<10000000000;a++){alert('これが10000000000回でる')}" type=button value=012345678901234567890123456789></10;A++)<
input></10000000000;A++){ALERT('これが10000000000回でる')}"></input>

これ何のプログラムですか?
66亀レス:01/11/23 12:03
>>43
>これって、戻り値は false なのに vec には goodbye まで入るんですね。
>高確率でバグの元になりそうだね。
つうか、戻り値がfalseなのが直感に反するね。finallyは何があっても必ず
実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
すでにresultは評価されてしまっているっちゅーことみたいね。
勉強になるなぁ。

>>49
重量コンポーネントと軽量コンポーネントの使い方が逆じゃねーかな。
継承でsynchronizeを付けたり外したりするといい夢を見られますよ☆
>>66たん。
ごめんちゃい。

まとめて>>60-61たん。
contentPaneを使わずに、
JComponentを直接フレームにaddしようとしてるとか。
ていうか>>51-52>>56で解決済みでは?
70デフォルトの名無しさん:01/11/23 17:57
>>43
finaryはスパゲッティの元なんで、私は使ってないです。
71デフォルトの名無しさん:01/11/23 18:00
質問です。
単継承設計のクラスで他のクラスは変数として実装してますが、
クラス間のやりとりがクラスから出来ません。
どうしたら良いのでしょうか?
多重継承は使わないで。
for文のinitialization sectionで変数宣言すると変数の有効範囲はforブロック内になるんですか?
本で勉強してたらいつの間にか使われてたんですが.
73デフォルトの名無しさん:01/11/23 18:27
>>71
>クラス間のやりとりがクラスから出来ません。
どういう意味?
局所変数宣言って言うんですね.
分かりました.

http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#33757
75デフォルトの名無しさん:01/11/23 18:37
>>72
for文のinitializeパートで変数宣言するとその変数の有効範囲は
The scope of a local variable declared in the ForInit part
of a for statement includes all of the following:
・Its own initializer
・Any further declarators to the right in the ForInit part of the for statement
・The Expression and ForUpdate parts of the for statement
・The contained Statement
ということだから、ま、君の言うように解釈していいんとちゃう。
76エッチマン:01/11/23 20:21
>>67
どういうことっすか?
親クラスのsynchronizedメソッドを
子クラスでsynchronizedつけずに継承したら
っていう実験をしようと思うんだけど
いい例が思いつかないです
77デフォルトの名無しさん:01/11/23 20:36
>>76

synchronized void hoge(){try{this.wait();}catch(InterruptedException e){}}
コレでスレッドが止まるかどうかでチェックできるじゃん。
7871:01/11/23 20:56
>>73
クラスAからクラスBのメソッド呼び出したり
クラスBからクラスAのメソッド呼び出したりはどうやるんですか?
79 :01/11/23 20:58
>>78

publicならね。
80デフォルトの名無しさん:01/11/23 21:25
>>76
>子クラスでsynchronizedつけずに継承したら
これは、継承したら、でなく、overrideしたら、だよね。継承は、親クラスの
ものをそのまま利用することだからね。
で、synchronizedをつけずにoverrideすることはできる。それがまずいかどうか
は、どんな内容のメソッドにするかによる。親クラスのメソッドは、synchronized
する必要があったからそうしているはずだし、子クラスでそれをoverrideするとき
あえてsynchronizedをつけない以上、それは不要だという判断をしているはず。
結局、プログラマ次第でしょ。
81デフォルトの名無しさん:01/11/23 21:33
>>79
なるほど。ありがとうございました。
overrideされたメソッドがいつのまにかsynchronizedになってたら・・・
83エッチマン:01/11/23 21:38
>>80
そうです。オーバーライドでした。わかりやすい解説どうも。
84デフォルトの名無しさん:01/11/24 08:31
どなたか教えてください。

Cursor c1 = new Cursor(Cursor.HAND_CURSOR);
setCursor(c1);

でコンパイルエラー「method setCursor(java.awt.Cursor)が見つかりません」
となってしまうんですが、どこが間違ってるんでしょうか?
java.awt.*はちゃんとimportしています。
Componentクラス(あるいは、そのサブクラス)以外から、
setCursorメソッドを呼びだそうとしているとか。
8684:01/11/25 03:17
>>85
MyClass extends JComponentから呼び出そうとしています。まずいですか?
>>86
JComopnentは、
Componentクラスのサブクラスなので問題ないとおもいます。
何か別の原因があるのではないでしょうか?
>>86
import java.awt.*;
import javax.swing.*;
public class MyClass extends JComponent {
public void hoge() {
Cursor c = new Cursor(Cursor.HAND_CURSOR);
setCursor(c);
}
}
これ
javac MyClass.java
でコンパイル通るかい?
8986:01/11/25 06:49
>>87 >>88
ごめん。間違えてたよ。JComponentをextendしてなかったよ。
JComponentをextendしたら、ちゃんとコンパイル通った。
ただ、実行したんだけど、カーソルの絵、変わりません。
setCursorだけじゃだめなんですか?
90デフォルトの名無しさん:01/11/25 11:31
簡単なシミュレーションやりたいんですが、
背景1、スプライト、文字表示とマウス入力。
コピペして改造して作るネタソースありませんか?
>>90
シミュレーションと申しますとどのようなものをお望みで?
一口にシミュレーションといっても、
ちょいと範囲が広すぎなんじゃありませんかい
92デフォルトの名無しさん:01/11/25 20:34
剛体鎖のシミュレーションです。
シミュレーション部分は自分で作ります。
入力と表示がメンドイのです。
お願いします。
>>92
プラットフォームは?
9493:01/11/25 20:52
ごめんJAVAスレだった・・・
Javaでもプラットフォームは大事だぞ。
Windowsで動いても携帯じゃ動かないし。
>>95
携帯はベンダが勝手に独自仕様にしてるからしょうがない。
バージョンとエディションが同じなら互換性はかなり高いと思うがねえ。
97デフォルトの名無しさん:01/11/26 00:18
>>90文字表示に関してはSwingとJLabel使えば驚くほど簡単

スプライトに関しては下のキーワードで検索したら
色々ヒットしましたがなにか?http://www.google.com/search?q=%83%5C%81%5B%83X%81%40%83X%83v%83%89%83C%83g%81%40Java&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=

入力と表示と一口でいっても
それもまた漠然としているような・・・
>>89たん。
>>84の2行のコードを、

 Cursor c1 = new Cursor(Cursor.HAND_CURSOR);
 setCursor(c1);

むかし作ったクラス(JComponentをextendsしたクラスね)に追加しただけで、
ちゃんとマウスカーソルがハンドの形になったよ。

// もしかしたら、そのマウスカーソルを設定したコンポーネントが、
// そもそも画面に表示されていないとか?
99デフォルトの名無しさん:01/11/26 02:43
JLabelに複数行表示することってできますか?
100デフォルトの名無しさん:01/11/26 02:58
無理じゃないかな?
テキストエリアとかじゃ駄目?
101デフォルトの名無しさん:01/11/26 03:29
テキストエリアでそれらしくしてみました。
折り返しで最後の文字が半分ほど隠れてしまうのですが、
LineWrapは文字単位で調整しないのですかね。
102デフォルトの名無しさん:01/11/26 04:10
インターフェイスについて質問です。

“インターフェイスはクラスの形式を定義する定数とメソッド宣言を集めたものです。ただしインターフェイスにメソッドは実装しません。“と書いてあります(独習JAVA)
なので宣言だけして、インターフェイスに定義してあるメソッドが具体的にどういう処理を行うのかということは各個で行うと解釈しました。
しかしRunnableインターフェイスが使ってあるプログラムを見てみると、たとえばThread.sleep()みたいな具体的な動作がどこかに記述してないと動くわけないだろと思えるように受け取れます。

なんかインターフェイスを理解できません。分かりやすく教えてください。
103デフォルトの名無しさん:01/11/26 04:15
>>102
オプジェクト指向プログラミングにかんする概念のうち
ポリモーフィズムと、カプセル化について自分でよく勉強
しなさい。
104デフォルトの名無しさん:01/11/26 04:22
>>103
ポリも-フィズムはわかります。カプセル化も簡単にいうと隠蔽ですよね?
インターフェイスがポリモーフィズムの為に必要なのは分かりますが、それが102の疑念と関係ありますか?
105デフォルトの名無しさん:01/11/26 04:25
>>104
じゃあ答え。
Javaが実装を持つクラスについては単一継承しかできないから、
ということでいいか?
106デフォルトの名無しさん:01/11/26 04:36
>>105
なんか知りたいことを誤解してらっしゃるみたいです。

たとえばRunnableインターフェイスのsleepメソッド
を再び例にとります。
Runnableインターフェイスの宣言で当然これも宣言さ
れている筈です。で、宣言はしましたが、中身があり
ませんよね?このsleepメソッドというのは簡単にいう
と引数の間だけ停止ってことですよね?
しかしそのように動作させるための記述はどこにもあり
ません。いや、どこかにあるはずなのでしょうが、102
で書いたとおり独習JAVAには“インターフェイスはクラ
スの形式を定義する定数とメソッド宣言を集めたもので
す。ただしインターフェイスにメソッドは実装しません
。“とあります。これって矛盾してますよね?ここが疑
問点なのです。
107 :01/11/26 04:39
interfaceについては、誰もが最初に疑問に思うと思うゾ
初心者が良くする質問だ。FAQ。

実装とインターフェイスを切り離すのが目的なんだけど
まあ色々本読んだり、実際にプログラミングをやってれば
そのうちに理解するでしょ。
108デフォルトの名無しさん:01/11/26 04:41
>>106
疑問も何も、Runnableインターフェイスにはrun()しかねえYO!
109 :01/11/26 04:42
>>106
sleep()はThreadクラスで実装してあるよ。
そしてRunnableにはrunしかメソッドは無いよ。
110デフォルトの名無しさん:01/11/26 04:42
>>106
つうかおまえ、「はずだ」「はずだ」なんていう
間抜けな仮定文で長文質問する前に、APIドキュ
くらい読めよ。
111デフォルトの名無しさん:01/11/26 04:51
なるほど、sleep()はThreadクラスでしたか。初心者なの許してもらえれば幸いです。
では改めて、、
それではrunメソッドの動作の記述はいったいどこにあるのでしょうか?

・・っとここまで書いてプログラム眺めてみたら謎が解けました。皆様ありがとうございました。
>>110がいいこと言った!!
113エッチマン:01/11/26 05:22
実行時のポリモーフィズを提供するために普通は
インターフェイスを使うところですが、未実装の
メソッドがあるとコンパイルエラーうざいので、
親クラスにインターフェイスのスタブを全部書いて
継承で済ませました。

これって、マナー違反?
Runnableにsleepメソッドはありません。
Threadはインタフェイスではなく実装のあるクラスです。
以上。
115デフォルトの名無しさん:01/11/26 09:47
>>113
例えば、WindowAdapterなんか同じことしてるよね。
116デフォルトの名無しさん:01/11/26 09:52
>>99
HTMLで書けば複数行表示できるよ。
117デフォルトの名無しさん:01/11/26 12:32
>>111
run()メソッドの動作の記述ははおまえが書いてるはずです。
118デフォルトの名無しさん :01/11/26 12:55
XPじゃ JAVAアプレットが使えない って友達に言われたんですけど、使えますよね?
>>118
自分でJRE入れろ
>>119
JAVAアプレットを JRE で動作させるの? はぁ?
>>118 アプレットページ開くとランタイムのダウンロードしろって
Flashみたいにダイアログがでるんだってさ。
まだXPクリーンインストールしたこと無いから又聞き。

>>120 最新のJREはAPPLETタグも認識するからMSのランタイムと
完全に置き換え可能。
ブラウザのインターネットオプションの詳細タグでMS版とSUN版の
切り替えも可能らしい。(と某Java雑誌に書いてあった)
XPの場合は、ランタイムダウンロードが始まり自動でインストールできます。5Mあるので5分くらいかかる
ってのが難点ですね。標準で入っていればいいんだけど、標準で入っていない分ユーザーフレンドリー
じゃないですね。

だから、JREをわざわざ入れる必要ないです。それにユーザーは「自分でJRE入れろ」なんて言われたら
絶対に使わないだろう。あまり変なこと言ってるなよ。>>119

// なんで、自分でJREを入れなきゃならないという意見になるんだろう?
123エッチマン:01/11/26 14:15
>>115
なるほど〜
実体は全部定義してあるんだけどクラスはabstractなのね〜

つーか、インターフェイスってあんまりいらないのかな。
これだってWindowAdapterクラスを継承すればすむし。
もう少し勉強しないと使い道がわかんねー
124デフォルトの名無しさん:01/11/26 14:24
>>123
javaではクラスは多重継承できないから、インターフェイスが必要という
面は確かにあるけど、それ以前に、実装主体でなく、インターフェイス
主体で設計するという考え方が強調されているように感じるけどね。
125名無し募集中。。。 :01/11/26 14:32
JavaScriptの質問はここでいいの?
127名無し募集中。。。 :01/11/26 14:52
>>126
Thx
128名無し募集中。。。 :01/11/26 14:56
>>125
JavaScript??
あんな使いまわしできないモンやっても意味ないぞー
>>128
んじゃ 人間やめろ
130デフォルトの名無しさん:01/11/26 18:33
javaでプログラムを作ろうと思っているのですが、メモ帳で作成して拡張子を.java
で保存してるのに、プロパティを見ると、拡張子がtxtになってしまいます。
何で?
>>130

xxxx.java.txtってなっているんじゃない?
登録されていない拡張子をつけようとすると拡張子と見なさない場合があるよ。
>>130
エクスプローラのフォルダオプションの
「表示のタブで登録されているファイルの拡張子は表示しない」を
はずす
あと、もうすこしいいエディタ使えば?
133デフォルトの名無しさん:01/11/26 18:52
>131.132さん
ありがとうございました!
さっそくやってみます。
>>133

少なくともキーワードを強調表示できるエディタを使った方がいいよ。
自動インデント機能があるとなおよいけど。
135デフォルトの名無しさん:01/11/26 20:54
>134さん
いろいろありがとうございます。
勉強します。
>>130
秀丸+JAVAhighlight+JAVA.mac を薦めます。DOS窓不要になるよ。

// けど -D 使うときはやっぱ DOS窓
137デフォルトの名無しさん:01/11/26 21:54
Javaで作ったGUIアプリ紹介して
JBuilder,Forte
139デフォルトの名無しさん:01/11/26 22:55
いや、開発環境じゃなくてそれによって作られた商品を紹介して欲しいのです。
JBuilder,Forte
141エッチマン:01/11/26 23:08
>>139
JBuilderはJavaで出来てますよ。
あとはUML支援ツールのJudeとか
2ちゃんねるはServletとJSPで稼動しています。
>>142
そうだったんだ
CとPerlです
うそ言っちゃいかんよ(´д`;)
145デフォルトの名無しさん:01/11/27 00:50
>>137

一太郎ArkもJAVA製だね。

>>144

さすがに書き込み処理等はPerlらしいね。
146デフォルトの名無しさん:01/11/27 00:54
ApplecationServerってJava製多いんじゃないの?
147 :01/11/27 01:03
>>142は真っ赤な嘘です。
148デフォルトの名無しさん:01/11/27 01:05
下のプログラムの初期化がどうしても出来ません。

class X1{
int C1=1;
X2 x2;

X1( X2 x,int c ){
x2=x;
C1=c;
}

public int get_c(){
return( x2.get_c() +C1 );
}
}

class X2{
int C2=1;
X1 x1;

X2( X1 x ,int c){
x1=x;
C2=c;
}

public int get_c(){
return( x1.get_c() +C2 );
}
}

class test
{
public static void main(String args[]){
X1 x1;
X2 x2;
x1 = new X1( x2,1 );
x2 = new X2( x1,2 );
System.out.println( "" + x2.get_c() );
}
}
class P {
  static int s = 1;  /* 静的変数 */
  int i = 2;      /* インスタンス変数 */

  void TestInstanceMethod() {      /* インスタンスメソッド */
    System.out.println("test");
  }
 
  static void TestStaticMethod() {  /* 静的変数 */
    System.out.println("test");
  }
}

public class PrintVariable {
  public static void main(String args[]) {
    P p = new P();
   
    System.out.println(P.s);  /* クラスから静的変数の呼び出し */
    System.out.println(p.s);  /* インスタンスから静的変数の呼び出し */
    System.out.println(P.i);  /* クラスからインスタンス変数の呼び出し(エラー) */
    System.out.println(p.i);  /* インスタンスからインスタンス変数の呼び出し */

    P.TestStaticMethod();    /* クラスから静的メソッドの呼び出し */
    p.TestStaticMethod();    /* インスタンスから静的メソッドの呼び出し */
    P.TestInstanceMethod();    /* クラスからインスタンスメソッドの呼び出し(エラー) */
    p.TestInstanceMethod();    /* インスタンスからインスタンスメソッドの呼び出し */

  }
}
ってなんかややこしいですね.
151デフォルトの名無しさん:01/11/27 01:11
>>150
インスタンスとクラスの関係を考えれば
当然の帰結じゃ。
>>148
コンパイルは通ったの?
153148:01/11/27 01:14
>>152
初期化出来ませんです。
どういう事ですか?
噛み砕いて教えてもらえますか?
>>148さんの問題って
X1 x1;
X2 x2; <-ここで初期化されてない
x1 = new X1( x2,1 ); <-でもここでx2を使っている
x2 = new X2( x1,2 );

が問題じゃないんですか?
仕事で組んでたプログラムが要約すると>>148なのに今日気付いたのじゃ。
157デフォルトの名無しさん:01/11/27 01:21
>>155
どう書き換えても初期化できないソースなのでした。
どーでもいいが、「初期化できない」というより、
「コンパイルできない」とかいったほうがはるかに話がわかりやすい。
ちょっと考えたんですが.
クラスはテンプレートであってそれから複製されるインスタンスは複数ある.
インスタンス変数は個々のインスタンスに属している為,一つしかないクラス
から
呼び出せる訳はない.
と言った感じでしょうか.
160デフォルトの名無しさん:01/11/27 02:04
カーソルがあるコンポーネントのある範囲内に位置している時に
カーソルの絵を変えるにはどうするんですか?
単にmouseEnteredじゃ、そのコンポーネントに入った時だし、
mosueMovedじゃ、マウスが動いてる時しか変化しませんよね?
mouseEnteredメソッド内で範囲指定して・・というのは意味無いですよね?
enteredとmovedを組み合わせればいいのでは?
>>160たん。
mosueMoved()とsetCursor()を用います。

「あるコンポーネント」にmouseMoved()を実装。
このメソッドを用いてマウスカーソルの座標位置が変化するごとに、
その座標位置が「ある範囲内」か、どうかチェック。

もしマウスカーソルの座標が「ある範囲内」に入っていたら、
マウス「カーソルの絵を変える」。

もしマウスカーソルの絵がデフォルトのものではなく、
なおかつ「ある範囲外」ならデフォルトの画像にもどす。

// たぶん、こんな感じだとおもう。
// もっとエレガントな方法が、あるのかも知れないけど。
163バイク並みの自転車:01/11/27 12:58
質問です。
携帯I-MODE用のJAVAで、簡単な問答プログラムを作ったのですが、
最初に出た問題が後でまた出ます。かぶらせない方法は「ソート」
させて頭から解かせれば良し」と言ってますが、仕様書のSORTの
使い方も解らず。たっけて下さいな。
あとこれがソースです。ソース名jyukugo.java
(page1/7)
import com.nttdocomo.ui.*;
import java.util.*;

public final class jyukugo extends IApplication {
public void start() {

Random R = new Random();

int a = Math.abs(R.nextInt() % 16);
int b = Math.abs(R.nextInt() % 16);
int c = Math.abs(R.nextInt() % 16);
int d = Math.abs(R.nextInt() % 16);
int e = Math.abs(R.nextInt() % 16);
int f = Math.abs(R.nextInt() % 16);
int g = Math.abs(R.nextInt() % 16);
int h = Math.abs(R.nextInt() % 16);
int i = Math.abs(R.nextInt() % 16);
int j = Math.abs(R.nextInt() % 16);//問題をランダムに表示
164バイク並みの自転車:01/11/27 12:59

int end = 0;
int tokuten = 0;
int n = 1; //何問目か確認
int answer = 0;
//問題データー
String[] mondai = {

"順風満帆の読みは「じゅんぷうまんぽう」?",
"一石三丁は存在する?",
"そもそも四字熟語自体が四字熟語?",
"苦心惨憺とは困りながら工夫を凝す事?",
"矮子看戯の読みは「かんしかんぎ」?",
"跳梁跋扈の読みは「ちょうりょうばっこ」?",
"日常坐〇。〇には俄が入る?",
"肉食妻帯の反対は菜食独身である",
"放歌高吟とは叫び歌う事?",
"内柔外剛とは虎の衣を〜と同じ?",
"臥薪嘗胆とはひたすら耐え忍ぶこと?",
"邂逅相遇とはめったに出会わないこと?",
"紅毛碧眼とは外見がおかしい事を指す?",
"国士無双は「こくしむそう」と読む?",
"孤軍奮闘と孤立無援。意味は同じ?",
"威風凛凛の読みは「いふうていてい」?"};

short[] kaitou = {0,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0};
165バイク並みの自転車:01/11/27 13:01
String[] kaisetu
= {"解説:順風満帆はじゅんぷうまんぱんと読みます",
"解説:一石三丁はただの造語です",
"解説:四字熟語は四文字熟語の略語です",
"解説:合っています。くしんさんたんと読みます",
"解説:わいしかんぎです。適当に合せる事です",
"解説:読みは合っています。悪者がのさばる事です",
"解説:入るのは臥です。",
"解説:あっています。仏法用語です。",
"解説:あっています。無法という意味でもあります",
"解説:同じです。柔道の言葉です",
"解説:あっています。昔の中国は越の国の言葉です",
"解説:偶然の一致の事です。",
"解説:外人のことを指します",
"解説:満貫払いです。",
"解説:少し違います。一人かそうでないかです",
"解説:いふうりんりんと読みます"};

Dialog dg1 = new Dialog(Dialog.BUTTON_OK,"四字熟語");
Dialog dg2 = new Dialog(Dialog.DIALOG_YESNO,"四字熟語");
dg1.setText("四字熟語テストを始めます。全10問です。");
dg1.show();
dg1.setText("〇×はYES_NOで答えてください");
dg1.show();
166バイク並みの自転車:01/11/27 13:04
do {
  dg2.setText("第" + n + "問 " + mondai[a]);
if(dg2.show() == dg2.BUTTON_YES){answer = 1;}
else{answer = 0;}
if(answer == kaitou[a]){tokuten++;dg1.setText("正解!");dg1.show();}
else{dg1.setText(kaisetu[a]);
dg1.show();}
n++;

dg2.setText("第" + n + "問 " + mondai[b]);
if(dg2.show() == dg2.BUTTON_YES){answer = 1;}
else{answer = 0;}
if(answer == kaitou[b]){tokuten++;dg1.setText("正解!");dg1.show();}
else{dg1.setText(kaisetu[b]);
dg1.show();}
n++;

で、変数がjまで続きます。

dg1.setText("あなたの得点は" + tokuten*10 +"点です。");
dg1.show();
tokuten = 0;
n = 1;

dg2.setText("もう一度同じ問題をやりますか?");
if(dg2.show() == dg2.BUTTON_YES){end = 0;}
else{end = 1;}

} while(end == 0);

terminate();}
}
>>163
トランプか、カードゲームまたはランダムに問題を出すものでもなんでもいい。言語もなんでも
いいので、とにかくアルゴリズムを調べてみれば?
168 :01/11/27 13:37
「ソートして」つうのは誰のアドバイス?
間違ってる。
169:01/11/27 13:41
>>163
このソース全部読めってか?
問題と思われるソートの部分だけを抜き出して再現させろよ。

#プログラムを「自分で作っている」という自覚はあるのか?
170バイク並みの自転車:01/11/27 13:43
>>167さん
れすありがとうございます。ランダムに問題を出すのは
結構確認しております。残念ながら使える言語がJAVAの
みなのでアルゴリズムはフリーウェアのみ確認しています。
それでランダムに出す方法は解ったのですが、出題した
問題がかぶります。オープンソースの所もあんまりないし、
Iアプリは携帯でしかダウソできないのよ・・・どうしよう・・・
171エッチマン:01/11/27 13:54
>>170
問題がかぶらない方法
1.一度出した問題かどうか覚えておく
2.問題のリストそのものをシャッフルして頭からとりだしてく
どっちかでいいじゃん?
172バイク並みの自転車:01/11/27 13:57
>>爺さん
すみません。そう言うつもりではありませんでした。
題材に1から16の文字をあてて、Math.abs(R.nextInt() % 16);
これを使って適当に問題を引っ張ってくる事を10問繰り返す
プログラムです。当然かぶります(T_T)。
一からリファレンスなどを見ながら作って、流用、盗用
はしていないので作っていると思っていますが・・違うのですか?
173バイク並みの自転車:01/11/27 14:04
>>エッチマンさん
  一度出した問題かどうか覚えておく
 
  なるほど。たとえば一度6番目の問題が出題されて、
  次の問題とかで乱数を出して6が出たらもう一度乱数を出す。
  これを繰り返す。これでOK?
174デフォルトの名無しさん:01/11/27 14:19
テキストエリアから行ごとに文字列を
取り出すことってできるのでしょうか?

例えば、1行目を取り出して配列aに入れて、
2行目は,別の配列に入れる、など。
175エッチマン:01/11/27 14:20
>>173
アバウトにそんな感じ。

いちいちやってるとめんどうだから
1からxまで偏り無く乱数を返すクラス
を作って、その中でやるようにしたい
RandHoge ero = new RandHoge(x);
int a = ero.toridasi();
みたいな使いっぷりのクラスを
作ってみたら?
中身の実装は1案2案どっちでもいいし
使う側は気にしなくていいし ←すげー重要
176バイク並みの自転車:01/11/27 14:26
>>エッチマンさん
  さんくす。
  早速組んでみます。
177デフォルトの名無しさん :01/11/27 14:27
>>170
> れすありがとうございます。ランダムに問題を出すのは
> 結構確認しております。残念ながら使える言語がJAVAの
> みなのでアルゴリズムはフリーウェアのみ確認しています。

言語はなんでもいいって言ってるじゃん。

ソースぱくるなら JAVA からしかないけど、アルゴリズム読むなら、JAVAじゃなくたって
perl だって、 shellscript だって、 VB だって、 C だって、日本語だって、英語だっていい
じゃん?

結局、JAVAじゃなきゃ駄目だってんなら、みなさんから回答うけたところで「どうやって組
むんでしょうか?」ってオチになっていくような気がするんだけど。
178デフォルトの名無しさん:01/11/27 14:40
こういう場合どうるの?
public void trap( Throwable e )
{
 StringWriter out = new StringWriter() ;
 e.printStackTrace( out ) ;
}
スタックトレースを文字列にしたいの、
とりあえず、StringWriterってのを、与えみたんだけど、
だめだった。
オスエテェ〜
>>178 StringWriterのAPIドキュメント見ろ
で、何がどう駄目なのか言ってみ
http://java.sun.com/j2se/1.3/ja/docs.html
180デフォルトの名無しさん:01/11/27 15:15
for(;;){
for(i=0;i<n;i++){
hogehoge
}
}

他人のソースを見て勉強しているのですが
for(;;)はどういう意味でしょうか?
181エッチマン:01/11/27 15:18
>>178
StringWriterじゃなくてPrintWriterをあげなきゃじゃん?
182178:01/11/27 15:20
>>179
えらそぉ〜な、知ったかバカだなぁ〜、すっこんでろな。
でも、めっかた。

public void trap( Throwable e )
{
 StringWriter sw = new StringWriter() ;
 PrintWriter out = new PrintWriter( sw ) ;
 e.printStackTrace( out ) ;
}

こうだったよ。
どうしてjavaはデストラクタいらないのですか?
184エッチマン:01/11/27 15:33
デストラクタってなに? 死のトラクター?
G型トラクター売ります ってーとゴルゴ呼べるんだっけ?
185仕様書無しさん:01/11/27 15:56
>>180
while(true)といっしょ。
>>185

C++の本にご丁寧に載っていたな。私はwhile(1)の方が好きだけど。
187エッチマン:01/11/27 18:27
>>186
javaのスレだし、while(1)はやめとこう。
188だめ板住人:01/11/27 19:49
for(;;){
statement;
}
無条件にstatementを繰り返すループ.
>>183
ガベージコレクタがオブジェクトを破棄するタイミングが不定なため。
いつ実行されるかわからない上に、もしかすると実行されないまま
終わるかもしれないけど、それでも良ければ、
代わりにファイナライザ使ってください。
190デフォルトの名無しさん:01/11/27 22:25
Linux JDK 1.2.2 010 で
char aaa = 'あ';
とやると
Invalid character constant.
とエラーがでます。
なぜなのでしょうか?どなたかお教えいただけますでしょうか?
javac が日本語(EUC-JP?)を理解してないのでは?
>>190

少なくともCではchar型の場合、「あ」みたいな2バイト文字は文字列だぞ。
きっとJavaも同じ理由でしょう。
193191:01/11/27 22:29
'あ' の代わりに '\u3042' ならどう?
>>192
Java は Unicode だから。
195デフォルトの名無しさん:01/11/27 22:31
Solaris 1.2 でやったらうまくいきます。Windowsも。
JDKのバージョンは1.2で。
ソースの文字コードはEUCです。
ちなみに、
System.out.println( "はろー" );
はコンパイルもと通るし、実行も出来るんですが・・・・
ソースの文字コードが EUC だってこと、javac が解ってないよ。
コマンドラインオプションで指定できたはず。
197190:01/11/27 22:39
>>196
-D オプションでしょうか・・・・?
そのあとなんて書いていいか分からない・・・・
>>192 Javaではcharは16ビットだよ。
200190:01/11/27 22:47
>>199
おおおお!できました!大感謝です。
これってどっかで初期設定出来るのでしょうか・・・?
solarisではなんでOKだったのか(インストールは私じゃないので・・・)
201デフォルトの名無しさん:01/11/27 22:52
>>200
プラットホームごとにJREがデフォルトで
エンコーディング決めうちしてんだよ。
何も指定しないとデフォになる。
Solarisなら当然デフォがEUCだろうな。
202デフォルトの名無しさん :01/11/27 23:55
>>197
> -D オプションでしょうか・・・・?

って思った理由を聞きたいです。いや、あおりでも冷やかしでもないです。

参考に・・・
203sagfe:01/11/27 23:56
だめだこりゃ。
204sagfe:01/11/27 23:56
あげんな。
>>1には才能が全く無い。無理。
java.awt.Graphicsクラスってabstractじゃないですか。
で、大多数のメソッドがabstractなんだけど、例えば、
Graphics#drawOval()とかを呼んだ時に実際に楕円を描いたりするの
はどこでやってるんでしょうか?
206デフォルトの名無しさん:01/11/28 00:15
What's new about javaってどこいったの?
一時的な閉鎖?
207デフォルトの名無しさん:01/11/28 00:20
>>205
APIライブラリ内部のどっかの実装クラス。

Graphicsクラスインスタンス(正確には、Graphicsクラスの
サブクラスのインスタンス)は、Image.getGraphics()
とかで、APIライブラリの中で実装クラスのインスタンスを
取得して使う。

そういえばImage.getGraphics()もabstractだな。

ユーザがGraphicsを造ろうと思ったら、例えば
BufferedImageをnewしてgetGraphics()すれば、
Graphicsインスタンスが得られるぞ。
208204:01/11/28 00:20
スレ違い御免!
209205:01/11/28 00:45
>>207
情報サンクス。

で、なんだか気になったから
JFrame f = new JFrame();
Graphics g = f.getGraphics()
System.out.println(g.getClass().getName())
ってやったら(動作確認Windows)
sun.awt.windows.WGraphics
って出た。
これって…どゆこと?
JavaのAPIでは見たことないパッケージなんだけど…。
VMに定義されてるパッケージとそのクラス…?
なんか頭悪そうだな。俺。
誰か教えて…。
210デフォルトの名無しさん:01/11/28 01:09
>206
あ、ほんとだ。しばらく見ない間に。
Night for Javaの準備で忙しいのだろうか。
明日行くけどねん。
java.awt.Graphics のサブクラス。
プログラマからは java.awt.Graphics としか見えないけど、
実際にはそこから派生したクラスが使われているってこと。
new Graphics って作った覚えは、ないでしょ?
いつもどこからか Graphics が提供される。

interface みたいなもんだと思いねえ。

OSや、JREを実装したベンダーによって、実際のクラスは異なる。
>>209
普通OOPのライブラリ内部には、外部に公開しない
無数のクラスがあるものだ。

俺様ライブラリにも、publicでないクラスがいっぱい
あるぞ。
213デフォルトの名無しさん:01/11/28 01:18
あるファイルから整数だけを取り出してそれらを
int変数に保存するのってどうやるの?
ちなみにそのファイルの中身はパターンがなにも無い
ファイルを開いて1文字ずつ読み込んで
整数だけ抜き出すプログラムを書け
215160:01/11/28 01:42
>>162さん
ありがとうございました。うまくいきました。
>>213
正規表現を扱えるクラスがどこぞにあったからそれ使って抜き出せば?
Javaがインストールされていない、環境でダブルクリック起動する方法ってありますか?
Java が「インストール」されてなくても、存在さえしてれば、
java.exe を探して起動するような小さい exe を用意しとけば良い
219デフォルトの名無しさん :01/11/28 08:11
>>218
その exe ってなに? java.exeを探すってなに?
>>217
そもそも Java プログラムって
Java がインストールされてない環境で動くのか?
221デフォルトの名無しさん :01/11/28 10:26
>>220
J++ で exe にコンパイルしておけばいい
>>221
見た目がexeなだけなので、JVMが入っていないXPでは動かないっす。
>>222
試してみた?
どういうエラーがでるか
誰かレポートキボン
>>222
「動かない」だけじゃわかんないです。どう動かないのか書かないとね。
225デフォルトの名無しさん :01/11/28 11:26
JDK のバージョン差異について書かれたサイトってありますか?

なくなったもの、追加されたものなどを知りたいのですが。
なくなったものは、ないんでは?
ことごとく非推奨になっただけで

追加されたものは、Javaの各バージョンのドキュメントを見るよろし。
http://java.sun.com/docs/
227デフォルトの名無しさん:01/11/28 15:53
void Func(String Hoge)
{
Hoge = "hoge value";
}
はダメなのか?
ストリングクラスはオブジェクトだから参照渡しになると思ったのだが…
いまさらながらストリング型の内容を更新する関数が必要になったのだが、
これって超基本?
228 :01/11/28 16:28
>>227
Java参照渡しでは無いよ。参照のコピーを渡している。
無論基本中の基本。

Hogeへの参照 → Hogeの実態

このHogeへの参照を、そのFuncとやらのメソッドに渡すと
(ちなみにJavaではメソッドの頭文字は小文字にするのが標準的だけど)
Hogeへの参照のコピーが新たに作られて渡される。

だからHogeへの参照のコピーが"hoge value"を指し示そうと、
オリジナルのHogeへの参照には無関係となる。

ついでに言えば、Stringクラスは一度newしたらその内容を変更する事は
できません。

変更したい文字列をリターンすれば?
229227:01/11/28 17:58
>>228
情報thanks! 大変役に立ちました。
C++ から流れてきたので、てっきり"="演算子が文字列内容書き換えの
メソドを呼ぶようにコンパイルして貰えてるものと思ってました。
値がコピーされたように見えたのは実は新たに別に作成されたインスタンス
への参照に書き換えられただけでしたか。いやー大勘違いでした。
基本は、個別の処理群が参照先を勝手に書き換えるってCみたいな手法で
コードを書くな(書けない)ってことですな。(…なんか違いそうだな)

227のコードは"Hoge"参照先の書き換えメソドを呼んでくれているイメージで
組んだところ(この考え自体Cっぽくて良くないのか?)値が返らなかったので、
もしかして呼出側が新たにインスタンスを作成して文字列をコピーしてから呼び出すという、
文字列の値渡しみたいなことしてるのかな?とか勘ぐって質問に至った次第です。
(VBでString型の値渡し指定すると本当にそうなる。解説しよう。VBでも"="演算子は参照先の挿げ替えではなく代入なのだ)
実際は仮引数の参照先を一生懸命書き換えてただけなのですな(笑
ちなみに、本当は返却したい値がもっとあるので文字列戻り値じゃやり難いです。
230229:01/11/28 18:02
ちょっと訂正
×基本は、個別の処理群が参照先を勝手に書き換えるってCみたいな手法で
○基本は、個別の処理群が参照先の内容を勝手に書き換えるってCみたいな手法で
231デフォルトの名無しさん:01/11/28 18:04
>>227
>void Func(String Hoge)
>{
> Hoge = "hoge value";
>}

C++で書くと、こんなイメージ

void Func(String* Hoge)
{
Hoge = new String("Hoge value");
}

呼び出し元のは、変わらんでしょう。
232デフォルトの名無しさん:01/11/28 18:21
>>229
引数を使って値を呼出し元に返すことは通常Javaではやりません。
#配列を使えばやって出来ないことはないですが。

複数の値を呼出元に渡したい場合は
Cでいう構造体のようなイメージのクラスを作ってそこに値を設定して
リターン値として返すか、
値の数だけ
Hoge getHoge()
Moge getMoge()
Fuga getFuga() ,,,等の
取得関数を
呼ばれる側のクラスに用意して適宜取り出してもらいます。
>>43 >>66
>実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
>すでにresultは評価されてしまっているっちゅーことみたいね。

最後の行のreturnが実行されないから当然じゃないの?
>>44 に同意だが。
>What's new about javaってどこいったの?

あ、移転のお知らせがでてたのにブックマークしてなかった。
誰か知らない?
Java3D 1.3に高精度タイマーが・・・
com.sun.j3d.utils.timer.J3DTimer
>>236
おおう、それは良かった。

で、ホントに高精度?
下でなに呼んでるのかな?

タイマの精度が上がっても、スレッドのスケジューラ
が変化なけりゃ、普段のプログラムには意味無い気も
するけど。
238234:01/11/28 22:17
移転age
( Thanx > >>235 )
239デフォルトの名無しさん:01/11/28 23:24
path通らないんで、だれかおせーて。(マジほんき涙
正確なところをどーか。
pathってなんのパスだ?classpath?
242239:01/11/28 23:45
感謝感謝!!!チュ!
24366:01/11/28 23:58
>>233

>>実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
>>すでにresultは評価されてしまっているっちゅーことみたいね。

>最後の行のreturnが実行されないから当然じゃないの?

確かに66では、「当然のこと」を言っているんですけど、何か?
244223:01/11/29 00:06
ならいい
245デフォルトの名無しさん :01/11/29 00:53
>>241
path と classpath のちがいもわかんないのか?
246241:01/11/29 01:36
もちろんわかるぞ。
239はclasspathの事が言いたいのでは無かろうかとおもって書いただけだが。
247デフォルトの名無しさん:01/11/29 02:15
画面上のマウスカーソルの位置を取得する方法ってありますか?
248213:01/11/29 02:38
>>214
>ファイルを開いて1文字ずつ読み込んで
>整数だけ抜き出すプログラムを書け

それがわかんないんだけど。
どーやって整数って判断するの?どーやってそれをintに変換するの?
 (\     ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  \\/ (・∀・)<  >>248 芯でもいいよ!
   ( 。 /U U  \_____________
   U⌒U
250だめ板住人:01/11/29 07:15
class A {
  void hello() {
    System.out.println("hello");
  }

  static void hello2() {
    System.out.println("hello2");
  }

  String toString() {      /* メソッドの修飾子が問題 
;*/ 
    return "class A with hello,hello2\n";
  }
}

public class GetInfo {
  public static void main(String args[]) {
    A obj = new A();
    System.out.println(obj.toString());
  }
}

上記のコードをコンパイルすると`スーパークラスでの定義より弱いアクセス特権(public)を割り当てようとしました'なるエラーが出ます.
メソッドの修飾子を変えて試してみた所
public->ok
public static->NG
static->NG
と言う結果になりました.
ここで疑問が湧いてきた事は,
1.publicより修飾子無しの方がアクセス特権は弱いがなぜ弱い特権でオーバーライドできないのか(なんらかの不都合があるのか)
2.なぜstaticでオーバーライドできないのか.(これも不都合がある?)
です.
仕様って言ったらそれまでなんでしょうが..
>>248
その、わからない事柄を、最初の質問で書かんか。

>どーやって整数って判断するの?

Character.isDigit

>どーやってそれをintに変換するの?

Character.digit または Integer.parseInt
252デフォルトの名無しさん:01/11/29 10:09
>>250
疑問の1も2も、同じ理由だと思うよ。つまり、スーパークラスのインターフェイスを
サブクラスで変更してはダメということ。アクセス特権が弱くなるということは例え
ば、スーパークラスAでpublicだったメソッドmが、サブクラスBでprotectedになる
場合、それらを使用するクラスでは、
A a = new B();
a.m();
ができないということになる。これは、Aクラスのインターフェイスが勝手に変更され
るということで、ポリモーフィズムが成り立たない。漏れはそう理解しているけどね。



それまでスーパークラスとして可能だった
253252:01/11/29 10:11
252の最後の行はミス。削除。スマソ。
254デフォルトの名無しさん:01/11/29 10:37
自宅マシンで、jdk1.3で作業していて、ある程度できたんで、
会社の別のマシンで、jdk1.3.1でコンパイルしたら、
cannot resolve symbol
が大量に発生してコンパイルできなくて、まいってるんだけど、
誰か情報もってない?
あぁ〜こまった。
255236:01/11/29 11:08
com.sun.j3d.utils.timer.J3DTimer

public static long getValue()
Get the timer value, in nanoseconds. The initial value of the timer is OS dependent.

public static long getResolution()
Get the nanosecond resolution of the timer

メソッドこれだけ。
精度が取得できるんだね。

でもcom.sunパッケージ・・・うーん
J2SE 1.5までのつなぎかな

JMFのタイマーはサウンドカード上の機能を利用する、
というような話を読んだ気がするけど誰か知らん?
256229:01/11/29 11:29
みなさんありがとう。予想通りJAVAで参照渡し書き換えってのは邪道なのですな。

>>231
>void Func(String* Hoge)
>{
>Hoge = new String("Hoge value");
>}
>呼び出し元のは、変わらんでしょう。

ちゃうちゃう!こんなイメージ

void HogeFunc(CString* Hoge)
{
*Hoge = "Hoge value";
}

仕事ではもっと別の文字列型クラス(会社独自)使ってたので、CString 使うのは初めてだが、
とりあえず動作確認した。やっぱ "=" 演算子で文字列代入になったよ。
(ところでMFCってちょっと動作確認しようと新規プロジェクトから動かそうとすると手間かかるんだな)
257 :01/11/29 11:36
>>254
変数名の打ち間違いとかがやたらとあるんじゃない?
258デフォルトの名無しさん:01/11/29 12:08
JMSってなに?FTPの親戚?ポートは??
ぜんぜんわかんないYO
259デフォルトの名無しさん:01/11/29 13:35
XPでjava導入したいんですが、インストール後に、フルパスを通す通し方がわかりません。syseditでautoexe.batに書き足すんですが何もおきません。どうしたらいいか途方にくれてます。だれかたすけて!
260デフォルトの名無しさん:01/11/29 13:53
環境変数 PATH の話?
これってコマンドプロンプトからの子プロセスの話なのでは?
(Winアプリの場合どうなるのか実はよく知らん)
261256 キリガヨイ!:01/11/29 14:04
>>231
は、よく読みなおしたらJAVAの動作をC++にコンバートして貰えてたのですか?
ご親切にありがとうございました!
私がやろうとしてることをC++で記述して貰ったのかと勘違いしました。
大変失礼!
262254:01/11/29 14:48
>>257
自宅で、動いているのを、そのまま持っていったから、
それは無いと思う
263エッチマン:01/11/29 14:52
>>262
ライブラリが足りないとか
264デフォルトの名無しさん :01/11/29 15:16
>>259
コントロールパネル> (パフォーマンスとメンテナンス>) システム > 詳細設定 > 環境変数
265デフォルトの名無しさん:01/11/29 15:24
IO erro occured while sending to the backend -java.io.UnsupportedEncodingException:EUC_JP[Could not load class: sun.io.Char ToByteEUC_JP]
これ何?
読んで字のごとくでねーの?
EUC-JP をサポートしてないっつぅエラー。
268デフォルトの名無しさん:01/11/29 18:03
>>256
IO erro (アイオー エロ?)・・・つまらない、スマソ。
何やってこのメッセージ出たの?何かがEUC_JPはサポート外って事。
erro・・・・中途半端な略だな。
270256:01/11/29 18:54
>>268
私に何か?(笑
はは、プログラマらしい打ち間違いとみた。
さてはアセムブラ||C遣いですな
271amo:01/11/30 08:37
javaで π(パイ)の計算方法を教えてください。
注意;↓の方法

π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方をしえてください。
そのまま
pi = 4 - 4.0/3.0 + 4.0/5.0 - 4.0/7.0 +
って書いてみるのはどうだろう。
273amo:01/11/30 10:36
javaで π(パイ)の計算方法を教えてください。
注意;↓の方法

π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方をしえてください
274amo:01/11/30 10:40
正解のコードを教えてくれるまでage続けるので、
そのつもりでお願いします。
275amo:01/11/30 10:43
↑は私ではありません。結構むずかしいですね
>>274
消えろ。ゴミクズ。
>>275
いや、お前だと思うが。(w
278amo:01/11/30 10:50
↑も私ではありません。難しくてわからないのね
>>272 で答えは出てるだろう
去ね>>amo
280デフォルトの名無しさん:01/11/30 10:54
>>272
private String calcpaipai()
{
String a = "4";
int b=3;
int c=-1;
while(b<10000)
{
a+= " " + ((c>0)?"+":"-") + " 4.0/" + String.valueOf(b) + ".0";
b+=2;
c*=-1;
}
return a;
}
どうだ?正解のコードだろ
281amo:01/11/30 10:58
↑天才
282aho:01/11/30 11:06
多くは書かない。たった一行。
283仕様書無しさん:01/11/30 12:22
>>281
からかわれてることに気づけYO!
284デフォルトの名無しさん:01/11/30 12:24
identifierって何ですか
識別子?
286デフォルトの名無しさん:01/11/30 13:15
名前
ID子
288amo:01/11/30 14:03
きずいてるよ。あんまり人をなめないほうがいいよ・・・(けけけっけえ
289テスト:01/11/30 14:08
テストです。
>>284
無限力。
291amo:01/11/30 14:36
javaで π(パイ)の計算方法を教えてください。
注意;↓の方法

π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方をしえてください
amo 氏んでくれ。
293Kusakabe Youichi:01/11/30 16:01
>>288 amo wrote:
> きずいてるよ。あんまり人をなめないほうがいいよ・・・(けけけっけえ

>>291
実行してちゃんと答えが出るのを確認済み
public class calcpaipai{
  public static void main( String[] args ){
    java.io.PrintStream ps = System.out;
    int b=3;
    int c=-1;
    ps.println("public class PI{\npublic static void main(String[]a){");
    ps.println("double pi = 4.0;");
    while(b<10000)
    {
      ps.print( "pi=pi" );
      for( int i=0;i<10;i++){
        ps.print( ((c>0)?"+":"-") + "4.0/" + String.valueOf(b) + ".0" );
        b+=2;
        c*=-1;
      }
      ps.println(";");
    }
    ps.println("System.out.println(pi);");
    ps.println("}\n}");
  }
}
笑介ちゃんか?>>293
296いう0じょ@:01/11/30 17:38
javaで
VBのsendKeyみたいな
メソッドありますか?
あったら教えてください。
297デフォルトの名無しさん:01/11/30 17:59
javaのデザパタ本読んでますが、一個目から理解できません。。

Iteratorパターンですが、ループはConcreteAggregateクラスの実装に
依存しないとかかれてますが、Iteratorをかまさなくてforでまわしても
依存しないですよね。。

for(int i=0; i<books.getLength(); i++){
Book book = books.getBookAt(i);
System.out.println(book.getName());
}

あさはか?
298javaむぎ茶:01/11/30 18:03
逆順に欲しいときはどうする?
またはツリーになったデータをなめたいときは?
さらに幅優先、深さ優先で探索を切り替えたいときは?
299279:01/11/30 18:08
なるほど。
 ・同じスキャン操作ならひとつのIteratorで複数のConcreteAggregateの
  実装を吸収できる
ということですか?

一個のConcreteクラスだとあんまりメリット感がないって感じなのかな。
>>297
そのbooksが何のクラスを示すか分からんが、booksの型に依存するでしょう。
だからbooksのクラスを変更してしまったら、そのコードは使えなくなる。

しかし、配列を扱うクラスが皆iteratorを返してくれるのであれば、
iteratorに対して設計する事により、そのiteratorが元々何のクラスから生成されたかに
関係無く、コードを再利用する事が出来る。
>>297
インデックスアクセスできないデータ構造だと、
不可能とはいわないまでも効率が悪いです。

Java にも Iterator インタフェイスがあります。
こいつは、Vector でも LinkedList でも HashSet でも TreeSet でも
どんなコレクションクラスからも生成できて、
実際にそれがどんな実装かに関わらず、
すべての要素を列挙できます。
参考になれば。
302301:01/11/30 18:14
> インデックスアクセスできないデータ構造だと、
> 不可能とはいわないまでも効率が悪いです。

この2行はミス。読み飛ばして。お願い。
303279:01/11/30 18:16
あれ?>>299で書いたこともおかしい気がしてきた。。

>>300
ええとですね、Iteratorのスキャン操作を行う#hasNext()にしても#next()にしても
結局ConcreteAggregateの#getLength()と#getBookAt()を呼び出してるのをみて
じゃあforでまわしたっておなじじゃん。。って思ったんですが。
配列をVectorに変更しても、#getLength()と#getBookAt()の実装は変更せざる
を得ないわけですし。。
304エッチマン:01/11/30 18:18
>>301
えっと質問です。
IteratorとかEnumなんとかで列挙して取り出せるようにしたとき、
マルチスレッドな環境とかで
その取り出し元に変化があった場合はどういう挙動になるですか?
>>303
TreeSet や LinkedList だと、getLength や getAt などの
インデックスアクセス操作は非常に効率が悪くて、
そういうやり方は良くないです。原理的に不可能とは言わないけど。

>>304
Java の Iterator だと、例外が飛びます。
306デフォルトの名無しさん:01/11/30 18:32
>>303
iteratorを使う側からすれば、iteratorの実装がどうなっていようが(゚ε゚)キニシナイ!!でしょ?
iteratorのインターフェースさえ実装されてるならね。そこが重要。

>>297のコードだと、booksの型を知らなければ使えない。
でもiteratorを使えば、booksのクラスを知る必要は無い。
そんなクラスが地上に存在する事すら知らなくてもOKな訳だよ。

難しいかな?
307エッチマン:01/11/30 18:34
>>305 どうも。

ところで標準のAPIにスタックはあってもキューは無いですよね。
Queueクラスは自分で作れってことですか?
(難しいもんじゃないから作ったけど)
これって変ですよね。ついでにセマフォもミューテックスもないし
自分で考え自分で生きろって感じで加持さんモードっぽいし
確かに作れるけど用意してくれてたっていいと思いません?
308279:01/11/30 18:37
>>306
目からウロコ!
ちゃんとIteratorを実装しておけば、hasNext()とnext()だけで
生きていけるってことですね?
ああ、そうかあ。ありがとうございます。やっと次のパターンに行けそうです。
>>307
それを言い出すとキリがない。
世の中にあるアルゴリズムなりデータ構造なりを全部作れってのは無茶です。
いや、全部じゃないとキミは言いたいのかもしれないけど、

僕はコレが欲しい、
私はあれが欲しい、
俺の使いたいのがなぜないんだ、

とか言い出すとキリがない。
どっかできっぱりさっぱり諦めるしかないんだよ。
Java には既に要らんクラスがいっぱいあるけど、
自分は要らんと思っても、他の誰かが要求したのかもしれないし。
310エッチマン:01/11/30 18:48
>>309
了解です。
まあ実現する手段は提供されてるからこれ以上の不満はないです。
多少足りないくらいの方がコード書いてて楽しいし。
311javaむぎ茶?:01/11/30 18:51
>>307 セマフォとかミューテックスとかThredがらみで便利なやつは
util.concurrent をどぞ
class A3 {
  int i = 1;
  void hello() {
    System.out.println("Hello A3");
  }
}

class B3 extends A3 {
  String i = "test";  /* 同じiを使用 */
}

class C3 extends B3 {
  double i = 333;    /* 同じiを使用 */
  void hello() {
    System.out.println("Hello C3");
  }
}

class MethodOverriding3 {
  public static void main(String args[]) {
    B3 obj = new C3();

    obj.hello();  /* C3のメソッド適用,objが参照するオブジェクトの型依存 */
    System.out.println(obj.i); /* B3の変数適用,変数objの型依存 */
  }
}

変数とメソッドで依存場所が違っててちょっと違和感があります.
なんでこんな実装に??
Cのprintfみたいな書式指定のできる
SDK標準のライブラリーってありませんか?
314313:01/11/30 21:32
あげ忘れました。
sprintfじゃダメなんデスか?
>>312
その方が便利だからです。
>>312
ただ単に、フィールドはオーバーライドできないだけでしょう。
318313:01/11/30 21:42
>>315
SDKじゃなくってJDKの間違いです。。。
どのクラスにprintfのようなオペレーション
があるのやら。。。
>>318
ありません。
もう一度車輪を作ってください。
>>319

reinvent the wheelってやつ?
>>319
printfど同じような目的に使えるものがあれば
いいわけであって、まったく同じである必要は
ありません。

そーいったもの用意されてませんかね<ALL
(;´Д`)アア...
Cに戻りたいよお・・・。
>>322
サンクス!!
お礼にいい店つれってってあげます。
あきらめて
System.out.print("x= "+x+"y= "+y);
とか使ってなさい。
>>325
サブクラスを増やすことなく、かつ実行時に動作が
変化するようなアプリケーションを書いたことが無いだろ?
学生君
>>326
全部switch-case分岐とか?腐ってるね。
そんな古生代の遺物みたいなものを作る人
は逝って良しだなあ。
>>327
>全部switch-case分岐とか?腐ってるね。

ジャーちみは、こんなことしとんのか?ただのアホだぞ。。。はぁ

class Class0 {String methodA(){return null;}}
class Class1 extend Class0 {String methodA(){return "x= "+x+"y= "+y;}}
class Class2 extend Class0 {String methodA(){return "x== "+x+"y== "+y;}}
class Class3 extend Class0 {String methodA(){return "x equal "+x+"y equal "+y;}}
Class0 inst = new Class2();
329エッチマン:01/11/30 22:48
>>328
327じゃないけどマジでそんなコード書いてるんだけど・・
いい方法が思いつかなかったよ。
ヒントください。
330デフォルトの名無しさん:01/11/30 22:55
まあ、JAVAなんかやってると>>326みたいな厨房になるってことだ。
331デフォルトの名無しさん:01/11/30 22:56
>>329
>>326はただ、訳の判らん事言って煽ってる厨房なので無視するように。
素直にCにすれば万事解決すると思うが。
書式指定くらいならパラメータ化できる。継承するより委譲したり
パラメータ化したほうがよいケースが多い。>>328は管理面から
ダメダメ
(こんなことするからCOBOLERにOOダメやんと文句いわれる)

class Class {
int x, y;
MessageFormat form;
Class(String fmt)
{
form = new MessageForm(fmt)
}

 String methodA()
 {
  return form.format(new Integer[] {new Integer(x), new Integer(y)});
 }
}

Class inst1 = new Class("x= {0} y= {1}");
Class inst2 = new Class("x== {0} y== {1}");
Class inst3 = new Class("x equal{0} y equal {1}");
デムパ君が一人で暴走しとるな。
335エッチマン:01/11/30 23:14
この際だから聞いてみようっと
たとえば、特定のコマンドによって挙動がかわるものを生成するとき

Hoge hoge;
switch(command)
{
 case 1:
  hoge = new Hoge1();
  break;
 case 2:
  hoge = new Hoge2();
  break;
}
※Hoge1、Hoge2はHogeのサブクラス。主要なメソッドは全部継承してる

というコードを書いてるんだけど、確かにスマートじゃないかも。
これをスマートに書こうと思ったらどうすればいいかな
無理にスマートにする必要もないかな?
Javaじゃ無理。
>>335
FactoryMethodだけはswitchするしかない。OOPのお約束。
そのかわり、そこ以外では一つもswitchしないですむよう
な、保守性の良いコードを書けるのが、OOPのいいところ。

FactoryMethodの価値は、メソッド一個じゃ分かりにくいけどね。

public interface Hoge{void exec();}

public class HogeFactory{

 public static class Type{private Type(){}}
 public static final Type HIGE =new Type();
 public static final Type HAGE =new Type();

 class Hige implements Hoge{public void exec(){System.out.println("HIGE");}}
 lass Hage implements Hoge{public void exec(){System.out.println("HAGE");}}

 static Hoge createHoge(Type type){
  if(type==HIGE)return new Hige();
  if(type==HAGE)return new Hage();
  return null;
 }
}
338エッチマン:01/11/30 23:33
>>337
サンクスです。
そうか、生成するクラスを作ってそいつにやらせれば
もうすこしだけスマートになったのですね。

デザインパターンの本にもあったのはこれだったのか!
もういちどちゃんと読みかえそっかな
339333:01/11/30 23:34
>>335
GoFのCommandみたいだな。。。javaならきっと

String[] class_name {null, "Hoge1", "Hoge2"};
hoge = (Hoge) Class.getName(class_names[command]).newInstance()

となるが、アーキテクチャーが判らんことにはなんともいえん。
俺もjavaはじめたばっかやし。
340337:01/11/30 23:34
>>335
Javaなら、Reflectionを使ってClassオブジェクトのMap
を作っておくと言う荒業があるね。ちょっときれいになる
けど、重いかも。

337のFactoryMethodをReflectionで書き換え。

static final Map map = new HashMap();
static{
map.put(Type.HAGE,Hage.class);
map.put(Type.HIGE,Hige.class);
}

static Hoge createHoge(Type type){
return (Hoge)((Class)map.get(type)).newInstance();
}
341エッチマン:01/11/30 23:37
>>339-340
そんなかっこいいことも出来るのか!
勉強が足りんかったです。書きなおそっかな

あーでももう出荷しちゃったコードだしなぁ・・・
342デフォルトの名無しさん:01/11/30 23:42
FactoryMethodなのか?ちがうだろ?
んー。今夜はデムパが多いな。
ほぼ満月のせいか・・・。
344337:01/11/30 23:48
>>342
ガンマ本そのまんまじゃん…
HogeじゃFactryかどうか判らん。
sleep();
とか
getkey()
とかかもしれんし。
346337:01/11/30 23:59
>>345
すまん。意味がわからん。
メソッド名はパターンの概念の説明にとっては
関係ないと思うが。
347デフォルトの名無しさん:01/12/01 00:13
Javaのお勉強に最も向いたOS/開発環境ってどれ?
>>347
現状Windowsです。マジデ。

開発環境は

JDK+そこらへんのテキストエディタ

がお勉強には最も良い。マジデ。

マジデだよ。煽りとかじゃないよ。
349333:01/12/01 00:19
FreeBSDはサポートが遅いのでやめたほうが無難。。。
今でもJDK1.1.8を使いたければFreeBSDでどうぞ。。。

何とかならんのかFreeBSDのJDK(;;
350エッチマン:01/12/01 00:23
>>347
Win2k+JBuilder5
IDEはいろいろ補完してくれるので使う脳みそが少しで済むので楽です。
351333:01/12/01 00:24
>>347,348
DO$系は標準エラーがファイルにリダイレクトできんし
grep, tr, sedが使えんからやめといたほうがいい。
LINUXあたりがよさげと思う。。。
>>351

grepなんぞDOS系でも優秀なテキストエディタならできる。
置換もな。
>>351
Cygwin使いなさいよ。元UNIX使いにも便利。
Javaにはもうオタクしか残ってないっぽい・・・。
やっぱRuby化するのか・・・。
355333:01/12/01 00:30
>>352
でもcommand.comじゃ*.cshはうごかんだろ?
WinXPはJava動かないんだっけ?
>>354
逆だよ。昔はキモオタ「しか」いなかった。
最近そうでない人もちょっかい出すようになってきた。
>>356
動くよ。ランタイム環境がデフォルトでは
(ブラウザにも)入ってないというだけ。
デフォルトで動かないってやばくね?
オンデマンドなインストールが出来るわけじゃないんでしょ
いまだにcsh使ってる奴がいたのか
361デフォルトの名無しさん:01/12/01 00:43
デフォルトでうごかないってことは誰も使わないってことです
>>361
FlashとかAcrobatReaderとか、使わないの?
cygwin入れてもWin98のDOS窓は使いにくいなぁ・・・。
僕はbash,vi,jdk1.3.1 on Debian GNU/linuxかな.
もっと良い環境はあると思うけど最初はどこにでもありそうな環境でやっとく.
365デフォルトの名無しさん:01/12/01 01:14
ARはメーカー製PCにはたいがい入っています
FlashはActiveXなのでその場ダウンロード可能です
オタクの特徴。
レアな環境を持ち出して自慢する。
>>366
いまんとこ、レアな環境はひとつも出てきてないね。
もう少し珍しい環境も見てみたいね
じゃ皆本気で薦めてるのか?
初心者に??
Rubyスレが上がってないのと関連付けてしまう私。
Night for Java Technologyのコンテストがあったらしいですね.

1位filetree
http://www.sanpo.t.u-tokyo.ac.jp/~nkeisuke/
2位GetAmped
http://www.getamped.org/beta/
3位NS-TOWERandNS-SHAFT
http://www.nagi-p.com/
4位IIOSS
http://www.iioss.org/index-j.html

との事です.
Javaも捨てたもんじゃないYO!
371 ◆RubyOmS2 :01/12/01 02:38
>>363
cygwinを入れているのになぜDOS窓を使うんだ?
cygwinをそのまま使えばいいのに、、、
372363:01/12/01 02:42
あ、もちろんそのまま使ってます。
あれってDOS窓ベースに動いてるのかと思ってるんだけど勘違い?
バッファ行数増やしたいんだけど・・・。
373ななしさん:01/12/01 02:50
簡単なJAVA アプレットを作ろうと思うんだけど、
IEでもネスケでも確実に動くのは、JAVAのどのバージョンですか?
クライアントでGUIが動く必要もなく(画面が見える必要はなく)、
通信プログラムが動くだけで良いのです。
374 ◆RubyOmS2 :01/12/01 06:22
>>372
ベースはわからないけど、シェルとしては全然違うでしょ。
まず、コマンドが違うし、、、
(でも、PATHを通したらコマンドプロンプトでcygwinでのコマンドも使えたけど、、)
bashはカレントディレクトリにpathが通ってないし、、、
何よりもちがいが、
#!(コマンド〜〜〜)
がDOS窓などでは認識されないこと。
Javaなら別にいいけど、
PerlやRubyなどのスクリプト言語を使う人にとっては、
この違いは大きい、、、
375デフォルトの名無しさん:01/12/01 06:39
>>372
うん。DOS窓上で動いてるよ。
バッファ行数はWin98じゃ増やせないからWin2k買ったよ。
っつーのはおいといて、
どうにかしてtelnetd動かしてTeraTermからってやればいいと思う。
376 ◆RubyOmS2 :01/12/01 08:27
>>375
あっ、ほんどだ、、、
左上のアイコンを右クリックするとコマンドプロンプトと同じだ、、、
つか、一番早いのはLinuxでも入れる事じゃないのか?

つか、Javaの話からかけ離れてきているから、やめにしよう、、、
377259:01/12/01 09:06
>>264 tThanks a lot!!
でも、まだjavac comandが認識されてくれない。あー鬱!
378java大好きっこ:01/12/01 14:16
独習JavaのP273にある
「wait()メソッドは、synchronizedメソッドまたはsynchconizedブロックを
 実行しているスレッドでロックを解放し、ほかのスレッドからの通知を待ちます」
のところが何度読んでも理解できません。
wait()メソッドがロックを解放できるのは、wait()が書いてあるsynchronized
メソッド(ブロック)のこと?
379エッチマン:01/12/01 15:09
>>378
synchronized(obj)
{ wait(); }
って寝てるなら

synchronized(obj)
{ notifyAll(); }
として起こせるですよ。

とりあえずこれで十分ですよ。たぶん。
380java大好きっこ:01/12/01 15:46
>379
すみません
上の(obj)のオブジェクトのロックをwait()が解放した後、
wait()メソッドが寝て(?)、
それを下のnotifyAll()が上のwait()を起こすってことですか?
それから上と下の2つの(obj)はそれぞれ違うオブジェクトでも
いいのでしょうか?
381デフォルトの名無しさん:01/12/01 15:52
「wait()メソッドは、synchronizedメソッドまたはsynchconizedブロックを
 実行しているほかのスレッドがロックを解放し通知するのを待ちます」
じゃないかな?
382java大好きっこ:01/12/01 16:02
>381
wait()メソッド自身がロックを解放するわけではない、
ということですか?
378にもあるように独習Javaにはwait()メソッドがロックを解放する
ように書かれているのですが・・・。
>>380
オブジェクトインスタンスは、内部にモニターという
ロックを管理するデータを、必ず一個もっています。

synchronized(obj)というステートメントで、その
ステートメントに入ったスレッドが、objのモニター
を獲得します。このとき、objのモニターをどこか他の
スレッドが獲得していた場合は、そのモニターが解放
されるのを待ちます。

一度獲得したモニターは、以下のいずれかで解放されます。
1.synchronized(obj){}のスコープ外に出たとき。
2.obj.wait()をコールした時。(この場合、他のスレッド
 から起こされるなどで再びここに戻ってくると、またobj
 のロックを獲得する事になります。)

2.によりobjのモニター解放されるので、別のスレッドが
synchronized(obj){obj.notify();}のスコープ内に、
objのモニターを獲得して入ることができます。

ここでnotify()メソッドは、obj.wait()でwait状態
になっているスレッドの一つを、runnable状態に変更
します。(スレッドは、wait(待機状態)、runnable
(実行可能、スケジューリング待ち状態)、running
(CPUリソース使用中)のいずれかの状態を持っています。
VMのスレッドスケジューラや、wait(),sleep()メソッド
などがこのスレッドの状態を変更します。)

あとは、VMのスレッドスケジューラがいつかはrunnable
になっているスレッドを実行してくれるので、wait()で
寝ていたスレッドが、そのタイミングでまた動き出すわけ
です。(wait状態のスレッドは、VMのスケジューラの
スケジューリング対象外になるので、notifyしなければ
スレッドはいつまでも寝ています。)

こんな感じでよろしいですか?
384380:01/12/01 16:17
ここでいっているモニターと呼ばれるものが、
一般的なスレッドプログラミングで用いられる
MUTEXLOCKオブジェクトのようなものになります。
(セマフォではないですので注意。)

obj.wait()のobjと、obj.notify()のobjは
同じインスタンスでなければ意味がないです。
385383:01/12/01 16:18
380じゃないや。スマソ。
386383:01/12/01 16:33
ところで、synchronized関係で重要なのは、
スレッドのスケジューリング自体よりも、CPU
バッファのフラッシュのタイミング制御だと
いうことを分かっていない人が多い。

マルチCPUでもJavaは結構ちゃんと動くんだけど、
主記憶とCPUレジスタとの間にバッファがあることを
分かっていないプログラマにかかると、「Javaで
マルチCPUはダメ」の烙印を押されることになる。
馬鹿は御しがたい。
387java大好きっこ:01/12/01 16:39
>>383
読んで理解するのに時間がかかってしまいました。。。
全てとは言いませんが、なんだかすごくよくわかった気がしてきました
383さん、どうもご丁寧にありがとうございました。
他にレスを下さった人もありがとうございました。
本当に感謝です。
>>396
え、そんなの知らなかった

普通に排他制御するだけじゃだめなの?
テキトーに組むと極端に遅くなるとか?
何も知らずにDUAL、NT4でJavaしてたよ、、、
詳細解説キボン。
389383:01/12/01 17:04
>>388
適当にくむと、
1.あるCPUが使っていたオブジェクトと別のCPUが使って
いたオブジェクトで、同一のオブジェクトの同一のフィ
ールドなのに、内容が違う事があるということ。
2.逆に、必要もないのにバッファフラッシュをくり返して
速度が無駄に遅くなるということがあること。
390学生っす:01/12/02 00:08
参考書を見ながら練習で作ったんだけど、正常にソートされない原因がわかりません。
もう2時間以上も考えてるんだけど。
熟練の方々助けてー

import java.util.*;

class VectorDemo2 {
public static void main(String args[]) {
Vector vect = new Vector(args.length);
Integer o1;
Integer o2;
Object obj;

for(int i = 0; i < args.length; i++) {
try {
o1 = Integer.valueOf(args[i]);
}
catch(Exception e) {
System.out.println(e);
continue;
}
vect.addElement(o1);
}

for(int i1 = 0; i1 < vect.size() - 1; i1++) {
o1 = (Integer)vect.elementAt(i1);
for(int i2 = (i1 + 1); i2 < vect.size(); i2++) {
o2 = (Integer)vect.elementAt(i2);
if(o1.intValue() > o2.intValue()) {
obj = vect.elementAt(i1);
vect.setElementAt(vect.elementAt(i2),i1);
vect.setElementAt(obj,i2);
}
}
}

Enumeration e = vect.elements();
while(e.hasMoreElements()) {
obj = e.nextElement();
System.out.println(obj);
}
}
}
391デフォルトの名無しさん:01/12/02 00:11
>>389
ほんとかねえ??
>>386
それがバッファされないことを保証するために
マルチプロセッサのOSではあれこれ細工がしてあるはずだけど?
393仕様書無しさん:01/12/02 01:05
すいません。質問です。エラーについて教えてください。
二時間前に独習javaって本を買ってきて、JDK1.2をインストールしました。
それで下のソースをうってコンパイル、実行とするとエラーになってしまいます。
環境はWin2000です。

class Example1{
public static void main(String args[]){
System.out.println("That is the output from Example1");
}
}
------DOS--------
java example1
Exception in thread "main" java.lang.NoClassDefFoundError: example1
394 :01/12/02 01:17
>>393
その質問をしたのは、君で153万8563人目だよ。
395C勉強中 ◆RubyOmS2 :01/12/02 01:19
>>393
Javaは大文字と小文字の区別をするので、
java Example1
と、やってみ〜〜〜〜
396393:01/12/02 01:26
>>394
良くある質問なんですね。
>>395
やってみましたが、同じ結果になってしまいました。

NoClassDefFoundError クラス定義が見つからないということでしょうか?
PATHは通したつもりなんですが。
397C勉強中 ◆RubyOmS2 :01/12/02 01:37
>>369
え???
俺はうまく言ったのに、、、
取りあえず、ディレクトリにExampl1.classがあるか確認してみ〜〜
あと、コンパイルが通るなら、PATHは通っているはず、、、
398C勉強中 ◆RubyOmS2 :01/12/02 01:46
397は>>396にだ、、、
あと、DOS窓の作業ディレクトリは*.classファイルがあるところになってる?
399393:01/12/02 01:46
>>397
回答ありがとうございます。Example1.classはありました。
;D:\jdk1.2\binってのをPATHにだけでなく、ClassPATHにも追加しました。
再起動してきます。
400393:01/12/02 02:00
クラスの置いてあるディレクトリをClassPATHに追加したら
うまくいきました。(399の方法は失敗)
C勉強中さん、ありがとうございました。
参考
ttp://www.dmz.hitachi-sk.co.jp/Java/Tech/jre/classpath.html
401hoge:01/12/02 02:04
あのー、
ちょっと前に見かけた「GC の仕組み」をモナーがやってる AA
お持ちの方いらっしゃいます?
402388:01/12/02 03:45
>>389
でマルチCPUではどう気をつければいいのかできれば具体的に解説orポインタ希望っす

一応スレッドのモニタ関係の基本とデッドロックくらいは
理解してたつもりだったんすけど、
いままで知らずにまずいコーディングをやってた可能性が発覚したかも。
>>402
>>389は煽りだよ。
404C勉強中 ◆RubyOmS2 :01/12/02 04:15
>>400
漏れの場合は環境変数のCLASSPATHを設定していないから、現在のディレクトリに
CLASSPATHが通って、うまく行っただけみたいだな、、、
普通、CLASSPATHって設定しておくもんなのか?
            ギュッ   ∧∧
                (゚Д゚;) ≡≡
■■■■◇◇□□□□□⊂  \

       ベキッ
   ◇  ◇        ∧∧ アッ
    \ ノ       (゚;  ) ≡≡
■■■■□□□□□⊂  \
     / ヽ
>>404
コンパイルんときはソースが参照するライブラリさえクラスパスが通ってれば
問題ない。(と思った。確か)
(システムライブラリやlibディレクトリに置いてあるjarはそれもいらない)
実行するときはコンパイルでできたclassファイルに対して正しいクラスパスが
設定されてないとだめ。

パッケージ名を指定したソースで多少はまったことあった。)
Java2以降のSUNのJDKの話ね。
407デフォルトの名無しさん:01/12/02 06:39
>>403
日本IBMのDeveloperWorksに書いてあるよ。
408383:01/12/02 07:59
>>403

あのダグ・リーの「Javaスレッドプログラミング」本
(日本語訳はttp://www.shoeisha.com/book/Detail.asp?bid=9
に、詳しく書いてあるよ。

IBMDeveloperWorksJapanの、Java最新トピックがこの話なんだね。
ttp://www-6.ibm.com/jp/developerworks/java/011123/j_j-threads1.html

昔Javaでサーバプロセス書いて、スレッド間のメモリ同期ミス
に起因するバグで苦労した事あるんだよ。高負荷試験で1万分の1
の確率とかでパラメータが不整合になったりするんだよ。
あの時は困ったもんだよ。
>>405 成功してるのキボンヌ
410401:01/12/02 09:09
>>405
あのー、出来ればモナー版ください。

>>409
誰?
Javaでサーバー書くって時点でネタ確定
412デフォルトの名無しさん:01/12/02 10:20
>>408
要するに普通にマルチスレッドプログラミングしてれば問題無い
つうことではないか。
リンク貼っても荒されようのないサイトをttpで書いちゃいやーん

// 2ちゃんでttpリンクにするのは直リン不可なサイトか、
// リファラーで2ちゃんからのリンクと知られたくない場合なのさ
414デフォルトの名無しさん:01/12/02 10:43
初心者です。質問があります。
以下のTest.javaをコンパイルして実行します。

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

double xd = Double.longBitsToDouble(0x7ff8000000000000L);
System.out.println("xd = " + xd );

long xl = (long)xd;
System.out.println("xl = " + xl );
}
}

すると、結果として、
xd = NaN
xl = 0
と表示されます。

なぜ、xl にもともとの、
0x7ff8000000000000L
という値が入らないのでしょうか?
415Kusakabe Youichi:01/12/02 10:48
>>414 デフォルトの名無しさん wrote:
> xd = NaN
> xl = 0
> と表示されます。
>
> なぜ、xl にもともとの、
> 0x7ff8000000000000L
> という値が入らないのでしょうか?

一旦NaNになっちゃってるからでは?
416414:01/12/02 11:02
たしかに、もしxlに
0x7ff8000000000000L
という「ちゃんとした数」が入ったら入ったで
これってヘン?
と思うわけですが。。。
だから、0にしとくしかない、ってことか・・?
JVMの仕様にきちんと書かれてることなんですかね?
>416
言語仕様書に載ってる。IEEE 754準拠
ttp://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208
418C勉強中 ◆RubyOmS2 :01/12/02 12:18
>>414
xl = Double.doubleToRawLongBits(xd);
と書くと、幸せになれるかも知れない。
そもそも、
xl = (long)xd;
じゃ、longBitsToDoubleの逆変換になるわけないじゃん、、、
型変換って、bitをそのままにして渡している訳じゃないぞ、、、
419414:01/12/02 12:46
>>417
>>418
Double.doubleToRawLongBitsの動作について
根本的な考え違いをしてたことが分かりました。
ありがとうございました。
420デフォルトの名無しさん:01/12/02 13:14
インタフェースとObject型についての質問です。
クラス BaseX と RunnerX を以下のように定義しました。

public BaseX { /* からっぽ */ }

public class RunnerX
extends BaseX
implements Runnable
{
public void run() { /* 実装は省略 */ }
}
で、RunnerXのオブジェクト x を作ります。
RunnerX rx = new RunnerX();

rxをBaseXまたはRunnable変数に代入する以下の式はもちろん
コンパイルできて実行時も例外を発生しません。
BaseX bx = rx;
Ruunable r = rx;

しかしこのように代入されたRunnable型変数 rを
BaseX型変数に代入しようとするとコンパイルエラー
になります。(互換性のない型 と怒られる)

BaseX bx2 = r; // コンパイルエラー!!

これは納得です。
が、疑問に思っているのは、Runnable型のrをObject型変数
に代入する式、

Object obj = r;

がコンパイルOKってことです。
「Objectはすべてのクラスのツリーのルートだが、インタフェース
には共通のルートはない」という原則にそぐわない気がするのです。
なんかすっきりした説明のできる方いませんか?
>>420
そのインタフェイスを実装してるクラスが必ず存在するわけで、
そのクラスが Object クラスから派生してるのは間違いない。
だから必ず変換結果が存在するので、エラーにする理由がない。
>>421
やっぱり

『>エラーにする理由がない。
からエラーにならない。』

ぐらいの割り切りで飲み込むしかないのかな〜。

Object obj = r;
がキャストなしで代入できてしまうことが、
「クラスとインタフェースの階層ツリーは別ものである」
という原則からすると「どうもしっくりこない感じ」が
するのって変?
これ実は、サンの認定JAVAプログラマの練習問題。
紫本の練習問題6−5なんだけどね。
ま、実際にコンパイルできるんだから、納得する(つーか
覚える)しかないけど。
そっかー、分かった。
「r は Runnable型のオブジェクト」
なんだから、
Object obj = r;
は正しいのか。
そっかー、そっかー。よかったー。
424デフォルトの名無しさん:01/12/02 14:38
JITを有効にするには、どしたらいい?
環境変数にコンパイラ名指定すればいいだけ?
それとも、もっと複雑?
>>424
環境を書きなされ。
426デフォルトの名無しさん :01/12/02 17:05
>>351
秀丸なら 置換、grep もできるし、コンパイラの標準エラーや、作ったプログラムの実行結果も秀丸上に表示する。
>>426

秀丸マンセー(煽りではなく)

そろそろ入金しようかな・・・・
meadow…
>>426
Peggyモナー
430デフォルトの名無しさん:01/12/02 18:44
>>425
れすどうも、
環境は、
LinuxでSlackware4から色々アップしてつかって、殆ど7.0になってる、
kernelは2.2.16
jdkは1.3.1
ってかんじ
どでしょ?

とりあえず、
export JAVA_COMPILER=symcjit
としてみたんだけど、効いてる?
>430
1.3.1ならHotSpotなんでわ?
java -versionで確認してみそ

それから"-Xprof"オプションつければ
どの部分がネーティブに変換されてるか表示されるよ
432デフォルトの名無しさん :01/12/02 21:20
>>429
Peggy調べてきました。
かなり強力なエディタですね。

ただ、エディタってなれてものがやっぱ一番使いやすいので、そのエディタである程度のことが
できてしまうと、ほかに行けないんですよねぇ。
433  :01/12/02 21:22
C++はここでいいのかな?
>>433
ビミョーにアウト
ごめんね
435  :01/12/02 21:27
どこにいけばいいのですか?
>>435
ここ。ほんとごめん

C++相談室 Part3
http://pc.2ch.net/test/read.cgi/tech/1003832761/
437  :01/12/02 21:35
ここでいいの?
質問しちゃうよ
438 :01/12/02 22:10
ポインタってナンですか?
>>438

Cではアドレスを格納するための変数。多分JAVAでも同じ。
440デフォルトの名無しさん :01/12/02 22:29
>>439
アドレスを格納 って アドレスってなに?
>>440

メモリーのアドレス。
>>441
メモリーのアドレスを格納するための変数。ってことか・・・

目的と作用が離れて難しい説明するのね。
本当に細かいツッコミなんだけど,
正確にはポインタとアドレスはちょっと違うモノ・・・らしいです。
ほとんどの場合(処理系依存?OS依存?)はポインタの表現方法として
アドレスを使ってるけど,C の定義としては,必ずしもそうである必要は
ない・・・らしいです。
ちょっと不確定情報っぽくてすまんです。。。
>>439

アドレスを格納しないだろう?
>>444

じゃあ何を格納するの?
446443:01/12/02 23:01
あー,だめだこりゃ
443 は無視して下さい。。。
447  :01/12/02 23:23
Cの話題はCのスレでやりなよ。
アドレスじゃないポインタもあるよ。
相対ポインタとか。
449デフォルトの名無しさん:01/12/03 00:06
マジレスカッコワワルイ!!
450デフォルトの名無しさん:01/12/03 00:30
>>448 はちょっと(頭が)おかしいと思う。
JAVAはコーヒー同好会ということですね。
452シロート:01/12/03 11:27
質問です。

現在一ヶ月表示機能のカレンダーを作成してまして、一か月分の祝祭日
のデータから取得しBean側に持たせることは出来ましたが、この祝日を
赤で表示する為にどのように比較文を作成したら良いか悩んでます。
例えば、IF(条件)
の条件に「A日または、B日または、C日または、D日 ならば」 のように
条件をBean側に取得した日付分作成したいのです。
何か良い方法はありませんでしょうか?
月によって、祝日の数がバラバラの為条件文を指定した分ループさせたい
のです。
453  :01/12/03 12:11
>>452
そのBeanとやらに祝日判定メソッドをつければ?
祝日は
int[] publicHolidays = new int[12];
とかで、各月の祝日の日付のビットを立たせておいて
祝日を判定したい場合は、andを取ってみるとか。
454javaむぎ茶:01/12/03 12:13
>>452
言いたいことがよくわからんです。
if(祝祭日Bean.isHoliday(date)){
 set描画モード(祝祭日)
}

boolean 祝祭日Bean::isHistory(Calendar date){
 foreach 祝祭日データ (祝祭日リスト){
  if(祝祭日データ.isMatch(date)){
   return true;
  }
 }
 return false;
}

な感じ?
455Kusakabe Youichi:01/12/03 12:22
In article >>452, 452 シロート <news2ch@toc
.dyndns.org> wrote:
> 現在一ヶ月表示機能のカレンダーを作成してまして、
> 一か月分の祝祭日のデータから取得しBean側に持たせることは出来ましたが、

「祭日」があったのは戦前まででしょ。

# わたしが作った万年カレンダーはちゃんと「大祭日」と「小祭日」も区別
# してた:)
> わたしが作った万年カレンダーはちゃんと「大祭日」と「小祭日」も区別
> してた:)

おお、素晴らしい!
ぜひその素晴らしい万年カレンダーを使ってみたいんですが、
入手方法を教えて頂けませんか??
457仕様書無しさん:01/12/03 12:28
>>456
ネタニマジレスカコワルイ
458シロート:01/12/03 12:29
454様 ありがとうございます
Bean側には、各月の祝祭日の日付(int型)のみを取得してます。
で、表示させる前の段階ですでにCalendarをFormatsし「MM月dd日 E曜日」
のString型からsubStringで抽出しEの比較を行い、土、日曜日を判定し色づけ
表示してます。その判定色づけ表示ソースをそのまま使いたいので、

IF(dd(もちろんint型に変換)=Beanに格納された値){色づけ表示する}

で簡単に出来ると思っていたら、祝日が毎月バラバラにあることに気が付き
ました。その為If文の条件をその都度自動的に設定できればと考えてます。

このような場合は、別の文を利用した方が良いでしょうか?
459ひろみちゅ:01/12/03 12:33
私の作成したカレンダーならば月の満ち欠けや日食、月食
また彗星との再接近日、グランドクロス、旧暦や過去の元号まで
カバーしております。
460ゆうき☆:01/12/03 12:36
なんの、私の作成したカレンダーならば奥さんの安全日まで表示可能なのです!
461456:01/12/03 12:40
>>457
やだナァ。あの日下部サンがネタで書くわけナイじゃないデスカ。
キット本当に作られたんデスヨ。
本人が否定シタのならトモカク、信じてアゲナイト。

ゼヒ見てみたいのでヨロシクお願いシマス>日下部さん
とりあえず、ハッピーマンデーと、春分、秋分は毎年変動するから
注意せねば。
463シロート:01/12/03 12:46
私も是非お教え願いたいです。
464仕様書無しさん:01/12/03 12:47
>>461
なにか,このスレに恨みでも?
あっ,違った・・・・
>>464 は、この名前が正しい。
466Kusakabe Youichi:01/12/03 12:52
In article >>461, 461 456
wrote:
> やだナァ。あの日下部サンがネタで書くわけナイじゃないデスカ。
> キット本当に作られたんデスヨ。
> 本人が否定シタのならトモカク、信じてアゲナイト。
>
> ゼヒ見てみたいのでヨロシクお願いシマス>日下部さん

あのー「作った」っていうとフリーソフトしか思い浮かばないものなんでしょうか
?
467シロート:01/12/03 12:52
IF文では出来ないでしょうか?
結局Bean内でもIF文を作成して条件文を作らせた方が
簡単に出来そうでしょうか?
>>461
ホーレミロ、ネタダッタロ
>>466
なんでフリーソフトに限定するんです?
ダウンロードURLを教えてくれと言ったのではありませんよ?

「入手方法」を教えてくださいと言ったんです。
例えば売り物だったら、
どこそこの店へ行って買えとか答えられるはずでは?
>>467
いいじゃん、ifだろうがswitchだろうが。
祝日の数だけ書きまくれ!
471Kusakabe Youichi:01/12/03 13:04
In article >>469, 469 デフォルトの名無しさ
ん wrote:

> >>466
> なんでフリーソフトに限定するんです?
> ダウンロードURLを教えてくれと言ったのではありませんよ?

へ? フリーソフトって「ダウンロードURL」があるものを言うのですか?
守秘義務のないようなもの(勝手に見せられる)を言うかと思ってました。
472デフォルトの名無しさん:01/12/03 13:07
同期かんけいのしつもんです

wait() で寝てる複数の人のうち、特定の人を選択的に
覚醒させたいんだけどnotify()だと誰が目覚めるか
不確定ですよね?
やはり、notifyAll()で全員叩き起こして
各人で自分が起こされたのか確認させる方法が
もっとも無難で良いのでしょうか?
473 :01/12/03 13:13
>>472
Javaハウスのトピックス見れ!

http://java-house.jp/ml/topics/
474javaむぎ茶:01/12/03 13:14
いつも選択的にスレッド起こすのなら
スレッド毎に1つ wait 用Object用意するってのはどう?
475472:01/12/03 13:18
>>473
http://java-house.jp/ml/archive/j-h-b/026321.html
このあたりのチョー長いスレッドが役立ちそうですね

まあ、>>472のが無難、ということで結論付けます。
476472:01/12/03 13:19
>>474
あ、それナイスアイデアです。検討してみます。
> 守秘義務のないようなもの(勝手に見せられる)を言うかと思ってました。

守秘義務のないものはフリーソフトと呼ぶのですか?
守秘義務がなくともフリーソフトと呼ばないソフトは実在します。
認識が間違っているので、正してください。

それで、上の点についてはともかく、
貴方の作った素晴らしい万年カレンダーの入手方法(もし可能ならば)を
教えていただきたいのですが、お教え下さらないでしょうか?
>>477
(´-`).。oO( せっかく空気を換えようと頑張ってたのに無に還すなよ・・・ )
>>478
(´-`).。oO( あぅぅ。ごめんよぉ。つい。。。もうやめるよ・・・ごめん>みんな )
480シロート:01/12/03 14:16
>>458
データベースの条件を配列に納めて、その配列の様素数分、
IF文の条件式を作成するようにしてみる。
と言うのは出来るような気がするんですが。
問題は、その配列分For分で作成して文字列を連結すると、
「A || B || C || D ||」
のように最後にも不必要な「||」が付いてしまいます。
何か良い方法はありますか?
String str = "";
for(int i=0; i<length; i++){
if(i != 0) str += "||";
str += ...
}
482デフォルトの名無しさん:01/12/03 14:30
>>480
>>453のやり方で駄目なの?
int[] publicHolidays = new int[12];
で、例えば2月11日を祝日にする時は
publicHolidays[1] |= 1 << 11;
な感じでフラグ立てといて
後で照合したい場合は
(publicHolidays[1] & (1 << 11)) != 0だったら2月11日は祝日とか。
>>480
> データベースの条件を配列に納めて

データベースがあるなら、そのままつかえ!
484Kusakabe Youichi:01/12/03 16:13
In article >>477, 477 デフォルトの名無しさ
ん wrote:
> 守秘義務のないものはフリーソフトと呼ぶのですか?
> 守秘義務がなくともフリーソフトと呼ばないソフトは実在します。

逆と対偶の違いをしらないのですか? :)

> 貴方の作った素晴らしい万年カレンダーの入手方法

もしかして、フリーじゃないものは全部ぱっけージそふとみたいな
ものだと思い込んでいたりするのだろうか:)

買いたいなら買ってみてください:) > 納品先は国鉄(っていまはJR)か、ターゲッ

マシンはH社の専用機です。
485Kusakabe Youichi:01/12/03 16:15
In article >>480, 480 シロート <news2ch@toc
.dyndns.org> wrote:
> 問題は、その配列分For分で作成して文字列を連結すると、
> 「A || B || C || D ||」
> のように最後にも不必要な「||」が付いてしまいます。
> 何か良い方法はありますか?

もしif文で特別扱いするなら、後ろ1つよりも最初の1つのほうが
すっきりかけることが多いですね。
IF A
|| B
|| C
|| D
...
みたいに。(まあ、たいした差はないのですが)
486シロート:01/12/03 16:16
>>483
私の隣の人もそれが正論と言ってました。
でも非常に参考になりました。ロジックの方法を
もっと勉強しなおします。
487デフォルトの名無しさん:01/12/03 17:26
javaの逆コンパイラの(・∀・)イイ!の紹介して
jad
489シロート:01/12/03 17:55
すいません。
データが 2000/1/19や、1999/11/25などの場合の日にちのみを
抽出するには、どのようにしたら良いでしょうか?
又は、このような数値をDATE型に変換する事は可能ですか?
490487:01/12/03 17:58
jadのオフィシャル?ページがデリられてるんですケド
どっか落とせるところ知りませんか?
491javaむぎ茶:01/12/03 18:00
>>489
隣の人に聞いてみた?
492本人のコピペ:01/12/03 18:00
これから初心者になる、そういう段階のものです。jdk1.3.1_01aをダウンロードしてパスも通しました。O
sはちなみにXPホームエディションです。でも、Dos窓でJavacコードを認識してくれないんです。(涙
エディター+jdkで何とか事足りると思っていたのですが、基本的には正しくないんですか?ビルダーだとxpで動作するかどうかバクチみたいだし、エディター+jdkで何とか乗り切りたいんです。こんな私をどうか救ってください。(環境cpu athron xp1500 memory256)
何が間違ってるんでしょう?重ねてお願いする次第です。
>>490

ほれ、アップロードしといてやったぞ。

http://isweb31.infoseek.co.jp/computer/itoen/cgi-bin/source/r054.zip
494493:01/12/03 18:16
うお、直リンはだめだ。
コピペで逝ってくれ。
ttp://isweb31.infoseek.co.jp/computer/itoen/cgi-bin/source/r054.zip
495シロート:01/12/03 18:15
>>491
隣の人は、コボラーの為、DB系は理解してますが、Javaは初心者です。
>>492 PATH が間違っているに一票。
>>489
DATE型なんかあったっけ?
498シロート:01/12/03 18:31
497
Date型です。
カレンダか、Dateとして認識してくれれば、
dateformatを使えると思ったんですが。
499487&490:01/12/03 18:36
>>493
神様ありがとう(●´ー`●)
>>496
javac が動作しない ではなく Javacコードを認識してくれないんです。
501492:01/12/03 18:39
そんなところなんでしょうかねぇ?再トライしてみます。御助言感謝いたします。
>>500
わりぃ
意味がわからないんで状況をもうちっと詳しく話しやがれ
>>500 Javac コードって何を指してるんだ?
504 ◆RubyOmS2 :01/12/03 18:54
>>500
どういうエラーメッセージ出るかそのまま出してくれ。
取りあえず、
C:> java -version
としてみて、
java version "1.3.1_01"
みたいのが出るか確認しろ。
でなければ、PATHが正しく設定されいないって事だ。
505496:01/12/03 18:55
>>500 では Javacコード=クラスファイルと想定して
CLASSPATH が間違っているに一票。
506この気持ちをあらわす感謝の言葉がみつかりません。:01/12/03 20:31
;で解決いたしました。皆様の御助言、誠に有難うございました。やっと、世界にハローっていえます。
507この気持ちをあらわす感謝の言葉がみつかりません。:01/12/03 21:11
セミコロンをもじって、蝉五郎と言う名で書いていこうと思います。またお目にかかれるようにスキルをあげていきたいと思います。
508シロート:01/12/03 21:40
日付のくせに文字列で、2001-1-15 00:00:00 のような
記述から日にちのみを抜き出す方法を教えて下さい。
2001-1-1 00:00:00
2001-12-23 00:00:00
もしくは、アクセスサーバー上は 2001-01-01で表示されているので
Javaで、値を受けとる時に値を崩さない方法を教えて下さい。
  
509デフォルトの名無しさん:01/12/03 22:05
>>508
java.text.SimpleDateFormatでパースして
java.util.Dateのインスタンスを生成せよ。
>>508
おいおい、君は1日に何回質問をしているのだね?
少しは自分で調べる努力をしたまえ。

「調べる事が出来る能力」ってのも重要なスキルだぞ。
遅いけど

デフラグを使うと、ハード ディスクのファイルや未使用領域を再配置し、
プログラムの実行速度を上げることができます。

  ∧_∧
 ( ´∀`)
 (    )
 ■■□■■□◇_◇□□□

  ∧_∧
 ( ´∀`)
 ( つ□)
 ■■_■■□◇_◇□□□

    ∧_∧
   ( ´∀`)
   ( つ□つ□
 ■■_■■_◇_◇□□□

                ∧_∧
               ( ´∀`) /
               ( つ  つ
 ■■_■■_◇_◇□□□□□ ─
                  /' ヽ\

            ギュッ   ∧_∧
                (´∀` ) ≡≡
■■■■◇◇□□□□□⊂   )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

でも、時々ディスクエラーを引き起こします。

       ベキッ
   ◇  ◇        ∧∧ アッ
    \ ノ        (゚;  ) ≡≡
■■■■□□□□□⊂   \
 ̄ ̄ ̄ / ヽ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
あれっ GC じゃなくてデフラグだっけか?
まぁ mark & sweep + compact の GC に見えなくもないか。
どうもありがと
513デフォルトの名無しさん:01/12/04 09:24
java.util.Timerをunixのcronのように
使うことは可能ですか?
Java をずっと立ち上げて置くなら可能じゃないの?
Tomcat の定期処理で使ったけど。
515シロート 改め シロート以下:01/12/04 12:40
皆様のおかげで完成しました。
原因は、
Access側の日付は正規表現でした。馬鹿な私がエクセルにコピーして出力した
時にエクセルの日付表現になってました。そのため、馬鹿な事をヒタスラ繰り
返しました。でも皆様のお陰で、色々な考え方を身に付きました。
暑く御礼申し上げます。
>>511
クラスタが下位から上位にリンクされたように見えるが、そんなことあるの
>>516 こまかいこときにすんなYO!
作った奴はそこまで考えてないって!
もっと細かいこというと、単に言葉の遣い方の問題だが、
下位から上位へのリンクは順方向
上位から下位へのリンクが逆方向
な気がする。
519デフォルトの名無しさん:01/12/04 16:36
Javaで画面に点を描きたい場合はどういうメソッドを使えばよいのですか?
>>519
class Ten {

public static void main (String args[]) {
System.out.println( ".");
}
}
521デフォルトの名無しさん:01/12/04 17:15
ボタンを押すとテーブルが増えていくプログラムを作っています。
テーブルを作成する時に後で各々を判別する必要があるので、各々に
独自の名前をつけたいのですが、どうしたら良いでしょうか?

static int i;
i++;
Table ("table"+i.toString) = new Table;

なんてことをやってみましたが、当然駄目でした。

また、各々に独自の名前がつけることが出来たとして、
そのテーブルの名前をテキストフィールドに入力して、テーブル内の要素を
処理したいのですが、テキストフィールドからテーブルの名前をString型で
受け取った後、どのように、その名前のテーブルを認識すればいいのでしょうか?
例えば"table1"という文字列を受け取ったします。そこからどのようにして
table1と名付けたテーブルを操作できる状態にすればよいのですか?
>>521 名前の文字列をキーにしてHashMapに突っ込め
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/HashMap.html
523 ◆RubyOmS2 :01/12/04 17:42
>>521
配列かHashtableを使えばいいと思われ。
524デフォルトの名無しさん:01/12/04 17:52
5
1 1
2 4
10 100
20 400
100 10000
このように最初にプロットする点の個数があり、その後に、点の x, y 座標が順番に並んでいる
ファイルを読み込んでグラフを表示するプログラムを作りたいのですが、どうすすればいいのでしょうか?
525デフォルトの名無しさん:01/12/04 18:30
Date クラスって、例えば分だけ取得/設定って出来ないのだろうか?
getMinutesやsetMinutes等がやたらと推奨されないメソドとかいって
お叱りを受けますが
>>524
なんでこう、質問丸投げしてくるのかな。
まず自分で指向錯誤してみろよ。質問はその後だろ?

>>525
APIのドキュメント読めばちゃんと書いてあるだろうが、ボケが!
http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html
>>524 すげぇ、宿題やってくださいだな。10万円でどうよ。
528デフォルトの名無しさん:01/12/04 19:31
構文解析のプログラムを作っています。

String型をStreamTokenizerでいじりたいのですが、どうしたらいいですか?
リーダーにString型ってぶち込めますか?
529デフォルトの名無しさん:01/12/04 19:32
J2EEをインストールした時は
bash_profileをどう記述したらいいのでしょうか?

J2EE_HOME
JAVA_HOME
PATH
>>528 String#getBytes() → ByteArrayInputStream → StreamTokenizer
531530:01/12/04 19:44
今のはこうか、

String → StringReader → StreamTokenizer

# StreamTokenizer なんて久しく使ったこと無かったから...
532デフォルトの名無しさん:01/12/04 19:47
>>530
サンクス!早速試してみる!
533デフォルトの名無しさん:01/12/04 20:20
サーブれっとで、
複数のリクエストが重なると、ブラウザに出力する内容が
まざって、一つのブラウザにまとまってでたりするんだけど、
一応、doGetに、synchronizedにしたら、ならなくなったけど、
でも、それじゃ、一個ずつしかリクエストこなせないからなぁ〜
誰か、情報もってたら、おせぇ〜て。
534デフォルトの名無しさん:01/12/04 20:30
それはサーブレットコンテナが壊れてるんじゃないの?
何使ってる?
535513:01/12/04 20:38
ある指定した時刻に、メールを送信するJavaプログラム
を起動させる仕組みを作りたいのですがどのようにすれば
よいのでしょうか?

その時刻の指定はサーブレットを通して行いたいと考えています。
>>533
スレッドセーフに作ってないんじゃ・・・?
>>533
「出力する内容」を保持してるオブジェクトを各スレッドで共有していて、
ちゃんと排他されてないってだけではなく?
>533
まさか応答メッセージの編集かなんかに、サーブレット自身の
クラス変数を使ってないかい?
536さんの言うようにスレッドセーフに作られ。
>>533
初心者が良くやる「変数宣言が面倒だからインスタンス変数にしちゃった」に一票。

public class ABCServlet extends HttpServlet{

  private HttpServletRequest request = null;
  private HttpServletResponse resopnse = null;

  protected void doGet(HttpServletRequest req, HttpServletResponse res){
    request = req;
    response = res;
    ...
    doSomething();
  }

  private void doSomething(){
    PrintWriter out = response.getWriter();
    ...
  }
}
540デフォルトの名無しさん:01/12/04 22:55
いまSJPJ受験のために紫本(SUN教科書JAVA2)で勉強してる者です。
マ板でも質問したのですが、基本的な内容なのでこちらでも書かせて
いただきます。

紫本p199に

 変数をオーバーライドできるか

 単直入刀に答えるなら、確かに変数も
 オーバーライドできます。』

とあるけど、

『変数の場合は、隠蔽(Hiding)されます』

と書くべきじゃないでしょうか?

クラスの変数(インスタンス変数、static変数ふくめて)は
オーバーライドできるorできない、に関してベテランの方、
教えてください
>>540
誤:SJPJ受験
正:SJP受験
542デフォルトの名無しさん:01/12/04 23:03
よーし、java++つくっちゃうぞー

http://mentai.2ch.net/test/read.cgi/sim/1006577777/
543デフォルトの名無しさん:01/12/04 23:06
コンストラクタの中で
例外(Exceptionを継承している例外)を
吐く事ってやっていますか?
やっています
やらない場合、コンストラクタ内で
初期化しきれなかったらどーすんの?
>>543
それはもうアリアリでしょう
547デフォルトの名無しさん:01/12/04 23:22
>>543
たとえば、java.io.FileReader のコンストラクタ
をAPIドキュメントで調べてみいや
>>535
メール送るプログラムと、サーブレットは別物だよね?
適当に値渡す手段考えたら、すぐじゃないの?
549533:01/12/05 00:50
レスどうも、
スレッドセーフ、初めて聞いた単語だた。
検索したら、いぱい出てきたから、勉強すます。

>>539
そんな感じで作ってるけど、駄目なの?
それとも、いい例?
>>549 ダメな例。
同時にアクセスされたらどうなるか良く考えるべし>スレッドセーフ
551エッチマン:01/12/05 01:01
手当たり次第にsynchronized!

っつーのも対処療法としてありですか?
>>551
性能悪くてもいいならいいんじゃない?
つーかそういうアホなコードは、肝心要の所でsynchronizedが抜けて
そうだけど。
>>551
名前から推すとネタ。
554デフォルトの名無しさん:01/12/05 01:27
>>552
想像もつかない間抜けなメソッドコールのネストで、
いつのまにかデッドロックの方が可能性高い。
555デフォルトの名無しさん:01/12/05 01:35
想像しなくても確実にデッドロック。
556533:01/12/05 01:38
>>539
できたら、いい例を一つよろすく。
557デフォルトの名無しさん:01/12/05 01:43
1)排他処理をしてない。
2)static変数のハンドラやバッファを使っている。
558デフォルトの名無しさん:01/12/05 01:56
>>556
玄人っぽく、ThreadLocalを使用する。
>>558
スレッドプール使ってるサーブレットエンジンでは安易に使うと大変なことに...
560535:01/12/05 06:17
>>548
実行時間はどうやって指定したらいいの?
561543:01/12/05 07:27
コンタトラクタからのExceptionの件ですが
レスありがとうございます。

デザインパターンの本にこんな事が載っていたので・・
「コンストラクタから例外を投げることは
 優雅とは(正当すら)みなされない」

ちなみに私もやっています。
562デフォルトの名無しさん:01/12/05 09:50
テキストファイルを読み込んで表示させるプログラムを組んだのですが
「Yomi.java:14: シンボルを解釈処理できません。」とエラーが出ます。
どう直せばよいのでしょうか?特に字は間違ってないと思うのですが。

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class Yomi {
public static void main(String args[]){
try {
File fil = new File("foo.txt");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
String filS = new String(filBR.readLine());
}catch(Exception e){}
System.out.println(filS);//この行でエラーが出ます
}
}
563デフォルトの名無しさん:01/12/05 09:53
>>562
変数の宣言とスコープについて、もうちっと勉強しなはれや。
564エッチマン:01/12/05 09:55
>>562
filSがtry節の中だからじゃない?
565562:01/12/05 09:57
あ、じゅんばんまちがってただけだった
566562:01/12/05 09:58
>>564
ありがとう
567javaむぎ茶:01/12/05 10:32
>>528
構文解析を一から作ってるの?
勉強のためじゃないのなら javacc はどう?
yacc みたいなやつで java のソース吐くよ
けっこう便利(^-^)
>>567 俺も使ってるよ
JavaCCスレ昔立ったけど一瞬で沈んだな。
ただ、Javaのくせにデフォルトで日本語対応してないのがちょっとアレだな。
カスタムリーダクラス1つ作っとけばいいだけの話なんだけど。
javadoc ってどうやって使うのか教えてもらいたいんですけど

下記の最小のソースを javadoc HelloWorld.java とやってもエラーが出て生成されませんよね?
ほかにどんなオプション、パラメータを使えばいいのか教えてくれませんか?

class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}

http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs/win32/javadoc.html はよみました。
570エッチマン:01/12/05 14:33
>>569
コンパイルするつもりでjavacの代わりにjavadoc使うといいよ
571569:01/12/05 14:35
>>570
>>569 のソースだと javac HelloWorld.java でコンパイルはできますよね?けど、
javadoc HelloWorld.java とすると

「ドキュメント化する public または protected クラスが見つかりません。」

とエラーになります。このソースじゃできないのかな?
572569:01/12/05 14:48

class を public class にしたらできました。

古い本を見ていたからかな?すいませんでした。
573533:01/12/05 17:26
public class ABCServlet extends HttpServlet{

//ここの
//  private HttpServletRequest request = null;
//  private HttpServletResponse resopnse = null;

  protected void doGet(HttpServletRequest req, HttpServletResponse res){
//    request = req;
//    response = res;
//ここにもってきたら出なくなったよ、
    HttpServletRequest request = req;
    HttpServletResponse response = res;
    ...
    doSomething();
  }

  private void doSomething(){
    PrintWriter out = response.getWriter();
    ...
  }
}

つまり、ABCServletはstaticで呼ばれるから、
request、resopnseが上書きされてたって事でOK?
574デフォルトの名無しさん:01/12/05 17:34
過去スレ読まずに聞くのもなんだけど
これ一冊でjavaはOKって本はどれかね?

CでいうK&R、C++でいうARMみたいなやつ。

入門本はいらないからさ。
高くても分厚くても洋書でもいいからさ。
おすすめ教えて。
575デフォルトの名無しさん:01/12/05 17:34
最後の行でシンボルを解釈処理できません、と言うエラーが出ます。何が悪いのでしょうか?さっきからこれのせいでずっと悩んでいます。
try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;


for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);

float ii[];
ii = new float[10000];
ii[i+1000] = Float.parseFloat(filST.nextToken());
ii[i+2000] = Float.parseFloat(filST.nextToken());
ii[i+3000] = Float.parseFloat(filST.nextToken());
ii[i+4000] = Float.parseFloat(filST.nextToken());
ii[i+5000] = Float.parseFloat(filST.nextToken());
}
}catch(Exception e){}
System.out.println(ii[2001]);
576574:01/12/05 17:38
javaしらんのだけど、
最後の行を二行上にもっていけないわけでもあるの?
577575:01/12/05 17:43
あ、確かにこれなら上にもっていけば解決すると思います。
本当はこんな漢字でグラフを書きたいと思うのですが、これだったらどう直せばよいのでしょうか?
class MyCanvas extends Canvas{
public void Yomikomu(){
try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;


for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);

float ii[];
ii = new float[10000];
ii[i+1000] = Float.parseFloat(filST.nextToken());
ii[i+2000] = Float.parseFloat(filST.nextToken());
ii[i+3000] = Float.parseFloat(filST.nextToken());
ii[i+4000] = Float.parseFloat(filST.nextToken());
ii[i+5000] = Float.parseFloat(filST.nextToken());
}
}catch(Exception e){}
System.out.println(ii[2001]);
}
public void paint(Graphics g){
Color color;
color = Color.green;

g.setColor(color);
g.fillRect(ii[2001],ii[4001],ii[2001]+4,ii[4001]+4);//四角を作る
}
}
>>575たん。
原因は変数iiの有効範囲だとおもう。

iiはforループのブロックで作られたローカル変数なので、
forループの外にでると、もう存在しないという扱いになるのね。

そんなわけだから、 float ii[];の行を
for(int i=0; i<132; i++){のブロックの外か、
try {のブロックの外にだしてみたら解決するとおもう。

たぶん、こんなかんじ?
float ii[];
ii = new float[10000];
for(int i=0; i<132; i++){
579575:01/12/05 17:46
>>578
ありがとうございます。さっそくやってみます。
580デフォルトの名無しさん:01/12/05 18:03
最後から4行目で「式の開始が不正です」とエラーが出ます。どうすればいいのでしょうか?

class MyCanvas extends Canvas{
public void Yomikomu(){

float ii[];
ii = new float[10000];


try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;

for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);

ii[i+1000] = Float.parseFloat(filST.nextToken());
ii[i+2000] = Float.parseFloat(filST.nextToken());
ii[i+3000] = Float.parseFloat(filST.nextToken());
ii[i+4000] = Float.parseFloat(filST.nextToken());
ii[i+5000] = Float.parseFloat(filST.nextToken());

}
}catch(Exception e){}
public void paint(Graphics g){
Color color;
color = Color.green;
g.setColor(color);
g.fillRect(ii[2001],ii[3001],4,4);//四角を作る
}
}
}
581 :01/12/05 18:09
IE6.0で奇妙な減少に出くわしたので報告。
あるメソッドで

if (xxxx) a++;
if (xxxx) b++;
if (xxxx) c++;
if (xxxx) d++;
if (xxxx) e++;
if (xxxx) f++;

と書いてたら、IE6.0が例の「エラーを送信しますか?」のダイアログを出して
落ちてしまった。appletviwerでは問題無く動く。

あれ?と思って、if文をコメントアウトすると、エラーは起こらない。
で、面白かったのがif文を4つ以上つなげると落ちる事。

/*
if (xxxx) a++;
if (xxxx) b++;
if (xxxx) c++;
*/
if (xxxx) d++;
if (xxxx) e++;
if (xxxx) f++;

でも

if (xxxx) a++;
if (xxxx) b++;
if (xxxx) c++;
/*
if (xxxx) d++;
if (xxxx) e++;
if (xxxx) f++;
*/

でも、落ちない。

で、そのifぶんを別なメソッドに移動させたら6つつなげても問題無かったです。
(最初にif文を書いていたメソッドは15行くらいでした)
582 :01/12/05 18:14
×IE6.0で奇妙な減少に
〇IE6.0で奇妙な現象に

ちなみに、リソースを多く消費するような処理では無かったです。
583580:01/12/05 18:15
あ、やっぱいいです。もう少し自分で何とかしてみます。
584デフォルトの名無しさん:01/12/05 18:25
float型の変数をintにすることはできますか?
例えばfloat s = 42.1
だとしたらこれをintで42にできないものかと。
drawLineメソッドとかだとint型を使わなきゃいけないので。
585584:01/12/05 18:35
もしくはfloatのままで絵やグラフを描ける方法を教えて下さい
キャストしたら?
int ss = (int)s;
587 :01/12/05 18:53
>>581の再現コードです。
環境はSDK1.3.0 + Win98 + IE6.0.2600.0000です。

import java.applet.Applet;

public class ErrorApplet extends Applet {
  public void init() {
    new ErrorTest().test();
  }
}
-----------------------------
import java.util.Random;

public class ErrorTest {
  private static boolean[] BALLS = {true, true, false, false};
  private Random random = new Random();
 
  public void test() {
    int indexA = random.nextInt() * BALLS.length;
    indexA = Math.abs(indexA);
   
    int indexB = -1;
    while (true) {
      indexB = random.nextInt() % BALLS.length;
      indexB = Math.abs(indexB);
      if (indexA != indexB) break;
    }
   
    boolean[] selectedBalls = new boolean[]{false, false, false, false};
   
    selectedBalls[indexA] = true;
    selectedBalls[indexB] = true;
       
    if (selectedBalls[0] && selectedBalls[1]) return;
    if (selectedBalls[0] && selectedBalls[2]) return;
    if (selectedBalls[0] && selectedBalls[3]) return;
    if (selectedBalls[1] && selectedBalls[2]) return;
    if (selectedBalls[1] && selectedBalls[3]) return;
  }
}
588 :01/12/05 18:55
>>587のtest()は、これ以上削れませんでした。
589エッチマン:01/12/05 18:56
>>587
if並べて落ちちゃうなら、ひとつにまとめたら?
疑問の解消にはならないけど問題の解決にはなるんじゃない?
590 :01/12/05 19:00
>>589
問題は解決してます。(if文を別なメソッドに移したら動いた)
ただ、不思議だったんです(^^;

test()でエラーがでた人は、test()なかをいじくって見てください。
if文の中身を替えたり、他の行を弄くってもエラーが出なくなります。

不思議。
591 :01/12/05 19:11
>>587
訂正
× int indexA = random.nextInt() * BALLS.length;
〇 int indexA = random.nextInt() % BALLS.length;
592 ◆RubyOmS2 :01/12/05 19:57
>>587
win2k+Nescape6.2+JRE1.3.1_01で試したけど、
エラーは起きなかったよ。
IE6のバグなんじゃない?
>>581
IE6.0のバグ(>>592) は、それはそれとして、…。

そんな if の濫用はバグの素でしょ。
switch とか、else if なんかを
上手にあしらってくださいな。
594574:01/12/05 20:35
誰かいい本、教えて、、、くれ

げふっ、ゲフゲフん
595エッチマン:01/12/05 20:45
>>594
独習Java (翔泳社)
Java言語プログラミングレッスン(下) (SOFTBANK)
こんなもんでいいんじゃない?
RuntimeException以外のExceptionのサブクラスは捕獲(catch)or宣言(throws)しなけれ
ばならないと書いてあったのですがどうしてRuntimeExceptionはその必要が無いのでしょうか.

後,浮動小数点/0=NaN,で整数/0->ArismaticExceptionというのもちょっと違和感があります.
597574:01/12/05 21:19
>>595
ありがとーん
どちらも書店でよく見かけるね。(でも中は見たことない)

ではまじめに。

独習xxは、K&Rみたいなものでしょうか。
でもなんかどこかに抜けがありそうで嫌な感じですね。

Java言語xx(下)は、上下巻の片割れですね。
上下巻に分かれてているソフトウェア開発言語の本で、
リファレンスとして読むに足りる本は、今まで見たことがありません。
(ドラゴンブックI&IIは例外だったかな。でもあれの原著は一冊でしたよね。)

馬鹿にしてるつもりもないし、いちいちけちをつけようと思ってるわけではないです。
「これ一冊でいいだろ」というような、本はないでしょうか?

ざっと書店で眺めてみた限りでは、Sunの名前の入ったJavaの解説書っぽい本と、
O'ReillyっぽいシリーズのJAVAのクイックリファレンスが、目に付きましたが、
こちらの本はどうでしょうか?
>>597
一冊で済ますんなら、殴ったら人殺せそうなぶっとい本買えば良し。
つーか、本の話は本のスレに行った方がいいと思うがどうよ?
599574:01/12/05 21:36
了解。殴ったら牛でも殺せそうな分厚い本を買います。

本のスレも読みましたが、Javaを第一言語に選ぶ人向け本っぽいものしか
あがっていず、さらに荒らしがいて悲惨な状態だったのでこちらに来た次第です。

>>598さんが手元にいつも置いているJava本は、どの本でしょうか?
>>594
JAVA といいながらアプレットしか書いていない本は避けようね。
601574:01/12/05 21:43
>>600
ラジャッッ

O'ReillyっぽいJ2EEの本が、猫を殴り殺せそうなくらいの適度な厚さでしたが、
たくさんあるJavaのなかで、どういう位置づけにあるのかよくわからなかったので
買うのは控えました。
>>597
Java言語(下)
上ははっきりいっていらんですよ
603574:01/12/05 21:55
結城浩の本でしょうか。

webで目次を見ましたが、上巻は付録以外は特に読まないでよい感じですね。
下巻を読んでリファレンス本で補完、というのが手っ取り早そうです。

候補にいれておきます。
604 :01/12/05 21:56
>>592 やはりIE6.0固有のバグらしいですね。有難うございます。
>>593 まさしくその通りです。
>>594 ピアソン社の「Javaプログラミングマスターコース(上下)」はお勧めです。
605574:01/12/05 22:04
>>604
買わなくても原著がWEBで読めるようですね。
ボーナス前の貧乏人にはありがたいことで..

ちょいとWEBで探してみます。
606574:01/12/05 22:13
Bruce Eckelの本をとりあえず落としておきました。
暇なときに読んでおきます。
が、解説が丁寧すぎるようで、たぶん、眠くなります。

ところで、Javaって、いろんなバージョンが有りますけど
実用を考えたときに、どのあたりのバージョンの解説書を読めば
よいでしょう。

1.x.xは、もう、obsoleteとでも思ってヨイのでしょうか?
>>560
さてはネタだな。

単純にファイル使ったら?
Servletではこのファイルに書く。
メール送信側では、このファイルを定期的に見る。
608584:01/12/06 00:34
>>586
ありがとう。できました。
609デフォルトの名無しさん:01/12/06 00:50
これだと下から5行目でシンボル解釈処理できませんとエラーが出ます。原因はループの中の変数iiを外では使えないことだと思うのですが、
これを解決するためpaintメソッドをループ中に入れる場合、どうすればよいのでしょうか?
このまま移動させたら文public void paint〜の開始が不正とエラーが出ました。
class MyCanvas extends Canvas{
public void Yomikomu(){
float ii[];
ii = new float[10000];
try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;


for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);
float freq,z,ang,rz,iz;
freq = Float.parseFloat(filST.nextToken());
z = Float.parseFloat(filST.nextToken()); //整数部分は、忘れずに「文字列」から「数字」に
ang = Float.parseFloat(filST.nextToken()); //変換しておきましょう。
rz = Float.parseFloat(filST.nextToken());
iz = Float.parseFloat(filST.nextToken());
ii[i+1000] = freq;
ii[i+2000] = z;
ii[i+3000] = ang;
ii[i+4000] = rz;
ii[i+5000] = iz;
}
}catch(Exception e){}
}
public void paint(Graphics g){
Color color;
color = Color.green;
int iii = (int)ii[i+2000];
g.setColor(color);
g.fillRect(iii,4,8,8);
}
}


 (\     ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  \\/ (・∀・)<  芯でもいいよ?
   ( 。 /U U  \_____________
   U⌒U
五行目ってtry { ?
612デフォルトの名無しさん:01/12/06 00:59
なんだか判らんが、とりあえずii[]をメソッドの外に出そう。
613574:01/12/06 01:00
外に出すついでにもっと意味のある名前を付けよう
614609:01/12/06 01:02
>>611
下から5行目なのでint iii = (int)ii[i+2000];です
>>612
わかりました。やってみます。
615609:01/12/06 01:07
この通り外に出しましたがやっぱり同じところでエラーが出ます。
どうすればよいのでしょうか?
class MyCanvas extends Canvas{
float ii[];
public void Yomikomu(){
ii = new float[10000];
try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;


for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);
float freq,z,ang,rz,iz;
freq = Float.parseFloat(filST.nextToken());
z = Float.parseFloat(filST.nextToken());
ang = Float.parseFloat(filST.nextToken());
rz = Float.parseFloat(filST.nextToken());
iz = Float.parseFloat(filST.nextToken());
ii[i+1000] = freq;
ii[i+2000] = z;
ii[i+3000] = ang;
ii[i+4000] = rz;
ii[i+5000] = iz;
}
}catch(Exception e){}
}
public void paint(Graphics g){
Color color;
color = Color.green;
int iii = (int)ii[i+2000];
g.setColor(color);
g.fillRect(iii,4,8,8);//四角を作る
}
}
616デフォルトの名無しさん:01/12/06 01:09
public void Yomikomu(){
float ii[];



float ii[];
public void Yomikomu(){

だけでいいんだよ。
617デフォルトの名無しさん:01/12/06 01:15
>>615
NullPointerExcepitonじゃないか?
paint()メソッドでiiのnullチェックしとけ。

Yomikomu()をあんたが呼ぶ前に、グラフィックを
コントロールしてるスレッドが、勝手にいろんな
タイミングでpaint()を呼ぶだろうから、nullかも
しれんぞ。
618609:01/12/06 01:17
>>617
ありがとう。調べてみます。
619609:01/12/06 02:06
paintをループの中に入れたのですがpublic void paint(Graphics g){の行で「式の開始が不正です」
とエラーが出ます。こういう場合、どういう風に描けばいいのでしょうか。うう、ずっと悩んでいるせいか頭が痛い。
class MyCanvas extends Canvas{
float ii[];
public void Yomikomu(){
ii = new float[10000];
try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;

for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);
float freq,z,ang,rz,iz;
freq = Float.parseFloat(filST.nextToken());
z = Float.parseFloat(filST.nextToken());
ang = Float.parseFloat(filST.nextToken());
rz = Float.parseFloat(filST.nextToken());
iz = Float.parseFloat(filST.nextToken());
ii[i+1000] = freq;
ii[i+2000] = z;
ii[i+3000] = ang;
ii[i+4000] = rz;
ii[i+5000] = iz;
public void paint(Graphics g){
Color color;
color = Color.green;
int iii = (int)ii[i+2000];
g.setColor(color);
g.fillRect(iii,4,8,8);//四角を作る
};
}
}catch(Exception e){}
}
}
>>619
ハァァ…あのさ、コンパイルエラーでしょ。
メソッドのネスト定義はできません。

万が一そこにpaint()メソッドを書けても、
グラフィックを コントロールしてるスレッドが
そのメソッドを呼べないので、何かと不都合です。
621 :01/12/06 03:25
これは新手の荒らしですか?
623デフォルトの名無しさん:01/12/06 09:15
コンパイルはできるのですが、実行してもキャンバスが出るだけで絵を描いてくれません。
何がいけないのでしょうか。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.*;

public class Zu4{
public static void main(String args[]){
JFrame fr = new JFrame("Impedance Analyzer"); // ウインドウの生成(タイトル)
fr.setSize(500, 500); /* 大きさの設定 */
fr.setLocation(100, 100); /* 位置の設定 */
MyCanvas cv = new MyCanvas(); /* キャンバスの生成 */
fr.getContentPane().add("Center", cv);/* 登録/貼り付け */
fr.show(); /* ウインドウの表示 */
fr.setDefaultCloseOperation(fr.EXIT_ON_CLOSE);//クローズしたら終了
}
}
class MyCanvas extends Canvas{
public void paintGraph(Graphics g){
float ii[];
ii = new float[10000];
try {
File fil = new File("T55470");
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;


for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);
float freq,z,ang,rz,iz;
freq = Float.parseFloat(filST.nextToken());
z = Float.parseFloat(filST.nextToken());
ang = Float.parseFloat(filST.nextToken());
rz = Float.parseFloat(filST.nextToken());
iz = Float.parseFloat(filST.nextToken());
ii[i+1000] = freq;
ii[i+2000] = z;
ii[i+3000] = ang;
ii[i+4000] = rz;
ii[i+5000] = iz;
Color color;
color = Color.green;
int iii = (int)ii[i+2000];
g.setColor(color);
g.fillRect(4,4,8,8);
}
}catch(Exception e){}
}
}
624デフォルトの名無しさん:01/12/06 09:17
しねば?
625623:01/12/06 09:31
あ、もうなんとかなりましたのでいいです。

下記のようなバグを防ぐ方法ってあるんでしょうか?(自分で注意しろは置いといて)

public class ByteTest {
public static void main(String args[]) {
byte b;
for( b= 1; b< 200; b++ ){
System.out.println( b );
}
}
}
627デフォルトの名無しさん:01/12/06 09:47
数値を絶対値にするメソッドはありますか?
if a>0みたいにやるしかないですか?
629627:01/12/06 09:53
>>628
ありがとう
630574:01/12/06 10:39
意味もなくbyteを使うな。
631デフォルトの名無しさん:01/12/06 10:58
>>630
意味もなくって、意味もなく int を使いまくるよりいいかと・・・
632 :01/12/06 11:23
>>631
intよりも小さな基本データ型(char、byte、short)に対して何らかの
算術演算あるいはビット演算を行う場合、自動的にintになるのしってる?

試しに

byte a = 1;
byte b = a + 1;

ってやってみそ。
633 :01/12/06 11:24
ようするにだ、素直にint使えと。

下らない事でサイズけちっても、他のプログラマ達のコンセンサス得られなければ
結局バグのもとになるゾと。
634574:01/12/06 11:29
javaをよくしらないんだけど

>>632
その辺はCと同じなんだね。

例のpdfちらっと見ただけなんだけど、
符号なし整数の組み込み型ってないよね。

なんかそういうので困ったときって、
どうしてるのさ?
だれか困った人いるの?
636574:01/12/06 11:38
javaをよく知らないんだけど

そうか、こまらないのか。
こりゃすまん。
637デフォルトの名無しさん:01/12/06 11:46
>>632
ほう そりゃいいこと聞きました。ありがとう
638デフォルトの名無しさん:01/12/06 11:48
>>634
> なんかそういうので困ったときって、

こまるの?
639574:01/12/06 11:58
結構困ると思うんだけどね。

オレよりjavaに詳しい人たちが困らないって言うんだから、きっと、
オレの勘違いなんだよ。
>>637
ってかintとfloatを演算すればfloatになるし
floatとdoubleを演算させればdoubleになるじゃない。

1はintだから
aがbyteなら a + 1 はintだ。
>>639
俺困った事ないけど、具体的にどう言う時に困るんだろ?
642574:01/12/06 12:06
javaの用途ではあんまりこまらんのかも。
らいぶらり(とは呼ばないんだっけ?)も豊富みたいだしね。
>>640
じゃ a=a+bは?
>>632
byte → int は暗黙的にやるだろうけど、int → byte はキャスト
しないとコンパイルエラーになるのでは?

byte a = (byte)1;
byte b = (byte)(a + 1);
645デフォルトの名無しさん:01/12/06 14:23
フレームにスクロールバーを付けたいのですが、
それは可能でしょうか?
自分でも、本やAPI仕様などで調べてみましたが
初心者なのでよく分かりませんでした。
スクロールバーと言っても、テキストエリアに付いているような
画面を上下、左右に動かして表示するためのものです。

説明が下手ですみませんが、どなたか分かる方よろしくお願いします。
646デフォルトの名無しさん:01/12/06 14:52
>>645
なんか本を買ったほうがいいと思う。JAVA基礎を一通りやっていればスクロールパネルに触れる
だろうからさ。いいサイトいっぱいあるけど、まずはそれからだよ。
647デフォルトの名無しさん:01/12/06 14:59
>>645
> 自分でも、本やAPI仕様などで調べてみましたが

全部読めばいいと思う。
>>643

byte同士の足し算でも計算する時は両方ともintに拡大キャストされる。
で、そのままだbyteに代入するとコンパイルエラーになるからちゃんと動くようにするには

a = (byte)(a+b);

とかく。

ただしこれはCから受け継いだ性質。
そのへんのCコンパイラが普通warningで済ませてしまうところをerrorにして
厳密にチェックしてるだけ。

でもこの場合 a+=b; って書けるけどね。

(参考)
>一方のオペランドが型 double ならば,他方を double に変換する。
>そうでないときには,一方のオペランドが型 float ならば,他方を float に変換する。
>そうでないときには,一方のオペランドが型 long ならば,他方を long に変換する。
>そうでないときには,両オペランドを型 int に変換する。
ttp://www.y-adagio.com/public/standards/tr_javalang/5.doc.htm#170983
ちょっとまとめる.
Javaでは"式中"でchar,byte,shortを使用した場合,それぞれの値は"式の評価中"に自動的に整数に変換される.(整数拡張と言う)
これは"式の評価中のみ"でありコンパイラは変数の値を一時コピーして使用するので変数が物理的に大きくなる事は無い.
自動整数拡張の後コンパイラは最も大きなオペランドの型に合わせて他のオペランドを変換する.(型拡張と言う)
これは"1つの演算"ごとに行われる.型の強さは以下の通り

double>float>long>int(doubleオペランドとfloatオペランドが存在する時はdoubleオペランドに合わせられる.

----------------------------------
byte b = (byte)(a + 1);
(a + 1)の評価はint型になるので型変換は必要.(なかったらコンパイルエラー)

byte a = 1;
これは型変換の必要は無いようだ.
byte b = a;
これも必要無いようだ.

値代入のみならば整数拡張は無いと思われる.
あら先に書かれてしまった. < a = a+1は型変換必要だがa++なら必要無し
さっき発見してどうしてか聞こうと思ったんだけど.
651デフォルトの名無しさん:01/12/06 17:03
どっかで古い JDK 落とせません?1.1あたり
652デフォルトの名無しさん:01/12/06 17:09
653デフォルトの名無しさん:01/12/06 17:19
>>652
残ってるんだ ありがとうございます。助かります。
654デフォルトの名無しさん:01/12/06 20:29
継承って一つずつしかできないのでしょうか?
class Ko extends Canvas,Frame{
みたいな感じで2つ継承したいのですが。
655654:01/12/06 20:41
こういうのって多重継承って言うのでしょうか?
検索してみたらどうも駄目っぽいんですけれど。
656©:01/12/06 20:41
>>654
Java には多重継承が無いけど、それが必要なときは inner クラスを使えば
きれいに設計できるよ。

> class Ko extends Canvas,Frame{

でも多分君がやりたいことは別だろうけど...
なぜ Canvas と Frame を同時に継承したいんだ?
657574:01/12/06 20:42
それは、あれだよ、ほら
継承するとOOっぽいじゃん
658デフォルトの名無しさん:01/12/06 20:43
こんちは、
java scriptなのですが、
入力フォームでエンターキーで関数にとばしたいのです。

<form name="myForm"onsubmit="refresh()">
<input type="text" size="2" name="ticker" >

ENTERキーによりonsubmit...でticker変数を扱うrefresh()関数へとばしたいのです。
ボタンは使いません。
上記のコードではうまく動作しないので、詳しいかた教えて。thanks
履歴書にjava使ってるって書くと、
こういう質問くるんだろうね。
鬱だ
660658:01/12/06 20:47
いやjavaとscriptの違いくらい知ってる。>659
661654:01/12/06 20:49
>>656こういう風にダイアログでファイル読み込みをするのと、絵を描くのを同時にしたいからなので。
何かいい方法ありますか?これだとFileDialogのほうが解釈処理されないのです。
class MyCanvas extends Canvas{
public void paint(Graphics g){
Color color;
color = Color.green;
float ii[];
ii = new float[10000];
try {
FileDialog fd = new FileDialog(this,"Select Text File.",FileDialog.LOAD);
fd.setVisible(true);
String fname = fd.getDirectory() + fd.getFile();
fr.close();
} catch(Exception e) {
System.out.println(e);
}
662 ◆RubyOmS2 :01/12/06 20:49
>>658
Java != JavaScript;
です。
スレ違いかつ板違い。
Web制作板にいきましょう。
663デフォルトの名無しさん:01/12/06 20:54
664574:01/12/06 20:55
典型的なダメ継承だね

javaはよくしらんのでだれか突っ込んであげて
665658:01/12/06 20:57
>662だからしってるって。
663 ありがとう、とにかく失敬
>>661
paint の中で FileDialog を呼ぶその設計は、
根本から間違ってる気がする。
667©:01/12/06 21:00
>>661
その場合、this ではなく、this (Canvas) を管理している Frame を探す。普通は AWT
コンポーネントツリーのルートコンテナが Frame だから:

Container root = this.getParent();
while(root.getParent() != null){
  root = root.getParent();
}
FileDialog dlg = new FileDialog((Frame)root, ...);

っていうか、これをするために Frame を継承しようとするのは間違い。
javaよくしらんのだけど、

xxが間違っている
よりは
xxしろ
xx読め
の方が効果的だね。

設計がおかしいんで、とりあえず、
javaでやるならこうしろって例を挙げよーん
669デフォルトの名無しさん:01/12/06 21:18
>>668
それは別のスレでやってくれ!

ここはネタ心者スレだ
javaはよくしらんがその通りだった。
671654:01/12/06 21:30
>>667
ありがとうございます。おかげでなんとかなりそうです。
>>668
そーなんだけど、paint メソッドの間違った理解を正すのは、めちゃめちゃ長い説明が要りそうで鬱。

>>661
とりあえず、paint では描くだけにして、ほかの処理(FileDialogとか)は別の所に移しなさい。
673574:01/12/06 21:38
javaをよくしらないんだけどさ

J2EEをあの後調べようと思ったわけよ。

でもさ
http://java.sun.com/j2ee/j2sdkee/ja/
とかみるとなんかメニューが化けてんのよ。

sunのサイトをIEで見に行こうってのが間違ってるんだろうけどさ、
「表示」「エンコード」「日本語(自動選択)」にするとさ
メニューが出る替わりに本文が化けるわけよ。

なんかこう、Sunは日本人に本当にJ2EE使ってもらいたいのかって
思うんだよ。
JavaOne横浜でやってもさ
興味を持って、さー、おじさんJavaやるぞー
とかいうひとをさ、舐めてるような気がするんだよね。

で、まだJ2EEがなんなのかよくわかんないんだけどさ
この憤りをなんとかしてくれよ
674デフォルトの名無しさん:01/12/06 21:40
質問です。
クラスAをクラスBに継承させ、さらに
クラスBをクラスAに継承させてJAVAの六道輪廻から解脱したいのですが
どうやれば良いのですか?
>>667,671
ぜってー意味分かってないと思うんだけどどうよ。何とかなりそうです、だぜ。
676べんきょうちゅう:01/12/06 21:49
ごめんなさい。教えてください。
イベントマスクってなんですか???

わかんないよーシクシク
javaしらないんだけどさ、

>>676
それってこのスレで聞くことなの?
678べんきょうちゅう:01/12/06 21:57
>677
わかんない。
書き込んでからよくみたらネタと書いてあった・・・違うのかぁ。
がんばって調べます(涙)
679煽りじゃねえYO:01/12/06 22:58
>>654
あんたは継承禁止。全部委譲でやれ。
やり方ワカランなら「委譲、Composition、delgete」
などで検索しろ。
680デフォルトの名無しさん:01/12/06 23:24
>>673
java 知らないっていうか、コンピュータ知らないんじゃない?

フレーム右は EUC になってて、左は JIS なのね。
で、フレームごとに漢字コード決められないからどちらかが化ける。
>>680
だから、何でそんなことになってんだYO!
っていう話じゃない?
いや、おれがしらないのはjavaのほうなんだが

>>680
つまり、SunはJ2EEのページをだね、
日本人に読ます気があるのかどうか問いたいわけよ。

たぶん、君たちがMSのサイトかなんかを開いててね、
どっちか片方だ化けてたりしたら、やっぱり、
同じように憤りを感じると思うのよ。

まあ、文字化けのことはここで聞いてもしょうがないんだけどね、
いやもう、J2EEってなんなのよ。
683デフォルトの名無しさん:01/12/06 23:47
>>681
>>682

なぜ、 sun に言わないの?言って直してもらえば終わりじゃん。
いやほんとにおれjavaもSunもよくしらないんだけど

>>683
Sunにメール出すのはいいんだけどさ、
メールを出して返事を待ってる間に、
J2EEなんてどうでもいいやって気持ちになると思うんだよね。

オレ飽きっぽいのよ。

で、飽きっぽいオレ様がせっかくJavaの総本山にいったのにね
文字化けですよ。

もうなんか、モチベーションの維持は無理ですよ。
もうJavaはどうでもよくなってきたんだけどさ

一応Sunにメールだしとくよ。
文字化けですよって。
ついでJ2EEについても聞こうかと思うけど、
メールを受け取った担当者が困っちゃうと思うから
やめとくよ。
686654:01/12/07 00:05
何とか動くようにはなったのですが、カレントディレクトリのファイルを読み込むのには問題ないのですが
それ以外のディレクトリのファイルを読み込もうとするとまたダイアログが開いてグラフが表示できません。
どうすればよいのでしょうか?
class MyCanvas extends Canvas {
public void paint(Graphics g){
Color color;
color = Color.green;
try {
Container root = this.getParent();
while(root.getParent() != null){
root = root.getParent();
}
FileDialog fd = new FileDialog((Frame)root,"Select Text File.",FileDialog.LOAD);
fd.setVisible(true);
String fname = fd.getDirectory() + fd.getFile();
System.out.println(fname);
File fil = new File(fname);
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;
687デフォルトの名無しさん:01/12/07 00:12
Vectorクラスを継承して、ガンガン詰め込んだものを
ランダムな順番で取り出していける、そんな
麻雀牌を洗牌するような感覚のクラスを
作ってみようと思うんだけど、どう?

あったらいいなと皆が考えるメソッド募集!
>>686
とりあえず、paint では描くだけにして、ほかの処理(FileDialogとか)は別の所に移しなさい。
>>687
void insert(Object o);
Iterator iterator();
とりあえずこれだけあれば充分かと
690689:01/12/07 00:17
あ、Vector継承するのか。それじゃあ
void randomShuffle();
ってメソッドがあればいいんじゃないかな。
691デフォルトの名無しさん:01/12/07 00:19
>>690
冷静に考えたらそれだけで十分だね・・・

どのくらい念入りにシャッフルするか、とかの概念を
導入したらおもしろいかな?
>>687
Excelファイルを自由に操作できるAPIくれ。
隅から隅まで弄れるやつ。
それがあれば、帳票出力で苦労せんですむんだが。
693いい加減にしろYO!:01/12/07 00:29
>>654
だから、paintメソッドは、画面が再描画されるたびに
必ず呼ばれるから、そんなところでダイアログのインスタンス
作るメソッド置いたら、Window動かしたりリサイズしたり、
前後が入れ替わったり、最小化解除したり、そんいった
イベントが起きるたびに新しいダイアログができるぞ。
そんなあほな事がしたいのかYO!お前はYO!あほ!
javaまだよくわからないんだ

たぶんオレ654とおなじくらいあほなんだけどね、
J2EEでWEB+データベース連携をやろうって時にね、
どういうのになるのかな。

JDBCを使えば外のデータベースエンジンを使えるらしいけど
それを使わずに、ナニカ作れるの?ってこと何だけどどう?

むかつくSunの解説ページからはXMLでなんたらかんたらってとこに
リンクが貼ってあったんでね、標準でXMLベースのデータストレージ
は付く得るんじゃないかと思うんだけどね。
RDB用途を、J2EEでやるときって、標準とか、で・ファクトスタンダードて
あるの?
>>684-685
文字化け程度でモチベーション下がるなら VB から出ないほうが良いのではと思う。マジデ。
>>695
禿同
Javaには 今後もっとモチベーション下がることが次々とある
マゾッ気があるとか言語オタクとか以外は
無理して苦労することないよ
javaわからないんだよ。もう、ほんと。

>>695-696
オレもそう思うんだけどさ。
Javaでやった方が楽になる仕事ってのもあるわけでしょ。

その辺の見極めくらいはしておきたいし、
なんか仕事立ち上げるなら、さくっとプロトタイプくらいは
作れるようにしときたいのよ。

で、Javaの本でも一冊買ってやろうかとか思ったんだけどね
体系的なこと書いてある本がみあたらないし、
言語仕様を明確にずばっと書いた本もないし、
古い版の入門書ばかりでげんなりしてたところなのよ。

J2EEの本がね、なんかまともそうだったんだけど、
つまりそれが、最初に読むべき本なのかどうか、困ってるの。
なんとなくあちこち見てるうちに、結局、コレでいいって
見当が付いたんだけどね。

たださあ、J2EEで結局なにができるのか、わからんのよ。
期待してたのと違うなら、本を買うのもばからしいのよ。
一体、なんなのあれ。
>>697
J2EEは、J2SEをつかって、プログラマが手抜きをして
(その業務ごとに本当にしなければいけないロジック
の作りこみ以外は、殆どなにもしなくていいようにして
ある)Webシステムが構築できるように周りを作りこん
でおいたもの、という説明でいいでしょうか。
>>698
javaまだよくわからんけど、ありがとう。

ちなみに、>>694で聞いてる点についてはいかがでしょうか?
>>699
ないです。

が、RelaxとかJAXBとかいうやつでXMLテキスト←→Java
オブジェクトインスタンス/クラスのマッピングを自動的に
やることができるようになりそうなので、それを使って自力
で、という手もあるかと。
>>697
>体系的なこと書いてある本がみあたらないし、
>言語仕様を明確にずばっと書いた本もないし、
これはJavaに限りませんね :)
このスレではじめて欲しい答えが返ってきました。
北斗の拳の第二話で水をもらって感謝する老人のような気持ちでいっぱいです。
ありがとう。

たしかにRelaxというキーワードが出てきていました。

ただー、想像するに、従来用途のDBから置き換えて使うには
非常に不便で非効率なやり方ですね。
RDBを操作するならJDBCを使う、という認識でよいですね?
>>702
そのとおりです。というか、Javaに限らず更新・条件検索
参照とかを整然とミスなく自動的にやってくれる安価?な
ストレージシステムなんていうので、RDBMS以上のものは
未だにないでしょ、どこいったって。

だから、インピーダンスミスマッチを我慢しながら、みんな
一生懸命RDBMS使ってるわけさね。
なんかうざい雑魚がでてきたので去ります。

死ぬ思いで村のために運んできた種はむだになっちゃうけど、
最後にJavaがチョビット分かった気がします。
ではじじいは死にます。さようなら。
>>698の説明は、J2SE1.2までの話ね。
J2SE1.3は統合システム構築っぽいこと
が劇的にいろいろできるようになるYO。
>>687
Vectorを継承して作るのは止めた方がよくない?
なんか、麻雀パイ以外の点棒とか、ライターとかまで突っ込めちゃうよね。
数の制限もかからないし。

なんでjava.util.StackはVectorを継承して作ってるんだろ…。
707デフォルトの名無しさん:01/12/07 02:21
>>706
じゃあ、どんなObjectでも突っ込める、ってんじゃなくて
突っ込める種類を生成時に限定できるようにしようか。

麻雀だけじゃなくトランプや花札といったカード系ゲームの
シャッフル&引き に使えるものにしたい。
708デフォルトの名無しさん:01/12/07 02:26
>>707
Genericプログラミングはまだできないと思うが。JDK1.5〜。

なんかのInterface専用ということでWrapするくらいしかでき
ないと思うぞ。

interface Element{}

public class ElementList{
 private List list = new ArrayList();
 public Element get(index i){return (Element)list.get();}
 public void add(Element ele){lis.add(ele);}
}

こんな感じかな?
>>707
カード系ゲームのシャッフル&ディールかぁ…。

牌とかカードの配列を渡すと、その中身をシャッフルして返してくれる
様なディーラークラスを作るとか。

Dealer d = new Dealer(new Card[52]);
d.シャッフル();
Card c = d.配る();

とか。
…なんか変か。
>>709
動物クラスから犬クラスを派生させるみたいな、
陳腐な現実模倣主義を信じるな。
単純に、データとそれを扱う関数で考えよ。
711 :01/12/07 04:29
話しが少しそれるが、
Java覚えたての人って、無理してまで継承を使おうとする傾向があると思う。
君らの周りにもそういう人いるでしょ?
昔から、その手のたぐいはいる。
無意味にトリッキーなコード書いて、
優越感に浸ってるやつとか。
713707:01/12/07 04:51
カード系の場合、乱数で一定範囲内から取り出す
ようなアルゴリズムだとカードの出現確率が現実の確率
と異なる場合が多いのでどうしようかと考えたときに
思いついたのがディーラーclassなわけで。

例えば、ランダムにカードを取り出すのも、取り出せば
もうそのカードは次回から当然選ばれないわけで、
でもそういうの重複チェックなんかもいちいち書くのは
面倒なわけで。
>>710
現実模倣でいいじゃん。お客さんから設計者、開発者、PM、運用者等、みんなで設計のモデルを
共有できるから、かなりメリットあるよ。逆に○○ハンドラーとか××プロシジャみたいなクラスが
中心の設計を見ると萎えるね。まず、お客さんが聞いてくれないので後でたいてい要件定義漏れが
出る、障害の説明しても上がよく分からんから「で、いつ直るんだ」の一言になる、など等。
設計の鉄則が KISS だというのも昔から変わらんよ。

>>711
言い古されているけど:

 「A は B である」が成り立つなら「継承 (class A extends B)」。
 「A は B を持つ」が成り立つなら「Composite」。
 「A は B の一部を構成する」が成り立つなら「A を B の inner クラス」。 ← 我流:チョット語弊がある

かな。俺は要件とオブジェクトの定義をむちゃくちゃ大事にした設計をするが、やっぱりこれやらんと
数百人規模の開発はムリだ。○○ハンドラーとか使うと、たいてい各社がそれぞれ俺様システムを
作り始める (藁
>>714
学生発見
>>715 コボラーですか?
717707:01/12/07 05:10
構想としては大体こんな感じを考えてます。

コンストラクタ
Dealer(Object[] card) cardで表されたカード列を持ったディーラーを生成

追加メソッド
Object deal() 一枚カードを引く。
void shuffle() シャッフルする。残り枚数をクリア。
void sort() ソートする。(生成時のならびにもどす) 残り枚数をクリア。
int talon() 残り枚数を返す。

という感じで、シャッフルまたはソートしたらもう一度一枚目から
引けるようにする・・・と。
これならわりとなんにでも使えるんじゃないかな・・・と。
>>716
なんか低レベルな争いだな。
ジャバラーの多くは、元ブビ厨とコボラーだろ。
仲良くやれよ。
719714:01/12/07 05:17
>>171
ちょうど良いと思う (凝ったらきりがないんで)。どうせならスレッドセーフにして強固な
ブラックボックス作ってよ。
トランプクラスや麻雀クラスに、
委譲でシャッフルクラスを実装するなら、
ジェネリックプログラミングが必要なんだよ。
721707:01/12/07 05:27
>>719
で、ついでに質問なんですが、
カードのソート時、汎用的にするためにはどうしたらいいと思いますか?

自分の考えとしては、cardのクラス(麻雀牌かトランプかはしらない)
のhashCode()をオーバーロードしてソート用の値を返してもらうよう
にして、それをもとにソートするようにしたらいいかなぁ と思うんです。
722707:01/12/07 05:35
>>720
>>717の考えではだめですか?
ジェネリックプログラミングに一応なってると思うんですけど・・・

シャッフルの実装はどうするかまだ考えてませんが
このあたりは昔アルゴリズム辞典でランダムな順列を
得る手法を見たことがあるのでそれをパクろうと思ってます。
723707:01/12/07 05:45
>>721 補足
まあトランプや麻雀でソートなんてまず使わないだろうから
あんまり気にすることもないとは思いますが。

>>722 補足
今手元にある本を見たらN枚のカードを O(2N) でシャッフル可能
な便利なアルゴリズムがありました。なんかサクッと出来そうかな?
ジェネリックだと面倒だろ。
カードにしか使わないなら、
素直にカードクラスにシャッフルメソッド実装しろ。
麻雀にも使うことが、今わかってないなら、
汎用性を気にしすぎるな。
725707:01/12/07 05:58
>>724
カードクラスにシャッフルメソッドを実装する、ということは
この場合どういうことでしょうか?

トランプなら、カードクラスにはメンバ変数にスートとシーケンスのみ
麻雀なら、牌クラスには牌種(と数字)のみを保持する
という感じのただのデータクラスをイメージしてました。
(そしてそれをディーラーからひとつずつもらう)

当然、これだとシャッフルメソッドを実装しようもないです。
カードを捨てるメソッドは、どこにあるんだ。
おい、714。
俺はそろそろ逝くから、続きはおまえ流に説明してやれ。
728707:01/12/07 06:12
>>726
ありません。
単純に、カードをランダムに配るだけのイメージです。
手札や場の管理はしません。

クイズゲームかなんかで重複無く問題を出すような
そういう場面にも使えると思います。
729707:01/12/07 06:49
>>726
もしかして、牌やカードに
「今誰それの手札にある」とか「場に捨てられてる」とかの
そういった状態を持たせよ、と言っているのですか?
だとしたら、それは設計悪いですよね・・・
714 は逃げたのか?
カードオブジェクトは、ディーラーやプレーヤー毎に持つ。
シャッフル等のカード操作は、カードオブジェクトが行う。
>>684
>>685
来んな!
背牌ていどのことでなぜこれだけ議論しなきゃいかんのよ

Java厨はこんなもんなのか?
>732
730が正しい。他の2人?がアホなだけ。
734デフォルトの名無しさん:01/12/07 09:27
「static でない 変数 this を static コンテキストから参照することはできません」とエラーが出ます。
調べてみたらFileDialogのカッコの中にはFrame parentを書くらしいですが、それが何なのかよくわかりません。
カッコの中にはなにを書けばよいのでしょうか。
public class Zu2 extends Frame{
static FileDialog fd;
static String fname;
public static void main(String args[]){
JFrame fr = new JFrame(""); // ウインドウの生成(タイトル)
fr.setSize(500, 500); /* 大きさの設定 */
fr.setLocation(0,0); /* 位置の設定 */
MyCanvas cv = new MyCanvas(); /* キャンバスの生成 */
Container c = fr.getContentPane();
Button b1 = new Button("ファイルを開く");
c.setLayout(null);
c.add(b1);
c.add(cv);
b1.setBounds(380,400,100,50);
cv.setBounds(0,0,500,400);
fr.show(); /* ウインドウの表示 */
fr.setDefaultCloseOperation(fr.EXIT_ON_CLOSE);//クローズしたら終了
myListener1 m1 = new myListener1();
b1.addActionListener(m1);
try {
fd = new FileDialog(this,"Select Text File.",FileDialog.LOAD);
fd.setVisible(true);
fname = fd.getDirectory() + fd.getFile();
}catch(Exception e){}
}
}
735735:01/12/07 09:37
parentはダイアログの所有者と書いてあるのですが、だったらthisでもいい気がするのですが。
例を見たらたいていthisを使っているし。
>>733
「シャッフル等のカード操作は、カードオブジェクトが行う。」
ってのが正しい?ほんと?
カードって一枚単位じゃないの?
一枚でシャッフル?
相変わらずJavaは難しくていまいち把握できないのですが、復帰します。

>>705
ありがとうございます。
1.2と1.3の違いはEJBが使えるようになって分散技術が手軽に使えるように
なった、ってことくらいしか読みとれませんでした。

統合システム構築というのが一体何を指しているのか、
J2SEというのはなんなのか、J2EEとは何が違うのか、
また疑問が増えてしまいましたが、とりあえず、WEBを読んでみます。
>>734
この場合のthisってなんだか分かってる?
その辺を勉強し直した方がよさそう。
739734:01/12/07 09:45
>>738
thisはZu2クラスだと思いますが
740デフォルトの名無しさん:01/12/07 09:47
class ThreadList(int, Vector)

for (int i=0; i<3; i++) {
 Vector list1 = new Vector();
 for (int j=0; j<3; j++) {
  Vector list2 = new Vector();
  //List2に詰め込む(省略
 }
  list1.addElement(new ThreadList(i, list2) );
}

Vector型を引数に持つThreadListをさらにVectorに突っ込みたい
んですけど、list2が参照で渡されてる(ですよね?)ので書き換えられて
うまくいきません。list2をThreadListに渡すときにnew出来ればいいのかな?
って思ったんですが・・・、わかんねーっす。
Javaがよく分からないものです。

昨晩送った文字化けむかつくメールの返事が来ました。

あんたはJ2SDKEE 1.2のページを見てるよ。
J2SDKEE 1.3のぺーじをみなさいよ、と言われました。

J2SDKEE というまたよく分からないキーワードの登場です。
馬鹿にしてるとしか思えないのですが、とりあえずWEBページを読んでみます。

ここまでくると略語に意味を見いだせません。
なんとなく、略語は読み飛ばしてバージョンっぽい番号だけ読んでいれば
いいんじゃないかという気もしてきました。

ちなみに、あんまりEEとかついてると、昔のE電を思い出します。
あっという間に廃れて呼ばれなくなってしまいましたね。

ではでは
>>739
で、ファイルダイアログの引数に渡す親ってのは、
そのダイアログが出てる間殺しておきたい親を指定すべき
なんだけど、この場合の親ってのは
JFrame fr = new JFrame("");
って作ったfrになるべきなのは分かる?

わかんなきゃ、何か本を買うべき。
>>739
クラスとインスタンスの意味がわかっていないに10カノッサ。
744734:01/12/07 09:54
>>742
ああ、なるほど。サンクス。
javaが良く分からないというよりも・・・

センスないんじゃない?
746 :01/12/07 10:15
>>734
君は毎回自分のコードをまるまるコピペしてくるけど、
せめて問題を再現するための最小のコードをUPしなよ。
ちゃんとインデントも付けてさ。
あとstaticにthisを参照って、自分が何やってるか理解してる?
よく考えな。

>>740
何が何やらさっぱり分からんコードだが。
747java厨:01/12/07 10:23
今JDBC使ってWEBAP開発中なんですけど、
あるtable(RDBのね)のアクセサークラス(aa)を定義して
ResultSet rs = aa.getResultset();
なんてやった後、外でrs弄りたいんだけど…
実はgetResultset()の中で、テンポラリに
Statement stmt = conn.createStatement();なんて
やって、それから取得したrsなわけです…。
問題は、stmt.close()をそこから出るときに出来ないな〜
ってことなんですが・・・

意味わかりますよね?

やっぱ、rsをそのまま返すという設計が良くない?
別のObjectに内容をコピーして、それを返すべきなのかな?
(ちゃんとstmt.close()して…)
748java厨:01/12/07 10:43
レスつかない・・・
上の例は分かりにくいですね
aa.getResultSet()じゃなんだから、
ResultSet rs = aa.selectHogeHage( hogeHageGroupID )

とかにしときます。
749javaむぎ茶:01/12/07 11:01
>>747
Statement と ResultSet を Composit した Class 作って
返すのは?
Pair で使うもんだし
750java厨:01/12/07 11:06
Statementはガベージコレクトされる時にcloseされるってリファレンスには
書いてあるけど、上記の例だといつそれが行われるのでしょう…
外でrs.close()した後?

実際メソッドを出たあとrsはいじれてるので、関数を出た後では
(rsを介して暗黙の参照はされてるから?)
それは行われていないようです…

わからない…誰か教えてください
751java厨:01/12/07 11:10
>>749
成る程…
Compositとは目から鱗でした…。
やっぱ、まだ慣れてないや…

ありがとうございます>>749
>>750
ガベージコレクトはメモリヒープに余裕がある限り一生行われない
可能性もある。

xxx.close()とかxxx.dispose()とか
メモリと直接関係ない資源の後始末は
必ず明示的に行わないといけない。
finaliyブロックを活用すると幸せになれるかも。

finalize()に定義されている後始末は
安全装置のような物なので頼るべきではない。

#Win98,MeなどでGUI関係のdispose()を怠るとリソース不足で
#メモリヒープに余裕があるのに(メモリが足りません)
#といわれてシャレにならないぞ。
>>745
ジャアアンタアノサイトヲヨンダダケデゼンブワカルンダ(゚д゚)
754デフォルトの名無しさん:01/12/07 11:42
ファイルをダイアログから読み込んだら再描画されるようにソースを書いたのですが、
画面を動かしたりしないと再描画されません。どうすればよいのでしょうか?
class MyCanvas extends Canvas{
public void paint(Graphics g){〜〜〜〜
}
class myListener1 implements ActionListener {
public void actionPerformed(ActionEvent ae) {
try {
Zu3.fd = new FileDialog(Zu3.fr,"Select Text File.",FileDialog.LOAD);
Zu3.fd.setVisible(true);
Zu3.fname = Zu3.fd.getDirectory() + Zu3.fd.getFile();
MyCanvas canvas = new MyCanvas();
canvas.repaint();
}catch(Exception e){}
}
}
755754:01/12/07 11:43
あ、括弧が一つ足りなかったです。正しくはこうです
class MyCanvas extends Canvas{
public void paint(Graphics g){〜〜〜〜 }
}
class myListener1 implements ActionListener {
public void actionPerformed(ActionEvent ae) {
try {
Zu3.fd = new FileDialog(Zu3.fr,"Select Text File.",FileDialog.LOAD);
Zu3.fd.setVisible(true);
Zu3.fname = Zu3.fd.getDirectory() + Zu3.fd.getFile();
MyCanvas canvas = new MyCanvas();
canvas.repaint();
}catch(Exception e){}
}
}
>>754
下から4行目。
canvas.repaint();
ってやってんのは、あなたが再描画したいCanvasとは別だと
思うがどうか。
757754:01/12/07 12:06
>>756
myListener1クラスを内部クラスにしてみたのですが、これでも駄目です。
Canvasはこれであっていると思うのですが。アドバイスをお願いします。
class MyCanvas extends Canvas{
public void paint(Graphics g){〜〜〜}
class myListener1 implements ActionListener {
public void actionPerformed(ActionEvent ae) {
try {
Zu3.fd = new FileDialog(Zu3.fr,"Select Text File.",FileDialog.LOAD);
Zu3.fd.setVisible(true);
Zu3.fname = Zu3.fd.getDirectory() + Zu3.fd.getFile();
repaint();
}catch(Exception e){}
}
}
}
758740:01/12/07 12:38
>>740 ですが、分かりにくいですか・・・。
shainっていうクラスと
bushoっていうクラスがあって、部署ごとに社員をVectorでまとめて(内側のループ)
でいくつかある部署をVectorでまとめる。
bushoクラスは、部署名とVectorでまとめた社員を引数に持つって感じです。

bushoクラスのメンバーに社員のVectorでも作る方がいいのかな・・・。
オブジェクト指向難いです。
>>757
再描画されないんじゃなくて、ファイルダイアログが出せないだけだったりしない?
>>757
import java.awt.*;
import java.awt.event.*;

class MyCanvas extends Canvas{

public void paint(Graphics g) {
System.out.println("repaint");
}

public static void main(String[] args) {
Frame f = new Frame();
Button b = new Button("Click");
MyCanvas c = new MyCanvas();
f.add(c,BorderLayout.CENTER);
f.add(b,BorderLayout.NORTH);
b.addActionListener(new myListener1(f,c));
f.setSize(100,100);
f.show();
}

}

class myListener1 implements ActionListener
{
Frame f;
Canvas c;
FileDialog fd;

myListener1(Frame f,Canvas c) {
this.fd = new FileDialog(f,"Select Text File.",FileDialog.LOAD);
this.f = f;
this.c = c;
}

public void actionPerformed(ActionEvent ae) {
try {
fd.setVisible(true);
c.repaint();
} catch(Exception e) {}
}
}
なんか変なコードになっちゃったけど、ダイアログ出すだけ
ならこんなんでもいいんじゃないの?
761754:01/12/07 12:52
>>759
いや、ダイアログは出せます。
ダイアログで選択したファイルを読み込んだ後、再描写されないんです。
一度画面を最小化したりすると、読み込んだファイルが再描写されます。
762754:01/12/07 12:59
>>760
ダイアログで数値がいくつか書かれたテキストファイルを読み込んでグラフを描かせたいのです。
763754:01/12/07 13:04
paintメソッドの中身はこんな感じです。
public void paint(Graphics g){

Zu1.color = Color.green;
try {
Container root = this.getParent();
while(root.getParent() != null){
root = root.getParent();
}
FileDialog fd;
fd = new FileDialog((Frame)root,"Select Text File.",FileDialog.LOAD);
fd.setVisible(true);
String fname = fd.getDirectory() + fd.getFile();
System.out.println(fname);
File fil = new File(fname);
FileReader filFR = new FileReader(fil);
BufferedReader filBR = new BufferedReader(filFR);
StringTokenizer filST;
for(int i=0; i<132; i++){
String filS = new String(filBR.readLine());
if(i==0){//一行目は描かない
continue;
}
filS = new String(filBR.readLine());
filST = new StringTokenizer(filS);
float freq,z,ang,rz,iz;
freq = Float.parseFloat(filST.nextToken());
z = Float.parseFloat(filST.nextToken());
ang = Float.parseFloat(filST.nextToken());
rz = Float.parseFloat(filST.nextToken());
iz = Float.parseFloat(filST.nextToken());
int rzi = (int)rz;
int izi = (int)iz;
g.setColor(Zu1.color);
g.fillRect(rzi-2,-izi*10-2,4,4);
}
}catch(Exception e){}
}
>>763
えっと、描画する中身はどうでもいいんだけど、多分repaintを呼ぶタイミングが
おかしいだけじゃない?
俺の書いたソース読んでくれた?
765714:01/12/07 13:30
>>721
>>>719
> で、ついでに質問なんですが、
> カードのソート時、汎用的にするためにはどうしたらいいと思いますか?
あれ以上柔軟性を持たせるならカードクラスかインターフェースを導入したほうがいい。
といってもカードをインターフェースにする必要もないかも。
そもそも hashCode() は意味が違うし。

>>730
>714 は逃げたのか?
そんなにあせるなよ (藁

> カードオブジェクトは、ディーラーやプレーヤー毎に持つ。
これはいいんじゃないですか?

> シャッフル等のカード操作は、カードオブジェクトが行う。
あるカードが、場にある全カードの存在や状態を意識する設計になる。

ちゃんと設計するならもっと登場人物を洗い出してモデルをしっかりさせたほうが良い。
今、分かっているものを適当に上げてみると、こんなんか (まだ不十分だけど)。

場: このインスタンス上でゲームが行われる。だれの手にもないカードを持つ。
ディーラー: 場にあるカードのシャッフルと采配を行う (場にやらせても良い)。
カード: 1インスタンスが1枚のカードを表す。プロパティにマークと番号。
プレーヤー: カードを持つことが出来る。プロパティに名前とかチップとか?
ゲーム: ゲームのアルゴリズムを実装するインターフェース。
人?: ディーラーとプレーヤーのスーパークラス。カードを持つことが出来る。

場 has ディーラー×1, プレーヤー×N, カード×N, ゲーム×1
人 has カード×N

>>733
> 730が正しい。他の2人?がアホなだけ。
最後は自作自演かよ! (藁
766 :01/12/07 13:49
ソートはComparableとComparatorっつうのがあるよ。
767754:01/12/07 13:53
>>764
ありがとう。これを参考にやって見ます。
768デフォルトの名無しさん:01/12/07 14:40

すいませんが下記の Bug.java がなぜコンパイルできないのか教えてもらえますか?
http://home.impress.co.jp/books/javaHB/0501/Atom_ant.txt
Bug クラスが 閉じてないので最後に } を付加する必要はあります。

もっとはっきり言えば、「static でない 変数 crazyAnt を static コンテキストから参照
することはできません。」となぜなって、どこを修正すればいいのかなんですけど。
769768:01/12/07 14:44
>>768

public /* static */ void main(String args[])

としたら、、「static でない 変数 crazyAnt を static コンテキストから参照することはできません。」
はきえましたが、bug.i と crazyAnt.i あたりはおかしいみたい。
>>768
>bug.i と crazyAnt.i あたりはおかしいみたい。
Atom_ant に変数 i が宣言されていないから。

>public /* static */ void main(String args[])
そうした場合、どうやって実行するつもり?

コンパイルを通すことが目的ならそれでいいだろうけど。
771768:01/12/07 14:54
>>770
> Atom_ant に変数 i が宣言されていないから。

宣言が必要なんですか int i; を入れてみました。

> そうした場合、どうやって実行するつもり?

だめですよね?

どうやったらまともに動くんでしょうか?
>>771
どのように動く事を期待しているのかは、あなたしか知りません。
推測は出来ますが、わざわざそれをする気にはなりません。
「何をしたいか」
「自分はどうやっってみたか」
「その結果どうなったか」
ぐらいは書きましょうよ。
>>768-771
もうむちゃくちゃ
774770:01/12/07 15:12
>>773
俺もっ?!
775デフォルトの名無しさん:01/12/07 15:20
>>772
> どのように動く事を期待しているのかは、あなたしか知りません。

プログラム作った人しか知らないと思うけど?
776772:01/12/07 15:26
>>775
知らないと思うけど、なに?
>>776
772 はあたま悪いんじゃない?(w
>>776
その「けど」は、終助の「けど」だし・・・
注意: Java コンプレックスを持ったコボラーが迷い込んでいます。
780768:01/12/07 15:54

なんか荒れてますね。すいません。

>>772
> 「何をしたいか」

プログラムを覚えるために、本に書いてあるソースを入力し実行して経験を積んでいます。
このプログラムでクラスの使い方を習得できるようですが、このソースがなぜコンパイル
できないのか、なにが行われるのかはよくわかりません。

ただ、「There are 10 bugs here but only 1atom ant.」と出力されることとなっています。

> 「自分はどうやっってみたか」
> 「その結果どうなったか」

入力してコンパイルしました。なぜ動作しないのかがわからないので、修正する技術もあ
りません。
とりあえずその本のタイトルか著者名を晒せ
782768:01/12/07 16:04
>>781
David H.Friedel, Jr.、Anthony Potts 著
Javaプログラミングハンドブック

1998年の本です。
>>768 の Atom_ant.java って, Bug の部分はどうやって動作するんでしょう?
プログラムの一部に過ぎないような?
>>780
そのソースが「悪い例」でないのならもう一度うつし間違いがないかチェックしろ。
一字一句その本のソースと違いがないのならその本は捨てろ。
>>782
それは本に書かれたソースがまちがってるの?
それとも、あなたがアレンジしたソースがまちがってるの?

staticは理解してる?
もしstaticの意味を理解してないのなら、そこをまず理解してごらんなさい
あとcrazyAnt = new Atom_ant(); の部分は
Bugクラスのコンストラクタの中など、Bubクラスのメソッドのなかにいれなさい

あるいはオブジェクト変数crazyAntをstaticなオブジェクト変数にしてしまいなさい。
多分「このソースに10個のバグが入ってるから直してみな」という例題だと
思うのだが、正直君にはまだ早い。
>>784
これがうつし間違いレベルだというあなたは威張るべきじゃない。もっと勉強してから威張ったほうがいい。
788デフォルトの名無しさん:01/12/07 16:24
javaのなかからほかのアプリを実行するにはどうするのですか?
>>788
Runtime rt = Runtime.getRuntime();
rt.exec("notepad");
790768:01/12/07 16:29
>>786
そんな例題ではないです。

>>785
本に書かれたソースは、 >>768 に掲載されたリンク先のソースです。アレンジはしていません。
>>787「悪い例」だと予想していますがなにか?
792デフォルトの名無しさん:01/12/07 16:31
ネタにマジレス
java.util.Collections#shuffle(List)
793768:01/12/07 16:32
>>791
「悪い例」じゃないようです。
794デフォルトの名無しさん:01/12/07 16:32
javaの開発環境でフリーソフトでいいやつは何ですか?
ハズレタ、鬱だ詩嚢
796デフォルトの名無しさん:01/12/07 16:34
>>789
ありがとう
あんた神だ
797768:01/12/07 16:38
私のレベルに合った本はないでしょうか?
798707:01/12/07 16:44
>>792
あ・・・

というわけで、氏んできます。
799デフォルトの名無しさん:01/12/07 16:45
教えろごぁあああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
800デフォルトの名無しさん:01/12/07 16:49
javaからdosコマンドで
cdとかdirとかを実行するには
どうしたらいいんですか?
>>768
あなたは、その本を買ったのか?
ちょっと、その本のコードを全部打ち込んでアップしてみてくれないか?

>>768のリンク先に、あなたが打ち込んだソースは、
あなた自身が768で書いているように断片的なものでしかないよね?
802デフォルトの名無しさん:01/12/07 17:07
「XML/DOM」programming(秀和システム)
買ったんだけどこのサンプルプログラムまともに動いてない
これ何とかする方法おしえて
この中にね
swichのcase文の中に再起呼び出ししているのだけど
これがエラーだして次のcase文に続かない
ソースは長いんで(本の中にあるUDOM.java)
803768:01/12/07 17:08

本に書いてあるソースは同じものです。実行結果も書いてありますので、コンパイルして実行
できるものと思っていましたが、やっぱ、これは断片なんですね?

> >>768のリンク先に、あなたが打ち込んだソース

リンク先は出版元のサイトであって、リンク先に私が打ち込んだソースはありません。
>>802
スレ違い
>>768 下のページをよく読もうよ。
http://home.impress.co.jp/books/javaHB/
>* 現在、リスト5.1、5.6については、作業中です。
と書いてあるように、そのサイトにUPされているソースは不完全だ。
いや不完全であることは一目でわかるが。

サイトにたよらず自分でソースを打ち込んでみたら?
それでも動かなかったら、その本は捨てて結城の入門本からはじめてみたら?
>>803
いや、断片的もなにも、あなたが>>768で書いたように、
そもそも最後の}が書いてないし(汗)
807768:01/12/07 17:16
>>805
あっすいません 読み落としていました。

> サイトにたよらず自分でソースを打ち込んでみたら?

本にもこれしかないです。

というか、実行するためのソースではないと思って読み進めることにします。
808768:01/12/07 17:16
>>806
断片でした。
java よくわからないんですけど

768のソースは、 Atom_ant.java というファイル名で問題ないのですか?
>>809
2つのクラスを単一のファイルにするならば問題あり。

ところで君が悩んでる事は、あまりにも初歩の初歩なので
こんな所で質問するより、Javaの入門書を買って読んだ方が
絶対にお勧め。
>>809
Bug.java じゃないのかな?
>>810
「こんな方法もある」って悩んだだけなので、問題ありだっていうならいいや。
>>810
> Javaの入門書を買って読んだ方が絶対にお勧め。

Java 入門書には、正しいことは書かれているけど、
間違いまで説明してあることは少ないと思いますよ。
814768:01/12/07 17:58
>>810
>>797 でも書きましたけど、お勧めの入門書を教えてください。なお、演算子とか言葉の解説とか
そういう初歩的なことは少ないほうがいいです。
>>814
おいおい。そういうのは大事だぞ。
演算子の優先順位とかにも気を配った方がいいぞ。
816768:01/12/07 18:08
>>815
それはどの本にも出ています。この本にも出ていますし、他の言語でも使ってます。
初歩的なことがゼロじゃなくてもいいですが、本の半分がそれじゃ困るので・・・
817810:01/12/07 18:09
>>813
ファイル名のつけ方や、staticの意味や、あの程度の間違い例は書いてあるよ。
入門書さえちゃんと読んでれば、ああいう質問は出てこないはず。

>>814
俺はピアソンの「Javaプログラミングマスターコース上下」をお勧めする。
細かい事までネチネチとしつこく解説してるのが良いよ。電話帳みたいだけどね。
818デフォルトの名無しさん:01/12/07 18:11
Socketつないだマシンの文字コード取得する方法はないでしょうか?
>>818 Socket 繋がっただけじゃムリ。
>>818
Socketを利用して自分で書きなよ。
>>817
「間違ってる」と自分でわかる人なら別だが、初心者なら >>809 のような質問はでてくるだろ。
「間違いだよね?」と疑問を持たない人は、入門書をどんなに読んだってわからないままいる
だろう。
つうか、入門書を調べれば簡単に分かるような事を質問してくる奴には見込み無し。
自分で調べる気はナッシング?
>>768
ttp://home.impress.co.jp/books/javaHB/
↑ ここのリスト 5.1 と 5.2 は書きかけで、(>>783
ちゃんとコンパイルできるクラスは リスト 5.3 なんじゃないか?

(´Д`).。oO( 本の読み方くらい理解してくれ… )
>>823
すごいなお前。りっぱりっぱ!

俺には 5.1 と 5.3 は別ものに見えるよ。
825デフォルトの名無しさん:01/12/07 20:17
>>822
どの質問が入門書読めばわかることなの?
826デフォルトの名無しさん:01/12/07 20:20
>>823
5.2 もコンパイルできるよ。
827768:01/12/07 20:26
>>823
> (´Д`).。oO( 本の読み方くらい理解してくれ… )

本にはソースのあとに「実行結果はこうなります」と書いてあり、まるで実行できるように書いてあります。
>>822
ここは「ネタ心者歓迎」。
>>822
人に聞かないで自分で納得して失敗しているやつが うちの会社にはゴロゴロしてる。
気をつけろ!
プログラミング初心者の後輩に
Bruce EckelのThinking in Javaを読ませようと思ってるんだけど
これって新人いじめ?
>>830
いいんじゃない?
英語で読ませるのがいじめというならば「Javaプログラミングマスターコース上」を読ませる。

// 下は失敗だと思う。
Javaがちょびっとわかってきたんだけど

えっける、やはり読んでて眠いです。
K&Rの第一章が延々1000ページ続いてるような気分になります。
>>814
まさしく、Java言語プログラミングレッスン(下)だね。クラスとインスタンスから始まります。
で、それで難しかったら上巻に戻る。
>>832
本家を読んでる?
>>831
内容にくらべて4000円は高いらしい。
>>835
「Javaプログラミングマスターコース」って4000円もするんだぁ?
なら、Java言語プログラミングレッスンを上下そろえたほうがいいかもね。
Javaべつにもう、わからんでもいいかな

>>834
pdfのやつ。英語です。猛烈に眠いです。AcrobatReader、やっぱり使いづらいです。
本を延々読んでも時間の無駄だと思うけどなあ。
とりあえずプログラムを書いて分からなくなったら本を開く方が
モチベーションも維持できるし。
>>837
PDFのヤツってどこにあります? HTMLのヤツは知ってるんだけど
840デフォルトの名無しさん:01/12/07 21:59
Javaって(Javaに限ったことじゃないかもしれんけど)、同じこと
をやるのにいろんなアプローチがあるんだよね。

ところが無知蒙昧なアホは、最も間抜けな手段を選んで最も苦労する
道を強行突破して、最も保守性の低い実装にたどり着くんだよなあ。

で、苦労したもんだからJavaが嫌いになるのね。無知が原因なだけな
のに。アホか、と思うよ。
>>838
わからなくなったときどんな本を開いていますか?
842デフォルトの名無しさん:01/12/07 22:04
Jビルダー5をダウンロードしようとしたらマニュアルとあわせて
100メガくらいあるのですが。ふつうのダイアルアップなので
無理です。どこか他に手に入るところはありませんか?
雑誌とか本についているかも。
843デフォルトの名無しさん:01/12/07 22:08
Thinking in Java Eckel pdf
で検索スレ。
>>841
本じゃないのも多いけど。
APIリファレンス、JavaHouseのML、BlackBook、Javaの格言、
岩谷訳のSwing本、Java言語で学ぶデザインパターン
後はRMI、アプレット、サーブレットなど分野別に1,2冊ずつ。

「どのAPIを使えばいいか」「定石はないのか」を調べるのがメイン。
入門書はJavaへの道とか、例で学ぶJavaとか買ったけど
ただ読んでると眠くなるので読み終えることもなく捨てた。

俺の場合は他の言語の経験(C/C++)があるので、
Java に関しては構文覚えたりオブジェクト指向とは何かというのを飛ばせたのはあるけどね。
暗記するには量が膨大だから使って覚えるしかないと思う。
自分が作ろうとしているプログラムそのものについて書かれた本はないのだし。
あと質問ができる同僚/先輩がいると進みが早い(当たり前か)。
>>843
出てこないね
>>845
ほんとだ。
俺のもってるPDFは、じゃあ、いったいナニ?
847デフォルトの名無しさん:01/12/07 22:36
独断と偏見で選んだ
参考になると思ったWebドキュメントベスト3

1.Sunの各種チュートリアル+テクニカルTIPS。
 APIリファレンス見ただけじゃ絶対にわかりっこ
 ない技が、ここだけで幾つもあった。
2.JGuruのFAQ。
 英語だけど沢山。
3.IBMのDeveloperWorks。
 プロの人が書いてるから、深いネタが多い。

寒いと思ったWebドキュメントベスト3
1.最近のJavaHouse。
 言わずもがな。
2.@ITのJava関係。
 ミーハーな空気が漂っていて気色悪い。
3.ここ(藁
848 :01/12/07 22:38
>>845-846
これでしょ?googleで一発だったけど。
http://www.mindview.net/Books/TIJ/
>>848
あ、あったあった、これこれ。
会社用に落としとくよ
>>848
そこがでてきて、 PDF Version をクリックして、 HTML と word しか見えないんだけど?
851 :01/12/07 22:47
>>850
ミラーサイトがずらずらあるんだから、どこかに落ちてるんじゃない?
あああ、DL中に止まるし。
PDF Versionあるだろー。ちっこいけど
>>851
ミラーは、html版しかないんだよ。
854デフォルトの名無しさん:01/12/07 22:50
アクセス可能なスーパークラス内の
修飾子protectedにはどんな問題があるんでしょうか?
また、修飾子privateを使ってサブクラスから
スーパークラス内の変数を見えなくする利点に
ついて教えてくれませんか?
よろしくお願いします。
>>851
あるわけないじゃん
>>843
>>848
>>851
調べてから書いてるの?
857デフォルトの名無しさん:01/12/07 22:57
>>854
protectedだと、同じパッケージからはまる見え。
だから、フィールドがprotectedだと隠蔽が中途半端になる。
privateなら、そのクラス自身からしかアクセスできない。

ということで、フィールドは基本的にprivateにして、サブ
クラスでも利用したい場合は、protectedのセッター&ゲッター
を準備すべき。じゃなかったかな?
858851:01/12/07 23:20
>>853
んなことねー。有るよ。ってか俺は落とせた。
良く調べてみろ。

>>855
ハァ?? 何を根拠に? ってか有ったし
無責任な事を言わないようにネ。
859854:01/12/07 23:19
>>857
すばやい回答どうもです。
限定的に操作できるようにするということですよね。
ありがとうございました。
860851:01/12/07 23:24
しかし、無理してpdf落とすより素直にhtml版落としたほうが良いよ。
pdf版見づらい。
>>858
どこに PDF 版あるかおしえてもらえませんか?
>>858
んな PDFファイルの置き場所を知ってるくらいで自慢するなよ。うざってー
人に聞きまくったやつほどこういううぬぼれするよね。あなたがとは言わないが

>>861
http://web.pdx.edu/~suratman/ejb/books/Java/TIJ2.pdf
863851:01/12/07 23:47
>>860
印刷するわけにはいかないしねぇ。っていうか印刷するなら買ったほういい。(w
865851:01/12/07 23:51
>>862
>>855みたいにデマをまく方がウザいと思うが?
書籍に比べて PDF は検索できるところがいいね。あっHTMLでもDOCでも可能ですが・・・
867デフォルトの名無しさん:01/12/08 00:01
クラスファイルのパッケージ化の利点じゃなくて、
難点について分かる人いませんか?
最近このスレ、というか板全体が荒れてる...
>>867
俺はパッケージを増やせばpublicなクラスも増えるのが不満.
それ宿題?
>>869
俺は逆に1パッケージにたくさん放り込むとパッケージプライベートスコープの意味がなくなるのが不満。
それ宿題?
871867:01/12/08 00:13
>>869
すいません。宿題なんです。
スレ違いだったら申し訳ないんですけど、
JAVAの質問ができそうなスレがここしか見当たらなかったので。
教科書には利点しか書いてないんで質問しました。
>>871

例えばグループ作業している時に自分が管理しているクラスが増えたとして
管理の便宜上、別パッケージにまとめて置きたい時が有る。

しかし、別パッケージからはpublicなクラスしかアクセスできない。
となると他人からもアクセスが可能となってしまう。
だが他人には公開したくない。

って事があるよ。
873870:01/12/08 00:26
>>869 すげぇ、俺あんたの真似しただけだけど当たってるよ > 宿題 (藁

>>871
慣れた人がいないと「なんじゃこりゃ」というパッケージ構成になることもあるけど
(1 パッケージに 300 クラスとか)、だいたい俺は「一人の人間が頭の中で把握
出来る程度に細分化した機能単位」を 1 パッケージの基準にして、大体一人
1〜3 パッケージを担当分にしてる。特に難しいことはない。
874872:01/12/08 00:29
>>872
しかしこれは現行のJavaへの不満なだけで、パッケージの難点ってわけでもないか。
875867:01/12/08 00:44
みなさん、回答してくれて本当にどうもありがとうございます。
なんか書き込みを見てると特に問題点もないような気もしてくるんですが。
他の人に見られたくない物も見えてしまう事があるのは問題かもしれないですね。
でもセキュリティの問題もあるし、1つのプロジェクトにいる場合は当然なのかも。
実際に働いている人の意見が聞けるというのも僕にとっては貴重な体験です。

>>872
立て続けに同じ事を言われたのでかなりあせりました。
まさかいきなり叩かれてるんじゃないかって。
でも皆さん親切なのでよかったです。
876デフォルトの名無しさん:01/12/08 01:40
>>765
おい 714、おまえ現実を模倣しなきゃならんと言う、悪しきOOの概念に
縛られすぎなんだよ。
動物クラスから猫クラス派生させて、OO最高って喜んでた口だろ。

まず基本は、データとそれを処理する関数なんだよ。これを忘れるな。
現実世界では、シャッフルするのはディーラーだが、
プログラム時は、ディーラークラスはカードオブジェクトの
シャッフルメソッドを呼ぶだけで、自分でシャッフルする必要はない。

ディーラークラスはまず、全てのカードでカードオブジェクトを初期化する。
その後、カードオブジェクトのシャッフルメソッドを呼び、
抽出メソッドを呼び、プレイヤークラスへカードを引き渡す。
プレイヤークラスは、カードオブジェクトの挿入メソッドを呼び、
必要ならソートメソッドを呼ぶ。

場の管理は場クラスに行わせ、当然カードオブジェクトを持つ。

> 全カードの存在や状態を意識する設計
それはおまえの設計だ。

ディーラークラスやプレイヤークラスや場クラスは、
自分のカードオブジェクトだけ考えればよい。
カードクラスも同じだ。
全てのクラスが、全カードの存在など意識しない。
カードに対する操作は、全てカードオブジェクトにまかせればよい。
カードに対する操作は、すべてカードクラスに実装する。
理解できたか?

最後に、おまえ厨房すぎる。
本ばかり読んでないで、実際にプログラムしろ。
プログラム経験が足りないんだよ。
GUIプログラミング周りに強い本ってありませんか?
878デフォルトの名無しさん:01/12/08 01:51
879876:01/12/08 02:11
>>876
> まず基本は、データとそれを処理する関数なんだよ。これを忘れるな。

元 C/C++ 出身だから良く分かってるよ。

> 現実世界では、シャッフルするのはディーラーだが、
> プログラム時は、ディーラークラスはカードオブジェクトの
> シャッフルメソッドを呼ぶだけで、自分でシャッフルする必要はない。

「ディーラーはシャッフルする」「カードはシャッフルされる」両方とも成立
するからどちらでもいい。

ただ、カードのインスタンスにシャッフルするメソッドを持たせると、
カードクラス内に全カードインスタンスを static で持つ必要が出
てくるだろ。そうなると VM 上で複数の「場」を立てづらい設計に
なるだろ。だからディーラーに持たせたの。ちなみに君の言う
「オブジェクト」ってインスタンスを指してるの?

ちょっと設計を教えてくれよ。カードのシャッフルメソッドの中で、他の
カードインスタンスをどうやって見つけるつもりなんだ? リスト? ここで
想定している実装イメージがいまいち分からん。

> ディーラークラスはまず、全てのカードでカードオブジェクトを初期化する。
> その後、カードオブジェクトのシャッフルメソッドを呼び、
> 抽出メソッドを呼び、プレイヤークラスへカードを引き渡す。
> プレイヤークラスは、カードオブジェクトの挿入メソッドを呼び、
> 必要ならソートメソッドを呼ぶ。

それでも別段違和感はありませんけど。

> > 全カードの存在や状態を意識する設計
> それはおまえの設計だ。

そうだよ。カード采配のモデルに世界のデファクトスタンダードでもあるのか?
あるとしたら現実に添ったオブジェクトの振る舞いと責任分担じゃないのか?

> ディーラークラスやプレイヤークラスや場クラスは、
> 自分のカードオブジェクトだけ考えればよい。
> カードクラスも同じだ。
> 全てのクラスが、全カードの存在など意識しない。
> カードに対する操作は、全てカードオブジェクトにまかせればよい。
> カードに対する操作は、すべてカードクラスに実装する。
> 理解できたか?

その実装はカードというのファットクラスが出来上がるだろう。カードがゲーム
全体を実装するなら、それは汎用的な設計といえないと思うがどうよ。

> 最後に、おまえ厨房すぎる。
> 本ばかり読んでないで、実際にプログラムしろ。
> プログラム経験が足りないんだよ。

あほ、月百二十万契約のフリーだ。君の言う「現実模倣」をモデルにして
数十〜数百億のプロジェクト 5 個こなしてるよ。

っていうかほとんど趣味レベルの設計の良し悪しなんかどうでもいい。
何で「現実模倣」をモデルにした設計がダメなのかぜひ聞きたい。
>>876
いくつか疑問点が。
・ディーラーに対して、「カードオブジェクトの初期化」を呼ぶのは誰ですか?
・ディーラーがカードに対して「シャッフルしろ」というのを呼ぶ設計のようですが、
 ディーラーに対して「カードをシャッフルしろ」というメッセージを送るのは誰ですか?
・カードオブジェクトって、例えばトランプなら52(53?)枚一組のカード群を指してカード
 オブジェクトと呼んでるんですか?一枚一枚がカードではなくて?
Σ(゚д゚lll)ガーン
まだカードの話しをやってるよ...

お前らのたいそうな設計よりそのへんで
ダンボール巻いて寝てるコボラーに書かせた方がましだ。
かける時間は
設計 8割 コーディング 1割 テスト 1割 ですが何か?
883デフォルトの名無しさん:01/12/08 02:33
>>879 1/2
>> まず基本は、データとそれを処理する関数なんだよ。これを忘れるな。
> 元 C/C++ 出身だから良く分かってるよ。

> 「ディーラーはシャッフルする」「カードはシャッフルされる」両方とも成立
> するからどちらでもいい。

わかってるなら、設計に反映させたらどうだ?

> ただ、カードのインスタンスにシャッフルするメソッドを持たせると、
> カードクラス内に全カードインスタンスを static で持つ必要が出

カードクラスは、空で初期化することも、
全カードで初期化することも出来るようにする。
全カードインスタンスなどという概念はない。

もしかして、1枚1枚カードインスタンスにするつもりだったのか?
そこまで現実を模倣したいのか?
カードクラスは、複数枚のカードを管理する。

> てくるだろ。そうなると VM 上で複数の「場」を立てづらい設計に

何の問題もない。

> なるだろ。だからディーラーに持たせたの。ちなみに君の言う
> 「オブジェクト」ってインスタンスを指してるの?

そう。

> ちょっと設計を教えてくれよ。カードのシャッフルメソッドの中で、他の
> カードインスタンスをどうやって見つけるつもりなんだ? リスト? ここで
> 想定している実装イメージがいまいち分からん。

見分ける必要はない。

> そうだよ。カード采配のモデルに世界のデファクトスタンダードでもあるのか?

ない。
妥当なら良い。

> あるとしたら現実に添ったオブジェクトの振る舞いと責任分担じゃないのか?

現実に沿わなくても、役割分担できればよい。
あくまでプログラムだ。
884デフォルトの名無しさん:01/12/08 02:35
>>879 2/2
> その実装はカードというのファットクラスが出来上がるだろう。カードがゲーム
> 全体を実装するなら、それは汎用的な設計といえないと思うがどうよ。

ゲームはゲームクラスが管理する。

> あほ、月百二十万契約のフリーだ。君の言う「現実模倣」をモデルにして
> 数十〜数百億のプロジェクト 5 個こなしてるよ。

その設計からすると、学生としか思えん。

> っていうかほとんど趣味レベルの設計の良し悪しなんかどうでもいい。
> 何で「現実模倣」をモデルにした設計がダメなのかぜひ聞きたい。

模倣しても良い。
模倣しなければならない訳ではない。
固定概念に縛られて、不便な設計をする必要はない。
(Frame)ダイアログを画面中央に出す方法を教えてくらはい。
(,,=´ ω `)ノ
「ユースケース入門」の手法によれば、
現実模倣によるモデルは分析段階のドメインモデルと呼ばれる。
これは属性や操作のないクラス図として書かれる。

ユースケースとドメインモデルによって、そのソフトウェアが
「どう利用するか」と「どのような要素が存在するか」が分析される。
これらは問題領域に属する。

そして、この二つ(など)から「どう動作するか」を表したロバストネス図が書かれる。
クラスの役割、クラス間の関係が抽象度を保ったまま表現される。
ロバストネス図は問題領域から解決領域を導くための図である。

ロバストネス図(など)からクラス図が書かれる。
クラス図には属性や操作が書かれる。
属性や操作は他の図からそのまま移されるものが多いが、
パターン適用などのコーディング上の必要から新たに追加されるものもある。
クラス図は解決領域に属する。
----
駆け足かつ受け売りで書いたけど、
現実模倣はあくまで問題(=作るソフトウェアがどういうものか)を把握するために行なうのであって、
それをそのまま設計に使えることは少ないと思う。
オブジェクト指向プログラムがある程度抽象度の高い書き方ができるといっても、
現実にはプログラムとしての制約、入出力機器の制約、
接続するDBの制約などなどが存在するから。

あ、ネタ心者スレだったのか。スレ違いすまん。
コピペご苦労
888876:01/12/08 02:55
>>883-884
大体了解した。実装イメージも浮かんだ。俺的にはそういうやり方でもぜんぜんかまわない。

> 模倣しても良い。
> 模倣しなければならない訳ではない。
> 固定概念に縛られて、不便な設計をする必要はない。

神様もウンコも混じって数百人で開発するときの設計の難しいところに、やっぱり設計モデル
の共有というのがあるんだわ。火がつくとヘルプで突然1ヶ月だけ入る人もいるし、ドキュメント
ばっか読んでる奴もいればドキュメント読まずに書き始める奴もいる。そういう環境で設計して
ると、多少不便でも現実に基づいたモデルを持ち込むのが最終的に一番楽なんだわ。
モジュール間の責任分担や振る舞いの実装という面で。第三者に状況説明もしやすいんで
デバッグをやってもらうのもスムーズだし。

昔は教科書卒業したつもりで >>883 みたいな設計もしてたけど、やっぱりOOの教科書に
戻りましたね。俺が現実模倣をやっているのはそういう事。
889885:01/12/08 02:59
俺の書き込みが、長文に埋もれていく。(欝
890876:01/12/08 03:00
>>886
あ、現実模倣といってもさすがにそのままで実装するのは無理があるよ。正しくは現実のモデルに
なるべく忠実にしながら、だな。フェーズの頭から実装的な手法を入れるのはなるべく避ける。
最終的に必要な部分だけ実装的な設計手法を織り込んでゆく。これ。
>>889
もっとネタっぽく書かないとダメだって場。
892876:01/12/08 03:05
>>889 java.awt.Toolkit#getScreenSize() 使って真ん中へピンポイント表示。
>>887
馬鹿馬鹿しいことに手書きだったりする。

>>890
710辺りから読み直してみたが、双方の主義の違いのような気がする。
最終的に動けば(そしてできる限り保守性がよければ)良いのだしね。
894デフォルトの名無しさん:01/12/08 03:25
>>893
まあな。
主義主張なんてのは、なんの評価対象にもならん。
出来た物が全て、それが現実だ。
895876 じゃなくて 765:01/12/08 03:33
よく読みなおしたら全部の名前のところの番号書き間違えてる 鬱だ詩嚢...
そして一番冷静なのは >>881 だということが分かった。
896デフォルトの名無しさん:01/12/08 03:49
setDefaultCloseOperation(.EXIT_ON_CLOSE);ってこの場合どうやって使えばいいのですか?
右上の×を押したら終了させるようにしたいのですが。

public class Test extends Frame{
static FileDialog fd;
static String fname;
static MyCanvas c1;
static Button b1;
public Test() {
super ();
setSize(500, 500);
setLocation(0,0);
c1 = new MyCanvas();
Container c = fr.getContentPane();
b1 = new Button("ファイルを開く");
c.setLayout(null);
this.add(b1);
this.add(c1);
b1.setBounds(380,400,100,50);
c1.setBounds(0,0,500,400);
myListener1 m1 = new myListener1();
b1.addActionListener(m1);
try {
fd = new FileDialog(fr,"Select Text File.",FileDialog.LOAD);
fd.setVisible(true);
fname = fd.getDirectory() + fd.getFile();
}catch(Exception e){}
}
public static void main(String args[]){
new Zu1().show();
}
}
897デフォルトの名無しさん:01/12/08 03:57
メソッドをstaticにすることはできますか?
>>884 > その設計からすると、学生としか思えん。
765 の美味しい所は学生でも理解できる設計をめざしている事だと思われ
# と学生のオイラが言ってみるテスト
899 :01/12/08 04:19
public class Test extends Frame{
static FileDialog fd;
static String fname;
static MyCanvas c1;
static Button b1;
public Test() {
super ();
setSize(500, 500);
setLocation(0,0);
c1 = new MyCanvas();
Container c = fr.getContentPane();
String itteyoshi = "\u6b7b\u306d\u3070\uff1f";
b1 = new Button(itteyoshi);
c.setLayout(null);
this.add(b1);
this.add(c1);
b1.setBounds(380,400,100,50);
c1.setBounds(0,0,500,400);
myListener1 m1 = new myListener1();
b1.addActionListener(m1);
try {
fd = new FileDialog(fr,"Select Text File.",FileDialog.LOAD);
fd.setVisible(true);
fname = fd.getDirectory() + fd.getFile();
}catch(Exception e){}
}
public static void main(String args[]){
new Zu1().show();
}
}
900896:01/12/08 04:29
自己解決したからもういいや
901某SE:01/12/08 04:34
億単位の案件を現実世界で崩し切るってこと?
よっぽどすごい奴か,ただのバカ正直かどっちかだな.
\u57fa\u5730\u5916\u8b66\u5831\uff01
903 :01/12/08 05:02
\uff08\uff9f\u0434\uff9f)\uff8a\uff67?
>>902 名前:デフォルトの名無しさん 本日の投稿:01/12/08 05:00
基地外警報!


>>903 名前:  本日の投稿:01/12/08 05:02
(゚д゚)ハァ?
905デフォルトの名無しさん:01/12/08 05:11
for文の中で定義した変数はfor文の中でしか使えないって言うのは不便だよなあ。
BASICなら使えるんだけどなあ。なんとかならないもんかねえ。
906 :01/12/08 05:28
>>905
\u4f7f\u3048\u3061\u3083\u3046\u65b9\u304c\u4e0d\u4fbf\u3060\u3068\u601d\u3046\u
304c\u3069\u3046\u304b\uff1f
>>862
>>863
どちらも リリース11 だね。
908デフォルトの名無しさん:01/12/08 11:02
指数ってどうやって表すの?
Math クラスは、指数、対数、平方根、三角関数などの基本的な数値 処理を実行するためのメソッドを含んでいます
とか書いてあるのに探してもないし。
909908:01/12/08 11:10
とおもったらあったわ
Math.sin
Math.cos
Math.PI
Math.tan ハァハァ
911707:01/12/08 13:00
カードネタ盛り上がってますね。

私は、単純にカードを偏り無くランダムに引ける
『カードファクトリーもどき』 が作りたかっただけなのですが・・・


要は、1〜N の乱数を偏り無く導ければよく、それなら
ついでにカードを引けるようにすればいいかなぁ、と思っただけでし。
912デフォルトの名無しさん:01/12/08 14:30
微妙に板違いっぽいですが、どこで聞いたら良いのかわからないので…

ServerSocket 使って簡単な サーバ⇔クライアント でデータをやり取りするのを作りました。
ですが私のNETの環境がアパートの共有LANなので、外から上手くアクセスできないのです。
一応localhostでは動いてますが、
"診断くん"とかで調べたリモートアドレスの適当なポートに繋ごうとすると
java.net.ConnectException: Connection refused: connect
と出てきます。

でも、ZoneAlarm は外部からの特定のポートへのアクセスに反応してます。
外からアクセスする方法はあるんでしょうか?
>>912
アパートの共有LAN?どっかにルーターがいてNATされてるって事?
# つーかネットワーク構成の説明不足すぎ。それじゃどこで聞いても
# まともな回答は得られないと思われ。
>>913
何人だろうあなた
一人に決まってるだろ。
916デフォルトの名無しさん:01/12/08 15:52
-deprecation オプションを指定するのってどうやるのですか?
>>916
まんまじゃん

そのままいれてみそ
918916:01/12/08 16:06
C:\WINDOWS\デスクトップ\javafile\examples>-deprecation
コマンドまたはファイル名が違います.

って言われてもわからないです。
俺の持ってる入門本には載ってないし。
919916:01/12/08 16:12
あ、javacの後に入れるのか
>>918
おいおい かわいいことするじゃん

C:\WINDOWS\デスクトップ\javafile\examples>javac -deprecation Hoge.java
921:01/12/08 18:12
ちょっと早いけど

★★★ 新スレ立てました ★★★
http://pc.2ch.net/test/read.cgi/tech/1007802486/

1000近くなったら移動してください。
そろそろババ抜きくらいは出来たんだろうな?
>>921
そのスレ 1 に AA 貼ってあるので反対!!
俺は良いと思う。
925:01/12/08 19:28
もう少し小さなAAにすべきでした。スマソ
iモードではアクセスできないかもね
927 :01/12/09 09:26
とりあえず残り70以上有るんで、
3に行く前に、もうちっとこのスレ使いましょー!
>>927
新しい話題は向こうで、ここの話題はこちらってことにしましょう。前スレもそうでしたので
929ねぇねぇねぇ:01/12/09 11:45
Javacatsってどうなっちゃったの?

ここ
http://www.javacats.com/

久々行ってみたらなくなってたよ。

結構、アプレットのリソースとかたくさんリンクが貼られてたのに残念。
詳しく知ってる方、経緯をお教えください。

# 気になってしょうがない
>>929
JavaHouse に聞くよろし
931デフォルトの名無しさん:01/12/10 18:49
appletを継承したクラス以外のクラスで
draw.Imageを使うとして、
ImageObserverにはどう指定すればいいんでしょうか?

public void draw(Graphics g)
{
g.drawImage(img,0,0,???);
}
>931
null
933デフォルトの名無しさん:01/12/10 23:44
JAVA Beansってコーヒー豆?
934デフォルトの名無しさん:01/12/11 15:28
文字を、
wordのワードアートのようにいろいろ装飾して表示させたいですが、
良いライブラリとか(できたらフリーで)公開されているの、知りませんか?
ちょっと検索かけたのですが、いまいちみつかりませんでした

自作するしかないのかな
(影付程度ったら、すこしずつずらして書くなどして、実現できそうなんだけど、
複雑なやつが・・・)
>>934 Java2D標準ライブラリで十分では
JDKのdemoのディレクトリにあるJava2Dのサンプルを見てみれ。
フォント処理も充実してるでよ
937デフォルトの名無しさん:01/12/11 19:15
最近、仕事でJAVAを始めた初心者です。
どうしても理解できないコンパイルエラーが出るので
どなたか教えてください。

以下のインタフェースTestIF とそれを実装するクラス
TestCL をひとつのソースファイルにTest.javaに書いて
コンパイルします。(以下参照)
---------------------------- Test.java ---------
interface TestIF
{
 void f();
}

class TestCL implements TestIF
{
 void f() {}
}
------------------------------------------------
すると以下のエラーが出ます。

Test.java:7: TestCL の f() は TestIF の f() を実装できません。
スーパークラスでの定義より弱いアクセス特権 (public) を割り当てようとしました。
class TestCL implements TestIF
^
疑問1
このエラーメッセージで、「スーパークラス」とは何を指しているの
でしょうか?

疑問2
仮に「スーパークラス」を「インタフェース」と解釈
しても、void f() はTestCLクラスで元のインタフェースでの定義
でのデフォルトアクセス修飾(パッケージのみ)と同じなので
「より弱いアクセス特権」というメッセージも理解できません。

疑問3
「(public) を割り当てようとしました。」というのも、、
してねーじゃん!!としかおもえません。

どなたか、アドバイスおねがいします。
938Kusakabe Youichi:01/12/11 19:23
In article >>937, デフォルトの名無しさん/937 wrote:

> 最近、仕事でJAVAを始めた初心者です。
> どうしても理解できないコンパイルエラーが出るので

ほんとに「どうしても」理解できなんだったら、
何をしても無駄でしょう。
インタフェースで宣言されたメソッドは
すべてpublicになるというルールが存在します。
一冊まともな本を買いましょう。
>>930
JavaHouseみてもわからんでち。おしえれ。
941937:01/12/11 19:57
>>939

レスどうもです。
言語仕様書
http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html
を調べてみたら、おっしゃる通りでした。
9.4 Abstract Method Declarations

Every method declaration in the body of an interface
is implicitly public.
とありましたし、実際リフレクション使って、さきほどの
TestIFのClassクラスからf()の修飾子をみたら、
public と abstract が付加されていました。

で、「すべてpublicになるというルール」を覚えることは
できましたが、どういうポリシーでそうするのかは依然
として謎です。
942937:01/12/11 19:59
>>939
ちなみに、本は「コア JAVA基礎編」使ってます。
だめっすか?
943デフォルトの名無しさん:01/12/12 21:01
イメージファイルの幅や高さを取得するにはどうしたらいいですか?
Imageクラスにはそういったメソッドないですよね・・・
944べんきょうちゅう:01/12/12 21:15
お疲れさんどす。
質問がありもす。
初心者だす。

ファイルにbyteデータを書き込もうと思い、以下の処理を行いました。

@FileOutputStreamで出力ストリームを作成。
Awriteを使って書き込み。

ちなみに出力先は存在しないファイルにしてみました。
エラーが出るかと思ったらちゃんとファイルができるのねー。
これってどの時点で出来たの?

FileOutputStream fos = new FileOutPutStream;

て書けばファイルが出来るものなのでしょうか?それともwrite?
>>943 あるよ。
ただし読み込み中は-1とか返すからImageTrackerクラスとかも調べれ。
>>944
出力ストリームを作成した時点で出来るんじゃないかな。
同じファイル名で2回作れないでそ?(作れたら嫌な感じ)
947943:01/12/13 01:15
>>945
レスどうもです。
MedeaTrackerクラスを使ってイメージをロードすれば
getHeight()で高さが返ってくるようになる。ってことですよね?
で、今それを試してるのですが実行するとエラーでます。
waitForAll()が悪いみたいなんですけど・・・なんでだろ?
948デフォルトの名無しさん:01/12/13 01:18
public class Test {
public static void main(String[] arguments) throws Exception {
System.out.println(new String("〜".getBytes("SJIS"),"SJIS"));
}
}

この結果は何で「?」になっちゃうんでしょうか?
949948:01/12/13 01:20
一応環境も。
Win2000でJDK1.3.1です。
950デフォルトの名無しさん:01/12/13 01:28
>>949
それは、MS932とSJISは別物だからでは?
それは、コンパイル時にエンコードされてるっつーことでは?
Win2kだと MS932だから、後は950と同じで。
952951:01/12/13 01:46
…全然違った。
950で説明終わってた…
951は間違ってるから記憶から抹消してください。
953948:01/12/13 02:00
MS932というのを知らなかったので調査のきっかけになりました。
ありがとうございます。

とりあえず、
public class Test {
public static void main(String[] arguments) throws Exception {
System.out.println(new String("〜".getBytes("MS932"),"MS932"));
}
}
で正しく表示されたので納得です。
ネタ心者歓迎!今更ながらにJava相談室  その3
http://pc.2ch.net/test/read.cgi/tech/1007802486/