Java学习周记4

学习Java的第四周

来自于弱鸡的无病呻吟:这周是第四周了。。。。

Ch4Demo1


1.设计一个时间类Ch4Demo1,这个类包含:
(1)表示时间的数据域hour、minute和second;
(2)一个以当前时间创建Ch4Demo1对象的无参构造方法(数据域的值表示当前时间);
(3)一个构造Ch4Demo1对象的构造方法,这个对象有一个特定的时间值,这个值是以毫秒表示的、从1970年1月1日午夜开始到现在流逝的时间段(数据域的值表示这个时间);
(4)一个构造带特定的小时、分钟和秒的Ch4Demo1对象的构造方法;
(5)三个数据域hour、minute和second各自的get方法;
(6)一个名为setTime(long elapseTime)的方法使用流逝的时间给对象设置一个新时间。例如,如果流逝的时间为555550000毫秒,则转换为10小时、10分钟、10秒。
编写一个测试程序,创建两个Ch4Demo1对象(使用new Ch4Demo1()和new Ch4Demo1(555550000)),然后显示它们的小时、分钟和秒。


	long hour;
	long minute;
	long second;
	
	public Ch4Demo1() {
		long time = System.currentTimeMillis()+8*60*60*1000;
		this.hour = (time / 1000 / 60 / 60) % 24;
		this.minute = ((time / 1000) / 60) % 60;
		this.second = (time / 1000) % 60;
	}
	

	public Ch4Demo1(long elapseTime) {
		second = (elapseTime / 1000) % 60;
		minute = ((elapseTime / 1000) / 60) % 60;
		hour = (elapseTime / 1000 / 60 / 60) % 24;
	}

	public Ch4Demo1(long hour, long minute, long second) {
		this.hour = hour;
		this.minute = minute;
		this.second = second;
	}

	public long getHour() {
		return hour;
	}

	public long getMinute() {
		return minute;
	}

	public long getSecond() {
		return second;
	}

	public void setTime(long elapseTime) {

		second = (elapseTime / 1000) % 60;
		minute = ((elapseTime / 1000) / 60) % 60;
		hour = (elapseTime / 1000 / 60 / 60) % 24;
	}


	public static void main(String[] args) {
		Ch4Demo1 a = new Ch4Demo1();
		System.out.println(a.hour+":"+a.minute+":"+a.second);
		Ch4Demo1 b = new Ch4Demo1(555550000);
		System.out.println(b.hour+":"+b.minute+":"+b.second);
	}

水水水

Ch4Demo2


2.设计一个名为Ch4Demo2的类。这个类包括:
(1)一个名为value的int型数据域,存储这个对象表示的int值;
(2)一个为指定的int值创建Ch4Demo2对象的构造方法;
(3)一个返回int值的get方法;
(4)如果值分别偶数、奇数或素数,那么isEven()、isOdd()和isPrime()方法都会返回true;
(5)如果指定值分别为偶数、奇数或素数,那么相应的静态方法isEven(int)、isOdd(int)和isPrime(int)方法都会返回true;
(6)如果指定值分别为偶数、奇数或素数,那么相应的静态方法isEven(Ch4Demo2)、isOdd(Ch4Demo2)和isPrime(Ch4Demo2)方法都会返回true;
(7)如果该对象的值与指定的值相等,那么equals(int)和equals(Ch3Demo2)方法返回true;
(8)静态方法parseInt(char[])将数字字符构成的数组转换为一个int值。
(9)静态方法parseInt(String)将一个字符串转换为一个int值。
编写一个程序测试这个类中的所有方法。


	public static int parseInt(char[] str) {
		String str1 = String.valueOf(str);// 将字符数组转字符串
		return Integer.parseInt(str1);// 将字符串转整数
	}
	
	public static int parseInt(String str) {
		return Integer.parseInt(str);// 将字符串转整数
	}
	
	public String toString() {
		return String.valueOf(this.value);// 将数字转换成字符串
	}

字符串操作的三个方法,本人较懒,详情请看注释。

Ch4Demo3


3.设计一个名为Ch4Demo3的类,表示一个带x坐标和y坐标的点。这个类包括:
(1)两个带get方法的数据域x 和y分别表示它们的坐标;
(2)一个创建点(0,0)的无参构造方法;
(3)一个创建特定坐标点的构造方法;
(4)一个名为distance的方法,返回从该点到Ch4Demo3类型的指定点之间的距离;
(5)一个名为distance的方法,返回从该点到x和y坐标的指定点之间的距离。
编写一个测试程序,创建两个点(0,0)和(10,30.5),并显示它们之间的距离。


	public double distance(Ch4Demo3 p) {
		return Math.sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
	}

	public double distance(double x, double y) {
		return Math.sqrt((this.x - x) * (this.x - x) + (this.y - y) * (this.y - y));
	}

水水水。。

Ch4Demo4


4.第三次作业第5题中创建的(银行帐户)Ch3Demo5类来模仿一台ATM机。创建一个有10个帐户的数组,其id为0,1,2,…9,初始化收支为100美元,系统提示用户输入一个id。如果id输入不正确,就要求用户输入正确的id。一旦接受一个id,就显示一个菜单。可以用1来查看当前的收支,用2来表示取钱,用3来表示存钱,用4表示退出主菜单。一旦退出,系统就会提示再次输入id。所以系统一旦启动就不会停止。


package ch4;
import java.util.Scanner;
import ch3.Ch3Demo5;

public class Ch4Demo4 {
	public static void main(String[] args) {
		//创建模拟ATM机
		Ch3Demo5[] atm = new Ch3Demo5[10];
		
		//创建10个账户
		for(int i = 0; i < 10; i ++) {
			atm[i] = new Ch3Demo5(i,100);
		}
		@SuppressWarnings("resource")//详情请看代码下解释
		Scanner input = new Scanner(System.in);
		
		while(true) {
			System.out.println("请输入一个id:");
			int id = input.nextInt();
			//判断id是否有误
			while(true) {
				if(id < 0 || id > 9) {
					System.out.println("输入有误,请重新输入:");
					System.out.println("请输入一个id:");
				}else {
					System.out.println("您的银行帐号是:" + id);
					while(true) {
						System.out.println("1:查看当前余额");
						System.out.println("2:取款");
						System.out.println("3:存款");
						System.out.println("4:退出菜单");
						System.out.println("请输入您的选择:");
						int n = input.nextInt();
						switch (n) {
						case 1:
							System.out.println(atm[id].getBalance());
							break;
						case 2:
							System.out.println("请输入取款的金额:");
							int Money1 = input.nextInt();
							atm[id].withDraw(Money1);
							System.out.println("取出数量为:" + Money1);
							System.out.println("当前账户余额为:" + atm[id].getBalance());
							break;
						case 3:
							System.out.println("请输入存款的金额:");
							int Money2 = input.nextInt();
							atm[id].withDraw(Money2);
							System.out.println("存款数量为:" + Money2);
							System.out.println("当前账户余额为:" + atm[id].getBalance());
							break;
						case 4:
							
							break;

						default:
							System.out.println("输入有误,请重新输入");
						}
					}
				}
			}
		}
	}
}

这是一个有点瑕疵的代码程序,由于input.close()作者感觉放哪里都不合适,所以就用了一个** @SuppressWarnings(“resource”)**来镇压编译器报错。

具体作用请参考:

@SuppressWarnings(“resource”)的作用

Ch4Demo5


5.(实现String类)Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为Ch4Demo5):
public Ch3Demo5(char[] chars);//将字符数组转换成字符串
public char charAt(int index);//返回字符串中第index个字符
public int length();//返回字符串的长度
public Ch3Demo5 substring(int begin,int end);//返回从begin位置开始end结束的字符串
public Ch3Demo5 toLowerCase();//将字符串的字符转换成小写字母
public boolean equals(Ch3Demo5 s);//判断两个字符串是否相等
public int compare(String s);//比较两个字符串的大小
编写一个程序测试这个类中的所有方法。


	char[] value;

	//将字符数组转换成字符串
	public Ch4Demo5(char[] chars) {
		this.value = chars;
	}
	
	
	
	//返回字符串中第index个字符
	public char charAt(int index) {
		Scanner input = new Scanner(System.in);
		while(index < 0 || index >= value.length) {
			System.out.println("数组越界,请输入正确的数组!!");
			index = input.nextInt();
		}
		input.close();
		return value[index];
	}
	
	//返回字符串的长度
	public int length() {
		return value.length;
	}
	
	//返回从begin位置开始end结束的字符串
	public Ch4Demo5 substring(int begin, int end) {
		char[] s = new char[end - begin+1];
		for(int i = begin; i <= end; i ++) {
			int n = 0;
			s[n] = this.value[i];
			n++;
		}
		Ch4Demo5 newString = new Ch4Demo5(s);
		return newString;
	}
	
	// 将字符串的字符转换成小写字母
	public Ch4Demo5 toLowerCase() {
		char[] newString = new char[value.length];
		for (int i = 0; i < value.length; i++) {
			if (value[i] >= 'A' && value[i] <= 'Z') {
				newString[i] = (char) (value[i] + 32);
			} else {
				newString[i] = value[i];
			}
		}
		Ch4Demo5 str = new Ch4Demo5(newString);
		return str;
	}
	
	// 判断两个字符串是否相等
	public boolean equals(Ch4Demo5 s) {
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) != this.charAt(i)) {
				return false;
			}
		}
		return true;
	}
	
	//比较两个字符串的大小
	public int compare(String s) {
		for (int i = 0; i < s.length(); i++) {
			if (value[i] > s.charAt(i)) {
				return 1;
			}
			if (value[i] < s.charAt(i)) {
				return -1;
			}
		}
		return 0;
	}
	
	public String toString(){
		return String.valueOf(value);
	}

这题作者甚至连代码都不想贴了。。

总结

这一周,学习了类有关的知识,基本没有多大难处吧。还有各种需要重写toString的情况和** @SuppressWarnings(“resource”) **的使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值