Java基础与面向对象实用小程序4.docx
- 文档编号:30337965
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:17
- 大小:19.35KB
Java基础与面向对象实用小程序4.docx
《Java基础与面向对象实用小程序4.docx》由会员分享,可在线阅读,更多相关《Java基础与面向对象实用小程序4.docx(17页珍藏版)》请在冰豆网上搜索。
Java基础与面向对象实用小程序4
例4-1成员方法、构造方法的定义、重载和使用,数组做方法参数的使用。
本例的Book类有两个重载构造方法,其中一个构造方法的参数使用了字符串类型数组。
importjava.util.*;
classBook{
Stringname;
Stringauthor;
Stringpublishing;
doubleprice;
Stringcomment;
Book(Stringn,Stringaut,Stringpub,doublep,Stringcom){
name=n;
author=aut;
publishing=pub;
price=p;
comment=com;
}
Book(Stringstr[]){
name=str[0];
author=str[1];
publishing=str[2];
price=Double.parseDouble(str[3]);
comment=str[4];
}
voidshowInfo(){
System.out.println(publishing+"出版的《"+name+"》是"+author+"写的");
System.out.println("读者对这本书的评价是:
"+comment);
}
}
publicclassBookTest{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
Bookb1=newBook("明朝那些事儿2","当年明月","中国友谊出版公司",
24.8,"相当地好看!
");
Strings[]=newString[5];
System.out.print("请输入书名:
");
s[0]=reader.next();
System.out.print("请输入作者姓名:
");
s[1]=reader.next();
System.out.print("请输入出版社:
");
s[2]=reader.next();
System.out.print("请输入价格:
");
s[3]=reader.next();
System.out.print("请输入评价:
");
s[4]=reader.next();
Bookb2=newBook(s);
System.out.println();
b1.showInfo();
b2.showInfo();
}
}
例4-2定义比较两个数的大小并输出较大值的方法,调用该方法测试其功能。
importjava.util.*;
publicclassApp{
publicstaticvoidmain(String[]s){
Scannerreader=newScanner(System.in);
System.out.println(“请输入两个整数”);
intx=reader.nextInt();
inty=reader.nextInt();
max(x,y);//将读入的两个整数传递给max()方法进行大小比较
max(3,9);//将3和9传递给max()方法进行大小比较
}
publicstaticvoidmax(inta,intb){
intm;
if(a>b)
m=a;
else
m=b;
System.out.println(a+”和”+b+“的较大值是”+m);
}
}
例4-3带返回值的方法的定义和调用
publicclassApp2{
publicstaticintmax(intx,inty){
if(x>=y)
returnx;//如果x大,则返回x的值
else
returny;//如果y大,则返回y的值
}
publicstaticvoidmain(String[]args){
intnum=10,m;
m=max(num,20);//调用max方法得到10和20的较大值并赋值给m
System.out.println(“最大值是”+m);
}
}
例4-4带返回值的求整数幂方法的定义和调用
importjava.util.*;
classReturnDemo{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
System.out.println("请输入一个整数");
intm=reader.nextInt();
System.out.println("您要计算该数的多少次幂?
");
intn=reader.nextInt();
if(m==0&&n<=0)//若求0的负次数幂则无意义
System.out.println("该计算无意义");
elseif(m==0&&n>0)//0的正数次幂是0
System.out.println("0的"+n+"次幂是0");
else//非0数值m的n次幂调用方法求解
System.out.println(m+"的"+n+"次幂是"+power(m,n));
}
staticdoublepower(intm,intn){
doublev=1;
if(n>=0)//m的正数次幂通过循环连续乘法得到
for(inti=1;i<=n;i++)
v=v*m;
else//m的负数次幂通过循环连续除法得到
for(inti=n;i<0;i++)
v=v/m;
returnv;//返回最终结果
}
}
例4-5带参数不带返回值的方法定义及调用--求绝对值
publicclassAbsDemo01{
publicstaticvoidabs(inta){
if(a>0)//根据判断,直接将绝对值进行输出
System.out.println(a);
else
System.out.println(-a);
}
publicstaticvoidmain(String[]s){
intx=-7;
abs(x);//调用abs方法输出x的绝对值
abs(123);//调用abs方法输出123的绝对值
}
}
例4-6带参数和返回值的方法定义及调用--求绝对值
publicclassAbsDemo02{
staticintabs(inta){
if(a>0)//根据判断,返回绝对值结果
returna;
else
return-a;
}
publicstaticvoidmain(String[]s){
intx=-7,y;
y=abs(x);//调用abs方法得到x的绝对值并存至y
System.out.println(y);//输出y,相当于输出x的绝对值
//调用abs方法得到123的绝对值并立即输出
System.out.println(abs(123));
}
}
例4-7参数的单向值传递
publicclassParamTest01{
publicstaticvoidmain(String[]s)
{
inta=2,b=3;
System.out.println("调用方法前:
a="+a+",b="+b);
fun(a,b);
System.out.println("调用方法后:
a="+a+",b="+b);
}
staticvoidfun(intx,inty)
{
x=10;
y=15;
}
}
例4-8数组作实参传递数组地址
编写应用程序,定义方法publicstaticvoidinitArray(intarr[])用来给数组进行初始化赋值,定义方法publicstaticvoidprintArray(intarr[])用来输出数组元素。
在main()方法中创建一个整型数组,调用两个自定义方法对其进行操作。
观察程序运行结果。
importjava.util.Scanner;
publicclassParamTest02{
staticScannerreader=newScanner(System.in);
publicstaticvoidmain(String[]args){
intage[];//声明年龄数组
System.out.println("请输入年龄数组元素的个数:
");
intn=reader.nextInt();
age=newint[n];//创建年龄数组,包含n个数组元素
initArray(age);//调用initArray方法对age数组进行初始化
printArray(age);//调用printArray方法输出age数组元素值
}
publicstaticvoidinitArray(intarr[]){//对数组进行初始化的方法
for(inti=0;i System.out.println("请输入第"+(i+1)+"个元素"); arr[i]=reader.nextInt(); } System.out.println("数据录入结束"); } publicstaticvoidprintArray(intarr[]){//输出数组元素值的方法 System.out.println("数组元素有: "); for(inti=0;i System.out.print(arr[i]+""); System.out.println(); } } 例4-9对象作为方法的参数实例 importjava.util.Scanner; publicclassParamTest03{ staticScannerreader=newScanner(System.in); publicstaticvoidmain(String[]args){ HairhisHair=newHair(); System.out.println("调用方法前"); hisHair.printInfo();//调用printInfo方法输出hisHair对象信息 change(hisHair);//调用change方法修改hisHair对象信息 System.out.println("调用方法后"); hisHair.printInfo();//调用printInfo方法输出hisHair对象信息 } publicstaticvoidchange(Hairh){//修改Hair类的对象信息的方法 System.out.println("请输入新的颜色"); h.setColor(reader.next());//读入字符串,设置为颜色 System.out.println("请输入新的发型"); h.setStyle(reader.next());//读入字符串,设置为发型 } } classHair{ Stringcolor="黑色";//颜色成员,默认值为黑色 Stringstyle="板寸";//发型成员,默认值为板寸 voidprintInfo(){//输出各成员信息 System.out.println("头发的颜色是"+color+"造型是"+style); } voidsetColor(Stringc){//设置颜色 color=c; } voidsetStyle(Strings){//设置发型 style=s; } } 例4-10方法重载举例 定义一个Area类,类的内部重载getArea()方法,分别实现计算正方形面积、计算长方形面积、计算立方体表面积的功能。 在mian方法中创建Area类的对象,分别提示用户输入相应的数据,调用getArea()方法得到结果,显示在屏幕上。 importjava.util.Scanner; publicclassOverLoad1{ publicstaticvoidmain(String[]args){ Scannerreader=newScanner(System.in); Areaarea=newArea(); System.out.println("请输入正方形的边长"); inta=reader.nextInt(); System.out.println("该正方形的面积是"+area.getArea(a)); System.out.println("--------------------------------------"); System.out.println("请输入长方形的长和宽"); intw=reader.nextInt(); intl=reader.nextInt(); System.out.println("该长方形的面积是"+area.getArea(w,l)); System.out.println("--------------------------------------"); System.out.println("请输入立方体的长、宽、高"); intx=reader.nextInt(); inty=reader.nextInt(); intz=reader.nextInt(); System.out.println("该立方体的表面积是"+area.getArea(x,y,z)); } } classArea{ intgetArea(inta){//求正方形面积 returna*a; } intgetArea(intw,intl){//求长方形面积 returnw*l; } intgetArea(intw,intl,intd){//求立方体表面积 returnw*l*2+l*d*2+w*d*2; } } 例4-11构造方法的定义和使用 定义Student类,包含成员变量姓名、年龄、成绩,包含构造方法能够在创建对象的同时对三个属性进行初始化赋值,包含输出各项信息的方法。 在main方法中创建Student类的对象,调用方法显示信息。 importjava.util.*; classStudent{//自定义学生类 Stringname;//姓名 intage;//年龄 doublescore;//成绩 Student(Stringn,inta,doubles){//自定义有参构造方法 name=n; age=a; score=s; } voidprintInfo(){//显示各成员信息 System.out.println(name+"今年"+age+"岁,期末考了"+score+"分"); } } publicclassStudentTest{ publicstaticvoidmain(String[]args){ Scannerreader=newScanner(System.in); Studentstu1=newStudent("小明",18,80);//调用构造方法创建对象stu1 stu1.printInfo();//显示stu1的各项信息 System.out.print("请输入同学的姓名"); Stringn=reader.next(); System.out.print("请输入同学的年龄"); inta=reader.nextInt(); System.out.print("请输入同学的成绩"); doubles=reader.nextDouble(); Studentstu2=newStudent(n,a,s);//调用构造方法创建对象stu2 stu2.printInfo();//显示stu2的各项信息 } } 例4-12重载构造方法的应用 定义立方体Cube类,内部包含四个重载构造方法,能够实现无参、一个参数(正方体)、两个参数(长宽高有两项一样)、三个参数(长宽高各不相同)的情况下均能创建对象并初始化。 在main方法中测试Cube类的使用。 importjava.util.*; classCube{ doublewidth,height,depth;//成员长、宽、高 Cube(){//无参的构造方法,长宽高均默认设置为1 width=height=depth=1; } Cube(doublew){//一个参数的构造方法,长宽高设置为同样的参数值 width=height=depth=w; } Cube(doublew,doubleh){//两个参数的构造方法,宽和高设置为相同值 width=w; height=depth=h; } Cube(doublew,doubleh,doubled){//三个参数的构造方法,长宽高各不相同 width=w; height=h; depth=d; } doublegetVol(){//计算体积并返回结果 returnwidth*height*depth; } } publicclassCubeTest{ publicstaticvoidmain(String[]args){ Cubec1=newCube();//调用无参构造方法创建对象c1 System.out.println("默认正方体c1的体积是"+c1.getVol());//输出c1体积 Cubec2=newCube(5);//调用一个参数的构造方法创建对象c2 System.out.println("正方体c2的体积是"+c2.getVol()); Cubec3=newCube(2,3);//调用两个参数的构造方法创建对象c3 System.out.println("立方体c3的体积是"+c3.getVol()); Cubec4=newCube(3,4,5);//调用三个参数的构造方法创建对象c4 System.out.println("立方体c4的体积是"+c4.getVol()); } } 例4-13Getters、Setters方法应用举例 定义People类,包含姓名和身份证号。 定义相应的getters方法。 定义voidsetName(Stringn)方法能够设置新的姓名,在方法中要对新姓名进行检测(不能多于四个字符)。 定义voidsetID(Stringid)方法能够设置新的ID,方法中要对新id进行检测(位数应该为4)。 importjava.util.*; publicclassPeopleTest{ publicstaticvoidmain(String[]args){ Peoplep=newPeople("华安","9527"); System.out.println("您要改成什么名字? "); Scannerreader=newScanner(System.in); Stringname=reader.next(); if(p.setName(name))//调用setName方法设置姓名,判断是否成功 System.out.println("设置姓名成功,现在的姓名是"+p.getName()); else System.out.println("设置姓名失败"); System.out.println("您要改成什么ID? "); Stringid=reader.next(); if(p.setID(id))//调用setID方法设置身份证号,判断是否成功 System.out.println("设置ID成功,现在的ID是"+p.getID()); else System.out.println("设置ID失败"); } } classPeople{ Stringname;//姓名 StringID;//身份证号 People(Stringn,Stringid){//初始化姓名和身份证号的构造方法 name=n; ID=id; } StringgetName(){//获取姓名 returnname; } StringgetID(){//获取身份证号 returnID; } booleansetName(Stringn){//设置姓名 booleanflag=false; if(n.length()<=4){//如果姓名不多于4个字符,则更新姓名并记录成功 name=n; flag=true; } else//否则提示错误信息 System.out.println("不是合法姓名,不允许进行设置! "); returnflag; } booleansetID(Stringid){//设置身份证号 booleanflag=false; if(id.le
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础 面向 对象 实用 程序