[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/06 00:12 / Filesize : 302 KB / Number-of Response : 972
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれJava(超初心者用) その2



1 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:54:09 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、  
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。  
Java使いが優しくコメントを返しますが、  
お礼はJavaの布教と初心者の救済をお願いします。  

Java SunのHome Page  
www.java.com/ja/

前スレ

くだすれJava(超初心者用)
pc10.2ch.net/test/read.cgi/tech/1126470659/l50


152 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:43:39 ]
>>151
STRING型がString型のことだとして、それはどこに並んでるデータなんだ?
わざわざString型と言っているということは、既にインスタンスの並びになっているということか?
たとえばString型の配列なんだとしたら、要素にnullがないことを条件に、
String[] array = { "01", "01", "01", "", "02", "02", "03", "03", "03" };
String t = null; for (String s : array) if (s.equals(t)) System.out.println(); else System.out.println(t = s);
ここでは、何も表示しない=改行のみとしたが、適宜自分の仕様に合わせろ。

153 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:41:11 ]
>>151
01 AAA 12-34
01 BBB 22-34
01 CCC 33-34
・・・

みたいなテキストファイルがあると仮定してみる。
FileReader>BufferedReaderでそれを読み込んでreadLine()
BufferedWriter>FileWriterで出力先を作る
最初をゼロで埋めているので値が二桁に確定していると考えるとsubstring()で最初の2文字を取得
既得リストを作っておいてなければリストに格納しそのまま出力、あれば改行を出力
とか言ってみる。たぶん違う。

154 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:02:18 ]
newが良く分からないのですが、メモリを確保するための予約語なんですよね?
 基本型では確保するメモリ量が決まってるから省略
 参照型では、参照先を指定する値の為のメモリ量が決まってるから省略
 それ以外では、どれだけメモリ取っとけばいいか分からないからnewではっきりさせる
こんな理解で良いですか?
うざい質問かもしれないのですが、より初心者向けなスレとか教えて頂けると助かります

155 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:04:11 ]
メモリを確保する予約語じゃない
インスタンスを作成する演算子だ

156 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:13:57 ]
基本型でもなく参照型でもないものって何だろ?

157 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:24:46 ]
null型がある。任意の参照型にキャストできるが参照型とは別の特別な型。
154の話とは無関係だが。

158 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 09:02:39 ]
混乱してきたので出直します
お答え頂きありがとうございました


159 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 10:57:08 ]
じっくり頭を整理するのがいいさー

160 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:36:04 ]
型について勘違いしてたみたいです。でもやっぱり分かりません。

自分が混乱している理由を整理すると、
 1. String等でnewを使わなくて良いのはなぜ?
 2. newは予約語なのに、演算子として解説されているのはなぜ?
ということだと思います。

newについては
 用途:コンストラクタを呼び出す
 動作:メモリ上の任意の領域を確保し、その領域を参照するための値を代入する
ということで良いですか?



161 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:48:07 ]
動作ではなくて結果でした。

162 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:49:58 ]
>>160
1. "abc" は ConstantPool 上の String オブジェクト "abc" を表すリテラル。

2. instanceof も予約語かつ演算子な語句だよな。
new も同じように予約語かつ演算子だから、「約語なのに、演算子として解説」 されてるんだと思うよ。

用途:インスタンスを作成する過程でコンストラクタを呼び出すんだな。

動作:実際にはメモリ(=ヒープ領域)を確保しないで済ませちゃうかもしれない。
160 に書いてある動作は実装上の動作であって、言語仕様上の動作じゃないな。


とりあえず、言語使用を読むことをお勧めするよ
ttp://www.y-adagio.com/public/standards/tr_javalang/15.doc.htm#41147

163 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 03:40:32 ]
>>162
ありがとうございます。大分もやもやが取れてきました
頑張るぞー!

164 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 02:01:28 ]
C言語で
typedef struct _header {
unsigned char opcode;
unsigned long oprand;
} header;

memcpy(&header, src_ptr, sizeof(header))

unsigned char 1byteリトルエンディアン
unsigned long 4byte リトルエンディアン

みたいな感じでバイナリファイルのヘッダ解析とか
したりしますよね?

これってJavaでどうやって書けばいいんですか?
教えてください。

165 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 02:08:59 ]
/*
typedef struct _header { 
unsigned char opcode; 
unsigned long oprand; 
} header; 

memcpy(&header, src_ptr, sizeof(header));
*/

166 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 00:44:16 ]
nioのバッファとか使えばいいんだろうけど。

typedef struct _header {
unsigned char opcode;
unsigned long oprand;
} header;

memcpy(&header, src_ptr, sizeof(header))

これ、パディングどうなってんのよ。


167 名前:デフォルトの名無しさん [2007/06/15(金) 06:26:47 ]
OutputStreamWriter,およびInputStreamReaderを利用時に、指定すると文字化けしてしまう文字エンコーディングがあります。
具体的にはEUC_JP、ISO2022JP、とサポートされているはずのものです。

ちなみにOSはWindowsXPで、SJIS、MS932が現在正常に使えるエンコーディング名です。
どこに問題があるものなんでしょうか?






168 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 08:30:18 ]
>>2
DirectByteBuffer

169 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 03:06:49 ]
IDE のプラグインじゃないプロファイラはありませんか?
TPTP のためだけに Eclipse 入れるのもどうかと思っちゃいまして……

-agentlib:hprof って手もありますけど、できれば
・時間ごとのヒープ使用状況と GC の様子
・各メソッドの実行時間・実行回数の統計
の2つが知りたいんです。


ぶっちゃけ CLRProfiler みたいなのって無いっスかね。

170 名前:デフォルトの名無しさん mailto:age [2007/06/28(木) 21:53:30 ]
大学で今までCをやっていたのですが、教授が入院したためにjavaのクラスに急に移動させられました。
javaを始めて一週間なのですが、明後日までに課題の提出を迫られました。
必死にやってみたのですが、さっぱり意味がわかりません。
わかる方、どうか助けて下さい。
下にわかるだけの課題の内容は書き込んでおきます。

【 課題 】

@右詰で数字を入力し、Enter キーを押した時、数字の値を10倍して表示する。
A何度も数字を入れたらそれらを10倍した数をそれぞれ足し合わせた数同じウィンドウの中に表示する。

【 形態 】Javaアプリケーション
【 期限 】土曜日の授業まで(朝の9時開始)
【 Ver  】1.5


ですよろしくお願いします。



171 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:11:46 ]
java -deprecationでコンパイルしたら
Test$1.classというのが出来たんですけど、これって何ですか?

172 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:18:25 ]
>>171
匿名クラスのクラスファイル
deprecationをつけなくてもできるはず
Testクラスの中に無名クラスの定義が入れ子になって入っている
あとjavaではコンパイルできないんでjavac使え

173 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:35:08 ]
>>172
c付けるの忘れてました(´・ω・`) ありがとう

>>170
"java 入力待ち"でぐぐって見て下さい
あとはfor文とif文を駆使すれば出来ると思います

174 名前:170 mailto:age [2007/06/28(木) 22:35:46 ]
すみません
板をまちがえました

正規の課題の板でアドバイスを頂いています
ご迷惑をおかけしました

175 名前:デフォルトの名無しさん [2007/06/29(金) 09:20:04 ]
今度仕事でjavaを使ってアプリケーションを作ることになりました。
具体的には、画面からデータ入力してデータベースというものに格納され、
かつ帳票も作成するといった感じです。
プログラミングも初めてなので、正直何から初めてよいかわかりません。
いい勉強の仕方があれば教えてください。
また、現実的に開発にはどのぐらいかかりそうなのか経験者の方に
お尋ねしたいです。
ちなみに機能的には、画面数10帳票数5程度です。

176 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 12:36:30 ]
まずは上司や先輩などの経験者に聞くべき
君がやろうとしている仕事の内容を一番知っているのも彼らだ
社員を育てるのも会社の仕事

177 名前:デフォルトの名無しさん [2007/06/29(金) 14:43:46 ]
>176
社内にはjavaを知っている上司や先輩はいません。
独学で学ぶしかないのですが、わかりやすい書籍や
WEBサイトとかないですかね。


178 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:11:04 ]
君にとってわかりやすいのはどんな本なのか、、、材料が無いのでわからん

179 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:35:54 ]
java未経験者とかならともかく、何でプログラミング未経験者にそんなものを作らせようと考えたんだろう。
プログラミングに対する適性にもよるがその開発が完了するのにかなり時間がかかりそうだ。
誰も知らないのにjavaを開発言語に選択した経緯とかも疑問だな。
周囲にjavaは知らなくてもプログラミング経験者がいるのなら、
まずその人間にプログラミングの基礎から教えてもらった方がいいかもしれん。
手取り足取りまでいかなくても直接疑問をぶつけられる人間がいると独学より効率がいい。
プログラミングの基礎が少しでもできればjavaに独学で入っていくのも楽になる。
だいたいどれくらいの期間のプロジェクトなんだ?
短期間でとかいうならよほど努力するか天賦の才がなければ大変なことになりそうだ。

180 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:07:27 ]
プログラミング初心者になにも教えず、一人で開発させるなんて、
いったいどんな会社だwww



181 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:16:47 ]
始めまして。
ラッパークラスの用途、利点が分かりません。
ラップするクラスの機能を拡張するという事でいいのでしょうか?

182 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:02:03 ]
拡張だけじゃなくて隠蔽もできるぞ
特定の内部動作を外部からいじられないようにしたり
バグのできやすい部分を補ってやったり

183 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 07:53:44 ]
>>175
ひだりもみぎもわからない初心者が独学でやるのは難しいんじゃないかな?
つらすぎると思うよ
なにも出来ないままただ時間が過ぎるだけになりそう
なにかとわけのわからない事が多いから
誰かしらおしえてくれる人がいないと
進まないでつまづいたままになって終わらないと思うよ


184 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 10:38:29 ]
>>181
エレベーターガールを置くようなものだよ

185 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 16:44:52 ]
>>181
あるクラスが柔軟性が高いとかできることが多様などの理由で呼び出しに複雑な手順を踏む必要がある場合、
柔軟性などを犠牲にしてでも簡単な手続きで呼び出せるようにしたいという需要を満たすために作るのがラッパクラス

186 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:03:13 ]
質問です。
2chビューアを作りたいのです。
dat落ちしたスレのログを他のユーザが持っている場合はそちらからコピーできるようにしたいのです。
ネットワークプログラミングならJavaが良いと漠然と思うのですが、Javaはほとんど初心者です。
そこで次の質問にお答えください。
1 Javaよりもふさわしい言語は他にありますか?
2 開発環境はEclipseが有名なようですがどうですか?
3 SWINGとSWTがあるようですがどちらが良いのでしょうか?
4 何か良い本を薦めてください。
5 既にそういうソフトがあれば教えてください。車輪の再発明はやめます。

187 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:42:52 ]
>>186
やめとけ

swing
v2c.s50.xrea.com/
pc11.2ch.net/test/read.cgi/software/1182536712/l50

swt(JFace)
lcm.hp.infoseek.co.jp/index.shtml

188 名前:デフォルトの名無しさん [2007/07/01(日) 16:53:23 ]
>>187
即レスありがとうございます。
紹介してくださったソフトでは過去ログの共有はできますか?

189 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 18:18:55 ]
>>188
あんたは何使っても無理だと思うよ

190 名前:デフォルトの名無しさん [2007/07/01(日) 18:32:15 ]
>>189
そういう返事はもっとレベルの高い質問スレでどうぞ。



191 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 18:40:01 ]
>>190
どこ?

192 名前:187 mailto:sage [2007/07/01(日) 19:44:19 ]
>>188
てっきりJavaで2chブラウザを作りたいのかと勘違いしました。申し訳ないです。
ログの共有に関しては2chブラウザによって形式が違ったりなどいろいろな問題があるので、
単純に対応というのは難しいと思います。
正直申し上げますと>>186の書き込みからしてこれを自作するのは困難かと思われます。
2chブラウザを探すのはソフトウェア板で聞かれたほうが有益かと思いますので、
そちらへ行かれることをお勧めします。

193 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 21:35:23 ]
>>192
度々ご回答くださりありがとうございます。
P2Pのようなしくみでログを共有してスレや鯖が落ちているときも読めるようにしたいのですが。
まずは既存のソフトでそのようなものがないか探してみます。

194 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:54:17 ]
共有は共有でもP2Pか
おれてっきり拾ったdatファイルを2chブラウザで見れるようにしたいのかと思ってたよ・・・orz

195 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 10:33:20 ]
車輪の再発明って初心者が使うには便利な言葉だな。
やりたくないって意味だろ

196 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 16:18:51 ]
おまいら、もっと初心者を甘やかしてJavaを普及させなきゃダメじゃないかw

197 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 18:32:51 ]
甘やかして普及するくらいなら、滅びよ現実!

198 名前:デフォルトの名無しさん [2007/07/02(月) 20:23:11 ]
すみません。
サンのHPから JDK 6u1 をダウンロードしようと思うのですが、サーバーが見つかりませんの表示しか出ませんorz
開発環境をダウンロードするのって今はもう無理なんでしょうか。。。

199 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 20:50:29 ]
JDK6 って公開されてからまだ1年経ってないよな

200 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:52:16 ]
>>198
問題なく落とせるよ
何を使って落とそうとしてる?



201 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:06:30 ]
IE6.0で、ダウンロードをいくら押してもサーバーが見つかりませんと出ますorz


202 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 00:15:02 ]
うちもIE6だけど普通に繋がるなあ
ダウンロードボタンを押すと、リダイレクトされたり、その接続先がhttpsになったりで激しいから
201のセキュリティ環境が厳しすぎるとかなのかな
または、DNSがバカになっててダウンロード用の接続先を解決できないか

203 名前:デフォルトの名無しさん [2007/07/05(木) 07:34:57 ]
JFrame frame1 = new JFrame();
JTextArea jta = new JTextArea();
func1(){
frame1.setSize(300, 300);
frame1.setVisible(true);
frame1.add(jta);

これでテキストエリアが表示されないのですが
どうすればいいのでしょうか

204 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 09:01:01 ]
>>203
func1(){って何だよw

表示されてしまったコンテナのサブコンポーネントが変更された時は
そうと知らせなければコンテナは自身の大きさが変更されるとかのイベントでも起きない限り
サブコンポーネントの変更を知りようがない

試しに元のままでフレームのサイズを変更してみればJTextAreaが表示されるはず

frame1.add(jta);
frame1.setVisible(true);
のようにaddしてからsetVisibleするか

frame1.setVisible(true);
frame1.add(jta);
frame1.validate();
のようにaddしたあとvalidateで再配置させる

205 名前:デフォルトの名無しさん [2007/07/05(木) 15:07:57 ]
>>204

表示されました
ありがとうございます

206 名前:デフォルトの名無しさん [2007/07/07(土) 16:49:19 ]
www.uploda.org/uporg892942.gif.html

この問題の解答例をお願いします。

207 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 16:56:40 ]
>>206
宿題は宿題スレへ

208 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 16:59:43 ]
>>207
すまん、そんなスレがあったのか。
ありがとう。

209 名前:質問1/2 mailto:sage [2007/07/08(日) 07:16:45 ]
コマンドラインから入力した数字以下の素数を表示させるプログラムを作っていたのですが



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


int[] data = new int[args.length];//ここから3行はコマンドラインから数字を入力するためのものである。まず、int型の配列dataをつくる。
data[0] = Integer.parseInt(args[0]);//ここで整数に変換する
System.out.print(data[0] + "以下の素数を表示します ");//コマンドラインから入力した数字を表示する



boolean[] prime =new boolean[1000];//判別
for(int tasikame = 2 ; tasikame < 27 ; tasikame++){ //37×27=999 ここでは配列を1000個しか用意していないのでtasikame < 27とした。
prime[2*tasikame] = false;//素数でないというフラグをつける
prime[3*tasikame] = false;//素数でないというフラグをつける
prime[5*tasikame] = false;//素数でないというフラグをつける
prime[7*tasikame] = false;//素数でないというフラグをつける
prime[11*tasikame] = false;//素数でないというフラグをつける
prime[13*tasikame] = false;//素数でないというフラグをつける
prime[17*tasikame] = false;//素数でないというフラグをつける
prime[19*tasikame] = false;//素数でないというフラグをつける
prime[23*tasikame] = false;//素数でないというフラグをつける
prime[29*tasikame] = false;//素数でないというフラグをつける
prime[31*tasikame] = false;//素数でないというフラグをつける
prime[37*tasikame] = false;//素数でないというフラグをつける
}

210 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:18:06 ]


int i = 0;//int型の変数iを初期化
for (int s = 2 ; s < data[i] ; s++) {
if(prime[s]==false){//もしprime[s]がfalseのときは・・・
System.out.print("×");//なにも表示しない
}else{ // それ以外のときは
System.out.print(s+",");//表示せよ
}
}


}
}

で実行しても、どうしても上手くいかないのですがなぜなのかどうしても分かりません。
どうすればいいのでしょうか?



211 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 17:13:00 ]
Podcastの動画再生(MPEG4)ってJavaでできる?
wmvに変換してCで作った方が楽?

212 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 18:26:16 ]
>>209
boolean配列の要素の初期値はfalseだということ。
全てにfalseが入っている配列にfalseでフラグを立てても意味がない。
最初に全要素にtrueを代入するか、または、trueで非素数のフラグ立てをするかする。

どううまくいかないのか、どうなってほしいのか書いていないから推測だが、
その方法だと、例えば、2の倍数は2*26=56までしか非素数フラグを立てられない。
3の倍数だと3*26=78まで。もし、そういう方法を取るのなら各素数ごとに、
tasikameの終わりの値を変えないと取りこぼしがいくらでも出てくる。
それに、その方法は41の倍数の排除ができないよね?
もしそのやり方を通したいなら、まず2自身を除く2の倍数だけ排除して、
排除されなかった最小の整数(つまり3)自身を除くその整数の倍数を排除して、
という感じで順番にやれば簡潔なプログラムになると思う。

213 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:17:47 ]
>>212
ありがとうございました、もう一度その方法でやってみます

214 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:27:51 ]
>>212
上手くいきました、ありがとうございました。
どうやらboolean配列の要素の初期値はfalseだという基本的なことを理解していなかったのが原因だったようですorz

215 名前:212 mailto:sage [2007/07/08(日) 19:40:43 ]
問題に本質的ではないけど、つっこまれる前に訂正しておく。
2*26=52だねorz

216 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:52:16 ]
java、超初心者です。
諸事情により、javaでマウスポインタの軌跡を測定し保存することになったのですが…
そういうのってできますか?javaならできる!と言われたのですが自分では解らなくて…。

217 名前:デフォルトの名無しさん [2007/07/16(月) 22:53:46 ]
付箋を作成したいのですが、コンパイルができません。
C:\sample>javac FusenExec.java
FusenExec.java:6: シンボルを見つけられません。
シンボル: クラス Dodai
場所 : FusenExec の クラス
Dodai fusen;
^
FusenExec.java:7: シンボルを見つけられません。
シンボル: クラス Dodai
場所 : FusenExec の クラス
fusen = new Dodai();
^
エラー 2 個

因みに、ソースはこれです。どこがおかしいかを指摘ください。
class FusenExec{

public static void main(String[] args){


Dodai fusen;
fusen = new Dodai();
fusen.setSize(300,50);
fusen.setVisible(true);

}
}


218 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:09:52 ]
>>216
できるかできないかと言われればできる。

219 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 01:52:27 ]
>217
Dodai クラスが宣言されていない。

220 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 01:54:32 ]
マルチするやつは低脳



221 名前:Cの老師を目指す女 mailto:sage [2007/07/18(水) 00:23:11 ]
裕美子といいます。大都会の片隅で、×いちの孤独なOLをやっています。

>>217
最近出版された書籍のサンプルプログラムですね。Dodai.jarはきちんと
指定されたディレクトリにコピーして、Pathの設定も指定通りでしょうか?

よくわからなかったら、Dodai.jarをソースファイルが置いてあるディレクトリ
にコピーしてみてください。

222 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 07:09:48 ]
2chでいきなり自己紹介する奴は久しぶりに見た

223 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 08:08:32 ]
新参か

224 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 14:45:49 ]
抽象クラスClassAから派生させた、
ClassAAのインスタンスやClassABのインスタンスの入る可能性のあるvariable1は

ClassA variable1;
variable1 = new ClassAA();
variable1 = new ClassAB();
てな風に使えますよね?

ここでClassAのメソッドは、variable1.cA_Method1();という風に使えると思うのですが、
ここで、変数の内容がclassABのインスタンスだった場合のみ、classABのみに実装されている
.cAB_Method1()を呼び出すにはどうすれば良いのでしょうか

if (variable1 instanceof ClassAB){variable1.cAB_Method1()}
とやっても ifの中の実行内容はなんら変わってないので何の解決にもなりませんでした

動的言語しか使った事無いのでよくわからません

225 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:20:24 ]
>>224
何もしない同名のメソッドを他方にも作って継承元で仮想関数を定義。
「何かおかしい」と思うならそれは設計がおかしいんだろ、多分。

226 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:48:17 ]
Javaって仮想変数ないですよね
やっぱり何もしない関数をスーパーに置いておいて、サブでオーバーライドするしかないんですね
ありがとうございました

227 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:24:57 ]
>>224
静的な型がClassA型の変数variable1が呼び出せるメソッドはClassAで定義されているもののみ。
ClassAB型で定義されているメソッドを呼び出したければキャストで静的な型を動的な型に合わせればいい。
if (variable1 instanceof ClassAB){((ClassAB)variable1).cAB_Method1();}

228 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:29:08 ]
キャスト演算子より.の方が優先順位が高いので、
(ClassAB)variable1.cAB_Method1();
としないように。

229 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:40:16 ]
理解しにくけりゃ
if(variable1 instanceof ClassAB){ClassAB variable2=(ClassAB)variable1; variable2.cAB_Method1();}

ClassA variable1;
variable1=new ClassAA();
みたいにスーパークラス型の変数には無条件で代入できるけど
サブクラス型の変数へはキャストが必要になる
キャストは強引に型を変換するから代入したものが本当にその型でなければ当然死ぬ

230 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:02:29 ]
>>224
>>226

仮想変数というものは寡聞にして知らないのだが:

Javaのインスタンスメソッドは全部C++でいう仮想関数だし、
純粋仮想関数(=0)はabstractで宣言したメソッドが該当するぞ。

何もしない
foo() {}
のようなメソッドではなく
abstract foo();
と宣言しておくことで、サブクラスでの実装を強制できる。






231 名前:Tomcatについての相談ですが・・・ [2007/07/29(日) 17:58:06 ]
『やさしいJava活用編第2版』の学習をした方、あるいはTomcatを使ったことがある方が
いましたら以下の問題の解決にご協力くださいm(_ _)m。

付録CD-ROM内のTomcat 5.5をウィザードに従ってインストールしたのですが
すべてのプログラム→Apache Tomcat 5.5 →Monitor Tomcatという風にTomcatを
起動しようとしても、

   (X) アクセスが拒否されました。

      Unable to open the Service Manager


と表示され、プログラムを起動することができません。



インストールする際に、麻奈本に載っていたスクリーンショットではUser Nameがadmin、
Passwordが空欄だったにも関わらず、ユーザー名とパスワードを設定してインストール
したのが原因なのかな?と思い、アンインストールし、パスワードを設定せずにインストール
し直しましたが駄目でした。

ちなみにOSはWindows Vista Home Basicです。


よろしくお願いします。m(_ _)m

232 名前:232 mailto:sage [2007/07/29(日) 19:44:19 ]
dream.mods.jp/news/tomcat.html

むむぅ・・・これが解決策なんでしょうか・・・。
Sysdeoっていうソフトを見つけてくればいいのかな。


233 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 11:09:35 ]
流れぶった切ってスマソ

Javaをまじめに始めて3日ぐらいなんだけど、
PHPで言う所のsystem(); みたいなものって
Javaにもある?

234 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 13:42:09 ]
くだすれでも聞きにくい超低レベルな質問というか確認なのですが・・・

現在c: >Program Files >javaに入っているフォルダが

jdk1.5.0_11
jdk1.5.0_12
jre1.5.0_11
jre1.5.0_12
jre1.6.0_01

となってます。古いバージョンが残っているようなのですが、最新バージョンを入れても
古いものが上書きされるのでなく、旧バージョンは手動で削除する必要があるのでしょうか?

この場合は
jre1.6.0_01、jdk1.5.0_12を残して他はすべてフォルダごと削除してもOKなのでしょうか?

幼稚な質問ですがよろしくお願いします。

235 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 18:58:34 ]
プログラムの追加と削除でアンインストール。

236 名前:デフォルトの名無しさん mailto:java [2007/07/30(月) 20:19:11 ]
>>233
PHPのsystem();がどんなものか分からんが
外部プログラムを起動するCのsystem関数に相当することをやるならProcessBuilderクラス
もし外部プログラムに対する入出力が必要ならProcessBuilder#startで得られるProcessインスタンスから
入出力のストリームをもらえ

でもjavaを始めて3日で外部プロセスに依存するなんていかんよ
まずはpure javaプログラムでどこまでできるか勉強したほうがいい

237 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:33:45 ]
>>231
c:\programfileじゃないとこだったら
入ったよ。
一応、unc無効にしてからやったけど。

238 名前:237 mailto:sage [2007/07/30(月) 20:37:07 ]
みすった。
uncじゃなくてuacだった。

239 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:41:08 ]
>>236

おぉ、thx!

ProcessBuilder builder = new ProcessBuilder("notepad");

こういうことか。
いや、簡単なランチャー作れるね。

> PHPのsystem();がどんなものか分からんが
system("notepad",$retval);
こんな感じ。

> まずはpure javaプログラムでどこまでできるか勉強したほうがいい
今は基本部分やっとります。
延長上にそれがあるなら、楽しいなと思ってね。

ありがとう。

240 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:51:20 ]
>>239
そうそう、そんな感じ
そのあとbuilder.start()で実際にプロセスを起動する
どんな言語もそうだけどjavaもいろいろ楽しいから楽しみながらがんばれ



241 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 23:02:58 ]
あまり汎用性はないが、1.6だとGUI上のシェルみたいに
desktop.browse(uri)
desktop.open(file)
とかもできるようになった。


242 名前:デフォルトの名無しさん [2007/08/01(水) 02:52:35 ]
232へ
違うだろ。
これはあくまでもEclipseの場合じゃないかな?
サイトを見た限り。
で?できた?
この板ではなく別の板かサイトを見たほうがいいと思うよ。


243 名前:231=232 mailto:sage [2007/08/01(水) 12:00:11 ]
>>242

>>232のサイトだと、Tomcatをインストーラーを使わずにzipでダウンロードし、
手動で導入すれば、フォルダのtomcat6.exeをクリックでとりあえず起動できる
ようになるということですよね。

さらにEclipse+Sysdeoを使えば普通にコントロールできるようになると・・・。

すみません。それらの方法はまだ試していません・・・。

一応全てのコードをメモ帳手打ちで学習したかったので、狭い部屋の狭い机の
Vista PCをどかして、XPのノートPCにTomcatを入れたら普通に動いたので
なんとか学習を継続しています。

244 名前:デフォルトの名無しさん [2007/08/01(水) 16:03:01 ]
いいんじゃないの?
それで。
しかし2台もPC持っているのはすごいな。
でも2台Windowsなのはもったいないから。
XPで学習が終わり次第、Linuxを入れよう。
幅が広がるよ。


245 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:19:22 ]
PC2台って別にすごくないし珍しくも無いよ
特にこの板とかだとね

246 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:47:43 ]
誰もメモ帳につっこまないw

247 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 18:50:15 ]
>>245がKYだなw

248 名前:231=232 mailto:sage [2007/08/03(金) 01:34:03 ]
もう一つお願いします(汗)。

サーブレット(Sample6.java)をコンパイルしようとしたのですが、コンパイルエラーとなり、

import mybeans;

の文が指摘されました(mybeansはサーブレットと同じディレクトリに属すフォルダ名です)。

「.」が無いということなので、次は「import mybeans.*;」に修正してコンパイルしても、
パッケージmybeansは存在しませんと言われてしまいます。

あるはずのパッケージがコンパイルにおいて認識されない場合、どういった原因が考えられ得る
でしょうか。ご教示いただけるとありがたいです。


Tomcatをインストール →(省略)→ WEB-INF →→ classes →→→Sample6.java
したディレクトリ                                         |
                                                       → mybeansフォルダ → CarBean.java

249 名前:248 mailto:sage [2007/08/03(金) 02:09:26 ]
「やさしいJava 活用編 "import mybeans"」でググってみたら
「Java質問・相談スレッド102」でも全く同じ相談があったらしく、その人は自力で
解決できたみたいですけ、原因が分からなかったとか。

250 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 11:45:06 ]
コンパイルって何を使ってんの?コマンドライン?



251 名前:248 mailto:sage [2007/08/03(金) 11:49:14 ]
>>250
javacを使用しています。

252 名前:248 mailto:sage [2007/08/03(金) 11:56:11 ]
コマンドプロンプトを使ってjavac Sample6.javaと入れてコンパイルを試みています。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<302KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef