-PR-
締切り
済み

プログラムの作り方

  • 困ってます
  • 質問No.17155
  • 閲覧数143
  • ありがとう数9
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 44% (35/79)

Object Day() {

Date tm = new Date();
SimpleDateFormat formatter1 = new SimpleDateFormat("E",Locale.getDefault());
String weekX = formatter1.format(tm);
SimpleDateFormat formatter2 = new SimpleDateFormat("F",Locale.getDefault());
int weekY = Integer.parseInt(formatter2.format(tm));

String week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

for(int i=0; i<week.length; i++) {
if(week[i] == weekX) {
int x = pos_x + (i * pos_len);
break; }
}

int y = pos_y + (weekY * pos_len);

return new Point(x,y); }

このようなプログラムをしたときに、Point(x,y)のxが未定義ですとエラーが出ます。なぜ未定義なのですか?またどうすれば回避できますか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

int x という宣言が if 文のブロック内にあるためです。ブロック ({ と } で囲まれた部分)内で宣言された変数は、その中でしか 有効でありません。 回避するには、for 文の上に、 int x; と宣言し、if 文の中の int を削除します。 ...続きを読む
int x という宣言が if 文のブロック内にあるためです。ブロック
({ と } で囲まれた部分)内で宣言された変数は、その中でしか
有効でありません。

回避するには、for 文の上に、
int x;
と宣言し、if 文の中の int を削除します。
補足コメント
cyan1110

お礼率 44% (35/79)

for文の上につけると、xを初期か以前に使用していますとエラーが出ます。
投稿日時 - 2000-12-07 20:17:01


  • 回答No.2
レベル10

ベストアンサー率 28% (42/146)

変数xが初期化されない可能性があるからだと思います。 int x = 0; for(int i = 0; i < week.length; i++){     if( ... ){ x = posix + (i*pos_len); break; } } ではどうでしょう? Javaでは、変数が ...続きを読む
変数xが初期化されない可能性があるからだと思います。

int x = 0;
for(int i = 0; i < week.length; i++){
    if( ... ){
x = posix + (i*pos_len);
break;
}
}

ではどうでしょう?

Javaでは、変数が最後まで初期化されない可能性を持っている場合
(つまり、分岐やループ内で初期化されてる場合)
こんなエラーを出すんじゃないんでしたっけ?
お礼コメント
cyan1110

お礼率 44% (35/79)

ありがとうがざいました。
やっと意味がわかりました。
投稿日時 - 0000-00-00 00:00:00
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ