if(scores[i]<60){
sum++;
}
i++;
}
System.out.println(sum);
}
}
3.设定一个表示成绩的整型变量score,当score等于10分时为冠军,当score大于8分时亚军,其它情况是季军。
publicclassDemo3{
publicstaticvoidmain(String[]args){
intscore=10;//Scannersc=newScanner(System.in);
if(score==10){
System.out.println("冠军");
}elseif(score>8){
System.out.println("亚军");
}else{
System.out.println("季军");
}
}
}
4.有人走台阶若每步走2级,则最后剩1级。
若每步走3级则最后剩2级。
若每步走4级,则最后剩3级。
若每步走5级,则最后剩4级,若每步走6级,则最后剩5级。
若每步走7级,则刚好不剩。
试编制程序求此台阶数。
publicclassDemo4{
publicstaticvoidmain(String[]args){
for(inti=7;i<=1000;i++){//7-1000
//&&:
短路:
与:
所有条件都必须true||或:
所有条件只要有一个为true
if(i%2==1&&i%3==2&&i%4==3&&i%5==4&&i%6==5&&i%7==0){
System.out.println("i="+i);
}
}
}
}
5.求1+2!
+3!
+...+20!
的和。
publicclassDemo5{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
longfac,sum=0;//fac:
乘积的结果
for(inti=1;i<=20;i++){//i:
4
fac=1;
for(intk=1;k<=i;k++){//k:
3
fac=fac*k;//fac:
2
}
sum=sum+fac;
}
System.out.println("sum="+sum);
}
}
习题3
一、是非题
1.在界面中要达到进度条效果,可以由JProgressBar进度条类的对象实现(√)
2.通常在数据库中创建视图是为了更好的使用基本表的数据以及对表的保护(√)
3.在MySQL中一般都需要进行数据表的创建,因为只有基本表建立起来,才能进行基于表的数据操作(√)
4.对基本表的数据操作包括增加、删除和查询等(√)
5.MVC只能用于Java编程中(×)
二、问答题
1.什么是视图?
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
2.什么是MVC模式?
MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
习题4
一、选择题
1.下列代码的运行结果是( E )
publicclassDemo{
publicstaticvoidmain(String[]args){
Animalanimal=newDog();
Catcat=(Cat)animal;
System.out.println(cat.noise());
}
}
classAnimal{
publicStringnoise(){
return"AnimalCall";
}
}
classDogextendsAnimal{
publicStringnoise(){
return"汪汪";
}
}
classCatextendsAnimal{
publicStringnoise(){
return"喵喵";
}
}
A、AnimalCall
B、汪汪
C、喵喵
D、编译错误
E、抛出运行时异常
2.设Demo为已定义的类名,下列声明Demo类的对象demo的语句中正确的是( D )
A、floatDemodemo;
B、publicDemodemo=Demo();
C、Demodemo=newint();
D、staticDemodemo=newDemo();
3.设i,j为类Test中定义的int型成员变量,下列Test类构造方法中不正确的是( A )
A、voidTest(inta){i=a;}
B、Test(inta){i=a;}
C、Test(intx,inty){i=x;j=y;}
D、Test(){i=0;j=0;}
4.Java中,一个类可同时定义许多同名的方法,在这些方法的形式参数个数,类型或顺序各不相同,传值也可以各不相同。
这种面向对象程序的特性称为( B )
A、隐藏
B、重载
C、覆盖
D、Java不支持此特性
5.为Demo类的一个无形式参数、无返回值的方法method书写方法头,使得使用类名Demo作为前缀就可以调用它,该方法头的形式为( A )
A、staticvoidmethod()
B、publicvoidmethod()
C、finalvoidmethod()
D、abstractvoidmethod()
二、是非题
1.继承可以实现代码重用,提高开发效率和可维护性(√)
2.子类在构造方法中,可以用super来调用父类的构造方法(√)
3.将字段用private修饰,从而更好地将信息进行封装和隐藏(√)
4.在类的声明中用implements子句来表示一个类使用某个接口(√)
5.如果省略访问控制符,则表示private(×)
三、编程题
1.定义一个类Person,包含被封装的数据成员name、sex、age,表示姓名、性别和年龄,为Person类提供一个构造方法,实现三个属性的初始化操作;并提供一个输出方法显示每个成员变量的值。
publicclassPerson{
privateStringname;
privateStringsex;
privateintage;
//无参构造方法
publicPerson(){
name="张三";
sex="男";
age=29;
}
publicvoidoutput(){
System.out.println("姓名:
"+name+"性别:
"+sex+"年龄:
"+age);
}
publicstaticvoidmain(String[]args){
Personp1=newPerson();
p1.output();
}
}
2.根据编程题第1题,定义Employee类继承自Person类,增加成员变量department、positon存放部门和位置信息。
定义一个5参的构造方法,重写输出方法用于显示5个成员变量的值。
定义测试类,完成一个员工对象的创建及信息输出操作。
publicclassPerson{
Stringname;
Stringsex;
intage;
publicPerson(Stringname,Stringsex,intage){
super();
this.name=name;
this.sex=sex;
this.age=age;
}
publicvoidoutput(){
System.out.println("姓名:
"+name+"性别:
"+sex+"年龄:
"+age);
}
publicstaticvoidmain(String[]args){
Employeee=newEmployee("zs","男",28,"开发部","经理");
System.out.println(e);
e.output();
}
}
classEmployeeextendsPerson{
privateStringdepartment;//部门
privateStringpositon;//位置
publicEmployee(Stringname,Stringsex,intage,Stringdepartment,Stringpositon){
super(name,sex,age);
this.department=department;
this.positon=positon;
}
@Override
publicStringtoString(){
return"姓名:
"+name+"性别:
"+sex+"年龄:
"+age+"部门:
"+department+"位置:
"+positon;
}
publicvoidoutput(){
System.out.println("姓名:
"+name+"性别:
"+sex+"年龄:
"+age+"部门:
"+department+"位置:
"+positon);
}
}
3.定义一个二维空间的点类(Point),有横、纵坐标属性,计算两点之间距离。
publicclassDemo3{
publicstaticvoidmain(String[]args){
Pointp1=newPoint(1,4);
Pointp2=newPoint(2,6);
System.out.println(p1.distance(p2));
System.out.println(p1.move(30,5));
}
}
classPoint{
privatedoublex;
privatedoubley;
publicPoint(doublex,doubley){
super();
this.x=x;
this.y=y;
}
publicdoubledistance(Pointpoint){
returnMath.sqrt((point.x-this.x)*(point.x-this.x)+(point.y-this.y)*(point.y-this.y));
}
//当前点的横、纵坐标移动一定距离到下一个位置
publicPointmove(doublex,doubley){
returnnewPoint(this.x+x,this.y+y);
}
@Override
publicStringtoString(){
//TODOAuto-generatedmethodstub
return"("+x+","+y+")";
}
}
4.定义一个矩形类(Rectangle)用来表示矩形,定义可以改变矩形坐标位置的方法;定义可以改变矩形宽高的方法;定义求矩形面积的方法;定义计算一个点是否在矩形内的方法。
publicclassDemo4{
publicstaticvoidmain(String[]args){
Rectangler=newRectangle(10,20,50,50);
r.setLocation(60,60);
r.setSize(20,20);
System.out.println(r.isInsideOfRectangle(40,3));
System.out.println(r.getArea());
}
}
classRectangle{
//top,left左上角那个顶点的坐标
//width:
宽
//heigth:
长
privatedoubletop,left,width,height;
//构造函数
publicRectangle(doubletop,doubleleft,doublewidth,doubleheight){
this.top=top;
this.left=left;
this.width=width;
this.height=height;
}
//改变顶点坐标,即改变矩形坐标位置
publicvoidsetLocation(doubletop,doubleleft){
this.top=top;
this.left=left;
}
//改变宽,高,即改变矩形宽高
publicvoidsetSize(doublewidth,doubleheight){
this.width=width;
this.height=height;
}
//计算面积,宽×高
publicdoublegetArea(){
returnwidth*height;
}
//判断某点是否在矩形内
publicbooleanisInsideOfRectangle(doublex,doubley){
//这里采用的是数学上的坐标系,即向上向右为正
//如果采用向下向右为正的话,则要改
//returnx>this.left&&x//this.height&&y>this.top;
//这里点不包括在边上,如果在边上也算的话,把小于号或大于号改成小于等于及大于等于
returnx>this.left&&xthis.top-this.height&&y}
}
5.按要求编写Java程序。
(1)编写一个接口:
Calculate,只含有一个方法intfn(inta);
(2)编写一个类:
ClassA来实现接口Calculate,实现intfn(intn)接口方法时,要求计算1到n的和;
(3)编写另一个类:
ClassB来实现接口Calculate,实现intfn(intn)接口方法时,要求计算n的阶乘(n!
);
(4)编写测试类Test,在测试类的Test方法中实现接口。
interfaceCalculate{
intfn(intn);
}
classClassAimplementsCalculate{
publicintfn(intn){//1到n的和
intsum=0;
for(inti=0;i<=n;i++){
sum+=i;
}
returnsum;
}
}
classClassBimplementsCalculate{
publicintfn(intn){//n的阶乘
intfactorial=1;
for(inti