java面向对象程序设计董小园版.docx
《java面向对象程序设计董小园版.docx》由会员分享,可在线阅读,更多相关《java面向对象程序设计董小园版.docx(67页珍藏版)》请在冰点文库上搜索。
java面向对象程序设计董小园版
第1章了解Java
1.编写一个程序,将用户在命令行输入的24小时制时间转换为12小时制。
publicclassTimeTest{
publicstaticvoidmain(Stringargs[]){
inttime;
time=Integer.parseInt(args[0]);
if(time<0||time>24)
System.out.println("输入的不是一个合法时间!
");
elseif(time>12)
System.out.println("12小时制为"+(time-12)+"点");
else
System.out.println("12小时制为"+time+"点");
}
}
2.用户输入x的数值,根据如下规那么输出计算后的结果y值。
x(x<1)
Y=2x-1(1<=x<10)
3x-11(x>=10)
publicclassCalculateTest{
publicstaticvoidmain(Stringargs[]){
floatx,y;
x=Float.parseFloat(args[0]);
if(x<1)
y=x;
elseif(1<=x&&x<10)
y=2*x-1;
else
y=3*x-11;
System.out.println(y);
}
}
3.编写一个Java应用程序,由命令行参数输入一个百分制成绩,要求打印出成绩等级“A〞、“B〞、“C〞、“D〞、“E〞。
90分以上为“A〞;80~89分为“B〞;70~79分为“C〞;60~69分为“D〞;60分以下为“E〞。
要求使用switch语句实现。
运行效果如图2所示:
图1
publicclassPrintGrade{
publicstaticvoidmain(String[]args){
doublescore=Double.parseDouble(args[0]);
if(score<0||score>100)
System.out.println("错误,不是一个合法的百分制成绩!
");
else{
ints=((int)score)/10;
chargrade;
switch(s){
case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
default:
grade='E';
}
System.out.println("成绩是:
"+score+",相应的等级是"+grade);
}
}
}
4.假设今天是星期日,编写一个程序,求n天后是星期几。
要求:
n的数值由命令行输入;使用switch语句实现。
publicclassDateTest{
publicstaticvoidmain(String[]args){
intn=Integer.parseInt(args[0]);
switch(n%7){
case0:
System.out.println(n+"天后是星期天");break;
case1:
System.out.println(n+"天后是星期一");break;
case2:
System.out.println(n+"天后是星期二");break;
case3:
System.out.println(n+"天后是星期三");break;
case4:
System.out.println(n+"天后是星期四");break;
case5:
System.out.println(n+"天后是星期五");break;
case6:
System.out.println(n+"天后是星期六");break;
}
}
}
5.用户在命令行输入一个数字,按照数字输出相应个数的星号。
publicclassPrintStar{
publicstaticvoidmain(String[]args){
intn=Integer.parseInt(args[0]);
inti;
for(i=1;i<=n;i++)
System.out.print("*");
System.out.println();
}
}
6.编写程序,求0到100之间的偶数和。
要求:
分别用while语句、dowhile语句和for循环语句实现。
while实现:
publicclassSumDemo1{
publicstaticvoidmain(String[]args){
intsum=0,i=0;
while(i<=100){
if(i%2==0)
sum=sum+i;
i++;
}
System.out.println("0--100之间所有偶数的和是"+sum);
}
}
dowhile实现:
publicclassSumDemo2{
publicstaticvoidmain(String[]args){
intsum=0,i=0;
do{
if(i%2==0)
sum=sum+i;
i++;
}while(i<=100);
System.out.println("0--100之间所有偶数的和是"+sum);
}
}
for循环实现:
publicclassSumDemo3{
publicstaticvoidmain(String[]args){
intsum=0,i=0;
for(;i<=100;i=i+2)
sum=sum+i;
System.out.println("0--100之间所有偶数的和是"+sum);
}
}
7.输入一个大于1的整数,求1到这个数的阶乘。
用三种循环语句实现。
提示:
5的阶乘表示为5!
,计算公式:
5!
=1*2*3*4*5
while实现:
publicclassFactorial1{
publicstaticvoidmain(String[]args){
intnum=Integer.parseInt(args[0]);
intresult=1;
if(num<1)
System.out.println("应输入大于1的整数!
");
else{
inti=1;
while(i<=num){
result=result*i;
i++;
}
System.out.println(num+"的阶乘是"+result);
}
}
}
dowhile实现:
publicclassFactorial2{
publicstaticvoidmain(String[]args){
intnum=Integer.parseInt(args[0]);
intresult=1;
if(num<1)
System.out.println("应输入大于1的整数!
");
else{
inti=1;
do{
result=result*i;
i++;
}while(i<=num);
System.out.println(num+"的阶乘是"+result);
}
}
}
for循环实现:
publicclassFactorial3{
publicstaticvoidmain(String[]args){
intnum=Integer.parseInt(args[0]);
intresult=1;
if(num<1)
System.out.println("应输入大于1的整数!
");
else{
inti;
for(i=1;i<=num;i++)
result=result*i;
System.out.println(num+"的阶乘是"+result);
}
}
}
8.用for循环语句打印九九乘法表。
publicclassMultiplication{
publicstaticvoidmain(String[]args){
inti,j;
for(i=1;i<=9;i++){
for(j=1;j<=i;j++)
System.out.print(i*j+"\t");
System.out.println();
}
}
}
第2章面向对象的“对象〞
1.定义一个描述长方体的类Box,类中有三个整型的成员变量:
length、width和height,分别表示长方体的长、宽和高。
定义setInfo(int,int,int)方法设置这三个变量的值;定义volumn()方法求长方体的体积并返回整型结果;定义area()方法求长方体的外表积并返回整型结果;定义toString()方法把长方体的长、宽、高,以及长方体的体积和外表积转化为字符串并返回字符串。
编写Java应用程序,测试类Box,使用类中定义的各个方法,并将其结果输出。
classBox{
intlength,width,height;
publicsetInfo(intl,intw,inth){
length=l;
width=w;
height=h;
}
publicintvolumn(){
returnlength*width*height;
}
publicintarea(){
return(length*width+length*height+width*height)*2;
}
publicStringtoString(){
return"Length:
"+length+"width:
"+width+"height:
"+height
+"volumn:
"+volumn()+"area:
"+area();
}
}
publicclassBoxTest{
publicstaticvoidmain(String[]args){
Boxb=newBox();
b.setInfo(5,2,4);
System.out.println(b.toString());
}
}
2.定义一个圆形类Circle,类中有一个用来描述半径的double型成员变量r,定义setR(double)方法初始化半径;定义getArea()方法求圆形的面积并返回double类型结果;定义getPerimeter()方法求圆形的周长并返回double类型结果。
编写Java应用程序,使用Circle类创立两个对象,通过相应方法分别设置不同的半径值,计算各自的面积及周长并显示结果。
classCircle{
doubler;
voidsetR(doubleradius){
r=radius;
}
doublegetArea(){
return3.14*r*r;
}
doublegetPerimeter(){
return2*3.14*r;
}
}
publicclassCircleTest{
publicstaticvoidmain(String[]args){
Circlec1=newCircle();
Circlec2=newCircle();
c1.setR
(1);
c2.setR
(2);
System.out.println("c1的面积是"+c1.getArea()+
",c1的周长是"+c1.getPerimeter());
System.out.println("c2的面积是"+c2.getArea()+
",c2的周长是"+c2.getPerimeter());
}
}
第3章对象的属性---变量详述
1.编写程序,计算如下表达式的值,将结果输出。
〔1〕3.5+1/2+56%10
(2)3.5+1.0/2+56%10
(3)inta=4%3*7+1
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println(3.5+1/2+56%10);
System.out.println(3.5+1.0/2+56%10);
inta=4%3*7+1;
System.out.println(a);
}
}
程序运行结果:
9.5
10.0
8
2.思考以下语句执行后变量a、b、c、d的值分别是多少:
inta=5,b=8,c,d;
c=(a++)*b;
d=(++a)*b;
执行后的结果是:
a=7b=8c=40d=56
3.自定义一个字符串数组,提示用户输入5个字符串,通过循环语句实现将用户输入的字符串存放到数组里,然后反向输出这五个字符串。
importjava.util.Scanner;
publicclassTest{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
Stringstr[]=newString[5];
inti;
for(i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"个字符串");
str[i]=reader.next();
}
System.out.println("反向输出这5个字符串:
");
for(i=4;i>=0;i--)
System.out.println(str[i]);
}
}
4.定义一个实型数组用来存放学生成绩,提示用户确定成绩的个数,根据个数创立数组。
提示用户输入每个成绩,为各数组元素赋值。
询问用户要查找第几个同学的成绩,显示相应的查询结果,如果超出个数围那么进展相应提示。
importjava.util.*;
publicclassSearch1{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
doublescore[];
System.out.println("您要输入多少个同学的成绩?
");
intnum=reader.nextInt();
score=newdouble[num];
for(inti=0;iSystem.out.println("请输入第"+(i+1)+"个同学的成绩");
score[i]=reader.nextDouble();
}
System.out.println("您要查找第几个同学的成绩?
");
intindex=reader.nextInt();
if(index>=1&&index<=num-1)
System.out.println("第"+index+
"个同学的成绩是"+score[index-1]);
else
System.out.println("数据不在合法围,无法查找。
");
}
}
5.在第4题的根底上进展改写,修改查询条件:
询问用户要查找分数为多少的成绩,找到相应的成绩那么显示第几位同学符合查询条件,找不到相应的成绩那么显示没有该成绩,如果超出成绩围那么进展相应提示。
importjava.util.*;
publicSearch2{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
doublescore[];
System.out.println("您要输入多少个同学的成绩?
");
intnum=reader.nextInt();
score=newdouble[num];
for(inti=0;iSystem.out.println("请输入第"+(i+1)+"个同学的成绩");
score[i]=reader.nextDouble();
}
System.out.println("您要查找的成绩是?
");
doubles=reader.nextDouble();
booleanflag=false;
if(s>=0&&s<=100){
for(inti=0;iif(score[i]==s){
System.out.println("第"+(i+1)+"个同学符合查询条件");
flag=true;
}
}
if(!
flag)
System.out.println("没有学生考该分数成绩");
}
else
System.out.println("成绩非法,不能查询。
");
}
}
6.提示用户输入一个整数,再提示用户输入一个符号。
在屏幕上输出该整数个这样的符号。
importjava.util.*;
classCharTest{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
System.out.println("请输入一个整数");
intn=reader.nextInt();
System.out.println("请输入一个符号");
charch=reader.next().charAt(0);
for(inti=1;i<=n;i++)
System.out.print(ch);
System.out.println();
}
}
第4章对象的行为---成员方法详述
1.编写Java应用程序,定义一个计算两个整数和的方法staticintadd(intop1,intop2)。
在main方法中声明两个整型变量,分别赋值,调用add()方法得到它们的和,在屏幕上输出结果。
publicclassAddTest{
publicstaticvoidmain(String[]args){
intnum1,num2;
num1=10;
num2=20;
System.out.println(num1+"+"+num2+"="+add(num1,num2));
}
staticintadd(intop1,intop2){
returnop1+op2;
}
}
2.编写程序,定义一个方法publicstaticvoidabs(inta),用来求绝对值并输出结果。
在main方法中从命令行读入一个整数,调用这个结果求它的绝对值。
importjava.util.Scanner;
publicclassDemo{
publicstaticvoidmain(String[]args){
Scannerreader=newreader(System.in);
System.out.println("请输入一个整数");
intn=reader.nextInt();
abs(n);
}
publicstaticvoidabs(inta){
if(a>=0)
System.out.println("绝对值是"+a);
else
System.out.println("绝对值是"+(-a));
}
}
3.在上述题目的根底上,修改abs成为带返回值的方法,即publicstaticintabs(inta),实现一样的功能。
importjava.util.Scanner;
publicclassDemo{
publicstaticvoidmain(String[]args){
Scannerreader=newreader(System.in);
System.out.println("请输入一个整数");
intn=reader.nextInt();
System.out.println("绝对值是"+abs(n));
}
publicstaticintabs(inta){
if(a>=0)
returna;
else
return-a;
}
}
4.定义一个方法publicstaticvoiddraw(intn,charch),实现输出n个ch符号。
在main方法中提示用户输入相应数据,调用draw方法输出图形。
importjava.util.Scanner;
publicclassMultiplication{
publicstaticvoidmain(String[]args){
Scannerreader=newScanner(System.in);
System.out.println("要显示哪个符号?
");
charc=reader.next().charAt(0);
System.out.println("要显示多少个?
");
intnum=reader.nextInt();
draw(num,c);
}
publicstaticvoiddraw(intn,charch){
for(inti=1;i<=n;i++)
System.out.