Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
@shun03
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A
Closed

Javaの配列について

解決したいこと

Javaで、
データとして10人分の名前をString配列に格納し、
格納した配列内のデータを以下のように一覧表示したいのです。
しかし、ソースでは変数重複などのエラーが出てしまいます。
ここからどのようにソースを書いていけばいいか、解決方法をお願いします。
※配列の要素数が10件を超えてループを抜けるためにlengthを使用することも条件です。

【聖徳太子】
【岩倉具視】
【高橋是清】
【板垣退助】
【伊藤博文】
【夏目漱石】
【新渡戸稲造】
【福沢諭吉】
【野口英世】
【樋口一葉】               
n番目の人は【○○】です

該当するソースコード

kadai5.java

package com.lupinus_ltd;

public class kadai5 {

    public static void main(String[]args) {

        String[] names;
        names = new String[10];
        String[] names = {"【聖徳太子】","【岩倉具視】","【高橋是清】","【板垣退助】","【伊藤博文】",
                "【夏目漱石】","【新渡戸稲造】","【福沢諭吉】","【野口英世】","【樋口一葉】"}

    for (String name: names) {
          System.out.println(name);
         }
      }
   }

自分で試したこと

配列は初めてでしたので、検索をかけて
・宣言

String[] names;

・生成

names = new String[10];

・初期化

String[] names = {"【聖徳太子】","【岩倉具視】","【高橋是清】","【板垣退助】","【伊藤博文】",
                "【夏目漱石】","【新渡戸稲造】","【福沢諭吉】","【野口英世】","【樋口一葉】"}

・繰り返し処理

for (String name: names) {
          System.out.println(name);
         }

まではやってみましたが、それ以降が分からず苦戦しております。

0
2
Answer

同じ変数の宣言を2回やってるからエラーが出ています。
初期化(実際には初期化子による配列の宣言と生成と代入)のところで、宣言と生成と値の代入をやっているので、宣言してからまた初期化はおかしいです。

宣言と生成と代入をいちいちやるとこんな感じになります。

String[] names;  // 宣言
names = new String[10];  // 生成
// 以下代入
names[0] = "【聖徳太子】";
...
names[9] = "【樋口一葉】";

宣言と生成は同時にできます。

String[] names = new String[10];  // 宣言と生成
// 以下代入

さらに初期化子を使って代入も同時にできます。

String[] names = new String[] {"【聖徳太子】", ... , "【樋口一葉】"};

宣言と同時の場合は省略できます。

String[] names = {"【聖徳太子】", ... , "【樋口一葉】"};

結果的に一行で全部やっちゃってます。

最後の条件については配列の要素が10個しかないので、別にlength使わないでそのまま拡張for文でいいんじゃないですかね?

1
丁寧に解説していただきありがとうございます。

しかしながら、
>最後の条件については配列の要素が10個しかないので、別にlength使わないでそのまま拡張for文でいいんじゃないですかね?

私も同様には考えておりますが、lengthを使うことも条件になっておりますので、使うしかありません…(泣)
でしたら拡張for文ではなく、普通のfor文ですかね。
見た感じ大学か何かの課題みたいなので、講師や友人に聞くほうが早いんじゃないかなと思います。
(答えを全部書くのは質問者さんのためになりませんし)
そうですね…
今回は@akarinSさんに甘え過ぎたかもしれません。
後は自分でやり込みます。ここまで説明していただきありがとうございました!
View the remaining 2 comments.
  • 以下の2行が要らない。
String[] names;
names = new String[10];

1メソッド内では、同一の名前の変数は宣言できないため。

  • 式の行末にはセミコロン(;)を置く
  • 全角空白を半角空白にする
0
ご回答ありがとうございます。

String[] names;
names = new String[10];

これらがいらないということは今回は宣言も生成も必要ないということですか?
配列の基本は調べても宣言と生成は必須のように思えたのですが...。

また、
>式の行末にはセミコロン(;)を置く
全角空白を半角空白にする
これらに関しては完全に自分のミスでした。失礼いたしました。
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login