質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2771閲覧

int変数ageをstring型にして配列で表示できません。

kentros511

総合スコア122

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/11/12 11:33

java

1public class Mondai1 { 2 3 public static void main(String[] args) { 4 String firstname = "あいうえお"; 5 String name = "太郎"; 6 String sex = "男"; 7 String fullname = firstname + name; 8 String birthday = "19900511"; 9 10 11 for (int i = 1950; i < 2050; i++) { 12 String year = birthday.substring(0, 4); 13 int years = Integer.parseInt(year); 14 SimpleDateFormat sdf = new SimpleDateFormat("YYYYmmdd"); 15 if (years == i) { 16 17 int now = Integer.parseInt(sdf.format(new Date())); 18 int birth = Integer.parseInt(birthday); 19 int age = (now - birth) / 10000; 20 } 21 22 } 23 24 String[] information = new String[4]; 25 26 information[0]=fullname; 27 information[1]=sex; 28 information[2]=birthday; 29 information[3]=Integer.toString(age); 30 31 for (int i = 0; i < information.length; i++) { 32 System.out.println(information[i]); 33 } 34 35 } 36}

###期待結果
配列の int型変数ageがSTring型に変換され表示されること

###やってみたこと
配列のなかにint ageを宣言してみたが違った。

###質問の意図
配列4番目のageのString型変換をうまくいくコードの治し方が知りたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

mainのトップスコープ、つまり、mainメソッドの先頭かfor文の前あたりで、int age;等としてageを宣言しておいてください。

Javaのローカル変数はブロックスコープです。宣言された場所があるブロックの範囲でしか、有効になりません。現在のageの宣言場所はif文のブロックの中ですので、ageはif文のブロックがある範囲(スコープ)でしか有効になりません。if文が終わった後は、ageという変数は捨てられる事になります。

それを防ぐには、有効範囲、つまりスコープを広げる必要があります。ageはif文やその外側のfor文の後に使われるため、if文だけでなく、for文の外側に置く必要があります。mainメソッドの先頭かfor文の前で宣言しておけば、ageはmainメソッドが終わるまでは有効になり、for文の後のInteger.toStringでも使うことができるようになります。

投稿2016/11/12 11:42

編集2016/11/12 11:44
raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kentros511

2016/11/12 11:54

メインメソッドで初期化したら治りました。 ありがとうございました
guest

0

変数のスコープについて勉強してください。
ageはif文の中でしか使えません。
nameやsexの下あたりで宣言してください。

投稿2016/11/12 11:41

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kentros511

2016/11/12 11:55

変数のスコープをもう一度勉強しなします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問