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

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

ただいまの
回答率

88.93%

効率重視配列の書き方

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 149

EmaS

score 2

Java entry-levelです。
配列の学習をしております。
お知恵をおかし頂ければ幸いです。

前提 実現

<前提>

7/5〜7/11の日付を対象として、以下のように出力させられるようにする。
◯月◯日…1個目の配列、要素数は日付分
◯曜日…2個目の配列、要素数は曜日分
休日、平日…3個目の配列、要素数は2つ

<実現>
前提条件を満たして期待結果か通りに出力すること。

<質問>
標準出力が長くて、無駄を感じます。
もっと簡略化したいのですが思いつきません。
改善が必要であれば改善したいのですが、どうすればよろしいでしょうか?

期待結果

-出力-
7月5日は、日曜日で休日です。
7月6日は、月曜日で休日です。
7月7日は、火曜日で平日です。
7月8日は、水曜日で平日です。
7月9日は、木曜日で平日です。
7月10日は、金曜日で平日です。
7月11日は、土曜日で休日です。

public class Q1 {

    public static void main(String[] args) {
        String[] dateOfMonth = { "7月5日", "7月6日", "7月7日", "7月8日", "7月9日", "7月10日", "7月11日" };
        String[] dateOfWeek = { "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日" };
        String[] data = { "休日", "平日" };

        System.out.println(dateOfMonth[0] + "は" + dateOfWeek[0] + "で" + data[1] + "です");
        System.out.println(dateOfMonth[1] + "は" + dateOfWeek[1] + "で" + data[1] + "です");
        System.out.println(dateOfMonth[2] + "は" + dateOfWeek[2] + "で" + data[1] + "です");
        System.out.println(dateOfMonth[3] + "は" + dateOfWeek[3] + "で" + data[1] + "です");
        System.out.println(dateOfMonth[4] + "は" + dateOfWeek[4] + "で" + data[1] + "です");
        System.out.println(dateOfMonth[5] + "は" + dateOfWeek[5] + "で" + data[0] + "です");
        System.out.println(dateOfMonth[6] + "は" + dateOfWeek[6] + "で" + data[0] + "です");

    }
}

試したこと

期待結果通りに動くのですが、標準出力をもっと楽にしたい
また効率のよい実装方法があれば知りたいです。

public class Q1 {
    public static void data(String[] a) {
        System.out.println(a[0] + "は" + a[1] + "で" + a[2] + "です");
    }
    public static void main(String[] args) {
        String[][] results = { { "7月5日 ", "日曜日", "休日" }, { "5月6日", "月曜日", "平日" }, { "5月7日", "火曜日", "平日" },
                { "5月8日", "水曜日", "平日" }, { "5月9日", "木曜日", "平日" }, { "5月10日", "金曜日", "平日" }, { "5月11日", "土曜日", "休日" } };
        for (int i = 0; i < results.length; i++) {
            for (int j = 0; j < results[0].length; j++) {
                System.out.println(results[i][j]);
            }
            data(results[0]);
            data(results[1]);
            data(results[2]);
            data(results[3]);
            data(results[4]);
            data(results[4]);
            data(results[5]);
            data(results[6]);


        }
    }

補足情報

使用言語:java
java_version_1.8
Eclipse_version_4.14.0

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Zuishin

    2020/07/08 14:37

    ループを使って下さい。

    キャンセル

  • EmaS

    2020/07/08 16:32

    はい。
    ありがとうございます。

    キャンセル

回答 2

checkベストアンサー

+1

System.out.println(a[0] + "は" + a[1] + "で" + a[2] + "です");

これが、わかって。

data(results[0]);

これが、わかって

System.out.println(results[i][j]);

これもわかるなら、もう出来てるといっていいと思います。

そのまま書けばいいです。

 for(int i = 0; i < results.length; i ++) {
     System.out.println(results[i][0] + "は" + results[i][1] + "で" + results[i][2] + "です");
 }

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

import java.util.*;

public class Main {
    public static void main(String[] args) {
        String[][] results = {
            { "7月5日 ", "日曜日", "休日" }, 
            { "5月6日", "月曜日", "平日" }, 
            { "5月7日", "火曜日", "平日" },
            { "5月8日", "水曜日", "平日" }, 
            { "5月9日", "木曜日", "平日" }, 
            { "5月10日", "金曜日", "平日" }, 
            { "5月11日", "土曜日", "休日" } 

        };
        for (String[] result : results) {
            System.out.printf("%s は %s で %s %n", result);
        }
    }
}

こうじゃろう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る