【初心者】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進行でおねがいします。
0756if_tomorrow_comes
NGNGjavaで、CのatoiやVBのvalに相当する命令を出すには、
どのように書けば良いのでしょうか。
0757デフォルトの名無しさん
NGNGint i = Integer.parseInt(num);
0758デフォルトの名無しさん
NGNGまず
>>2-6あたりのリンクを
読む
0759if_tomorrow_comes
NGNG出来ました。お手数かけてすいませんでした。
758さん
そうですね。
この調子で質問してたら、キリが無いですよね。
一応、javaのページは軽く目を通したんですけど、もっと詳しく勉強してから
それでも分からない時に質問したいと思います。
0760デフォルトの名無しさん
NGNG0761Rina ◆tI333vNE
NGNGhttp://userweb.elec.gla.ac.uk/i/iainw/jni/
0762Rina ◆tI333vNE
NGNGあとここ.
0763デフォルトの名無しさん
NGNG0764725
NGNGアドバイスありがとうございます。
すいません、よかったらもう一つ教えてください。
JTableで行を選択するとき、デフォルトの設定だと、
1)複数行を選択してマウスから指を離す。
2)選択された複数行のうちの1行をマウスでクリックする。
という操作をすると他の行の選択が解除されてしまいますよね。
単に、複数行をドラッグ&ドロップするアプリを作りたいだけなんですが・・。
複数行を選択してそのままドラッグ、だとうまくいきますが、ちょっと
使いにくいので、一度複数行を選択してマウスを離してから再びドラッグする、
ということはできないものかと考えています。
マウスイベントを拾ってシコシコやるしかないでしょうかねえ。
もし簡単なやり方をご存知でしたらアドバイスお願いします。
0765デフォルトの名無しさん
NGNGBufferedReader reader = new BufferedReader(new FileReader("Filename"));
String line = reader.readLine();
で読むのはわかったのですが、
BufferedWriter writer = new BufferedWriter(new FileWriter("Filename"));
で書く場合にはどうすればよいのでしょう?
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("Filename")));
書くときはこうするべきなんですか?
0766デフォルトの名無しさん
NGNGすべきということはない。PrintWriter を使うと少々のオーバーヘッドがかかるし、
出力エラーが発生した場合ちゃんと通知してほしい、行末シーケンス (LF/CRLF) に
システムデフォルトのコードを使ってほしくない場合などは使わないだろう。要は
楽なコードを書きたいかどうかなんだが。
0767デフォルトの名無しさん
NGNG自前の ListSelectionModel を作る
0768765
NGNGその場合は、どうやって書き込むのでしょうか?
PrintWriter の場合は、 writer.println(writer); で書きますけど、BufferedWriterの場合の書き方がわかりません。
0769デフォルトの名無しさん
NGNGout.println("hello, world");
out.close();
上記は↓のコードとほぼ等価:
Writer out = new BufferedWriter(new FileWriter("hoge.txt"));
try{
out.write("hello, world");
out.write(System.getProperty("line.separator"));
} catch(IOException ex){/* */}
out.close();
ってか、PrintWriter クラスのソースを読め。
0770765
NGNG> ってか、PrintWriter クラスのソースを読め。
BufferedWriter のほう一生懸命読んでいました。
0771デフォルトの名無しさん
NGNGあっ BufferedWriter 型じゃなくて Writer 型なんですね。
0772デフォルトの名無しさん
NGNGこれは良くないなぁ・・・
0773デフォルトの名無しさん
NGNGex.printStackTrace() ぐらい呼べという意味?
それとも、IOException 以外の例外をトラップできないから Exception で
受けるべきという意味?
はっきりと書かないと意味が通じないよ。
0774デフォルトの名無しさん
NGNGその際にFortranとJavaを連動させるにはどしたら良いのですか??
Visual Fortran を使っています。
0775デフォルトの名無しさん
NGNGPrintWriter は内部で IOException 発生しても何も言わないでしょ。
その意味も込めて {/* */} にしたんだってば。
0776デフォルトの名無しさん
NGNG0777Rina ◆tI333vNE
NGNGtry {
hogehoge();
} catch (FooException e) {
// do nothing.
}
…とかの方がよくない?
もしくは,
try {
hogehoge();
} catch (FooException e) {
throw new InternalError(e.toString());
}
0778デフォルトの名無しさん
NGNG違いです。catch した例外の取り扱いこうあるべきってのはまた別の話なのでよろしこ。
0779Rina ◆tI333vNE
NGNG亀レスすまそ.
えっと結論から言うと,JTableあんまし使ったことないから分からんw
力になれなくて申し訳ない….
APIドキュメント見てみても使えそうなメソッドとかがなかったら, 自前で
イベント拾ってやるしかないんじゃないかなぁ….
>>763
どこら辺に萌え? 教えて,今後の参考にするからw
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG>>775
なんか、必死だね。
772がなにを言いたいかわからないが、私はコメントの使い方は良いとは思わない。
0782デフォルトの名無しさん
NGNGたしかに。
0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNG頭悪そうだなおまえ。
0785765
NGNG>>769
Writer out = new BufferedWriter(new FileWriter("hoge.txt"));
が try からはずれておりますけど、なぜ、tryの中にいれて例外を受け取らないのでしょうか?
それはプログラムの作り方によって変えればいいってだけですか?
ファイルが作れないこともあると思うので、中に入れたほうがいいんですよね?
入れないほうがいい理由があったら知りたいです。
0786デフォルトの名無しさん
NGNG逆ギレしてないで黙ってなさい。
0787名前
NGNGもしくは、画面サイズを取得する方法を教えて頂戴
0788デフォルトの名無しさん
NGNG入れたほうが良いって言うか、ちゃんと書くなら普通こんな感じ:
Writer out = null;
try{
out = new BufferedWriter(new FileWriter("hoge.txt"));
// …
} catch(IOException ex){
// エラー処理
} finally {
try{ if(out != null) out.close(); }catch(IOException ex){/* */}
}
メソッドが IOException をスローすると宣言されていても、最後の finally で
close する必要があるのでどの道 try-catch は必要。
0789デフォルトの名無しさん
NGNGttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Window.html#setLocationRelativeTo(java.awt.Component)
0790デフォルトの名無しさん
NGNGコメントの使い方が気に食わなかったのか?
C/C++ から来た人なら DO NOTHING の意味で使ってる人結構いると思うけど。
0792デフォルトの名無しさん
NGNGそう、ファイルクローズの保証のために finally の中で close() を
呼び出したいから、try ブロックの外で宣言しておかないとまずい。
0793名前
NGNGありがとSUN
0794デフォルトの名無しさん
NGNG0795sage
NGNG0796デフォルトの名無しさん
NGNG2ch語使わないともっと萌えます。
0797デフォルトの名無しさん
NGNGtry {
BufferedWriter out = new BufferedWriter(new FileWriter("hoge.txt"));
try {
out.write("hoge");
} finally {
out.close();
}
} catch (IOException e) {
//エラー処理
e.printStackTrace();
}
ぐらいしないの?
ちゃんと考えないとネストが深くなりすぎるが。
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG好き好き。ってか無駄に try 重ねると白痴に見える。
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG誰がアタマが悪い人なの? あなたの中で・・・ なんかあなたの考え間違っていそう。
0805732
NGNG昨日、Javaを初心者用テキストで勉強し始めて、JDKをC:\jdk1.3のフォルダにインストール。
パスを通すということでC:のAutoexec.batにPATH C:\jdk1.3\bin;%PATH%と入力。
MS−DOSプロンプトで2数の和を求めるプログラムSample1を入力。
コンパイルして、.CLASSファイルが作られたことを確認。
しかしJavaコマンドを実行すると、
Exception in thread "main" java.lang.NoClassDefFoundError: Sample1
とエラーがでるのです。何度テキストを見ても間違った操作をしているようには思えないのですが…。
どなたか対応策を教えていただけないでしょうか。
0806デフォルトの名無しさん
NGNG必死だな(藁
0807デフォルトの名無しさん
NGNGout.write() で例外が発生して、その影響で out.close() からも例外が
発生した場合、障害の大本の原因であろう out.write() 側の例外情報が
報告されないな、そのコードだと。JDBC の Connection 関係で同じよう
なコード書いてくれるなよ。
0808デフォルトの名無しさん
NGNGhttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/NoClassDefFoundError.html
0809765
NGNG> パスを通すということでC:のAutoexec.batにPATH C:\jdk1.3\bin;%PATH%と入力。
OSはなにつかってます? OSによってパスを通す方法が異なりますよ。
> Exception in thread "main" java.lang.NoClassDefFoundError: Sample1
実行するときは、クラスのあるディレクトリで
java Sample1
ですよね?
0810デフォルトの名無しさん
NGNGjava Sample1.class
とでもしてるのか
大文字小文字を区別してないかだろうな・・・
0811デフォルトの名無しさん
NGNG答えられないのなら いちいち >>801 のようなこと書くなよ。
あっごめん >>801 = >>806 のような馬鹿は放置でしたね。
0812797
NGNG} catch(IOException e) {
//エラー処理
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch(IOException e) {
//またエラー処理
e.printStackTrace();
}
}
}
の方がよっぽど白痴に思えるがな。
807の問題は確かにある。あともうひとつ穴があるんだがこれはまだ指摘されてないな。
801は807を以って797を頭悪いと評しているのか?俺も興味あるな。
0813デフォルトの名無しさん
NGNG> java Sample1.class
> とでもしてるのか
その場合は
Exception in thread "main" java.lang.NoClassDefFoundError: Sample1/class
になりますね。
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG0816っていうかウザいよおめーが!!
NGNG>>815
上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/
0817デフォルトの名無しさん
NGNGなにに大して邪魔なんですか?どう邪魔されたのか教えて下さい。
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNGどっちかていうとお前が粘着です。残念ですが・・・
0820デフォルトの名無しさん
NGNGだれか口に綿を詰めて黙らせてあげて!!
0821デフォルトの名無しさん
NGNG説明できるね。788では最終的にファイルをclose()できないときは
ほっておくという意図を伝えたくて/* */と書いたはずなのに、797はそれを読み取れずに
またエラー処理してprintStackTraceするコードに/* */があった部分を書き換えてる。
#まあもしかしたら悪意があって、わざわざ冗長なものにしているのかもしれんけど。
0822デフォルトの名無しさん
NGNGしつこっ!!!(藁
0823デフォルトの名無しさん
NGNGおめでてーな
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG>out.write() で例外が発生して、その影響で out.close() からも例外が
>発生した場合、
てのは具体的にどんなときだ?
out.write()で例外Aが発生して、out.close()でも例外Bが発生するような状況なら
例外Aも例外Bも発生した原因は大概同じではないか?
同じならout.close()で発生した例外Bが報告されれば十分ということになる。
JDBCでも同じ。
0827797
NGNG0829デフォルトの名無しさん
NGNGあるんだよ、データベースで。「クローズできません」「トランザクションエラー」の
エラーコードで済まされているのが。もともとの例外なら「DB のヒープがいっぱい」
「トランザクションログがいっぱい」などのエラーコードが入ってるんだけど。
ファイルシステムの障害は運良くぶち当たったことが無いので何とも。でも inode が
おかしくなったりしたらこういう状況で出るかも。
0830デフォルトの名無しさん
NGNG理由はout.close()が例外を出し得るって事がコードから伝わってくるから。
それにwriteに失敗した時のエラー処理とcloseに失敗した時の処理は
分けて考えなければ成らないかも知れないし。
0831デフォルトの名無しさん
NGNGクラスパスの設定
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/classpath.html
を読んでください。あと、参考書を使っててそのサンプルソースが
インターネット上で読めるときには署名とURLを示しとくと、ひまな人が読んでくれるかも。
0832デフォルトの名無しさん
NGNG0833831
NGNGttp://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/findingclasses.html#userclass
のほうがいいかな。
0834デフォルトの名無しさん
NGNG普通システムってのは多重障害は想定しない、つまりある障害が原因で発生した
別の障害までは追求しないという考えがある (データ壊れたとかは別だが)。
で、最初に発生した障害 (それこそトランザクションログがいっぱいになった
とか) が原因で close() に失敗した場合、close() の例外じゃなくて最初の
例外を通知すべき、とあれこれ考えて最終的に >>788 になったわけ (このため
通知方法が無ければ close() の失敗は切り捨てるようになった)。最初は俺も
汚いコードだと思ったんだがな、もう慣れた。
ってか >>797 って Web 基○だか WA○s だか作ってない? どこかで見た
記憶があるぞ、そのコード。
0835デフォルトの名無しさん
NGNG0836797
NGNG>あるんだよ、データベースで。「クローズできません」「トランザクションエラー」の
>エラーコードで済まされているのが。もともとの例外なら「DB のヒープがいっぱい」
>「トランザクションログがいっぱい」などのエラーコードが入ってるんだけど。
つまり、2つの例外が発生した原因は同じものだが現実としてJDBCドライバが
正確な報告をしないから別に処理しなければならない、ということか。
>>830
>理由はout.close()が例外を出し得るって事がコードから伝わってくるから。
>それにwriteに失敗した時のエラー処理とcloseに失敗した時の処理は
>分けて考えなければ成らないかも知れないし。
797でも十分伝わってくると思うが。というか、例外発生の原因が同じなら
writeとcloseの失敗をStackTrace以外で区別する意味はないはず。
0837732
NGNGOSはWINDOWS98です。クラスがあるレジストリで間違いなく Java Sample1 と入力しています。
大文字小文字の区別も何度も確認しました。なんでうまく行かないんだろう…。
Autoexec.batに@SET CLASSPATH=C:\PROGRA~1\PHOTOD~1.0\ADOBEC~1 とかあるんですが
こういうのが影響してるってことは無いですよねー…。
0838デフォルトの名無しさん
NGNG>>833を読んでわからなかったら、コマンドラインから
dir
と
set
を実行してくれる?
0839831
NGNGそれ。832のリンク先を読んでくれているのならわかりますが、
環境変数CLASSPATHを設定していると、ユーザクラスパスのデフォルト値
であるカレントディレクトリをオーバーライドします。
0840831
NGNG0841デフォルトの名無しさん
NGNGjava -classpath . Sample1
とやってみてください。
0842797
NGNG>普通システムってのは多重障害は想定しない、つまりある障害が原因で発生した
>別の障害までは追求しないという考えがある (データ壊れたとかは別だが)。
なるほど。堅固性が要求される場合には現実に合わせて別に処理する、と。
しかしまだ引っかかるな。JDBCドライバの実装に足を引っ張られている気がする。
プログラマは >>769 >>812 のような冗長なコードを書かなければならんのか。
そこまでシビアな状況でない時はやっぱり797のコードを書くだろう。
>ってか >>797 って Web 基○だか WA○s だか作ってない? どこかで見た
いや。別人だ。
0843732
NGNG833読んでみましたがまだ理解するには難しいです…。setを実行してみたところ
C:\Java1\chap2>set
TMP=c:\windows\TEMP
TEMP=C:\windows\TEMP
PROMPT=$p$g
winbootdir=C:\WINDOWS
COMSPEC=C:\WINDOWS\COMMAND.COM
CLASSPATH=C:\PROGRA~1\PHOTOD~1.0\ADOBEC~1
PATH=C:\JDK1.3\BIN;C:\WINDOWS;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PROGRA~1\NETWOR~1
\MCAFEE~1;C:\PROGRA~1\GRISOFT\AVG6
windir=C:\WINDOWS
BLASTER=A220 I5 D1 T4 P330
と表示されました。
他のプログラムで設定されている環境変数CLASSPATH?が影響しているということでしょうか。
0844デフォルトの名無しさん
NGNGそうですね。それをはずせばいい。
たぶん、
java -classpath . Sample1
でもいいと思いますけど。 Sample1 の前のどっとを忘れずにね
0845831
NGNG出てきましたね。個人的には環境変数CLASSPATHを設定するのって反対
なんだけど。あと、lib/extをユーザアプリが使うのとか。
0846732
NGNG! ホントですね。java -classpath . Sample1で実行されました。
「それをはずす」というのはただ消す、というわけにはいかないのでしょうね。
当面は −classpath を足した方法で進めていこうと思います。
みなさん本当にありがとうございました! 最初から挫折しないですみました。
0847デフォルトの名無しさん
NGNGがんばれ〜
0848デフォルトの名無しさん
NGNGなんでこんなに空行を入れるんだろう…
0849デフォルトの名無しさん
NGNG例えばCのprintf("%02d", i);と同等なコードはJavaではどう書きますか?
0850797
NGNGBufferedWriter out = new BufferedWriter(new FileWriter("hoge.txt"));
try {
out.write("hoge");
} finally {
out.close();
}
を
using (BufferedWriter out = new BufferedWriter(new FileWriter("hoge.txt"))) {
out.write("hoge");
}
のように書ける。
これから見て取れるのは、途中で例外を投げる場合は、「closeでは失敗しない」か
「closeで発生させる例外でも同じ情報を提供すべき」という思想だと思ってるが、
ドライバによってはそういう考えが欠けているということなんだろう。
※C#は触ったことないから少し違うかも。
>>846
autoexec.batに
set CLASSPATH=%CLASSPATH%;.
で、再起動、でもいけると思うよ。738でも書いたけど
0851797
NGNGDecimalFormat df = new DecimalFormat("00");
int i = 5;
System.out.println(df.format(i));
かな。細かい書式はAPIドキュメントを見れ
0852デフォルトの名無しさん
NGNGJAVAでない例がなぜここに?
0853デフォルトの名無しさん
NGNGmainでmoveメソッドを呼び出して、そこまでは成功してます。
それでmoveメソッド内でできた変数xをメイン内で表示させたくて
以下のようにしたんですがSystem.out.println(x);のとこでエラーがでてしまいます。
エラー内容はシンボルを解釈処理できませんとのことです。
書き方がどのようにおかしいのかおしえてもらえないでしょうか
public static void main(String[] args){
sample w=new sample();
w.move(args);
System.out.println(x);
}
0855デフォルトの名無しさん
NGNG何エラーよ?
■ このスレッドは過去ログ倉庫に格納されています