トップページ⇒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進行でおねがいします。
0249227NGNG
>>243
「デスクトップ」→「マイコンピュータ」→「プロパティ」→「詳細」→「環境変数」

しかし、今はセットアップを動かせば設定される。
されてない・・・JAVA_HOMEは設定してくれてるみたいだが、PATHの修正は
していないようだ。

しまった、確認(java -version)してみたら家の環境でもjava.exeは1.3.1だと
言ってる・・・クラスは多分1.4.1(w




ということでPATHの設定値に%JAVA_HOME%\bin;を追加されたし。
これが無いとコマンドラインツールが動かないから。
0250デフォルトの名無しさんNGNG
アプレットっておぼえて何か役に立ちますか
ほとんど仕事も無いし
ただの自己満足にしか思えない…
0251デフォルトの名無しさんNGNG
>>248
そりは>241だけだよ
俺はほとんど間違わないで?

>>250
そり以外の分野はどう思うよ?
0252デフォルトの名無しさんNGNG
バッファ付け文字ストリームについて質問させてください

FileWriter fw = new FileWriter(args[0]);
BufferedWriter bw = new BufferedWriter(fw);

bw.write("abcdefg");

とやって最後にclose()関数を書くと思うのですが、
独習Javaを見てると
bw.close(); とやってる場合と fw.close()とやってる場合があります。
これはどちらでもよいのでしょうか?
よく理解したいのでどちらでもよい場合はその理由も教えてもらえるとうれしいです
0253デフォルトの名無しさんNGNG
>>252
なんとなくだけど(調べてないよ)

FileWriterがcore部分だから
bw.close() 内部で fw.close() やってんじゃない?

だから bw.close() と fw.close() は同義でないのかなと・・・
0254243NGNG
>>249
ありがとうございます。
参考にしてやってみます。
02550xffNGNG
0xff
0256デフォルトの名無しさんNGNG
インターフェイスを引数にとるメソッドがありますよね?
そのメソッドは目標のクラスにそのインターフェイスがあることを知ってホッとすることはできますが、その後何を参照しているのでしょうか?
0257デフォルトの名無しさんNGNG
正直、Javaスレって無駄に多いよね。
0258デフォルトの名無しさんNGNG
そのinterfaceで宣言されてるメソッドを呼んでるだけじゃねーの?
0259デフォルトの名無しさんNGNG
>>258
呼び出されるメソッドが実装されていなかったらどうなるんですかね?
0260デフォルトの名無しさんNGNG
>>259
単にコンパイル時にエラーとなってメソッドに渡せないだけ。
0261デフォルトの名無しさんNGNG
>>259
そのクラスのインスタンスが生成できないッス
0262デフォルトの名無しさんNGNG
ぐわ紛らわしい。
インターフェースを引数に取るメソッドに、実装が不完全なクラスは、渡せない。
型が一致していないから。
0263256NGNG
オツカレサマッ酢。
0264デフォルトの名無しさんNGNG
正直、Javaスレって無駄に多くてウザイね。
0265デフォルトの名無しさんNGNG
>>248は、IDEから2ちゃんねるに書き込みをしているらしい。
0266デフォルトの名無しさんNGNG
>>257 >>264 が構ってもらえないくて悲しんでいます。

0267デフォルトの名無しさんNGNG
>>253
レスありがとうございます。
同義ですか
たしかにどっちを実行してもエラーは出ないので、それが正解だとは思うの
ですが、やっぱりなんか頭の中でなっとく出来なくて・・・
もうちょっと勉強してみます

ありがとうございました
0268デフォルトの名無しさんNGNG
EJB実装で、あるマシンで動くことが確認されているにもかかわらず
自分のマシンだと
「javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial」
とエラーメッセージが出てしまい。
困っているのですが、何がいけないのでしょうか?
JDK、J2EE、OSのバージョンは同一です。
0269デフォルトの名無しさんNGNG
自己解決しました。パスの設定を手抜きしないで行ったら呼び出せました。
0270デフォルトの名無しさんNGNG
連続書き込みですみません。

c:\hogehoge\j2ee.jar とある時に、
java -classpath c:\hogehoge yyy
の指定ってだめなんでしたっけ?

0271デフォルトの名無しさんNGNG
GUIのイベント処理ですけど、
イベントの種類だけ、if ...elseってするのが正しいのですか?

0272デフォルトの名無しさんNGNG
>>271
別の例外でも投げとけ。
0273デフォルトの名無しさんNGNG
actionPerformed
の中身って
Interfaceパターン
でいいんですか?
一般的ですか?
0274デフォルトの名無しさんNGNG
テキストフィールドに記述された文字を、
ボタン等のアクションリスナー内でチェックしたい場合は、
テキストフィールドのアクションリスナーで、
予め文字が打たれるごとに、変数に格納するしかないのでしょうか。
0275デフォルトの名無しさんNGNG
>>274
素直にテキストフィールドのリスナーで扱うかテキストフィールドから情報を得ればよかろう。
0276274NGNG
>>275
レスありがとうございます。
テキストフィールドからアクションリスナー(イベント)のメソッドを使わずに、
情報を得ることってできますか?
できるならどのメソッドでしょうか。

たとえば、ダイヤルアップネットワークで、
ユーザー名のフィールドを持っていて、
接続のボタンが押されたときに、ユーザー名が記述されずに、
接続のボタンが押されていないかをチェックしたいのです。
0277274NGNG
誤)ユーザー名のフィールドを持っていて、
正)ユーザー名のテキストフィールドを持っていて、
0278デフォルトの名無しさんNGNG
java.awt.TextComponent.getText()


JDKプラットフォーム 1.2API仕様より。
0279274NGNG
>>278
ありがとうございました。
スーパークラスを確認していませんでした。
0280342NGNG
>>343
ありがとうございました。
9821のPCは持っています。
XPに対応できるエミュレーターはありますか。
ちなみに2000 nTのはありますが。
0281デフォルトの名無しさんNGNG
this.addWindowListener(new WindowAdapter()
{
 public void windowClosing(WindowEvent e)
 {
  this.f();
  System.exit(0);
 }
});

匿名クラス内のthisはもちろん匿名クラスだよね
本体の実態を参照するには、それようの変数を用意しないといけないの?
0282デフォルトの名無しさんNGNG
this に add したイベントリスナなら e.getSource() で this と同じ
モノが取れないかな。一般的に成り立つか知らんけど。
0283デフォルトの名無しさんNGNG
>>281
匿名クラス内のthisはもちろん匿名クラスのインスタンス
0284デフォルトの名無しさんNGNG
2文字以上の置換を行いたいのですが、"replace"じゃ上手くいきません。

String strMes1 = "あいうえお";
String strMes2 = "";
strMes2 = strMes1.replace('あい','かき');

よろしくお願いします。ちなみに全角日本語です。
0285デフォルトの名無しさんNGNG
>>284
で、シングルクオートで囲っている理由は?
頼むから文法エラーごときで質問にこないでください・・・。
0286284NGNG
String型の2文字以上の置換方法が分からないのです。
文法エラーが分からなくて質問しているのでは、ありません。

確かにシングルなのは、おかしいですが、ダブルでもエラーが出ます。

"replace"以外に、"あい"を"かき"に変えるメソッドがあるのでしょうか?
0287デフォルトの名無しさんNGNG
アプレットのデバッグをしたいので↓のURLに書いてあるとおりにしました。
http://java.sun.com/products/plugin/1.3/docs/ja/debugging.html
しかしどうしてもエラーがでるのです。↓
http://members14.tsukaeru.net/kuresoru/error.jpg
この設定を行うとき、なにか陥りやすい罠でもあるのでしょうか?
0288デフォルトの名無しさんNGNG
>>282>>283
ありがとSUN
できますた
e.getSource()で
0289デフォルトの名無しさんNGNG
>>288
> ありがとSUN

新しいね。勝手に使わせてもらいます。
0290デフォルトの名無しさんNGNG
Sun Sun Sun - (・∀・)♪
haxtu? ( ゚Д゚)
0291デフォルトの名無しさんNGNG
>>1
基本的にsage進行でおねがいします。

なんで?
0292デフォルトの名無しさんNGNG
>>286
StringBufferクラスを使ってください。

>>286
>確かにシングルなのは、おかしいですが、ダブルでもエラーが出ます。
って言ってますが、この発言をしてる自体でちょっと厳しいです><
'あい' とやってる時点でかなり問題ありなので
もう一度ここの勉強をしたほうがいいかと
0293デフォルトの名無しさんNGNG
>>284 >>286
String#replaceAll(String,String)使いなさい。要1.4
0294284NGNG
しょうがないので、文字位置検索して、置換しました。
1度で複数文字を置換する方法は、ないんですかねー?
0295284NGNG
>>292-293さん。
ありがとうございます。頑張って勉強します。
0296できたNGNG
String strMes1 = "あいうえお";
String strMes2 = strMes1.replaceAll("あい","かき");
0297284NGNG
開発環境が、1.3なのです、、、。
0298デフォルトの名無しさんNGNG
>>281
おらよ。

public class Outer{
 public static void main(String args[]){
  new Outer().new Inner();
 }

 private int val = 10;
 public class Inner{
  public Inner(){
   System.out.println("Instantiate Inner");
   System.out.println("Outer.val ="+Outer.this.val);
  }
 }
}
変なルールだよな。
0299デフォルトの名無しさん NGNG
InputStreamクラスのreadメソッドの説明には、ストリーム
からの入力がブロックされると書いてあるのですが、
OutputStreamクラスのwriteメソッドの説明にはストリーム
への出力はブロックされるかどうかは明記されていません。
これはwriteメソッドはブロックを行わないと考えて良い
のでしょうか?
0300デフォルトの名無しさんNGNG
教えてください
例えば1989/1/7と入力すれば
今日から計算してその日から何日経ったかを
表示するプログラムを出したいのですが
もちろん明日やれば日は1日分増やしたいのですが…
うるう年のやり方とかわかりません…
0301デフォルトの名無しさんNGNG
Calendarみろよ
GregorianCalendarでもいい。
ユリウス歴についてもかいてあるぞ?
0302デフォルトの名無しさんNGNG
なんか似たような質問が多いな。どっかの課題か?
俺はわからないから答えられないけど。
0303デフォルトの名無しさんNGNG
String d = "1989/1/7";
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date past = df.parse(d);
Date now = new Date();
if(now.before(past)) throw new IllegalArgumentException("未来入力すんな");
int dateSpan = (int)((now.getTime() - past.getTime()) / 24 / 60 / 60 / 10000);

簡単に書くとこんなか。Calendar 使わんとタイムゾーンを考えなきゃいけないんだっけ?
Calendar#add() でカウントアップするのもあるけど。
0304デフォルトの名無しさんNGNG
>>300
その日付に意味はあるのか?
0305デフォルトの名無しさんNGNG
>>303
sankusu
0306デフォルトの名無しさんNGNG
>>304
誕生日と思われ
0307デフォルトの名無しさんNGNG
>>306
13歳か…
先生に聞け!!
0308デフォルトの名無しさんNGNG
<jsp:useBean /> を使うと id に指定した名前の変数が <% %> の中で使えるよね。
これと同じ事って拡張タグライブラリだけじゃ出来ないよね?
0309デフォルトの名無しさんNGNG
byteをunsignedとして扱いたいんだけど、自前で+256して&255するしかない?
もっと簡単なのあったら教えてください。結果の型は不問。
0310デフォルトの名無しさんNGNG
jEditorPaneのsetPage()を使ってHTML表示したとき
リロード(もう一度、同一URLをsetPage)が
うまくできず古い内容しか表示されないんだけど、なんかいい方法ない?
0311デフォルトの名無しさんNGNG
質問の日本語が良く分からないけれど、
結果の型が不問なら、&0xffするだけでいいのでない?
自動的にintへ昇格されるはずだと思われ。

0312309NGNG
>>311
期待したとおりになりました。サンクス!
0313デフォルトの名無しさんNGNG
JavaでExcelファイルを読みこんで
セルを指定してそのセルに書かれている文字列を画面に表示させたいんですけど
こんなこと出来ますか?
0314デフォルトの名無しさんNGNG

>313
ttp://www.hcn.zaq.ne.jp/no-ji/reseach/index.htm
0315デフォルトの名無しさんNGNG
Javaマンセ〜
0316310NGNG
最近javaに目覚めた。もちろんマンセー
but, swingむずー
表のカスタマイズむずー
可変レイアウトむずー
0317デフォルトの名無しさんNGNG
住民基本台帳法について教えてもらえるネットの専門家の方々には、どの板
でお会いできるのですか?
0318デフォルトの名無しさんNGNG
gunbareyoむずー
0319デフォルトの名無しさんNGNG
>>317
俎板
0320デフォルトの名無しさんNGNG
J2EEサーバーの起動がうまく行きません。
下記のようなエラーがでます。何が悪いかわかる方がいましたら教えてください
OSはvine linux 2.1です

$ j2ee -verbose
Cannot write the seed file for fast startup. The next startup will be slow.
以後エラーメッセージが続く・・・
0321デフォルトの名無しさんNGNG
>>320

320 and/or vine linux 2.1
0322デフォルトの名無しさんNGNG
ファイルのランダムアクセスで質問があります。

例えば、
--以下ファイルサンプル----
あああああああ
いいいい
ううううううう
ええ
-------------------------
のように、1行が可変長のファイルで3行目を1行まるまる取得するには
どのようにしたら良いでしょうか?
RandomAccessFileクラスのseekメソッドを使用してポインタを
移動しようとしても1行が可変長なため、どうしたらいいか悩んでいます。
各行の頭にポインタを指定できて、その行に対してreadLineメソッドで
読むようなことは出来ないでしょうか?

どなたか宜しくお願いします。
0323デフォルトの名無しさんNGNG
プログラムのことで相談というかお願いです。

データメーカーというプログラムを持ってる方いらっしゃらないでしょうか?

あるのでしたらUPしてもらえませんか?
0324デフォルトの名無しさんNGNG
JTableで編集可能なテーブルは、セル上でダブルクリックをすれば編集モードになるけど、
シングルクリックで編集モードにするにはどうするの?
0325デフォルトの名無しさんNGNG
>>322
先頭から一行づつ読んでく方法以外は無理。
そういうファイルをランダムアクセスで効率的に読むなら、ファイルの先頭に
seek オフセット値のテーブルを持たせるのが普通。
0326320NGNG
>>321さん
ごめんなさい。意味が良くわかりません。
vine linux2.1、jdk1.4、j2SDKEE1.4.1以外特に何も入れていません。
j2eeのAPIを含むプログラムがコンパイルできたので環境設定は
うまくいっていると思います
0327デフォルトの名無しさんNGNG
Exception in thread "main" java.lang.NoClassDefFoundError: クラス名
↑コンパイルした後、classを動かそうとするとこのエラーがでます。
意味がわかりません。わかる方がいましたら教えてください
0328デフォルトの名無しさんNGNG
>>327
動かそうとするとき、大文字と小文字はちゃんと区別してますか?
0329327NGNG
>>328さん
ありがとうございます。
大文字、小文字、誤字脱字等のミスはありませんでした。
0330デフォルトの名無しさんNGNG
CLASSPATHの設定を見なおす。
この質問、超FAQで毎スレ2、3回出てると思うんだけど。
0331327NGNG
>>330さん 
ありがとうございます。やっぱりクラスパスですか・・・
java -classpath . クラス名 とコマンドを打つと
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/Session
と出ます。現在linuxで使っているのですが、windowsで同じプログラムを動かして
見るとうまく行きます。
CLASSPATHはともに
J2EE_HOME/lib/j2ee.jar , J2EE_HOME/lib/locale
が入っています。
Linuxだとほかに何か加えなければならないのでしょうか?
0332デフォルトの名無しさんNGNG
int型の引数をとるコンストラクタを持つクラスがあって、
そのクラスを動的にロードし、上記コンストラクタを使って
インスタンスを作るにはどうしたらいいですか?
「上記コンストラクタを使って」の部分でつまってます。。
0333デフォルトの名無しさんNGNG
>>332
hennakurasu hen = new hennakurasu(1);
0334デフォルトの名無しさんNGNG
>>332
java.lang.Class#getConstractor()
java.lang.reflect.Constractor#newInstance()
0335332NGNG
レスどもです。
いまやっているのを具体的にいうと、プラグインクラスのインタフェース
まわりの設計です。

>>333
ロードするクラス名は不定(forName()でロード)で、そのメソッド
(コンストラクタ含む)はわかっているという状況なので、困ってます。
書いてなくてすみません。

>>334
getConstructor()の引数にプリミティブなintを指定するにはどうしたら
いいですか?あと、newInstance()はAPIリファレンスには空の引数リスト
でnewしたのと同じとありますが、引数ありでnewしたいのですが。
0336334NGNG
>>335
ドキュメントはちゃんと嫁。
int val =...;
Class cls = ...;
Constractor cns = cls.getConstractor(new Class[]{int.class});
Hoge instance = (Hoge)cns.newInstance(new Object[]{new Integer(val)});
0337334NGNG
>>335
ついでだけど、
AccessibleObject#setAccessible(boolean)
を併用することで、publicでないメンバへのアクセスも可能になる。
(リフレクションは何もかもをぶち壊しにする可能性のある諸刃の剣
ということですな。)リフレクションを使用したフレームワークを構築
するとき、その機構を外部から隠蔽したいときに使うとよいかも。

ただし、SecurityManagerが許可していない場合など(Servletで
動かしているときなどは、コンテナ側でSecurityManagerがインス
トール済みのことがあるよね)は、↑は出来ないので注意。
0338デフォルトの名無しさんNGNG
JavaからDBの入力とか削除とかの操作って出来ますか?
0339334NGNG
>>338
できます(条件付で)。Googleで"JDBC"で検索。または本屋にいきなはれ。
0340デフォルトの名無しさんNGNG
ていうかDBって何か知ってるのか?
0341デフォルトの名無しさんNGNG
>>340
ドリーム・ボーイ
0342デフォルトの名無しさんNGNG
ドラゴンボールに決まってんだろ

0343デフォルトの名無しさんNGNG
>>340
デルタ・ブルース
ドン・ブレーザー
デビッド・ベッカム
0344デフォルトの名無しさんNGNG
>>340
D   B
だってバカですから。
0345デフォルトの名無しさんNGNG
全然関係ないけど
その昔
DBクイーンズってグループがあったよね?
0346デフォルトの名無しさんNGNG
>>345
それはいくら何でも失礼だぞ。

今度の懐かしの人100にLINDBERGが出るらしい。
あんまりだ。今年解散だがまだまだ現役だ。
0347335NGNG
>>336
できました!ありがとうございます!!
ところで、int.classは、型intのフィールドclassで、intのClassインスタンス
であるという解釈であってるんでしょうか?同様のことを表すのに、いくつか
あさった限りではInteger.TYPEとしていたのでちょと気になりました。

リフレクションはいろいろおもしろそうなことができそうですね。
深入りするとドツボにハマりそうですが。
0348334NGNG
>>347
System.out.println(int.class == Integer.TYPE);
でたしかめれ。
■ このスレッドは過去ログ倉庫に格納されています