则循环体将被执行(A)。
A)2次B)1次C)0次D)3次
33.以下由do-while语句构成的循环执行的次数是(B)。
intm=8;
do{++m;}while(m<8);
A)一次也不执行B)执行1次
C)8次D)有语法错,不能执行
34.下列语句序列执行后,i的值是(A)。
inti=10;
do{i/=2;}while(i>1);
A)1B)5C)2D)0
35.下列语句序列执行后,i的值是(D)。
inti=10;
do{i/=2;}while(i-->1);
A)1B)5C)2D)-1
36.下列语句序列执行后,i的值是(C)。
inti=10;
do{i-=2;}while(i>6);
A)10B)8C)6D)4
37.下列语句序列执行后,i的值是(D)。
inti=16;
do{i/=2;}while(i>3);
A)16B)8C)4D)2
38.以下由do-while语句构成的循环执行的次数是(B)。
intk=0;
do{++k;}while(k<1);
A)一次也不执行B)执行1次C)无限次D)有语法错,不能执行
39.若有循环:
intx=5,y=20;
do{y-=x;x++;}while(++x<--y);
则循环体将被执行(C)。
A)0次B)1次C)2次D)3次
40.下列循环中,执行breakouter语句后,所列(C)语句将被执行。
outer:
for(inti=1;i<10;i++)
{
inner:
for(intj=1;j<10;j++)
{
if(i*j>50)
breakouter;
System.out.println(i*j);
}
next:
A)标号为inner的语句B)标号为outer的语句
C)标号为next的语句D)以上都不是
41.下列循环中,执行continueouter语句后,(A)说法正确。
outer:
for(inti=1;i<10;i++)
{
inner:
for(intj=1;j<10;j++)
{
if(i*j>50)
continueouter;
System.out.println(i*j);
}
}
A)程序控制在外层循环中并且执行外层循环的下一迭代
B)程序控制在内层循环中并且执行内层循环的下一迭代
C)执行标号为next的语句
D)以上都不是
2.找出下面各段程序中的错误:
a)For(i=100,i>=1,i++)
System.out.println(i);
答案:
For的F应该小写;For头中应当使用分号,而应当使用逗号;++应当为――
答案:
应当在case0中放置一条break语句
c)下面的代码应输入从19~1之间的所有奇数:
for(i=19;i>=1;i+=2)
System.out.println(i);
答案:
+=应该为-=
d)下面的代码应输出从2到100之间的所有偶数:
counter=2;
do{
System.out.println(counter);
counter+=2;
}While(counter<100)
答案:
while的W应当小写;<应当为<=
3.指出并纠正下面各段代码中的错误:
a)
while(c<=5){
product*=5;
c++;
b)
if(gender==1)
System.out.println(“woman”);
else;
System.out.println(“Man”);
答案:
a)错误:
漏掉了while循环的右花括号
纠正:
在最后加上右花括号
b)错误:
else后的分号导致一个逻辑错误,第二个输出语句无论如何都会执行。
纠正:
去掉else后面的分号。
4.下面的while循环结构有什么错误?
while(z>=0)
sum+=z;
答案:
变量z在while循环中一直没有改变,如果循环条件(z>=0)为真,则会出现死循环,为了避免,必须使得变量z递减,使其最终小于0;
5.指出并纠正下列各段代码的错误。
(注解:
每段代码中可能包含多个错误。
)
a)if(age>=65);
System.out.println(“Agegreaterthanorequalto65”);
else
System.out.println(“Ageislessthan65”);
答案:
if后不能有分号,将分号去掉可以改正这个错误。
b)intx=1,total;
while(x<=10){
total+=x;
++x;
}
答案:
total+=x语句中,total没有初始数值,无法使用,在定义total时为其赋值0可以解决这个错误。
c)while(x<=100)
total+=x;
++x;
答案:
循环为死循环,直到超出total的取值范围,在(x<=100)后添加{,然后在++x;后添加}可以解决这个错误。
6.找出下面各段代码中的错误,并解释如何改正它。
a)
for(k=0;k!
=1.0;k+=0.1)
System.out.println(k);
b)如下代码应打印1~10的值
n=1;
while(n<10)
System.out.println(n++);
答案:
a)错误:
浮点数作控制变量,for循环将不工作,因为浮点数在大多数计算机中只是近似值。
改正:
用一个整数取代浮点数,并用适当的计算获取所要的值:
for(k=1;k!
=10;k++)
System.out.println((float)k/10);
b)错误:
在while循环继续条件中用了错误的关系运算符。
改正:
用<=代替<,或者将10改为11也可以。
Java基础习题(附答案)2收藏
1.以下方法fun的功能是求两参数之积。
(returna*b)
intfun(inta,intb){__________________;}
2.以下方法fun的功能是求两参数之积。
(return(float)a*b)
floatfun(inta,doubleb){__________________;}
3.以下方法fun的功能是求两参数的最大值。
(returna>b?
a:
b)
intfun(inta,intb){__________________;}
4.以下方法m的功能是求两参数之积的整数部分。
(return(int)(a*b))
intm(floatx,floaty){__________________;}
5.下面是用户程序对Applet类中方法paint()的重新定义。
(voidcall)
public___paint(Graphics____)
{call.drawString("Hello,java!
",10,20);}
6.下面方法的功能是判断一个整数是否为偶数,将程序补充完整。
(booleantrue)
public________isEven(inta)
{if(a%2==0)
return_____;
else
returnfalse;
}
7.同一个类中多个方法具有相同的方法名,不同的_____________称为方法的重载。
(参数列表)
二.选择题及答案
1.下列方法定义中,正确的是(D)。
A)intx(inta,b){return(a-b);}
B)doublex(inta,intb){intw;w=a-b;}
C)doublex(a,b){returnb;}
D)intx(inta,intb){returna-b;}
2.下列方法定义中,正确的是(D)。
A)voidx(inta,intb);{return(a-b);}
B)x(inta,intb){returna-b;}
C)doublex{returnb;}
D)intx(inta,intb){returna+b;}
3.下列方法定义中,不正确的是(D)。
A)floatx(inta,intb){return(a-b);}
B)intx(inta,intb){returna-b;}
C)intx(inta,intb);{returna*b;}
D)intx(inta,intb){return1.2*(a+b);}
4.下列方法定义中,正确的是(A)。
A)intx(){charch='a';return(int)ch;}
B)voidx(){...returntrue;}
C)intx(){...returntrue;}
D)intx(inta,b){returna+b;}
5.列方法定义中,方法头不正确的是(D)。
A)publicintx(){...}
B)publicstaticintx(doubley){...}
C)voidx(doubled){...}
D)publicstaticx(doublea){...}
6.在某个类中存在一个方法:
voidgetSort(intx),以下能作为这个方法的重载的声明的是(C)。
A)publicgetSort(floatx)B)intgetSort(inty)
C)doublegetSort(intx,inty)D)voidget(intx,inty)
7.在某个类中存在一个方法:
voidsort(intx),以下不能作为这个方法的重载的声明的是(B)。
A)publicfloatsort(floatx)B)intsort(inty)
C)doublesort(intx,inty)D)voidsort(doubley)
8.为了区分类中重载的同名的不同方法,要求(A)。
A)采用不同的形式参数列表B)返回值类型不同
C)调用时用类名或对象名做前缀D)参数名不同
一、选择题
1定义类头时,不可能用到的关键字是(B)。
A)classB)privateC)extendsD)public
2.下列类定义中,不正确的是(C)。
A)classx{....}
B)classxextendsy{....}
C)staticclassximplementsy1,y2{....}
D)publicclassxextendsApplet{....}
3.下列类头定义中,错误的是(A)。
A)publicxextendsy{...}
B)publicclassxextendsy{...}
C)classxextendsyimplementsy1{...}
D)classx{...}
.设A为已定义的类名,下列声明A类的对象a的语句中正确的是(D)。
A)floatAa;B)publicAa=A();
C)Aa=newint();D)staticAa=newA();
5.设A为已定义的类名,下列声明A类的对象a的语句中正确的是(A)。
A)publicAa=newA();B)publicAa=A();
C)Aa=newclass();D)aA;
6.设X、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是(C)。
A)publicXx1=newY();B)Xx1=X();
C)Xx1=newX();D)intXx1;
7.设X、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是(A)。
A)staticXx1;B)publicXx1=newX(int123);
C)Yx1;D)Xx1=X();
8.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:
_______________________________。
(MyClassobj=newMyClass();)
9.设i,j为类X中定义的int型变量名,下列X类的构造方法中不正确的是(A)。
A)voidX(intk){i=k;}B)X(intk){i=k;}
C)X(intm,intn){i=m;j=n;}D)X(){i=0;j=0;}
10.有一个类A,以下为其构造方法的声明,其中正确的是(A)。
A)publicA(intx){...}B)staticA(intx){...}
C)publica(intx){...}D)voidA(intx){...}
11.有一个类A,以下为其构造方法的声明,其中正确的是(B)。
A)voidA(intx){...}B)A(intx){...}
C)a(intx){...}D)voida(intx){...}
12.设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是(B)。
A)X(intm){...}B)voidX(intm){...}
C)X(intm,intn){...}D)X(inth,intm,intn){...}
13.设i,j为类X中定义的double型变量名,下列X类的构造方法中不正确的是(A)。
A)doubleX(doublek){i=k;returni;}C)X(){i=6;j=8;}
B)X(doublem,doublen){i=m;j=n;}D)X(doublek