实验1 方法的重写
一、实验目的
掌握常用方法的重写
二、实验内容
1.编写一个学生类,并重写equals()方法,当学生的姓名和年龄相同时,表示两个学生对象相同。
2.编写一个学生类,并重写toString()方法,调用该方法,输出学生的姓名和年龄,格式为姓名:XXX,年龄:XX
三、程序代码
1. import java.util.ArrayList;; 2. class Stu { 3. String name; 4. int age; 5. public boolean equals (Object obj) { 6. if(this == obj) 7. return true; 8. else{return false; 9. } 10. } 11. public Stu(String name,int age) { 12. this.name=name; 13. this.age=age;} 14. public String toString() { 15. return "姓名:"+name+","+"年龄:"+age;}} 16. public class Student { 17. public static void main(String[] args) { 18. Stu s1 = new Stu("范燕",20); 19. Stu s2 = new Stu("范燕",20); 20. System.out.print("两学生对象是否相同:"); 21. System.out.println(s1.name.equals(s2.name)&&s1.age==s2.age); 22. System.out.println("输出学生的姓名和年龄:"); 23. System.out.println(s1.toString()); 24. } 25. }
实验2 检索简历
一、实验目的
本实验的目的是让学生掌握String类的常用方法
二、实验内容
简历的内容如下:
“姓名:张三 出生时间:1989.10.16。 个人网站:http://www.zhang.com。身高:185 cm,体重:72 kg”
三、程序代码
1. public class FindMess { 2. public static void main(String args[]) { 3. String mess = "姓名:张三 出生时间:1989.10.16。个人网站:http://www.zhang.com。身高:185 cm,体重:72 kg"; 4. int index = mess.indexOf(":");//mess调用indexOf(String s)方法返回字符串中首次出现冒号的位置 5. String name = mess.substring(index+1); 6. if(name.startsWith("张")) { 7. System.out.println("简历中的姓名姓\"张\""); 8. } 9. index = mess.indexOf(":", index+1);//mess调用indexOf(String s,int start)方法返回字符串中第2次出现冒号的位置 10. String date = mess.substring(index+1,index+11); 11. System.out.println(date); 12. index = mess.indexOf(":",index+1); 13. int heightPosition = mess.indexOf("身高");// mess调用indexOf(String s)方法返回字符串中首次出现"身高"的位置 14. String personNet = mess.substring(index+1,heightPosition-1); 15. System.out.println(personNet); 16. index = mess.indexOf(":",heightPosition);//mess调用indexOf(String s,int start)方法返回字符串中"身高"后面的冒号位置 17. int cmPosition = mess.indexOf("cm"); 18. String height = mess.substring(index+1,cmPosition); 19. height = height.trim(); 20. int h = Integer.parseInt(height); 21. if(h>=180) { 22. System.out.println("简历中的身高"+height+"大于或等于180 cm"); 23. } 24. else { 25. System.out.println("简历中的身高"+height+"小于180 cm"); 26. } 27. index = mess.lastIndexOf(":");//mess调用lastIndexOf(String s)返回字符串中最后一个冒号位置 28. int kgPosition = mess.indexOf("kg"); 29. String weight = mess.substring(index+1,kgPosition); 30. weight = weight.trim(); 31. int w = Integer.parseInt(weight); 32. if(w>=75) { 33. System.out.println("简历中的体重"+weight+"大于或等于75 kg"); 34. } 35. else { 36. System.out.println("简历中的体重"+weight+"小于75 kg"); 37. } 38. } 39. }
四、实验指导
1.字符串s调用subString()返回一个新的字符串对象,而s本身不会发生变化。
2.字符串s调用replaceAll(String newS,String olds)返回一个新的字符串对象,而s本身不会发生变化。
实验3 字符串方法练习
1.模拟登录,输入用户名和密码,给三次机会,并提示还有几次。
1. import java.util.Scanner; 2. public class User { 3. public static void main(String[] args) { 4. Scanner val = new Scanner(System.in); 5. int times = 0;//用于存储出错次数 6. while(true) {//构建一个死循环 7. System.out.println("请输入密码:"); 8. if(val.nextLine().equals("123")){//判断用户输入是否等于123 9. System.out.println("Welcome"); 10. break;//退出循环 11. } 12. else {//密码出错执行 13. times++; 14. if(times<3) { 15. System.out.println("密码错误,你还有"+(3-times)+"次机会"); 16. continue;//不再继续执行,回到while语句 17. } 18. else { 19. System.out.println("bye!"); 20. return;//退出主方法,结束运行 21. } 22. } 23. } 24. val.close();//关闭Scanner对象 25. } 26. }
2.遍历字符串中的每一个字符
使用的方法:length() 长度
charAt() 取指定位置的字符
1. import java.util.Scanner; 2. public class Strings { 3. public static void main(String[] args) { 4. Scanner val = new Scanner (System.in); 5. String str = "Hello World!"; 6. System.out.println("字符串长度为:"+str.length()); 7. System.out.print("请输入所取字符的位置:"); 8. System.out.println(str.charAt(val.nextInt())); 9. } 10. }
实验4 菜单的价格
一、实验目的
掌握怎样使用Scanner类的对象从字符串中解析程序所需要的数据
二、实验内容
菜单的内容如下:
“北京烤鸭:189元 西芹炒肉12.9元 酸菜鱼:69元 铁板牛柳:32元”
编写一个Java应用程序,输出菜单中的价格数据,并计算出菜单的总价格。
三、程序代码
1. import java.util.InputMismatchException; 2. import java.util.Scanner; 3. public class ComputePrice { 4. public static void main(String args[]) { 5. String menu = "北京烤鸭:189元 西芹炒肉:12.9元 酸菜鱼:69元 铁板牛柳:32元"; 6. Scanner scanner = new Scanner(menu);//【代码1】 //使用构造方法Scanner(String str)创建scanner,将menu传递给构造方法的参数 7. String regex = "[^0123456789.]+"; 8. scanner.useDelimiter(regex);//【代码2】 //scanner调用useDelimiter(String regex),将regex传递给该方法的参数 9. double sum=0; 10. while(scanner.hasNext()){ 11. try{ 12. double price = scanner.nextDouble();//【代码3】 //scanner调用nextDouble()返回数字单词 13. sum = sum+price; 14. System.out.println(price); 15. } 16. catch(InputMismatchException exp){ 17. String t = scanner.next(); 18. } 19. } 20. System.out.println("菜单总价格:"+sum+"元"); 21. } 22. }
四、实验指导
1.Scanner可以用nextInt()或nextDouble()方法解析字符串中的数字型单词,即Scanner可以调用nextInt()或nextDouble()方法将数字型单词转化为int或double数据返回。
2.如果单词不是数字型单词,Scanner调用nextInt()或nextDouble()方法将发生InputMismatchException异常。
实验5 日期录入
一、实验目的
掌握Date和SimpleDateFormat类的使用
二、实验内容
1.从键盘接收字符串日期信息,并按照Date类型保存,要求日期格式为XXXX/XX/XX的格式录入,按照XXXX年XX月XX日的格式输出。
1. import java.util.Date; 2. import java.util.Scanner; 3. import java.text.ParseException; 4. import java.text.SimpleDateFormat; 5. 6. public class DataTest { 7. public static void main(String[] args) throws ParseException { 8. Scanner scanner=new Scanner(System.in);//键盘输入日期 9. System.out.println("输入的日期为:"); 10. String bir=scanner.next();//获取键盘输入内容 11. SimpleDateFormat d=new SimpleDateFormat("yyyy/MM/dd"); 12. Date date=d.parse(bir); 13. System.out.println("输出的日期为:"); 14. SimpleDateFormat e=new SimpleDateFormat("yyyy年MM月dd日"); 15. System.out.println(e.format(date)); 16. } 17. }
2.算一下你来到这个世界多少天?
提示:将你的出生日和今天都封装到字符串里
将字符串转换成日期对象
将日期对象转换成毫秒值
让今天的毫秒值减去你出生那天的毫秒值
将毫秒值转换成天数
1. import java.text.ParseException; 2. import java.text.SimpleDateFormat; 3. import java.util.Date; 4. import java.util.Scanner; 5. 6. public class Birthday { 7. public static void main(String[] args) throws ParseException { 8. Scanner scanner=new Scanner(System.in);//键盘输入天数 9. System.out.println("请输入你的出生日期:"); 10. String bir=scanner.next();//获取键盘输入内容 11. SimpleDateFormat d=new SimpleDateFormat("yyyy/MM/dd"); 12. Date date=d.parse(bir); 13. long birth=date.getTime(); 14. //获取当前日期,转化为毫秒值 15. long day=new Date().getTime(); 16. //使用当前日期的毫秒值-出生日期的毫秒值 17. long time=day-birth; 18. //把毫秒差值转换为天(s/1000/60/60/24) 19. System.out.println("你已经来到这个世界"+time/1000/60/60/24+"天了"); 20. } 21. }