как получить название следующих 4 рабочих дней с определенного дня? - PullRequest
1 голос
/ 26 мая 2020

Мне нужно получить название следующих нескольких дней для определенного дня. например, имя дня - пятница, и мне нужно получить следующие 4, например суббота, воскресенье, понедельник и вторник.

Ответы [ 3 ]

1 голос
/ 26 мая 2020

На него уже есть ответ, но вы можете сделать это с помощью гораздо более чистого кода и современных API: OneLiner

import java.time.DayOfWeek;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Test {
    public static void main(String[] args) {
        List<DayOfWeek> nextDaysList = IntStream.range(1, 5).mapToObj(x -> DayOfWeek.FRIDAY.plus(x))
                .collect(Collectors.toList());
    }
}
1 голос
/ 26 мая 2020

В этом случае я бы использовал перечисление java .time DayOfWeek для безопасности типов вместо строк, предложенных другими ответами.

Если вы используете kotlin, вы даже можете определить функцию расширения, например это:

fun DayOfWeek.getFollowingDays(n: Int): List<DayOfWeek> {
    val list: MutableList<DayOfWeek> = mutableListOf()
    var tempDay = this
    for (i in 0 until n) {
        tempDay = tempDay.plus(1)
        list.add(tempDay)
    }
    return list
}

Затем вы можете вызвать функцию расширения следующим образом:

DayOfWeek.FRIDAY.getFollowingDays(4)

, и результат будет

[SATURDAY, SUNDAY, MONDAY, TUESDAY]

Преимущество использования enum вместо строки заключается в том, что компилятор перехватит для вас любые ошибки, и ваше приложение не будет аварийно завершать работу / иметь нежелательное поведение во время выполнения. Если день представлен в виде строки, вы можете передать любую возможную строку (например, «Invalid Day!»), Которая может привести к неожиданному срабатыванию программы во время выполнения. Однако при использовании перечислений нет возможности злоупотребить им, вам нужно , чтобы вызвать его в день, определенный перечислением, иначе приложение не будет построено.

1 голос
/ 26 мая 2020

Попробуйте это .....

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


    private ArrayList<String> getNextFourDays(String day)
    {
        int index=-1;
        int count=0;
        for(int i=0;i<days.length;i++) {
            if(days[i].equalsIgnoreCase(day)) {
                index=i;
                break;
            }
        }


        if(index==-1)
        {
            return null;
        }


        ArrayList<String> nextFourDays=new ArrayList<>();

        for(int j=index+1;count<4;j++) {
            if(j>=days.length) {
                j=0;
            }
            nextFourDays.add(days[j]);
            count++;
        }

        return nextFourDays;

    }

Примечание: он вернет null, если будет передан неверный день, отличный от строки [] days valid, и регистр не имеет эффекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...