Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从特定日期获取下4个工作日的名称?_Java_Android_Kotlin - Fatal编程技术网

Java 如何从特定日期获取下4个工作日的名称?

Java 如何从特定日期获取下4个工作日的名称?,java,android,kotlin,Java,Android,Kotlin,我需要从一个特定的日子里得到接下来几天的名字。比如给定的日期名称是星期五,我需要得到下一个4,比如星期六、星期天、星期一和星期二。试试这个 String[] days=new String[] {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; private ArrayList<String> getNextFourDays(String day) {

我需要从一个特定的日子里得到接下来几天的名字。比如给定的日期名称是星期五,我需要得到下一个4,比如星期六、星期天、星期一和星期二。

试试这个

  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;

    }
String[]days=新字符串[]{“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
private ArrayList getNextFourDays(字符串日)
{
int指数=-1;
整数计数=0;
对于(int i=0;i请尝试此

  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;

    }
String[]days=新字符串[]{“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
private ArrayList getNextFourDays(字符串日)
{
int指数=-1;
整数计数=0;

对于(inti=0;i这是一个很好的答案,但您可以使用更干净的代码和更现代化的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());
    }
}
import java.time.DayOfWeek;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.IntStream;
公开课考试{
公共静态void main(字符串[]args){
List nextDaysList=IntStream.range(1,5).mapToObj(x->DayOfWeek.FRIDAY.plus(x))
.collect(Collectors.toList());
}
}

答案很明确,但您可以使用更干净的代码和更现代化的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());
    }
}
import java.time.DayOfWeek;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.IntStream;
公开课考试{
公共静态void main(字符串[]args){
List nextDaysList=IntStream.range(1,5).mapToObj(x->DayOfWeek.FRIDAY.plus(x))
.collect(Collectors.toList());
}
}

在本例中,我将使用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]

使用枚举而不是字符串的优点是,编译器将为您捕获任何错误,并且您的应用程序在运行时不会崩溃/出现不希望出现的行为。如果日期表示为字符串,则可以传递任何可能的字符串(如“无效日期!”)这可能会导致程序在运行时意外运行。但是,通过使用枚举,不可能滥用它,您需要在枚举定义的某一天调用它,否则应用程序将无法生成。

在这种情况下,为了类型安全,我将使用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]
使用枚举而不是字符串的优点是,编译器将为您捕获任何错误,并且您的应用程序在运行时不会崩溃/出现不希望出现的行为。如果日期表示为字符串,则可以传递任何可能的字符串(如“无效日期!”)这可能会导致程序在运行时意外运行。但是,通过使用枚举,不可能滥用它,您需要在枚举定义的日期调用它,否则应用程序将无法生成