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

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

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

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

Q&A

解決済

3回答

534閲覧

javaの配列の使い方と条件分岐

Tsubasa73

総合スコア7

Java

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

0グッド

1クリップ

投稿2022/09/03 14:10

編集2022/09/03 14:11

前提

javaで引数0-6を渡すことで、それぞれ日曜-土曜までを表すことができるプロズラムを作っている。
例えば引数5を渡すと金 土 日 月 火 水 木 のように出力されるようにしたい。

実現したいこと

・剰余を使って条件分けしたい

発生している問題・エラーメッセージ

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at XXXXXXX

該当のソースコード

java

1class sample{ 2 public static void main(String[] args){ 3 int n = Integer.parseInt(args[0]); 4 String [] week = new String[n]; 5 week[0] = "日" ; 6 week[1] = "月" ; 7 week[2] = "火" ; 8 week[3] = "水" ; 9 week[4] = "木" ; 10 week[5] = "金" ; 11 week[6] = "土" ; 12 13 for (int i = n; i <= 6; i++){ 14 System.out.print(week[i]); 15 int surplus = week.length % 7; 16 if (surplus != 0 ){ 17 for(int j = 0; j <= n-1; j++){ 18 System.out.print(week[j]); 19 } 20 }else{ 21 break; 22 } 23 } 24 } 25}

試したこと

剰余で場合分けしたところエラーが発生した。コンパイルはできるがどのように対処すればいいかわからない。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

jimbe

2022/09/03 14:31

n = 5 としたら week = String[5] となって week[6] は使えないことになるのはお分かりでしょうか?
LouiS0616

2022/09/03 14:49

スタックトレース(エラーが発生したときに出てくるやつ)は省略せず書いて下さい。
guest

回答3

0

こんなやり方もあります。

Java

1class sample { 2 public static void main(String[] args) { 3 int n = Integer.parseInt(args[0]); 4 System.out.println("日月火水木金土日月火水木金".substring(n, n+7)); 5 } 6}

追記
曜日の間にスペースを入れたいのなら、

Java

1class Sample { 2 public static void main(String[] args) { 3 int n = Integer.parseInt(args[0]) * 2; 4 String week = "日 月 火 水 木 金 土 日 月 火 水 木 金"; 5 System.out.println(week.substring(n, n+13)); 6 } 7}

投稿2022/09/03 15:44

編集2022/09/04 04:42
kazuma-s

総合スコア8224

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

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

0

ベストアンサー

配列と剰余なら

java

1int n = 5; 2String[] week = "日月火水木金土".split(""); 3for(int i=0; i<week.length; i++) { 4 System.out.print(week[(i + n) % week.length]); 5} 6System.out.println();

配列も剰余も無くても(表示さえ合っていれば)良ければ

java

1int n = 5; 2String week = "日月火水木金土"; 3System.out.println(week.substring(n, week.length()) + week.substring(0, n));

投稿2022/09/03 14:49

編集2022/09/03 14:50
jimbe

総合スコア12648

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

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

0

皆様ありがとうございます。おかげさまで、自分が求めてた結果になりました。

一方で、こちらを簡略化する方法はありますでしょうか。

java

1class Sample{ 2 public static void main(String[] args){ 3 int n = Integer.parseInt(args[0]); 4 String [] week = new String[7]; 5 week[0] = "日" ; 6 week[1] = "月" ; 7 week[2] = "火" ; 8 week[3] = "水" ; 9 week[4] = "木" ; 10 week[5] = "金" ; 11 week[6] = "土" ; 12 13 int surplus = n % week.length; 14 if(surplus == 0){ 15 for (int i = 0; i < week.length; i++){ 16 System.out.print(week[ i ] + " "); 17 } 18 }else{ 19 for(int j = n; j < week.length; j++){ 20 System.out.print(week[ j ]+ " "); 21 } 22 for(int s = 0; s <= n-1; s++){ 23 System.out.print(week[ s ]+ " "); 24 } 25 } 26 }

投稿2022/09/03 16:00

編集2022/09/03 16:05
Tsubasa73

総合スコア7

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

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

kazuma-s

2022/09/03 16:46

String[] week = { "日", "月", "火", "水", "木", "金", "土" }; for (int i = n; i < 7; i++) System.out.print(week[i] + " "); for (int i = 0; i < n; i++) System.out.print(week[i] + " ");
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問