java学习之路 之 面向对象编程-面向对象-数组练习题(1)

public class ArrayTest {
	//运用数组打印输出10-50
	public static void main(String[] args) {
		int[] arr = new int[5]; // 有效下标是0~长度-1 
		arr[0] = 10;
		arr[1] = 20;
		arr[2] = 30;
		arr[3] = 40;
		arr[4] = 50;
		//arr[5] = 60; 下标不可以越界
		//arr[-1] = 5;
		for (int i = 0; i < 5; i++) {
			System.out.println(arr[i]);
		}
	}
}

class ArrayTest2 {
	//运用数组打印输出10-50
	public static void main(String[] args) {
		int[] arr = new int[5]; // 有效下标是0~长度-1 
		for (int i = 0; i < 5; i++) { // 数组和循环是在一起
			// 0~4
			arr[i] = (i + 1) * 10;
		}	
		// 数组的遍历(迭代)
		for (int i = 0; i < 5; i++) {
			System.out.println(arr[i]);
		}
	}
}

class Exer1 {
	public static void main(String[] args) {
		// 创建一个数组, 保存10个奇数, 遍历数组打印输出
		int[] arr = new int[10];
		for (int i = 0; i < 10; i++) {
			arr[i] = 2 * i + 1;
		}
		// 遍历数组
		for (int i = 0; i < 10; i++) {
			System.out.println(arr[i]);
		}
	}
}

class ArrayTest3 {
//打印10 20 30 40 50
	public static void main(String[] args) {
		int[] arr = new int[5]; // 数组对象一旦创建,长度就是固定的,不可改变
		System.out.println("数组长度:" + arr.length);
		//arr.length = 10; arr.length是一个常量, 固定不变
		
		for (int i = 0; i < arr.length; i++) { // 数组和循环是在一起
			// 0~4
			arr[i] = (i + 1) * 10;
		}		
		// 数组的遍历(迭代)
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

class ArrayTest4 {
//打印A-Z 26个英文字母
	public static void main(String[] args) {
		char[] chArr = new char[26];
		for (int i = 0; i < chArr.length; i++) {
			chArr[i] = (char)('A' + i);
		}
		// 遍历
		for (int i = 0; i < chArr.length; i++) {
			System.out.print(chArr[i] + " ");
		}
		System.out.println();
	}
}

class Exer2 {
	// 创建6个元素的数组, 保存你的生日和今天的日期,最后打印输出.
	public static void main(String[] args) {
		int[] arr = new int[6]; // 1994-1-23 2016-7-27
		arr[3] = 1994; 
		arr[4] = 1;
		arr[5] = 23;
		arr[0] = 2016;
		arr[1] = 7;
		arr[2] = 27;
		System.out.println("生日:" + arr[3] + "年" + arr[4] + "月" + arr[5] + "日");
		System.out.println("今天:" + arr[0] + "年" + arr[1] + "月" + arr[2] + "日");
	}
}

class Exer3 {
	// 创建26个元素的字符数组, 保存26个小写字母, 遍历打印输出
	public static void main(String[] args) {
		char[] chArr = new char[26];
		for (int i = 0; i < chArr.length; i++) {
			chArr[i] = (char)('a' + i);
		}
		// 遍历
		for (int i = 0; i < chArr.length; i++) {
			System.out.print(chArr[i] + " ");
		}
		System.out.println();
	}
}

class Exer4 {
	// 创建36个元素的字符数组, 前26个保存小写字母,后10个保存10个数字字符
	public static void main(String[] args) {
		char[] chArr = new char[36];
		for (int i = 0; i < 26; i++) {
			chArr[i] = (char)('a' + i);
		}
		for (int i = 26; i < chArr.length; i++) {
			chArr[i] = (char)('0' + i - 26);
		}
		// 遍历
		for (int i = 0; i < chArr.length; i++) {
			System.out.print(chArr[i] + " ");
		}
		System.out.println();
	}
}

class Exer42 {
	// 创建36个元素的字符数组, 前26个保存小写字母,后10个保存10个数字字符
	public static void main(String[] args) {
		char[] chArr = new char[36];
		for (int i = 0; i < 26; i++) {
			chArr[i] = (char)('a' + i);
		}
		for (int i = 0; i < 10; i++) {
			chArr[26 + i] = (char)('0' + i);
		}
		// 遍历
		for (int i = 0; i < chArr.length; i++) {
			System.out.print(chArr[i] + " ");
		}
		System.out.println();
	}
}

class ArrayTest5 {
	//静态初始化的练习
	public static void main(String[] args) {
		int[] arr1 = new int[]{9, 2, 1, 3, 8}; // 静态初始化, 比较灵活, 声明和初始化可以分开
		int[] arr2 = {1, 2, 0, 9, 3}; // 写法固定, 只适用于数组的声明和创建在同一行.
		int[] arr3;
		//arr3 = {3, 4, 5};
		arr3 = new int[]{3, 4, 5};	
	}
}

class ArrayTest6 {
	public static void main(String[] args) {
		// 创建引用数组, 数组元素中只能保存地址, 但是地址可以指向对象, 所以也可以称为对象数组
		MyDate[] arr = new MyDate[5]; // 此时并没有MyDate对象产生, 数组中都是空洞
		arr[0] = new MyDate(1980, 1, 1);
		arr[4] = new MyDate(2011, 5, 8);
		arr[1] = new MyDate(1990, 2, 2);
		arr[3] = new MyDate(2008, 8, 8);
		arr[2] = new MyDate(1999, 9, 9);
		for (int i = 0; i < arr.length; i++) { // 如果数组中有空洞, 就是抛出空指针异常
			System.out.println(arr[i].say());
		}	
	}
}

class ArrayTest7 {
	//字符串数组的创建
	public static void main(String[] args) {
		String[] strArr = {"aaa", "yyy", "bbb", "xxx", "qqq"};
		for (int i = 0; i < strArr.length; i++) {
			System.out.println(strArr[i]);
		}
	}
}

class ArrayTest8 {
	//main方法中用字符串数组做参数
// 命令行参数的用法
	public static void main(String[] args) { // 命令行参数的用法
		for (int i = 0; i < args.length; i++) {
			System.out.println(args[i]);
		}	
	}
}

class Exer5 {
	// 从命令行接收8个分数值, 打印分数的等级,如果分数值大于80,打印良, 小于60打印不及格, 其他打印其他 
	public static void main(String[] args) {
			for (int i = 0; i < args.length; i++) {
			int score = Integer.parseInt(args[i]);
			if (score > 80) {
				System.out.println(score + " : 良");
			} else if (score < 60) {
				System.out.println(score + " : 不及格");
			} else {
				System.out.println(score + " : 其他");
			}
		}
	}
}
class ArrayTest10 {
	//创建MyDate类型的对象date1,其参数由命令行参数获取
	public static void main(String[] args) { // 命令行参数的用法
		MyDate date1 = new MyDate(	Integer.parseInt(args[0]), 
									Integer.parseInt(args[1]), 
									Integer.parseInt(args[2]));
		System.out.println(date1.say());
	}
}
//MyDate 类的定义
class MyDate {
	int year;
	int month;
	int day;
//全参构造器
	public MyDate(int year, int month, int day) {
		this.year = year;
		this.month = month;
		this.day = day;
	}
	public String say() {
		return year + "年" + month + "月" + day + "日";
	}
}

class Exer6 {
	// 生成5个[10~30)的随机整数
	public static void main(String[] args) {
		for (int i = 0; i < 5; i++) {
			int rand = (int)(Math.random() * 20 + 10);
			System.out.println(rand);
		}
	}
}

class ArrayTest11 {
	//生成[0~1)、[0~101)、[0~50)的随机小数
	public static void main(String[] args) {
		double rand1 = Math.random(); // 生成一个随机小数[0~1)
		System.out.println(rand1);
		double rand2 = Math.random() * 101; // 生成一个随机小数[0~101)
		System.out.println(rand2);
		int rand3 = (int)(Math.random() * 50); // 生成一个随机整数[0~50)
		System.out.println(rand3);
	}
}

class ArrayTest12 {
	//创建一个8个元素的数组,每个元素被[1-20)的随机数赋值,并遍历打印、求和、平均值、最大值并打印
	public static void main(String[] args) {
		int[] arr = new int[8];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = (int)(Math.random() * 20);
		}
		// 遍历
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
		// 求和
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		System.out.println("sum:" + sum);
		// 求平均值
		int avg = sum / arr.length;
		System.out.println("avg:" + avg);
		// 找最大值
		int max = arr[0]; // 先假定第一个数是最大值
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] > max) { // 从数列中遍历每个数,都和max作比较, 如果某个数比max还大, 你就是max
				max = arr[i];
			}
		}
		System.out.println("max:" + max);
		System.out.println();
	}
}


数组章节作业 1、将一个数组中的元素倒排过来,不能新开一个数组的临时存储空 间,只能在原数组上改。 2、写一个类用来模拟栈这种数据结构,要求底层 使用数组存储数据, 并给出相应的进栈和出栈的方法。MyStack int arr[]; int count;//栈中元素个数 public MyStack(int n){ arr = new int[n]; } boolean push(int num){ if(count==arr.length){} arr[count++]=num; } int pop(){ if(count==0){ return -1;} return arr[--count]; } 3、实现在一个数组指定位置添加元素和删除元素的功能。 1、数组容量问题? 2、添加元素前后数组中元素的变化 3、删除元素前后数组中元素的变化 面向对象章节作业 1,写一个类,名为Animal,该类有两个私有属性, name(代表动物的名字),和legs(代表动物的腿的条 数)。并提供个两构造方法,一个无参,默认给name 赋值为AAA,给legs赋值为4;另一个需要两个参数, 分别用这两个参数给私有属性赋值。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 2,写一个类Person,包含以下属性:String name; int age; boolean gender; Person partner。 为Person类写一个marry(Person p)方法,代表当前 对象和p结婚,如若可以结婚,则输出恭贺信息, 否则输出不能结婚原因。要求在另外一个类中写一 个主方法,来测试以上程序。(下列情况不能结婚: 结婚年龄,男<24,女<22;3,某一方已婚) 3,写一个类,名为Animal,该类有两个私有属性,name(代表动物的名字),和legs(代表动物的腿的条数);要求为两个私有属性提供public 的访问方法。并提个两构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 4,写一个类Fish,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Swimming!! 5,写一个类Bird,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值2;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Flying!! 6,写一个类Zoo,要求分别生成若干个Animal,Fish和Bird。并调用他们的属性和方法。 7,写Shape类,要求如下: 1.int类型属性x和y,分别表示图形的中心点坐标 2.无参构造器 3.构造器,对x和y进行初始化 4.draw()方法,输出"Shape draw" 写Circle类,继承Shape类,要求如下 1.double类型属性r,表示圆的半径 2.无参构造器,将r初始化为1.0 3.构造器,对r进行初始化 4.构造器,对x、y、r进行初始化 5.draw()方法,输出"draw in circle"和x,y,r的值 写Rectangle类,继承Shape类,要求如下 1.double类型属性height和width,表示矩形的高和宽 2.无参构造器,将height和width都初始化为1.0 3.构造器,对height和width进行初始化 4.构造器,对x、y、height、width进行初始化 5.draw()方法,输出"draw in rectangle"和x,y,height,width的值 使用ShapeTest类测试以上代码。 8,某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率 BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。 容器类章节作业 1、写MyStack类,实现栈功能。在类中使用ArrayList保存数据。 2、使用TreeSet和Comparator,写TreeSetTest1 要求:对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 3、使用TreeSet和Comparator,写TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 4、使用TreeSet和Comparator,写TreeSetTestInner 要求: 对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 1. 使用匿名内部类实现 2. 使用静态内部类实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值