1.设计一个名为figure的图形软件包(package)。包中包
含三角形、矩形、圆三个类。要求:(1)每个类都要构造
方法并为成员设置get和set方法;(2)每个类都要有计
算周长和面积的成员方法;(3)完成该软件包后的编码后,
在另一个包的含有main方法的类中编写代码,分别使用
图形软件包中的三个类,生成三个对象,并打印出其周长
和面积。
****************************************************** package figure;
public class juxing{//矩形的计算函数
private double lenth,width;
public juxing(){
lenth=0;
width=0;
}
public juxing (double x,double y){
lenth=x;
width=y;
}
public void setLenth(double lenth){
this.lenth=lenth;
}
public double getLenth(){
return lenth;
}
public void setWidth(double width){
this.width=width;
}
public double getWidth(){
return width;
}
public double perimeter(){
return lenth*width;
}
public double Area(){
return (lenth+width)*2;
}
}
****************************************************** package figure;
import java.math.*;
public class sanjiaoxing {//三角形的计算函数
private double side1;
private double side2;
private double side3;
public sanjiaoxing(){
side1=0;
side2=0;
side3=0;
}
public sanjiaoxing(double x,double y,double z){
side1=x;
side2=y;
side3=z;
}
public void setSide1(double side1){
this.side1=side1;
}
public double getSide1(){
return side1;
}
public void setSide2(double side2){
this.side2=side2;
}
public double getSide2(){
return side2;
}
public void setSide3(double side3){
this.side3=side3;
}
public double getSide3(){
return side3;
}
public double perimeter(){
return side1+side2+side3;
}
public double Area(){
double p=(side1+side2+side3)/2;
return
Math.sqrt(p*(p-side1)*(p-side2)*(p-side3));
}
}
****************************************************** package figure;
import java.math.*;
public class yuanxing {//圆形的计算函数
private double radius;
public yuanxing(){
radius=0;
}
public yuanxing(double x){
radius=x;
}
public void setRadius(double radius){
this.radius=radius;
}
public double getRadius(){
return radius;
}
public double perimeter(){
return 2*Math.PI*radius;
}
public double Area(){
return Math.PI*radius*radius;
}
}
****************************************************** package figure_show;
import figure.juxing;
import figure.sanjiaoxing;
import figure.yuanxing;
public class main {
public static void main(String[]args){
sanjiaoxing t=new sanjiaoxing(3,4,5);
System.out.println("三角形的周长:"+t.perimeter());
System.out.println("三角形的面积:"+t.Area());
juxing r=new juxing(3,4);
System.out.println("矩形的周长:"+r.perimeter());
System.out.println("矩形的面积:"+r.Area());
yuanxing c=new yuanxing(5);
System.out.println("圆形的周长;
"+c.perimeter());
System.out.println("圆形的面积:"+c.Area());
}
}
2.设计一个教师类Teacher(属于https://www.doczj.com/doc/1c2060930.html,.sdkd包),要求:
1)属性有编号(int no)、姓名(String name)、
年龄(int age)、所属学院(seminary),为这
些属性设置相应的get和set方法。
2)为Teacher类重写equals方法,要求:当两个
教师对象的no相同时返回true。
3)重写Teacher类的toString方法,通过该方法
可以返回“编号为**、姓名为**、年龄为**的**
学院老师”形式的字符串。
4)由多个Teacher对象所形成的数组可以以两种
方法排序(编号由低到高排序):1)使用
Arrays.sort(Object[] a)方法;2)使用
Arrays.sort(Object[] a, Comparator c)方法。
5)再定义一个类TeacherManagement(属于cn.sd
包),提供方法search,方法可以在一组给定的
教师中,根据姓名(或年龄)返回等于指定姓名
(或年龄)的教师的字符串信息,信息格式为:
“编号为**、姓名为**、年龄为**的**学院老
师”。如果没有满足条件的教师,则返回“没有
符合条件的教师”。
6)构造main方法进行测试。
****************************************************** package https://www.doczj.com/doc/1c2060930.html,.sdkd;
public class Teacher implements Comparable{
private int no;
private String name;
private int age;
private String seminary;
public Teacher(int no,String name,int age,String seminary){
this.no=no;
https://www.doczj.com/doc/1c2060930.html,=name;
this.age=age;
this.seminary=seminary;
}
public void setNo(int no){
this.no=no;
}
public int getNo(){
return no;
}
public void setName(String name){
https://www.doczj.com/doc/1c2060930.html,=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setSeminary(String seminary){ this.seminary=seminary;
}
public String getSeminary(){
return seminary;
}
public boolean equals(Object o){
boolean result=false;
Teacher t = (Teacher)o;
if(this.no==t.no){
return true;
}
return result;
}
public String toString(){
return "编号为"+getNo()+",姓名为"+getName()+",年龄为"+getAge()+"的"+getSeminary()+"学院老师";
}
//compareTo接口
public int compareTo(Object o) {
Teacher otherTea = (Teacher)o;
if(no if(no>otherTea.no) return 1; return 0; } } package https://www.doczj.com/doc/1c2060930.html,.sdkd; import java.util.Arrays; import cn.sd.*; public class main { public static void main(String[] args) { Teacher t1 = new Teacher(0001,"白玉",28,"信息"); Teacher t2 = new Teacher(0002,"李兰馨",36,"地科"); Teacher t3 = new Teacher(0003,"张成宇",40,"材料"); Teacher[] TeaArray = new Teacher[3]; TeaArray[0] = new Teacher(1001,"白玉",28,"信息"); TeaArray[1] = new Teacher(1005,"李兰馨",42,"地科"); TeaArray[2] = new Teacher(1003,"张成宇",40,"材料"); System.out.println(t1.toString()); System.out.println(t2.toString()); System.out.println(t3.toString()); System.out.print("\n"); t1.setNo(t2.getNo()); System.out.println("***临时修改教师t3的信息***"); System.out.println("教师t1与教师t2是否相同?"); System.out.println(t1.equals(t2)); System.out.println("教师1与教师t3是否相同?"); System.out.println(t1.equals(t3)); System.out.print("\n"); System.out.println("按编号升序排列:"); Arrays.sort(TeaArray); for(int i=0;i System.out.println(); } System.out.println(); System.out.println("年龄为28的教师的信息:"); System.out.println(TeacherManagement.search(28,TeaAr ray)); } } 4. 一个公司有三种不同类型的员工,他们的薪水分别按年(计算方法:年薪*工作年数)、按月(计算方法:月薪*工作月数)、按周(计算方法:周薪*工作周数)结算。编写类Company,提供计算所有员工总薪水的方法getEarnings,该方法能够根据输入的一组员工(包含各类员工)返回这组员工的总薪水。 package pay; public class pay { public int wages; public int day; public pay(int wages,int day) { this.wages = wages; this.day = day; } public pay() { } public int show() { return wages*day; } } class pay_a extends pay { public pay_a(int a,int b) { wages = a; day = b; } public pay_a(){} public int show() { return (int)(((double)day/365)*wages); } } class pay_b extends pay { public pay_b(int a,int b) { wages = a; day = b; } public pay_b(){} public int show() { return (int)(((double)day/30)*wages); } } class pay_c extends pay { public pay_c(int a,int b) { wages = a; day = b; } public pay_c(){} public int show() { return (int)(wages*day); } } ****************************************************** package pay; import pay.pay; import pay.pay_a; import pay.pay_b; import pay.pay_c; public class teat24 { public static int getEarings(pay[]p,int length) { int sum=0; for(int i=0;i { sum+=p[i].show(); } return sum; } public static void main(String[] args) { pay[] pp = new pay[5]; pp[0] = (new pay_a(8, 2000)); pp[0] = (pay_a)pp[0]; pp[1] = new pay_b(2, 500); pp[1] = (pay_b)pp[1]; pp[2] = new pay_c(10, 15000); pp[2] = (pay_c)pp[2]; pp[3] = new pay_a(12, 5000); pp[3] = (pay_a)pp[3]; pp[4] = new pay_c(5, 1100); pp[4] = (pay_c)pp[4]; int sum = getEarings(pp, 5); for(int i=0;i<4;i++){ System.out.println("第"+i+"个员工的薪水为:"+pp[i].show()); } System.out.println("员工的总薪水为:"+sum); } } 5.编码实现一个类:(1)提供一个静态方法,可以将输入的一个int[]数组按照从小到大的顺序排列;(2)提供静态方法,对排好序的数组使用折半查找(使用递归和非递归两种形式分别实现)查找某一个整数。 package shiyaner5; import java.util.Scanner; public class myArray { public static void sort(int[] a,int n){ int temp; for(int i=0;i for(int j=0;j if(a[j]>a[i]){ temp = a[j]; a[j] = a[i]; a[i] = temp; } } } } public static int BinarySearch(int[] array,int x,int n){ int left = 0; int right = n-1; while(left<=right){ int middle = (left+right)/2; if(x==array[middle]){ System.out.println(x + "位于数组中第" + (middle+1) + "个位置。"); return middle; } if(x>array[middle]){ left = middle+1; }else{ right = middle-1; } } System.out.println("未找到!"); return -1; } public static void main(String[] args) { int[] s = new int[]{6,8,2,9,4,11,1,7,12,10}; int n; Scanner scan = new Scanner(System.in); for(int i=0;i<10;i++){ System.out.print(s[i]+" "); } //排序 sort(s,10); System.out.println(); System.out.println("----------------------"); for(int i=0;i<10;i++){ System.out.print(s[i]+" "); } System.out.println(); System.out.println("----------------------"); //查找 System.out.print("请输入要查找的正整数:"); n = scan.nextInt(); BinarySearch(s,n,10); } } 6.使用一维数组编码实现一个栈(Stack)类,要求提供以下操作:(1)boolean isEmpty():判断栈当前是否为空;(2)入栈操作void push(obj):把数据元素obj插入堆栈;(3)出栈操作Object pop():出栈,并返回删除的数据元素;(4)Object getTop():取堆栈当前栈顶的数据元素并返回;(5)利用Stack类实现一个方法:输入一个正整数,输出该整数所对应的二进制数。 package shiyaner6; public class Stack { public Object[] array; public int maxLength; public int top; Stack(int maxLength){ this.maxLength = maxLength; array = new Object[maxLength]; top = -1; } public boolean isEmpty(){ if(top==-1) return true; else return false; } public void push(Object obj){ if(top != maxLength){ array[top+1] = obj; top++; } else return; } public Object pop(){ Object e = null; if(top>-1){ e = array[top]; array[top] = null; top--; } return e; } public Object getTop(){ Object e = null; if(top>-1){ e = array[top]; } return e; } } **************************************************** package shiyaner6; import java.util.Scanner; public class main { public static void main(String[] args){ Stack stack = new Stack(32); Scanner scan = new Scanner(System.in); System.out.print("请输入一个正整数:"); int n = scan.nextInt(); //测试Stack类 stack.push(n); System.out.println("输出:" + stack.getTop()); System.out.println(stack.isEmpty()); stack.pop(); System.out.println(stack.isEmpty()); //求一个正整数对应的二进制数 while(n>0){ stack.push(n%2); n=n/2; } System.out.println("-----------------"); while(!stack.isEmpty()){ System.out.print(stack.pop()); } scan.close(); } } 7. 按照要求使用Java编码。 1)以类型int[][]声明一个叫matrix的二维数组 变量,将矩阵初始化为一个5个元素的数组。 2)以下列方式为matrix的内部元素赋值:matrix 从零开始循环到其长度值;例如索引为i,在每 次迭代中,将matrix[i]指向一个新的整数数组, 其长度为i。然后用索引变量j,对数组中的每 一个元素进行循环。在每次内部循环中,将 matrix[i][j]赋值为(i*j)。 3)通过循环打印matrix中的所有元素,结果为: <> <0> <0 2> <0 3 6> <0 4 8 12> package shiyaner7; public class Matrix { private int[][] matrix; Matrix(){ matrix = new int[5][]; matrix[0] = new int[0]; matrix[1] = new int[1]; matrix[2] = new int[2]; matrix[3] = new int[3]; matrix[4] = new int[4]; for(int i=0;i<5;i++){ for(int j=0;j matrix[i][j] = i*j; } } } public void print(){ for(int i=0;i<5;i++){ System.out.print("<"); for(int j=0;j System.out.print(matrix[i][j] + " "); } System.out.println(">"); } } } **************************************************** package shiyaner7; public class main { public static void main(String[] args) { Matrix matrix = new Matrix(); matrix.print(); } } 8.利用二维数组(double[])实现一个矩阵类:Matrix。要求提供以下方法:(1)set(int row, int col, double value):将第row行第col列的元素赋值为value;(2)get(int row,int col):取第row行第col列的元素;(3)width():返回矩阵的列数;(4)height():返回矩阵的行数;(5)Matrix add(Matrix b):返回当前矩阵与矩阵b相加后的矩阵;(6)Matrix multiply(Matrix b):返回当前矩阵与矩阵b相乘后的矩阵。(7)Matrix transpose():返回当前矩阵的转置矩阵;(8)print():以行和列的形式打印出当前矩阵。 package shiyaner8; public class Matrix { double array[][]; private int height;//行数 private int width;//列数 Matrix(int height,int width){ this.height = height; this.width = width; array = new double[height][width]; } public void set(int row,int vol,double value){ array[row][vol] = value; } public double get(int row,int vol){ return array[row][vol]; } public int height(){ return height; } public int width(){ return width; } public Matrix add(Matrix b){ if(b.height()==height && b.width()==width){ for(int i=0;i for(int j=0;j array[i][j] = array[i][j] + b.get(i, j); } } } return this; } public Matrix multiply(Matrix b){ Matrix c = new Matrix(b.width,this.height); if(this.height == b.width){ int temp = 0; for(int i=0;i for(int j=0;j for(int k=0;k temp += this.get(i, k)*b.get(k, j); c.set(i, j, temp); } temp = 0; } } } return c; } public void print(){ for(int i=0;i for(int j=0;j System.out.print(this.get(i, j) + "\t"); } System.out.println(); } } public void Matrixtranspose(){ double [][] b=new double[height][width]; for(int i=0;i for (int j=0;j b[j][i]=array[i][j]; System.out.print(b[j][i]+"\t"); if(i%(width-1)==0&&i!=0) System.out.println(); } } } } **************************************************** package shiyaner8; public class main { public static void main(String[] args) { Matrix ma = new Matrix(3,3); Matrix mb = new Matrix(3,3); Matrix mc = new Matrix(2,4); Matrix md = new Matrix(4,2); for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ ma.set(i,j,1.0); } } for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ mb.set(i,j,2.0); } } for(int i=0;i<2;i++){ for(int j=0;j<4;j++){ mc.set(i, j,(i+1)*(j+1)); } } for(int i=0;i<4;i++){ for(int j=0;j<2;j++){ md.set(i, j, i+j+1); } } System.out.println("矩阵A:"); ma.print(); System.out.println("矩阵A的行数:"+ma.height()); System.out.println("矩阵A的列数:"+ma.width()); System.out.println("矩阵A的转置矩阵:"); ma.Matrixtranspose(); System.out.println("---------------"); System.out.println("矩阵B:"); mb.print(); System.out.println("矩阵B的行数:"+mb.height()); System.out.println("矩阵B的列数:"+mb.width()); //测试矩阵的加法函数 System.out.println("---------------"); System.out.println("矩阵A、B相加:"); ma.add(mb); ma.print(); System.out.println("---------------"); System.out.println("矩阵C:"); mc.print(); System.out.println("矩阵C的转置矩阵:"); mc.Matrixtranspose(); System.out.println("---------------"); System.out.println("矩阵D:"); md.print(); //矩阵乘法 System.out.println("---------------"); System.out.println("矩阵C、D相乘:"); mc.multiply(md).print(); } } 9 9. 利用随机函数产生100个整数给一维数组赋值,然后输入任意一个整数,查找该整数是否在数组中存在,并统计出现次数。 package shiyaner9; import java.util.Scanner; import java.math.*; public class random { public static void main(String[] args) { int []a=new int [100]; int count=0; for (int i=0;i<100;i++){ a[i]=(int)(Math.random()*20+0.5); System.out.print(a[i]+" "); } System.out.println(); System.out.print("请输入一个整数:"); Scanner input=new Scanner(System.in); int x=input.nextInt(); for(int i=0;i<100;i++){ if(x==a[i]) count++; } System.out.println(+x+"出现的次数: "+count+"次"); } } 10.利用随机函数产生36个10-30之间的整数,给一个6*6的矩阵赋值, (1)求最大元素值,指出其在矩阵中的所有出现位置。 (2)求该矩阵的转置矩阵。 package shiyaner10; import java.util.Random; public class suijijuzhen { public static void main(String[] args) { int[][] a = new int[6][6]; int[][] b = new int[6][6]; int i, j, maxI = 0, maxJ = 0; int max; Random rand = new Random(); for(i=0; i for(j=0; j a[i][j] = rand.nextInt(30); if(a[i][j] < 10){ a[i][j] += 10; } } } System.out.println("初始矩阵:"); for(i=0; i for(j=0; j System.out.print(a[i][j] + " "); } System.out.println(); } max = a[0][0];