我想显示斋月2017 年的开始和结束日期。我尝试使用HijrahChronology内置于 Java 8 及更高版本的HijrahDate类编写代码。
import java.time.LocalDate;
import java.time.chrono.HijrahDate;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjusters;
public class Ramdan {
public static void main(String[] args) {
HijrahDate ramdanDate = HijrahDate.now().with(ChronoField.DAY_OF_MONTH, 1).with(ChronoField.MONTH_OF_YEAR, 9);
LocalDate ramdanStart = LocalDate.from(ramdanDate);
LocalDate ramdanEnd = LocalDate.from(ramdanDate.with(TemporalAdjusters.lastDayOfMonth()));
System.out.println("Ramdan 2017");
System.out.println(ramdanStart);
System.out.println(ramdanEnd);
}
}
Run Code Online (Sandbox Code Playgroud)
但它显然会打印出当前年份的日期,即 2018 年。
输出
2017 年斋月
2018-05-16
2018-06-14
我尝试了很多事情,比如减年,或者做时间调整,但没有任何帮助。有人可以提出一种很酷的实现方式吗?
让我们有一个名为Employee的结构:
struct Employee
{
int basicsalary;
int bonus;
int netsalary;
};
Run Code Online (Sandbox Code Playgroud)
让我们有一个函数原型如下:
int calc_NetSalary(struct Employee**,int);
Run Code Online (Sandbox Code Playgroud)
让main函数声明结构数组的变量,如下所示:
struct Employee emp[100];
Run Code Online (Sandbox Code Playgroud)
让函数在main中调用如下:
for (i = 0; i < n; i++)
{
emp[i].netsalary = calc_NetSalary(emp[i],n); // Warning is here
}
Run Code Online (Sandbox Code Playgroud)
让函数定义如下:
int calc_NetSalary(struct Employee** emp,int n)
{
int i;
for(i = 0; i < n; i++)
{
emp[i]->netsalary = emp[i]->basicsalary + emp[i]->bonus;
}
return emp[i]->netsalary;
}
Run Code Online (Sandbox Code Playgroud)
我不知道作为一个参数传递什么,该函数需要一个带有两个星号的参数(代替emp上面的).我正在收到警告passing argument 1 of ‘calc_NetSalary’ from incompatible pointer type.我知道这一定是一个愚蠢的错误,或者我不清楚指针的概念.请帮忙 !