每日练一练JAVA

第一道案例:手机按价格排序、查找

题目描述:

编写手机类(MobilePhone),含有type(型号,String类型)、price(价格,int类型)属性,要求该类实现Comparable接口,重写compareTo方法,实现按照price的大小来确定两个手机对象的大小关系。

在链表中添加三个手机对象(从键盘输入),通过Collections类的sort方法对链表中的对象按照price升序排序。输入第四个手机对象的信息,并查找它的price是否与链表中某个对象的price相同。

输入格式:

先输入三部手机的型号、价格信息
再输入要查找的第四部手机的型号、价格信息
每部手机信息的格式如:Redmi9A 599

输出格式:

先输出三部手机排序前的信息
再输出三部手机排序后的信息
最后输出第四部手机是否与前面某部手机价格相同
具体格式参考输出样例

输入样例1:

在这里给出一组输入,第四部手机与前三部中某一部价格相同。例如:

HONOR70  2699
MI12  3499
VIVOS15  3299
RedmiK50  2699
输出样例1:

在这里给出相应的输出,第四部手机与前三部中某一部价格相同。例如:

排序前,链表中的数据:
型号:HONOR70,价格:2699
型号:MI12,价格:3499
型号:VIVOS15,价格:3299
排序后,链表中的数据:
型号:HONOR70,价格:2699
型号:VIVOS15,价格:3299
型号:MI12,价格:3499
RedmiK50与链表中的HONOR70价格相同
输入样例2:

在这里给出一组输入,第四部手机与前面三部的价格都不同。例如:

RedmiNote9  1349
HonorX30 1699
VIVOT2X  1599
OPPOk10  2199
输出样例2:

在这里给出相应的输出,第四部手机与前面三部的价格都不同。例如:

排序前,链表中的数据:
型号:RedmiNote9,价格:1349
型号:HonorX30,价格:1699
型号:VIVOT2X,价格:1599
排序后,链表中的数据:
型号:RedmiNote9,价格:1349
型号:VIVOT2X,价格:1599
型号:HonorX30,价格:1699
链表中的对象,没有一个与OPPOk10价格相同的
package Day14.Test01;

import java.util.*;
// 定义MobilePhone类
public class MobilePhone {
    private String type;
    private int price;

    public MobilePhone() {
    }

    public MobilePhone(String type, int price) {
        this.type = type;
        this.price = price;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "型号: " + type + ", 价格: " + price;
    }
}

// 定义一个比较器,根据价格比较
class MyComparable implements Comparator<MobilePhone>{
    @Override
    public int compare(MobilePhone o1, MobilePhone o2) {
        return o1.getPrice() - o2.getPrice();
    }
}

class Main{
    public static void main(String[] args) {
        List<MobilePhone> list = new ArrayList<>();
        System.out.println("请输入手机数量");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        for (int i = 0; i < num; i++) {
            // 构建手机对象
            MobilePhone mobilePhone = new MobilePhone(sc.next(), sc.nextInt());
            // 将手机保存带list列表中
            list.add(mobilePhone);
        }
        System.out.println("排序前,链表中的数据:");
        for (MobilePhone m:list
             ) {
            System.out.println(m);
        }
        MyComparable myComparable = new MyComparable();
        //通过比较器进行排序
        list.sort(myComparable);
        System.out.println("排序后,链表中的数据:");
        for (MobilePhone m:list
        ) {
            System.out.println(m);
        }
        MobilePhone mobilePhone1 = new MobilePhone(sc.next(), sc.nextInt());
        boolean flag = true;
        // 判断列表中是否有新输入的手机
        for (MobilePhone m:list
             ) {
            if (mobilePhone1.getPrice() == m.getPrice()){
                flag = false;
                System.out.println(mobilePhone1.getType() + "与链表中的" + m.getType() + "0价格相同");
            }
        }
        if (flag){
            System.out.println("链表中的对象,没有一个与" + mobilePhone1.getType() +  "价格相同的");
        }

    }

}

第二道案例:选择心动女生

题目描述:

临近11.11,CK看见周围的朋友一个个的都脱单或者正准备脱单了,CK也想要找一个女朋友了(听说国家会分配?)。MeiK听说了这件事情,表示CK终于开悟了,所以他整理了一份候选人名单给CK。可是CK心里有自己心动女生的身高区间和年龄限制,所以他想把符合条件的女生的信息给筛选出来,但是这可是难住了CK,事关C~K的幸福,你能帮帮他吗?

提示:MeiK提供的名单里可能会有重复的女生的信息。

输入格式:

多组输入。

第一行输入MeiK的候选人名单里有N个人(N<100000)。

第二行输入四个整数a,b,c,d。分别表示C~K心动女生的身高的最小值和最大值,年龄的最小值和最大值。(题目保证a<=b,c<=d)

接下来输入N行,每行表示一个女生的信息(姓名,身高,年龄,联系方式)

ps:联系方式不超过11个字符。

输出格式:

对于每一组输入,第一行输出一个n,表示符合条件的女生的数量。

接下来的n行,每一行输出一个符合条件的女生的信息。

输出顺序按身高从低到高排序,若身高相同,则按年龄从高到底排序,若年龄也相同,则按照输入顺序输出。

输入样例:
4
160 170 20 22
女神1 161 19 11111
女神2 167 20 22222
女神2 167 20 22222
女神3 163 21 33333
3
160 170 20 30
CHRR 161 29 22222
MICK 161 29 11111
KATE  161 39 22222
输出样例:
2
女神3 163 21 33333
女神2 167 20 22222
2
CHRR 161 29 22222
MICK 161 29 11111

这道题应该使用Map,或者是Set来写的,但是我不想改了😄😄

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 可选女友数量
        int num = sc.nextInt();
        // 最小身高
        int a = sc.nextInt();
        // 最大身高
        int b = sc.nextInt();
        // 最小年龄
        int c = sc.nextInt();
        // 最大年龄
        int d = sc.nextInt();
        // 定义一个存储女神对象的列表
        List<Nymph> list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            Nymph nymph = new Nymph(sc.next(),sc.nextInt(), sc.nextInt(), sc.next());
            if (nymph.getHeight() <= b && nymph.getHeight() >= a && nymph.getAge() >= c && nymph.getAge() <= d){
                // 如果符合年龄和升高,填入列表
                list.add(nymph);
            }
            for (int j = 0; j < list.size()-1; j++) {
                if (list.get(j).equals(nymph)){
                    // 如果重复,删除列表
                    list.remove(nymph);
            }
            }
        }
        Mycomparable mycomparable = new Mycomparable();
        list.sort(mycomparable);
        for (Nymph n:list
             ) {
            System.out.println(n.getName() + " " + n.getHeight() + " " + n.getAge() + " " + n.getPhone());
        }



    }
}

class Mycomparable implements Comparator<Nymph>{

    @Override
    public int compare(Nymph o1, Nymph o2) {
        if (o1.getHeight() != o2.getHeight()){
            return o1.getHeight() - o2.getHeight();
        }else
            return o2.getAge()-o1.getAge();
    }
}

class Nymph{
    private String name;
    private int height;
    private int age;
    private String phone;

    public Nymph() {
    }

    public Nymph(String name, int height, int age, String phone) {
        this.name = name;
        this.height = height;
        this.age = age;
        this.phone = phone;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Nymph nymph = (Nymph) o;
        return height == nymph.height && age == nymph.age && Objects.equals(name, nymph.name) && Objects.equals(phone, nymph.phone);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, height, age, phone);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return " " +
                " " + name + ' ' +
                " " + height +
                " " + age +
                " " + phone + ' ' +
                '}';
    }
}

第三道案例:统计文字中的单词数量并按出现次数排序

题目描述:

现需要统计若干段文字(英文)中的不同单词数量。
如果不同的单词数量不超过10个,则将所有单词输出(按字母顺序),否则输出前10个单词。

**注1:**单词之间以空格(1个或多个空格)为间隔。
**注2:**忽略空行或者空格行。
**注3:**单词大小写敏感,即’word’与’WORD’是两个不同的单词 。

输入说明

若干行英文,最后以!!!!!为结束。

输出说明

不同单词数量。
然后输出前10个单词(按字母顺序),如果所有单词不超过10个,则将所有的单词输出。

输入样例
Failure is probably the fortification in your pole
It is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta
when you Are wondering whether new money it has laid
background Because of you, then at the heart of the
most lax alert and most low awareness and left it
godsend failed
!!!!!
输出样例
49
Are
Because
Failure
It
a
alert
and
are
as
at
package Day14.Test03;

import java.util.*;

public class Words {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
		// 使用TreeSet直接去重加排序
        TreeSet<String> set = new TreeSet<>(new MyComparable());
        while (true){
            String str1 = sc.next();
            if (str1.equals("!!!!!")){
                break;
            }else
                set.add(str1);
        }


        System.out.println(set.size());
        // 要求多与10个只输出10个
        int i = 10;
        for (String s:set
             ) {
            i--;
            System.out.println(s);
            if (i == 0){
                break;
            }
        }
    }
}
class MyComparable implements Comparator<String>{

    @Override
    public int compare(String o1, String o2) {
        return o1.compareTo(o2);
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java练手demo是指用Java语言编写的小型项目,旨在提高编程技能和应用知识。它常常用于新手熟悉语言特性、学习编程思想以及实践学习过程中的难点。下面给出一个简单的Java练手demo示例。 假设我们需要编写一个学生成绩管理系统的练手demo。我们可以定义一个Student,包含学生的姓名和成绩属性;再定义一个StudentManager,用于对学生成绩进行管理。 在Student中,我们可以提供构造方法和访问器方法(getter和setter)来设置和获取学生的姓名和成绩。例如: ```java public class Student { private String name; private int score; public Student(String name, int score) { this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } ``` 在StudentManager中,我们可以定义一个存储学生对象的列表,并提供添加学生、删除学生、根据姓名查询学生和计算平均成绩等方法。例如: ```java import java.util.ArrayList; import java.util.List; public class StudentManager { private List<Student> students; public StudentManager() { students = new ArrayList<>(); } public void addStudent(Student student) { students.add(student); } public void removeStudent(Student student) { students.remove(student); } public Student findStudentByName(String name) { for (Student student : students) { if (student.getName().equals(name)) { return student; } } return null; } public double calculateAverageScore() { int sum = 0; for (Student student : students) { sum += student.getScore(); } return (double)sum / students.size(); } } ``` 通过上述的Student和StudentManager,我们可以在主程序中创建一个StudentManager对象,然后调用其方法来管理学生成绩。例如: ```java public class Main { public static void main(String[] args) { StudentManager manager = new StudentManager(); Student student1 = new Student("张三", 80); Student student2 = new Student("李四", 90); manager.addStudent(student1); manager.addStudent(student2); System.out.println("平均成绩:" + manager.calculateAverageScore()); } } ``` 以上就是一个简单的Java练手demo示例,它可以帮助我们巩固Java语言的基础知识和编程技能,提高我们的编码能力。通过编写和实践这样的小型项目,我们可以更好地理解和应用Java的各种特性和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值