Java练习题记录

238 阅读3分钟

根据制定月份输出季节:(case条件一类时可以这么输出)

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int month = scan.nextInt();
        switch (month){
        case 3:
        case 4:
        case 5:
            System.out.println("春季");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏季");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋季");
            break;
        case 12:
        case 1:
        case 2:
            System.out.println("冬季");
            break;
        }

    }


}

输入两个正整数,输出最大公约数和最小公倍数

public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入两个正整数");
        int positiveIntOne = scan.nextInt();
        int positiveIntTwo = scan.nextInt();
        int min = (positiveIntOne<=positiveIntTwo)? positiveIntTwo:positiveIntOne;
//      定义最大公约数
        int greatestCommonDivision = 0;
        for(int i=1;i<=min;i++){
            if(positiveIntOne%i==0&&positiveIntTwo%i==0){
                greatestCommonDivision = i;
            }
        }
//      定义最小公倍数
        int leastCommonMultiple = 0;
        for(int i=1;i<=positiveIntOne*positiveIntTwo;i++){
            if(i%positiveIntOne==0&&i%positiveIntTwo==0){
                leastCommonMultiple = i;
                break;
            }
        }
        System.out.println("最大公约数:"+greatestCommonDivision);
        System.out.println("最小公约数:"+leastCommonMultiple);
    }

99乘法表

public static void main(String[] args) {


        for(int i=1;i<=9;i++){//控制行数
            for(int j=1;j<=i;j++){//控制列数
                System.out.print(i+"*"+j+"="+i*j+"\t");

            }
            System.out.println();


        }

100以内的质数

image.png

求100以内的完数

//一个数如果等于它的因子相加叫做完数,求100以内的完数。
    public static void main(String[] args) {
        int sum=0;
        for (int i=1;i<=100;i++){//遍历1-100的数
            for (int j=1;j<i;j++){//i%j取余判断是否为i的因子
                if (i%j==0){
                    sum = sum+j;
                }
            }
            if (sum==i){
                System.out.print(i+" ");
            }
            sum=0;

        }
    }

根据输入找出最高分

image.png

public static void main(String[] args) {
        Scanner scan =new Scanner(System.in);
        int max = 0;
        char grade = ' ';
        System.out.print("请输入学生人数:");
        int stuNum =  scan.nextInt();

        System.out.print("请依次输入学生成绩:");
        int[] scores = new int[stuNum];
        for (int i=0;i<stuNum;i++){
            scores[i] = scan.nextInt();
            // 获取最大的分数
            if (scores[i]>=max){
                max = scores[i];
            }
        }
        System.out.println(Arrays.toString(scores));
        System.out.println(max);
        // 与最大的分数做比较
        for (int i=0;i<scores.length;i++){
            int gap = max-scores[i];
            if (gap<=10){
                grade = 'A';
            }else if (gap>10&&gap<=20){
                grade = 'B';
            }else if (gap>20&&gap<=30){
                grade = 'C';
            }else {
                grade = 'D';
            }
            System.out.println("第"+(i+1)+"名学生成绩为:"+scores[i]+";等级为:"+grade);
        }
    }

杨辉三角

image.png

public static void main(String[] args) {

        int[][] yangHui = new int[10][];
        for (int i=0;i<yangHui.length;i++){
            yangHui[i] = new int[i+1];
        }
        yangHui[0][0]=1;
        for (int i=1;i<yangHui.length;i++){
            yangHui[i][0]=1;
            yangHui[i][i]=1;
            for (int j=1;j<i;j++){
                yangHui[i][j]=yangHui[i-1][j-1]+yangHui[i-1][j];
            }
        }
        System.out.println("-打印杨辉三角-");
        for (int i=0;i<yangHui.length;i++){
            for (int j=0;j<yangHui[i].length;j++){
                System.out.print(yangHui[i][j]+"\t");
            }
            System.out.println();
        }
    }

生成不重复的6个数(未完成)

image.png

创建20个学生对象

image.png

Student.java

public class Student {

    int number;
    int state;
    int score;

}

StudentTest.java

public class StudentTest {
    public static void main(String[] args) {
        // 声明Student类型的数组
        Student[] stus =new Student[20];
        // 给元素赋值
        for (int i=0;i<20;i++) {
            stus[i] = new Student();
            // 给Student对象赋值
            stus[i].number = i + 1;
            stus[i].state = (int) (Math.random() * 6 + 1);
            stus[i].score = (int) (Math.random() * 90 + 10);
            System.out.println("原始学生信息,学号:" + stus[i].number + ",年级:" + stus[i].state + ",成绩:" + stus[i].score);

        }
        //学生排序
        for (int i=0;i<stus.length;i++){
            for (int j=0;j<stus.length-i-1;j++){
                if (stus[j].score>stus[j+1].score){
                    //如果需要换序,交换的是数组的元素:Student对象
                    Student temp = stus[j];
                    stus[j] = stus[j+1] ;
                    stus[j+1]= temp;
                }
        }
        }
        System.out.println("----------");
        for (int i=0;i<20;i++) {
            System.out.println("排序后的学生信息,学号:" + stus[i].number + ",年级:" + stus[i].state + ",成绩:" + stus[i].score);
        }
        
        }
        
    }

将对象作为一个参数传递

image.png

Circle.java

package com.company.day09;

public class Circle {
    public double findAreas(double radius){
        return Math PI*radius*radius;
    }
}

PassObject.java

package com.company.day09;

public class PassObject {
    public void printAreas(Circle c, int time){
        System.out.println("Radius\tArea\t");
        for (double i=1;i<=time;i++){
            double area = c.findAreas(i);
            System.out.println(i+"\t\t"+area+"\t");
        }
    }
}

PassObjectTest.java

public class PassObjectTest {
    public static void main(String[] args) {
        PassObject poj = new PassObject();
        Circle c = new Circle();
        poj.printAreas(c,6);
    }
}

递归方法练习

image.png

构造器练习

image.png

public class Boy {
    
    private String name;
    private int age;

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

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

    }
    public String getName(){
        return name;
    }

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

    public void marry(Girl girl){
        System.out.println("我想娶"+girl.getName());

    }
    public void shout(){
        System.out.println("shout方法");
    }
}
public class Girl {
    private String name;
    private int age;

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

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

    }
    public String getName(){
        return name;
    }

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

    public void marry(Boy boy){
        System.out.println("我想嫁给"+boy.getName());
        boy.marry(this);

    }
    // 比较两个人年龄的大小
    public int compare(Boy boy){
        if (this.age>boy.getAge()){
            return 1;
        }else if (this.age<boy.getAge()){
            return -1;
        }else {
            return 0;
        }

    }
}
public class BoyGirlTest {
    public static void main(String[] args) {
        Boy boy = new Boy("罗密欧",21);
        boy.shout();
        Girl girl =new Girl("朱丽叶",20);
        girl.marry(boy);
        int compare = girl.compare(boy);
        if (compare==1){
            System.out.println("女孩大");
        }else if (compare==0){
            System.out.println("同岁");
        }else {
            System.out.println("男孩大");
        }
    }

}

银行账户功能

image.png

image.png

Account.java


public class Account {

    private int id; // 用户id
    private double balance; // 余额
    private double annualInterestRate; // 年利率

    // 构造器


    public Account(int id, double balance, double annualInterestRate) {
        this.id = id;
        this.balance = balance;
        this.annualInterestRate = annualInterestRate;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getAnnualInterestRate() {
        return annualInterestRate;
    }

    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    // 取钱

    public void withdraw(double amount){
        if (amount>balance){
            System.out.println("余额不足,取款失败");
            return;
        }else {

            balance = balance - amount;
            this.setBalance(balance);

        }
    }

    // 存钱

    public void deposit(double amount){

        // 本金

        balance = balance+amount;
        this.setBalance(balance);
    }
}

Customer.java


public class Customer {

    private String firstName;
    private String lastName;
    private Account account;

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }
}

MoneyTest.java

public class MoneyTest {
    public static void main(String[] args) {
        Customer customer = new Customer("Tianxiao","Lei");
        Account account =new Account(1000,2000.0,0.0123);
        // 将账户与客户关联,也可以通过account直接调,但是这样比较符合逻辑。
        customer.setAccount(account);
        customer.getAccount().deposit(100);
        customer.getAccount().withdraw(2000);
        System.out.println("用户名:"+customer.getLastName()+" "+customer.getFirstName()+",余额为:"+account.getBalance());
    }
}

银行账户功能进阶

image.png

image.png

image.png

package com.company.day10.exe1;

import com.sun.corba.se.impl.ior.ObjectAdapterIdNumber;

public class Account {
    // 余额
    private double balance;

    //构造器
    public Account(double balance) {
        this.balance = balance;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
    // 存钱
    public void deposit(double amt){
        balance = balance+amt;
        this.setBalance(balance);
    }
    // 取钱
    public void withdraw(double amt){
        if (balance>=amt){
            balance = balance-amt;
            this.setBalance(balance);
        }else {
            System.out.println("余额不足,取款失败");
        }
    }

}


package com.company.day10.exe1;

public class Customer {
    // 姓名
    private String firstName;
    private String lastName;
    // 账户
    private Account account;

    //构造器
    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }
}

package com.company.day10.exe1;

public class Bank {

    private Customer[] customers;
    private int numberOfCustomer;

    public Bank() {

        // 先创建一个长度为10的数组
        customers=new Customer[10];

    }

    // 添加客户
    public void addCustomer(String f,String l){
        // 创建客户
        Customer customer =new Customer(f,l);
        customers[numberOfCustomer++] = customer;

    }



    public int getNumberOfCustomer() {
        return numberOfCustomer;
    }
    // 获取制定位置上的用户
    public Customer getCustomers(int index) {

        if (index>=0&&index<numberOfCustomer){
            return customers[index];
        }else {
            System.out.println("参数非法");
            return null;
        }

    }
}

BankTest.java

package com.company.day10.exe1;

public class BankTest {
    public static void main(String[] args) {

        //创建银行对象
        Bank bank =new Bank();
        // 添加用户
        bank.addCustomer("Tianxiao","Lei");
        // 创建账户对象
        Account account =new Account(0);
        // 给用户设置一个账户
        bank.getCustomers(0).setAccount(account);
        // 存钱
        bank.getCustomers(0).getAccount().deposit(1000);
        // 取钱
        bank.getCustomers(0).getAccount().withdraw(120);
        // 个人账户情况
        System.out.println("用户:"+bank.getCustomers(0).getLastName()+" "+bank.getCustomers(0).getFirstName()
                +"\n余额为:"+bank.getCustomers(0).getAccount().getBalance());

        // 添加用户
        bank.addCustomer("Ban","Lu");
        // 匿名函数给用户设置一个账户
        bank.getCustomers(1).setAccount(new Account(0));
        // 存钱
        bank.getCustomers(1).getAccount().deposit(1000);
        // 取钱
        bank.getCustomers(1).getAccount().withdraw(200);
        // 个人账户情况
        System.out.println("用户:"+bank.getCustomers(1).getLastName()+" "+bank.getCustomers(1).getFirstName()
                +"\n余额为:"+bank.getCustomers(1).getAccount().getBalance());

        // 银行用户个数
        System.out.println(bank.getNumberOfCustomer());
    }


}

客户信息管理软件(项目练习)

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

继承圆的面积计算类,计算圆柱的体积

image.png

Circle.java

package com.company.day11;

public class Circle {
    private double radius=1;

    public Circle() {

    }

    public Circle(double radius) {
        this.radius = radius;
    }



    public void setRadius(double radius) {
        this.radius = radius;
    }

    public double getRadius() {
        return radius;
    }

    public double findArea(){

        double area = Math.PI*getRadius()*getRadius();
        return area;
    }


}

CircleTest

package com.company.day11;

public class CircleTest {
    public static void main(String[] args) {
        Circle cir = new Circle(2);
        System.out.println(cir.findArea());
    }
}

Cylinder.java

package com.company.day11;

public class Cylinder extends Circle {
    double length=1;


    public Cylinder() {
        super();

    }

    public Cylinder(double radius,double length) {
        super(radius);
        this.length = length;
    }

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    public double findVolume(){
        double volume = super.findArea()*length;
        return volume;
    }
}

CylinderTest.java

package com.company.day11;

public class CylinderTest {
    public static void main(String[] args) {
        Cylinder cyl = new Cylinder(2,10);
        System.out.println(cyl.findVolume());
    }
}

圆面积、体积(方法的继承和重写)

image.png

public class Circle {
    private double radius;

    public Circle() {
        radius = 1.0;
    }

    public Circle(double radius) {
        this.radius = radius;
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
    // 圆的面积
    public double findArea(){
        return Math.PI*getRadius()*getRadius();
    }
}

public class Cylinder extends Circle {
    private double length;

    public Cylinder() {
        this.length = 1.0;
    }

    public Cylinder(double radius, double length) {
        super(radius);
        this.length = length;
    }

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    // 圆柱的表面积
    public double findArea(){
        return 2*super.findArea()+Math.PI*2*getRadius()*getLength();
    }

    //圆柱的体积
    public double findVolume(){
        return super.findArea()*getLength();

    }
}