做JAVA复习题(二)(程序设计题部分)

  1. 用Java语言设计Student类,满足:
  1. Student类必须有属性变量
    ① name:私有,String类型,学生姓名
    ② id:私有,String类型,学生学号
    ③ age:私有,int类型,学生年龄
    ④ sex:私有,char类型,性别
  2. 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 +
                '}';
    }
}
  1. 用Java设计一个链表LinkedList,用来存放规定长度为8位数字的qq号,要求提供:
  1. add方法,添加一个qq号到链表三
  2. delet方法,删除一个qq
  3. 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
  1. 使用 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
  1. 设计并实现一个Student类,要求满足:
  1. 成员变量有name,score,分别是String和int类型,访问权限为默认。
  2. 有参数构造方法,给对象成员变量附初始值。
  3. 成员变量的getter方法获取成员变量值。
  4. Student类实现java.lang.Comparable接口,重写int compareTo(T t) 方法,实现按照成绩高低比较两个Student对象的大小
    设计一个StudentTest类,要求满足:
  5. 从键盘接受输入数据,构造三个学生对象,其成员变量值分别为(“张1”,71),(“李2”,94),(“王3”,65)
  6. 创造一个Student对象的LinkedList链表,表中有上述三个学生对象
  7. 循环遍历链表对象,按照成绩高低升序排序,并将学生信息打印出来。

代码如下:

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
为了避免篇幅过长,后面的内容稍微分段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值