实验三学习日记
- 1. 编写程序:输入一个18位的身份证号码,然后根据其中的出生日期信息判断是否已过生日?并输出以下三个信息中的一个。
- 2.编写程序剔除一个字符串中的全部非数字字符,例如:将形如“A1BC2you3”中的非数字字符全部剔除,得到字符串“123”,并将“123”转换为int型并输出,如果输入字符串中不含数字,则输出“无数字”。编写程序剔除一个字符串中的全部非数字字符,例如:将形如“A1BC2you3”中的非数字字符全部剔除,得到字符串“123”,并将“123”转换为int型并输出,如果输入字符串中不含数字,则输出“无数字”。
- 3.编写程序将18位的身份号证号码中表示年份的信息显示为*,其余的字符保持不变(例如:将身份证号码10013319961213602X转换为100133****1213602X显示)。
- 4.编写程序实现,大小写字母的切换,其他字符不变(例如:输入字符串“I love Java!”则输出为“i LOVE jAVA!”)。
- 5.请设计一个类,封装两个静态方法,分别是字符串加密方法、字符串解密方法。
- 6.编写程序,实现输入银行卡号,以每4个字符加一个空格显示。例如,假如银行卡号是62220630108589564785130,则输出为6222 0630 1085 8956 4785 130。
- 7. 编写程序,输入一个英文句子,将每个单词的首字符改成大写后再输出。
- 8.编写程序,产生随机电话号码,电话号码的前五位是15923,后六位随机产生。
- 9.10. 运用面向对象的程序设计思想,把表1中的学生信息存储在List集合(ArrayList或者LinkedList)中。编写程序实现下列功能:
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类的反射,面向对象的程序设计思想。