一、实验目的姓名: XXX 班级: XXXXX 学号: XXXXXXXXXXXX
在集成开发环境下,通过阅读Java API文档来使用合适的常用类及方法解决实际问题。
二、 实验目标:(1)能够通过阅读Java API文档来灵活运用Java API中的一些常用类(例如String、StringBuffer、System、Runtime、Math、Random等)来解决实际问题。
(2)能够灵活运用用Java语言的常用集合类(ArrayList、Map、Collections、Array等)来解决实际问题。
三、实验内容:定义一个方法,根据用户身份z号码计算其年龄并输出。
采用Random类或者Math类随机生成一组随机数,存入List集合类(ArrayList、linkedList等都可以),并利用Iterator接口便利集合。
获取当前的系统日期和时间来产生订单的单号,单号的构成:D+年份+月份+日期+时钟+分钟+秒+系统用户账号,要用到日期类Date(通过使用API文档来掌握该类的用法)。
编写一个程序,实现字符串大小写的转换并倒序输出。具体要求:
(1)使用for循环将字符串“ITcastHeiMa”从最后一个字符开始遍历。
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用在toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString( )方法,并将得到的结果输出。
定义一个方法,根据用户身份z号码计算其年龄并输出。
实验代码:
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; class parse{ public parse(String identifys){ date[0]= Integer.parseInt(identifys.substring(6,10)); date[1]=Integer.parseInt(identifys.substring(10,12)); date[2]=Integer.parseInt(identifys.substring(12,14)); get_now_date();} private void get_now_date(){ Date date=new Date(); SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd"); String Date=dateFormat.format(date); System.out.println("当前日期为:"+Date); now[0]= Integer.parseInt(Date.substring(0,4)); now[1]=Integer.parseInt(Date.substring(5,7)); now[2]=Integer.parseInt(Date.substring(8,10));} private boolean check(){ return now[0]>=date[0]&& date[0]>1900 &&(date[1]>0&&date[1]<13);} public int Figure(){ if (check()){ int age= now[0]-date[0]-1; if(now[1]date[2]){age++;}} if(now[1]>date[1]){age++;} return age;} return -1;} private int date[]=new int[3]; private int now[]=new int[3];} public class identify { public static void main(String[] args) { Scanner cin=new Scanner(System.in); String identifys=cin.nextLine(); if (identifys.length()!=18){ System.out.println("身份z号输入错误!"); return;} parse Person=new parse(identifys); if (Person.Figure()>0){ System.out.println("年龄为:"+Person.Figure()); return;} else { System.out.println("身份z号输入错误!"); return;}}}
输出结果:
610424200110101304 当前日期为:2021-12-03 年龄为:20
采用Random类或者Math类随机生成一组随机数,存入List集合类(ArrayList、linkedList等都可以),并利用Iterator接口便利集合。
实验代码:
import java.util.ArrayList; import java.util.Iterator; import java.util.Random; public class Randtest { public static void main(String[] args) { Iteratorintegers = generateRandomNumber().iterator(); while (integers.hasNext()) System.out.println(integers.next());} public static ArrayList generateRandomNumber () { Random random = new Random(); ArrayList arrayList = new ArrayList<>(); for (int i = 0; i < 10; i++) arrayList.add(random.nextInt(1000)); return arrayList;}}
输出结果:
237 941 720 976 631 308 148 97 727 289
获取当前的系统日期和时间来产生订单的单号,单号的构成:D+年份+月份+日期+时钟+分钟+秒+系统用户账号,要用到日期类Date(通过使用API文档来掌握该类的用法)。
实验代码:
import java.time.LocalDate; import java.time.LocalDateTime; public class OrderofGoods { public static void main(String[] args) { Order order = new Order(); System.out.println(order.getOrder());}} class Order { private int year; private int month; private String time; private final String account = "ADMIN"; private String order; public Order () { this.year = LocalDate.now().getYear(); this.month = LocalDate.now().getMonth().getValue(); this.time = LocalDateTime.now().toString().substring(11, 19); this.order = this.year + "" + this.month + time + account;} public String getOrder () {return this.order;}}
输出结果:
20211216:07:11ADMIN
编写一个程序,实现字符串大小写的转换并倒序输出。具体要求:
(1)使用for循环将字符串“ITcastHeiMa”从最后一个字符开始遍历。
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用在toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString( )方法,并将得到的结果输出。
实验代码:
import java.util.Locale; public class reverse { public static void main(String[] args) { String origin = "ITcastHeiMa"; StringBuffer stringBuffer = new StringBuffer(""); for (int i = origin.length() - 1, j = 0; i >= 0; i--, j++) { char c = origin.charAt(i); if (c <= 'z' && c >= 'a') { stringBuffer.append((c + "").toUpperCase(Locale.ROOT)); } if (c <= 'Z' && c >= 'A') { stringBuffer.append((c + "").toLowerCase(Locale.ROOT)); } } System.out.println(stringBuffer.toString()); } }
输出结果:
AmIEhTSACti4.2 错误分析
问题复现
在输入身份z号之后返回的年龄为-1,
问题分析
问题产生源于未通过check函数的检查,最终发现now时间未被初始化get_now_date初始化函数未被调用。
解决方案
在初始化date的同时调用get_now_date初始化函数初始化now.问题解决!
五、个人总结在本次实验中通过阅读Java API文档学习Java API中的一些常用类(例如String、StringBuffer、System、Runtime、Math、Random等)来解决实际问题。并尝试使用Java语言的常用集合类(ArrayList、Map、Collections、Array等)来解决实际问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)