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
Help us understand the problem. What is going on with this article?

[Java]全要素の初期値が0の固定長多次元配列を動的に生成してみる

More than 5 years have passed since last update.

前提の確認

Javaでプリミティブ型の配列を宣言する際に、初期値をセットしなければ、自動的に全要素の初期値が0になることは衆知の事実です。今まで毎回0代入をループ回していた自分はかなりのうましか慎重派でしたね。

実演してみる

今回はそれに加えて要素数をint型の変数で設定していくサンプルをお見せします。

コード例
public class Test {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        int x = 20;
        int y = 6;

        int[][] n = new int[y][x];

        //配列を表示する
        for (int[] s : n) {

            //一行ずつカンマ区切りの文字列を生成していく
            StringBuilder sb = new StringBuilder();
            for (int i : s) {
                sb.append(i + ", ");
            }
            System.out.println(sb);
        }
    }

}

結果

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 

解説

まず、最初の二行で要素数を設定します。今回は$x=20\ , y=6$としました。
次に、int[][] n = new int[y][x];として二次元配列nを宣言しておりますが、
ここで注意していただきたいのは、要素数を行→列(この例で言うならばy→x)と並べないと直感的な結果にはなりにくいということです。

詳しくは割愛しますが、もしint[x][y]としてしまうと、この例であれば表示の際に縦に20、横に6個の0が表示されてしまいます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away