搜档网
当前位置:搜档网 › Java编程练习题

Java编程练习题

Java编程练习题
Java编程练习题

Java编程练习题

一般题:

1、编写一个应用程序,对程序中给定的四个double型数据求其最大值和最小值。

public class Java1_1 {

public static void main(String[] args){

double a[] ={8.2,3.8,15.1,9.0};

double max = 0,min=0;

System.out.print("四个数分别为:");

for(int i=0;i

System.out.print(a[i]+" "); }

for(int i=0;i

if(a[i]>a[i+1]){

max=a[i];

}

else if(a[i]

min=a[i];

}

}

System.out.println();

System.out.println("四个数中最大值为:"+max);

System.out.println("四个数中最小值为:"+min);

}

}

2、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1、2、3,

而6=1+2+3。因此6是“完数”。编写一个小应用程序求1000之内的所有完数

public class Java1_2 {

public static void main(String[] args) {

System.out.print("1000内的完数为:");

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

int a=0;

for(int j=1;j<=i/2;j++){

if(i%j==0)

a+=j;

}

if(a==i)

System.out.print(i+" ");

}

}

}

3、要求1000!(1000*999*998...*2*1)的值。

import java.math.BigDecimal;

public class Java1_3 {

public static void main(String[] args) {

BigDecimal fac = new BigDecimal(1);;

for(int i=1000;i>=1;i--){

BigDecimal b = new BigDecimal(i);

fac=fac.multiply(b);

}

System.out.println("1000!为:"+fac);

}

}

4、设计一个能随机产生100个大写英文字母的方法,在该方法中统计产生了多少个元音字

母,并输出这个数字。

public class Java1_4 {

public static void main(String[] args) {

char ch[] = new char[100];

int count=0;

System.out.println("随机产生的100个大写字母分别为:");

for(int i=0;i<100;i++){

int a = (int)(Math.random()*26);

ch[i] = (char)(a+65);

System.out.print(ch[i]+" ");

if((i+1)%5==0)

System.out.println();

}

for(int i=0;i<100;i++){

if(ch[i]=='A' || ch[i]=='E'

|| ch[i]=='I' || ch[i]=='O' || ch[i]=='U'){

count++;

}

}

System.out.println("其中元音字母有"+count+"个!");

}

}

5、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月

又生一对兔子,假如兔子不死,问每个月的兔子总数为多少?

import java.util.Scanner;

public class Java1_5 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("请输入月数:");

int m = scanner.nextInt();

System.out.println("第1个月的兔子对数: 1");

System.out.println("第2个月的兔子对数: 1");

int f1 = 1, f2 = 1, f;

for(int i=3; i<=m; i++) {

f = f2;

f2 = f1 + f2;

f1 = f;

System.out.println("第" + i +"个月的兔子对数: "+f2);

}

}

}

6、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该

数本身。例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

public class Java1_6 {

public static void main(String[] args) {

int bit = 0,ten = 0,hun = 0;

System.out.print("水仙花数有:");

for(int n=100;n<1000;n++){

if(n<1000){

bit=n%10;

ten=n%100/10;

hun=n/100;

}

if(bit*bit*bit+ten*ten*ten+hun*hun*hun==n)

System.out.print(n+" ");

}

}

}

7、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.io.*;;

public class Java1_7 {

public static void main(String[] args) throws IOException { BufferedReader buf;

String str;

int a = 0,b = 0,c = 0,d=0;

buf = new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输入一串字符:");

str = buf.readLine();

char ch[]=str.toCharArray();

for(int i=0;i

if((ch[i]>='a'&& ch[i]<='z') || (ch[i]>='A'&& ch[i]<='Z')) a++;

else if(ch[i]>='0' && ch[i]<='9')

b++;

else if(ch[i]==' ')

c++;

else

d++;

}

System.out.println("英文字母有:"+a+"个");

System.out.println("数字有:"+b+"个");

System.out.println("空格有:"+c+"个");

System.out.println("其它字符有:"+d+"个");

}

}

8、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10

次落地时,共经过多少米?第10次反弹多高?

public class Java1_8 {

public static void main(String[] args) {

double height = 100,sum = 100;

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

sum+=height;

height=height/2;

}

System.out.println("球共经过"+sum+"米!"+"\n"+"第10次反弹高度为:"+height/2);

}

}

9、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

import java.util.Scanner;

public class Java1_9 {

public static void main(String[] args) {

double reward;

Scanner scanner = new Scanner(System.in);

System.out.print("请输入月利润数(万):");

double n= scanner.nextDouble();

if(n>0 && n<=10)

reward = n*0.1;

else if(n>10 && n<=20)

reward = 10*0.1+(n-10)*0.075;

else if(n>20 && n<=40)

reward = 10*0.1+10*0.075+(n-20)*0.05;

else if(n>40 && n<=60)

reward = 10*0.1+10*0.075+20*0.05+(n-40)*0.03;

else if(n>60 && n<=100)

reward = 10*0.1+10*0.075+20*0.05+20*0.03+(n-60)*0.015;

else

reward =

10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(n-100)*0.01;

System.out.println("应发放奖金总数为:"+reward);

}

}

10、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一

个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

public class Java1_10 {

public static void main(String[] args) {

int n=1;

for(int i=9;i>0;i--){

n=(n+1)*2;

}

System.out.println("第一天共摘了"+n+"个桃子");

}

}

11、利用递归方法求5!。

public class Java1_11 {

public static void main(String[] args) {

int fac=1;

for(int i=1;i<=5;i++)

fac=fac*i;

System.out.println("5!为:"+fac);

}

}

12、求一个3*3矩阵对角线元素之和.

import java.util.Scanner;

public class Java1_12 {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

int[][] number = new int[3][3];

System.out.println("请输入9个整数:");

for(int i=0; i<3; i++) {

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

n umber[i][j] = scanner.nextInt();

}

}

System.out.println("输入的3 * 3 矩阵是:");

for(int i=0; i<3; i++) {

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

S ystem.out.print(number[i][j] + " ");

}

System.out.println();

}

int sum=0;

for(int i=0;i<3;i++){

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

if(i==j){

sum+=number[i][j];

}

}

}

System.out.println("矩阵的对角线元素之和为:"+sum);

}

}

13、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。import java.util.Scanner;

public class Java1_13 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("请输入6个数据:");

float number[]=new float[6];

for(int i=0;i<6;i++){

number[i]=scanner.nextFloat();

}

float max=number[0],min=number[0],temp;

int a = 0,b=0;

for(int i=0;i

if(number[i]>max){

max=number[i];

a= i;

}

if(number[i]

min=number[i];

b= i;

}

}

if(a!=0){

temp=number[0];

number[0]=number[a];

number[a]=temp;

}

if(b!=number.length-1){

temp=number[number.length-1];

number[number.length-1]=number[b];

number[b]=temp;

}

System.out.print("调换顺序后:");

for(int i=0;i

System.out.print(number[i]+" ");

}

}

14、定义复数的类Complex并测试其功能:

1. 复数由实部、虚部两个部分组成,在类的定义中应包含保存这两部分信息的内容。

2. 在类中定义构造函数,使用户能够在构造对象的同时为对象赋初值。

3. 在类中定义复数的加法、减法、乘法三个二元操作符来完成复数间的加、减、乘的功能。

4. 通过重载tosthing,使得Complex类的对象能够显示其自身信息。

5. 通过显示定义一个成员函数完成对象的赋值操作,使用户能够对Complex类的对象进行赋值。

6. 编写一段主程序(main函数),使用户能够通过这段主程序输入复数并进行复数的计算。

15、建立一个银行账户类,要求能够存放用户的账号、姓名、密码和账户余额等个人信

息,并包含存款、取款、查询余额和修改账户密码等操作,并用此类创建对象,对象的账号为100,姓名为Tom,密码为11111,账户余额为10000。

import java.util.Scanner;

public class Java1_15 {

public static void main(String[] args){

Login();

}

public static void Login(){

System.out.println("请登录: ");

System.out.print( " 请输入账号:");

Scanner scanner = new Scanner(System.in);

String Id = scanner.nextLine();

System.out.print( "请输入密码:");

String Pwd = scanner.nextLine();

System.out.println();

boolean flag = Customer.login(Id, Pwd);

if(flag==true){

Menu.menu();

}

else{

System.out.println("您输入的用户名或密码有错误,请重新输入!");

Login();

}

}

}

class Customer {

private String Id, Pwd, Name;

private int Mony;

static String id,name,pwd;

static int mony;

public Customer(){}

public Customer(String id, String pwd){

this.Id=id;

this.Pwd=pwd;

}

public void setId(String id){

this.Id=id;

}

public String getId(){

return this.Id;

}

public void setName(String name){

https://www.sodocs.net/doc/9510694766.html,=name;

}

public String getName(){

return https://www.sodocs.net/doc/9510694766.html,;

}

public void setPwd(String pwd){

this.Pwd=pwd;

}

public String getPwd(){

return this.Pwd;

}

public static boolean login(String ID, String PWD){

boolean flag = false;

Customer cm0 = new Customer("123","123");

https://www.sodocs.net/doc/9510694766.html,="abc";

cm0.Mony=2000;

Customer cm1 = new Customer("456","456");

https://www.sodocs.net/doc/9510694766.html,="def";

cm1.Mony=3000;

Customer cm2 = new Customer("789","789");

https://www.sodocs.net/doc/9510694766.html,="fgh";

cm2.Mony=4000;

String customer_Id[]={cm0.Id,cm1.Id,cm2.Id};

String customer_Pwd[]={cm0.Pwd,cm1.Pwd,cm2.Pwd};

String customer_Name[]={https://www.sodocs.net/doc/9510694766.html,,https://www.sodocs.net/doc/9510694766.html,,https://www.sodocs.net/doc/9510694766.html,};

int customer_Mony[]={cm0.Mony,cm1.Mony,cm2.Mony};

for(int i=0;i

if(ID.equals(customer_Id[i]) &&

PWD.equals(customer_Pwd[i])){

id=customer_Id[i];

pwd=customer_Pwd[i];

name=customer_Name[i];

mony=customer_Mony[i];

flag=true;

}

}

if(flag==true){

return true;

}

else

return false;

}

}

class Menu{

public static void menu(){

System.out.println("主菜单");

System.out.println("1、取款服务");

System.out.println("2、修改密码");

System.out.println("3、存款服务");

System.out.println("4、转账服务 ");

System.out.println("5、查询余额 ");

System.out.println("6、退出");

Scanner scanner = new Scanner(System.in);

int a = scanner.nextInt();

switch(a){

case 1:

DrawMony();

break;

case 2:

ChangePwd();

break;

case 3:

SaveMony();

break;

case 4:

TransferMony();

break;

case 5:

CheckMony();

break;

case 6:

break;

}

}

public static void DrawMony(){

System.out.println(" 请确定取款金额

");

System.out.println("1-->100 1000<--4");

System.out.println("2-->300 5000<--5");

System.out.println("3-->500 其它金额<--6");

System.out.println("");

Scanner scanner = new Scanner(System.in);

int m=scanner.nextInt();

switch(m){

case 1:

if(Customer.mony-100<0){

System.out.println("余额不足,请重新选择!");

System.out.println();

DrawMony();

}

else{

Customer.mony=Customer.mony-100;

System.out.println("取款成功!");

System.out.println("账户余额为:"+Customer.mony);

System.out.println();

System.out.println("是否继续取款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

DrawMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

break;

case 2:

if(Customer.mony-300<0){

System.out.println("余额不足,请重新选择!");

System.out.println();

DrawMony();

}

else{

Customer.mony=Customer.mony-300;

System.out.println("取款成功!");

System.out.println("账户余额为:"+Customer.mony);

System.out.println();

System.out.println("是否继续取款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

DrawMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

break;

case 3:

if(Customer.mony-500<0){

System.out.println("余额不足,请重新选择!");

System.out.println();

DrawMony();

}

else{

Customer.mony=Customer.mony-500;

System.out.println("取款成功!");

System.out.println("账户余额为:"+Customer.mony);

System.out.println();

System.out.println("是否继续取款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

DrawMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

break;

case 4:

if(Customer.mony-1000<0){

System.out.println("余额不足,请重新选择!");

System.out.println();

DrawMony();

}

else{

Customer.mony=Customer.mony-1000;

System.out.println("取款成功!");

System.out.println("账户余额为:"+Customer.mony);

System.out.println();

System.out.println("是否继续取款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

DrawMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

break;

case 5:

if(Customer.mony-5000<0){

System.out.println("余额不足,请重新选择!");

System.out.println();

DrawMony();

}

else{

Customer.mony=Customer.mony-5000;

System.out.println("取款成功!");

System.out.println("账户余额为:"+Customer.mony);

System.out.println();

System.out.println("是否继续取款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

DrawMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

break;

case 6:

System.out.print("请输入取款金额:");

int mony = scanner.nextInt();

if(Customer.mony-mony<0){

System.out.println("余额不足,请重新输入!");

System.out.println("");

DrawMony();

}

else{

Customer.mony=Customer.mony-mony;

System.out.println("取款成功!");

System.out.println("账户余额为:"+Customer.mony);

System.out.println();

System.out.println("是否继续取款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

DrawMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

break;

}

}

public static void ChangePwd(){

Scanner scanner = new Scanner(System.in);

System.out.print("请输入新密码:");

String pwd =scanner.nextLine();

System.out.print("请再次输入:");

String pwd1 =scanner.nextLine();

if(pwd.equals(pwd1)){

Customer.pwd=pwd;

System.out.println("密码修改成功!");

System.out.println("10秒后自动返回主界面!");

System.out.println();

try{

Thread.sleep(10000);

menu();

}

catch(InterruptedException e){}

}

else{

System.out.println("两次输入密码不一致!");

System.out.println();

ChangePwd();

}

}

public static void SaveMony(){

Scanner scanner = new Scanner(System.in);

System.out.print("请输入存款金额:");

int mony=scanner.nextInt();

if (mony>0 && mony%100==0){

Customer.mony=Customer.mony+mony;

System.out.println("存款成功!");

System.out.println("账户余额:"+Customer.mony);

System.out.println("");

System.out.println("是否继续存款?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

SaveMony();

}

else{

System.out.println();

menu();

}

System.out.println();

}

else{

System.out.println("存款金额必须为100的整数倍!");

System.out.println();

SaveMony();

}

}

public static void TransferMony(){

Scanner scanner = new Scanner(System.in);

System.out.print("请输入账号:");

int a= scanner.nextInt();

System.out.print("请在此输入:");

int b=scanner.nextInt();

System.out.print("请输入转账金额:");

int mony=scanner.nextInt();

if(a==b){

if(Customer.mony-mony>0){

Customer.mony=Customer.mony-mony;

System.out.println("转账成功!");

System.out.println("账户余额:"+Customer.mony);

System.out.println();

System.out.println("是否继续转账?");

System.out.println("0、是 1、否");

int c = scanner.nextInt();

if(c==0){

System.out.println();

TransferMony();

}

else{

System.out.println();

menu();

}

}

else{

System.out.println("余额不足,请重新输入!");

System.out.println();

TransferMony();

}

}

else{

System.out.println("两次输入账号不一致,请重新输入!");

System.out.println();

TransferMony();

}

}

public static void CheckMony(){

Scanner scanner = new Scanner(System.in);

System.out.println("用户名:"+https://www.sodocs.net/doc/9510694766.html,);

System.out.println("用户ID:"+Customer.id);

System.out.println("账户余额:"+Customer.mony);

System.out.println("返回主菜单");

int a=scanner.nextInt();

if(a==0){

System.out.println();

menu();

}

else{

System.out.println();

menu();

}

}

}

16、有哺乳动物类mammal,将其作为父类,从其派生出子类猫cat和子类狗dog,基

类中有方法speak()。

class mammal{

String name,kind;

int age;

public mammal(String n, int a, String k){

https://www.sodocs.net/doc/9510694766.html,=n;

this.age=a;

this.kind=k;

}

public void speak(String s){

System.out.println("叫声为:"+s);

}

public void print(){

System.out.println("名字为:"+https://www.sodocs.net/doc/9510694766.html,);

System.out.println("年龄为:"+this.age);

System.out.println("种类为:"+this.kind);

}

}

class dog extends mammal{

public dog(){

super("小狗",2,"狗");

}

}

class cat extends mammal{

public cat(){

super("小猫",3,"猫");

}

}

public class Java1_16 {

public static void main(String[] args) {

mammal dog = new dog();

mammal cat = new cat();

dog.print();

dog.speak("汪");

System.out.println();

cat.print();

cat.speak("喵");

}

}

17、求100之内的素数

public class Java1_17 {

public static void main(String[] args) { boolean flag = false;

System.out.print("100以内的素数有:2 3 ");

for(int i=3;i<=100;i+=2){

for(int j=2;j<=Math.sqrt(i);j++){

if(i%j==0){

flag=false;

break;}

else

flag=true;

}

if(flag==true){

System.out.print(i+" ");

}

}

}

}

18、对10个数进行排序

import java.util.Scanner;

public class Java1_18 {

public static void main(String[] args) { int number[] = new int[10];

Scanner scanner = new Scanner(System.in);

System.out.print("请输入10个数:");

for(int i=0;i

number[i]=scanner.nextInt();

}

for(int i=0;i

for(int j=0;j

if(number[i]>number[j]){

int temp = number[j];

number[j]=number[i];

number[i]=temp;

}

}

}

for(int i=0;i

System.out.print(number[i]+" ");

}

}

}

19、从键盘上输入10个整数,并将其放入一个一维数组中,然后将其前5个元素与后

5个元素对换,即:第1个元素与第10个元素互换,第2个元素与第9个元素互换…第5个元素与第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。import java.util.Scanner;

public class Java1_19 {

public static void main(String[] args) {

int number[]=new int[10];

int b=0;

Scanner scanner = new Scanner(System.in);

System.out.print("请输入10个整数:");

for(int i=0;i

number[i]=scanner.nextInt();

}

for(int i=0;i

int temp=number[i];

number[i]=number[i+9-b];

number[i+9-b]=temp;

b+=2;

}

System.out.print("对换后顺序为:");

for(int i=0;i

System.out.print(number[i]+" ");

}

}

}

20、设计一个圆类,将圆的位置(圆心坐标和半径)作为属性(提供任意圆的设置),并

能计算圆的面积。

class Point{

float x,y;

public Point(float a, float b){

this.x=a;

this.y=b;

}

public void setX(float a){

this.x=a;

}

public void setY(float b){

this.y=b;

}

public float getX(){

return this.x;

}

public float getY(){

return this.y;

}

}

class Circle{

Point point = new Point(0,0);

float radius;

public Circle(Point p,float r){

this.point=p;

this.radius=r;

}

public void setRadius(float r){

this.radius=r;

}

public float getRadius(){

return this.radius;

}

public void Area(float radius){

double area=Math.PI*radius*radius;

System.out.println("圆面积为:"+area);

}

public void Perimer(float radius){

double perimer=2*Math.PI*radius;

System.out.println("圆周长为:"+perimer);

}

public void print(){

System.out.println("圆点为:

"+"("+this.point.x+","+this.point.y+")"+" 半径为:"+this.radius);

}

}

public class Java1_20 {

public static void main(String[] args) {

Point point = new Point(3,4);

Circle circle = new Circle(point, 3);

circle.print();

circle.Area(circle.radius);

circle.Perimer(circle.radius);

}

}

相关主题