只供参考,抄袭可耻,复制不一定可以使用
实验6:继承与多态
1.定义一个Employee雇员类,含:姓名、年龄、工资等字段;继承Employee类设计Manager经理类,增加:管理人员数等字段;经理也是一个雇员,每一个员工有自己的经理。(修改已有的程序,即把所有属性都改成private时,相应地方如何修改)
package Word;
class Employee {
private String name;// 为了代码简单一些暂时不封装
private int age;
private float salary;
private Manager mgr = null;// 表示一个雇员有一个领导
public void setManager(Manager mgr){
this.mgr = mgr;
}
public Manager getManager(){
return this.mgr;
}
public Employee(String name, int age, float salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
public String say() {
return "姓名:" + this.name + ",年龄:" + this.age + ",薪水:" + this.salary;
}
};
class Manager extends Employee {
private int number;// 管理人员数
public Manager(String name, int age, float salary, int number) {
super(name, age, salary);
this.number = number;
}
public String say() {
return super.say() + ",管理人员数:" + this.number;
}
}
public class Work {
public static void main(String args[]) {
Employee e = new Employee("李四", 20, 1500);
Manager m = new Manager("张三", 30, 3000, 5);
e.setManager(m);// m是e的领导
System.out.println("雇员信息:" + e.say());
if (e.getManager() != null)// 为了防止mgr的内容为空,如果为空则肯定出现NullPointerException
System.out.println("经理信息:" + e.getManager().say());
}
}
实验5:类与对象
1.编写一个代表三角形的类。其中,三条边为三角型的属性,并封装有求三角形的面积和周长的方法。并设计构造方法和toString() 方法。分别针对三条边为3,4,5和7,8,9的两个三角形进行测试。
package Word;
public class Work {
public static void main(String[] arg) {
// Triangle obj = new Triangle(3,4,5);
Triangle obj = new Triangle(7, 8, 9);
obj.getArea();
obj.getPerimeter();
System.out.print(obj.toString());
}
}
class Triangle {
private int a, b, c;
public Triangle(int d1, int d2, int d3) {
a = d1;
b = d2;
c = d3;
}
public void getArea() {
int p = (a + b + c) / 2;
double S = Math.sqrt((p * (p - a) * (p - b) * (p - c)));
System.out.println(S);
}
public void getPerimeter() {
int data;
data = a + b + c;
System.out.println(data);
}
public String toString() {
return "a:" + a + " b:" + b + " c:" + c;
}
}
2.编写一个学生类student,属性有:学号、姓名、年龄,将所有学生存储在一个数组中,自拟数据,用数组的初始化方法给数组赋值。并实现如下操作:
① 将所有学生年龄增加一岁;
② 按数组中顺序显示所有学生信息;
③ 查找显示所有年龄大于20岁的学生名单。
public class Work {
public static void main(String[] arg) {
Student obj = new Student();
obj.ageUp();
obj.show();
obj.show20();
}
}
class Student {
private String id, name, age;
private int r = 4;
private String list[][] = { { "001", "学生1", "18" }, { "002", "学生2", "19" },
{ "003", "学生3", "20" }, { "004", "学生4", "21" }, };
public void ageUp() {
for (int i = 0; i < r; i++) {
list[i][2] = Integer.parseInt(list[i][2]) + 1 + "";
System.out.println(list[i][2]);
}
}
public void show() {
for (int i = 0; i < r; i++) {
System.out.printf("学号:%s、姓名:%s、年龄:%s \r", list[i][0], list[i][1],
list[i][2]);
}
}
public void show20() {
for (int i = 0; i < r; i++) {
if(Integer.parseInt(list[i][2])>20){
System.out.printf("学号:%s、姓名:%s、年龄:%s \r", list[i][0], list[i][1],
list[i][2]);
}
}
}
}
实验4
1、 在一个元素值100以内,含20元素的一维整形数组元素中,求最大值、求平均、统计其中素数个数。
package Word;
public class Work {
public static void print(Object a){
System.out.println(a);
}
private static void tm4_1() {
//定义数组
int len = 20;
int list[] = new int[len];
//赋初始值
System.out.println("随机产生的20个元素为:");
for(int i=0;i<len;i++){
list[i] = (int) (Math.random()*101);
System.out.print(list[i]+",");
}
System.ou t.println();
//求最大值
int max = getMax(list);
System.out.println("最大值为:"+max);
//求平均
double average = getAverage(list);
System.out.printf("平均值为:%.2f \n",average);
//素数个数
int number=getSuShu(list);
System.out.printf("素数的个数为:%d",number);
}
private static int getSuShu(int [] list){
int data=0;
for(int i=0;i<list.length;i++){
boolean f=true;
int listData = list[i];
for(int j=2;j<listData;j++){
if(listData % j == 0){
f = false;
break;
}
}
if(f)data++;
}
return data;
}
private static int getMax(int [] list){
int data = 0;
for(int i=0;i<list.length;i++){
if(data<list[i])data=list[i];
}
return data;
}
private static double getAverage(int [] list){
double data;
double sum=0;
for(int i=0;i<list.length;i++){
sum+=list[i];
}
data = sum / list.length;
return data;
}
public static void main(String[] arge){
tm4_1();
}
}
2、编写根据三条边求三角形面积的方法。利用该方法求以下两个三角形面积。
p=(a+b+c)/2,S=√[p(p-a)(p-b)(p-c)]
(1)三条边分别为:3,4,5
(2)三条边分别为:5.3, 6.2, 8
package Word;
public class Work {
public static void print(Object a) {
System.out.println(a);
}
private static void tm4_2() {
// 使用方法的重载 根据数据类型的不同自动调用对应函数
int a = getTriangleArea(3, 4, 5);
double b = getTriangleArea(5.3, 6.2, 8);
System.out.printf("三条边分别为:3,4,5 面积为:%d \n"
+ " 三条边分别为:5.3, 6.2, 8 面积为:%f", a, b);
}
private static int getTriangleArea(int a, int b, int c) {
int p = (a + b + c) / 2;
int S = (int) Math.sqrt((p * (p - a) * (p - b) * (p - c)));
return S;
}
private static double getTriangleArea(double a, double b, double c) {
double p = (a + b + c) / 2;
double S = Math.sqrt((p * (p - a) * (p - b) * (p - c)));
return S;
}
public static void main(String[] arge) {
tm4_2();
}
}
3、从命令行参数获取两个整数,找出两个整数之间的所有素数,每行输出3个数。
public static void main(String[] arg) {
int a = Integer.parseInt(arg[0]);
int b = Integer.parseInt(arg[1]);
tm4_3(a, b);
}
private static void tm4_3(int a,int b){
int x;
if(a>b){
x = a;
a = b;
b = x;
}
int sum=0;
for(int i=a;i<b;i++){
boolean f=true;
for(int j=2;j<i;j++){
if(i % j == 0){
f = false;
break;
}
}
if(f){
sum++;
System.out.print(i+ " ");
if(sum % 3==0){
System.out.println();
}
}
}
}
实验3:流程控制语句
1、 用if语句实现主菜单的选择执行(选择)
private static void tm3_1() {
Scanner IO = new Scanner(System.in);
int Students = 0;
System.out.println("*******************");
System.out.println("1.增加一个学生");
System.out.println("2.查看有多少个学生");
System.out.println("3.退出程序");
System.out.println("请输入您的选择(1--3)");
System.out.println("*******************");
while(true){
int NumBer = IO.nextInt();
if(NumBer == 1){
Students++;
System.out.println("增加一个学生成功");
}else if(NumBer == 2){
System.out.printf("一共有%d个学生 \n",Students);
}else if(NumBer == 3){
System.out.println("退出成功");
break;
}
}
}
2、 用switch语句实现主菜单的选择执行(选择)
private static void tm3_2() {
Scanner IO = new Scanner(System.in);
System.out.println("*******************");
System.out.println("1.增加一个学生");
System.out.println("2.查看有多少个学生");
System.out.println("3.退出程序");
System.out.println("请输入您的选择(1--3)");
System.out.println("*******************");
int Students = 0;
GOEXIT:
while(true){
int NumBer = IO.nextInt();
switch(NumBer){
case 1:
Students++;
System.out.println("增加一个学生成功");
break;
case 2:
System.out.printf("一共有 %d 个学生 \r",Students);
break;
case 3:
System.out.print("退出成功");
break GOEXIT;
}
}
}
3、 从键盘输入a,b,c三个实数,计算方程ax2+bx+c=0的根。(选择)
private static void tm3_3_2() {
// 从键盘输入a,b,c三个实数,计算方程ax2+bx+c=0的根。(选择)
System.out.println("请输入a,b,c");
Scanner IO = new Scanner(System.in);
int a = IO.nextInt();
int b = IO.nextInt();
int c = IO.nextInt();
double der_ta = b*b-4*a*c;
if(der_ta<0){
System.out.println("无解");
}
else if(der_ta>0){
System.out.println("2个根分别为:");
System.out.println(-b+Math.sqrt(der_ta));
System.out.println(-b-Math.sqrt(der_ta));
}else if(der_ta==0){
System.out.println("1个根为:");
System.out.println(-b+Math.sqrt(der_ta));
}
}
private static void tm3_3_1() {
// 从键盘输入a,b,c三个实数,计算方程ax2+bx+c=0的根。(选择)
System.out.println("请输入a,b,c");
Scanner IO = new Scanner(System.in);
int a = IO.nextInt();
int b = IO.nextInt();
int c = IO.nextInt();
double der_ta = b*b-4*a*c;
switch(der_ta<0?1:der_ta>0?2:3){
case 1:
System.out.println("无解");
break;
case 2:
System.out.println("2个根分别为:");
System.out.println(-b+Math.sqrt(der_ta));
System.out.println(-b-Math.sqrt(der_ta));
break;
case 3:
System.out.println("1个根为:");
System.out.println(-b+Math.sqrt(der_ta));
break;
}
}
4、 输出10—100之间的全部素数。所谓素数是指除了1和它本身之外,不能被任何正数整除的数。计算n至少多大时,以下不等式成立。(循环)
private static void tm3_4_3(){
int i = 10;
do{
int j = 2;
boolean f = true;
do{
// System.out.println(j);
if((i%j)==0){
f = false;
break;
}
j++;
}while(j<i);
if(f){
System.out.println(i);
}
i++;
}while(i<=100);
}
private static void tm3_4_2(){
int i = 10;
while(i<=100){
int j = 2;
boolean f = true;
while(j<i){
if((i%j)==0){
f = false;
break;
}
j++;
}
if(f){
System.out.println(i);
}
i++;
}
}
private static void tm3_4_1(){
/**
* 输出10—100之间的全部素数。
* 所谓素数是指除了1和它本身之外,
* 不能被任何正数整除的数。
* 计算n至少多大时,以下不等式成立。(循环)
*/
for(int i=10;i<=100;i++){
boolean f = true;
for(int j = 2;j<i;j++){
if((i % j) == 0){
f = false;
break;
}
}
if(f == true){
System.out.println(i);
}
}
}
5、输入一个长整数,统计该数的数字系列中大于等于4的数字个数(循环)
private static void tm3_5_2(){
/**
* 输入一个长整数,
* 统计该数的数字
* 系列中大于等于4的数字个数(循环)
*/
Scanner IO = new Scanner(System.in);
System.out.print("请输入一个数字:");
long NumBer = IO.nextLong();
int sum = 0;
do{
if(NumBer % 10 >=4){
sum++;
}
NumBer /= 10;
}while(NumBer*10 / 10 > 0);
System.out.printf("大于等于4的数字个数为:%d个",sum);
}
private static void tm3_5_1(){
/**
* 输入一个长整数,
* 统计该数的数字
* 系列中大于等于4的数字个数(循环)
*/
Scanner IO = new Scanner(System.in);
System.out.prin("请输入一个数字:");
long NumBer = IO.nextLong();
int sum = 0;
while(NumBer*10 / 10 > 0){
if(NumBer % 10 >=4){
sum++;
}
NumBer /= 10;
}
System.out.printf("大于等于4的数字个数为:%d个",sum);
}
private static void tm3_5_3(){
/**
* 输入一个长整数,
* 统计该数的数字
* 系列中大于等于4的数字个数(循环)
*/
Scanner IO = new Scanner(System.in);
System.out.print("请输入一个数字:");
long NumBer = IO.nextLong();
int sum = 0;
for(;NumBer*10 / 10 > 0;NumBer /= 10){
//什么时候执行NumBer /= 10
if(NumBer % 10 >=4){
sum++;
}
}
System.out.printf("大于等于4的数字个数为:%d个",sum);
}
6、 编程实现对输入的字符进行加密,直到按回车结束。加密的规律是:每个字母用其后第4个字母代替,26个字母循环排列,其他字符不变。例如:China!加密为****Glmre!****。(循环)
private static void tm3_6_3(){
/*
* 编程实现对输入的字符进行加密,直到按回车结束。
* 加密的规律是:每个字母用其后第4个字母代替,
* 26个字母循环排列,其他字符不变。
* 例如:China!加密为Glmre!。(循环)
*/
Scanner IO = new Scanner(System.in);
System.out.println("请输入您的内容:");
String text =IO.next();//"China!";
int len = text.length();
int i=1;
do{
String head = text.substring(0,i-1);
String middle = text.substring(i-1,i);
String tail = text.substring(i,len);
char newMiddle = middle.charAt(0);
if(newMiddle<='z'&&newMiddle>='a'||newMiddle<='Z'&&newMiddle>='A'){
newMiddle =(char)(newMiddle+4);
}
text = head + newMiddle +tail;
i++;
}while(i<=len);
System.out.print(text);
}
private static void tm3_6_2(){
/*
* 编程实现对输入的字符进行加密,直到按回车结束。
* 加密的规律是:每个字母用其后第4个字母代替,
* 26个字母循环排列,其他字符不变。
* 例如:China!加密为Glmre!。(循环)
*/
Scanner IO = new Scanner(System.in);
System.out.println("请输入您的内容:");
String text =IO.next();//"China!";
int len = text.length();
int i=1;
while(i<=len){
String head = text.substring(0,i-1);
String middle = text.substring(i-1,i);
String tail = text.substring(i,len);
char newMiddle = middle.charAt(0);
if(newMiddle<='z'&&newMiddle>='a'||newMiddle<='Z'&&newMiddle>='A'){
newMiddle =(char)(newMiddle+4);
}
text = head + newMiddle +tail;
i++;
}
System.out.print(text);
}
private static void tm3_6_1(){
/*
* 编程实现对输入的字符进行加密,直到按回车结束。
* 加密的规律是:每个字母用其后第4个字母代替,
* 26个字母循环排列,其他字符不变。
* 例如:China!加密为Glmre!。(循环)
*/
Scanner IO = new Scanner(System.in);
System.out.println("请输入您的内容:");
String text =IO.next();//"China!";
int len = text.length();
for(int i = 1;i<=len;i++){
String head = text.substring(0,i-1);
String middle = text.substring(i-1,i);
String tail = text.substring(i,len);
char newMiddle = middle.charAt(0);
if(newMiddle<='z'&&newMiddle>='a'||newMiddle<='Z'&&newMiddle>='A'){
newMiddle =(char)(newMiddle+4);
}
text = head + newMiddle +tail;
}
System.out.print(text);
}
7、(1+1/2+1/3+……+1/n)>6(循环,可选)
private static void tm3_7_3(){
/**
* (1+1/2+1/3+……+1/n)>6(循环,可选)
*/
System.out.println("(1+1/2+1/3+……+1/n)>6");
double n = 0.0;
for(double x = 1.0;x<=6;x += 1/(n+1)){
n++;
}
System.out.printf("当n=%d时条件成立",(int)n+1);
}
private static void tm3_7_2(){
/**
* (1+1/2+1/3+……+1/n)>6(循环,可选)
*/
System.out.println("(1+1/2+1/3+……+1/n)>6");
double n = 1.0;
double x = 1.0;
while(x<=6){
x += 1/(n+1);
n++;
};
System.out.printf("当n=%d时条件成立",(int)n);
}
private static void tm3_7_1(){
/**
* (1+1/2+1/3+……+1/n)>6(循环,可选)
*/
System.out.println("(1+1/2+1/3+……+1/n)>6");
double n = 1.0;
double x = 1.0;
do{
x += 1/(n+1);
n++;
}while(x<=6);
System.out.printf("当n=%d时条件成立",(int)n);
}
实验2:数据类型与表达式
1、输入园的半径,求周长和面积(用控制台和对话框****2****种方法)
2、用产生随机数的方法产生两个1位整数,求其和与积
3、将用户输入的大写字母转换成小写字母。
答案
private static void tm2_3(){
// 将用户输入的大写字母转换成小写字母。
Scanner IO = new Scanner(System.in);
String text = "AN11ssCI";//IO.next();
int len = text.length();
String NewText = "";
for(int i = 0;i<len;i++){
String MiddleText = text.substring(i,i+1);
char NewChar = MiddleText.charAt(0);
if(NewChar<='Z'&&NewChar>='A'){
NewText += (char)(NewChar+32);
}else{
NewText += NewChar;
}
}
System.out.println(NewText);
}
private static void tm2_2(){
/*
* 用产生随机数的方法产生两个1位整数,求其和与积.
*/
int a =(int) (Math.random()*10);
int b =(int) (Math.random()*10);
System.out.printf("a:%d,b:%d,和:%d,积:%d",a,b,a+b,a*b);
}
网友评论