トップページ⇒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進行でおねがいします。
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を生成するか、
アプレットを一つにまとめるしかないんじゃない?
アプレットってのはそういうこと向けにできてないよ。
0539デフォルトの名無しさんNGNG
ボタン押したらcgi呼び出すようにして、そいつにパラメータで
わたしといて、cgiがアプレット含んだhtmlを作るときに、受け取った
文字列をまんまアプレットにパラメータで渡してやればええやん。

つか、板違い。
0540532NGNG
>>533
すいません、俺の脳内デバッガはバグだらけなんで(泣

>>534
ありがとうございます
最初の計算方法の違いは凄く良くわかったんですが、
それだとループする回数が違うだけで、
やっぱり同じ数になると思うんですけど???

それとですね、自分で聞いていてアホかと思う質問なんですが、
x<10 ってことは
9<10 true
10<10 false ですよね?ということは、このプログラムは1〜9まで
しか足さないので、上の式でもyは45になると思うんですけど…
0541デフォルトの名無しさんNGNG
>540
上はloop内で足しているでしょ?。。。。ふぅ。。。
0542デフォルトの名無しさんNGNG
16進数の数列を1バイトずつcharに変換したいのですが、どうすればいいでしょう?
41→Aって具合に。
数列はこんなかんじです。
String str = 7768656e2074686520
一応これでできるんですが、どうも素直じゃないなと。
for (int j = 1; j < str.length() / 2; j++){
char ch = (char)Integer.parseInt(str.substring(j * 2, (j + 1) * 2), 16);
0543デフォルトの名無しさんNGNG
>>540
これ↓と
for (;x < 10;) {
x++;
y = y+x;
}

これ↓の違いは分かる?
for (;x < 10;) {
y = y+x;
x++;
}
0544532NGNG
>>543
分かりました。
上は55で下は45です。

xが9のとき下の式では y =y+x; //36=36+9 ⇒ 45=36+9
次にx++ でxが10になり、
ループの頭に戻って 条件式x<10 が 10<10 なのでfalseとなります
yは45です

xが9のとき、上の式は 先にx++なので 45=45+10 ⇒ 55=45+10
ループの頭に戻って 10<10 なのでfalse
yは55です
0545532NGNG
おかげさまでこの式

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

が55になる理由は分かりました
本当にありがとうございます
あとはこっちなんですけど…

for (;x<10;x++){
y=y+x;
}
0546532NGNG
for (;x<10;x++){
y=y+x;
}

先ほどと同じように考えると、
xが9の時、 x++されて xが10になり、
y =y+x は45=45+10 ⇒ 55=45+10になって、
yは55になると思うんですが、何故45なんでしょうか?
0547デフォルトの名無しさんNGNG
>xが9の時、 x++されて xが10になり、
この直後に終了条件の判定が入ります。
そして、条件が成立していれば、その後に
> y =y+x
が実行されます。
0548532NGNG
>>547
条件判定はx++されてからなんですか。
並び方が(条件初期化式;条件式;条件更新式)だったので
大きく誤解をしてました。ありがとうございます。

教えてくださった皆様、本当にありがとうございました。
0549デフォルトの名無しさんNGNG
for (<初期化>;<条件>;<更新>) {
 <内容>;
}
は、
<初期化>;
while (<条件>) {
 <内容>;
 <更新>;
}
と全く同じだからね。
「判定がxが更新された後」というより
「xが更新されたら、ループの先頭に戻って再度条件判定を行う」という方が正確。
0550デフォルトの名無しさんNGNG
正規表現は apacheなら OROが いい感じです。
巷に出回る4つばかりの正規表現ライブラリについて、
ちょっと性能を測ってみたんですが、
OROは組み方によっては J2SDK1.4標準の正規表現ライブラリより
速くなる場合がありました。
ただし、ものすごく便利な OROの Perlライブラリ使うと、
パフォーマンスは最下位に。
とはいっても 実行速度としては 問題ありませんが。
0551ヘタレ@初心者にもなりきってないNGNG
質問です。
JAVAでアニメーションカーソルとか使えますか?
しばらく放置してたらカーソルがピクピクなるような。
0552デフォルトの名無しさんNGNG
>>542
byte[] b = (new java.math.BigInteger(str,16)).toByteArray();
とでもやって (char)b[i] とするのはどうか?

charは最大2Byteだよから、本来はモノによっては文字列4Byteを変換する
必要あり。バイト列にして変換したほうが良い。
例えば16進文字列str16を文字列strに直す場合には
String str = new String((new java.math.BigInteger(str16,16)).toByteArray());
という感じ。
0553デフォルトの名無しさんNGNG
クラスとインターフェイスをあわせて何て呼ぶ?
0554デフォルトの名無しさんNGNG
さらに配列もあわせれば参照型と呼ぶが。
0555デフォルトの名無しさんNGNG
>>552
ありがとうございます。
下の方法が簡単そうなので、それでやってみたらうまくできました。
>charは最大2Byteだよから、本来はモノによっては文字列4Byteを変換する
>必要あり。
なるほど。実は>>542の方法だとすこし文字化けがありました。
0556デフォルトの名無しさんNGNG
strutsのActionクラスを継承したhogehogeクラスのperformで
request.setAttribute("xxx" , "xxxx" );
のように設定した値を
<%= request.getParameter("xxx") %>
のようにして取得したい場合、setAttributeをした後に
どのようにすればよいのでしょうか?
0557552追記NGNG
16進コードの元の文字コードによっては String(byte[] bytes,String enc) を使って
Javaで使用している16 ビット Unicode 文字に変換することもできる。

BigIntegerを使ったのは、昔それでうまくいったからなだけで、多分もっと良い方法も
あるのかも。
0558デフォルトの名無しさんNGNG
>>556
ここではJSPとかServletは分からんので >>498 のスレッドがあるし
そこで聞いてくれ。
0559デフォルトの名無しさんNGNG
>>558
> ここではJSPとかServletは分からんので

勝手に決めないでね。
0560君てぇしぉNGNG
Cだと
char buf[128];
int a=*(int*)&buf[16];
なる書き方をするところを、Javaで書くとどうなるのでしょうか。
お願いします。
0561532NGNG
>>549
ご丁寧にありがとうございます。
しっかりメモりました。
もっと勉強がんばります。
0562デフォルトの名無しさんNGNG
>560
「文字列bufの17番目の文字へのポインタを、int型のポインタへキャストし、その値を得ている」のですか?
多分JAVAではポインタ使わないで
char buf[] = new char[128];
・・・
buf[i] = 'a';
・・・(値は入れるんですよね?)
・・・
int a = (int)buf[16];

または

String buf = new String("This is a test. 02/07/22 14:56");
int a = (int)(buf.charAt(16));
とかなるのでは。


0563名無しNGNG
servlet使ってブラウザから入力した値をFileOutputStream
を使ってtxt形式で吐き出しました。この際、デフォルトで指定されているのか、
tomcatのルート配下のbinディレクトリにtxtファイルが出来上がります。
吐き出す場所を指定するにはどうすればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています