Java入门学习之关于一些算法以及类和接口的练习题

简介: 1.java定义一个电视机类,实现电视机的基本功能。 1.先定义一个电视机类和方法。 2.调用类和方法。 2.设计一个分数类,分数的分子和分母用两个整型数表示。 1.先写一个分数类。 2.调用类和方法。 3.设计一个雇员类,创建雇员类对象,统计雇员的出勤人数 要求: 代码实现 4.乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。

1.java定义一个电视机类,实现电视机的基本功能。

1.先定义一个电视机类和方法。

public class TV{
   int tvchannel =0;
   int tvvolume =0;
   int tvswitch =0;
   public void ChangeChannel(int tvchannel){
      this.tvchannel=tvchannel;
      System.out.println("现在是"+tvchannel+"台");
   }
   public  void VolumeAdjustment(int changevolume){
      if(changevolume==1){
         if (tvvolume>=3){
            System.out.println("已经调到最大音量!");
            return;
         }
         this.tvvolume++;
      }
      else if (changevolume==0){
         if (tvvolume<=0){
            System.out.println("已经调整到最小的音量!");
            return;
         }
         this.tvvolume--;
      }
      else
         System.out.println("ERROR!");
      System.out.println("现在音量是"+this.tvvolume);

   }
   public void Switch(int tvswitch){
      if (tvswitch==1){
         System.out.println("打开电视!");
      }
      else if (tvswitch==0){
         System.out.println("关闭电视!");
      }
      else
         System.out.println("ERROR!");
      this.tvswitch=tvswitch;

   }

}

2.调用类和方法。

import java.util.Scanner;

public class TV2 {
    public static void main(String[] args){
        TV tv=new TV();
        System.out.println("电视处于关闭!");
        int select=1;
        Scanner in =new Scanner(System.in);
        System.out.println("1.打开电视!");
        System.out.println("0.离开!");
        System.out.println("请选择:");
        select = in.nextInt();
        tv.Switch(select);
        if (select==0){
            System.out.println("已退出!");
            return;
        }
        else {
            while (select!=0){
                System.out.println("1.换台!");
                System.out.println("2.调音量");
                System.out.println("0.关电视!");
                System.out.println("请选择:");
                select=in.nextInt();
                switch (select){
                    case 1:
                        int tvchannel=0;
                        System.out.println("请输入台数:");
                        tvchannel=in.nextInt();
                        tv.ChangeChannel(tvchannel);
                        break;
                    case 2:
                        int tvvolume=0;
                        System.out.println("1.增大音量!");
                        System.out.println("0.减小音量!");
                        tvvolume=in.nextInt();
                        tv.VolumeAdjustment(tvvolume);
                        break;
                    case 0:
                        tv.Switch(select);
                        System.out.println("已退出!");
                        break;
                }
            }
        }
    }

}

2.设计一个分数类,分数的分子和分母用两个整型数表示。

类中定义方法对分数进行加、减、乘、除运算。定义分数类对象,运算并输出运算结果。

1.先写一个分数类。

public class fractions {
    public int fson;
    public int fmom;
    public int gcd(int a,int b) {
            if (a < b) {
                int c = a;
                a = b;
                b = c;
            }
            int r = a % b;
            while (r != 0) {
                a = b;
                b = r;
                r = a % b;
            }

            return b;

    }
    public void fAdd(int fson1,int fmom1,int fson2,int fmom2){
        int fm=fmom1*fmom2;
        fson1=fson1*fmom2;
        fson2=fson2*fmom1;
        int fs=fson1+fson2;
        if( fs==0){
            System.out.println("结果为0");
        }
        else {

            int g = gcd(fs, fm);
            System.out.println("最大公约数:" + g);
            fs = fs / g;
            fm = fm / g;
            System.out.println("加法运算后结果中分子为:" + fs);
            System.out.println("加法运算后结果中分母为:" + fm);
            System.out.println("即分数为:" + fs + "/" + fm);
        }

    }
    public void fSub(int fson1,int fmom1,int fson2,int fmom2){
        int fm=fmom1*fmom2;
        fson1=fson1*fmom2;
        fson2=fson2*fmom1;
        int fs=fson1-fson2;
        if( fs==0){
            System.out.println("结果为0");
        }
        else {

            int g = gcd(fs, fm);
            fs = fs / g;
            fm = fm / g;
            System.out.println("减法运算后结果中分子为:" + fs);
            System.out.println("减法运算后结果中分母为:" + fm);
            System.out.println("即分数为:" + fs + "/" + fm);
        }


    }
    public void fMul(int fson1,int fmom1,int fson2,int fmom2){
        int fm=fmom1*fmom2;
        int fs=fson1*fson2;
        if( fs==0){
            System.out.println("结果为0");
        }
        else {

            int g = gcd(fs, fm);
            fs = fs / g;
            fm = fm / g;
            System.out.println("乘法运算后结果中分子为:" + fs);
            System.out.println("乘法运算后结果中分母为:" + fm);
            System.out.println("即分数为:" + fs + "/" + fm);
        }

    }
    public void fDiv(int fson1,int fmom1,int fson2,int fmom2){
        int fm=fmom1*fson2;
        int fs=fson1+fmom2;
        if( fs==0){
            System.out.println("结果为0");
        }
        else {

            int g = gcd(fs, fm);
            fs = fs / g;
            fm = fm / g;
            System.out.println("除法运算后结果中分子为:" + fs);
            System.out.println("除法运算后结果中分母为:" + fm);
            System.out.println("即分数为:" + fs + "/" + fm);
        }

    }

}

2.调用类和方法。

import java.util.Scanner;

public class fractions2 {
    public  static  void main(String[] args){
        int i;
        fractions fractions=new fractions();
        Scanner in=new Scanner(System.in);
        int fson1=0;
        int fson2=0;
        int fmom1=0;
        int fmom2=0;
        System.out.println("请输入第一个分数的分子:");
        fson1=in.nextInt();
        System.out.println("请输入第一个分数的分母:");
        fmom1=in.nextInt();
        System.out.println("请输入第二个分数的分子:");
        fson2=in.nextInt();
        System.out.println("请输入第二个分数的分母:");
        fmom2=in.nextInt();
        System.out.println("1.开始运算");
        System.out.println("0.退出");
        System.out.println("请输入选择:");
        i=in.nextInt();
        if(i==0){
            System.out.println("已退出");
        }
        else {
            while (i!=0) {
                System.out.println("0.退出");
                System.out.println("1.加法");
                System.out.println("2.减法");
                System.out.println("3.乘法");
                System.out.println("4.除法");
                System.out.println("请输入选择:");
                i = in.nextInt();
                switch (i) {

                    case 1:
                        fractions.fAdd(fson1, fmom1, fson2, fmom2);
                        break;
                    case 2:
                        fractions.fSub(fson1, fmom1, fson2, fmom2);
                        break;
                    case 3:
                        fractions.fMul(fson1, fmom1, fson2, fmom2);
                        break;
                    case 4:
                        fractions.fDiv(fson1, fmom1, fson2, fmom2);
                        break;

                }
            }
        }

    }
}

3.设计一个雇员类,创建雇员类对象,统计雇员的出勤人数

1.属性包括:编号、姓名、年龄、职务、部门、出勤人数

2.方法包括:构造方法、输出信息的方法、签到方法

要求:

1.考虑属性和方法的访问权限
2.考虑方法的功能
3.考虑main方法如何实现要求统计的信息

代码实现

1.Employee

import java.util.Scanner;

public class Employee {
    Scanner in=new Scanner(System.in);
    public  String[] no=new String[100];
    public  String[] name=new String[100];
    public  String[] age=new String[100];
    public  String[] position=new String[100];
    public  String[] department=new String[100];
    public  int n=0;
    public  Employee(){

    }
    public  void information(){
        System.out.println("出勤人数:"+n);
        for (int i=0;i<n;i++){
            System.out.println("编号:"+no[i]);
            System.out.println("姓名:"+name[i]);
            System.out.println("年龄:"+age[i]);
            System.out.println("职务:"+position[i]);
            System.out.println("部门:"+department[i]);
        }

    }
    public void sign(){
        int i=0;
        for (i=0;i<=100;i++){
            System.out.println("请输入编号:");
            no[i]=in.nextLine();
            System.out.println("请输入名字:");
            name[i]=in.nextLine();
            System.out.println("请输入年龄:");
            age[i]=in.nextLine();
            System.out.println("请输入职务:");
            position[i]=in.nextLine();
            System.out.println("请输入部门:");
            department[i]=in.nextLine();
            System.out.println("如果你是最后一位签到请输入0,反之输入1");
            int j=in.nextInt();
            if (j==0){
                break;
            }
        }
        n=i+1;

    }
}

2.Employee2

public class Employee2 {
    public static  void main(String[] args){
        Employee employee=new Employee();
        System.out.println("开始签到:");
        employee.sign();
        System.out.println("签到完毕!");
        employee.information();
    }
}

4.乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。

先创建一个包,在包中创建如下:

1.抽象类

Person抽象类

package jiekouchouxiang;

public abstract class Person {
    private String name;
    private int age;
    public Person(){

    }
    public Person(String name,int age){
        this.name=name;
        this.age=age;

    }
    public abstract void eat();
    public  void sleep(){
        System.out.println("睡觉要有足够的睡眠");
    }
    public void show(){
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+age);
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }

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


}

Player抽象类

package jiekouchouxiang;

public abstract class Player extends Person {
    public Player(){
        super();
    }
    public Player(String name,int age){
        super();
    }
    public  abstract  void student();


}

Coach抽象类

package jiekouchouxiang;

public  abstract class Coach extends Person{
    public Coach(){
        super();
    }
    public Coach(String name,int age){
        super();
    }
    public abstract void teacher();
}

2.接口

English接口

package jiekouchouxiang;

public interface English {
    void speak();
}

3.具体类

PingpangPlayer

package jiekouchouxiang;

public  class PingpangPlayer extends Player implements English {
    @Override
    public void student(){
        System.out.println("乒乓球运动员要学习发球和接球技巧");

    }
    @Override
    public  void eat(){
        System.out.println("乒乓球运动员要吃清淡的饭菜");
    }
    @Override
    public void speak(){
        System.out.println("乒乓球运动员要学习英语");
    }

}

PingpangCoach

package jiekouchouxiang;

public  class PingpangCoach extends Coach implements English {
    @Override
    public void teacher(){
        System.out.println("乒乓球教练要教队员发球和接球技巧");

    }
    @Override
    public  void eat(){
        System.out.println("乒乓球教练要吃清淡的饭菜");
    }
    @Override
    public void speak(){
        System.out.println("乒乓球教练要学习英语");
    }
}

BasketballPlayer

package jiekouchouxiang;

public  class BasketballPlayer extends Player {
    @Override
    public void student(){
        System.out.println("篮球运动员要学习运球和投篮技巧");

    }
    @Override
    public  void eat(){
        System.out.println("篮球运动员要吃高蛋白的饭菜");
    }

}

BasketballCoach

package jiekouchouxiang;

public  class BasketballCoach extends Coach {
    @Override
    public void teacher(){
        System.out.println("篮球教练要教队员运球和投篮技巧");

    }
    @Override
    public  void eat(){
        System.out.println("篮球教练要吃高蛋白的饭菜");
    }
}

jiekouchouxiang

package jiekouchouxiang;

public class jiekouchouxiang {
    public static void main(String[] args) {
        PingpangPlayer ppp=new PingpangPlayer();
        ppp.setName("马龙");
        ppp.setAge(18);
        ppp.show();
        ppp.eat();
        ppp.student();
        ppp.speak();
        System.out.println("*********************");
        PingpangCoach ppc=new PingpangCoach();
        ppc.setName("邓亚萍");
        ppc.setAge(38);
        ppc.show();
        ppc.eat();
        ppc.teacher();
        ppc.speak();
        System.out.println("*********************");
        BasketballPlayer bp=new BasketballPlayer();
        bp.setName("易建联");
        bp.setAge(24);
        bp.show();
        bp.eat();
        bp.student();
        System.out.println("*********************");
        BasketballCoach bc=new BasketballCoach();
        bc.setName("姚明");
        bc.setAge(35);
        bc.show();
        bc.eat();
        bc.teacher();
        System.out.println("*********************");

    }
}

在这里插入图片描述

5.输入公里数,计算出所需的出租车费用

开封市的出租车计费方式为:起步2公里内5元,2公里上每公里收费1.3元,9公里以上每公里收费2元,燃油附加费1元。

import java.util.Scanner;

public class car {
    public static void main(String[] args){
        System.out.println("请输入公里数:");
        Scanner scan= new Scanner(System.in);
        double s=scan.nextDouble();
        double sum;
        if(s<=2){
            sum=5+1;
            System.out.println(s+"公里的费用"+sum+"元");
        }
        else if(s>2&&s<=9){
            sum=5+(s-2)*1.3+1;
            System.out.println(s+"公里的费用"+sum+"元");
        }
        else{
            sum=5+(9-2)*1.3+(s-9)*2+1;
            System.out.println(s+"公里的费用"+sum+"元");
        }

    }
}

在这里插入图片描述
再也不用担心被坑了!

6.用java来模拟抢手气红包,多线程

在上一个模拟微信抢红包的基础上,添加多线程

代码

import java.math.BigDecimal;
import java.util.Scanner;
public class qianhoubao {
    public static void main(String[] args) {
        System.out.println("-----模拟微信发拼手气红包-----");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入所发红包的总金额");
        double money= sc.nextDouble();
        System.out.println("请输入群成员个数");
        int people = sc.nextInt();
        String[] name = new String[people];
        for (int i=0;i<people;i++){
            System.out.println("请输入群成员名字");
            name[i] = sc.next();
        }
        System.out.println("请输入所发红包的个数");
        int num=sc.nextInt();
        if (money / num == 0.01) {
            for (int i = 0; i <people; i++) {
                System.out.println(name[i] + "抢到红包红包0.01元");
            }

        } else if (money / num < 0.01) {
            System.out.println("金额过小或个数过大,不合理!,请重新输入!");
        } else {
            Hongbao n=new Hongbao(num,money);
            System.out.println("抢红包开始,红包总共"+money+"元");
            for (int i = 0; i <people; i++) {
                
                new Thread(new People(i, n,name)).start();


            }

        }


    }
}
class Hongbao{
    int num;
    double money;
    public  Hongbao(int num,double money){
        this.num=num;
        this.money=new BigDecimal(money).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    synchronized  public  double qiang(){
        double ramoney;
        if(num>1){
            ramoney=new BigDecimal(Math.random()*money).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
            money-=ramoney;
            num--;

        }else if (num==1){
            ramoney=new BigDecimal(money).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
            money=0;
            num--;

        }else {
            ramoney=0;
        }
        return  ramoney;
    }

}
class People implements Runnable{
    int id;
    Hongbao n;
    String[] name;
    double idmoney;
    public  People(int id,Hongbao n ,String[] name){
        this.id=id;
        this.n=n;
        this.name=name;
    }


    @Override
    public void run() {
        System.out.println(name[id]+",开始抢红包");
        try{
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        idmoney=n.qiang();
        if(idmoney>0){
            System.out.println("恭喜,"+name[id]+"抢到"+idmoney+"元");

        }else {
            System.out.println("很遗憾,"+name[id]+"手速慢了,未抢到红包");
        }

    }
}

实验结果:

在这里插入图片描述

目录
相关文章
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
55 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
27天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
2月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
85 5
|
2月前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
37 1
|
2月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!

热门文章

最新文章