沈师PTA2021Java编程题复习题库

6 篇文章 0 订阅

致谢:感谢@WalkingWithTheWind~帮我寻找PTA中的CSS选择器

1. 编程题:判断闰年 (10 分)

根据输入的正整数y所代表的年份,计算输出该年份是否为闰年 闰年的判断标准:
能够被4整除且不能被100整除的年份
或者能够被400整除的年份
输入格式:
输入n取值范围是 【1…3000】
输出格式:
是闰年,输出 yes
非闰年,输出 no
输入样例:
在这里给出一组输入。例如:
100
结尾无空行
输出样例:
在这里给出相应的输出。例如:
no
结尾无空行
答案:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int year;
        year = scanner.nextInt();
        if(year%4==0&&year%100!=0||year%400==0){
            System.out.println("yes");
        }
        else{
            System.out.println("no");
        }
    }
}

2. 学投资 (10 分)

小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。
输入格式:
M P N
输出格式:
复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)
输入样例:
10000 0.2 3
结尾无空行
输出样例:
17280 16000 1280
结尾无空行
答案:

import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
       Scanner in=new Scanner(System.in);
       long M=in.nextLong();
       double P=in.nextDouble(),sum1,sum2,c;
       int N=in.nextInt();
       sum1=M*(1+N*P);
       sum2=M*(Math.pow((1+P),(double)N));
       if(sum1>sum2) c=sum1-sum2;
       else c=sum2-sum1;
       System.out.print(Math.round(sum2)+" ");
       System.out.print(Math.round(sum1)+" ");
       System.out.print(Math.round(c));
   }
}

3. 点是否在圆内? (10 分)

编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心、半径为10的圆内。
输入格式:
输入任意一个点的x轴和y轴坐标值,且两个值之间空格分隔。
输出格式:
若点在圆内,输出1,否则输出0。
输入样例:
4 5
结尾无空行
输出样例:
1
结尾无空行
答案:

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        System.out.println(Math.sqrt(n1*n1+n2*n2)<=10?1:0);
    }
}


4. 给出一个月的总天数 (10 分)

编写程序,提示用户输入月份和年份,然后显示这个月的天数。
输入格式:
输入任意符合范围(1月12月)的月份和(1900年9999年)年份,且两个值之间空格分隔。
输出格式:
输出给定年份和月份的天数。
输入样例:
2 2000
结尾无空行
输出样例:
29
结尾无空行
答案:

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3;
        switch(n1){
            case 2:
                if(n2%4==0&&n2%100!=0||n2%400==0)
                    n3=29;
                else
                    n3=28;
                break;
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                n3=31;
                break;
            default:
                n3=30;
        }
        System.out.println(n3);
    }
}


5. 成绩分级管理 (10 分)

学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办法是:小于60分为E类;60分至70分(不含70分)为D类;70分至80分(不含)为C类;80分至90分(不含)为B类;90分以上为A类。设计一个程序,对输入的成绩进行等价划分
输入格式:
输入一个整数表示成绩。
输出格式:
根据输入的成绩,输出对应的等级(大写字母)
输入样例:
在这里给出一组输入。例如:
72
结尾无空行
输出样例:
在这里给出相应的输出。例如:
C
结尾无空行
答案:

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int score;
        score = scanner.nextInt();
        switch(score/10){
            case 9:
            case 10:
                System.out.println("A");
                break;
            case 8:
                System.out.println("B");
                break;
            case 7:
                System.out.println("C");
                break;
            case 6:
                System.out.println("D");
                break;
            default:
                System.out.println("E");
                break;
            
        }
    }
}

6. Java中二进制位运算 (10 分)

本题目要求读入2个整数和一个字符,然后根据这个字符值,对两个整数进行相应的二进制位的运算。要求必须使用switch选择结构。
(1)如果字符是&,则两个整数进行二进制位的与运算;
(2)如果字符是 |,则两个整数进行二进制位的或运算;
(3)如果字符是^,则两个整数进行二进制位异或运算;
(4)如果是其他字符,则固定输出信息:ERROR
输入格式:
在一行中依次输入整数1,字符,整数2。
输出格式:
类似3 & 4 = 0
其中,运算符号&的前后都有一个空格,等号的前后也都有一个空格。 上面表示3和4做二进制的与运算,结果是0。
输入样例:
3的二进制是0011,4的二进制是0100,二者与运算的结果是0。
3 & 4
结尾无空行
输出样例:
注意&和=的前后,都是有且仅有一个空格。
3 & 4 = 0
结尾无空行
输入样例:
7 X 3
结尾无空行
输出样例:
ERROR
结尾无空行
答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        String [] arr = str.split("\\s+");
        int num1 = Integer.parseInt(arr[0]);
        int num2 = Integer.parseInt(arr[2]);
        switch (arr[1]){
            case "&":
                System.out.println(num1 + " & " + num2 + " = " + (num1&num2));
                break;
            case "|":
                System.out.println(num1 + " | " + num2 + " = " + (num1|num2));
                break;
            case "^":
                System.out.println(num1 + " ^ " + num2 + " = " + (num1^num2));
                break;
            default:
                System.out.println("ERROR");
                break;
        }

    }
}

7. JAVA-求整数序列中出现次数最多的数 (10 分)

要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
在一行中给出序列中整数个数N(0<N≤1000),依次给出N个整数,每个整数占一行。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
在这里给出一组输入。例如:
10
3
2
-1
5
3
4
3
0
3
2
结尾无空行
输出样例:
在这里给出相应的输出。例如:
3 4
结尾无空行
答案:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
//使用HashMap键值的形式对存放输入的数和次数
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        HashMap<Integer,Integer> mapCount = new HashMap<>();
        int n = cin.nextInt();
        for(int i = 0;i < n;i++){
            int x = cin.nextInt();
            if(mapCount.containsKey(x)){
                mapCount.put(x,mapCount.get(x)+1);
            }
            else{
                mapCount.put(x,1);
            }
        }
        int k = 0,sum = 0;
        //Map.Entry类提供getKey/getValue方法
        for(Map.Entry<Integer,Integer> entry: mapCount.entrySet()){
            int x = entry.getKey();
            int y = entry.getValue();
            if(y > sum){
                k = x;
                sum = y;
            }
        }
        System.out.println(k+" "+sum);
    }
}

8. 统计正数和负数的个数然后计算这些数的平均值 (10 分)

编写程序,输入未指定个数的整数,判断读入的正数有多少个,读入的负数有多少个,然后计算这些输入值得总和及平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以double型数据显示。
输入格式:
输入在一行中给出一系列整数,其间以空格分隔。当读到0时,表示输入结束,该数字不要处
输出格式:
在第一行中输出正整数的个数; 在第二行中输出负整数的个数; 在第三行中输出这些输入值的总和(不对0计数); 在第四行中输出这些输入值的平均值(double型数据)。
输入样例:
1 2 -1 3 0
结尾无空行
输出样例:
3
1
5
1.25
结尾无空行
答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int positiveNum = 0;
        int	negativeNum = 0;
        int sum = 0;

        while (true) {
            int x = input.nextInt();
            if (x == 0)
                break;
            if (x > 0)
                positiveNum++;
            else
                negativeNum++;
            sum += x;
        }

        if (positiveNum + negativeNum != 0) {
            System.out.println(positiveNum);
            System.out.println(negativeNum);
            System.out.println(sum);

            double average = 0.0;
            average = (double)sum/ (positiveNum + negativeNum);
            System.out.println(average);
        }
    }
}

9. 分队列 (10 分)

班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成了一列,同学按身高从1到n编号,你能告诉我最后哪些编号的同学站在了第一列么?
输入格式:
输入一个正整数n,表示班级的人数。
输出格式:
按顺序输出所有在第一列的同学对应的编号,每两个编号之间用一个空格隔开。
输入样例:
11
输出样例:
1 3 5 7 9 11
答案:

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int count=1;
        while(count<=n-2){
            System.out.print(count+" ");
            count+=2;
        }
        System.out.print(count);
    }

}


10. 累加器 (10 分)

请你实现一个累加器。输入n个非负整数,输出他们的和。 1<n<1000,而每个数则<10000。
输入格式:
输入包括两行。 第一行:包括一个整数n,表示总共有n个数。 第二行:包含n个整数。
输出格式:
输出n个数的和。
输入样例:
4
3 2 1 4
结尾无空行
输出样例:
10
结尾无空行
答案:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int sum=0;
        for(int i=0;i<n;i++){
            int x=in.nextInt();
            sum+=x;
        }
        System.out.print(sum);
    }

}


11. 我是升旗手 (10 分)

一年一度的升旗手选拔又要到了,学校要求每个班级选出一位同学做升旗手的候选人。因 为升旗手对身高有严格的要求,所以班主任决定选班级里个子最高的同学(如果两位同学 一样高,则选任意一位)。你能很快地给老师答案么?
输入格式:
输入包括两行。 第一行:包括一个整数n,表示班级里共有n位同学。 第二行:包含n个三位数,表示每一位同学的身高。
输出格式:
输出身高最高的同学的身高。
输入样例:
4
130 125 129 140
结尾无空行
输出样例:
140
结尾无空行
答案:

import java.util.Scanner;
public class Main {


    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int max=0;
        for(int i=0;i<n;i++){
            int x=in.nextInt();
            if(x>max) max=x;
        }
        System.out.print(max);
    }
    
}


12. 666 (10 分)

中国人非常喜欢6这个数字,因为大家总爱说66大顺啊。数学狂人李某人喜欢把什么都数字化,于是她把顺利这个词也定义了数量级,6代表1级顺利,66代表2级顺利,666代表3级顺利,以此类推。你看,数学狂人的世界总是让人无法理解。今天,李某人决定将数学进行到底,现在她设前n级顺利的和是sn。
sn=6+66+666+…+66…66(n个6)。
假设你已经知道了数字n,那么,你能帮李某人求出sn么?
输入格式:
输入一个正整数n,n的范围是[0,10)。
输出格式:
输出Sn的值。
输入样例:
2
结尾无空行
输出样例:
72
结尾无空行
答案:

import java.util.Scanner;
public class Main {


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n;
        n = in.nextInt();
        int sum=0,num=0;
        int x=1;
        for(int i=1;i<=n;i++){
            num += 6*x;
            sum += num;
            x *= 10;
        }
        System.out.println(sum);

    }

}

13. 倒顺数字串 (10 分)

输入正整数n,输出它的倒顺数字串。如n=6时,输出
1 2 3 4 5 6 5 4 3 2 1
输入格式:
输入一个正整数n,n的范围是[1,50]。
输出格式:
n的倒顺数字串,每两个数字之间只用一个空格隔开。
输入样例:
6
结尾无空行
输出样例:
1 2 3 4 5 6 5 4 3 2 1
结尾无空行
答案:

import java.util.Scanner;
public class Main {


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        if(n!=1){
            for(int i=1;i<=n;i++){
                System.out.print(i+" ");
            }
            for (int i=n-1;i>1;i--){
                System.out.print(i+" ");
            }
        }
        System.out.print(1);
    }

}


14. 上三角数字三角形 (10 分)

输入一个正整数n,输出具有n层的上三角数字三角形。
输入格式:
只有一个正整数n,1<=n<=100。
输出格式:
一个上三角数字三角形,每个数字占四个字符位置。
输入样例:
5
结尾无空行
输出样例:
1 2 3 4 5
6 7 8 9
10 11 12
13 14
15
结尾无空行
答案:

import java.util.Scanner;
public class Main {


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int count=1;
        for(int i=1;i<=n;i++){
            for (int j=1;j<=n-i+1;j++){
                 System.out.printf("%4d",count);
                count++;
            }
            System.out.println();
        }
        
    }
}


15. 求质数 (10 分)

本题目要求输入一个大于等于2的正整数,求所有不大于该正整数的质数。
输入格式:
输入一个不小于2的正整数。
输出格式:
对输入的正整数,输出不大于该正整数的质数。
输入样例:
30
结尾无空行
输出样例:
2 3 5 7 11 13 17 19 23 29
结尾无空行
答案:

import java.util.Scanner;
public class Main {


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        for(int i=2;i<=num;i++){
            int j;
            for(j=2;j<i;j++){
                if(i%j==0)
                    break;
            }
            if (i==j)
                System.out.print(i+" ");
        }


    }

}

16. jmu-Java-03面向对象基础-01-构造函数与toString (10 分)

定义一个有关人的Person类,内含属性:
String name、int age、boolean gender、int id,所有的变量必须为私有(private)。 注意:属性顺序请严格按照上述顺序依次出现。
1.编写无参构造函数:
打印"This is constructor"。
将name,age,gender,id按照name,age,gender,id格式输出
2.编写有参构造函数
依次对name,age,gender赋值。
3.覆盖toString函数:
按照格式:类名 [name=, age=, gender=, id=]输出。建议使用Eclipse自动生成.
4.对每个属性生成setter/getter方法
5.main方法中
首先从屏幕读取n,代表要创建的对象个数。
然后输入n行name age gender , 调用上面2编写的有参构造函数新建对象。
然后将刚才创建的所有对象逆序输出。
接下来使用无参构造函数新建一个Person对象,并直接打印该对象。
输入样例:
3
a 11 false
b 12 true
c 10 false
输出样例:
Person [name=c, age=10, gender=false, id=0]
Person [name=b, age=12, gender=true, id=0]
Person [name=a, age=11, gender=false, id=0]
This is constructor
null,0,false,0
Person [name=null, age=0, gender=false, id=0]
答案:

import java.util.Scanner;

class Person{
    private String name = null;
    private int age = 0;
    private boolean gender = false;
    private int id = 0;

    public Person() {
        System.out.println("This is constructor");
        System.out.println(name+","+age+","+gender+","+id);
        System.out.println("Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]");
    }

    public Person(String n, int a, boolean g) {
        this.name = n;
        this.age = a;
        this.gender = g;
    }

    public String toString() {
        System.out.println("Person [name="+this.name+", age="+this.age+", gender="+this.gender+", id="+0+"]");
        return name;
    }
}

public class Main {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int number = reader.nextInt();
        Person[] per = new Person[number];
        for(int i=0; i<per.length; i++) {
            String name = reader.next();
            int age = reader.nextInt();
            boolean genter = reader.nextBoolean();
            per[i] = new Person(name,age,genter);
        }
        for(int x=per.length-1; x>=0;x--){
            per[x].toString();
        }

        per.toString();

        Person s = new Person();
    }

}

17. 学生类-构造函数 (10 分)

定义一个有关学生的Student类,内含类成员变量: String name、String sex、int age,所有的变量必须为私有(private)。
1.编写有参构造函数: 能对name,sex,age赋值。
2.覆盖toString函数:
按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式
3.对每个属性生成setter/getter方法
4.main方法中
•输入1行name age sex , 调用上面的有参构造函数新建对象。
输入样例:
tom 15 male
结尾无空行
输出样例:
Student [name=‘tom’, sex=‘male’, age=15]
结尾无空行
答案:

import java.util.Scanner;

class Student{
    private String name;
    private String sex;
    private int age;
    public Student(String name, String sex, int age) {

        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [name='" + name + "', sex='" + sex + "', age=" + age + "]";

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

public class Main{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name=sc.next();
        int age=sc.nextInt();
        String sex=sc.next();
        
        Student s1=new Student(name,sex,age);
        System.out.println(s1.toString());

    }
    
}

18. 定义类 (10 分)

请补充以下代码,完成输出要求。(注意:需要提交完整代码)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a,b,c,d,e;
a = in.nextInt();
b = in.nextInt();
c = in.nextInt();
d = in.nextInt();
e = in.nextInt();
RR rr = new RR();
double dd = rr.fun(a,b,c,d,e);
System.out.printf("%.2f",dd);
}
}
class RR{

}
输入格式:
在一行中给出5个不超过1000的正整数。
输出格式:
输出5个整数的平均值,保留小数点后两位。
输入样例:
1 2 3 4 5
结尾无空行
输出样例:
3.00
结尾无空行
答案:


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                int a,b,c,d,e;
                a = in.nextInt();
                b = in.nextInt();
                c = in.nextInt();
                d = in.nextInt();
                e = in.nextInt();
                RR rr = new RR();
                double dd = rr.fun(a,b,c,d,e);
                System.out.printf("%.2f",dd);
    }
}

class RR{
    public double fun(int a, int b, int c, int d, int e)
    {
        return (a+b+c+d+e)/5;
    }
}

19. 计算年龄 (10 分)

定义一个Birthday类,其成员变量有3个整形变量(出生的年月日):year,month,day;提供构造方法对这3个成员变量进行初始化;提供成员变量的get、set方法;成员函数有getAge(),功能是实现计算到2017年12月25日时该Birthday对象的年龄。编写程序测试这个类。
输入格式:
输入出生的年、月、日(注:输入的年月日以换行隔开)
输出格式:
计算得到年龄
输入样例:
在这里给出一组输入。例如:
1995
12
23
结尾无空行
输出样例:
在这里给出相应的输出。例如:
age=22
结尾无空行
答案:

import java.util.Scanner;
class Birthday{
    private int year;
    private int month;
    private int day;    
    public Birthday(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        this.year = year;
    }
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public int getDay() {
        return day;
    }
    public void setDay(int day) {
        this.day = day;
    }
    public static void getAge(int year,int month,int day){
        int age=0;
        age = 2017-year;
        if(month==12 && day>=25){
        age--;
        }
        System.out.println("age="+age);
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner scan =new Scanner(System.in);
        int year=scan.nextInt();
        int month=scan.nextInt();
        int day=scan.nextInt();
        Birthday.getAge(year,month,day);
    }

}

20. 定义类与创建对象 (10 分)

定义一个类Person,定义name和age属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄。
输入格式:
本题目无输入
输出格式:
在一行中输出一个人的姓名和年龄
输入样例:
在这里给出一组输入。例如:
结尾无空行
输出样例:
在这里给出相应的输出。例如:
this person is lili,her age is 19
this person is lucy,her age is 20
结尾无空行
答案:

class Person{
   String name;
   int age;
   Person(String n,int a){
   name = n;
   age=a;
}
}
public class Main{
public static void main(String args[]){
  Person p1 = new Person("lili",19);
  Person p2 = new Person("lucy",20);
  System.out.println("this person is "+p1.name+
  ",her age is "+p1.age);
  System.out.print("this person is "+p2.name+
  ",her age is "+p2.age);
}
}

21. 设计一个BankAccount类 (10 分)

设计一个BankAccount类,这个类包括:
(1)一个int型的balance表时账户余额。
(2)一个无参构造方法,将账户余额初始化为0。
(3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。
(4)一个getBlance()方法,返回账户余额。
(5)一个withdraw()方法:带一个amount参数,并从账户余额中提取amount指定的款额。
(6)一个deposit()方法:带一个amount参数,并将amount指定的款额存储到该银行账户上。
设计一个Main类进行测试,分别输入账户余额、提取额度以及存款额度,并分别输出账户余额。
输入格式:
依次输入账户余额、提取额度、存款额度
输出格式:
依次输出初始账户余额、提取amount额度后的账户余额、存入amount后的账户余额
输入样例:
在这里给出一组输入。例如:
700
70
7
输出样例:
在这里给出相应的输出。例如:
700
630
637
答案:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int a,b,c;
		a=in.nextInt();
		b=in.nextInt();
		c=in.nextInt();
		
		BankAccount m=new BankAccount(a);
		System.out.println(m.getBalance());
		System.out.println(m.withdraw(b));
		System.out.println(m.withdraw(b)+m.deposit(c));
	}

}
class BankAccount{
	int balance;
	
	BankAccount(){
		this.balance=0;
	}
	BankAccount(int balance){
		this.balance=balance;
	}
	public int getBalance() {
		return balance;
	}
	public int withdraw(int amount) {
		return balance-amount;
	}
	
	public int deposit(int amount) {
		return amount;
	}
}

22. 评委打分 (10 分)

班级里要搞智力竞赛啦!同学们都踊跃参加。进入最后决赛的是10个同学,随着一道道题目的出示,有时是1号选手得分,有时是5号选手得分,每次答对者得10分,最后结果如何呢?
输入格式:
第一行有十个整数,表示十位同学的初始分。第二行一个整数n,表示有n道题竞赛。 接下去有n行,每行有一个数字x,x表示本次可以加分的选手序号(每次答对者得10分)。
输出格式:
10个同学最终的得分值,每两位同学之间有一个空格。
输入样例:
10 0 0 0 10 10 0 0 0 10
3
1
10
1
结尾无空行
输出样例:
30 0 0 0 10 10 0 0 0 20
结尾无空行
答案:

import java.util.Scanner;

public class Main{
    public static void main(String []args){
        Scanner s = new Scanner(System.in);
        int a[]=new int [10];
        for(int i=0;i<10;i++)
        {
            a[i]=s.nextInt();
        }
        int n = s.nextInt();                        //代表接下来输入n个数
        int j;
        for(int i=0;i<n;i++)
        {
            j=s.nextInt();
            j--;
            a[j]+=10;
        }
        for(int i=0;i<10;i++)
        {
            System.out.print(a[i]);
            if(i!=9)
                System.out.print(" ");
        }
    }
}

23. 结伴同行去秋游 (10 分)

可以去秋游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴…依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!
输入格式:
第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同学的学号,学号之间有一个空格。
输出格式:
共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。
输入样例:
6
5 6 4 12 3 2
结尾无空行
输出样例:
5 2
6 3
4 12
结尾无空行
答案:

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int n=input.nextInt();
		int a[]=new int[n];
		for(int i=0;i<n;++i) {
			a[i]=input.nextInt();
		}
		for(int i=0,j=n-1;i<j;++i,--j) {
			System.out.println(a[i]+" "+a[j]);
		}
	}
}

24. 数组元素的删除 (10 分)

完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。 重复若干次这样的删除,得到最后的结果。
输入格式:
第一行包括一个整数n(1<=n<=100),表示数组元素的个数。 第二行输入n个数组元素,均为整数,用空格隔开。 第三行输入一个数k(1<=k<=100),表示要进行k次删除。 接下来k行,每行一个数x,表示要删除第x个元素。
输出格式:
输出经过k次删除后的数组,每两个元素之间用空格隔开。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
4
3
2
4
6
结尾无空行
输出样例:
1 4 5 7 8 10
结尾无空行
答案:

import java.util.Scanner;
import java.util.LinkedList;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		LinkedList<Integer> list = new LinkedList<Integer>();
		int n = sc.nextInt();
		for(int i=0;i<n;i++) {
			list.add(sc.nextInt());
		}
		int k = sc.nextInt();
		for(int i=0;i<k;i++) {
			int index = sc.nextInt();
			list.remove(index-1);
		}
		sc.close();
		
		for(int i=0;i<list.size();i++) {
			System.out.print(list.get(i));
			if(i<list.size()-1) {
				System.out.print(" ");
			}
		}	
	}
}

25. 定义商品类,封装成员变量,输出对象 (10 分)

定义一个商品类。创建对象并按指定格式输出它。 商品类要求:
(1)成员变量:商品编号(String) 、商品名称(String)、商品单价(double)
(2)成员变量封装,定义为私有属性,并为每个成员变量定义getXXXX,setXXXX方法
(3)定义构造方法,要求带三个参数,参数值用于给成员变量赋值。
(4)重写toString()方法,将对象转换为字符串,格式:商品编号,商品名称,商品单价
测试类要求:
按指定的格式 输入商品信息,调用构造方法生成对象,并输出它。
例:输入:WJ002 记事本 5.5
输出:WJ002,记事本,5.5
输入商品的信息,每个属性值之间用1个空格分隔。 输出 格式,商品的每个属性值之间用逗号分隔。
输入样例:
WJ002 记事本 5.5
结尾无空行
输出样例:
WJ002,记事本,5.5
结尾无空行
答案:

import java.util.Scanner;
class stuff{
    private String number;
    private String name;
    private double price;
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    stuff(String number, String name,double price ) {//带参的构造方法
        this.name = name;
        this.number = number;
        this.price = price;
    }

    public String toString(){
        return getNumber()+","+getName()+","+getPrice();
    }

}
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String number = sc.next();
        String name = sc.next();
        double price = sc.nextDouble();
        stuff a = new stuff(number, name, price);
        System.out.println(a.toString());
    }

}

26. 图形继承 (10 分)

编写程序,实现图形类的继承,并定义相应类对象并进行测试。
类Shape,无属性,有一个返回0.0的求图形面积的公有方法public double getArea();//求图形面积
类Circle,继承自Shape,有一个私有实型的属性radius(半径),重写父类继承来的求面积方法,求圆的面积
类Rectangle,继承自Shape,有两个私有实型属性width和length,重写父类继承来的求面积方法,求矩形的面积
类Ball,继承自Circle,其属性从父类继承,重写父类求面积方法,求球表面积,此外,定义一求球体积的方法public double getVolume();//求球体积
类Box,继承自Rectangle,除从父类继承的属性外,再定义一个属性height,重写父类继承来的求面积方法,求立方体表面积,此外,定义一求立方体体积的方法public double getVolume();//求立方体体积
注意:
每个类均有构造方法,且构造方法内必须输出如下内容:Constructing 类名
每个类属性均为私有,且必须有getter和setter方法(可用Eclipse自动生成)
输出的数值均保留两位小数
主方法内,主要实现四个功能(1-4): 从键盘输入1,则定义圆类,从键盘输入圆的半径后,主要输出圆的面积; 从键盘输入2,则定义矩形类,从键盘输入矩形的宽和长后,主要输出矩形的面积; 从键盘输入3,则定义球类,从键盘输入球的半径后,主要输出球的表面积和体积; 从键盘输入4,则定义立方体类,从键盘输入立方体的宽、长和高度后,主要输出立方体的表面积和体积;
假如数据输入非法(包括圆、矩形、球及立方体对象的属性不大于0和输入选择值非1-4),系统输出Wrong Format
输入格式:
共四种合法输入
1 圆半径
2 矩形宽、长
3 球半径
4 立方体宽、长、高
输出格式:
按照以上需求提示依次输出
输入样例1:
在这里给出一组输入。例如:
1 1.0
结尾无空行
输出样例1:
在这里给出相应的输出。例如:
Constructing Shape
Constructing Circle
Circle’s area:3.14
结尾无空行
输入样例2:
在这里给出一组输入。例如:
4 3.6 2.1 0.01211
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
Constructing Shape
Constructing Rectangle
Constructing Box
Box’s surface area:15.26
Box’s volume:0.09
结尾无空行
输入样例3:
在这里给出一组输入。例如:
2 -2.3 5.110
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
Wrong Format
结尾无空行
答案:

import java.util.Scanner;

class Shape{
	Shape(){
		System.out.println("Constructing Shape");
	}
	public double getArea() {
		return 0.0;
	}
}

class Circle extends Shape{
	private double radius;
	Circle() {
		System.out.println("Constructing Circle");
	}
	@Override
	public double getArea() {
		return radius*radius*Math.PI ;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	public double getRadius() {
		return radius;
	}
	
}

class Rectangle extends Shape{
	private double width,length;
	Rectangle() {
		System.out.println("Constructing Rectangle");
	}
	@Override
	public double getArea() {
		return width*length;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	public void setLength(double length) {
		this.length = length;
	}
	public double getWidth() {
		return width;
	}
	public double getLength() {
		return length;
	}
	
}

class Ball extends Circle{
	Ball(){
		System.out.println("Constructing Ball");
	}
	@Override
	public double getArea() {
		return super.getArea()*4;
	}
	public double getVolume() {
		return getArea()/3*getRadius();
	}
}

class Box extends Rectangle{
	private double height;
	Box(){
		System.out.println("Constructing Box");
	}
	@Override
	public double getArea() {
		return 2*(getWidth()*getLength()+getWidth()*getHeight()+getLength()*getHeight());
	}
	public double getVolume() {
		return super.getArea()*height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getHeight() {
		return height;
	}
	
}

public class Main {

	private static Scanner type;

	public static void main(String[] args) {
		type = new Scanner(System.in);
		int a=type.nextInt();
		if(a>4||a<1) {
			System.out.println("Wrong Format");
			return;
		}
		if(a==1) {
			double b=type.nextDouble();
			if(b<0) {
				System.out.println("Wrong Format");
				return;
			}
			Circle c=new Circle();
			c.setRadius(b);
			System.out.println("Circle's area:"+String.format("%.2f",c.getArea()));
		}
		if(a==2) {
			double b=type.nextDouble();
			double c=type.nextDouble();
			if(b<0||c<0) {
				System.out.println("Wrong Format");
				return;
			}
			Rectangle d=new Rectangle();
			d.setWidth(b);
			d.setLength(c);
			System.out.println("Rectangle's area:"+String.format("%.2f",d.getArea()));
		}
		if(a==3) {
			double b=type.nextDouble();
			if(b<0) {
				System.out.println("Wrong Format");
				return;
			}
			Ball c=new Ball();
			c.setRadius(b);
			System.out.println("Ball's surface area:"+String.format("%.2f",c.getArea()));
			System.out.println("Ball's volume:"+String.format("%.2f",c.getVolume()));
		}
		if(a==4) {
			double b=type.nextDouble();
			double c=type.nextDouble();
			double d=type.nextDouble();
			if(b<0||c<0||d<0) {
				System.out.println("Wrong Format");
				return;
			}
			Box e=new Box();
			e.setHeight(b);
			e.setLength(c);
			e.setWidth(d);
			System.out.println("Box's surface area:"+String.format("%.2f",e.getArea()));
			System.out.println("Box's volume:"+String.format("%.2f",e.getVolume()));
		}
	}
}

27. 设计圆和圆柱体 (10 分)

编写一个完整的Java Application 程序。包含类Circle、Cylinder、Main,具体要求如下。
(1)编写类Circle,表示圆形对象,包含以下成员
①属性:

  1. radius:私有,double型,圆形半径;
    ②方法:
  2. Circle(double radius), 构造方法,用参数设置圆的半径
  3. Circle(),构造方法,将圆形初始化为半径为0。
  4. void setRadius(double r):用参数r设置radius的值
  5. double getRadius():返回radius的值
  6. double getArea(),返回圆形的面积
  7. double getPerimeter(),返回圆形的周长
  8. public String toString( ),将把当前圆对象的转换成字符串形式,例如圆半径为10.0,返回字符串"Circle(r:10.0)"。
    (2)编写一个类Cylinder,表示圆柱形对象,包含以下成员
    ①属性:
  9. height:私有,double型,圆柱体高度;
  10. circle:私有,Circle类型,圆柱体底面的圆形;
    ②方法:
  11. Cylinder(double height,Circle circle), 构造方法,用参数设置圆柱体的高度和底面的圆形
  12. Cylinder(),构造方法,将圆柱体的高度初始化为0,底面圆形初始化为一个半径为0的圆形。
  13. void setHeight(double height):用参数height设置圆柱体的高度
  14. double getHeight():返回圆柱体的高度
  15. void setCircle(Circle circle):用参数circle设置圆柱体底面的圆形
  16. Circle getCircle():返回圆柱体底面的圆形
  17. double getArea(),重写Circle类中的area方法,返回圆柱体的表面积
  18. double getVolume(),返回圆柱体的体积
  19. public String toString( ),将把当前圆柱体对象的转换成字符串形式,例如半径为10.0,高为5.0,返回字符串"Cylinder(h:5.0,Circle(r:10.0))"。
    (3)编写公共类Main,在main()方法中实现如下功能
    输入一个整数n,表示有n个几何图形。
    对于每一个几何图形,先输入一个字符串,“Circle”表示圆形,“Cylinder”表示圆柱体。
    如果是圆形,输入一个浮点数表示其半径。要求计算其面积和周长并输出。
    如果是圆柱体,输入两个浮点数分别表示其半径和高度。要求计算其面积和体积并输出。

将以下代码附在自己的代码后面:

public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i = 0; i < n; i++) {
String str = input.next();
if(str.equals(“Circle”)) {
Circle c = new Circle(input.nextDouble());
System.out.println(“The area of " + c.toString() + " is " + String.format(”%.2f",c.getArea()));
System.out.println(“The perimeterof " + c.toString() + " is “+ String.format(”%.2f”,c.getPerimeter()));
} else if(str.equals(“Cylinder”)) {
Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
System.out.println(“The area of " + r.toString() + " is " + String.format(”%.2f",r.getArea()));
System.out.println(“The volume of " + r.toString() + " is " + String.format(”%.2f",r.getVolume()));
}
}
}
}
输入格式:
第一行输入一个整数n,表示有n个几何图形。
以下有n行,每行输入一个几何图形的数据。
每行先输入一个字符串表示几何图形的类型,“Circle”表示圆形,“Cylinder”表示圆柱体。
如果是圆形,输入一个浮点数表示其半径。
如果是圆柱体,输入两个浮点数分别表示其半径和高度。
输出格式:
如果是圆形,要求计算其面积和周长并输出。
如果是圆柱体,要求计算其面积和体积并输出。
注意,圆周率用Math.PI
输入样例:
在这里给出一组输入。例如:
4
Circle 10.0
Cylinder 10.0 10.0
Circle 1.1
Cylinder 1.1 3.4
输出样例:
在这里给出相应的输出。例如:
The area of Circle(r:10.0) is 314.16
The perimeterof Circle(r:10.0) is 62.83
The area of Cylinder(h:10.0,Circle(r:10.0)) is 1256.64
The volume of Cylinder(h:10.0,Circle(r:10.0)) is 3141.59
The area of Circle(r:1.1) is 3.80
The perimeterof Circle(r:1.1) is 6.91
The area of Cylinder(h:1.1,Circle(r:3.4)) is 96.13
The volume of Cylinder(h:1.1,Circle(r:3.4)) is 39.95
答案:

import java.util.Scanner;
class Circle {
private double radius;
    public Circle(){radius=0;}
    public Circle(double radius) {
        this.radius = radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public double getRadius() {
        return radius;
    }
   public double getArea(){
        return Math.pow(radius,2)*3.1415926f;
    }
    public double getPerimeter(){
        return 2*radius*3.1415926f;
    }
    public String toString( ){
        return "Circle(r:"+this.radius+")";
    }
}

class Cylinder extends Circle{
private double height;
private Circle circle;

    public Cylinder(double height, Circle circle) {
        this.height = height;
        this.circle = circle;
    }
    public Cylinder(){this.height=0;}

    public void setHeight(double height) {
        this.height = height;
    }

    public void setCircle(Circle circle) {
        this.circle = circle;
    }

    public double getHeight() {
        return height;
    }

    public Circle getCircle() {
        return circle;
    }
    public double getArea(){
        return height*circle.getPerimeter()+circle.getArea()*2;
    }
    public double getVolume(){
        return circle.getArea()*height;
    }
    public String toString( ){
       return  "Cylinder(h:"+this.height+","+this.circle.toString()+")";
    }
}
public class Main{
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for(int i = 0; i < n; i++) {
            String str = input.next();
            if(str.equals("Circle")) {
                Circle c = new Circle(input.nextDouble());
                System.out.println("The area of " + c.toString() + " is " + String.format("%.2f",c.getArea()));
                System.out.println("The perimeterof " + c.toString() + " is "+ String.format("%.2f",c.getPerimeter()));
            } else if(str.equals("Cylinder")) {
                Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
                System.out.println("The area of " + r.toString() + " is " + String.format("%.2f",r.getArea()));
                System.out.println("The volume of " + r.toString() + " is " + String.format("%.2f",r.getVolume()));
            }
        }
        input.close();
    }
}

28. jmu-Java-01入门-取数字 (10 分)

本题目要求读入若干个代表整数的字符串,然后将其转化为整数。
如果该数>=10000且<=20000,则依次输出其对应的二进制字符串、八进制字符串、十六进制字符串。
否则将字符串中的每个数字抽取出来,然后将所有数字加总求和。
提示:参考jdk文档的Integer,
输入样例:
123
10000
-123
314159265
输出样例:
1 2 3 6
10011100010000,23420,2710
1 2 3 6
3 1 4 1 5 9 2 6 5 36
答案:


import java.util.Scanner;
 
public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str;
		while(true){
			str = sc.next();
			Integer data = new Integer(str);
			if(data.intValue() >= 10000 && data.intValue()<=20000){
				System.out.print(Integer.toBinaryString(data.intValue()));
				System.out.print(",");
				System.out.print(Integer.toOctalString(data.intValue()));
				System.out.print(",");
				System.out.print(Integer.toHexString(data.intValue()));
				System.out.println();
			}
			else{
				boolean flag = true;
			int add = 0;
			for(int i=0; i<str.length();++i){
				if(str.charAt(i) == '-'){
					continue;
				}
				if(flag){
					flag = false;
				}
				else{
					System.out.print(" ");
				}
				System.out.print(str.charAt(i));
				add += str.charAt(i) - '0';
			}
			System.out.print(" ");
			System.out.println(add);
			}
			
		}
		//sc.close();
	}
}

29. jmu-Java-01入门-取数字浮点数 (10 分)

本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。
输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。
输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。
输入样例:
-123.01
234
结尾无空行
输出样例:
7
9
结尾无空行
答案:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (true) {
			String s = sc.nextLine();
			char[] ch = s.toCharArray();
			int sum = 0;
			for (int i = 0; i < ch.length; i++) {
				if (ch[i] == '-'|| ch[i] == '.') {

				} else {
					//将字符char类型转换成int类型
					int temp = Integer.parseInt(String.valueOf(ch[i]));
					sum += temp;
				}
			}
			System.out.println(sum);
		}
	}
}

30. 声明图书类,记录图书总册数,利用静态变量赋值。 (10 分)

声明一个图书类,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数,记录图书的总册数;在构造方法中,利用静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。
输出格式:
请输出每本图书对应的书名,书号,书价以及总图书数。
输出样例:
书名:Java程序设计, 书号:1, 书价:34.5
书名:数据结构, 书号:2, 书价:44.8
书名:C++程序设计, 书号:3, 书价:35.0
图书总册数为:3
答案:


public class Main {
	public static void main(String[] args) {
		Books b1 = new Books("Java程序设计",34.5);
		Books b2 = new Books("数据结构",44.8);
		Books b3 = new Books("C++程序设计",35.0);
		b1.show();
		b2.show();
		b3.show();
		System.out.println("图书总册数为:"+Books.count);
	}
}


class Books{
	private String title;
	private static int id;
	private double price;
	static int count;
	
	public Books() {}
	public Books(String title,double price) {
		this.title = title;
		this.price = price;
		count++;	
	}
	public void show() {
		id++;
		System.out.println("书名:"+title+", 书号:"+Books.id+", 书价:"+price);
	}
}

31. 定义类2 (10 分)

请补充以下代码,完成输出要求。(注意:需要提交完整代码)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
double dd = RR.fun();
System.out.printf("%.2f",dd);
}
}
class RR{

}
输入格式:
在一行中给出5个不超过1000的实数。
输出格式:
输出排在中间的那个数,保留小数点后两位。
输入样例:
1 2 5 4 3
结尾无空行
输出样例:
5.00
结尾无空行
答案:

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		double dd = RR.fun();
		System.out.printf("%.2f", dd);
	}
}

class RR {
	public static double fun() {
		Scanner se=new Scanner(System.in);
		double a[]=new double[5];
		for(int i=0;i<a.length;i++) {
			a[i]=se.nextDouble();
		}
		return a[2];
	}

}

32. jmu-Java-03面向对象基础-04-形状-继承 (10 分)

前言
前面题目形状中我们看到,为了输出所有形状的周长与面积,需要建立多个数组进行多次循环。这次试验使用继承与多态来改进我们的设计。
本题描述
1.定义抽象类Shape
属性:不可变静态常量double PI,值为3.14,
抽象方法:public double getPerimeter(),public double getArea()
2.Rectangle与Circle类均继承自Shape类。
Rectangle类(属性:int width,length)、Circle类(属性:int radius)。
带参构造方法为Rectangle(int width,int length),Circle(int radius)。
toString方法(Eclipse自动生成)
3.编写double sumAllArea方法计算并返回传入的形状数组中所有对象的面积和与
double sumAllPerimeter方法计算并返回传入的形状数组中所有对象的周长和。
4.main方法
4.1 输入整型值n,然后建立n个不同的形状。如果输入rect,则依次输入宽、长。如果输入cir,则输入半径。
4.2 然后输出所有的形状的周长之和,面积之和。并将所有的形状信息以样例的格式输出。 提示:使用Arrays.toString。
4.3 最后输出每个形状的类型与父类型.使用类似shape.getClass() //获得类型, shape.getClass().getSuperclass() //获得父类型;
注意:处理输入的时候使用混合使用nextInt与nextLine需注意行尾回车换行问题。
思考
你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适?
是否应该声明为static?
输入样例:
4
rect
3 1
rect
1 5
cir
1
cir
2
输出样例:
38.84
23.700000000000003
[Rectangle [width=3, length=1], Rectangle [width=1, length=5], Circle [radius=1], Circle [radius=2]]
class Rectangle,class Shape
class Rectangle,class Shape
class Circle,class Shape
class Circle,class Shape
答案:


import java.util.Scanner;
 
abstract class Shape {
	double PI = 3.14;
 
	public abstract double getPerimeter();
 
	public abstract double getArea();
}
 
class Rectangle extends Shape {
	int wide, len;
 
	Rectangle(int a, int b) {
		wide = a;
		len = b;
	}
 
	@Override
	public double getPerimeter() {
		// TODO Auto-generated method stub
		return 2 * (wide + len);
	}
 
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return wide * len;
	}
	
	public String toString(){
		return "[width=" + wide + ", length=" + len + "]";
	}
}
 
class Circle extends Shape {
	int radius;
 
	Circle(int _radius) {
		radius = _radius;
	}
 
	@Override
	public double getPerimeter() {
		// TODO Auto-generated method stub
		return radius * 2 * PI;
	}
 
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return radius * radius * PI;
	}
 
	public String toString(){
		return "[radius=" + radius + "]";
	}
 
}
 
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		in.nextLine();
		Shape A[] = new Shape[n];
		int k = 0, j = 0;
		double sumAllArea = 0, sumAllPerimeter = 0;
		for (int i = 0; i < n; i++) {
			String S = in.next();
			if (S.equals("rect")) {
				int wide = in.nextInt(), len = in.nextInt();
				in.nextLine();
				A[i] = new Rectangle(wide, len);
			} else if (S.equals("cir")) {
				int radius = in.nextInt();
				in.nextLine();
				A[i] = new Circle(radius);
			}
			sumAllArea += A[i].getArea();
			sumAllPerimeter += A[i].getPerimeter();
		}
 
		System.out.println(sumAllPerimeter);
		System.out.println(sumAllArea);
		System.out.print("[");
		for (int i = 0; i < n; i++) {
			if(i != 0)
				System.out.print(", ");
			if (A[i] instanceof Rectangle) {
					System.out.print("Rectangle ");
				System.out.print(A[i].toString());
			}
			else {
					System.out.print("Circle ");
				System.out.print(A[i].toString());	
			}
		}
 
		System.out.println("]");
 
		for(int i = 0;i < n;i++) {
			if(A[i] instanceof Rectangle) {
				System.out.println("class Rectangle,class Shape");
			}else {
				System.out.println("class Circle,class Shape");
 
			}
		}
		in.close();
	}
}

33. 定义ClassName接口,设计类Company,实现获取类名称的功能 (10 分)

定义一个ClassName接口,接口中只有一个抽象方法getClassName();设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称;编写应用程序使用Company类
输出格式:
输出类名称。
输出样例:
Company
答案:

interface ClassName {

    public String getClassName();

}

class Company implements ClassName {
    public String getClassName(){
        return "Company";
    }
}

public class Main {
    public static void main(String []args){
        ClassName name=new Company();
        System.out.println(name.getClassName());
    }
}


34. 接口–四则计算器 (10 分)

利用接口做参数,写个计算器,能完成加减乘除运算。
定义一个接口ICompute含有一个方法int computer(int n, int m)。
定义Add类实现接口ICompute,实现computer方法,求m,n之和
定义Sub类实现接口ICompute,实现computer方法,求n-m之差
定义Main类,在里面输入两个整数a, b,利用Add类和Sub类的computer方法,求第一个数a和第二个数b之和,输出和,第一个数a和第二个数b之差,输出差。
输入格式:
输入在一行中给出2个整数
输出格式:
输出两个数的和、差
输入样例:
在这里给出一组输入。例如:
6 7
结尾无空行
输出样例:
在这里给出相应的输出。例如:
13
-1
结尾无空行
答案:

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        Add l=new Add();
        Sub j=new Sub();
        System.out.println(l.computer(n, m));
        System.out.println(j.computer(n, m));

        in.close();

    }
}
interface IComputer{
    abstract public int computer(int n ,int m);
}
class Add implements IComputer
{
    int m,n;
    public int computer(int n ,int m) {
        return n+m;
    }
}
class Sub implements IComputer
{
    int m,n;
    public int computer(int n ,int m) {
        return n-m;
    }
}

35. USB接口的定义 (10 分)

定义一个USB接口,并通过Mouse和U盘类实现它,具体要求是:
1.接口名字为USB,里面包括两个抽象方法:
void work();描述可以工作
void stop(); 描述停止工作
2.完成类Mouse,实现接口USB,实现两个方法:
work方法输出“我点点点”;
stop方法输出 “我不能点了”;
3.完成类UPan,实现接口USB,实现两个方法:
work方法输出“我存存存”;
stop方法输出 “我走了”;

4测试类Main中,main方法中
定义接口变量usb1 ,存放鼠标对象,然后调用work和stop方法
定义接口数组usbs,包含两个元素,第0个元素存放一个Upan对象,第1个元素存放Mouse对象,循环数组,对每一个元素都调用work和stop方法。
输入格式:
输出格式:
输出方法调用的结果
输入样例:
在这里给出一组输入。例如:
结尾无空行
输出样例:
在这里给出相应的输出。例如:
我点点点
我不能点了
我存存存
我走了
我点点点
我不能点了
结尾无空行
答案:

public class Main {

	public static void main(String[] args) {
		Mouse usb1=new Mouse();
		usb1.work();
		usb1.stop();
		USB usbs[]=new USB[2];
        usbs[0]=new UPan();
		usbs[0].work();
		usbs[0].stop();
		usbs[1]=new Mouse();
		usbs[1].work();
		usbs[1].stop();
		

	}

}
interface USB{
	void work();
	void stop();
}
class Mouse implements USB{
	public void work(){//要写public
		System.out.println("我点点点");
	}
	public void stop(){
		System.out.println("我不能点了");
	}
}
class UPan implements USB{
	public void work(){
		System.out.println("我存存存");
	}
	public void stop(){
		System.out.println("我走了");
	}
}

36. 单词替换 (10 分)

设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。
输入格式:
首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。
输出格式:
完成查找替换后的完整字符串
输入样例:
在这里给出一组输入。例如:
Although I am without you, I will always be ou you
ou
with
结尾无空行
输出样例:
在这里给出相应的输出。例如:
Although I am without you, I will always be with you
结尾无空行
答案:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		 String statement;
		    Scanner sc =new Scanner(System.in);
		    statement=sc.nextLine();
		    String word1=sc.next();
		    String word2=sc.next();//用word2替换word1

		    String words[]=statement.split(" ");
		   /* for(int i=0;i<words.length;i++)
		    	System.out.print(words[i]+"\t");*/
		    for(int i=0;i<words.length;i++) {//将句子分割成单词
		    	if(word1.equals(words[i])) {
		    		words[i]=word2;
		    	}
		    }
		   StringBuffer stb=new StringBuffer();
		   String sta=null;
		   for(int i=0;i<words.length;i++) {//数组转换为句子
			   if(i==words.length-1)stb.append(words[i]);
			   else	stb.append(words[i]+" ");
		   }
		   sta=stb.toString();
		   System.out.println(sta);
		    sc.close();
	}

}

37. 图书价格汇总 (10 分)

图书价格汇总
输入格式:
假设某图书馆中图书记录的格式为“Java程序设计: 34;Web程序设计: 56;JSP程序设计:20”(每本书的价格是整数,每本书的价格与下一本书的名字之间有一个中文;)。
输出格式:
编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。
输入样例:
Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20
结尾无空行
输出样例:
Java程序设计:34
Web程序设计: 56
JSP程序设计:20
总价格为110
结尾无空行
答案:

import java.util.Scanner;

public class Main {
	
	public static void main(String args[]) {
		Scanner sc=new Scanner(System.in);
		String str=sc.nextLine();
		String bookInfo[]=str.split(";");
		Main main=new Main();
		int sum=0;
		
		for(int i=0;i<bookInfo.length;i++)			//输出分割后的书本信息
			System.out.println(bookInfo[i]);
		
		for(int i=0;i<bookInfo.length;i++) {
			String bn= (bookInfo[i].split(":"))[0];//以:分割
			Integer pr=Integer.parseInt((bookInfo[i].split(":"))[1].trim());
			sum+=pr.intValue();
			
		}
		System.out.println("总价格为"+sum);
	}

}

38. 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 (10 分)

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数
输入格式:
通过键盘输入一行字符(任意字符)
输出格式:
统计一行字符串中的中英文字母个数、空格个数、数字个数、其他字符个数
输入样例:
rwrwewre2345asdJSJQI%^&(& *&sdf YY( 2342-k’
结尾无空行
输出样例:
字母个数:22
数字个数:8
空格个数:5
其他字符个数:10
结尾无空行
答案:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		sc.close();
		
		char[] chars = str.toCharArray();
		int letter=0,num=0,blank=0,other=0;
		for(int i=0;i<chars.length;i++) {
			if((chars[i]>='A' && chars[i]<='Z') || (chars[i]>='a' && chars[i]<='z')){
				letter++;
			}else if(chars[i]>=47 && chars[i]<=57) {
				num++;
			}else if(chars[i]==32) {
				blank++;
			}else {
				other++;
			}
		}
		
		System.out.println("字母个数:"+letter);
		System.out.println("数字个数:"+num);
		System.out.println("空格个数:"+blank);
		System.out.println("其他字符个数:"+other);
	}
}

39. 判断登录信息–Java字符串比较 (10 分)

从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。
(1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome
(2)如果用户名正确,密码不正确,输出:Mismatch
(3)其他情况下,输出:NotExist
要输出的信息,建议从题目中复制,确保精确匹配。
输入格式:
用空格分隔开的两个字符串。
输出格式:
首字母大写的一个单词或词组。
输入样例:
SwpuIot 123456
结尾无空行
输出样例:
Welcome
结尾无空行
答案:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		String str = "SwpuIot 123456";
		String[] strs = str.split(" ");
		
		Scanner sc = new Scanner(System.in);
		String s1 = sc.next();
		String s2 = sc.next();
		sc.close();
		
		if(strs[0].equals(s1) && strs[1].equals(s2)) {
			System.out.println("Welcome");
		}else if(strs[0].equals(s1) && !strs[1].equals(s2)) {
			System.out.println("Mismatch");
		}else {
			System.out.println("NotExist");
		}
		
	}
}

40. 伪随机数 (10 分)

在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long。Random的对象有两种构建方式:带种子和不带种子。不带种子的方式将会返回随机的数字,每次运行结果不一样。无论程序运行多少次,带种子方式构建的Random对象会返回一样的结果。
请编写程序,使用第一种方式构建Random对象,并完成下面输入输出要求。
输入格式:
在一行中输入3个不超过10000的正整数n,m,k。
输出格式:
在一行中输出以k为种子建立的Random对象产生的第n个0到m-1之间的伪随机数。
输入样例:
10 100 1000
结尾无空行
输出样例:
50
结尾无空行
答案:


import java.util.*;
public class Main {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();
        List<Integer> ss = new ArrayList<Integer>();
        //Set<Integer> ss = new HashSet<Integer>();
        Random rand = new Random(k);
        for(int i = 0;i < n;i++)
        {
        	ss.add(rand.nextInt(m));
        	if(i==n-1)
        		System.out.println(ss.get(i));
        }
        
	}
 
}

41. jmu-Java-06异常-02-使用异常机制处理异常输入 (10 分)

使用异常处理输入机制,让程序变得更健壮。
main方法:
输入n,创建大小为n的int数组。
输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
使用Arrays.toString输出数组中的内容。
输入样例
5
1
2
a
b
4
5
3
输出样例
java.lang.NumberFormatException: For input string: “a”
java.lang.NumberFormatException: For input string: “b”
[1, 2, 4, 5, 3]
答案:

import java.util.*;
public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n=scan.nextInt();
		int a[]=new int[n];
		int count=0;
		while(count<n) {
			try {
				String temp=scan.next();
				int i=Integer.parseInt(temp);
				a[count++]=i;
			}catch(Exception e) {
				System.out.println(e);
			}
		}
		System.out.println(Arrays.toString(a));
		scan.close();
	}
}

42. 天不假年 (10 分)

程序填空题。根据题目要求完善下面的代码。请提交完整代码。 “今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。 Person类的setAge方法用于更新年龄。 如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int age;
age = in.nextInt();
Person p = new Person(age);
age = in.nextInt();
try{
p.setAge(age);
}catch(AgeException e){
}
}
}
class Person{
int age;
public Person(int age){
this.age = age;
}
public void setAge(int age) throws AgeException {
if(this.age <=age){
this.age = age;
}else{
throw new AgeException();
}
}
}
class AgeException extends Exception{
}
输入格式:
输入在一行中给出2个绝对值不超过100的正整数A和B。
输出格式:
在一行中输出一个字符A或者B。
输入样例:
50 18
结尾无空行
输出样例:
B
结尾无空行
答案:


import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int age;
        age = in.nextInt();
        Person p = new Person(age);
        age = in.nextInt();
        try{
            p.setAge(age);
            System.out.println("A");
        }catch(AgeException e){
            System.out.println("B");
        }
    }
}
class Person{
    int age;
    public Person(int age){
        this.age = age;
    }
    public void setAge(int age) throws AgeException {
        if(this.age <=age){
            this.age = age;
        }else{
            throw new AgeException();
        }
    }
}
class AgeException extends Exception{
}

43. 成绩录入时的及格与不及格人数统计 (10 分)

编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
输入格式:
从键盘中输入学生人数n
从键盘中输入第1个学生的成绩
从键盘中输入第2个学生的成绩

从键盘中输入第n个学生的成绩
(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
输出格式:
显示及格总人数
显示不及格总人数
输入样例:
在这里给出一组输入。例如:
3
100
30
60
结尾无空行
输出样例:
在这里给出相应的输出。例如:
2
1
结尾无空行
输入样例:
在这里给出一组输入。例如:
2
200
69
30
结尾无空行
输出样例:
在这里给出相应的输出。例如:
200invalid!
1
1
结尾无空行
答案:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int count=sc.nextInt();
        int pass=0;
        for (int i=0;i<count;i++){
            int grade=sc.nextInt();
            if (grade<0||grade>100){
                System.out.println(grade+"invalid!");
                i--;
            }else if (grade>=60){
                pass++;
            }
        }
        System.out.println(pass);
        System.out.println(count-pass);
 
    }
}

44. 计算正五边形的面积和周长 (10 分)

从键盘输入一个数作为正五边形的边长,计算并输出该正五边形的周长和面积。
计算正五边形的面积公式为: S=a
2
×
25+10×
5
/4
输入格式:
输入正五边形的边长。例如:
5
输出格式:
输出正五边形的面积和周长。第一行输出面积,第二行输出周长。例如:
43.0119
25
输入样例:
16.8
结尾无空行
输出样例:
485.5875
84
结尾无空行
答案:

import java.lang.Math;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    double a=in.nextDouble();
    Bian b1=new Bian(a);

    DecimalFormat df1 = new DecimalFormat("#.####"); 
    System.out.println(df1.format(b1.getArea()));
    System.out.println(df1.format(b1.getPerimeter()));
    } 
}
abstract class shape{// 抽象类
     public abstract double getArea();
     public abstract double getPerimeter(); 
}
class Bian extends shape{
    private double a;
    public Bian(double a){
        this.a=a;
    }
    public double getArea(){
        double s=a*a/4*(Math.sqrt(25+10*Math.sqrt(5.0)));
        return s;
    }
    public double getPerimeter(){
        return a*5;
    }
}

共计44

进程已结束,退出代码为 0

  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞睡不醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值