实验三学习日记

实验三学习日记

1. 编写程序:输入一个18位的身份证号码,然后根据其中的出生日期信息判断是否已过生日?并输出以下三个信息中的一个。

This year’s birthday has passed.
This year’s birthday has not passed.
Today is birthday.

package src;
import java.util.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class src1 {
   
  public static void main(String [] args) throws ParseException
  {
       System.out.println("请输入你的身份证号码");
        String ID = new Scanner(System.in).next();   //输入字符串
        String birthday = ID.substring(6, 6+8);       //得到字符串
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("yyyyMMdd");
        Date birth = df.parse(birthday);
        int judge =compare(date,birth);
        if(judge==1)
        {	
       	 System.out.println("This year's birthday has passed.");
        }else if(judge==0)
        {
       	 System.out.println("Today is birthday.");
        }else
        {
       	 System.out.println("This year's birthday has not passed.");
        }
  }
  
  public static int compare(Date date,Date birth)  //判断是否过生日的函数
  {
      int birthyear = birth.getYear();
      int birthMonth =birth.getMonth();
      int birthday =birth.getDate();
      int newyear =date.getYear();
      int newMonth =date.getMonth();
      int newday =date.getDate();
      if(birthMonth>newMonth)
      {
   	   return 1;
      }else if(birthMonth==newMonth)
      {
   	   if(birthday>newday)
   	   {
   		   return 1;
   	   }else if(birthday==newday)
   	   {
   		   return 0;
   	   }else
   	   {
   		   return -1;
   	   }
      }else
      {
   	   return -1;
      }
  }
  
}

学会的内容:https://blog.youkuaiyun.com/baidu_41666198/article/details/79942661
JAVA 的输入与输出
Sring类的学习
日期类Data 和日期格式化类SimpleDateFormat,DateFormat的学习.

2.编写程序剔除一个字符串中的全部非数字字符,例如:将形如“A1BC2you3”中的非数字字符全部剔除,得到字符串“123”,并将“123”转换为int型并输出,如果输入字符串中不含数字,则输出“无数字”。编写程序剔除一个字符串中的全部非数字字符,例如:将形如“A1BC2you3”中的非数字字符全部剔除,得到字符串“123”,并将“123”转换为int型并输出,如果输入字符串中不含数字,则输出“无数字”。

package src;
import java.util.*;
public class src2 {
  public static void main(String[] args)
  {
	  String str1 =new Scanner(System.in).next();
	  String str2 =new String();
	  for(int i = 0;i<str1.length();i++)
	  {
		  if(Character.isDigit(str1.charAt(i)))    //character类的使用
		  {
			  str2 +=str1.charAt(i);
		  }
	  }
	  if(str2.length()==0)
	  {
		  System.out.println("无数字");
	  }else
	  {
		  System.out.println(str2);
	  }
	  
  }
}

学习的内容:Character 类的学习
https://blog.youkuaiyun.com/qq_26599807/article/details/89016777

3.编写程序将18位的身份号证号码中表示年份的信息显示为*,其余的字符保持不变(例如:将身份证号码10013319961213602X转换为100133****1213602X显示)。

package src;
import java.util.*;
public class str3 {
 /* public static void main(String[] args)    //用String方法
  {
	  System.out.println("请输入你的身份证");     
	  String id =new Scanner(System.in).next();
	  StringBuilder sb =new StringBuilder(id);
	  sb.replace(6,10,"****");
	  System.out.println(sb);
  }
  */
  public static void main(String[] args)  //用StringBuffer方法
  {
	  System.out.println("请输入你的身份证");
	  StringBuffer id =new StringBuffer();
	  Scanner scanner =new Scanner(System.in);
	  id.append(scanner.next());
	  StringBuilder sb =new StringBuilder(id);
	  sb.replace(6,10,"****");
	  System.out.println(sb);
  }
}

学习的内容:探索Java中String、StringBuilder、StringBuffer三者的区别
https://blog.youkuaiyun.com/x83853684/article/details/82081658

4.编写程序实现,大小写字母的切换,其他字符不变(例如:输入字符串“I love Java!”则输出为“i LOVE jAVA!”)。

package src;
import java.util.*;
public class src4 {
  public static void main(String [] args)
  {
	  String str1 = new Scanner(System.in).nextLine();  //输入字符串
	  String str2 = new String();
	  char ch;
	  for(int i=0;i<str1.length();i++)
	  {
		  if(Character.isUpperCase(str1.charAt(i)))
		  {
			  ch = Character.toLowerCase(str1.charAt(i));
			  str2+=ch;
		  }else if(Character.isLowerCase(str1.charAt(i)))
		  {
			  ch =Character.toUpperCase(str1.charAt(i));
			  str2+=ch;
		  }else
		  {
			  ch =str1.charAt(i);
			  str2+=ch;
		  }
	  }
	  System.out.println(str2);
  }
}

学习的内容: Character 类的灵活应用。

5.请设计一个类,封装两个静态方法,分别是字符串加密方法、字符串解密方法。

package src;
import java.util.*;
public class src5 {
   public static void main(String [] args)
   {
	   Scanner scan =new Scanner(System.in);
	   char secret ='8';//加密文字符
	   System.out.println("请输入你要加密的内容");
	   String pass =scan.next();
	   System.out.println("原字符串的内容" +pass);
	   String secrerult=secret(pass,secret);
	   System.out.println("加密后的内容"+secrerult);
	   String uncrypresult = secret(secrerult,secret);
	   System.out.println("解密后的内容"+uncrypresult);
   }
   
   public static String secret(String value,char secret)
   {
	   byte[] bt =value.getBytes();//将其转化为字符数组
	   for(int i=0;i<bt.length;i++)
	   {
		   bt[i]=(byte)(bt[i]^(int)secret);             //两次位或运算返回
	   }
	   String newresult =new String(bt,0,bt.length);
	   return newresult;
   }
}

学习的内容:学会了通过位运算对byte类型数据进行加密。

6.编写程序,实现输入银行卡号,以每4个字符加一个空格显示。例如,假如银行卡号是62220630108589564785130,则输出为6222 0630 1085 8956 4785 130。

package src;
import java.util.*;
public class str6 {
  public static void main(String [] args)
  {
	  System.out.println("请输入你的银行号");
	  String bankid=new Scanner(System.in).next();
	  char []id =bankid.toCharArray();
	  String changeid =new String();
	  for(int i=0;i<id.length;i++)
	  {
		  if(i%4==0&&i>0)
		  {
			  changeid+=' ';
		  }
		  changeid += id[i];
	  }
	  System.out.println(changeid);
	  
  }
}

学会的内容:String 类的toCharArray方法.

7. 编写程序,输入一个英文句子,将每个单词的首字符改成大写后再输出。

package src;
import java.util.*;
public class str7 {
public static void main(String[]args)
 {
	 System.out.println("输入一个英文句子");
	 String Phrace =new Scanner(System.in).nextLine();
	 String [] s=Phrace.split(" ");
	 String str2 =new String();
	 for(int i=0;i<s.length;i++)
	 {
		 s[i]=s[i].substring(0,1).toUpperCase()+s[i].substring(1);
		 if(i==s.length-1)
		 {
			 str2=str2+s[i];
		 }else
		 {
			 str2=str2+s[i]+' ';
		 }
	 }
	 System.out.println(str2);
  }
}

学会的内容:String中的split方法将字符串分成字符串数组

8.编写程序,产生随机电话号码,电话号码的前五位是15923,后六位随机产生。

package src;

import java.util.Random;

public class str8 {
  public static void main(String[] args)
  {
	  String firtstfive = "15923";
	  String lastsix =new String();
	  String Phone =new String();
	  Random rnd =new Random();
	  for(int i=0;i<6;i++)
	  {
		  int nmber =rnd.nextInt(10);
		   lastsix += nmber;
	  }
	  Phone =firtstfive+lastsix;
	  System.out.println(Phone);
  }
}

学习的内容:Random类的构造方法和类的方法
https://blog.youkuaiyun.com/qq_36850813/article/details/90900744

9.10. 运用面向对象的程序设计思想,把表1中的学生信息存储在List集合(ArrayList或者LinkedList)中。编写程序实现下列功能:

表1 学生信息
学号 姓名 出生日期
201644001 张三 1997年2月3日
201644002 李四 1998年11月11日
201644003 王五 1996年3月2日
201644004 赵六 1996年12月12日
201644005 周正 1997年10月10日
(1)创建Student学生类,类中包括三个成员变量,分别为学号、姓名、出生日期,添加不带参数的构造方法,添加含以上三个参数的构造方法,添加各成员变量的 Getter和Setter方法,改写toString()方法(返回字符串格式:学号 姓名 出生日期)
(2)将表1中的学生依次添加到List中;
(3)输出所有的学生信息(使用迭代器Iterator);
(4)有学生(学号:201644006,姓名:李明,出生日期:1998年1月12日)中途入学,将其添加到List集合中;
(5)有学生“王五”中途退学,将其从List集合中删除;
(6)再一次遍历输出所有的学生信息(使用foreach语句)。

package src;
import java.util.*;
public class Student {
   public String id;//学号
   public String name;//姓名
   public String birth;//出生日期
   Student() //不带参数的构造方法
   {
	   
   }
   
   Student(String id,String name,String birth) //带三个参数的构造方法
   {
	   this.id = id;
	   this.name =name;
	   this.birth = birth;
   }
   
   public String getId() {
	return id;
   }
   public void setId(String id) {
	this.id = id;
   }
   public String getName() {
	return name;
   }
   public void setName(String name) {
	this.name = name;
   }
   public String getBirth() {
	return birth;
   }
   public void setBirth(String birth) {
	this.birth = birth;
   }
   
   public static void addStudent(List<Student> list)  //增加学生信息
   {
	   Scanner sc=new Scanner(System.in);
	   boolean flag = false;
	   String newStudentid;
	   while(true)
	   {
		   System.out.println("请输入学号:");
		    newStudentid = sc.nextLine();
		   for(int i=0;i<list.size();i++)
		   {
			   Student s =list.get(i);
			   if(s.getId().equals(newStudentid))
			   {
				   flag =true;
				   break;
			   }
		   }
		   if(flag==true)
		   {
			   System.out.println("输入的学生已存在,请重新输入");
		   }else
		   {
			   break;
		   }
	   }
	   System.out.println("请输入学生的姓名");
	   String newStudentname=sc.nextLine();
	   System.out.println("请输入学生的生日");
	   String newStudentbirth=sc.nextLine();
	   Student newStudent =new Student();
	   newStudent.setId(newStudentid);
	   newStudent.setBirth(newStudentbirth);
	   newStudent.setName(newStudentname);
	   list.add(newStudent);
   }
   
   public static void print1(List<Student> list) //迭代器Iterator输入所以学生信息
   {
	   Iterator<Student> it=list.iterator();
	   while(it.hasNext())
	   {
		   Student st =it.next();
		   System.out.println("学号:  "+st.id+"姓名:  "+st.name+"生日:  "+st.birth);
	   }
   }
   
   public static void print2(List<Student> list)//用foreach方法输出学生信息
   {
	for(Student obj: list)
	   {
		   Student st = obj;
		   System.out.println("学号:  "+st.id+"姓名:  "+st.name+"生日:  "+st.birth);
	   }
   }
   
   public static void remove(List<Student> list)
   {
	   System.out.println("请输入你要移除的学生的姓名");
	   String movename =new Scanner(System.in).nextLine();
	   int index = 0;
	   for(int i=0;i<list.size();i++)
	   {
		   if(list.get(i).equals(movename))
		   {
			   index=i;
		   }
	   }
	   list.remove(index);
   }
   
   public static void main(String[] args)
   {
	   List<Student> list = new ArrayList<Student>();
	   while(true)
	   {
		   System.out.println("-----------欢迎进入学生信息管理系统-----------");
		   System.out.println("请选择相关选项对学生信息进行管理...\n");
		   System.out.println("1.查看所有学生信息");
		   System.out.println("2.添加学生信息");
		   System.out.println("3.删除学生信息");
		   System.out.println("4.退出系统\n");
		    Scanner sc = new Scanner(System.in);
			// 接收选项数据
			System.out.println("请输入你的选项:");
			String option = sc.nextLine();
			switch (option) {
			case "1":
				print2(list);
				break;
			case"2":
			  addStudent(list);
			  break;
			case"3":
				remove(list);
				break;
			case"4":
				System.out.println("退出系统成功!");
				System.exit(0);
				break;
			default:
				System.out.println("\n输入错误,请重新选择!\n");
				break;
	   }
   }
 }
}

学习的内容:对象的定义方法,Class类的反射,面向对象的程序设计思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值