[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 15:14 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:10:53 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド100【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1175317038

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

次スレは>>980あたりで。

620 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 06:24:48 ]
>>609
ちなみに == true を書く派だが、これは盲点。
 if( b = false) ってバグは怖いな

ためしにint あたりで同じバグを書いてみよう
 if(i = 10)
とかね。
こっちはコンパイルエラーとなる。

実はJavaの場合、代入式の実行結果として代入値が返されるんだわ。
だからint の場合は、代入値(10)が ifの論理式の所に渡されるからNG。
これに対して、boolean の場合は、falseが渡されるから、結果としてOK。

そう考えると、612の主張もアリと感じる。

621 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 06:45:48 ]
比較演算の結果は boolean なので、 boolean を true, false と
比較するというのなら比較演算の結果も当然比較するべきだろう。
その結果も boolean なので(以下略

622 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 07:37:55 ]
(...(((b == true) == true) == true) ... == true)

623 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 08:06:04 ]
無限再帰ってこわくね?

624 名前:デフォルトの名無しさん [2007/05/18(金) 10:24:01 ]
javaって肥大化していくCで書かれたソフトウェア開発コスト下げれるの?
速度速いしC++の方がいいと思うんだけど。

625 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 10:31:11 ]
>>624
JavaでCのソフトは作れないなぁ

626 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 10:41:14 ]
>>625
組み込みシステムとかは?


627 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 11:24:29 ]
どの言語も使いどころが違うからなあ
マルチリンガル必須だよ

628 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 12:30:18 ]
boolean は、真偽値しか入ってこない型なんだから
判定では、比較させないのがバグを回避するのに有効だと思うが・・・・

Cや、Perlなど boolean以外の値も真偽判定に使えるような言語だと、
比較を書くのは真偽判定に使っていると明示すことこになって嬉しいんだけど
Javaはbooleanでしか判定しないので比較を書かない方がいいと思う



629 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 12:46:29 ]
>>628
ふむふむ。
それならば、メソッドの戻り値がbooleanの場合はどうする?
if(isHogeHoge()) {}

if(isHogeHoge() == true) {}
だと後者のほうが解りやすいと俺は思う。

変数だと書かないのもありと思うけど、でも!は嫌いだなぁ。
見落とすんだよね・・・

630 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 13:32:15 ]
>>629
俺は >>628 じゃないけど、前者の方が良い。

if (!isHoge()) と if (isHoge() == false) でも前者かな。

631 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 13:33:19 ]
== true を入れられると、何か頭を使わないと理解できない。
慣れの問題だろうが、俺はない方がはるかに分かりやすい。

というか、C/C++ 使ってると true と比較するのはものすごく抵抗がある。
ctype.h の is 系関数とか 1 以外の値も返すようになってる実装だったりすることも多いし。

632 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 13:40:30 ]
C/C++ だと == NULL とか != NULL は良くやる。

ってか、文法似てるけど別の言語だからスレ違いだね。ごめん。

633 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 13:41:24 ]
ポインタは真偽値じゃないから書くのが普通だろう。

634 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 13:46:46 ]
>>629
個人的主観で言うならば日本語に直してスムーズに読める方を採用する
if(isHogeHoge()){} →もしHogeHogeならば(比較的素直に読める)
if(isHogeHoge() == true){} →もしHogeHogeが真ならば(いかいもプラグラム的)

635 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 14:31:32 ]
>>618
こう考えるんだelse if(!b)else assert false;
それは契約だと・・・・なんだって?到達不能だって?

636 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 14:33:19 ]
>>635
b が別スレッドから変更される可能性があるんだよ。たぶん。

637 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 15:07:02 ]
何という危険なプログラム!

638 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 15:48:14 ]
>>637
つ volatile



639 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 16:02:38 ]
いや、それ何の解決にもなりませんから。

640 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 16:23:51 ]
public class VolatileSolvesEverything {
private boolean 解決 = false;

/* 中略 */

if (解決) { /* 嘘やん(心の声) */} else { /* 到達不能ということにしたい */ }

}


641 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 16:29:53 ]
>>629
!を見落とすより間違った代入を見落とした方がバグとして痛いだろう

642 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 17:21:34 ]
if(true - true == 0)

643 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 17:32:37 ]
>>642
booleanは引き算できないってこと分かってる?

644 名前:デフォルトの名無しさん [2007/05/18(金) 18:02:16 ]
初心者の質問じゃないかもしれないけど、
どなたか教えてください。

ドメインaaaaa.comからbbbbb.com/へ、
リンクが貼られているかをチェックするプログラムを作りたいと思っています。

現在サイト運営していて、
相互リンク先から本当に自分のサイトにリンクされているのかを、
確認したいと思っているのですが、
リンク件数が1000件を超えているため、
プログラムでチェックしたいとおもっています。

Javaでなくてもいいのですが、
JSpiderというものがあるのを知り、
こちらにかきこませていただきました。

べつに言語はJavaに固執しているわけではありません。

参考になるサイトなどありましたら教えていただけないでしょうか。
どなたかお願いします。

645 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:47:43 ]
>>644
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=38472&forum=12&1

646 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:02:30 ]
>>644
パッシブな調査方法でいいのなら、
ログのリファラをチェックするのが一番確実だと思います。
それだと、相互リンク自体が有効かどうかチェックできるし
ネットワークトラフィックを発生させる事もありません。

1.相互リンクをお願いする
2.相手にリンク作ったら1回踏んで動いていることをチェックしてもらう
3.毎月(自分の納得する頻度で)ログをチェックする
4.相互リンクを結んでいる相手のリファラを持つアクセスが無い相手のみ目でチェック

これでOK.
1000件以上も単なるリンクチェックだけに回るのは
極めて非常にとても無駄です。

647 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:17:52 ]
俺は ! の後には必ず空白入れるようにしてる。
if(! b) みたいに、目立つように。

648 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:18:05 ]
>>644
q.hatena.ne.jp/1175700361



649 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:19:22 ]
>>644
hp.webnavisys.com/php/

650 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:20:03 ]
>>644
exp.webnavisys.com/tool/php0.html

651 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:25:57 ]
>>647
俺らは ! は必ず三つ並べるようにしてる。
if(!!!b) みたいに、目立つように。


652 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:35:36 ]
>>651
なにー!
くそー、じゃあオレは4つ並べちゃうぞ

653 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:39:33 ]
>>652
ちょw それヤバいwww

654 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:41:49 ]
>>652
だめじゃん

655 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:42:27 ]
>>653
ってか、3つや5つならオッケーなんだよな。
4つや6つ並べると負けってのは何か理不尽じゃね?

納得いかない奴の数→(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ry

656 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:48:07 ]
>>653

wを2つ並べるのも避けてるみたいですが、意図的ですか!!!ww1w!w!!ww


        というか
    _, ._   金曜の夜なのに
  (´・ω・)   くそレスが次から次へと…
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)ww意図的ですか!!!ww1w!w!!wwwbw!!ww



657 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:24:47 ]
>>638-639
結局、JSR-133って何が変わったんだっけ?

658 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:29:48 ]
!!! って流石に ! に最適化されるよね?



659 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:36:31 ]

  (´・ω・)   く あまり糞レス増やすなよー
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)!!! って流石に ! に最適化されるよね?

660 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:33:39 ]
!って1個じゃなくてもいいの!?

661 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:34:59 ]
!!?!

662 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:35:00 ]
>>660 単項演算子だからね。

663 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:35:44 ]
1++++---+--+++++-+-++-+2

664 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:42:10 ]
ああそうか2個あったらfalseの逆になるのか

665 名前:デフォルトの名無しさん [2007/05/19(土) 00:08:50 ]
>>645
>>646
>>648-650

ありがとうございます。
参考にさせてもらいます。

666 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:21:33 ]
>>663
構文エラーだね。

667 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:27:41 ]
1+ + + +- - -+- -+ + + + +-+-+ +-+2

668 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:30:44 ]
>>667
マジレスすると、Java では 1 ++ ++ -- + -- ++ ++ + - + - ++ - + 2 と区切られなければならない。

1++2 も同じ理由でコンパイルエラーになる。



669 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:32:35 ]
マイナスが一個足りないな

670 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:45:35 ]
ネットワーク対戦のゲームを作りたいのですが、
クライアントサイドにSwingをサーバサイドにサーブレットを使おうと考えています。
通信部分はどうしたらいいのでしょう。



671 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:51:40 ]
ServletならJakarta Commons HTTP Clientを使っとくのが楽かもね。

672 名前:670 mailto:sage [2007/05/19(土) 03:02:16 ]
>>671
ありがとうございます。
ググってみたのですがよくわかりません…
詳しく教えていただけないでしょうか?

673 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 03:39:51 ]
わからんのなら素直にSocketでも使っとけ。

674 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 05:43:23 ]
>>671
HTTPSでも問題ないですか?

675 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 05:45:14 ]
>>670
ttp://jakarta.apache.org/site/downloads/downloads_commons.html


676 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 06:17:14 ]
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a03_04.html

このページにある、リスト2 InfoMenuクラスのソースなのですが、

10 public void dispMenu(Passwd pwd) {
11 if(pwd.checkPasswd() == true) {
12 dispSystem();

10行目の部分でPasswdクラスのオブジェクトを取ってくると記述されていますが、
PasswdクラスとinfoMenuクラスが親子関係という訳でもなく、
infoMenuクラスからPasswdオブジェクトを作っている記述もありません。

なぜ、dispMenu(Passwd pwd)だけで任意のPasswdオブジェクトが取得できるのでしょうか?

677 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:41:15 ]
>>676
> 10行目の部分でPasswdクラスのオブジェクトを取ってくると記述されていますが、

そんなこと書いてない。テキストを誤解している。


678 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:43:54 ]
>>676
「Passwdを取得する」ではなく「Passwaを引数とする」ではないの?



679 名前:676 mailto:sage [2007/05/19(土) 08:11:34 ]
そのとおりです、オブジェクトを引数として渡してるだけでしたorz

何故か初歩的なこと忘れてました。
「dispMenu(Passwd pwd)」って記述したら自動的に
「dispMenuに渡された引数がそのままPasswdに渡されて、尚且つpwdオブジェクトが生成される」とか
変なことばかり考えてまして。

ありがとうございました。

680 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 13:46:16 ]
注:str.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください
というエラーがコンパイルすると出るんですがなぜですか?
同じものを学校のPCでやってもでなかったのに

681 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:13:45 ]
>>680
javac -source 1.4 str.java
ってやってみ?
学校のコンパイラのバージョンは古いからエラーが出なかったんだ。

682 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:25:36 ]
>>681
できました!
ありがとうございます

683 名前:デフォルトの名無しさん [2007/05/19(土) 19:24:25 ]
ha= buf.readLine();

switch (ha.charAt(0)){
case'+':
kg=1;
case'-':
kg=2;
case'*':
kg=3;
case'/':
kg=4;
}

の部分に

Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at RinkouPractice4.main(RinkouPractice4.java:22)

ってエラーが出てコンパイルできるが実行できないんですが原因を教えてください

684 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 19:40:43 ]
>>683
とりあえずエラーが発生してる場所が違うな。

>at java.lang.Integer.parseInt(Unknown Source)
>at RinkouPractice4.main(RinkouPractice4.java:22)

まぁこれ見る限りreadLine()してきたデータそのままparseInt()に渡してるんだろうな

685 名前:デフォルトの名無しさん [2007/05/19(土) 20:41:46 ]
public static void main(String[] args)throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
String ha,s1,s2,b1,b2;
int kg;
int si1,si2,bo1,bo2;
System.out.println("数値を入力"); //ユーザに入力を促す
s1=buf.readLine();
b1=buf.readLine();
si1 = Integer.parseInt(s1);
bo1 = Integer.parseInt(b1);
ha= buf.readLine();
s2=buf.readLine();
b2=buf.readLine();
si2 = Integer.parseInt(s2);
bo2 = Integer.parseInt(b2);
Kazu v1 = new Kazu(si1,bo1);
Kazu v2 = new Kazu(si2,bo2);
// Hantei h = new Hantei();
// kg = h.opr(ha.charAt(0));
kg=0;
switch (ha.charAt(0)){
case'+':
kg=1;
case'-':
kg=2;
case'*':
kg=3;
case'/':
kg=4;
}
なぜエラーが出るんですか?

686 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 21:17:08 ]
RinkouPractice4.javaの22行目どうなってる?
mainメソッドから数えて22行目じゃなくてファイルの頭から数えて22行目。
>si1 = Integer.parseInt(s1);
>bo1 = Integer.parseInt(b1);
>si2 = Integer.parseInt(s2);
>bo2 = Integer.parseInt(b2);
どれかのはずだけど…

んで、なんでエラーになるかというと、parseIntメソッドの仕様だから

>文字列の引数を符号付き 10 進数の整数型として構文解析します。
>文字列にある文字はすべて、10 進数でなければなりません。ただし、
> 1 番目の文字だけは、負の値を表すためにマイナス記号の ASCII 文字
>「-」(「\u002d」) であってもかまいません。

これに”+”付の数字渡せば
>Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
となる、と。
入力データのチェック入れれば回避できるんでない?

687 名前:デフォルトの名無しさん [2007/05/19(土) 21:41:49 ]
20 s1=buf.readLine();
21 b1=buf.readLine();
22 si1 = Integer.parseInt(s1);
23 bo1 = Integer.parseInt(b1);
24 ha= buf.readLine();
25 s2=buf.readLine();
26 b2=buf.readLine();
27 si2 = Integer.parseInt(s2);
28 bo2 = Integer.parseInt(b2);
29
30 Kazu v1 = new Kazu(si1,bo1);
31 Kazu v2 = new Kazu(si2,bo2);

こうなってますが具体的にはどうすればよいのでしょうか?

688 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:01:22 ]
>>680-682
Generic使えよ



689 名前:デフォルトの名無しさん [2007/05/19(土) 23:53:00 ]
入力データのチェックって何ですか?

まだ出来ないんですが誰か助けてください

690 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:14:34 ]
J2EEのライブラリを書くときにServlet APIのインタフェースライブラリだけが欲しいんですが
これってTomcatとかから借りてきてそのまま配布してもいいんですか?

691 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:30:24 ]
>>689
readLineメソッドで読み込んだ文字列(変数ha以外)が数字又は一文字目が"-"以外だったら
エラー処理を行う(再入力させるもよし、Exception投げるもよし、問答無用でプログラム終了でも…)
要するにInteger#parseIntがちゃんと処理できる値が入力されていることを保証してやる
ユーザが作り手の意図した通りの入力してくれるとは限らないから入力チェックは必須。

692 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:59:45 ]
int readInt() throws EOFException {
 while(true) {
  String str = buf.readLine();
  if(str == null) { throw new EOFException(); }
  try { return Integer.parseInt(str); }
  catch(NumberFormatException e) {
   System.out.println("残念、もう一度");
  }
 }
}


693 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 02:11:35 ]
>>688
残念ながら1.4が本当のターゲットらしいんでgenericsを使っちゃコンパイルできなくなる。
別の所でそれより新しいバージョンでコンパイルして警告を出されて焦ったようだ。

694 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 04:08:12 ]
>>693
つ -source 1.5 -target jsr14

695 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 04:13:02 ]
WindowsでもLinuxでも動作する
USBポートに対する入出力を行うライブラリでオススメ教えてください

696 名前:デフォルトの名無しさん [2007/05/20(日) 04:23:35 ]
整数を任意に入力していき、0を入力したら最大値は何番目にでてきたか出力する
プログラムですが、たとえば
0>10
1>11
2>0
と入力すると、本来
1
と出力されてほしいのに、
1
1
と出力されてしまいます。
どこがおかしいのかご教授くださいmm


697 名前:697 [2007/05/20(日) 04:26:12 ]
import java.io.*;

public class enshu41b {
 public static void main(String[] args) throws Exception {
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  int[] a = new int[100];
  int count = 0;
  while(count < a.length) {
   System.out.print(count + "> ");
   int v = (new Integer(in.readLine())).intValue();
   if(v == 0) { break; }
   a[count] = v;
   ++count;
   }
  int max = a[0];
  int[] mn = new int[100];
  mn[0] = 0;
  int count2 = 0;
  for(int i = 1; i < count; ++i) {
   if( a[i] > max ) {
   max = a[i];
   count2 = 0;
   mn[count2] = i;
   }
  if( a[i] == max ) {
  ++count2;
  mn[count2] = i;
  }
 }
 for(int i = 0; i <= count2; ++i) {
 System.out.println(mn[i]);
 } } }

698 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:03:42 ]
>>695
jUSBを自分でwindowsに対応させる。



699 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:26:32 ]
>>694
これ便利だな
はたからthx

700 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 07:25:48 ]
>>696
境界条件を頭の中でシミュレート。わかんねーならトレース実行でもしろ。

701 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:35:25 ]
>>694
1.4でコンパイルするのが目的で1.5以上のコンパイラの機能は使えない
1.4の実行環境をターゲットにして1.5以上でコンパイルするんじゃないから
1.4のコンパイラしかない環境でコンパイルするにはそのオプションは空しい

702 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:17:59 ]
ObjectInputStreamのreadObject()でファイルを最後まで読みたいんですがどうもうまくいきません。
whileのところが今のままではjava.lang.Object と int は比較できません。というエラーがでます。
どなたか教えてください。

/**************** ファイルから入力 *****************/
List messages = new ArrayList();
try{
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream( file ) );
Object obj;
// ファイルの終端に達するまで読み込む
while( ( obj = ois.readObject() ) != -1 ){
Map map = (Map) obj;
messages.add( map );
}
if( ois != null ) ois.close();
}
catch( Exception ex ){
ex.printStackTrace();
}
finally{
System.out.println( "end input" );
}

703 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:20:04 ]
whileの中の-1ってなんだ? 説明できるか?

704 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:24:28 ]
とりあえずclose()する前にflush()しとけ

705 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:28:07 ]
教える側も素人かよ^^;

>>702
とりあえずJavaDoc嫁。EOFを返すなどと何処に書いてある?
2chを辞書代わりに使うな、むしろ時間の無駄と分かるぞ。

706 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:31:41 ]
ObjectInputStreamのAPIドキュメントに
>>バイト単位の読み込みでは、バイトが読み込まれたときに -1 が返されます。プリミティブ読み込みでは、EOFException がスローされます。
こういうこと書いてたので-1が返るのかなと思ってました。
それじゃもっとよんでみます

707 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:39:57 ]
ああreadObjectはバイト単位でもプリミティブ単位でもないのかごめん

708 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:43:36 ]
>>700
どうしてそんな偉そうなんだ?



709 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:49:22 ]
>>708
逆ギレかよ、わかんねーならそれなりの態度があるだろうに

710 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 13:45:50 ]
2ch向いてねえな

711 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:04:19 ]
無職乙

712 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:22:35 ]
年数を入力して、うるう年と一般の年を判別後、月を入力して、
その月が何日あるかについてのプログラムを組んでみたのですが、

コンパイル問題が未解決です。
構文エラーがあります。"}" を挿入して MethodBody を完了してください。
構文エラーがあります。"}" を挿入して ClassBody を完了してください。

と出て実行できません。
最後の『 } 』の数は合っていると思うのですが、何故エラーが出ているのでしょうか?

713 名前:712 mailto:sage [2007/05/20(日) 17:23:51 ]
public static void main(String[] args) {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
try
{
System.out.println("今は何年ですか?");
String line=reader.readLine();
int year=Integer.parseInt(line);
if(year%4==0)
{
System.out.println(year +"年ですね。");
System.out.println("今月は何月ですか?");
line=reader.readLine();
int month=Integer.parseInt(line);

if(month==2){
System.out.println("2月の日数は28日です");
}else if(month==4 || month==6 || month==9 || month==11){
System.out.println(month +"月の日数は30日です");
}else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
System.out.println(month +"月の日数は31日です");
}else{
System.out.println("月数の範囲を超えています");}

}

714 名前:712 mailto:sage [2007/05/20(日) 17:24:33 ]
else if(year%4!=0)
{

System.out.println(year +"年ですね。うるう年です。");
System.out.println("今月は何月ですか?");
line=reader.readLine();
int month2=Integer.parseInt(line);

if(month2==2){
System.out.println("2月の日数は29日です");
}else if(month2==4 || month2==6 || month2==9 || month2==11){
System.out.println(month2 +"月の日数は30日です");
}else if(month2==1 || month2==3 || month2==5 || month2==7 || month2==8 || month2==10 || month2==12){
System.out.println(month2 +"月の日数は31日です");
}else{
System.out.println("月数の範囲を超えています");}
}
}catch(IOException e){
System.out.println(e);
}catch(NumberFormatException e){
System.out.println("月に入力できる数は1〜12の実数です");}
}
  }
}

715 名前:712 mailto:sage [2007/05/20(日) 17:26:50 ]
開発環境はEclipsです

716 名前:712 mailto:sage [2007/05/20(日) 17:58:54 ]
あれ?なんだかよく分からないうちに自己解決しました。

何が問題だったんだろう……

717 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:23:19 ]
つ保存していない
つ余計な括弧がある

つ右クリック ⇒ ソース ⇒ フォーマット

718 名前:デフォルトの名無しさん [2007/05/20(日) 19:32:20 ]
宿題があるんですけど教えてください。



719 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:36:31 ]
>>718
スレ違い

★★ Java の宿題ここで答えます Part 61 ★★
pc11.2ch.net/test/read.cgi/tech/1179168569/

720 名前:デフォルトの名無しさん [2007/05/20(日) 22:51:05 ]
スタンドアロンプログラムをWindows上で動かし、
フォルダを指定しエクスプローラを開く、
といった処理をしたいんですが、なかなか情報が見つかりません。

なにか良い方法があれば教えてください。
ちなみにGUIはSWTを使用し作成しています。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef