- 用Java语言设计Student类,满足:
- Student类必须有属性变量
① name:私有,String类型,学生姓名
② id:私有,String类型,学生学号
③ age:私有,int类型,学生年龄
④ sex:私有,char类型,性别 - Student类必须有方法
① public Stuent():无参数构造方法,设置name,id,age,sex分别为”default”,”202100000”,”20”,’m’
② public Student(name,id,age,sex),分别用参数name,id,age,sex给属性变量name,id,age,sex赋值
③ 重写Object类的 equals( )方法,比较两个Student对象是否相等
④ 重写Object类的toString()方法,显示Student对象的信息。
代码如下:
class Student
{
private String name;
private String id;
private int age;
private char sex;
public Student()
{
setName("default");
setId("202100000");
setAge(20);
setSex('m');
}
public Student(String name, String id, int age, char sex)
{
this.name = name;
this.id = id;
this.age = age;
this.sex = sex;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public char getSex()
{
return sex;
}
public void setSex(char sex)
{
this.sex = sex;
}
public boolean equals(Student student)
{
if (student.getName()==this.name&&student.getId()==this.id&&student.getAge()==this.age&&student.getSex()==this.sex)
{
return true;
}
return false;
}
@Override
public String toString()
{
return "Student{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
- 用Java设计一个链表LinkedList,用来存放规定长度为8位数字的qq号,要求提供:
- add方法,添加一个qq号到链表三
- delet方法,删除一个qq
- search方法,查找给定的qq号是否在链表中
代码如下:
import java.util.*;
class numContain
{
private String QNumber;//储存数据
public boolean setter(String str)//设置修改数据的要求:长度为8的qq号,修改成功返回true
{
if(str.length()==8)
{
this.QNumber = str;
return true;
}
return false;
}
public numContain(String str) //构造函数
{
this.setter(str);
}
public boolean isEqual(String str)//判断是否相等的方法
{
return this.QNumber.equals(str);
}
public String getStr()
{
return this.QNumber;
}
}
class LinkedList1
{
private LinkedList<numContain> QQContain = new LinkedList<numContain>();//创建链表容纳QQContain类
public LinkedList1()//无参构造方法
{
}
public LinkedList getList()
{
return this.QQContain;
}
class BI
{
private boolean bool;
private int index;
public BI(boolean b,int i)
{
this.setBool(b);
this.setIndex(i);
}
public boolean isBool() {
return bool;
}
public void setBool(boolean bool) {
this.bool = bool;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
public void add(int index, String QQ) //add方法:add(下标,numContain对象)
{
this.QQContain.add(index,new numContain(QQ));
}
public void add(String QQ)//重构方法,该方法用于添加qq号至链表末尾
{
this.QQContain.addLast(new numContain(QQ));
}
public BI inSearch(String QQ)//查找方法:判断有无
{
int n = 0;
for (numContain i : QQContain) //for-each迭代元素
{
if (i.isEqual(QQ))//利用之前写好的isEqual方法
{
return new BI(true,n);
}
n++;
}
return new BI(false,n);
}
public void delet(String QQ)
{
BI bi = this.inSearch(QQ);
if (bi.isBool())
{
this.QQContain.remove(bi.getIndex());
}
}
public boolean search(String QQ)//便于类外部使用的返回布尔值的方法
{
return this.inSearch(QQ).isBool();
}
public void outString()
{
for (int i = 0;i<QQContain.size();i++)
{
System.out.println(QQContain.get(i).getStr());
}
}
}
public class Test
{
public static void main(String[] args)
{
LinkedList1 list1 = new LinkedList1();
list1.add("11111111");
list1.add("22222222");//因为要测试添加至第三个,所以先添加两个qq进去
list1.add(2,"12345678");
list1.delet("11111111");
System.out.println(list1.search("11111111"));
System.out.println(list1.search("22222222"));
list1.outString();
}
}
运行结果:
false
true
22222222
12345678
- 使用 String 类的 public String toUpperCase() 方法可以将一个字符串中的小写字母变成大写字母;使用 public String toLowerCase() 方法可以将一个字符串中的大写字母变成小写字母。编写一个程序,使用这个两个方法实现大小写的转换。
代码如下:
import java.util.Locale;
public class UTL
{
public static void main(String[] args)
{
System.out.println((int)'a'+" "+(int)'z'+" "+(int)'A'+" "+(int)'Z');
String str1 = "AbCdE";
String str2 = str1;
char[] a = str2.toCharArray();
char[] b = new char[a.length];
for (int i = 0;i<a.length;i++)
{
System.out.println((int)a[i]);
if(a[i]>=65&&a[i]<=90)//up
{
b[i] = Character.toString(a[i]).toLowerCase().charAt(0);
}
if(a[i]>=97&&a[i]<=122)//low
{
b[i] = Character.toString(a[i]).toUpperCase().charAt(0);
}
}
System.out.println(String.copyValueOf(b));
}
}
运行结果:
aBcDe
- 设计并实现一个Student类,要求满足:
- 成员变量有name,score,分别是String和int类型,访问权限为默认。
- 有参数构造方法,给对象成员变量附初始值。
- 成员变量的getter方法获取成员变量值。
- Student类实现java.lang.Comparable接口,重写int compareTo(T t) 方法,实现按照成绩高低比较两个Student对象的大小
设计一个StudentTest类,要求满足: - 从键盘接受输入数据,构造三个学生对象,其成员变量值分别为(“张1”,71),(“李2”,94),(“王3”,65)
- 创造一个Student对象的LinkedList链表,表中有上述三个学生对象
- 循环遍历链表对象,按照成绩高低升序排序,并将学生信息打印出来。
代码如下:
import java.util.*;
class Student1 implements Comparable<Student1>
{
String name;
int score;
public Student1(String name, int score)
{
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Student1 o) {//重写compareTo
return this.getScore()-o.getScore();
}
@Override
public String toString() {//重写toString
return "(" + name + ',' + score + ')';
}
}
class StudentTest
{
Scanner input = new Scanner(System.in);
LinkedList<Student1> student1LinkedList = new LinkedList<>();
public StudentTest()
{
}
public void STUTin()
{
String[] temp = input.nextLine().split(" ");//输入部分
student1LinkedList.add(new Student1(temp[0],Integer.parseInt(temp[1])));
for (int i = 0;i<2;i++)
{
temp = input.nextLine().split(" ");
student1LinkedList.add(new Student1(temp[0],Integer.parseInt(temp[1])));
}
Student1 tempSTU = new Student1("temp",0);//临时
for (int i = 0;i<student1LinkedList.size()-1;i++)//冒泡排序
{
for(int j = student1LinkedList.size()-1;j>i;j--)
{
if (student1LinkedList.get(j).compareTo(student1LinkedList.get(j-1))>0)
{
tempSTU = student1LinkedList.get(j);
student1LinkedList.set(j,student1LinkedList.get(j-1));
student1LinkedList.set(j-1,tempSTU);
}
}
}
for (Student1 i:student1LinkedList)//输出
{
System.out.println(i.toString());
}
}
}
public class t2_4 {
public static void main(String[] args)
{
StudentTest studentTest = new StudentTest();
studentTest.STUTin();
}
}
运行结果:
(李2,94)
(张1,71)
(王3,65)
本题参考资料:LinkedList
为了避免篇幅过长,后面的内容稍微分段。