# 填空题&&函数题部分 - Java

2022年01月14日 阅读数：3

# 函数题：

## 是否偶数：

```import java.util.Scanner;
public class Main {

public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int data=in.nextInt();
System.out.println(isOdd(data));
}

/* 请在这里给出isOdd(i)函数 */

}```

### 代码：

```public static boolean isOdd(int data){
if(data%2 == 0){
return true;
}
else
return false;
}```
View Code

## TDVector：

```import java.util.Scanner;
class TDVector {
private double x;
private double y;
public String toString() {
return "("+this.x+","+this.y+")";
}

/** 你所提交的代码将被嵌在这里（替换此行） **/

}

public class Main {
public static void main(String[] args) {
TDVector a = new TDVector();  //    default ctor, x and y are zeros
Scanner sc = new Scanner(System.in);
double x,y,z;
x = sc.nextDouble();
y = sc.nextDouble();
z = sc.nextDouble();
TDVector b = new TDVector(x, y);    //  ctor by x and y
TDVector c = new TDVector(b);       //  ctor by another TDVector
a.setY(z);
System.out.println(a);
System.out.println(b);
System.out.println(c);
c.setX(z);
System.out.println(a);
System.out.println("b.x="+b.getX()+" b.y="+b.getY());
sc.close();
}
}```

### 代码：

```public double getX() {
return x;
}

public void setX(double x) {
this.x = x;
}

public double getY() {
return y;
}

public void setY(double y) {
this.y = y;
}
TDVector(){
this.x = this.y = 0;
}
TDVector(double x, double y){
this.x = x;
this.y = y;
}
TDVector(TDVector object){
this.x = object.x;
this.y = object.y;
}
n.x += this.x;
n.y += this.y;
return n;
}```
View Code

## Book类的设计：

```import java.util.*;
public class Main {
public static void main(String[] args) {
List <Book>books=new ArrayList<Book>();
Scanner in=new Scanner(System.in);
for(int i=0;i<5;i++)
{    String str=in.nextLine();
String []data=str.split(",");
Book book=new Book(data[0],Integer.parseInt(data[1]),data[2],Integer.parseInt(data[3]));
}

System.out.println(totalprice(books));
}

/*计算全部book的总价*/
public static int totalprice(List <Book>books)
{  int result=0;
for(int i=0;i<books.size();i++){result+=books.get(i).getPrice();}
return result;
}
}

/* 请在这里填写答案 */```

### 代码：

```class Book{
private String name;
private double price;
private String author;
private double publishyear;
Book(String name, double price, String author, double publishyear){
this.name = name;
this.price= price;
this.author = author;
this.publishyear = publishyear;
}

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;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public double getPublishyear() {
return publishyear;
}

public void setPublishyear(double publishyear) {
this.publishyear = publishyear;
}

}```
View Code

## 重写父类法equals：

```import java.util.Scanner;
class Point {
private int xPos, yPos;
public Point(int x, int y) {
xPos = x;
yPos = y;
}
@Override
/* 请在这里填写答案 */
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Object p1 = new Point(sc.nextInt(),sc.nextInt());
Object p2 = new Point(sc.nextInt(),sc.nextInt());
System.out.println(p1.equals(p2));
sc.close();
}
}```

### 代码：

``` public boolean equals(Object obj){
if(this == obj)
return true;
if(obj == null || this.getClass() != obj.getClass())
return false;
Point point = (Point) obj;
return this.xPos == point.xPos && this.yPos == point.yPos;
}```
View Code

## 建立一个直角三角形类实现IShape接口：

```import java.util.Scanner;
import java.text.DecimalFormat;

interface IShape {
public abstract double getArea();

public abstract double getPerimeter();
}

/*你写的代码将嵌入到这里*/

public class Main {
public static void main(String[] args) {
DecimalFormat d = new DecimalFormat("#.####");
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
IShape r = new RTriangle(a, b);
System.out.println(d.format(r.getArea()));
System.out.println(d.format(r.getPerimeter()));
input.close();
}
}```

### 代码：

```class RTriangle implements IShape{
private double a;
private double b;
RTriangle(double a, double b){
this.a = a;
this.b = b;
}
public double getArea(){
return a*b*0.5;
}
public double getPerimeter(){
return a+b+Math.sqrt(a*a+b*b);
}

}```
View Code

## 判断一个数列是否已排好序：

```import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] list = new int[20];
list[0] = input.nextInt();
for (int i=1; i<= list[0]; i++)
list[i] = input.nextInt();
if (isSorted(list))
else
System.out.println("The list is not sorted");
}

/* 请在这里填写答案 */

}```

### 代码：

```public static boolean isSorted(int[] list)
{
int i,j,x;
x=list[1];
int flag=0;
for(i=1;i<=list[0];i++)
{
if(x>list[i])
{
flag=1;
break;
}
x=list[i];
}
if(flag==0)
return true;
else
return false;
}```
View Code

## 编写Matrix类，使用二维数组实现矩阵，实现两个矩阵的乘法：

```import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Matrix firstMat=Matrix.inputMatrix();
Matrix secondMat=Matrix.inputMatrix();
//display(firstMat.matrix);    display(secondMat.matrix);

Matrix productMat=firstMat.multiply(secondMat);
display(productMat.matrix);
}

//display方法：打印二维数组元素到屏幕
public static void display(int[][] array){
for(int i=0; i<array.length; i++){
for(int j=0; j<array[i].length; j++){
if(j==array[i].length-1) {
System.out.println(array[i][j]);
}
else {
System.out.print(array[i][j]+" ");
}
}
}
}
}

/* 请在这里填写答案 */```

### 代码：

```class Matrix{
int row, column, matrix[][];
static Scanner reader = new Scanner(System.in);
public static Matrix inputMatrix(){
Matrix mat = new Matrix();
mat.matrix = new int[mat.row][mat.column];
for(int i=0; i< mat.row; i++){
for(int j=0; j< mat.column; j++){
}
}
return mat;
}
Matrix multiply(Matrix m){
int col = m.matrix[0].length;
Matrix res = new Matrix();
res.matrix = new int[row][col];
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
for(int k=0; k<column; k++){
res.matrix[i][j] += matrix[i][k] * m.matrix[k][j];
}
}
}
return res;
}
}```
View Code

```import java.util.*;

public class Main {
public static void main(String[] args) {
WorkerList app=new WorkerList();
List<Worker> list=app.constructWorkerList();
System.out.println(app.computeTotalSalary(list));
}
}

/* 请在这里填写答案：将WorkerList类补充在这里 */

class Worker {
private String name;
private double salary;

public Worker() { }

public Worker(String name, double salary){
this.name = name;
this.salary = salary;
}

public String getName() {
return name;
}

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

public double getSalary(){
return salary;
}

public void setSalary(double salary){
this.salary = salary;
}

public String toString() {
return name + " "+salary;
}
}```

### 代码：

```class WorkerList{
Scanner sc = new Scanner(System.in);
Worker worker = new Worker();
String name = sc.next();
double salary = sc.nextDouble();
worker.setName(name);
worker.setSalary(salary);
return worker;
}
List<Worker> constructWorkerList(){
Scanner sc = new Scanner(System.in);
List<Worker> list = new ArrayList<Worker>();
int workerNum = sc.nextInt();
String name;
double salary;
for (int i=0; i<workerNum; i++){
Worker worker = new Worker();
name = sc.next();
salary = sc.nextDouble();
worker.setName(name);
worker.setSalary(salary);
}
return list;
}
double computeTotalSalary(List<Worker> list){
double sum = 0;
for(int i=0; i<list.size(); i++){
sum += list.get(i).getSalary();
}
return sum;
}
}```
View Code

```import java.util.*;

public class Main {
public static void main(String[] args) {
String[] strs = {"12345","67891","12347809931","98765432102","67891","12347809933"};
StringList sl=new StringList();
System.out.println(sl.search(qqList));
}
}

/* 请在这里填写答案：StringList类 */```

### 代码：

```class StringList {
private String strs;

public String getStrs() {
return strs;
}

public void setStrs(String strs) {
this.strs = strs;
}
//        this.strs = strs;
for(int i=0; i<strs.length; i++){
}
return list;
}
Scanner sc=new Scanner(System.in);
int len = sc.nextInt();
int flag = 0;
String temp = null;
for(int i=0; i<list.size(); i++){
temp = (String)list.get(i);
if(temp.length() == len){
flag = 1;
break;
}
}
if(flag == 1)
return temp;
else
return "not exist";
}
}```
View Code

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

public class Main {
public static void main(String[] args) {
String[] strs = {"12345","67891","12347809931","98765432102","67891","12347809932","12347809934"};
StringList sl=new StringList();
System.out.println(sl.search(qqList));
}
}

/* 请在这里填写答案：StringList类 */```

### 代码：

```class StringList {
private String strs;

public String getStrs() {
return strs;
}

public void setStrs(String strs) {
this.strs = strs;
}
//        this.strs = strs;
for(int i=0; i<strs.length; i++){
}
return list;
}
Scanner sc=new Scanner(System.in);
int len = sc.nextInt();
int flag = 0;
String temp = null;
for(int i=0; i<list.size(); i++){
temp = (String)list.get(i);
if(temp.length() == len){
flag ++;
}
}
if(flag != 0)
{
String result = flag + "";
return result;
}
else
return "-1";
}
}```
View Code

## List中指定元素的删除：

```public class Main {

/*covnertStringToList函数代码*/

/*remove函数代码*/

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
List<String> list = convertStringToList(sc.nextLine());
System.out.println(list);
String word = sc.nextLine();
remove(list,word);
System.out.println(list);
}
sc.close();
}

}```

### 代码：

```public static List<String> convertStringToList(String line){
List<String> list = new ArrayList<String>();
String s[] = line.split("\\s+");
for(int i=0; i<s.length; i++){
}
return list;
}
/*在list中移除掉与str内容相同的元素*/
public static void remove(List<String> list, String str){
List<String> s = new ArrayList<String>();
list.removeAll(s);
}```
View Code

## 教师、学生排序：

```import java.util.*;

public class Main {
public static void main(String[] args) {

List persons=getPersons();  //获得一个全部人的线性表

List teachers=new ArrayList();
List students=new ArrayList();

MyTool.separateStu_T( persons,teachers,students); //将persons线性表中的 teacher，student分别放到teachers,students两个线性表中

Collections.sort(teachers);  //对教师线性表排序
Collections.sort(students);  //对学生线性表排序

showResult(teachers);  //显示教师线性表排序之后的结果
showResult(students);  //显示学生线性表排序之后的结果

}

public static List getPersons()
{
List persons=new ArrayList();

Scanner in=new Scanner(System.in);
Person person=null;

int num=Integer.parseInt(in.nextLine());

for(int i=0;i<num;i++)
{    String str=in.nextLine();
String []data=str.split(",");

if(data[0].equalsIgnoreCase("student"))
person=new Student(Integer.parseInt(data[1]),data[2],data[3],Integer.parseInt(data[4]),data[5]);
else if (data[0].equalsIgnoreCase("teacher"))
person=new Teacher(Integer.parseInt(data[1]),data[2],data[3],Integer.parseInt(data[4]),data[5]);
else person=null;
}
return persons;
}

public static void showResult(List persons)
{
for(int i=0;i<persons.size();i++)
{
Person per=(Person)persons.get(i);
System.out.println(per.getName()+","+per.getGender()+","+per.getAge());
}
}

}

abstract class Person  implements Comparable
{    private String name;
private String gender;
private int age;

public String getName() {
return name;
}

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

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public int getAge() {
return age;
}

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

public Person(String name, String gender, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}

}

/* 请在这里写你的代码 */```

### 代码：

```class Student extends Person {
private int sno;
private String major;
public Student(int sno, String name, String gender, int age, String major){
super(name, gender, age);
this.sno = sno;
this.major = major;
}

public int getSno() {
return sno;
}

public void setSno(int sno) {
this.sno = sno;
}

public String getMajor() {
return major;
}

public void setMajor(String major) {
this.major = major;
}

@Override
public int compareTo(Object o) {
return -(this.sno - ((Student)o).getSno());
}
}
class Teacher extends Person{
private int tno;
private String subject;
public Teacher(int tno, String name, String gender, int age, String sub) {
super(name, gender, age);
this.tno = tno;
this.subject = sub;
}

@Override
public int compareTo(Object arg0) {
// TODO Auto-generated method stub
return this.getAge() - ((Teacher)arg0).getAge();
}
}
class MyTool{
public static void separateStu_T(List persons,List teachers,List students){
Iterator It = persons.iterator();
while( It.hasNext()){
Person p= (Person) It.next();
if(p instanceof Teacher)
else
}
}
}```
View Code

## 面向对象基础-覆盖与equals：

`public boolean equals(Object obj)`

### 输入：

```Company c1 = new Company("MicroSoft");
Company c2 = new Company("IBM");
Person e1 = new Employee("Li", 35, true, 60000.124, c1);
Person e2 = new Employee("Li", 35, true, 60000.124, c1);
Person e3 = new Employee("Li", 35, true, 60000.124, c2);
Person e4 = new Employee("Li", 35, true, 60000.123, c2);
Person e5 = new Employee("Li", 35, true, 60000.126, c2);
Person e6 = new Employee("Li", 35, true, 60000.126, null);
System.out.println(e1.equals(e2));
System.out.println(e1.equals(e3));
System.out.println(e3.equals(e4));
System.out.println(e3.equals(e5));
System.out.println(e5.equals(e6));```

```true
false
true
false
false```

### 代码：

```public boolean equals(Object obj)
{
if(obj instanceof Employee){
Employee emp = (Employee)obj;
if(super.equals(emp) && ((this.company == null && emp.company == null) || (this.company != null && this.company.equals(emp.company)))){
DecimalFormat df = new DecimalFormat("#.##");
if(df.format(this.salary).equals(df.format(emp.salary)))
return true;
}
}

return false;
}```
View Code

## 图书和音像租赁：

```import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Media[] ms  = new Media[n];
for (int i=0; i<n; i++) {
String type = sc.next();
if (type.equals("book")) {
ms[i] = new Book(sc.next(), sc.nextDouble());
}else {
ms[i] = new DVD(sc.next());
}
}
double rent = MediaShop.calculateRent(ms, sc.nextInt());
System.out.printf("%.2f", rent);
}
}

/* 请在这里填写答案 */```

```5
book Earth 25.3
book Insights 34
dvd AI
dvd Transformer
book Sun 45.6
20```

`60.98`

### 代码：

```class Media{
String name;
String type;
double price;
double rent_price;
double rent;
public Media() {}
}
class Book extends Media{
public Book(){}
public Book(String name,double price){
this.name=name;
this.price=price;
this.rent_price=0.01*price;
}
public String getName(){
return this.name;
}
public double getDays(){
return this.price;
}
double getDailyRent(){
return this.rent_price;
}
}
class DVD extends Media{
public DVD(){}
public DVD(String name){
this.name=name;
this.rent_price=1;
}
public String getName(){
return this.name;
}
double getDailyRent(){
return this.rent_price;
}
}
class MediaShop{
public static double calculateRent(Media[] medias, int days){
double sum=0;
for(int i=0;i<medias.length;i++){
if(medias[i].type =="book"){
sum+=medias[i].rent_price*days;
}
else{
sum+=medias[i].rent_price*days;
}
}
return sum;
}
}```
View Code

## 设计门票（抽象类）：

```public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
Ticket a = new WalkupTicket(in.nextInt());
System.out.println(a.toString());
Ticket b = new AdvanceTicket(in.nextInt(), in.nextInt());
System.out.println(b.toString());
Ticket c = new StudentAdvanceTicket(in.nextInt(), in.nextInt(), in.nextInt());
System.out.println(c.toString());
}
}

/* 请在这里填写答案 */```
```abstract class Ticket {
……
}
class WalkupTicket extends Ticket {
……
}
……
}
……
}
//设计框架```

### 代码：

```// package 实验二2;
import java.util.*;

abstract class Ticket {
int number;
public Ticket(int number) {
this.number=number;
}
abstract public int getPrice();
abstract public String toString();
}

class WalkupTicket extends Ticket {
int price;
public WalkupTicket(int number) {
super(number);
this.price=50;
}

public int getPrice() {
return this.price;
}

public String toString() {
return "Number:"+this.number+",Price:"+this.price;
}
}

int price;
super(number);
else           this.price=40;
}

public int getPrice() {
return this.price;
}
public String toString() {
return "Number:"+this.number+",Price:"+this.price;
}

}
int height;
int price;
this.height=height;
if(height>120) {
else           this.price=30;
}else {
else           this.price=15;
}
}

public int getPrice() {
return this.price;
}

public String toString() {
return "Number:"+this.number+",Price:"+this.price;
}
}```
View Code