7-1 数组排序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int []b=new int[a];
int index;
for(int i=0;i<b.length;i++){
b[i]=in.nextInt();
}
for(int i=b.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(b[j]<b[j+1]) {
index=b[j];b[j]=b[j+1];b[j+1]=index;}
}
}for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");}
}
}
7-2 数组合并
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int []c=new int [a];
int []d=new int [b];
int []e=new int [a+b];
for(int i=0;i<c.length;i++){
c[i]=in.nextInt();
}
for(int j=0;j<d.length;j++){
d[j]=in.nextInt();
}
for(int k=0;k<c.length;k++){
e[k]=c[k];
}
for(int k=c.length,i=0;k<e.length;k++,i++){
e[k]=d[i];
}
Arrays.sort(e);
for(int k=0;k<e.length;k++){
System.out.print(e[k]+" ");
}
}}
7-3 数组重排
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int [] b=new int [a];
for(int i=0;i<b.length;i++){
b[i]=in.nextInt();
}
if (b == null || b.length < 2) {
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}
}
int start = 0;
int end = b.length - 1;
while (start < end) {
while (start < end && b[start] % 2 != 0) {
start++;
}
while (start < end && b[end] % 2 == 0) {
end--;
}
int temp = b[start];
b[start] = b[end];
b[end] = temp;
}
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}}
}
7-1 二维数组转置
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a=sc.nextInt();
int [][] b=new int [a][a];
int [][] c=new int [a][a];
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
b [i][j]=sc.nextInt();
}}
for(int i=0;i<c.length;i++){
for(int j=0;j<c[i].length;j++){
c[i][j]=b[j][i];
}}
for(int i=0;i<c.length;i++){
for(int j=0;j<c[i].length;j++){
System.out.print(c[i][j]+" ");
}
System.out.println();
}
}}
7-2 求对角线的和
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int i,j;
int sum1=0,sum2=0,sum=0;
int[][] a= new int[n][n];
for(i=0;i<n;i++){
for(j=0;j<n;j++){
a[i][j]=sc.nextInt();
if(i==j)sum1+=a[i][j];
if(i+j==n-1)sum2+=a[i][j];
if(n%2!=0)sum = sum1+sum2-a[(n-1)/2][(n-1)/2];
else sum=sum1+sum2;
}
}
System.out.print(sum);
}
}
7-3 求二维数组的最大最小值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int[][] a = new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=in.nextInt();
}
}
int min=a[0][0],mini=0,minj=0;
int max=a[0][0],maxi=0,maxj=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(max<a[i][j])
{
max=a[i][j];
maxj=j;
maxi=i;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(min>a[i][j])
{
min=a[i][j];
minj=j;
mini=i;
}
}
}
System.out.println("MAX=("+maxi+","+maxj+")");
System.out.print("MIN=("+mini+","+minj+")");
}
}
6-1 toString方法 (10 分)
给Student类添加toString方法,返回Student的信息,格式为学号,姓名,年龄
public String toString(){
return sno+","+name+","+age;
}
6-2 初识构造方法 (10 分)
定义Student类,要求类中定义一个无参构造方法,用于输出"This is a constructor"
裁判测试程序样例:
class Student{
public Student() {
System.out.print("This is a constructor");
}
}
6-3 初识构造方法 (10 分)
在Student类中添加带String参数的构造方法,用于对设置name的值。
裁判测试程序样例:
public Student(String name) {
this.name = name;
}
public void fun(){
System.out.println(name);
}
6-1 学生、大学生、研究生类 (20 分)
定义Student学生类,拥有学号、姓名、性别属性,提供构造函数,以及相应属性的get set函数,提供函数attendClass(String className)表示上课。 定义CollegeStudent大学生类继承自Student类,拥有新增属性专业,提供构造函数,提供新增属性的get和set函数 定义GraduateStudent研究生类继承自CollegeStudent类,拥有新增属性导师,提供构造函数,提供新增属性的get和set函数,提供函数doResearch() 表示做研究(打印xx is doing research)。
main函数中对构造的类进行测试
class Student{
int no;
String name;
String sex;
public Student(int no,String name,String sex) {
this.no=no;
this.name=name;
this.sex=sex;
}
public void print() {
System.out.println("no: "+this.no);
System.out.println("name: "+this.name);
System.out.println("sex: "+this.sex);
}
}
class CollegeStudent extends Student{
String major;
public CollegeStudent(int no, String name, String sex,String major) {
super(no, name, sex);
this.major=major;
}
public void print() {
super.print();
System.out.println("major: "+this.major);
}
}
class GraduateStudent extends CollegeStudent{
String tutor;
public GraduateStudent(int no, String name, String sex, String major,String tutor) {
super(no, name, sex, major);
this.tutor=tutor;
}
public void print() {
super.print();
System.out.println("supervisor: "+this.tutor);
}
public void doResearch() {
System.out.println(this.name+" is doing research");
}
}
6-2 Shape类 (20 分)
定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数 定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数
abstract class Shape{
abstract double getPerimeter();
abstract double getArea();
}
class Square extends Shape{
double len;
public Square(double len) {
this.len=len;
}
public double getPerimeter() {
return 4*this.len;
}
public double getArea() {
return this.len*this.len;
}
}
class Rectangle extends Square{
double broad;
public Rectangle(double len,double broad) {
super(len);
this.broad=broad;
}
@Override
public double getPerimeter() {
return 2*this.len+2*this.broad;
}
@Override
public double getArea() {
return this.len*this.broad;
}
}
class Circle extends Shape{
double r;
public Circle(double r) {
this.r=r;
}
@Override
public double getPerimeter() {
return 2*Math.PI*r;
}
@Override
public double getArea() {
return Math.PI*this.r*this.r;
}
}
6-3 Student继承Person (10 分)
Student继承Person类,增加int型成员变量sno。根据测试程序补充Student类。
裁判测试程序样例:
int sno;
public Student(int sno,String name,int age) {
super(name, age);
this.sno=sno;
}
public String toString(){
return this.sno+","+name+","+age;
}
6-1 面积求和 (5 分)
由于各种图形 求面积的方式不一样,为了使编写的程序能够适应求不同形状的面积和,当新增加一个图形的时候,不需要修改其他类,采用面向接口的编程,其类图如下图所示:
import java.awt.*;
import java.util.*;
import javax.swing.JPanel;
import java.io.*;
interface IGeometry {
public double getArea();
}
class Rect implements IGeometry {
public double a;
public double b;
public Rect(double a, double b) {
super();
this.a = a;
this.b = b;
}
public double getArea() {
return a * b;
}
}
class Circle implements IGeometry {
public double r;
public Circle(double r) {
super();
this.r = r;
}
public double getArea() {
return r * r * 3.14;
}
}
class TotalArea {
public IGeometry[] tuxing;
public void setTuxing(IGeometry[] t) {
this.tuxing = t;
}
public double computerTotalArea() {
double sum = 0.0;
for (IGeometry i : tuxing) {
sum += i.getArea();
}
return sum;
}
}
6-2 Student排序 (10 分)
设计Student类,包括成员变量:String name和int age。实现Comp
class Student implements Comparable {
private String name;
private int age;
public Student(String name,int age){
super();
this.name=name;
this.age=age;
}
public Student(){
super();
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
@Override
public int compareTo(Object o){
if(o instanceof Student){
Student s=(Student) o;
if(this.age>s.age){
return 1;
}else if(this.age==s.age){
return 0;
}else{
return -1;
}}
return 0;
}
@Override
public String toString(){
return name;
}
}
7-1 USB接口的定义 (10 分)
定义一个USB接口,并通过Mouse和U盘类实现它,具体要求是:
1.接口名字为USB,里面包括两个抽象方法:
void work();描述可以工作
void stop(); 描述停止工作
2.完成类Mouse,实现接口USB,实现两个方法:
interface USB{
void work();
void stop();
}
class Mouse implements USB{
public void work() {
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("我走了");
}
}
public class Main {
public static void main(String[] args) {
USB usb1;
usb1=new Mouse();
usb1.work();
usb1.stop();
USB[] usbs;
usbs=new USB[2];
usbs[0]=new UPan();
usbs[1]=new Mouse();
for(USB i:usbs)
{
i.work();
i.stop();
}}}
6-1 动物体系 (20 分)
基于继承关系编写一个动物体系,具体的动物包含小狗和小猫。每只动物都有名字和颜色,都能够做自我介绍(introduce)。此外,小狗有智商属性(整数),能接飞盘(catchFrisbee(),方法体内输出一行“catch frisbee”即可),小猫有眼睛颜色属性,能抓老鼠(catchMouse(),方法体内输出一行“
abstract class Animal{
String name;
String color;
public Animal(String name,String color){
this.name=name;
this.color=color;
}
public abstract void introduce();
}
class Dog extends Animal{
int iq;
public Dog(String name,String color,int iq){
super(name,color);
this.iq=iq;
}
public void introduce(){
System.out.println("My name is "+this.name+","+" my color is "+this.color+","+" my IQ is "+this.iq);
}
public void catchFrisbee(){
System.out.println("catch frisbee");
}
}
class Cat extends Animal{
String eyecolor;
public Cat(String name,String color,String eyecolor){
super(name,color);
this.eyecolor=eyecolor;
}
public void introduce(){
System.out.println("My name is "+this.name+","+" my color is "+this.color+","+" my eyecolor is "+this.eyecolor);
}
public void catchMouse(){
System.out.println("catch mouse");
}
}
class TestAnimal{
public static void introduce(Animal a){
if(a instanceof Dog){
Dog d=(Dog) a;
d.introduce();
}else if(a instanceof Cat){
Cat c=(Cat) a;
c.introduce();
}}
public static void action(Animal a){
if(a instanceof Dog){
Dog d=(Dog) a;
d.catchFrisbee();
}else if(a instanceof Cat){
Cat c=(Cat) a;
c.catchMouse();
}
}}
6-2 员工的工资 (10 分)
假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资(都是整数): (1)经理(Manager)——每月获得一份固定的工资 (2)销售
import java.util.*;
class Employee {
int salary;
public Employee() {
this.salary = 0;
}
public Employee(int salary) {
this.salary = salary;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
class Manager extends Employee {
int salary;
public Manager(int salary) {
this.salary = salary;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
class Salesman extends Employee {
int salary;
int commission;
public Salesman(int salary, int commission) {
this.salary = salary;
this.commission = commission;
}
public int getSalary() {
return salary + commission;
}
public void setSalary(int salary, int commission) {
this.salary = salary;
this.commission = commission;
}
}
class Worker extends Employee {
int day;
int daySalary;
public Worker(int day, int daySalary) {
this.day = day;
this.daySalary = daySalary;
}
public int getSalary() {
return daySalary * day;
}
public void setSalary(int day, int daySalary) {
this.day = day;
this.daySalary = daySalary;
}}
6-1 static属性成员 (10 分)
完成Student类的设计,类中包含一个static整型变量count,代表所有学生的人数。当实例化一个Student对象时,count值增加1,同时按格式输出当前的总Student人数。
class Student{
static int count = 0;
public Student(){
count++;
System.out.println("当前的Student总人数是:"+count);
}
}
6-2 static方法成员
public static int max(int a,int b){
return (a>b)?a:b;
}
6-1 匿名内部类 (10 分)
在下面的空白处填入代码,完成一个打印机的创建,完成输入输出功能。输出打印出this is print out;输入打印出the print getData:+输入的字符串。
裁判测试程序样例:
new IODevice() {
@Override
public void getData(String msg) {
System.out.println("the print getData:"+msg);
}
@Override
public void out() {
System.out.println("this is print out");
}
}
7-1 成绩录入时的及格与不及格人数统计 (10 分)
编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异
import java.util.*;
class MyException extends Exception
{
MyException(int s)
{
super(s+"invalid!");
}
}
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n =in.nextInt();
int count1=0,count2=0;
ArrayList<Integer> c = new ArrayList <> (n);
for(int j=0;j<n;j++)
{
int z= in.nextInt();
c.add(z);
if(z>100||z<0)
n++;
}
for(int a:c)
{
try{
if(a>100||a<0)
throw new MyException(a);
if(a<=100&&a>=60)
count1++;
if(a>=0&&a<60)
count2++;
}
catch(MyException e)
{
System.out.println(e.getMessage());
}
}
System.out.println(count1);
System.out.println(count2);
}}
6-1 equals方法 (10 分)
重写Point类的equals方法(两个Point对象相等的条件是xPos和yPos都相等)。
裁判测试程序样例:
public boolean equals(Object obj) {
if (obj.getClass().equals(this.getClass())) {
Point that = (Point) obj;
if (this.xPos == that.xPos && this.yPos ==that.yPos)
return true;
}
return false;
}