常用的实用类(Scanner类、Date类、Canlendar类)
来源:互联网 发布:广州白云电气知乎 编辑:程序博客网 时间:2024/06/06 08:10
关于Scanner类
两个不同的写法:
1、使用默认分隔标记解析字符串:
package Example28;import java.util.InputMismatchException;import java.util.Scanner;public class Application { public static void main(String[] args) { String cost = "TV cost 876 dollar.Computer cost 2398 dollar." + "telephone cost 1258 dollar"; Scanner scanner = new Scanner(cost); double sum = 0; while(scanner.hasNext()){ try { double price = scanner.nextDouble(); sum = sum + price; System.out.println(price); } catch (InputMismatchException e) { String t = scanner.next(); } } System.out.println("总消费:" + sum + "元"); }}
调试结果:
876.02398.01258.0总消费:4532.0元
2、使用正则表达式作为分隔标记解析字符串:
package Example28;import java.util.InputMismatchException;import java.util.Scanner;public class Application2 { public static void main(String args[]){ String cost = "花费清单: 市花费76.95元,长途话费1956.36元,短信费12.56元"; Scanner scanner = new Scanner(cost); scanner.useDelimiter("[^0123456789.]+");//Scanner设置分标记 double sum =0; while(scanner.hasNext()){ try { double price = scanner.nextDouble(); System.out.println(price); sum +=price; } catch (InputMismatchException e) { String t = scanner.next(); } } System.out.println("总消费:" + sum + "元"); }}
调试结果:
76.951956.3612.56总消费:2045.87元
关于Date类
1、使用Data类的无参数构造方法创建的对象可以获取本机的当前日期和时间。
例子:
Date time = new Date();
2、使用带参的构造方法。
计算机系统将其自身的时间的“公元”设置在了1970年1月1日0时(这个时间也叫作格林威治时间),可以根据这个时间使用Date的带参数的构造方法Data(long time)来创建一个Date对象。
例子:
Date date1 = new Date(1000), date2 = new Date(-1000);
其中的参数取正数表示公元后的时间,取负数表示公元前的时间,例如1000表示1000毫秒,那么date1含有的时间,日期就是计算机系统公元后1毫秒时刻的日期,时间。如果运行Java程序的本地时区是北京时区(与格林威治时间相差8个小时),那么上述date1就是1970年01月01日08时00分01秒,date2就是1970年01月01日07时00分59秒。
除此之外,还可以用System类的静态方法 public long currentTimeMillis()获取系统当前时间,如果运行Java程序的本地时间是北京时区,那么这个时间就是从1970年01月01日08时00分00秒到目前时刻所走的毫秒数(这个一个很大的数)。
Date对象表示时间的默认顺序是:星期,月,日,时,分,秒, 时区,年
关于Calendar(日历)类
使用Calendar类的static方法getInstance()可以初始化一个日历对象。
例子:
package Example28;import java.time.DayOfWeek;import java.util.Calendar;import java.util.Date;public class Application3 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); int year = calendar.get(Calendar.YEAR), month = calendar.get(Calendar.MONTH), day = calendar.get(Calendar.DAY_OF_MONTH), hour = calendar.get(Calendar.HOUR_OF_DAY), minute = calendar.get(Calendar.MINUTE), second = calendar.get(Calendar.SECOND); System.out.println("现在的时间是:"); System.out.println(year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒"); int y = 2015,m=9,d=1; calendar.set(y, m-1,d);//将日历翻阅到2015年9月1日,注意8表示9月从0数到11; long time1 = calendar.getTimeInMillis(); System.out.println(time1); y = 2016; m = 7; day = 1; calendar.set(y, m-1,d);//将日历翻阅到2017年7月1日 long time2 = calendar.getTimeInMillis(); long subDay = (time2 - time1) /(1000*60*60*24); System.out.println("" + new Date(time2)); System.out.println("与" + new Date(time1)); System.out.println("相隔" + subDay + "天"); }}
调试结果:
现在的时间是:2016年8月1日14时59分16秒1441090756354Fri Jul 01 14:59:16 CST 2016与Tue Sep 01 14:59:16 CST 2015相隔304天
输出当前日历的例子:
CalendarBean 类
package Example29;import java.util.Calendar;public class CalendarBean { int year = 0,month = 0; public void setYear(int year){ this.year = year; } public void setMonth(int month) { this.month = month; } public String [] getCalendar(){ String [] a = new String[42]; Calendar rili =Calendar.getInstance(); rili.set(year, month-1,1); int weekDay =rili.get(Calendar.DAY_OF_WEEK)-1;//计算1号的星期 int day =0; if(month == 1||month == 3||month ==5||month == 7 ||month ==8||month == 10||month == 12){ day = 31; } else if(month == 2){ if((year%4 == 0)&&(year%100 != 0)||(year%400 == 0)){ day = 29; } else day = 28; } else{ day = 30; } for(int i = 0;i<weekDay;i++){ a[i] = " "; } for(int i = weekDay,n=1;i<weekDay+day;i++){ a[i] = String.valueOf(n); n++; } for(int i = weekDay + day;i<a.length;i++){ a[i] =" "; } return a; }}
主函数调用
package Example29;import java.util.Scanner;public class Application { public static void main(String[] args) { CalendarBean calendarBean = new CalendarBean(); Scanner scanner = new Scanner(System.in); System.out.println("请输入您要查看的年分:"); int y =scanner.nextInt(); System.out.println("请输入您要查看的月份:"); int m = scanner.nextInt(); calendarBean.setYear(y); calendarBean.setMonth(m); String [] a = calendarBean.getCalendar();//返回号码的一组数组; char [] str = "日一二三四五六".toCharArray(); for(char c:str){ System.out.printf("%5c",c); } for(int i =0;i<a.length;i++){ if(i%7 == 0){ System.out.println("");//换行 } System.out.printf("%4s",a[i]); } }}
调试结果:
请输入您要查看的年分:2016请输入您要查看的月份:9 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
关于日期的格式化:
1Format方法:
Java早起使用Java。text包中的子类SimpleDateFormat来实现日期的格式化。
JDK1.5版本提供了更为方便的**Formatter类的**format方法。
格式入下:
format(格式化模式,日期列表)
按照“格式化模式”返回“日期列表”,中所列各个日期中所含数据(年,月,日,小时等数据)的字符串表示。目前,Java已经将format方法作为了String类的静态方法,因此,程序可以直接使用String类调用format方法对日期进行格式化。
1.格式化模式
format方法中的“格式化模式”是一个用双引号扩哈气的字符序列(字符串),该字符串序列中的字符由时间格式和普通字符所构成。(不是时间格式的符号都被认为是普通字符,可以查阅Java API中的java.util
.Formatter类,了解时间格式符号)。
例子:
package Example30;import java.util.Calendar;import java.util.Date;public class Application { public static void main(String[] args) { Date date = new Date(); System.out.println(date); String pattern = "%tY-%<tm-%<td(%<tA) %<tT"; String s = String.format(pattern, date); System.out.println(s); Calendar calendar = Calendar.getInstance(); calendar.set(2022, 11, 31, 05, 15, 59); s = String.format("%tY年%<tb%<td日(%<tT),所在时区%<tZ与GMT相差:%<tz小时", calendar); System.out.println(s); }}
调试结果:
Fri Sep 02 18:24:37 CST 20162016-09-02(星期五) 18:24:372022年十二月31日(05:15:59),所在时区CST与GMT相差:+0800小时
- 常用的实用类(Scanner类、Date类、Canlendar类)
- 工具类Date SimpleDateFormat Canlendar
- Date类、Canlendar类和DateFormat类
- 常用类-Scanner-System-Date-Calendar等
- Canlendar类使用的一个简单例子
- Canlendar类使用的一个简单例子
- 【常用包类】Scanner。
- java Scanner类常用方法
- scanner:java的scanner类详解
- Scanner类的应用
- Scanner 类的用法
- Scanner类的说明
- Scanner类的用法
- Scanner类的学习
- java的Scanner类
- Scanner类的用法
- Scanner类的使用
- Scanner类的用法
- 41. First Missing Positive
- Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
- iptables lokkit
- 《多线程简单介绍》
- P1316 明明的随机数
- 常用的实用类(Scanner类、Date类、Canlendar类)
- 数据库的方向 - 行vs列
- SQL中DATENAME函数的用法
- TCP/IP系列基础概念(一)
- (二)Servlet就是这样—Servlet中Response和Request
- ASP.NET : F5刷新重复提交的问题
- 开源思维导图工具KityMinder
- Html5语义化标签
- 在异步运行时,操作不能进行