Java学习周记3

学习Java的第三周

Java基础语法都熟悉了两周的菜鸡,终于开始了下一阶段的学习了,废话不多说,题目+代码。

Ch3Demo1


1.编写程序,定义一个类Ch3Demo1:利用方法的重载,完成以下方法。
(1)第一个方法是public int max(int x,int y),用于计算两个整数的最大值。
(2)第二个方法是public double max(double x,double y),用于计算两个double型数据的最大值。
(3)第三个方法是public double max(int x,double y),用于计算一个整数和一个double型数据的最大值。
(4)第四个方法是public double max(int x,int y,int z ),用于计算三个整数的最大值。
编写测试方法(main)分别去调用一个对象的这些方法来完成测试。


	public int max(int x, int y) {
		return x>y?x:y;
	}

	public double max(double x, double y) {
		return x>y?x:y;
	}

	public double max(int x, double y) {
		return x>y?x:y;
	}

	public double max(double x, int y) {
		return x>y?x:y;
	}

	public double max(int x, int y, int z) {

		return (x>y?x:y)>z?(x>y?x:y):z;
	}

	public static void main(String[] args) {
		Ch3Demo1 c1 = new Ch3Demo1();
		double b = c1.max(8, 9, 6);
		int c = c1.max(7, 8);
		System.out.println(c);
		System.out.println(b);
	}

方法的重载,与C/C++相比没有啥区别。

Ch3Demo2


  1. 设计一个矩形类Ch3Demo2,这个类包括:
    (1)两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1;
    (2)创建一个默认矩形的无参构造方法;
    (3)一个创建width和height为指定值的矩形的构造方法;
    (4)一个名为getArea()的方法返回这个矩形的面积;
    (5)一个名为getPerimeter()的方法返回周长。

	public double width = 1;
	public double height = 1;
	public Ch3Demo2() {
		
	}
	
	public Ch3Demo2(double width, double height) {
		super();
		this.width = width;
		this.height = height;
	}
	
	public double getArea() {
		return width*height;
	}
	
	public double getPerimeter() {
		return 2*(width+height);
	}

重载构造方法。

Ch3Demo3


3.设计一个股票类Ch3Demo3,这个类包括:
(1)一个名为symbol的字符串数据域表示股票代码;
(2)一个名为name的字符串数据域表示股票的名字;
(3)一个名为previousClosingPrice的double型数据域,它存储的是前一日的股票值;
(4)一个名为currentPrice的double型数据域,它存储的是当时的股票值。
(5)一个名为getChangePercent()的方法,返回从previousClosingPrice到currentPrice的变化的百分比。


public class Ch3Demo3 {
	// 类的属性
	private String symbol;
	private String name;
	private double previousClosingPrice;
	private double currentPrice;

	//无参构造方法
	public Ch3Demo3() {

	}
	//有参构造方法
	public Ch3Demo3(String symbol, String name, double previousClosingPrice, double currentPrice) {
		super();
		this.symbol = symbol;
		this.name = name;
		this.previousClosingPrice = previousClosingPrice;
		this.currentPrice = currentPrice;
	}

	//访问器及修改器

	public String getSymbol() {
		return symbol;
	}

	public void setSymbol(String symbol) {
		this.symbol = symbol;
	}

	public String getName() {
		return name;
	}

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

	public double getPreviousClosingPrice() {
		return previousClosingPrice;
	}

	public void setPreviousClosingPrice(double previousClosingPrice) {
		this.previousClosingPrice = previousClosingPrice;
	}

	public double getCurrentPrice() {
		return currentPrice;
	}

	public void setCurrentPrice(double currentPrice) {
		this.currentPrice = currentPrice;
	}

	//计算变化百分比
	public double getChangePercent() {
		return (currentPrice - previousClosingPrice) / previousClosingPrice;
	}

	public static void main(String[] args) {
		Ch3Demo3 sym = new Ch3Demo3("1101", "阿里巴巴", 271.00, 277.96);
		System.out.println(sym.getChangePercent() * 100 + "%");
	}
}

个人认为练手题,作者比较懒,以后练手题就只写题目和自己敲得代码了。

Ch3Demo4


4.设计一个秒表Ch3Demo4的类,该类包含:
(1)具有访问器方法的私有数据域startTime和endTime;
(2)一个无参构造方法,使用当前时间来初始化startTime;
(3)一个名为start()方法,将startTime重设为当前时间;
(4)一个名为Stop()方法,将entTime设置为当前时间;
(5)一个名为getElapsedTime()的方法,以毫秒为单位返回秒表记录的流逝时间。


	private long startTime;
	private long endTime;

	//构造方法
	public Ch3Demo4() {
		startTime = System.currentTimeMillis();
	}

	//访问器
	public long getStartTime() {
		return startTime;
	}

	public long getEndTime() {
		return endTime;
	}

	public void start(){
		startTime = System.currentTimeMillis();//获取当前时间为开始时间
	}

	public void stop(){
		endTime=System.currentTimeMillis();//获取当前时间为停止时间
	}
	
	public long getElapsedTime(){
		return endTime-startTime;
	}
	
	public static void main(String[] args) {
		Ch3Demo4 c1=new Ch3Demo4();
		c1.start();
		
		//以下为测试区域,以下区域可放任何需要测试运行时间的代码
		
		int sum=0;
		for(int i = 0;i < 100000000;i ++) {
			sum += 1000;
		}
		
		//测试区域结束
		
		c1.stop();
		System.out.println(c1.getElapsedTime());
	}

这一题不是非常水,学到了一个获取当前时间的方法System.currentTimeMillis()

这个方法有两个需要注意的地方

1.这个方法所获取的时间是中间时区的毫秒数。转换为中国时间也就是需要向前推8小时。

2.这个方法获取的是从1970-01-01 00:00:00到现在的时间。

Ch3Demo5


5.设计一个类Ch3Demo5,它包括:
(1)一个名为id的int类型私有数据域,默认值0;
(2)一个名为balance的double类型私有数据域,默认值0;
(3)一个名为annualInterestRate的double类型私有数据域存储当前利率,默认值0。假设所有的帐户都有相同的利率。
(4)一个名为dateCreated的Date类型的私有数据域,存储账户的开户日期;
(5)一个用于创建默认帐户的无参构造方法;
(6)一个用于创建带特定id和初始余额的帐户的构造方法;


	//数据域默认就是私有,无需加关键字private
	int id = 0;
	double balance = 0;
	double annualInterestRate = 0;
	Date dateCreated;
	//创建默认帐户的无参构造方法
	public Ch3Demo5() {
		dateCreated = new Date(System.currentTimeMillis());
	}
	
	//创建带特定id和初始余额的帐户的有参构造方法
	public Ch3Demo5(int id, double balance) {
		super();
		this.id = id;
		this.balance = balance;
		this.dateCreated = new Date(System.currentTimeMillis()); //创建账户的时间
	}
	// 访问器和修改器

		// id的访问器
		public int getId() {
			return id;
		}

		// id的修改器
		public void setId(int id) {
			this.id = id;
		}

		// balance的访问器
		public double getBalance() {
			return balance;
		}

		// balance的修改器
		public void setBalance(double balance) {
			this.balance = balance;
		}

		// annualInterestRate的访问器
		public double getAnnualInterestRate() {
			return annualInterestRate;
		}

		// annualInterestRate的修改器
		public void setAnnualInterestRate(double annualInterestRate) {
			this.annualInterestRate = annualInterestRate;
		}

		// dateCreated的访问器
		public Date getDateCreated() {
			return dateCreated;
		}

		// 返回月利率的方法
		public double getMonthlyInterestRate() {
			return annualInterestRate / 12;

		}

		//取钱的方法
		public void withDraw(double money) {
			if (balance >= money) {
				balance -= money;
			} else {
				System.out.println("余额不足!");
			}
		}

		//存钱的方法
		public void deposit(double money) {
			balance += money;
		}
		
		//test
		public static void main(String[] args) {
			Ch3Demo5 c = new Ch3Demo5(1122, 20000);
			c.setAnnualInterestRate(0.045);

			System.out.println("余额:" + c.getBalance());

			//取3000
			c.withDraw(3000);
			
			//存2500
			c.deposit(2500);

			System.out.println("存取操作后余额:" + c.getBalance());
			System.out.println("月利息:" + c.getAnnualInterestRate());
			System.out.println("这个帐户的创建时间是:" + c.getDateCreated());
		}

学习到一个Date类对象的使用,又一种输出时间的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值