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