6

私が探しているのは、Java で曜日の配列を作成し、昨日から開始して、最大 6 日間の時間に移動することです。

 String daysWeek[] = { "Yesterday", "Today", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};

昨日と今日として返したい配列の最初の 2 つの要素。

最初は、これは簡単な作業のように思えました。

currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);

String daysList[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
            "Thursday", "Friday", "Saturday"};

String daysWeek[] = {"Yesterday", "Today", daysList[currentDay], daysList[currentDay+1], ...};

の配列は 0 から始まるため、上記のメモはdaysList[currentDay]明日を返しdaysListます。つまり、currentDay = 3今日が火曜日である場合、これは になりますdaysList[2]

しかし、私の問題は、今日が土曜日であることを意味する currentDay が 7 の場合、currentDay+1明日は存在しない配列の 8 番目の要素になるということです。

今日が水曜日以降の場合、1currentDay + x > 7currentDay戻すように数値をループできるものはありますか?

これはすべて、配列getDaysList(currentDay)を返す呼び出された 1 つのメソッドで行われます。daysWeek[]

4

4 に答える 4

7

ここで役立つ関数は、モジュロ( %) 演算子です。

基本的に、モジュロ演算子が行うことは、除算の残りを取ることです。これはまさにあなたが望むものです。(「9 / 2」が 4.5 ではなく、4 余り 1 だった 4 年生のことを覚えていますか? これがその余りの部分です。)

したがって、次の代わりに:

days[currentDay + x]

使用する:

days[(currentDay + x) % 7]

モジュロ演算子によって返される値の簡単な例:

 0 % 7 = 0   (0 / 7 = 0 R0)
 1 % 7 = 1   (1 / 7 = 0 R1)
 6 % 7 = 6   (6 / 7 = 0 R6)
 7 % 7 = 0   (7 / 7 = 1 R0)
 8 % 7 = 1   (8 / 7 = 1 R1)
15 % 7 = 1   (15 / 7 = 2 R1)
于 2013-03-10T18:11:30.357 に答える
1

剰余演算子 ( %)を使用できます。

6 % 7 == 6
7 % 7 == 0
8 % 7 == 1
于 2013-03-10T18:16:10.480 に答える