- PR -

JAVA、グラフィックスについて

投稿者投稿内容
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2006-10-23 22:15
引用:

ともさんの書き込み (2006-10-23 17:27) より:

○例外 java.io.FileNotFoundException は報告されません。スローす
るにはキャッチまたは、スロー宣言をしなければなりません。
fileReader = new FileReader("seizu.txt");
○例外 java.io.IOException は報告されません。スローするにはキャ
ッチまたは、スロー宣言をしなければなりません。
while((line = bufferedReader.readLine()) != null) {


JDKのAPI(http://java.sun.com/j2se/1.4/ja/docs/ja/api/)のFileReaderの
コンストラクタ(newで宣言するメソッド)のところをみますと、

public FileReader(File file)
throws FileNotFoundException

とあります。(APIより引用)これは、FileNotFoundExceptionという例外を投げる
ことがあるので、かならずcatchせよということです。

nagiseさんが「# ソースは殴り書きなので動く保障はありません」とおっしゃって
いるとおりですので、ご自身の手でソースに加えてやる必要があります。
}finally{の手前に、以下の文を追加します。
コード:

}
catch (java.io.FileNotFoundException e)
{
e.printStackTrace();



IOExceptionについても同様です。
Exceptionには順番があるので、順序に気をつけながらソースに追加してみてください。

なお、パス指定は絶対のほうが確実です。
"seizu.txt" -> "c:\\seizu.txt" (Windowsの場合)

#親切すぎ?


[ メッセージ編集済み 編集者: ひら 編集日時 2006-10-23 22:18 ]
とも
会議室デビュー日: 2006/10/16
投稿数: 11
投稿日時: 2006-11-07 15:04
こんにちは。あれから結構経ちましたが、まだ実行できていません…。
いろいろ考え、csvファイルからの読み込みをしています。
サンプルを見て、「string.substring」「string.indexOf」を使って、
1行ずつ読み込むところまではできました。

しかし、文字で読み込んだあと整数にするところがうまくいきません。
以前ひらさんに、
>>Stringからintへの変換はInteger.parseIntを使用します。これも
例外処理が必要となります。

と言われ、「Integer.parseInt」を使いましたが・・・・なぜかできない。
エラーは出ないのですが、ちゃんと整数に直せてないようです。
またご指導お願いします!


コード:
		   int A = Integer.parseInt(star1);
		   int B = Integer.parseInt(star2);
		   int C = Integer.parseInt(star3);

		   System.out.println("A="+A); 

      ○star1,star2,star3には、String型の数字が入っています。



印字されません・・・。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-11-07 15:38
どこで躓いているのかいまひとつ分からないですが、
いろんなことをいろいろやろうとして何が分かっていないのか
分からない状態になってるようにも伺えます。
「無知の知」ってのが重要で、自分は何が分かっていないのだろうと
いうことを自分で理解できるようになるとよいですよ。

コード:
public class Hoge {
    public static void main(String[] args) {
        try {
            int i = Integer.parseInt("1");
            System.out.println(i);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
}



という極力シンプルにした状態でどういう理屈でどう動いているのか
ちゃんと確認しましょう。あせらずに一歩ずつ。急がば回れです。

ちゃんと動くもの同士を組み合わせていきましょう。
組み方しだいではそれでも動かないことはありますが、
そもそも不良品のパーツを組み合わせて動くことはないので。

Integer.parseIntならInteger.parseIntの動きだけを確認するクラスを書いて試してみる。
面倒に思うかもしれませんが一番確実で早く解決できると思いますよ。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-11-07 16:01
引用:

ともさんの書き込み (2006-11-07 15:04) より:
コード:

int A = Integer.parseInt(star1);
int B = Integer.parseInt(star2);
int C = Integer.parseInt(star3);

System.out.println("A="+A);

      ○star1,star2,star3には、String型の数字が入っています。



印字されません・・・。


どこかで例外を握りつぶしていて例外発生に気付いていないのでは。

# 変なこと書いてたorz

_________________
己への戒め

「活動的な馬鹿より恐ろしいものはない」 by ゲーテ

[ メッセージ編集済み 編集者: 想馬 編集日時 2006-11-07 16:09 ]
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2006-11-07 23:10
私も、例外の握りつぶしをどこかでやっているのでは?と思いました。
たとえばこんなものです。
コード:
		try {
		   int A = Integer.parseInt(star1);
		   int B = Integer.parseInt(star2);
		   int C = Integer.parseInt(star3);

		   System.out.println("A="+A); 
		} catch (Exception e)
		{  // 例外が発生したのに何も処理をしていない
		}


parseIntというのは、なかなか融通がきかず、たとえば""(空文字列)は0にならずに
例外が発生します。"12.0"のように、小数点があってもダメで、"1,234"のように
カンマがあってもダメです。

スキルアップ/キャリアアップ(JOB@IT)