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]+"手速慢了,未抢到红包");
        }

    }
}

实验结果:

在这里插入图片描述

目录
相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
9天前
|
Java 程序员 UED
Java中的异常处理:从入门到精通
【9月更文挑战第23天】在Java编程的世界中,异常是程序执行过程中不可避免的事件,它们可能会中断正常的流程并导致程序崩溃。本文将通过浅显易懂的方式,引导你理解Java异常处理的基本概念和高级技巧,帮助你编写更健壮、更可靠的代码。我们将一起探索如何捕获和处理异常,以及如何使用自定义异常来增强程序的逻辑和用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
28 4
|
2月前
|
设计模式 缓存 算法
揭秘策略模式:如何用Java设计模式轻松切换算法?
【8月更文挑战第30天】设计模式是解决软件开发中特定问题的可重用方案。其中,策略模式是一种常用的行为型模式,允许在运行时选择算法行为。它通过定义一系列可互换的算法来封装具体的实现,使算法的变化与客户端分离。例如,在电商系统中,可以通过定义 `DiscountStrategy` 接口和多种折扣策略类(如 `FidelityDiscount`、`BulkDiscount` 和 `NoDiscount`),在运行时动态切换不同的折扣逻辑。这样,`ShoppingCart` 类无需关心具体折扣计算细节,只需设置不同的策略即可实现灵活的价格计算,符合开闭原则并提高代码的可维护性和扩展性。
40 2
|
2月前
|
算法 Java 开发者
Java 编程入门:从零到一的旅程
本文将带领读者开启Java编程之旅,从最基础的语法入手,逐步深入到面向对象的核心概念。通过实例代码演示,我们将一起探索如何定义类和对象、实现继承与多态,并解决常见的编程挑战。无论你是编程新手还是希望巩固基础的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
2月前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
2月前
|
编解码 网络协议 Oracle
java网络编程入门以及项目实战
这篇文章是Java网络编程的入门教程,涵盖了网络编程的基础知识、IP地址、端口、通讯协议(TCP和UDP)的概念与区别,并提供了基于TCP和UDP的网络编程实例,包括远程聊天和文件传输程序的代码实现。
java网络编程入门以及项目实战
|
21天前
|
Java 程序员
Java中的异常处理:从入门到精通
在Java编程的世界中,异常处理是保持程序稳定性和可靠性的关键。本文将通过一个独特的视角—把异常处理比作一场“捉迷藏”游戏—来探讨如何在Java中有效管理异常。我们将一起学习如何识别、捕捉以及处理可能出现的异常,确保你的程序即使在面对不可预见的错误时也能优雅地运行。准备好了吗?让我们开始这场寻找并解决Java异常的冒险吧!
|
2月前
|
Java 程序员 UED
Java 中的异常处理:从入门到精通
【8月更文挑战第31天】在Java编程的世界中,异常处理是保持应用稳定性的重要机制。本文将引导你理解异常的本质,学会如何使用try-catch语句来捕获和处理异常,并探索自定义异常类的魅力。我们将一起深入异常的世界,让你的代码更加健壮和用户友好。
|
2月前
|
Java 数据库连接 开发者
Java中的异常处理:从入门到精通
【8月更文挑战第31天】 在编程世界中,错误和异常就像是不请自来的客人,总是在不经意间打扰我们的程序运行。Java语言通过其异常处理机制,为开发者提供了一套优雅的“待客之道”。本文将带你走进Java异常处理的世界,从基础语法到高级技巧,再到最佳实践,让你的程序在面对意外时,也能从容不迫,优雅应对。
|
2月前
|
Java 开发者
Java 中的异常处理:从入门到精通
【8月更文挑战第31天】在Java的世界中,异常处理是保持程序健壮性的基石。本文将带你探索Java异常处理的奥秘,从基本的try-catch语句到深入理解自定义异常和最佳实践。你将学会如何优雅地处理错误,确保你的代码不仅能够面对意外情况,还能从中恢复。让我们一起开启这段旅程,掌握让程序更加稳定和可靠的技巧吧!
下一篇
无影云桌面