Java面向对象期末复习(题目练习)

程序填空题

1. 输入一个数n(n<10),求1!+2!+...+n!的和。

import java.util.*;

public class Sum {

public static void main(String[] args) {

        int sum,a=1;

        int n=new Scanner(System.in).nextInt();  

            sum=0               ;(1)

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

              a=       a*i          ;(3)

              sum+=a;

        }

        System.out.println(    sum    );(4)

        }

}

2. 输入一串字符(不含空格),将其中的大写字母转小写字母后存入到c盘的b.txt中。

import java.io.*;

import java.util.*;

public class IntoFile {

        public static void main(String[] args) {

                Scanner input=new Scanner(System.in);

                String num=input.   next()  ;(6)

                try {

                        FileWriter f=new FileWriter("c:/b.txt");

                        char ch;

                        for(int i=0;i<       num.length()           ;i++)(7){   

                        ch=num.charAt(i);

                        if(       ch>=A&&ch<=Z’      ) (8){

                                f.write((char)(ch+32);          

                        }//大转小

                            f.close()     ;(9)

                }

                    catch    (Exception e)(10){

                        System.out.print(e.toString());

                }

        }

}

3. 显示e:/aa目录下的文件

import    java.io.*      ;(11)

public class List {

        public static void main(String[] args) {

                File file=new File(" e:/aa     ");(12)

                String[] lists=file.list();

                File temp=null;

                for(String f:lists) {

                        temp=new File(file.getPath()+"/"+f);

                        if(temp.  isFile()       ())(13)

                                System.out.println(temp. getName()  +" "+temp.length());(14)

                }

        }

}

程序阅读题

1. static属性和static代码块是在加载的时候执行:1—2--3
static int a = 3;  //1
static {  //2
    a++;
}
public static void add(){a++;} //3
public static void main(String[] args) {
    Test.add();
    System.out.println("属性a的值:"+Test.a);
}

拓展:继承时,先父类static子类static父类普通属性-父类构造方法-子类属性-子类构造方法

程序设计题

1. 随机产生10个数[0,9]之间的随机整数,计算这10个数的平均值。(Math.random()产生0到1之间的随机数)
public class Test {
        public static void main(String[] args){
        int a[]=new int[10];
        double s=0;
        for(int i=0;i<=9;i++){
                a[i]=(int)(Math.random()*10);
                s+=a[i];
        }
        s=s/10;
        System.out.printf(“%.1f”,s);
}

//求最大值、最小值,该如何实现

2. 创建一个Shape类,area方法用来求面积,利用方法重载实现求多种图形的面积:

(1) area方法带一个参数时,计算圆周的面积;

(2) area方法带二个参数时,计算矩形的面积;

(3) area方法带三个参数时,计算三角形的面积。

(三角形面积的计算公式:,p=(a+b+c)/2,a、b、c是边长)   

public class Shape {
        public double area(double x){
                return Math.PI*x*x;
        }
        public double area(double x,double y){
                return x*y;
        }
        public double area(double x,double y,double z){
                double p=(x+y+z)/2;
                double s=Math.sqrt(p*(p-x)*(p-y)*(p-z));
                return s;
        }
}
3. 实现下列类图

abstract Shape{
    public abstract double area();
}
class Square extends Shape {	
    private double side;
	public double getSide() {
		return side;
    }
	public void setSide(double side) {
		this.side = side;
    }
    public Square() {
        this.side=0;
    }
    public Square(double w) {
        this.side=w;
    }
	public double area() {
        return side*side;}
    }
}
public class SquareTest {
	public static void main(String[] args) {
		Square b=new Square();
		b.setSide(1);
		System.out.println(b.area());
	}
}
4.  输入一个数n(n<10),求n的阶乘(类名为Factory)。
import java.util.*;
public class Factory {
        public static void main(String[] args) {
                int sum=1;
                int n=new Scanner(System.in).nextInt();
                for(int i=1;i<=n;i++)
                    sum*=i;
                System.out.println(sum);
        }
}
5. 输入一个数n,求1+3+5+7+...+(2n-1)(类名为Sum)
import java.util.*;
public class Sum {
    public static void main(String[] args) {
        int sum=0;
        int n=new Scanner(System.in).nextInt();
        for(int i=1;i<=n;i++)
            sum+=(2*i-1);
        System.out.println(sum);
    }
}
6. 输入一个数n,判断n是否是完数,结果显示yes或者no(类名Beauty,10分)(还有如水仙花数,素数等)
完数:
import java.util.*;
public class PerfactNumber {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();        
        int s=0;
        for(int i=1;i<=n-1;i++)
            if(n%i==0)
                s+=i;
        if(s==n)
            System.out.println("yes");
        else
            System.out.println("no");
    }
}
水仙花数:
import java.util.*;
public class Sum {
    public static void main(String[] args) {
    int x=new Scanner(System.in).nextInt();
    int hun=x/100;
    int ten=x/10%10;
    int gewei=x%10;
    if(x==(int)Math.pow(hun,3)+ten*ten*ten+gewei*gewei*gewei)
        System.out.println(“yes”);
    else
        System.out.println(“no”);
    }
}
素数:
import java.util.*;
public class Prim {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int n = input.nextInt();
    boolean flag = true;
    if (n == 1 || n == 0)
        flag = false;
    else {
        for (int i = 2; i <= n - 1; i++)
            if (n % i == 0) {
                flag = false;
                break;
            }
    }
    if (flag)
        System.out.println("yes");
    else
        System.out.println("no");
    }
}
冒泡排序:
int temp;
for(int i=0;i<arr.length-1;i++)
    for(int j=0;j<arr.length-1-i;j++)
        if(arr[j]>arr[j+1]) {
            temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
        }
    for(int a:arr) {
        System.out.print(a+" ");
    }
7. 输入一串字符,判断是否是回文,若是,显示“yes”,不是显示“no”(类名为Palindrome)
import java.util.Scanner;
public class Palindrome {
    public boolean isHuiWen(String b) {
        StringBuffer sb=new StringBuffer(b);
        sb.reverse();
        if(b.equals(sb.toString()))
            return true;
        else
            return false;
    }
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String s=input.nextLine();
        Palindrome h=new Palindrome();
        boolean result=h.isHuiWen(s);
        if(result)
            System.out.println("yes");
        else
            System.out.println("no");
    }
}

//拓展:如何实现逆串呢

8. 输入一串只含有省会城市的字符串,以,分隔,请输出每个省会城市
import java.util.Scanner;
public class FenGe {
    public static void main(String[] args) {
        String str=new Scanner(System.in).nextLine();
        String[] list=str.split(",");
        for(String name:list)
            System.out.println(name);
    }
}
9. 创建一类计算器类Calculator,利用重载的知识在计算机器类中实现若干个add 方法:
add 方法1:需要传入两个float型的参数,返回的结果类型是float;
add 方法2:需要传入两个String 型的参数,返回的结果类型是String;
add 方法3:需要传入两个int型整数的参数,返回的结果类型是int
创建一个测试类CalculatorTest进行方法测试。
class Caculator {
    public int add(int a,int b) {
        return a+b;
    }
    public float add(float a,float b) {
        return a+b;
    }
    public String add(String a,String b) {
        return a+b;
    }
}
public class CalculatorTest {
    public static void main(String[] args) {
        Caculator cal=new Caculator();
        System.out.println(cal.add(2,3));
        System.out.println(cal.add(2.0f,3.0f));
        System.out.println(cal.add("2.0","3.0"));     
    }
}
10. 创建两个类:Employee(员工类,抽象父类)和Manager(经理类,子类)。父类Employee中含一抽象方法void printSalary()。子类Manager重写父类方法printSalary,显示“收入为4000元”,再定义一个测试类ManagerTest进行测试。
abstract class Employee {
    abstract void printSalary ();
}

class Manager extends Employee {
    public void printSalary () {
        System.out.println(“收入为4000元”);
    }
}

public class ManagerTest {
    public static void main(String[] args) {
        Manager m=new Manager();
        m. printSalary ();
    }
}
11. 假设ArrayList集合中存放有《新少年四大名捕》剧中人物名字,分别是“冷血”,“无情”,“铁手”,“追命”,“楚离陌”和“姬瑶花”,请输入任意人物的名字,判断是否存在,若存在,则显示“他是本剧人物”,否则显示“无此人”。(类名为Search)
import java.util.*;
public class Search {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<String>();
        arr.add("冷血");
        arr.add("无情");
        arr.add("铁手");
        arr.add("追命");
        arr.add("楚离陌");
        arr.add("姬瑶花");
        Scanner input=new Scanner(System.in);
        String name=input.next();
        if(arr.contains(name))
            System.out.println("他是本剧人物");
        else
            System.out.println("无此人");
    }
}
12. 假设HashMap集合中存放有5个省份key的省会城市value(打*的为核心省份,如下表所示。请编程显示所有核心省份的省会城市。(类名Browser)

import java.util.*;
public class Browser {
    public static void main(String[] args) {
        HashMap<String,String>  map=new HashMap<String,String>();
        map.put("浙江省*", "杭州");
        map.put("上海省*", "上海");
        map.put("北京省*", "北京");
        map.put("河北省", "石家庄");
        map.put("四川省", "成都");
        //遍历记录
        Set<String> c=map.keySet();
        for(String s:c)
            if(s.endwith(“*”)
                System.out.println(map.get(s));
    }
}

13. 定义一个抽象类Shape,其中包括一个计算体积的抽象方法double vol();设计一正方体类Square,其中包含:(1)一边长a,私有属性,double,并需创建相应的set和get方法;(2)重写vol方法,用于计算此正方体的体积。创建一个测试类Test,在该类中输入任意的边长,显示其体积。
import java.util.*;
abstract class Shape {
    public abstract double vol();
}
class Square extends Shape {   
    private double a;
    public double getA() {
        return a;
    }
    public void setA(double a) {
        this.a = a;
    }
    public double vol() {
        return a*a*a;
    }
}

public class Test {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        Square s=new Square();
        s.setA(input.nextDouble());
        System.out.println(s.vol());
    }
}
14. 产生10个1~100的随机整数,由小到大排序后将其存放到当前包下面的文件b.txt中(类名为InFile)。
import java.io.*;
import java.util.*;
public class InFile {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int a[]=new int[10];
        for(int i=0;i<a.length;i++)
            a[i]= ((int)(Math.random()*100+1));
        Arrays.sort(a);
        try {
            DataOutputStream f = new DataOutputStream(new FileOutputStream(".//src/OOTest/b.txt"));
            for(int i=0;i<a.length;i++)
            f.writeInt(a[i]);
            f.close();
        } catch(Exception e) {
            System.out.print(e.toString());
        }
    }
}
15. 输入一串字符(含空格、数字和英文字母),将其中的空格替换成’*’字符后,存入到当前包下面的文件a.txt中(类名为StoreFile)。
import java.util.*;
import java.io.*;
public class StoreFile {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String str=input.nextLine();
        try {   
            char ch;
            FileWriter f=new FileWriter("e:/a.txt");
            for(int i=0;i<str.length();i++) {
                ch=str.charAt(i);
                if(ch==' ')
                    ch='*';
                f.write(ch);
            }
            f.close();
        }
        catch(Exception e) {
            System.out.print(e.toString());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43823060/article/details/131379253