如何解决得到错误当使用join方法时,无法解析'String'中的方法'join'
基本上,我要做的只是将每个数组元素放在换行上,但是当使用join()方法时,我得到了错误,无法解析'String'中的'join'方法。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enterTransition = MaterialFadeThrough().apply {
secondaryAnimatorProvider = SlideDistanceProvider(Gravity.END)
}
}
解决方法
您可以使用Java8流API来实现逻辑,如下所示。
System.out.println( Arrays.stream(all_dates).collect(Collectors.joining(",")));
您可以使用任何定界符。在这里我使用了 ','
,但是您也可以使用 \n
。
Arrays.stream(all_dates).collect(Collectors.joining("\n")));
您将获得有关Collctors.joining
首先,您不能将加入操作的结果分配给all_dates本身,因为它是String[]
。您将需要将结果分配给String
变量。
您可以使用Java 8 Stream API将数组的内容与换行符连接起来,如下所示:
String all_dates_concatentated = Arrays.stream(all_dates).collect(Collectors.joining("\n"));
有关更多详细信息,您可以参考java.util.stream.Collectors类的Javadoc
,您很可能想使用String.join
方法而不是all_dates.join
:
String allDatesJoined = String.join("\n",all_dates);
您还将结果分配回all_dates
数组中。您需要告诉Java您要使用数组中的哪个位置。如果要分配给第一个数组位置,请使用all_dates[0]
:
all_dates[0] = allDatesJoined;
,
我可以看到您的代码存在三个问题:
-
问题#1-不考虑leap年:对于
28
,您总是使用Feb
天,这是不正确的。年有29
天。这是java.time
API派上用场的地方,例如import java.time.Month; import java.time.Year; public class Main { public static void main(String[] args) { int year1 = 2019; int year2 = 2020; int month = 1; int lengthOfMonth = Month.values()[month].length(Year.of(year1).isLeap()); System.out.println("Length of Feb in the year," + year1 + " is " + lengthOfMonth); lengthOfMonth = Month.values()[month].length(Year.of(year2).isLeap()); System.out.println("Length of Feb in the year," + year2 + " is " + lengthOfMonth); } }
输出:
Length of Feb in the year,2019 is 28 Length of Feb in the year,2020 is 29
因此,您应该从代码中删除数组
days_in_months
,并将day=days_in_months[month]
替换为day = Month.values()[month].length(Year.of(year).isLeap())
-
问题#2-尝试以非静态方式调用
static
函数String.join,并且也在数组变量而不是String
变量上调用:您需要将其用作String.join("\n",all_dates)
。 -
问题#3-尝试将连接的字符串分配给数组:请注意,
String.join
返回的是String
值,而不是数组。因此,您需要将连接的字符串分配给String
变量(例如String allDatesStr = String.join("\n",all_dates)
),而不是数组变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。