【初心者】Java質問・相談スレ4【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNGなお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。雑誌や宿題などの疑問を質問するときは出展を明記した
ほうが解決が早いです。
関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)
JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/
パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/
上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/
基本的にsage進行でおねがいします。
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGパラメータとして呼び出し元の参照を受け取っておく。
0405デフォルトの名無しさん
NGNGメニューボックスから「二重丸」か「五芒星」か「文字列」を選んで、クリックした場所にそれぞれ二重丸や五芒星や文字列を書くアプレットを考えます。
再描画とかがあるので、できた二重丸クラスや五芒星クラスや文字列クラスを配列に格納していくとします。
でもappletのpaint()メソッドで、いちいち
public void paint(Graphics g){
for(int i = 0;i<myVector.size();i++){
if(myVector.elementAt(i) instanceof TwinCircle){
((TwinCircle)myVector.elementAt(i)).drawTwinCircle(g);
}else if(myVector.elementAt(i) instanceof Pentagon){
((Pentagon)myVector.elementAt(i)).drawPentagon(g);
}else if・・・
とかやって「自分で」クラスによって処理を分岐させるのは面倒ですね。クラスが多くなると氏にたくなります。
pubilc interface drawable{
public void draw(Graphics g);
}というインタフェースを定義してやれば、
二重丸クラス、五芒星クラス、文字列クラスがそれぞれこのインタフェースをimplementsして、
drawメソッドを上書きしておくことで、メインのアプレットのpaintメソッドは
public void paint(Graphics g){
for(int i = 0;i<myVector.size();i++){
((drawable)(myVector.elementAt(i)).draw(g);
}
}
で済みます。つまり自動的にjavaがクラスに応じてそのクラスのdrawメソッドを呼び出してくれます。
これはインタフェースでなくクラスの継承でもできますが、例えば座標と半径を持つ円クラスを親クラスとして、二重丸クラスと五芒星クラスには半径rを適用できますが、文字列クラスには半径rは意味がありません。
振る舞いの大きく異なるクラスはインタフェースで結んだ方が良いです。
0406Polymorphism
NGNGあのな・・・多態性を忘れているぞ。
インタフェースの最大の意義である多態性を説明しなけりゃどうにもならん。
関数ポインタっーか関数オブジェクトもそれ抜きには始まるまい。
・・・「多態性」でググってみてくれ。長すぎる話になるから。
その上で分からない部分を聞きに来てくれ。スマヌ。
0407デフォルトの名無しさん
NGNGって言うか、
文字列は円である。
はばかげていると思わないかい?
0408Polymorphism
NGNG理解すれば、なるほど!と膝を打つから。
0409デフォルトの名無しさん
NGNGよく考えれば分かると思うけど、
戻り値が不定なメソッドを作ったとしても
利用のしようが無い。
0410初心者君。(俺も独習Java)
NGNG抽象メソッドをオーバーライドしてメソッドを作る場合って引数とか戻り値を変えないと
意味が無いように思えるんですが。
う〜んイマイチ理解できましぇん。
0411デフォルトの名無しさん
NGNGそうすると多態と言うオーバーライドの目的の一つが使用できなくなります。
その考え方ならオーバーライドなんて無くてもいい。全部隠匿すればいいんだから。
0412デフォルトの名無しさん
NGNG抽象メソッドを作る時点で
役割が決まってるんだから
返り値も当然決まってる筈だろ?
0413デフォルトの名無しさん
NGNGつぅか継承も否定することになりそうな。
0414398
NGNGなんとなくは分かったような気がするのですが、
分からない部分がうまく言葉にならないので、明日一日考えてみます。
皆様、ありがとうございます。
多態性についても検索してみます。
0415デフォルトの名無しさん
NGNGたとえば「DATE」というのを見つけたらその次の数値を表示させるなど)
をしたいんですが教えてもらえませんでしょうか
0416H
NGNG//--------------------
for (i=24;i>=0;i--) {
image[i]=Image.createImage(20,20);
image[i].getGraphics().drawImage(imgPic,
-20*(i%5),-20*(i/5),
Graphics.LEFT|Graphics.TOP);
わかりますか??(>_<)
0417デフォルトの名無しさん
NGNG// 書き込み
Hashtable table = new Hashtable();
…
ObjectOutputStream out = null;
try{
out = new ObjectOutputStream(new FileOutputStream("hoge.ser"));
out.writeObject(table);
} finally {
try{if(out != null) out.close();}catch(IOException ex){/* */}
}
// 読み込み
ObjectInputStream in = null;
Hashtable table = null;
try{
in = new ObjectInputStream(new FileInputStream("hoge.ser"));
table = (Hashtable)in.readObject();
} finally {
try{if(in != null) in.close();} catch(IOException ex){/* */}
}
まぁ例外処理はお好きなように。
0418デフォルトの名無しさん
NGNGとりあえず StringTokenizer を使ってみろと言っておく。
0419デフォルトの名無しさん
NGNGClassNotFoundになっちゃうんですけど。
0420デフォルトの名無しさん
NGNGImage は抽象クラスなので BufferedImage(20,20,BufferedImage.TYPE_INT_RGB)
でも使え。
あと、Graphics.drawImage の引数4個版の第四引数はImageObserverなので変。
内容的にはimgPicの画像を使った16パズル系のゲームのピースイメージのロード。
ピースは20×20のサイズで元絵は100×100。
5×5ピースだが24個しか無いのは右下の1ピースは移動用に開けてある為。
0421デフォルトの名無しさん
NGNGアプレットタグが間違ってないか?
0422デフォルトの名無しさん
NGNGappletviewer で ClassNotFound になるか確認すれ
0423デフォルトの名無しさん
NGNGそのデータ見せてみ
0424デフォルトの名無しさん
NGNGjavac -version 1.1 Hoge.java
で試してみ
0425424
NGNGだったよ。すまそ
0426デフォルトの名無しさん
NGNGつまり
Vector v = new Vector();
while (hoge.hasNext()){
Object[] oa = new Object[hoge.getSize()];
for(int i = 0; i < oa.length; ++i){
oa[i] = hoge.getData(i);
}
v.add(oa);
hoge.next();
}
みたいな感じでVectorにObject[]流し込むんだけど、これをObject[][]で得たいのよ。
いまのところ
Object[] oa = v.toArray();
Object[][] oaa = new Object[oa.length][];
for(int i = 0; i < oa.length; ++i){
oaa[i] = (Object[])oa[i];
}
ってやってるんだけどね。
0427デフォルトの名無しさん
NGNGObject[][] array = v.toArray( new Object[v.size()][] );
ではダメなのか?
0428415
NGNG>>423
--sample.txt---
〜
SampleA
1 32.1 23.4
2 11.2 21.2
SampleB
1 15
2 24
3 55
・・
・・
--------
みたいなデータでこのtxtからSampleBを呼んでそこの次の行からの二行ずつの数値を
配列に取り込みたいんです。
どうかよろしくお願いします。
0429デフォルトの名無しさん
NGNGLineNumberReader使って、1行づつ読んでみればいかがでしょうか。
LineNumberReader reader
= new LineNumberReader( new FileReader("sample.txt"));
String str = reader.readLine();
みたいな感じでreader.readLine()で1行づつとってこれるから。
とりあえず、SampleBと一致するまでは簡単でしょ。
次の行からは適当にパースしてみ。
0430デフォルトの名無しさん
NGNG0431恐れながら・・・
NGNG英和辞典で調べてもありませんでした・・・。
よろしくお願いします。
0432デフォルトの名無しさん
NGNG言語
0433431
NGNGどうもありがとうございます。
languageの略だったのか・・・鬱だ
0434デフォルトの名無しさん
NGNGlanguageのabbrriationじゃないっすかね?
0435デフォルトの名無しさん
NGNGabbreviation
0436デフォルトの名無しさん
NGNG遅レスかつ自分の知識をひけらかしたい&間違い。
0437デフォルトの名無しさん
NGNGマァマァ。
みんなそんなもんさ。
0438デフォルトの名無しさん
NGNGlanguageですよ。
0439415
NGNG>>429,230
readLine()を使うのは分かるんですがそこから先が良く分かりませんでした。
やりたいこととしては、SampleBまでtxt内容を読まずにすすみSampleBの書いてある行を見つけたらそこから次の行から
処理を行えるようにしたいんです。
この「SampleBを見つけ出す」ってのはどうすればいいんでしょうか
厨房な質問ですみません。
0440デフォルトの名無しさん
NGNGどこかにインデックスでも作っておかない限りそんなことは出来ないよ?
0441デフォルトの名無しさん
NGNGimport java.util.StringTokenizer;
・・・
boolean isDataHeaderFound;
int line,counter;
int dataList[] = new int[MAX];
String tmp = new String();
StringTokneizer st;
while(!(s = bf.readLine(line)) = null){
st = new StringTokenizer(s);
if(!isDataHeaderFound){
if((st.nextToken()).equals("SampleB")){//文字列の比較は等号を用いない
isDataHeaderFound = true;counter = line+1;
}
} else {
dataList[line-counter] = Integer.parseInt(st.nextToken());
//Integerクラスのstaticメソッド、parseIntを呼び出している。
}
}
・・・
line++;
}
0442デフォルトの名無しさん
NGNGユーザーからの入力(次の指して)を待つときは
ポーリングするのがいいのでしょうか?
他にいい方法があれば教えてください。
0443426
NGNGObject[][] array = (Object[][])v.toArray( new Object[v.size()][] );
でイケたよ。
さんくす。引数付きのtoArrayってこうやって使うんだね。
0445デフォルトの名無しさん
NGNGイベントドリブンに頼ってみる。
0446デフォルトの名無しさん
NGNGデータメンバはなんていうの?
0447デフォルトの名無しさん
NGNGC++で言うメンバ変数はフィールド。広義のプロパティでもあるかも。
0448446
NGNG0449デフォルトの名無しさん
NGNGインスタンス変数
0450デフォルトの名無しさん
NGNG送ったときに、実行されるコードをさしてたんだよね。
オブジェクトがどのクラスのインスタンスかによって、実行される
コードが違うから。
だから「メソッド探索」っていうんだよ、「メソッド選択」じゃなくて。
探索して探し当てたものがメソッドだから。
メンバ関数を「メソッド」って言うようになったのは、Javaが出てきてからの気がする。
0451デフォルトの名無しさん
NGNGイベントドリブンの意味はわかるんですけど、
オセロの入力にどう使うんですか?
マウスイベントが発生するまで
ポーリングするというのが、
一番普通に思いつく方法なんですが・・・・
他にいいのありますかねー?
この方法は、ソースコードが汚いので、気分的になんかいやなんですよね。
0452デフォルトの名無しさん
NGNGイベントドリブンとか、ポーリングとか、意味を本当に理解していますか?
イベントドリブンはイベントが発生するまで待っているという方式。待っている間、
居眠りしていようが、別の仕事をやっていようが構わない。
それに対して、ポーリングは常にこちらから相手のイベント送出があったかどうかを、
聞き回る方式です。通常、イベントを発生する相手は複数あり、これを巡回して注文を
聞き回り、なければ次の相手…、と進め、一巡したら(場合によっては少しインタバルを
置いて)また初めからご用聞きに回る…というやりかたですよ。
このイベントが発生したらこのプロセスが動き出すという仕掛けになっているのが、
イベントドリブンという方式です。OOの基本概念の一つと言ってもいい。これを
きちんと理解しないと、Javaは使いこなせませんよ♪
0453デフォルトの名無しさん
NGNGJava以前からも言ってた気が。
0454デフォルトの名無しさん
NGNGlanguage
0455デフォルトの名無しさん
NGNG>>436
0456デフォルトの名無しさん
NGNGlang くらいで知識をひけらかせていると考えるヤツって、どういう知識を他にもってんだ?
0457デフォルトの名無しさん
NGNGそりゃそうなんだろうけど、ロウレベルでの処理を考えてしまうと
そんなんどうでもいいや、という感じだよね。
おいら、あんまり抽象的な考えかたって出来ない…。
0458デフォルトの名無しさん
NGNG>ロウレベルでの処理を考えてしまうと
Javaで考える必要ないと思うぞ?
0461デフォルトの名無しさん
NGNG表示されないぞ。駆動はイベントディスパッチャーにまかせとけ。
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNG知らなくてもいい事という意識で調べてもいない。
実際、あるのか?そんな方法。
0464デフォルトの名無しさん
NGNGJDK 1.0 AWT Programming
0465デフォルトの名無しさん
NGNGあれもどうかとおもうけどね。
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNGunicode表を読もう。
0468466
NGNGらくらくぽんでやりたい。
0469デフォルトの名無しさん
NGNGらくらくぽんでやってください。
0470466
NGNGやりかた知らない?
イガぴょんのライブラリってどうなん?
0471デフォルトの名無しさん
NGNG>>467
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNGOK。>>466は放置で。
0474420
NGNG0475415
NGNG>>441
それを元にいろいろ試してみたんですが上手くいきませんでした。
できればここをおしえてもらいたいです。
while((s=f.readLine())!=null){
で一行ずつ読んでいって
その一行にSampleAという文字がなければ次の行、
もしあればそこでwhile文を抜けたいんです。
この書き方を教えてもらえませんでしょうか。
441さんのやつで一応やったんですがどうもエラーがでてしまいました。
よろしくお願いします
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG配列はポインタのインクリメント以外で参照したくないぜー!とか言う人間には向いてない。
0478デフォルトの名無しさん
NGNG私は添え字も使いますよ!
0479478
NGNG0480デフォルトの名無しさん
NGNGって言うかごちゃごちゃ言う前にさわればよかろう。
必要なものは無料だ。
時間は腐るほどあるだろう。
0481デフォルトの名無しさん
NGNG本が高いので・・・・
0482名無しさん
NGNGttp://localhost/test.html?name=xx
このnameをtest.html上に設置しているAppletで取得したいのですが、
こういうことはできるんでしょうか?
appletタグにparamをつければ動作できるのですが、
呼び出し元からパラメータを送り込んでやりたいのです。
アドバイスください。よろしくお願いいたします。
0483デフォルトの名無しさん
NGNGJavaScript PHP CGI。。。
0484デフォルトの名無しさん
NGNGCGI
0485デフォルトの名無しさん
NGNGServlet/JSP
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG1. アプレットに getHogehoge(String) というメソッドを付けておく
2. アプレットタグに <APPLET ... NAME="aaa" MAYSCRIPT> を付けておく
3. JavaScript で name の値を取得し、aaa.setHogehoge(name) で設定する
0488H
NGNG//--------------------
for (i=24;i>=0;i--) {
image[i]=Image.createImage(20,20);
image[i].getGraphics().drawImage(imgPic,
-20*(i%5),-20*(i/5),
Graphics.LEFT|Graphics.TOP);
わかりますか??(>_<)
0489デフォルトの名無しさん
NGNGservletを作ろうとしているんですけど
どうやって環境を構築していいんか訳わかんなくなってしまいました
サンのHPにいってJ2SEとJ2EEをそれぞれ落としてきて
インストールしたんですけど、いざjavax.servletをインポート
してコンパイルしようとするとエラーでこけちゃいます
servletの開発環境としてJ2EEとJ2SEのほかにまだ必要な
ものがいるんでしょうか?
どなたかアドバイスください。よろしくおねがいします
0490デフォルトの名無しさん
NGNGお前、まったく同じ書き込みを昨日もしたろ。氏ねや糞ボケ。
0491デフォルトの名無しさん
NGNG自分の分をわきまえろ。
0493中坊
NGNG’@’を’( ’に変換し、問題の番号を挿入するものを
作ろうとしています。
実際作って色々と試しているのですが,エラーがでてはかどりません。
簡単なプログラムですが、なにぶん中坊なのでよくわかりません。
すいませんが、アドバイスをください。
よろしくおねがいします。
プログラムはこれです。
import java.io.*;
public class Ren1{
public static void main(String args[]){
String str= new String("794年@(平安京)が建てられる1192年@(鎌倉幕府)樹立");
StringBuffer str2= new StringBuffer(str);
int cnt=1;
for(int i=0;i<str2.length();i++){
if((str2.charAt(i))=='@')
str2 =str2.replace('@','(');
str2= str2.delete (i,i+1);
str2= str2.insert(i+1,cnt);/*問題番号を挿入する*/
cnt++;
}
System.out.println(str2);
System.out.println(str2);}
}
0494デフォルトの名無しさん
NGNGJ2SE を入れた後に TOMCAT を入れなければならないのですか?
あ、Apache は DSO が ON で入ってます。
0495デフォルトの名無しさん
NGNGしつこいな、クソ人間。
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGまた、映画「TOP GUN」ではTom Cruiseらが操縦する機体として登場しました。
比較的人気のある機体であり、例によって私もF-14フリークです。
0498デフォルトの名無しさん
NGNGJSPに関するQAスレッド
http://pc3.2ch.net/test/read.cgi/tech/1014905560/
Servlet/JSPのフレームワークを語るスレ
http://pc3.2ch.net/test/read.cgi/tech/1001950590/
0499デフォルトの名無しさん
NGNGこのスレに同じ質問があったはず
0500デフォルトの名無しさん
NGNG色々と問題(StringBufferのメソッドを理解してない)とかあるが、一番の問題は
どういう出力を望むのかイマイチ分からないこと。
794年(1(平安京)が建てられる1192年(2(鎌倉幕府)樹立
と表示したいのか?
初心者としては StringBuffer を使っているところは評価したい。
StringBufferに関してはAPIのヘルプを熟読すれば自力でなんとかなると思う。
APIは日本語版のヘルプがあるのでなめるように読みふけること。
0501デフォルトの名無しさん
NGNG凡ミスとしてループ内の文字検索 if((str2.charAt(i))=='@') の効果範囲がおかしい。
「@を見つけた時だけ」行わせたい処理なのに、その他の文字を見つけたときも
実行している。
しかし、これはコンパイルでは発見されない先走ったアドバイス。
まずはStringBufferを完璧に使いこなせるように色々とやってみよう。
コンパイルが通った後で、頭を絞ってデバッグするのだ〜
0502中坊
NGNG出力結果は
794年(1平安京)が建てられる1192年(2鎌倉幕府)樹立
この様な感じにしたいんですが
やってみると中々出来ないんですが、奮闘中です。
■ このスレッドは過去ログ倉庫に格納されています