java2 实用教程第五版 第四章课本案例及课后题

第五天
java2 实用教程第五版 耿祥义 张跃平编著
第四章代码
代码1:课本P80

package java课本项目;

import java.util.*;

public class Example4_11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int [] a= {12,34,5,23,45,6,76,90,69,123,59};
		Arrays.sort(a);
		System.out.println(Arrays.toString(a));
		System.out.println("请输入整数,判断该整数是否在数组中:");
		int number = scanner.nextInt();
		int index = Arrays.binarySearch(a, number);
		if (index>=0)
			System.out.println(number+"和数组中索引为"+index+"的元素值相同");
		else
			System.out.println(number+"不与数组中的任何元素值都不相同");
		scanner.close();
	}

}
运行结果:
/******************************************************
[5, 6, 12, 23, 34, 45, 59, 69, 76, 90, 123]
请输入整数,判断该整数是否在数组中:
90
90和数组中索引为9的元素值相同
*******************************************************/

代码2:课本P81

package java课本项目;

/*    注:方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即:参数的个数不同,
           或参数的个数相同,但参数列表中对应的某个参数的类型不同     如果两个方法的名字相同,
           即使返回的类型不同,也必须保证传入的参数不同   */

class People {
	float hello(int a,int b) {			//方法名相同,传入不同类型的参数
		return a+b;
	}
	
	float hello(long a,int b) {
		return a-b;
	}
	
	double hello(double a,int b) {
		return a*b;
	}
}



public class Example4_12 {
	public static void main(String args[]) {
		People tom = new People();
		System.out.println(tom.hello(10, 20));
		System.out.println(tom.hello(10L, 20));
		System.out.println(tom.hello(10.0, 20));
	}
}
运行结果:
/**********************************
30.0
-10.0
200.0
***********************************/

代码3:课本P82

package java课本项目;

class Circlee {
	double radius,area;
	void setRadius(double r) {
		radius = r;
	}
	
	double getArea() {
		area = 3.14*radius*radius;
		return area;
	}
}


class Tixing {
	double above,bottom,height;
	Tixing (double a,double b,double h) {
		above = a;
		bottom = b;
		height = h;
	}
	
	double getArea() {
		return (above+bottom)*height/2;
	}
}


class Studentt{
	double computerArea(Circlee c) {		//重载方法1
		double area = c.getArea();
		return area;
	}
	
	double computerArea(Tixing t) {		//重载方法2
		double area = t.getArea();
		return area;

	}
}
	

public class Example4_13 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Circlee circle=new Circlee();
		circle.setRadius(196.87);
		Tixing lader = new Tixing(3,21,9);
		Studentt zhang = new Studentt();
		System.out.println("zahng计算圆的面积:");
		double result = zhang.computerArea(circle);
		System.out.println(result);
		System.out.println("zhang计算梯形的面积:");
		result = zhang.computerArea(lader);
		System.out.println(result);
	}

}
运行结果:
/****************************************
zahng计算圆的面积:
121699.48226600002
zhang计算梯形的面积:
108.0
*****************************************/

代码4:课本P84

 package java课本项目;

//this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象 
 
public class Example4_14 {
	int leg,hand;
	String name;
	 Example4_14(String s) {
		name = s;
		this.init();		//可以省略this,即将“this.init()”写成“init()”
	}
	 
	 void init() {
		 leg = 2;
		 hand = 2;
		 System.out.println(name+"有"+hand+"只手"+","+leg+"条腿");
	 }
	 
	 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Example4_14 boshi=new Example4_14("布什");	//创建boshi时,构造方法中this就是对象boshi
	}

}
运行结果:
/**********************************
布什有2只手,2条腿
**********************************/

代码5:课本P87

package java课本项目;



public class Example4_15 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Sstudent  stu = new Sstudent(10001);	//用Sstudent类中的有参构造方法,实例化stu对象,必须得传入参数
		stu.speak();
		System.out.println("主类的包名是:java课本项目");
	}

}


class Sstudent {
	int number;
	Sstudent(int n){		//有参构造方法
		number = n;
	}
	
	void speak() {			//实例方法
		System.out.println("Sstudent类的包名是java课本项目,我的学号是:"+number);
	}
}
运行结果:
/*************************************************
Sstudent类的包名是java课本项目,我的学号是:10001
主类的包名是:java课本项目
**************************************************/

代码6:课本P89

package java课本项目;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Example4_16 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Date date = new Date();		//调用Date类中的午餐构造方法,实例化date对象
		SimpleDateFormat fomtter=new  SimpleDateFormat("yyyy-MM-dd HH:mm:ss");	//调用java.text.SimpleDateFormat对时间进行格式化
		System.out.println("本地机器的时间:"+date.toString());	//date对象调用Date类中的toString方法,打印当地时间
		System.out.println("格式化后的本地时间:"+fomtter.format(date));
	}

}


/*注意:(1)java.lang包是java语言的核心类库,它包含了运行java程序必不可少的系统类
			系统自动为程序引入java.lang包中的类(如System类,Math类),因此不需要再使用import语句引入该类中的包
		(2)如果使用了import语句引入了整个包中的类,那么可能会增加编译时间,但绝对不会影响程序运行的性能,因为当程序执行时,
			只是将程序真正使用的字节码文件加载到内存。
		 (3)如果没有使用import语句引入包中的类,也可以直接使用包名使用该类,例如:java.util.Date date = new java.util.Date();
*/
运行结果:
/***********************************************
本地机器的时间:Mon May 13 12:16:23 CST 2019
格式化后的本地时间:2019-05-13 12:16:23
***********************************************/

代码7:课本P90

package java课本项目;

public class Example4_17 {
	double sideA,sideB,sideC;	//定义Triangle类,为了不引起引用错误,此处我修改类名为Example4_17
	public double getArea() {
		double p=(sideA+sideB+sideC)/2;
		double area = Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
		return area;
	} 
	
	public void setSides(double a,double b,double c) {
		sideA=a;
		sideB=b;
		sideC=c;
	}

}

代码8:课本P91

package java课本项目;
import java课本项目.Example4_17;
public class Example4_18 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Example4_17 tri=new Example4_17();
		tri.setSides(30, 40, 50);
		System.out.println(tri.getArea());

	}

}
运行结果:
/****************
600.0
****************/

代码9:课本P92

package java课本项目;

class Studeent{
	private int age;
	public void setAge(int age) {
		if(age>7 && age<28)
			this.age = age;
	}
	
	public int getAge() {
		return age;
	}
}


public class Example4_19 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Studeent zhang=new Studeent(); 
		Studeent geng=new Studeent();
		zhang.setAge(23);
		System.out.println("zhang的年龄:"+zhang.getAge());
		geng.setAge(25);
		//zhang.age =23或geng.age=25都是非法的,因为zhang和geng都已经不在Studentt类中
		System.out.println("geng的年龄:"+geng.getAge());
	}

}
运行结果:
/*************************
zhang的年龄:23
geng的年龄:25
**************************/

代码10:课本P96

package java课本项目;

public class Example4_20 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char [] a = {'a','b','c','D','E','F'};
		for (int i=0;i
运行结果:
/***********************
A B C d e f
************************/

代码11:课本P96

package java课本项目;

class Stuudent{
	int number;
}

public class Example4_21 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Stuudent stu[] = new Stuudent[10];	//创建对象数组stu
		for(int i=0;i
运行结果:
/********************************************
101 102 103 104 105 106 107 108 109 110 
*********************************************/

代码12:课本P100

package java课本项目;

public class Rational {
	int numerator=1;	//分子
	int denominator=1;	//分母
	void setNumberator(int a) {
		int c=f (Math.abs(a),denominator);
		numerator=a/c;
		denominator=denominator/c;
		if(numerator<0 && denominator<0) {
			numerator=-numerator;
			denominator=-denominator;
		}
	}
	
	void setDenminator(int b) {
		int c=f(numerator,Math.abs(b));
		numerator=numerator/c;
		denominator=b/c;
		if(numerator<0 && denominator<0) {
			numerator=-numerator;
			denominator=-denominator;
		}
	}
	
	int getNumerator() {
		return numerator;
	}
	
	int getDenominator(){
		return denominator;
	}
	
	int f(int a,int b) {
		if (a==0)
			return 1;
		if (a

代码13:课本P102

package java课本项目;

public class Example4_23 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Rational r1=new Rational();
		r1.setNumberator(1);
		r1.setDenminator(5);
		Rational r2=new Rational();
		r2.setNumberator(3);
		r2.setDenminator(2);
		Rational result=r1.add(r2);
		int a=result.getNumerator();
		int b=result.getDenominator();
		System.out.println("1/5-3/2="+a+"/"+b);
		result=r1.sub(r2);
		a=result.getNumerator();
		b=result.getDenominator();
		System.out.println("1/5*3/2="+a+"/"+b);
		result=r1.muti(r2);
		a=result.getNumerator();
		b=result.getDenominator();
		System.out.println("1/5/3/2="+a+"/"+b);
		int n=10,k=1;
		System.out.println("计算2/1+3/2+5/3+8/5+13/8+……+的前"+n+"项和。");
		Rational sum=new Rational();
		sum.setNumberator(0);
		Rational item=new Rational();
		item.setNumberator(2);
		item.setDenminator(1);
		while(k<=n) {
			sum=sum.add(item);
			k++;
			int fenzi=item.getNumerator();
			int fenmu=item.getDenominator();
			item.setNumberator(fenzi+fenmu);
			item.setDenminator(fenzi);
		}
		a=sum.getNumerator();
		b=sum.getDenominator();
		System.out.println("用分数表示:");
		System.out.println(a+"/"+b);
		double doubleResult=(a*1.0)/b;
		System.out.println("用小数表示:");
		System.out.println(doubleResult);
		
	}

}
运行结果:
/************************************************
1/5-3/2=17/10
1/5*3/2=-13/10
1/5/3/2=3/10
计算2/1+3/2+5/3+8/5+13/8+……+的前10项和。
用分数表示:
998361233/60580520
用小数表示:
16.479905306194137
************************************************/

代码14:课本P103

package java课本项目;
import java.util.*;

class InputScore{
	DelScore del;
	InputScore(DelScore del){
		this.del=del;
	}
	
	public void inputScore() {
		System.out.println("请输入评委数:");
		Scanner read=new Scanner(System.in);
		int count = read.nextInt();
		System.out.println("请输入各个评委的分数:");
		double [] a =new double[count];
		for(int i=0;i
运行结果:
/***********************************************
请输入评委数:
8
请输入各个评委的分数:
88
90
79
63
82
90
72
83
去掉一个最高分:90.0,去掉一个最低分:63.0。
选手的最后的得分为:82.33333333333333
*********************************************/

代码15:课本P108页3(1)

package java课本项目;

class Fish {			//定义Fish类,初始化weight为1
	int weight = 1;
}

class Lake {			//定义Lake类,Lake类中包括一个Fish对象和两个方法
	Fish fish;
	void setfish(Fish s) {		//修改器
		fish = s;
	}
	
	void foodfish(int n) {		//修改fish的weight属性
		fish.weight = fish.weight + n;
	}
}

public class E {

	public static void main(String[] args) {
		Fish redFish = new Fish();			//实例化Fish对象,名为redfish
		System.out.println(redFish.weight);	//打印fish的初始化weight值
		Lake lake = new Lake();				//实例化Lake对象,名为lake
		lake.setfish(redFish);				//调用Lake类中修改器,将上面Fish实例传入
		lake.foodfish(120);					//调用Lake中方法修改weight属性
		System.out.println(redFish.weight);//打印fish的weight值
		System.out.println(lake.fish.weight);
	}

}
运行结果:
/***************
1
121
121
*****************/

代码16:课本P108页3(2)

package java课本项目;

class B {
	int x =100,y = 200;
	
	public void setX(int x) {
		x=x;	//此语句没有起任何作用
	}
	public void setY(int y) {
		this.y = y;
	}
	public int getXYSum() {
		return x+y;
	}
}

public class A {
	public static void main(String[] args) {
		B b = new B();
		b.setX(-100);		//由于setX方法没有起作用,所以x的值还是100,并没有将x改为-100
		b.setY(-200);
		System.out.println("sum="+b.getXYSum());
		
		
		
	}
}
运行结果:
/***********
sum=-100
*************/

代码17:课本P108页3(3)

package java课本项目;

class C {
	int n;
	static int sum=0;
	void setN(int n) {
		this.n = n;
	}
	
	int getSum() {
		for(int i=1;i<=n;i++) 
			sum+=i;
		return sum;
	}
}


public class D {
	public static void main(String[] args) {
		C c1 = new C(), c2 = new C();
		c1.setN(3);
		c2.setN(5);
		int s1=c1.getSum();
		int s2=c2.getSum();
		System.out.println(s1+s2);
		
	}

}
运行结果:
/*
 注:sum是类变量,算完s1后sum的值变成6了,在b2对象还没有被创建出来之前,
 	sum就已经存在于内存中的静态区域中,当b2对象被创建出来时,
 	b2调用getsum方法的时候sum的初始值就是6,而不是0了
	这正是因为sum变量是静态变量而不是成员变量的原因才导致了结果是27不是21
 */

/*****************
27
******************/

代码18:课本P108页3(4)

package java课本项目;

class F {
	double f(int x,double y){
		return x+y;
	}

	int f(int x,int y) {
		return x*y;
	}
}

public class G {
	public static void main(String[] args) {
		F a =new F();
		System.out.println(a.f(10, 10));
		System.out.println(a.f(10, 10.0));
	}
}
运行结果:
/*************
100
20.0
****************/

代码19:课本P108页3(5)

package java课本项目;

public class H {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		f(1,2);
		f(-1,-2,-3,-4);	//给参数传值时,参数的个数很灵活
		f(9,7,6);
	}
	public static void f(int ... x) {	//x是可变参数代表,代表若干个int型参数
		for (int i=0;i
运行结果:
/****************
1
2
-1
-2
-3
-4
9
7
6
*******************/

代码20:课本P108页3(6)

package java课本项目;

public class QQ {
	static {	//static block
		System.out.println("This is a ststic block.");
	}
}
	class RR{
		static {	//static block
			System.out.println("//This static block will be executed first.");
		}
	public static void main(String[] args) {
		QQ a = new QQ();	//The byte code of the class QQ is loaded
		System.out.println("Example for static block.");
	}
}
运行结果:
/*******************************************************
//This static block will be executed first.
This is a ststic block.
Example for static block.	
 ******************************************************/

你可能感兴趣的:(java代码)