2024年5月10日发(作者:)

Java复习题汇总

编程题

1、编程序,输入a,b,c,求方程 a

x

2

+bx+c=0 的解。

package 一元二次方程2;

import java。util。Scanner;

public class 一元二次方程2 {

public static void main(String[] args) {

Scanner reader=new Scanner();

double d=0;

int i=0;

double a=0;

double b=0;

double c=0;

double dis=0;

do{

i++;

if(i>1){

n("请输入a的值:”);

a=t();

System。out。println(”请输入b的值:");

b=t();

System。out。println("请输入c的值:");

c=reader。nextInt();

double dis2=b*b—4*a*c;

d=dis2;

System。out。println("数值错误,请重新输入:”);

dis=Math。sqrt(b*b—4*a*c);

}while(d<0);

double x1=(-1*b+dis)/(2*a);

double x2=(-1*b-dis)/(2*a);

。println(x1);

。println(x2);

2、编程计算: 1*2*3+3*4*5+…+99*100*101 的值。

package 作业618;

public class 作业618 {

public static void main(String[] args) {

}

int sum=0;

for(int i=1;i<=50;i++){

int a=(2*i-1)*(2*i)*(2*i+1);

sum=sum+a;

}System。n(sum);

3、求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于

该数。如:153 =

1

3

5

3

3

3

package 水仙花数;

public class 水仙花数 {

}

}

public static void main(String[] args) {

for(int i=100;i〈1000;i++){

int y=i%10;

int x=i/10%10;

int z=i/10/10%10;

}

int sum=x*x*x+y*y*y+z*z*z;

if(sum==i){

。println(i+”是水仙花数");

4、求下列式子的值,y=1—2+3-4+···+99—100并将结果输出,格式为1-2+3

—4+···+99-100=表达式的值.

package 作业620;

import 。StringBuffer;

public class 作业620 {

public static void main(String[] args) {

}

StringBuffer a=new StringBuffer();

a。append(1);

int sum=0;

int j=0;

for(int i=1;i〈=100;i++){

String c=a。toString();

System。out。println(c+"="+sum);

int b=0;

if(i%2==0){

}

sum=sum+b;

j++;

b=—1*i;

a。append(b);

b=i;

if(j>0) (”+”+b);

}else{

5、请编制程序判断输入的正整数是否既是5又是7的整倍数。若是,则输出

yes;否则输出no。

package 作业621;

import r;

public class 作业621 {

public static void main(String[] args) {

n("请输入一个正整数:");

Scanner reader=new Scanner();

int a=t();

int b=a%5;

int c=a%7;

if(b==0&&c==0){

System。n(”YES");

。println(”NO");

}else{

}

}

6、按以下要求编写程序

(1) 编写Animal接口,接口中声明run() 方法

(2) 定义Bird类和Fish类实现Animal接口

(3) 编写Bird类和Fish类的测试程序,并调用其中的run()方法

package 作业6231;

public class 作业623 {

interface Animal{

class Bird implements Animal{

class Fish implements Animal{

}

public void run(){

System。n(”Fish方法实现了Animal接口");

public void run(){

n(”Bird方法实现了Animal接口”);

public void run();

}

public static void main(String[] args) {

Bird a=new Bird();

();

Fish b=new Fish();

();

7、按以下要求编写程序

(1) 创建一个Rectangle类,添加width和height两个成员变量

(2) 在Rectangle中添加两种方法分别计算矩形的周长和面积

(3) 编程利用Rectangle输出一个矩形的周长和面积

package 作业6232;

public class Rectangle {

void mianji(double a,double b){

void zhouchang(double a,double b){

double d=2*(a+b);

System。n();

double c=a*b;

。println(c);

double width;

double height;

public static void main(String[] args) {

Rectangle mj=new Rectangle();

mj。mianji(2.5,3);

mj。zhouchang(4,5);

8、对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为‘A’,

80-89分为‘B’,70—79分为‘C’,60-69分为‘D’,60分以下为‘E' 。

package 作业6233;

import r;

public class 选择1 {

public static void main(String[] args) {

Scanner reader=new Scanner(System。in);

System。n("请输入成绩:");

double a=uble();

if(a>=90&&a〈=100){

。println("A”);

}

else if(a<90&&a>=80){

}

else if(a<80&&a〉=70){

if(a<70&&a>=60){

if(a<60){

else{

}

。println("输入的成绩错误");

System。out。println("E”);

System。n(”D");

System。out。println("C”);

System。n(”B");

9、设n为自然数,n!=1*2*3*···*n 称为n的阶乘,并规定0!=1。试

编制程序计算2!,4!,6!和10!,并将结果输出到屏幕上.

package 阶乘1;

public class tre {

class jiecheng{

int i;

void xuhh(int a){

}

int n=a;

int t=1;

for(i=1;i〈=n;i++){

}

System。out。println(t);

t=t*i;

public static void main(String[] args) {

}

jiecheng a=new jiecheng();

a。xuhh(2);

a。xuhh(4);

a。xuhh(6);

a。xuhh(10);

10、(2。7)试编码定义一个公有类 pubtest,它含有两个浮点类型变量fvar1

和 fvar2,还有一个整数类型的变量 ivar1, pubtest类中有一个方法 sumFI,

它将fvar1 与ivar1 的值相加,结果放在 fvar2 中。

package 作业6281;

public class pubtest {

float fvar1;

float fvar2;

int ivar1;

void sumFI(float a,int b){

fvar1=a;

ivar1=b;

fvar2=fvar1+ivar1;

System。out。println(fvar2);

public static void main(String[] args) {

pubtest sum=new pubtest();

sum。sumFI(12。3f, 12);

11、(3.4)使用。Math类,生成100个0~99之间的随机整数,找

出它们之中的最大者及最小者,并统计大于50的整数个数。

提示:

Math类支持random方法:

Public static synchronized double random( )

该方法返回一个0。0~1。0之间的小数,如果要得到其他范围的数,需要进行

相应的转换.例如想得到一个0~99之间的整数,可以使用下列语句:

Int num=(int)(100*Math。random( ));

package 作业11;

import java。lang。Math;

public class 作业6282 {

}

public static void main(String[] args) {

int a[]=new int[100];

int g=0;//计数器

int min=0;//最小值标记

int max=0;//最大值标记

for(int i=0;i<100;i++){//用for循环来得到100个数

n(a[min]);

。println(a[max]);

n(”大于50的正整数个数为”+g);

a[i]=(int)(100*Math。random());

if(a[i]〉50)

if(a[min]>a[j]){

}

if(a[max]〈a[j]){

}

max=j;

min=j;

g++;

for(int j=0;j<;j++){

12、(4。3)选择一组等长的英文单词,例如,一组4个字母组成的单词:

Work back come deal desk book java tool face

一组5个字母组成的单词:

Watch match noise risky stock

试定义一个字符串数组,数组中每一个元素存储一个英文单词,元素个数根据选

择的英语单词长度而定。再按照电话机表盘定义数字与字母的对应关系。如数字

2对应a或b或c,数字5对应j或k或l.现编制一个程序,要求将用户输入的

数字串转换成相应的字符串(注意一个数字串对应多个字符串),将这些字符串

与数组中存储的英文单词逐个比较,如果某一字符串与英文单词匹配成功,则在

屏幕上输出数字串及对应的单词,如果都不匹配,则在屏幕上输出一条信息“没

有匹配的单词”.(下面代码复制粘贴时注意注释部分换行报错)

package 作业12;

import java。r;

public class 作业6283 {

public static void main(String[] args) {

String dt[]={”work”,”back","come",”deal”,"desk”,"book”,"java",”

Scanner reader=new Scanner(System。in);

。println("请输入一个四位数:");

int x=t();

longth a=new longth();//用自定义的类longth建立对象a

int i=u(x);//用a对下面方法的调用

int temp=x;//将x的数值赋给temp,后面随着求x各个位数上的数使得x值发生了

StringBuffer []sz=new StringBuffer[i];//建立每个元素存储内容可以改变

String str[]=new String[i];//建立一个长度为i的数组,为了后面将

int ARRAY[]=new int[4];//建立数组ARRAY来存储x每个位上的数

String basicChar=”abc*def*ghi*jkl*mno*pqrs*tuv*wxyz”; //字符串存储

String[] sourceStrArray = (”*”);//以*为分界线将字

for(int T=0;T<;T++){//本类数组型变量引用本类对象

int aaa=;

for(int j=4,h=0;h<4;j—-,h++){

//这个最大的for循环是为了求

sz[T]=new StringBuffer();

tool”,”face"};

变化,所以在后面用到数值x初始值的地方即可以用temp来代替

的字符串型数组sz,它的长度i就是调用方法所得的值

StringBuffer型数组转变成String型数组后存入其内部

电话号码盘上的字母

符串分割成数组

得每个位上的数

int t=(int)(10,j-1);

ARRAY[h]=x/t;

x=x%t;

if(ARRAY[h]>=2&&ARRAY[h]<=6||ARRAY[h]==8){//结合前面,aaa

aaa=aaa/3;

//大for循环执行而除以3

的作用是起到了计数器的作用,它的值随着每一次的

或者4,当电话盘号码对应3个字母时除以3,对应

} //4个时除以4,

else if(ARRAY[h]==7||ARRAY[h]==9){//再结合这里,以9675数字

为例,该数字共需要144个长度的数组来保存,

}

//第一次求得ARRAY[0]为9,所以执行

144除以4

aaa=aaa/4;

}else{

。println(”没有匹配的单词");

break;

for(int A=0,B=0,bbb=1;A〈sz。length;A++){

if(ARRAY[h]〉=2&&ARRAY[h]〈=6||ARRAY[h]==8){

else if(ARRAY[h]==7||ARRAY[h]==9){

if(A==aaa*bbb){

}

B++;

//在第一次执行内for循环时,

if(A==aaa*bbb){

int C=B%3;

sz[A].append(sourceStrArray[ARRAY[h]-2]。charAt(C));

B++;

bbb++;

当A小于144/4时,由于B==0,所以前144/4个元素的

//第一个字母都是存储的9所对应的

//所以第二组144/4个元素存储的是

//个元素存储的是第三个字母r,最后

//第二次执行大for循环时,aaa的

//,给每组元素的第二个字母赋值。

电话号码盘的第一个字母p,当A=144/4之后,B加了1

bbb++;

9所对应电话号码盘的第二个元素q,同理,第三组144/4

一组144/4个元素对应的是第四个字母s

int D=B%4;

初始值发生了变化,每组元素的个数变成了144/4/3个

第三次执行大for循环,每组元素个数变成144/4/3/4个

sz[A]。append(sourceStrArray[ARRAY[h]—2]。charAt

(D));//依次类推,最后给每个元素存储了四个字母

loop:for(int jq=0;jq〈;jq++){

str[jq]=sz[jq].toString();//将StringBuffer类型转变为String类型

for(int bq=0;bq<9;bq++){

}

}

}

if(str[jq].equals(dt[bq])){//相等则按要求输出,跳出两个循

}

。println(temp);

System。n(dt[bq]);

break loop;

if(jq==sz。length-1){//不想等按要求输出

}

。println("没有匹配的单词");

class longth{//建立这个类的目的是要建立一个方法来查清一共需要多少个元素来存储输入

数字串所对应的字母串

}

int changdu(int x){

}

int t=1;

int[]b = {0,0,0,0};

for(int a=0;a<4;a++){

}

for(int c=0;c<4;c++){

}

return t;

if(b[c]〉=2&&b[c]〈=6||b[c]==8){

}

else if(b[c]==7||b[c]==9){

}

t=t*4;

t=t*3;

b[a]=x%10;

x=x/10;