【Java】运用泽勒一致性计算某天是星期几

 1 /**
 2  * Created by liangjiahao on 2017/2/26.
 3  * 运用泽勒一致性计算某天是星期几?
 4  * 公式:
 5  *          h = (q + 26(m+1)/10 + k +k/4 + j/4 +5j) % 7
 6  *
 7  */
 8
 9
10 import java.util.Scanner;
11 public class Zeller {
12     public static void main(String args[]){
13         Scanner imput = new Scanner(System.in);
14
15         System.out.print("Enter a year: (e.g, 2012): ");
16         int year = imput.nextInt();
17
18         System.out.print("Enter a mouth: 1-12:  ");
19         int mouth = imput.nextInt();
20
21         System.out.print("Enter the day of the mouth: ");
22         int day = imput.nextInt();
23
24         int tempMouth = mouth;      //一月二月记为13,14,年数记为上一年
25         switch (tempMouth){
26             case 1: mouth = 13; year -=1; break;
27             case 2: mouth = 14; year -=1; break;
28         }
29
30         int century = year / 100;
31         int yearOfCentury = year % 100;
32
33         int theDayIs = (day + 26 * (mouth + 1) / 10 + yearOfCentury + yearOfCentury / 4 + century / 4 + 5 * century) % 7;
34         //0为周六1为周日2为周一3为周二4为周三5为周四6为周五
35         switch (theDayIs){
36             case 0 :System.out.println("Day of the week is Saturday"); break;
37             case 1 :System.out.println("Day of the week is Sunday"); break;
38             case 2 :System.out.println("Day of the week is Monday"); break;
39             case 3 :System.out.println("Day of the week is Tuesday"); break;
40             case 4 :System.out.println("Day of the week is Wednesday"); break;
41             case 5 :System.out.println("Day of the week is Thursday"); break;
42             case 6 :System.out.println("Day of the week is Friday"); break;
43         }
44
45     }
46 }
时间: 2024-10-12 20:03:06

【Java】运用泽勒一致性计算某天是星期几的相关文章

转: memcached Java客户端spymemcached的一致性Hash算法

转自:http://colobu.com/2015/04/13/consistent-hash-algorithm-in-java-memcached-client/ memcached Java客户端spymemcached的一致性Hash算法 最近看到两篇文章,一个是江南白衣的陌生但默默一统江湖的MurmurHash,另外一篇是张洋的一致性哈希算法及其在分布式系统中的应用.虽然我在项目中使用memcached的java客户端spymemcached好几年了,但是对它的一致性哈希算法的细节从来

java对象占用内存大小计算方式

案例一: User public class User { } UserSizeTest public class UserSizeTest { static final Runtime runTime=Runtime.getRuntime(); public static void main(String[] args) { final int count = 100000; User[] us=new User[count]; long heap1 = 0; for (int i = -1;

iOS 计算某个月的天数 计算某天的星期

// 某年某月的天数 - (NSInteger)dayCount:(NSInteger)years { NSInteger count = 0; for (int i = 1; i <= 12; i++) { if (2 == i) { if((years % 4 == 0 && years % 100!=0) || years % 400 == 0) //是闰年 { count = 29; } else { count = 28; } }else if (4 == i || 6 =

Java使用BigDecimal解决精确计算的问题

最近有人在微信上给我发了一个数学题目,如下图: 我看了之后感觉很是简单,但是却想了半天才解出来.解出来后我想到了用程序再解一遍,然而精确计算的问题却让人头疼不已. 解题思路: 思路其实很简单,暴力求解就可以,但是当你写了一个四重for循环后你会发现解不出来.由此考虑到结果可能是小数,便把增量改成了float类型,每次自增0.1. 当你写完满心欢喜地运行的时候会发现还是出不来结果.再改成double类型也同样是不行. 这是因为java中float类型相加是把十进制转化为二进制后相加然后把二进制结果

java实现两个日期内具有几个星期几的计算

虽然java自带的Calendar类似乎很好用,但是作为小白的我还不会用.朋友说有时需要计算任意两个日期内具有几个星期一或者星期三.问我能不能实现,我想想,能实现,可能代码不够优雅.具体代码放在下面.欢迎朋友与我分享更好的思路或工具吧~ package cn.example.mapper; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import ja

用Java进行简单的乘除计算

一.题目简介 一个两个数简单的乘除计算的Java代码并验证是否其正确性. 二.源码的github链接 https://github.com/Battleblocke/Math 代码如下: 1. public class Math { public static int divide(int x,int y) {     return x/y; } public static int multiple(int x,int y) { return x*y; }} 2. import static o

java:switch用法和计算年月的方法

import java.util.Scanner; public class DaYu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int y =sc.nextInt();//接收输入的值,不需要重复定义Scanner对象“sc”; int m = sc.nextInt(); int d = sc.nextInt(); int sum = 0; //判断输入是否正确 if(y<20

java内存模型-顺序一致性

数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java 内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此).如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序. JMM 对正确同步的多线程程序的内存一致性做了如下保证: 如果程序是正确同步的,程序的执行将具有顺序一致性(sequentially consistent

Java中时间日期的计算及相互转换

Java中表示时间日期的主要是Date和Calendar两个类,以及Date与String转换用到的SimpleDateFormat类. 0x00:Date与long类型之间的转换 Java内部使用UTC时间,保存距1970年01月01日00时00分00秒以来所经历的毫秒值,使用的是long类型. //需要导入java.util包里的Date类 import java.util.Date; long millis = 0; Date date = new Date(); //将date转为mil