トップページ⇒tech
1001コメント322KB

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

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ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進行でおねがいします。
0439415NGNG
レスありがとうございます
>>429,230
readLine()を使うのは分かるんですがそこから先が良く分かりませんでした。
やりたいこととしては、SampleBまでtxt内容を読まずにすすみSampleBの書いてある行を見つけたらそこから次の行から
処理を行えるようにしたいんです。
この「SampleBを見つけ出す」ってのはどうすればいいんでしょうか
厨房な質問ですみません。
0440デフォルトの名無しさんNGNG
内容を読まずにどうやって SampleB の位置を見つける気?
どこかにインデックスでも作っておかない限りそんなことは出来ないよ?
0441デフォルトの名無しさんNGNG
>439 じゃ何らかのBufferedReader bfは作ったとして。
import 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
おセロのゲームのを作っているのですが、
ユーザーからの入力(次の指して)を待つときは
ポーリングするのがいいのでしょうか?

他にいい方法があれば教えてください。
0443426NGNG
御疎レスすまそ
Object[][] array = (Object[][])v.toArray( new Object[v.size()][] );
でイケたよ。
さんくす。引数付きのtoArrayってこうやって使うんだね。
0444426NGNG
>>443は>>427ね

>>442
イベントは使えんの?
0445デフォルトの名無しさんNGNG
>>442
イベントドリブンに頼ってみる。
0446デフォルトの名無しさんNGNG
メンバ関数はメソッドって言うけど
データメンバはなんていうの?
0447デフォルトの名無しさんNGNG
>>446
C++で言うメンバ変数はフィールド。広義のプロパティでもあるかも。
0448446NGNG
φ(・・)ほうほう
0449デフォルトの名無しさんNGNG
>>446
インスタンス変数
0450デフォルトの名無しさんNGNG
もともと「メソッド」っていうのは、オブジェクトにメッセージを
送ったときに、実行されるコードをさしてたんだよね。
オブジェクトがどのクラスのインスタンスかによって、実行される
コードが違うから。
だから「メソッド探索」っていうんだよ、「メソッド選択」じゃなくて。
探索して探し当てたものがメソッドだから。
メンバ関数を「メソッド」って言うようになったのは、Javaが出てきてからの気がする。
0451デフォルトの名無しさんNGNG
>イベントドリブン
イベントドリブンの意味はわかるんですけど、
オセロの入力にどう使うんですか?

マウスイベントが発生するまで
ポーリングするというのが、
一番普通に思いつく方法なんですが・・・・
他にいいのありますかねー?

この方法は、ソースコードが汚いので、気分的になんかいやなんですよね。
0452デフォルトの名無しさんNGNG
>>451
イベントドリブンとか、ポーリングとか、意味を本当に理解していますか?
イベントドリブンはイベントが発生するまで待っているという方式。待っている間、
居眠りしていようが、別の仕事をやっていようが構わない。
それに対して、ポーリングは常にこちらから相手のイベント送出があったかどうかを、
聞き回る方式です。通常、イベントを発生する相手は複数あり、これを巡回して注文を
聞き回り、なければ次の相手…、と進め、一巡したら(場合によっては少しインタバルを
置いて)また初めからご用聞きに回る…というやりかたですよ。
このイベントが発生したらこのプロセスが動き出すという仕掛けになっているのが、
イベントドリブンという方式です。OOの基本概念の一つと言ってもいい。これを
きちんと理解しないと、Javaは使いこなせませんよ♪
0453デフォルトの名無しさんNGNG
>>450
Java以前からも言ってた気が。
0454デフォルトの名無しさんNGNG
>>431
language
0455デフォルトの名無しさんNGNG
>>454

>>436
0456デフォルトの名無しさんNGNG
>>455
lang くらいで知識をひけらかせていると考えるヤツって、どういう知識を他にもってんだ?
0457デフォルトの名無しさんNGNG
>452
そりゃそうなんだろうけど、ロウレベルでの処理を考えてしまうと
そんなんどうでもいいや、という感じだよね。
おいら、あんまり抽象的な考えかたって出来ない…。
0458デフォルトの名無しさんNGNG
>>457
>ロウレベルでの処理を考えてしまうと
Javaで考える必要ないと思うぞ?
0459457NGNG
>>458
0460457NGNG
ごめん。途中で送ってしまった。
>>458
もちろん考える必要はないですし、むしろ考えるべきではないですね。
でも、考えてしまう自分が嫌だというか。
0461デフォルトの名無しさんNGNG
Java の GUI 使ったゲームでポーリングなんかしたら画面が
表示されないぞ。駆動はイベントディスパッチャーにまかせとけ。
0462デフォルトの名無しさんNGNG
ボーリングゲームは作れないんですか?
0463デフォルトの名無しさんNGNG
つか、Listener使わないでマウスイベント拾う方法って知らない。
知らなくてもいい事という意識で調べてもいない。
実際、あるのか?そんな方法。
0464デフォルトの名無しさんNGNG
>>463
JDK 1.0 AWT Programming
0465デフォルトの名無しさんNGNG
>>464
あれもどうかとおもうけどね。
0466デフォルトの名無しさんNGNG
Javaで平仮名→片仮名変換やら半角全角変換やらは、どうやったらできるですか?
0467デフォルトの名無しさんNGNG
>>466
unicode表を読もう。
0468466NGNG
>>467
らくらくぽんでやりたい。
0469デフォルトの名無しさんNGNG
>>468
らくらくぽんでやってください。
0470466NGNG
>>469
やりかた知らない?
イガぴょんのライブラリってどうなん?
0471デフォルトの名無しさんNGNG
>>470

>>467
0472デフォルトの名無しさんNGNG
カマって君は放置してくれる?
0473デフォルトの名無しさんNGNG
>>472
OK。>>466は放置で。
0474420NGNG
あ、5×5ピースあるじゃん・・・何見てるんだ俺。
0475415NGNG
レスありがとうございます
>>441
それを元にいろいろ試してみたんですが上手くいきませんでした。
できればここをおしえてもらいたいです。
while((s=f.readLine())!=null){
で一行ずつ読んでいって
その一行にSampleAという文字がなければ次の行、
もしあればそこでwhile文を抜けたいんです。
この書き方を教えてもらえませんでしょうか。
441さんのやつで一応やったんですがどうもエラーがでてしまいました。
よろしくお願いします
0476デフォルトの名無しさんNGNG
JavaはC厨でも身につけられますか?
0477デフォルトの名無しさんNGNG
>>476
配列はポインタのインクリメント以外で参照したくないぜー!とか言う人間には向いてない。
0478デフォルトの名無しさんNGNG
>>477
私は添え字も使いますよ!
0479478NGNG
とりあえずJavaの本を買ってくるか・・・・
0480デフォルトの名無しさんNGNG
>>478
って言うかごちゃごちゃ言う前にさわればよかろう。
必要なものは無料だ。
時間は腐るほどあるだろう。
0481デフォルトの名無しさんNGNG
>>480
本が高いので・・・・
0482名無しさんNGNG
URLに有るパラメータで、
ttp://localhost/test.html?name=xx
このnameをtest.html上に設置しているAppletで取得したいのですが、
こういうことはできるんでしょうか?
appletタグにparamをつければ動作できるのですが、
呼び出し元からパラメータを送り込んでやりたいのです。
アドバイスください。よろしくお願いいたします。
0483デフォルトの名無しさんNGNG
>>482

JavaScript PHP CGI。。。
0484デフォルトの名無しさんNGNG
>>482
CGI
0485デフォルトの名無しさんNGNG
>>482
Servlet/JSP
0486デフォルトの名無しさんNGNG
Rudy Perl
0487デフォルトの名無しさんNGNG
>>482
1. アプレットに getHogehoge(String) というメソッドを付けておく
2. アプレットタグに <APPLET ... NAME="aaa" MAYSCRIPT> を付けておく
3. JavaScript で name の値を取得し、aaa.setHogehoge(name) で設定する
0488HNGNG
//ピースイメージ生成
//--------------------
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デフォルトの名無しさんNGNG
かなり恥ずかしい質問ですんません
servletを作ろうとしているんですけど
どうやって環境を構築していいんか訳わかんなくなってしまいました
サンのHPにいってJ2SEとJ2EEをそれぞれ落としてきて
インストールしたんですけど、いざjavax.servletをインポート
してコンパイルしようとするとエラーでこけちゃいます
servletの開発環境としてJ2EEとJ2SEのほかにまだ必要な
ものがいるんでしょうか?
どなたかアドバイスください。よろしくおねがいします
0490デフォルトの名無しさんNGNG
>>488
お前、まったく同じ書き込みを昨日もしたろ。氏ねや糞ボケ。
0491デフォルトの名無しさんNGNG
>>489
自分の分をわきまえろ。
0492420NGNG
>>488
>>420, >>474 で答えた俺は小一時間説教しようと思うんだが?
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デフォルトの名無しさんNGNG
Linux に Tomcat を入れたいんですけど、
J2SE を入れた後に TOMCAT を入れなければならないのですか?

あ、Apache は DSO が ON で入ってます。
0495デフォルトの名無しさんNGNG
>>494
しつこいな、クソ人間。
0496デフォルトの名無しさんNGNG
クソはおめーだろ
0497デフォルトの名無しさんNGNG
米海軍の艦上戦闘機F-14 TomcatはVG可変翼装備のスタイリッシュな機体です。
また、映画「TOP GUN」ではTom Cruiseらが操縦する機体として登場しました。
比較的人気のある機体であり、例によって私もF-14フリークです。
0498デフォルトの名無しさんNGNG
まずは検索

JSPに関するQAスレッド
http://pc3.2ch.net/test/read.cgi/tech/1014905560/
Servlet/JSPのフレームワークを語るスレ
http://pc3.2ch.net/test/read.cgi/tech/1001950590/
0499デフォルトの名無しさんNGNG
>>489
このスレに同じ質問があったはず
0500デフォルトの名無しさんNGNG
>>493
色々と問題(StringBufferのメソッドを理解してない)とかあるが、一番の問題は
どういう出力を望むのかイマイチ分からないこと。

794年(1(平安京)が建てられる1192年(2(鎌倉幕府)樹立

と表示したいのか?


初心者としては StringBuffer を使っているところは評価したい。
StringBufferに関してはAPIのヘルプを熟読すれば自力でなんとかなると思う。
APIは日本語版のヘルプがあるのでなめるように読みふけること。
0501デフォルトの名無しさんNGNG
>>493
凡ミスとしてループ内の文字検索 if((str2.charAt(i))=='@') の効果範囲がおかしい。
「@を見つけた時だけ」行わせたい処理なのに、その他の文字を見つけたときも
実行している。

しかし、これはコンパイルでは発見されない先走ったアドバイス。
まずはStringBufferを完璧に使いこなせるように色々とやってみよう。

コンパイルが通った後で、頭を絞ってデバッグするのだ〜
0502中坊NGNG
501さん,502さんアドバイスありがとうございます。
出力結果は
794年(1平安京)が建てられる1192年(2鎌倉幕府)樹立
この様な感じにしたいんですが
やってみると中々出来ないんですが、奮闘中です。

0503デフォルトの名無しさんNGNG
>>502
夢壊して悪いんだが正規表現クラスでぱっぱっぱじゃ駄目?
0504中坊NGNG
>>503さん
すみませんが,サンプルを教えて頂けないでしょうか?
0505デフォルトの名無しさんNGNG
正規表現ねぇ・・・
ttp://www.ingrid.org/jajakarta/regexp/
なんかは定番だけど、StringBufferとかでギコギコやるやり方覚えて
からじゃ駄目かな?
色々奮闘努力することが基礎力UPに繋がるじゃない。
煮詰まったあげくに突然「あ」と理解が進む瞬間の快感を若いうちは
大事にして欲しいな。
0506デフォルトの名無しさんNGNG
>>505
まぁ、半分冗談だからね。
初めのうちはアルゴリズムとどろどろになりながら戦うのをおすすめするけど。
0507デフォルトの名無しさんNGNG
こっちは試したこともないんだが、どっちの方がより定番の正規表現?
ttp://www.cacas.org/java/gnu/regexp/
0508なんとなくジサクジエンしてみるNGNG
前者はBSDタイプのライセンスなのでGPLに縛られた後者より自由に使える。
と思っているのだが。>正規表現
0509デフォルトの名無しさんNGNG
>>508
文章わかんないよ。

前者はBSDタイプのライセンス
後者はGPLに縛られたもの

ってこと?んじゃ、後者の方が自由に使えるじゃん。
0510デフォルトの名無しさんNGNG
サーブレットなのだが本とかに書いてある例だとHTMLとサーブレット
が1対1なのだが
HTMLが5個あってもサーブレットを1つにしてそれぞれ別の処理もできるんだろうけど
やり方がわからん
HTMLに<input type="hidden" name="flag".. でフラグを埋め込んでサーブレットで
getParamaterで受け取って判断させるとか考えたけどもっとスマートなやり方あったら
教えてください
0511デフォルトの名無しさんNGNG
>>508
ソース隠匿主義?
MSの回し者?
0512デフォルトの名無しさんNGNG
>>510
refererとるくらいだろ。
0513デフォルトの名無しさんNGNG
>>509
GPLの物を使ったらはGPLの物しか作れないのを知らないのか?
0514デフォルトの名無しさんNGNG
>>510
web.xml にサーブレットの振替名を 5 つ定義しとけ。
0515デフォルトの名無しさんNGNG
j2sdk-1_3_1_04 で TOMCAT を入れたいんですが
TOMCAT のバージョンてv3.3.1で良いんでしょうか?

しかもApacheのモジュールが
mod_jk-3.3-ap13-eapi.so 27-Mar-2002 05:46 93K
mod_jk-3.3-ap13-eapi.so.asc 27-Mar-2002 05:46 285
mod_jk-3.3-ap13-noeapi.so 27-Mar-2002 05:46 93K
mod_jk-3.3-ap13-noeapi.so.asc 27-Mar-2002 05:46 285
mod_jk-3.3-ap20.so 27-Mar-2002 05:46 114K
mod_jk-3.3-ap20.so.asc 27-Mar-2002 05:46 285

こんなにあってどれをつかってよいやらわかりません!!
0516デフォルトの名無しさんNGNG
>>513 = >>508 なの?
0517508NGNG
>>516
違うよ。
0518513=517!=508NGNG
すまん。俺は>>508じゃなくて>>513だった。
0519デフォルトの名無しさんNGNG
ジサクジエンしているヤツはほっとけ。
0520デフォルトの名無しさんNGNG
StringをDateに変換する標準的な方法を教えてください
0521デフォルトの名無しさんNGNG
Date date = (Date)"String";
0522デフォルトの名無しさんNGNG
>>520
String d = "2002/07/24";
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date date = df.parse(d);

だったかな。
0523505=507=508NGNG
>>493
正規表現版・・・とか言ってライブラリのインストール方法は書かないという
意地悪をしてみる。

[コード]
import org.apache.regexp.*;

public class Ren1_regexp {
public static void main(String args[]) {
try {
RE r = new RE("@\\(");
String[] strs = r.split("794年@(平安京)が建てられる1192年@(鎌倉幕府)樹立");
StringBuffer str2= new StringBuffer(strs[0]);
for( int i=0 ; i<strs.length-1 ; i++ ) {
str2.append("(").append(Integer.toString(i+1)).append(strs[i+1]);
}
System.out.println(str2.toString());
} catch ( RESyntaxException e ) {
e.printStackTrace();
}
}
}

[結果]
794年(1平安京)が建てられる1192年(2鎌倉幕府)樹立


>>520
Date.valueOf(String) が良いのでは?Stringは"yyyy-mm-dd"形式だが。
0524デフォルトの名無しさんNGNG
>>522
ありがとSUN
0525中坊NGNG
>>523さん
ありがとうございます。
よく、わかりませんが・・・
わかるよう努力してみます〔無理っぽいけど
0526デフォルトの名無しさんNGNG
JavaでPDFってどう作るのがおすすめ?
0527デフォルトの名無しさんNGNG
Java2 1.4のドラッグアンドドロップを解説してるサイトって
無いもんでしょうか?
なかなか見つからなくて。
0528デフォルトの名無しさんNGNG
PDF pdf = new PDF();
0529デフォルトの名無しさんNGNG
>>526
XSLT-FO
0530デフォルトの名無しさんNGNG
>>526
LaTeXファイルを生成してPDFLaTeXでPDFに変換という手がある
ttp://www.rmatsumoto.org/tex-ps-pdf/tex-to-pdf.ja.html

つか、LaTeXソースがありゃあ大抵のドキュメントができるもんな。
LaTeXソースの書き方?そこまで面倒見れません。
0531デフォルトの名無しさんNGNG
XSLT関係も、regexpも、JDK1.4ならコアAPIにバンドルされてるよ。
動かす側もJREだけで済むので、コアのAPI使っとく方が何かと便利かも。
0532デフォルトの名無しさんNGNG
forの条件更新式なんですが、x=0、y=0の時に

for (;x<10;){
x++;
y=y+x;
}
            コレだとyが55

for (;x<10;x++){
y=y+x;
}
            コレだとyが45
になるんですが、これは計算方法がどう違うんですか?
0533でふぉるとんNGNG
>>532
おちつけ。
おちついて、脳内デバッガでステップ実行してみるんだ。
0534defaultonNGNG
>>532
最初はこうだ。

for (;x < 10;) {
x++;
y = y+x;  //y = 0+1
}

for (; x < 10 ;x++) {
y = y+x;   //y = 0+0
}
0535デフォルトの名無しさんNGNG
JTreeで、ノードを強引に展開させたいんですが、expandPathを使っても展開されません。
使い方が悪いのか、表示が変わってないだけなのか・・・?
0536困るよアプレット。NGNG
アプレット作ってる。適当な文字列をブラウザ上のテキスト
エリアに入力後、ボタンを押すと次のアプレット画面が同じ
ブラウザ上に表示される。ただし、前アプレットで入力した
文字列を後アプレット画面内のテキストエリアに貼り付けた
い。前アプレットのデータはどうやってもってくりゃいいの?
ちなみに前アプレット(*.html,*.class)、後アプレット
(*.html,*.class)のファイルは同じサーバーにありますが
格納しているフォルダは別です。いいたいことがうまくいえん。
表現へたですまんが、どなたか教えてください。

さらに、後アプレット画面には前アプレット画面に戻るボタ
ンがあるのでこれを押すと前アプレット画面が最初に入力し
た文字列も含めて表示されるようにしたい。
0537535NGNG
あ、なんとかできそうかもです・・・。がんばります。
0538デフォルトの名無しさんNGNG
初心者歓迎だけど、日本語初心者ってえのはなあ・・・
サーバーサイドで動的にHTMLを生成するか、
アプレットを一つにまとめるしかないんじゃない?
アプレットってのはそういうこと向けにできてないよ。
■ このスレッドは過去ログ倉庫に格納されています