我想将以下代码转换为Java代码。我认为这是汇编代码,但不确定。我真正得不到的部分是y -= m < 3;
。
int dow(int y, int m, int d)
{
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
答案 0 :(得分:3)
布尔值m < 3
将评估为0
或1
。然后操作y -=
更有意义。
在java中,它看起来更像是:
y -= (m<3 ? 1 : 0)
答案 1 :(得分:0)
那个C代码,我相信这个
static final int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4,
6, 2, 4 };
static int dow(int y, int m, int d) {
if (m < 3) {
y--;
}
return (y + y / 4 - y / 100 + y / 400 + t[m - 1] + d) % 7;
}
是等价的。因为如果y -= m < 3;
y-=1;
m<3
,y-=0;
将评估为if
。相反,您可以使用简单的t[]
。最后,{{1}}在Java中的方法中不能是静态的。
答案 2 :(得分:0)
您在Java中的代码将是
public static void main(String[] args){
int calculated_value = dow(2014, 7, 31);
}
public static int dow(int y, int m, int d){
int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= (m < 3 ? 1 : 0);
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
答案 3 :(得分:0)
我看到你已经在其他答案中对代码进行了一些很好的文字翻译,但你真正想要写的是以下内容,它清晰,可读,并且依赖于受信任的库:
public static int dow(int y, int m, int d)
{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, y);
c.set(Calendar.MONTH, m - 1);
c.set(Calendar.DAY_OF_MONTH, d);
return (c.get(Calendar.DAY_OF_WEEK) - 1);
}
最后的- 1
只是将Java使用的数字星期几表示(其中Sunday = 1和Saturday = 7)映射到与原始代码中相同的映射。与m - 1
类似。
答案 4 :(得分:0)
package datecalculator;
import javax.swing.*;
public class DateCalculator {
public static int calculateDay(int y, int m, int d){
//Tomohiko Sakamoto's method
int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= (m < 3 ? 1 : 0);
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
public static void main(String[] args){
//Receiving input
int y = Integer.parseInt(JOptionPane.showInputDialog("Enter the year"));
int m = Integer.parseInt(JOptionPane.showInputDialog("Enter the month"));
int d = Integer.parseInt(JOptionPane.showInputDialog("Enter the day"));
//Calling Tomohiko Sakamoto's method
int answer = calculateDay(y, m, d);
//Output
if (answer == 0){JOptionPane.showMessageDialog(null, "Sunday");}
if (answer == 1){JOptionPane.showMessageDialog(null, "Monday");}
if (answer == 2){JOptionPane.showMessageDialog(null, "Tuesday");}
if (answer == 3){JOptionPane.showMessageDialog(null, "Wednesday");}
if (answer == 4){JOptionPane.showMessageDialog(null, "Thursday");}
if (answer == 5){JOptionPane.showMessageDialog(null, "Friday");}
if (answer == 6){JOptionPane.showMessageDialog(null, "Saturday");}
}
}