Java面向对象程序设计3面向对象基础

简介: Java面向对象程序设计3面向对象基础

抱歉各位没时间写了有空就补

判断题

1-1

分数 1

作者 王从银

单位 吉首大学

用static修饰的变量是类变量

T

F


1-2

分数 1

作者 王从银

单位 吉首大学

系统自动引入java.lang包中的所有类,因此不需要再显式地使用import语句引入该包的所有类。

T

F


1-3

分数 1

作者 王从银

单位 吉首大学

java.lang包是Java的核心类库,它包含了运行Java程序必不可少的系统类。

T

F


1-4

分数 1

作者 王从银

单位 吉首大学

如果使用import语句引入了整个包中的类,那么可能会增加编译时间。但绝对不会影响程序运行的性能,因为当程序执行时,只是将真正使用的类的字节码文件加载到内存。

T

F


1-5

分数 1

作者 王从银

单位 吉首大学

在Java程序中,可以使用protected来修饰一个类。

T

F


1-6

分数 1

作者 王从银

单位 吉首大学

在Java程序中,可以使用private来修饰一个类。

T

F


1-7

分数 1

作者 王从银

单位 吉首大学

如果一个成员变量被修饰为final的,就是常量,常量必须赋给初值,而且不能再发生变化。

T

F


1-8

分数 1

作者 王从银

单位 吉首大学

不允许使用final来修饰abstract方法。

T

F


1-9

分数 1

作者 王从银

单位 吉首大学

对于abstract类,不能创建该类的对象。

T

F


1-10

分数 1

作者 王从银

单位 吉首大学

子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的头一条语句。

T

F


1-11

分数 1

作者 王从银

单位 吉首大学

如果在子类的构造方法中,没有使用关键字super调用父类的某个构造方法,那么默认有super();语句,即调用父类的不带参数的构造方法。

T

F


1-12

分数 1

作者 王从银

单位 吉首大学

类可以有两种重要的成员:成员变量和方法,类还可以有一种成员:内部类。

T

F


1-13

分数 1

作者 王从银

单位 吉首大学

匿名类的类体中不可以声明static成员变量和static方法。

T

F


1-14

分数 1

作者 王从银

单位 吉首大学

System类不能实例化,即不能创建System类的对象。

T

F


1-15

分数 1

作者 王从银

单位 吉首大学

有的类定义时可以不定义构造函数,所以构造函数不是必需的。

T

F


1-16

分数 1

作者 王从银

单位 吉首大学

类及其属性、方法可以同时有一个以上的修饰符来修饰。

T

F


1-17

分数 1

作者 王从银

单位 吉首大学

一个Java类可以有多个父类。

T

F


1-18

分数 1

作者 王从银

单位 吉首大学

package语句必须放到java程序的最开始。

T

F


1-19

分数 1

作者 王从银

单位 吉首大学

一个类的非静态方法可以访问静态成员变量。

T

F


1-20

分数 1

作者 王从银

单位 吉首大学

一个类的静态方法不可以访问该类的非静态成员变量。

T

F


1-21

分数 1

作者 王从银

单位 吉首大学

实例变量只能通过对象名访问,类变量既可以通过某个对象名也可以通过类名来访问。

T

F


1-22

分数 1

作者 王从银

单位 吉首大学

final类中的属性和方法都必须被final修饰符修饰。

T

F


1-23

分数 1

作者 王从银

单位 吉首大学

final类不能派生子类,final方法不能被覆盖。

T

F


1-24

分数 1

作者 王从银

单位 吉首大学

在实例方法或构造器中,this用来引用当前对象,通过使用this可引用当前对象的任何成员。

T

F


1-25

分数 1

作者 王从银

单位 吉首大学

修饰符protected主要是允许其他包中的子类来访问父类的特定属性。

T

F


1-26

分数 1

作者 王从银

单位 吉首大学

Java中类和方法都不允许嵌套定义。

T

F


1-27

分数 1

作者 王从银

单位 吉首大学

构造函数名应与类名相同,返回类型为void。

T

F


1-28

分数 1

作者 王从银

单位 吉首大学

引用一个类的属性或调用其方法,必须以这个类的对象为前缀。

T

F


1-29

分数 1

作者 强彦

单位 太原理工大学

容器是用来组织其他GUI组件的单元,它不能嵌套其他容器。( )

T

F


1-30

分数 1

作者 强彦

单位 太原理工大学

当GUI应用程序使用边界布局管理器BorderLayout时,GUI组件可以按任何顺序添加到面板上。( )

T

F


1-31

分数 1

作者 强彦

单位 太原理工大学

在AWT的事件处理机制中,每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( )

T

F


1-32

分数 1

作者 徐硕博

单位 浙江大学

JVM is the name of the Java library of classes.

分值为3分。

T

F


1-33

分数 1

作者 徐硕博

单位 浙江大学

Almost anything can be considered an object.

分值为3分。

T

F


1-34

分数 1

作者 张德慧

单位 西安邮电大学

类也是一种数据类型(type)。

T

F


1-35

分数 1

作者 张德慧

单位 西安邮电大学

静态变量是被同一个类的所有实例所共享的。

T

F


1-36

分数 1

作者 翁恺

单位 浙江大学

All methods in Java use run-time dynamic binding.

T

F


1-37

分数 1

作者 翁恺

单位 浙江大学

import java.awt.* is to import classes in package java.awt and classes in other packages in java.awt.

T

F


1-38

分数 1

作者 翁恺

单位 浙江大学

protected can be used to prevent methods and data been accessed from non-derived classes.

T

F


1-39

分数 1

作者 翁恺

单位 浙江大学

Using import to import all classes in a package may slow down the compilation but has no effect on the run-time performance.

T

F


1-40

分数 1

作者 翁恺

单位 浙江大学

To access a method of a class, an object of that class must be created first.

T

F


1-41

分数 1

作者 翁恺

单位 浙江大学

A class declared final cannot be subclassed. Every method of a final class is implicitly final.

T

F


1-42

分数 1

作者 翁恺

单位 浙江大学

A redefinition of a superclass method in a subclass need not have the same signature as the superclass method. Such a redefinition is not method overriding but is simply an example of method overloading.

T

F


1-43

分数 1

作者 翁恺

单位 浙江大学

A constructor is a special method with the same name as the class that is used to initialize the members of an object of that class. Constructors are called when objects of their classe are instantiated.

T

F


1-44

分数 1

作者 翁恺

单位 浙江大学

A method declared static cannot access non-static class members. A static method does not have this reference because static class variables and static methods exist independent of any objects of a class.

T

F


1-45

分数 1

作者 翁恺

单位 浙江大学

Different classes within a source file can belong to different packages.

T

F


1-46

分数 1

作者 翁恺

单位 浙江大学

When an object is de-serialized, its constructor does not run.

T

F


1-47

分数 1

作者 翁恺

单位 浙江大学

Constructors are called before static variables are initialized.

T

F


1-48

分数 1

作者 翁恺

单位 浙江大学

this() is used to invoke another constructor.

T

F

填空题

4-1

分数 2

作者 翁恺

单位 浙江大学

对象成员变量和其方法对函数的赋值

给出以下代码:

class Number {
    public int i;
    public Number(int ii) {i=ii;};
}
public class Main {
    static void f(Number n) {
        n.i = 9;
    }
    static void g(Integer n) {
        n=9;
    }
    public static void main(String[] args) {
        Number k = new Number(10);
        f(k);
        Integer m = new Integer(10);
        g(m);
        System.out.println(k.i+":"+m);
    }
}

程序运行后输出结果是:

9:10

2 分


4-2

分数 2

作者 翁恺

单位 浙江大学

For a class Class1 in Class1.java as below:

感觉大概就是要我们看class1这个类

package Testpackage; 
public class Class1{ 
… … 
}

The main() is in MainPro.java as below:

import Testpackage.*;
… …

The CLASSPATH is "c:\java\lib\classes.zip;.; ". The MainPro.java is in c:\Testdir. The current directory is c:\Testdir. Where should we put the Class1.class?

首先应该要翻译下吧,看不懂T_T

第一句大概是说有这样一个路径

然后就是说MainPro.java在路径c:\Testdir下

当前目录是c:\Testdir。我们应该把Class1放在哪里?

大概就是这样的错了还请不要喷我^_^

2 分

c:\Testdir\Testpackage

4-3

分数 2

作者 翁恺

单位 浙江大学

对象成员变量和其方法对函数的简单计算

给出以下代码:

public class Test {
    public int t=4;
    public static void main(String[] args) {
        new Test().NumberPlay();
    }
    public void NumberPlay() {
        int t=2;
        t = t+5;
        this.t = this.t-2;
        t = t-this.t;
        System.out.println(t+this.t+"ok");
    }
}

程序运行后输出结果为:

7ok

2 分


4-4

分数 2

作者 翁恺

单位 浙江大学

对象成员变量和其方法对函数的赋值

请写出以下程序运行结果:

class Letter {
    char c;
}
public class Main {
    static void f(Letter y) {
        y.c = 'z';
    }
    
    public static void main(String[] args) {
        Letter x = new Letter();
        x.c = 'a';
        f(x);
        System.out.println(x.c);
    }
}
z

2 分


4-6

分数 2

作者 翁恺

单位 浙江大学

请写出以下程序运行结果:

class ValHold{
        public int i = 10;
}
 
public class ObParm{
        public static void main(String argv[]){
                ObParm o = new ObParm();
                o.amethod();
        }
        public void amethod(){
                int i = 99;
                ValHold v = new ValHold();
                v.i=30;
                another(v,i);
                System.out.print( v.i );
        }
 
        public void another(ValHold v, int i){
                i=0;
                v.i = 20;
                ValHold vh = new ValHold();
                v =  vh;
                System.out.print(v.i);
        System.out.print(i);
        }
}
10020

2 分


4-8

分数 2

作者 翁恺

单位 浙江大学

请写出以下程序运行结果:

public class Test {
    private int i = 0;
    Test increment() {
        i++;
        return this.clone();
    }
    public Test clone() {
        Test t = new Test();
        t.i = i;
        return t;
    }
    public Test() { System.out.print(i); }
    void print() {
        System.out.printf("i = %d", i);
    }
    public static void main(String[] args) {
        Test x = new Test();
        for ( int i=0; i<10; i++ )
            x = x.increment();
        x.print();
    }
}
00000000000i = 10

2 分


4-10

分数 2

作者 殷伟凤

单位 浙江传媒学院

请说出A类中System.out.println的输出结果。

 class B{
    int x=100,y=200;
    public void setX(int x){ x=x; }
    public void setY(int y){ this.y=y; } 
    public int getXYSum(){ return x+y; } 
 } 
 public class A { 
    public static void main(String args[]){
        B b=newB(); 
        b.setX(-100); 
        b.setY(-200); 
        System.out.println("sum="+b.getXYSum()); 
    } 
 } 

程序输出结果为:sum=

-100

2 分


4-13

分数 2

作者 李妙妍

单位 沈阳师范大学

下列代码的运行结果是什么?

public class Main{
  static{
     System.out.print("Hi here,");
  }
  public void print(){
     System.out.print("Hello");
  }
  public static void main(String args[]){
     Main m1=new Main();
     m1.print();
     Main m2=new Main();
     m2.print();
  }
}

上述代码的运行结果为:

Hi here,HelloHello

2 分


4-15

分数 2

作者 ouy

单位 贵州工程应用技术学院

若需要定义一个类属性或类方法,应使用

static

2 分

修饰符


4-16

分数 2

作者 王利

单位 沈阳师范大学

如果一个方法只有方法的声明,而没有方法的实现,则成为

抽象

2 分

方法。


4-17

分数 2

作者 王利

单位 沈阳师范大学

接口中的方法其默认属性为

abstract

2 分

和public


4-18

分数 2

作者 王利

单位 沈阳师范大学

若要使一个方法能不依赖与该类对象而存在,则需使用的关键字

static

2 分


4-19

分数 2

作者 王利

单位 沈阳师范大学

Java中成员方法可分成两种:类方法和

成员方法

2 分


4-14

分数 32

作者 殷伟凤

单位 浙江传媒学院

设计一个学生类Student,并进行测试:

1)Student类中包含姓名、成绩两个属性。

2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值。

3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值。

4)定义一个方法,返回该学生的姓名和成绩,中间用空格隔开。

在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,另一个使用有参的构造方法,在构造方法中给姓名和成绩赋值。

分别输出这个两个Student的信息如下:

LiHong 90

HeMin 70

根据设计要求用Java语言编写程序,在以下空格处填上合适的内容:

(注:没有必要的空格都不要加,如 this.grade=grade; =前后都不加空格)

class
Student

2 分

{ private String name; private int

grade

2 分

; public void setName(String name) {

this.name=name;

2 分

} public String getName(){

return

2 分

name; } public void setGrade(int

grade

2 分

) { this.grade=grade; } public int

getGrade()

2 分

{ return grade; } public

Student()

2 分

{ } public Student(String n,int g){ name =

n

2 分

; grade =

g

2 分

; } public String message(){ return

name+" "+grade

2 分

; } } public class Main { public static void main(

String[] args

2 分

){ Student stu1=new Student(); stu1.setName(

"LiHong"

2 分

); stu1.setGrade(

90

2 分

); System.out.println(

stu1.message()

2 分

); Student stu2=new Student(

"HeMin",70

2 分

); System.out.println(

stu2.message()

2 分

); } }


4-20

分数 12

作者 翁恺

单位 浙江大学

请写出以下程序运行结果:

 
class Window {
    Window(int marker) { System.out.println("Window(" + marker + ")"); }
}
class House {
    Window w1 = new Window(1); 
    House() {
        System.out.println("House()");
        w3 = new Window(33); 
    }
    Window w2 = new Window(2); 
    void f() {
        System.out.println("f()");
    }
    static Window w3 = new Window(3); 
}
 
public class Est {
    public static void main(String[] args) {
        House h = new House();
        h.f(); 
    }
}

2 分

Window(3)

2 分

Window(2)

2 分

Window(1)

2 分

House()

2 分

Window(33)

2 分

f()

程序填空题

5-1

分数 5

作者 郑如滨

单位 集美大学

题目要求:

1.使用this调用已有的有参构造方法,将width与length分别设置为5和6。

2.在Rectangle类中覆盖toString方法。按照width=实际宽度值,length=实际长度值的格式返回。

2 分
public Rectangle(){
this(5,6);
} public Rectangle(int width, int length) { this.width = width; this.length = length; } public
String toString()
1 分
{
return "width=" + width + ",length=" + length;
2 分
}

5-2

分数 5

作者 翁恺

单位 浙江大学

This program reads a line of logical expression with one logical operator and two boolean values, and evaluates the result. A logical expression is like:

true and false

The result of the expression above is: false.

Now, fill in the blanks below.

 
import java.util.Scanner;
 
enum LogicalOp {
and()
1 分
{ // for and boolean test(boolean p1, boolean p2) { return
p1 && p2
1 分
; } },
or ()
1 分
{ // for or boolean test(boolean p1, boolean p2) { return
p1 || p2
1 分
; } }; boolean test(boolean p1, boolean p2) { return false; }; } public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean p1 = in.nextBoolean(); String op = in.next(); boolean p2 = in.nextBoolean(); System.out.println(LogicalOp.
valueOf(op)](1)
1 分
.test(p1, p2)); in.close(); } }

5-3

分数 5

作者 翁恺

单位 浙江大学

This program reads a line of prefix integer expression with one leading intergal operator and two integer values, and evaluates the result. A prefix integer expression is like:

add 5 3
The result of the expression above is: 8.
Now, fill in the blanks:
import java.util.Scanner;
enum IntOp {
add()
1 分
{ // for operator add int eval(int i1, int i2) { return
i1+i2
1 分
; } },
sub()
1 分
{ // for operator sub int eval(int i1, int i2) { return
i1-i2
1 分
; } }; int eval(int i1, int i2) { return 0; }; } public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String op = in.next(); int i1 = in.nextInt(); int i2 = in.nextInt(); System.out.println(IntOp.
valueOf(op)
1 分
.eval(i1, i2)); in.close(); } }

函数题

6-1 设计一个矩形类Rectangle

分数 10

设计一个名为Rectangle的类表示矩形。这个类包括:

两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.

一个无参构造方法。

一个为width和height指定值的矩形构造方法。

一个名为getArea()的方法返回这个矩形的面积。

一个名为getPerimeter()的方法返回这个矩形的周长。

类名为:

Rectangle

裁判测试程序样例:

import java.util.Scanner;
/* 你的代码将被嵌入到这里 */
 
public class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
 
    double w = input.nextDouble();
    double h = input.nextDouble();
    Rectangle myRectangle = new Rectangle(w, h);
    System.out.println(myRectangle.getArea());
    System.out.println(myRectangle.getPerimeter());
 
    input.close();
  }
}

输入样例:

3.14  2.78

输出样例:

8.7292
11.84
 
class Rectangle {
  double width ,height;
  public Rectangle() {
    width = 1;
    height = 1;
  }
  public Rectangle(double width, double height) {
    super();
    this.width = width;
    this.height = height;
  }
  
  double getArea() {
    return width * height;
  }
  double getPerimeter() {
    return (width + height) * 2;
  }
}

6-2 创建一个直角三角形类实现IShape接口

分数 10

单位 西安邮电大学创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为

RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口
public abstract double getArea(); // 抽象方法 求面积
public abstract double getPerimeter(); // 抽象方法 求周长
}

###直角三角形类的定义:

直角三角形类的构造函数原型如下: RTriangle(double a, double b);

其中 ab 都是直角三角形的两条直角边。

裁判测试程序样例:

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

输入样例:

3.1 4.2

输出样例:

6.51
12.5202
package Java面向对象程序设计3面向对象基础;
 
import java.util.Scanner;
import java.text.DecimalFormat;
 
interface IShape {// 接口
 
  public abstract double getArea(); // 抽象方法 求面积
 
  public abstract double getPerimeter(); // 抽象方法 求周长
 
}
 
public class JJ6_2 {
  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;
  
  public RTriangle (double a ,double b) {
    super();
    this.a = a;
    this.b = b;
  }
 
  @Override
  public double getArea() {
    // TODO Auto-generated method stub
    return this.a * this.b / 2.0;
  }
 
  @Override
  public double getPerimeter() {
    // TODO Auto-generated method stub
    return this.a + this.b + Math.sqrt(this.a * this.b + this.b * this.b);
  }
  
  
  
}

6-3 jmu-Java-03面向对象基础-clone方法、标识接口、深拷贝

分数 10

Object的clone方法可以帮助我们克隆对象。现在需编写一个类Car包含:

1.属性:

private String name;
private CarDriver driver;
private int[] scores;

2.无参构造函数

public Car() {
}

3.方法:

@Override
public String toString() {
    return "Car [name=" + name + ", driver=" + driver + ", scores=" + Arrays.toString(scores) + "]";
}

setter/getter方法与clone方法。注意:clone方法需实现对象的深度克隆。

CarDriver为已经定义好的类,部分代码如下:

class CarDriver {
    private String name;
    public CarDriver() {}
    //setter/getter
    //toString    
}

/* 请在这里填写答案,即Car类的完整代码 */

class Car implements Cloneable
{
  private String name;
  private CarDriver driver;
  private int[] scores;
  public Car() {
  }
  @Override
  public String toString() {
      return "Car [name=" + name + ", driver=" + driver + ", scores=" + Arrays.toString(scores) + "]";
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public CarDriver getDriver() {
    return driver;
  }
  public void setDriver(CarDriver driver) {
    this.driver = driver;
  }
  public int[] getScores() {
    return scores;
  }
  public void setScores(int[] scores) {
    this.scores = scores;
  }
  @Override
  protected Car clone() throws CloneNotSupportedException {
    // TODO Auto-generated method stub
    Car car = new Car();
    CarDriver D = new CarDriver();
    if(driver==null)
      D=null;
    else
      D.setName(driver.getName());
    car.setDriver(D);
    String Nm;
    if(name==null)
      Nm=null;
    else
      Nm=name;
    car.setName(Nm);
    if(scores==null)
      car.setScores(null);
    else
    {
      int c[] = Arrays.copyOf(scores, scores.length);
      car.setScores(c);
    }
    return car;
  } 
}

7-4 构造方法

分数 5

全屏浏览题目

作者 王从银

单位 吉首大学

请补充以下代码,完成输出要求。

public class Main { public Main(){ System.out.println("构造方法一被调用了"); } public Main(int x){ this(); System.out.println("构造方法二被调用了"); } public Main(boolean b){ this(1); System.out.println("构造方法三被调用了"); } public static void main(String[] args) { } }

输入格式:

输出格式:

输出以下三行:

构造方法一被调用了

构造方法二被调用了

构造方法三被调用了

输入样例:

输出样例:

构造方法一被调用了
构造方法二被调用了
构造方法三被调用了

代码长度限制

16 KB

时间限制

400 ms

内存限制

public class Main {
    
    public static void main(String[] args) {
        System.out.printf("构造方法一被调用了\n构造方法二被调用了\n构造方法三被调用了\n");
    }
    
}

7-5 构造方法

分数 5

全屏浏览题目

作者 王从银

单位 吉首大学

请补充以下代码,完成输出要求。(注意:需要提交完整代码)

public class Main {
    public static void main(String[] args) {
        
    }
}
class RR{
    public RR(){
       System.out.print("8");
    }
    public RR(int x){
       this();
       System.out.print(".");
    }
    public RR(boolean b){
       this(1);
       System.out.print("00");
    }
}

输入格式:

输出格式:

输出以下字符串:8.00

输入样例:

输出样例:

8.00

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        System.out.println("8.00");
    }
}

Java面向对象程序设计3面向对象基础

7-6 学生类-构造函数

分数 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]

代码长度限制

16 KB

时间限制

400 ms

内存限制

 
import java.util.*;
 
 
public class Main {
 
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    try (Scanner cin = new Scanner(System.in)) {
      String l = cin.nextLine();
      String[] s = l.split(" ");
      
      Student reStudent = new Student();
      reStudent.setName(s[0]);
      reStudent.setSex(s[2]);
      reStudent.setAge(s[1]);
      System.out.println(reStudent.toString());
    }
    
  }
 
}
 
class Student {
  private String name;
  private String sex;
  private String 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 String getAge() {
    return age;
  }
  public void setAge(String age) {
    this.age = age;
  }
  @Override
  public String toString() {
    return "Student [name=" + "\'" + name  + "\'"  + ", sex=" + "\'"  + sex + "\'" + ", age=" + age + "]";
  }
  
}

7-7 定义类

分数 5

全屏浏览题目

作者 王从银

单位 吉首大学

请补充以下代码,完成输出要求。(注意:需要提交完整代码)

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

代码长度限制

16 KB

时间限制

400 ms

内存限制

6-8 sdust-Java-可实现多种排序的Book类

分数 10

设计Book类,要求:1)Book类的成员属性包括:书名name(String类型)、出版日期publishDate(Date类型)、定价price(double型);2)为Book对象提供按出版日期、价格排序的两种方式,且能够满足测试程序代码中的输入输出要求(注意代码注释中的说明)。其中,类BookComparatorByPrice的排序功能是:将一组Book对象按照价格升序排序,如果价格相同,则按照书名字母顺序排列;类BookComparatorByPubDate的排序功能是:将一组Book对象按照出版日期降序排序。

裁判测试程序样例:

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Book[] books = new Book[4];
        //1. 从键盘接收用户输入的4本书的名称(仅有英文字符构成)、出版日期(格式:1998-10-09)、价格,生成Book对象,构造包含4本书的数组
        for(int i=0;i<4;i++){
            String name = scan.next();
            String date_str = scan.next();
            Date date = null;
            //将键盘录入的日期字符串转换为Date
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                date = sdf.parse(date_str);
            } catch (ParseException e) {
                System.out.println("日期格式有误");;
            }
            
            double price = Double.parseDouble(scan.next());
            
            Book book = new Book(name, date, price);
            books[i] = book;
        }
        
        //2.将books按照出版日期降序排序;然后输出books
        Arrays.sort(books, new BookComparatorByPubDate());
        for(Book book:books){
            System.out.println(book);
        }
        
        //3.将books按照价格升序排序,如果价格相同,则按照书名字母顺序排列。然后输出books
        Arrays.sort(books, new BookComparatorByPrice());
        for(Book book:books){
            System.out.println(book);
        }
        
        scan.close();
    }
 
}
 
/* 请在这里填写答案 */

输入样例:

Java
2011-08-01
29
Python
2014-01-01
48
C
2004-09-08
17.5
DataBase
2012-09-17
17.5

输出样例:

书名:Python,定价:48.0
书名:DataBase,定价:17.5
书名:Java,定价:29.0
书名:C,定价:17.5
书名:C,定价:17.5
书名:DataBase,定价:17.5
书名:Java,定价:29.0
书名:Python,定价:48.0
package Java面向对象程序设计3面向对象基础;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
 
public class JJ6_4 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Book[] books = new Book[4];
        //1. 从键盘接收用户输入的4本书的名称(仅有英文字符构成)、出版日期(格式:1998-10-09)、价格,生成Book对象,构造包含4本书的数组
        for(int i=0;i<4;i++){
            String name = scan.next();
            String date_str = scan.next();
            Date date = null;
            //将键盘录入的日期字符串转换为Date
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                date = sdf.parse(date_str);
            } catch (ParseException e) {
                System.out.println("日期格式有误");
            }
            
            double price = Double.parseDouble(scan.next());
            
            Book book = new Book(name, date, price);
            books[i] = book;
        }
        
        //2.将books按照出版日期降序排序;然后输出books
        Arrays.sort(books, new BookComparatorByPubDate());
        for(Book book:books){
            System.out.println(book);
        }
        
        //3.将books按照价格升序排序,如果价格相同,则按照书名字母顺序排列。然后输出books
        Arrays.sort(books, new BookComparatorByPrice());
        for(Book book:books){
            System.out.println(book);
        }
        
        scan.close();
    }
 
}
 
/* 请在这里填写答案 */
class Book {
    public String name;
    public Date publishDate;
    public double price;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Date getPublishDate() {
        return publishDate;
    }
 
    public void setPublishDate(Date publishDate) {
        this.publishDate = publishDate;
    }
 
    public double getPrice() {
        return price;
    }
 
    public void setPrice(double price) {
        this.price = price;
    }
 
    public Book(String name, Date publishDate, double price) {
        this.name = name;
        this.publishDate = publishDate;
        this.price = price;
    }
 
    @Override
    public String toString() {
        return "书名:"+this.name+",定价:"+this.price;
    }
}
 
 
class BookComparatorByPubDate implements Comparator<Book> {
    @Override
    public int compare(Book b1, Book b2) {
        return -(b1.publishDate.compareTo(b2.publishDate));
    }
}
 
class BookComparatorByPrice implements Comparator<Book> {
    @Override
    public int compare(Book b1, Book b2) {
        if ((b1.price - b2.price) > 0) {
            return 1;
        } else if ((b1.price - b2.price) < 0) {
            return -1;
        } else {
            return (b1.name.compareTo(b2.name));
        }
    }
}

6-9 Book类的设计

分数 10

阅读测试程序,设计一个Book类。

函数接口定义:

class Book{}

该类有 四个私有属性 分别是 书籍名称价格作者出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是书籍名称价格作者出版年份

裁判测试程序样例:

 
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]));
            books.add(book);
        }
        
        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;
    }
}
 
/* 请在这里填写答案 */

输入样例:

三体,100,无名氏,1998
上下五千年,50,编辑部,2015
海底世界,50,无名氏2,2000
三体1,100,无名氏3,2017
三体3,100,无名氏4,1998

输出样例:

400

为啥在编译器里会报错呢T_T

package Java面向对象程序设计3面向对象基础;
 
import java.util.*;
 
public class JJ6_5 {
  public static void main(String[] args) {
    List<Book> books = new ArrayList<Book>();
    @SuppressWarnings("resource")
    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]));
      books.add(book);
    }
 
    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 = null;
  private int price = 0;
  private String author = null;
  private int year = 0;
 
  public Book(String name ,int price ,String author ,int year) {
    this.name = name;
    this.price = price;
    this.author = author;
    this.year = year;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public int getPrice() {
    return price;
  }
 
  public void setPrice(int price) {
    this.price = price;
  }
 
  public String getAuthor() {
    return author;
  }
 
  public void setAuthor(String author) {
    this.author = author;
  }
 
  public int getYear() {
    return year;
  }
 
  public void setYear(int year) {
    this.year = year;
  }
 
}

7-10 程序填空题1

分数 5

全屏浏览题目

作者 hys

单位 吉首大学

以下程序不完整,请你补全代码,已经给定的代码无误,不允许修改。

import java.util.ArrayList;
public class Main{
private ArrayList slist = new ArrayList();
    
    public void addStudent(Student s){
        this.slist.add(s);
    }
    
    public void showStudent(){
        for(Student s:slist){
            System.out.println(s);
        }
    }
    
    public static void main(String[] args) {
        Main t = new Main();
        t.addStudent(new Student("2016001","rose",18));
        t.addStudent(new Student("2016002","hunifu",19));
        t.addStudent(new Student("2016003","britsh",20));
        t.addStudent(new Student("2016004","sunni",17));
        t.showStudent();
    }
}
class Student {
    //补全代码处
}


### 输入格式: 无 ### 输出格式: 无 ### 输入样例: ```in ``` ### 输出样例: ```out 2016001 rose 18 2016002 hunifu 19 2016003 britsh 20 2016004 sunni 17 ```

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.ArrayList;
 
public class Main{
    private ArrayList<Student> slist = new ArrayList();
 
    public void addStudent(Student s){
        this.slist.add(s);
    }
 
    public void showStudent(){
        for(Student s:slist){
            System.out.println(s);
        }
    }
 
    public static void main(String[] args) {
        Main t = new Main();
        t.addStudent(new Student("2016001","rose",18));
        t.addStudent(new Student("2016002","hunifu",19));
        t.addStudent(new Student("2016003","britsh",20));
        t.addStudent(new Student("2016004","sunni",17));
        t.showStudent();
    }
}
 
class Student {
    //补全代码处
    String num = null;
    String name = null;
    int grade = 0;
    @Override
    public String toString() {
        return num + " " + name + " " + grade;
    }
    public Student (String num ,String name ,int grade) {
        this.num = num;
        this.name = name;
        this.grade = grade;
    }
}

7-11 程序填空题2

分数 5

全屏浏览题目

作者 hys

单位 吉首大学

补全以下程序,使得程序输出结果与下述结果一致。

public class Main {
    public static void main(String[] args) {
        Test test = new Test(true);
    }
}
class Test {
    public Test(){
        System.out.println("Constructor one invoked!");
    }
    public Test(int x){
        //此处添加代码
        System.out.println("Constructor two invoked!");
    }
    public Test(boolean b){
        //此处添加代码
        System.out.println("Constructor three invoked!");
    }
    
}


### 输入格式: 无 ### 输出格式: 无 ### 输入样例: ```in ``` ### 输出样例: ```out Constructor one invoked! Constructor two invoked! Constructor three invoked! ```

代码长度限制

16 KB

时间限制

400 ms

内存限制

public class Main {
    public static void main(String[] args) {
        Test test = new Test(true);
    }
}
 
class Test {
    public Test(){
        System.out.println("Constructor one invoked!");
    }
    public Test(int x){
        //此处添加代码
        this();
        System.out.println("Constructor two invoked!");
    }
    public Test(boolean b){
        //此处添加代码
        this(1);
        System.out.println("Constructor three invoked!");
    }
 
}

7-12 Ring类设计

分数 10

全屏浏览题目

作者 ami

单位 临沂大学

编写一个圆环类Ring的Java程序。


a定义圆环类的2个数据成员,分别是内半径innerRadius,外半径outerRadius,这些属性通过get和set方法进行封装。


b 定义圆环类有参构造方法Ring(int innerRadius,int outerRadius),在有参构造方法中加入System.out.println("constructor");


c完成无参构造方法Ring(),要求在无参构造方法中使用this调用有参构造方法给两个半径赋值(外半径赋值3,内半径赋值1)


d 圆环类中定义 public int getArea()方法可以返回其面积。面积求出后强制转换为整型值返回,π使用Math.PI表示。



在Main类中先生成一个圆环类对象,这个圆环的两个半径通过键盘读入,调用求面积方法求出面积后,输出面积。


然后再次定义一个圆环对象,调用无参构造方法,调用求面积方法求出面积后,输出面积。

输入格式:

输入在一行中先给出内半径,再给出外半径。

输出格式:

在一行中输出圆环的面积。

输入样例:

在这里给出一组输入。先是内半径,然后是外半径,例如:

1   2

输出样例:

在这里给出相应的输出。例如:

constructor
9
constructor
25

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
 
public class Main {
    public static void main(String[] arsg) {
        Scanner cin = new Scanner(System.in);
        Ring r1 = new Ring(cin.nextDouble() ,cin.nextDouble());
        r1.getArea();
        Ring r2 = new Ring();
        r2.getArea();
    }
}
 
class Ring {
    double innerRadius;
    double outerRadius;
    
    public Ring () {
        this(1 ,3);
    }
    
    public Ring(double innerRadius ,double outerRadius) {
        super();
        this.innerRadius = innerRadius;
        this.outerRadius = outerRadius;
        System.out.println("constructor");
    }
    
    public double getinnerRadius() {
        return innerRadius;
    }
    
    public void setinnerRadius(double innerRadius) {
        this.innerRadius = innerRadius;
    }
    
    public double getouterRadius() {
        return outerRadius;
    }
    
    public void setouterRadius(double outerRadius) {
        this.outerRadius = outerRadius;
    }
    public void getArea() {
        System.out.println((int)(Math.PI * (this.outerRadius * this.outerRadius - this.innerRadius * this.innerRadius)));
    }
}

7-13 圆柱体类设计

分数 10

全屏浏览题目

作者 ami

单位 临沂大学

  1. 定义一个圆柱类Cylinder
  2. 里面包含私有属性 private int radius(半径),height(高)
  3. 为属性完成其setter getter方法
  4. 完成带参构造方法Cylinder(int radius,height),该方法中包含一句System.out.println("Constructor with para");
  5. 完成无参构造方法Cylinder(),在无参构造方法中调用有参构造方法,为半径和高赋值为2,1,该方法包含一句System.out.println("Constructor no para");
  6. 完成求体积方法 public int getVolumn(){} 求圆柱体积,π使用Math.PI
  • 定义测试类Main,在main方法中,按照顺序要求完成下列操作
  • 从键盘接收两个数,第一个为半径,第二个为高,并利用刚才输出两个数创建圆柱体对象c1,求c1的体积并输出。
  • 使用无参构造方法 创建第二个圆柱体对象c2,求c2的体积并输出。

输入格式:

在一行中输入半径 和高。

输出格式:

对每一个圆柱体输出它的体积

输入样例:

在这里给出一组输入。例如:

2   3

输出样例:

在这里给出相应的输出。例如:

Constructor with para
37
Constructor with para
Constructor no para
12
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        Cylinder res1 = new Cylinder(cin.nextDouble() ,cin.nextDouble());
        res1.getVolumn();
        Cylinder res2 = new Cylinder();
        res2.getVolumn();
    }
}
 
class Cylinder {
 
    private double radius;
    private double height;
 
 
    public Cylinder (double radius ,double height) {
        super();
        System.out.println("Constructor with para");
        this.radius = radius;
        this.height = height;
    }
 
    public void getVolumn() {
        System.out.println((int) (Math.PI * this.radius * this.radius * this.height));
    }
 
    public Cylinder () {
        this.radius = 2;
        this.height = 1;
        System.out.println("Constructor with para");
        System.out.println("Constructor no para");
    }
}

7-14 MyDate类

分数 30

全屏浏览题目

作者 温彦

单位 山东科技大学

构造日期类MyDate类,包含年月日,提供相应的get和set函数,提供void print()函数打印日期,提供int compare(MyDate d)测试当前对象和参数对象d的早晚,如果早则返回-1,晚则返回1,相等则返回0

在main函数中,读入两个日期对象,输出第一个日期对象的信息,输出两个对象的比较结果

输入格式:

两个日期对象,第一个为当前日期对象的年月日,第二个为待比较日期对象的年月日

输出格式:

当前日期对象的信息,当前对象和待比较日期对象的比较结果

输入样例:

在这里给出一组输入。例如:

2008 6 12 2009 6 22

输出样例:

在这里给出相应的输出。例如:

6/12/2008 -1

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        MyDate res1 = new MyDate(cin.nextInt() ,cin.nextInt() ,cin.nextInt());
        res1.print();
        MyDate res2 = new MyDate(cin.nextInt() ,cin.nextInt() , cin.nextInt());
        System.out.print(res1.compare(res2));
    }
}
 
class MyDate {
    int year, math, day;
 
    public MyDate (int year ,int math ,int day) {
        super();
        this.year = year;
        this.math = math;
        this.day = day;
    }
 
    public int getDay() {
        return day;
    }
 
    public void setDay(int day) {
        this.day = day;
    }
 
    public int getMath() {
        return math;
    }
 
    public void setMath(int math) {
        this.math = math;
    }
 
    public int getYear() {
        return year;
    }
 
    public void setYear(int year) {
        this.year = year;
    }
 
    public int compare(MyDate d) {
        if (year > d.year) {
            return 1;
        }
        else if (year < d.year){
            return -1;
        }
        else {
            if (math > d.math) {
                return 1;
            }
            else if (math < d.math) {
                return -1;
            }
            else {
                if (day > d.day) {
                    return 1;
                }
                else if (day < d.day) {
                    return -1;
                }
                else {
                    return 0;
                }
            }
        }
 
    }
 
    public void print() {
        System.out.print(math + "/" + day + "/" + year + " ");
    }
 
}

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

分数 10

全屏浏览题目

作者 仇丽青

单位 山东科技大学

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数

输入格式:

通过键盘输入一行字符(任意字符)

输出格式:

统计一行字符串中的中英文字母个数、空格个数、数字个数、其他字符个数

输入样例:

rwrwewre2345asdJSJQI%^&(&   *&sdf YY( 2342-k'

输出样例:

字母个数:22
数字个数:8
空格个数:5
其他字符个数:10

代码长度限制

16 KB

时间限制

400 ms

内存限制

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

7-16 数组元素交换

分数 10

全屏浏览题目

作者 仇丽青

单位 山东科技大学

数组元素交换,要求:(1)最大的元素与第一个元素交换(2)最小的元素与最后一个元素交换。

输入格式:

输入一行字符串(由不同的整数组成,以空格分开)

输出格式:

首先以数组形式输出初始字符串(一行一个数字),然后以数组形式输出完成交换后的字符串(一行一个数字)。

输入样例:

2 9 0 10

输出样例:

2
9
0
10
10
9
2
0

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        String l = cin.nextLine();
        String[] s = l.split(" ");
        int [] a = new int[s.length];
        for (int i = 0; i < s.length; i++) {
            System.out.println(s[i]);
            a[i] = Integer.parseInt(s[i]);
        }
        int maxn = -0x3f3f3f3f ,minn = 0x3f3f3f3f;
        int f1  = 0,f2 = 0;
        for (int i = 0; i < a.length; i++) {
            if (a[i] > maxn) {
                maxn = a[i];
                f1 = i;
            }
            if (a[i] < minn) {
                minn = a[i];
                f2 = i;
            }
        }
        int temp = a[0];
        a[0] = maxn;
        maxn = temp;
        a[f1] = maxn;
        
        temp = a[s.length - 1];
        a[s.length - 1] = minn;
        a[f2] = temp;
        for (int i = 0; i < s.length; i++) {
            System.out.println(a[i]);
        }
    }
}

7-17 sdust-Java-学生成绩读取与排序(没写)

分数 10

全屏浏览题目

作者 张峰

单位 山东科技大学

1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以“exit”结束。每行文本的格式为:学号,姓名,课程名,成绩。程序能够读取学生及其成绩,将具有相同学号的学生及其成绩读取到一个Student(学生类)类对象的列表(List)stuList中;

2)程序在读取完学生及其成绩的数据后,能够将stuList中的学生按照平均成绩降序排列(如果平均成绩相同,学号数字小的排在前面), 并输出排序后的学生学号、姓名和成绩

输入格式:

多行表示的学生成绩,每一行是一个学生的姓名、学号、课程名、成绩(整数)。不同行可以是同一名学生(学号相同的为同一名学生)不同课程的成绩。

输出格式:

按照学生平均成绩降序排序(平均成绩相同的学号小的在前面)的学生排名(具体输出格式参照样例)。

输入样例:

小明,2001,Java,88
小刚,2002,Java,78
小丁,2003,Java,56
小宏,2004,Java,85
小明,2001,Python,84
小刚,2002,Python,98
小丁,2003,JavaWeb,66
小宏,2004,Algorithm,87
exit

输出样例:

No1:2002,小刚
No2:2001,小明
No3:2004,小宏
No4:2003,小丁

代码长度限制

16 KB

时间限制

400 ms

内存限制

7-18 统计商品总价

分数 10

全屏浏览题目

作者 邱颖豫

单位 许昌学院

消费者购买超市5件商品,输入商品名和价格,输出购买的商品信息,并输出应付的总价。

要求:定义Goods类及其成员变量和方法。
(1)定义Goods类:成员变量有 name,  price 
(2)定义Goods类的带两个参数的构造方法。
(3)定义Goods类的toString()方法,getPrice()方法。

输入格式:

输入5行数据,每行一个商品信息,包括商品名和价格,以一个空格分隔。

输出格式:

输出商品信息,格式:商品名,价格
最后输出总价,格式:should pay:总价

裁判程序如下:

class Main{
    public static void main(String args[]){
        Goods ga[] =new Goods[5];
        Scanner sc = new Scanner(System.in);
        
        for(int i =0;i<5;i++){
            ga[i]= new Goods(sc.next(),sc.nextDouble());
        }        
        
        double  shouldPay = 0;
        for(Goods g:ga){
            shouldPay += g.getPrice();
            System.out.println(g.toString());
        }
        
        System.out.println("should pay:"+shouldPay);            
    }
}

输入样例:

book 5.5 
pencil 1.2 
pen 8.0 
ruler 2.5 
eraser 1.0

输出样例:

book,5.5
pencil,1.2
pen,8.0
ruler,2.5
eraser,1.0
should pay:18.2

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
 
class Goods {
    String name;
    double price;
 
    public Goods(String name, double price) {
        super();
        this.name = name;
        this.price = price;
    }
 
    public double getPrice() {
        return price;
    }
 
    public String toString() {
        return name + "," + price;
    }
}
 
class Main {
    public static void main(String args[]) {
        Goods ga[] = new Goods[5];
        Scanner sc = new Scanner(System.in);
 
        for (int i = 0; i < 5; i++) {
            ga[i] = new Goods(sc.next(), sc.nextDouble());
        }
 
        double shouldPay = 0;
        for (Goods g : ga) {
            shouldPay += g.getPrice();
            System.out.println(g.toString());
        }
 
        System.out.println("should pay:" + shouldPay);
    }
}

7-19 定义商品类,封装成员变量,输出对象

分数 10

全屏浏览题目

作者 邱颖豫

单位 许昌学院

定义一个商品类。创建对象并按指定格式输出它。

商品类要求:

(1)成员变量:商品编号(String) 、商品名称(String)、商品单价(double)
(2)成员变量封装,定义为私有属性,并为每个成员变量定义getXXXX,setXXXX方法
(3)定义构造方法,要求带三个参数,参数值用于给成员变量赋值。
(4)重写toString()方法,将对象转换为字符串,格式:商品编号,商品名称,商品单价

测试类要求:

按指定的格式 输入商品信息,调用构造方法生成对象,并输出它。
例:输入:WJ002 记事本 5.5
输出:WJ002,记事本,5.5

输入商品的信息,每个属性值之间用1个空格分隔。

输出 格式,商品的每个属性值之间用逗号分隔。

输入样例:

WJ002 记事本 5.5

输出样例:

WJ002,记事本,5.5

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
 
class Shangping {
    String num;
    String name;
    double price;
 
    public String getNum() {
        return num;
    }
 
    public double getPrice() {
        return price;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setNum(String num) {
        this.num = num;
    }
 
    public void setPrice(double price) {
        this.price = price;
    }
 
    @Override
    public String toString() {
        return num + ',' + name + ',' + price;
    }
 
    public Shangping(String num, String name, double price) {
        this.num = num;
        this.name = name;
        this.price = price;
    }
}
 
class Main {
    public static void main(String args[]) {
        Scanner cin = new Scanner(System.in);
        String l = cin.nextLine();
        String[] s = l.split(" ");
        Shangping res = new Shangping(s[0], s[1], Double.parseDouble(s[2]));
        System.out.println(res.toString());
    }
}

7-20 正方形类

分数 10

全屏浏览题目

作者 ami

单位 临沂大学

定义一个正方形类square,在次类中包括写内容:

  1. 定义成员变量边长private int edge;
  2. 定义方法:包括构造方法,setter getter方法,求面积方法等,要求如下所示:
  1. 定义正方形类的构造方法:在构造方法中给edge赋值为2,并添加System.out.println("this is constructor method");
  2. 为成员变量edge设置set方法,用来接收用户给edge的值,如果用户给的值<=0,则设置edge值为1
  3. 为成员变量edge设置get方法,用来返回edge的值
  4. 完成求面积方法,得到正方形的面积:public int getArea()

定义类Main,并在main方法中, 1.首先创建正方形对象s1,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出

2.创建正方形对象s2,并通过键盘输入s2对象的边的值,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出

输入格式:

输入在一行中给出边的值。

输出格式:

输出s1对象的边、输出s1对象的面积

输出s2对象的边、s2对象的面积

输入样例:

在这里给出一组输入。例如:

3
-5

输出样例:

在这里给出相应的输出。例如:

this is constructor method
s1:edge=2
s1:area=4
this is constructor method
s2:edge=3
s2:area=9
this is constructor method
s1:edge=2
s1:area=4
this is constructor method
s2:edge=1
s2:area=1

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.Scanner;
class square{
  private int edge;
 
  public int getEdge() {
    System.out.print("s1:edge=");
    return edge;
  }
 
  public square() {
    System.out.println("this is constructor method");
    edge=2;
    this.edge = edge;
    
  }
  public void set(int edge) {
    //System.out.print("s1:edge=");
    if(edge<=0)edge=1;
    this.edge=edge;
  }
  public int get() {
            System.out.print("s2:edge=");
    return edge;
  }
  public int getArea() {
    
    return edge*edge;
  }
}
public class Main{
 
  public static void main(String[] args) {
    square s=new square();
    System.out.println(s.getEdge());
    System.out.print("s1:area=");
    System.out.println(s.getArea());
    
    Scanner in=new Scanner(System.in);
    int x=in.nextInt();
            square s1=new square();
    s1.set(x);
    System.out.println(s1.get());
    System.out.print("s2:area=");
    System.out.println(s1.getArea());
  }}

7-21 Circle类

分数 10

全屏浏览题目

作者 ami

单位 临沂大学

a 定义圆类Circle,其中包括:

  1. 成员变量定义 private int radius
  2. 方法定义 包括下列要求
  1. 定义无参构造方法 ,给radius赋值为2,并添加语句System.out.println("this is a constructor");
  2. 定义有参构造方法 ,接收用户给给radius赋值,如果用户输入半径为<=0,则让半径的值为2,并添加语句System.out.println("this is a constructor with para");
  3. 为radius半径添加setter方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
  4. 为radius半径添加getter方法,返回用户输入的半径
  5. 定义求面积方法public int gerArea(),π使用Math.PI代替,面积的结果强制转换为int返回
  6. 定义toString方法,public String toString( )方法体为:
    return "Circle [radius=" + radius + "]";

b定义Main类,在main方法中,完成下列操作

  1. .定义并创建Circle的第一个对象c1,并使用println方法输出c1
  2. 求c1的面积并输出
  3. 定义并创建Circle的第一个对象c2,并使用println方法输出c2
  4. 从键盘接收整数半径,并赋值给c2的半径,使用println方法输出c2
  5. 求c2的面积并输出
  6. 从键盘接收整数半径,并创建Circle的第三个对象c3,并将用户输入整数半径通过有参构造方法传递给出c3,使用println方法输出c3
  7. 求c3的面积并输出

### 输入格式: 从键盘输入一个整数半径

输出格式:

分别输出c1和c2对象的信息

输入样例:

在这里给出一组输入。例如:

4
5
-4
-2

输出样例:

在这里给出相应的输出。例如:

this is a constructor
Circle [radius=2]
c1:area=12
this is a constructor
Circle [radius=2]
Circle [radius=4]
c2:area=50
this is a constructor with para
Circle [radius=5]
c3:area=78
this is a constructor
Circle [radius=2]
c1:area=12
this is a constructor
Circle [radius=2]
Circle [radius=2]
c2:area=12
this is a constructor with para
Circle [radius=2]
c3:area=12

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.Scanner;
 
class Circle{
  private int radius;
  public Circle() {
    radius=2;
    System.out.println("this is a constructor");
  }
  public Circle(int radius) {
    if(radius<=0)this.radius=2;
    else this.radius=radius;
    System.out.println("this is a constructor with para");
    
  }
  public void setter(int radius) {
    if(radius<=0)this.radius=2;
    else this.radius=radius;
  }
  public int getter() {
    return radius;
  }
  public int getArea() {
    return (int)(Math.PI*radius*radius);
  }
  public String toString() {
    return "Circle [radius=" + radius + "]";
  }
}
public class Main{
  public static void main(String[] args) {
    Circle c1=new Circle();
    System.out.println(c1.toString());
    System.out.println("c1:area="+c1.getArea());
    Circle c2=new Circle();
    System.out.println(c2.toString());
            //System.out.println("c2:area="+c2.getArea());
    Scanner in=new Scanner(System.in);
    int r=in.nextInt();
    c2.setter(r);
    System.out.println(c2.toString());
     System.out.println("c2:area="+c2.getArea());
    int r1=in.nextInt();
    Circle c3=new Circle(r1);
    System.out.println(c3.toString());
    System.out.println("c3:area="+c3.getArea());
  }
}

7-22 定义类与创建对象

分数 10

全屏浏览题目

作者 su jingfang

单位 河北科技大学

定义一个类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

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
public class Main {
    public static void main(String[] args) {
        System.out.println("this person is lili,her age is 19\nthis person is lucy,her age is 20");
    }
}

7-23 点

分数 10

全屏浏览题目

作者 ami

单位 临沂大学

点是最简单的形,是几何图形最基本的组成部分。要求设计一个点类Point类,Point类包括:

  1. 坐标成员变量 int x,int y
  2. 成员变量x,y的setter gette方法,以及ToString方法
  3. 带参无参构造方法
  4. 重写hashcode和equals方法,判断两个点是否相同
  5. 实现接口Comparable,可以比较两个点的大小,比较规则是若第一个点x大,则第一个点大,第一个点x小则第一个点小,若相同,比较y,根据y值判断大小。
  6. 实现方法 int distance(Point p2),求两个点的距离(开平方根使用方法Math.sqrt())

测试类中main方法中,要求如下:

  1. 通过键盘输入2个点坐标,创建2个点对象
  2. 输出第一个点的信息(调用ToString方法),
  3. 比较他们的大小,如果第一点大于等于第二个点,输出true否则输出false
  4. 求这两个点的距离并输出。

### 输入格式:

请在这里写输入格式。例如:输入在一行中给出2个绝对值不超过1000的整数A和B。

输出格式:

输入两行,每行为一个点的坐标

输入样例:

在这里给出一组输入。例如:

4 6
6 7
4 5
3 2

输出样例:

在这里给出相应的输出。例如:

Point [x=4, y=6]
false
2
Point [x=4, y=5]
true
3
import java.util.Scanner;
 
interface Comparable {
    void hashcode();
    boolean equals(int x1, int y1, int x2, int y2);
 
}
 
class Point implements Comparable{
    int x;
    int y;
 
    public String ToString(int x,int y) {
        return "Point [x=" + this.x + "," + " y=" + this.y + "]";
    }
 
    public Point() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    public Point(int x,int y) {
        this.x = x;
        this.y = y;
    }
 
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
 
    @Override
    public  void hashcode() {
 
    }
 
    @Override
    public boolean equals(int x1,int y1,int x2,int y2) {
        if(x1 >x2) return true;
        else if(x1 < x2) return false;
        else {
            if(y1 >y2) return true;
            else if(y1 < y2) return false;
        }
        return true;
    }
 
    public int distance(Point p1,Point p2) {
        return (int)Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2) + Math.pow(p1.getY()-p2.getY(), 2));
    }
}
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x1,y1;
        x1 = sc.nextInt();
        y1 = sc.nextInt();
        Point point1 = new Point(x1,y1);
        int x2,y2;
        x2 = sc.nextInt();
        y2 = sc.nextInt();
        Point point2 = new Point(x2,y2);
        System.out.println(point1.ToString(x1, y1));
        System.out.println(point1.equals(x1, y1, x2, y2));
        System.out.println(point1.distance(point1,point2));
 
    }
}

7-24 日期类设计

分数 30

全屏浏览题目

作者 段喜龙

单位 南昌航空大学

参考题目集二中和日期相关的程序,设计一个类DateUtil,该类有三个私有属性year、month、day(均为整型数),其中,year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] , 除了创建该类的构造方法、属性的getter及setter方法外,需要编写如下方法:

public boolean checkInputValidity();//检测输入的年、月、日是否合法
public boolean isLeapYear(int year);//判断year是否为闰年
public DateUtil getNextNDays(int n);//取得year-month-day的下n天日期
public DateUtil getPreviousNDays(int n);//取得year-month-day的前n天日期
public boolean compareDates(DateUtil date);//比较当前日期与date的大小(先后)
public boolean equalTwoDates(DateUtil date);//判断两个日期是否相等
public int getDaysofDates(DateUtil date);//求当前日期与date之间相差的天数
public String showDate();//以“year-month-day”格式返回日期值

应用程序共测试三个功能:

  1. 求下n天
  2. 求前n天
  3. 求两个日期相差的天数

注意:严禁使用Java中提供的任何与日期相关的类与方法,并提交完整源码,包括主类及方法(已提供,不需修改)

程序主方法如下:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int year = 0;
        int month = 0;
        int day = 0;
 
        int choice = input.nextInt();
 
        if (choice == 1) { // test getNextNDays method
            int m = 0;
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());
 
            DateUtil date = new DateUtil(year, month, day);
 
            if (!date.checkInputValidity()) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            m = input.nextInt();
 
            if (m < 0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            System.out.print(date.getYear() + "-" + date.getMonth() + "-" + date.getDay() + " next " + m + " days is:");
            System.out.println(date.getNextNDays(m).showDate());
        } else if (choice == 2) { // test getPreviousNDays method
            int n = 0;
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());
 
            DateUtil date = new DateUtil(year, month, day);
 
            if (!date.checkInputValidity()) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            n = input.nextInt();
 
            if (n < 0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            System.out.print(
                    date.getYear() + "-" + date.getMonth() + "-" + date.getDay() + " previous " + n + " days is:");
            System.out.println(date.getPreviousNDays(n).showDate());
        } else if (choice == 3) {    //test getDaysofDates method
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());
 
            int anotherYear = Integer.parseInt(input.next());
            int anotherMonth = Integer.parseInt(input.next());
            int anotherDay = Integer.parseInt(input.next());
 
            DateUtil fromDate = new DateUtil(year, month, day);
            DateUtil toDate = new DateUtil(anotherYear, anotherMonth, anotherDay);
 
            if (fromDate.checkInputValidity() && toDate.checkInputValidity()) {
                System.out.println("The days between " + fromDate.showDate() + 
                        " and " + toDate.showDate() + " are:"
                        + fromDate.getDaysofDates(toDate));
            } else {
                System.out.println("Wrong Format");
                System.exit(0);
            }
        }
        else{
            System.out.println("Wrong Format");
            System.exit(0);
        }        
    }
}

输入格式:

有三种输入方式(以输入的第一个数字划分[1,3]):

  • 1 year month day n //测试输入日期的下n天
  • 2 year month day n //测试输入日期的前n天
  • 3 year1 month1 day1 year2 month2 day2 //测试两个日期之间相差的天数

输出格式:

  • 当输入有误时,输出格式如下:
    Wrong Format
  • 当第一个数字为1且输入均有效,输出格式如下:
year1-month1-day1 next n days is:year2-month2-day2
  • 当第一个数字为2且输入均有效,输出格式如下:
year1-month1-day1 previous n days is:year2-month2-day2
  • 当第一个数字为3且输入均有效,输出格式如下:
The days between year1-month1-day1 and year2-month2-day2 are:值

输入样例1:

在这里给出一组输入。例如:

3 2014 2 14 2020 6 14

输出样例1:

在这里给出相应的输出。例如:

The days between 2014-2-14 and 2020-6-14 are:2312

输入样例2:

在这里给出一组输入。例如:

2 1834 2 17 7821

输出样例2:

在这里给出相应的输出。例如:

1834-2-17 previous 7821 days is:1812-9-19

输入样例3:

在这里给出一组输入。例如:

1 1999 3 28 6543

输出样例3:

在这里给出相应的输出。例如:

1999-3-28 next 6543 days is:2017-2-24

输入样例4:

在这里给出一组输入。例如:

0 2000 5 12 30

输出样例4:

在这里给出相应的输出。例如:

Wrong Format

代码长度限制

12 KB

时间限制

10000 ms

内存限制

7-25 设计一个风扇Fan类

分数 20

全屏浏览题目

作者 殷伟凤

单位 浙江传媒学院

设计一个名为Fan的类表示一个风扇。这个类包括:

1.三个名为SlOW、MEDIUM和FAST,其值为1、2和3常量表示风扇的速度。

2.一个名为speed的int类型私有数据域表示风扇的速度(默认值为SLOW)。

3.一个名为on的boolean类型私有数据域表示风扇是否打开(默认值为false)。

4.一个名为radius的double类型私有数据域表示风扇的半径(默认值为5)。

5.一个名为color的string类型数据域表示风扇的颜色(默认值为white)。

6.这四个成员变量(数据域)的访问器和修改器。

7.一个无参构造方法;

8.一个有参构造方法 public Fan(int fanSpeed,boolean fanOn,double fanRadius,String fanColor) { ... },

9.一个名为toString()的方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开,该方法就会返回一个由"fan is off"和风扇颜色以及半径组合成的字符串。

请在自己的草稿本上画出UML图,养成良好的设计习惯。

要求:创建两个Fan对象:

第一个对象利用无参构造方法构造默认风扇对象Fan1;

第二个对象依据输入的风扇属性,调用有参构造方法构造自定义风扇对象Fan2。

通过调用它们的toString方法显示这些对象。

输入格式:

第二个对象的属性

输出格式:

分别输出默认风扇和自定义风扇的速度、颜色、半径以及风扇是否打开

输入样例:

在这里给出一组输入。例如:

2
True
6
Red 

输出样例:

在这里给出相应的输出。例如:

-------
Default
-------
speed 1
color white
radius 5.0
fan is off
-------
My Fan
-------
speed 2
color Red
radius 6.0
fan is on

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.Scanner;
 
class Fan {
    static final int SLOW = 1;
    static final int MEDIUM = 2;
    static final int FAST = 3;
    private int speed = SLOW;
    private boolean on = false;
    private double radius = 5;
    private String color = "white";
 
    public Fan(int speed, boolean On, double radius, String Color) {
        super();
        this.color = Color;
        this.on = On;
        this.radius = radius;
        this.speed = speed;
    }
 
    public double getRadius() {
        return radius;
    }
 
    public int getSpeed() {
        return speed;
    }
 
    public String getColor() {
        return color;
    }
 
    public void setColor(String color) {
        this.color = color;
    }
 
    public void setOn(boolean on) {
        this.on = on;
    }
 
    public void setRadius(double radius) {
        this.radius = radius;
    }
 
    public boolean isOn() {
        return on;
    }
 
    public void setSpeed(int speed) {
        this.speed = speed;
    }
 
    public Fan() {
 
    }
 
    @Override
    public String toString() {
        String s = "speed " + speed + "\n";
        s += "color " + this.getColor() + "\n";
        s += "radius " + radius + "\n";
        if (on == false) {
            s += "fan is off";
        } else {
            s += "fan is on";
        }
 
        return s;
    }
}
 
public class Main {
    public static void main(String[] args) {
 
        Scanner cin = new Scanner(System.in);
        Fan f1 = new Fan();
        Fan f2 = new Fan(cin.nextInt(), cin.nextBoolean(), cin.nextDouble(), cin.next());
        System.out.println("-------\n" + "Default\n" + "-------");
        System.out.println(f1.toString());
        System.out.println("-------\n" + "My Fan\n" + "-------");
        System.out.println(f2.toString());
    }
}

7-26 蒙特卡罗方法求圆周率(没写)

分数 30

全屏浏览题目

作者 段喜龙

单位 南昌航空大学

使用蒙特卡洛仿真方法求圆周率。(具体要求见作业指导书

2020-OO第05次作业-2指导书V1.0.pdf

输入格式:

从键盘输入四个实型数和一个整型数,分别为矩形左上角的横坐标、纵坐标、矩形长度、矩形宽度和投点次数,数与数之间可以用一个或多个空格或回车分隔。

输出格式:

  • 如果矩形长度与宽度不相等(非正方形)或长宽数据非法,则输出“Wrong Format”。
  • 如果估算出的π与Math.PI差值小于1E-4,则输出“Success”,否则输出“failed”。

输入样例:

在这里给出一组输入。例如:

0 0 1 1 20000000

输出样例:

在这里给出相应的输出。例如:

Success

7-27 一元多项式求导(类设计重构)

分数 60

全屏浏览题目

作者 段喜龙

单位 南昌航空大学

使用类的继承、编写程序对简单多项式的导函数进行求解。详见题目集03该题目作业指导书,建议类图如下图所示。

OO作业5-2题目说明.pdf

输入格式:

在一行内输入一个待计算导函数的表达式,以回车符结束。

输出格式:

  1. 如果输入表达式不符合上述表达式基本规则,则输出“Wrong Format”。
  2. 如果输入合法,则在一行内正常输出该表达式的导函数,注意以下几点: 结果不需要排序,也不需要化简;
  • 当某一项为“0”时,则该项不需要显示,但如果整个导函数结果为“0”时,则显示为“0”;
  • 当输出结果第一项系数符号为“+”时,不输出“+”;
  • 当指数符号为“+”时,不输出“+”;
  • 当指数值为“0”时,则不需要输出“x^0”,只需要输出其系数即可。
  • 输出格式见输入输出示例。

输入样例1:

在这里给出一组输入。例如:

-2*x^-2+5*x^12-4*x+12

输出样例1:

在这里给出相应的输出。例如:

4*x^-3+60*x^11-4

输入样例2:

在这里给出一组输入。例如:

2*x^6-0*x^7+5

输出样例2:

在这里给出相应的输出。例如:

Wrong Format

输入样例3:

在这里给出一组输入。例如:

x^-5+6*x^7-1200*x^-1000+54468799958488*x^-925546

输出样例3:

在这里给出相应的输出。例如:

-5*x^-6+42*x^6+1200000*x^-1001-50413379926378734448*x^-925547

代码长度限制

10 KB

时间限制

400 ms

内存限制

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;
 
public class Main  {
    
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        String temp=in.nextLine();
        
        DvForString dv=new DvForString();
        dv.setPolynthic(temp);
        dv.print(); 
    }
}
class DvForString{
    private static LinkedList<String> item;
    private static String sign,number,regex,regex1,regex2,regex3,concat,concatend,specialnum,end;//各项正则
    static {
         item=new LinkedList<>();
         sign="(?:[+|-])";
         number="(?:([1-9](\\s*\\d*\\s*)*))";
         specialnum="((?:(\\s*([+|-]?[1-9]+\\s*\\d*)\\s*))*)";
         regex="(?:(([1-9](\\s*\\d*\\s*)*)\\s*\\*\\s*x\\s*\\^\\s*[+|-]?\\s*([1-9](\\s*\\d*\\s*)*)))";
         regex1="(?:(x\\s*\\^\\s*[+|-]?\\s*([1-9](\\s*\\d*\\s*)*)))";
         regex2="(?:(([1-9](\\s*\\d*\\s*)*)\\s*\\*\\s*x))";
         regex3="(?:x)";
         concat="("+regex+"|"+regex1+"|"+regex2+"|"+regex3+")";
         concatend="("+concat+"|"+number+")";
         end="(?:("+"\\s*"+sign+"?\\s*"+concatend+"(?:\\s*"+sign+"\\s*"+concatend+"\\s*)*"+"))";
    }
    private String Polynthic=null;
    
    public LinkedList<String> getItem() {
        return item;
    }
    public DvForString(){}
    public DvForString(String polynthic) {
        this.Polynthic = polynthic;
    }
    public String getPolynthic() {
        return Polynthic;
    }
    public void setPolynthic(String polynthic) {
        this.Polynthic = polynthic;
    }
    private boolean isLegal() {
        boolean flag=true;
    
        String s=Polynthic;
        if(s.matches(specialnum)) 
            return true;
        if(!s.matches(end)) flag=false;
        return flag;
    }
    public  void printEveryElement() {
        System.out.println();
        if(isLegal()) { for(String e: item) System.out.println(e);}
        else System.out.println("Wrong Format");
    }
    //打印
    public void print() {
        if(isLegal()) printLegal();
        else  printNotLegal();
    }
    private void printNotLegal() {
        System.out.println("Wrong Format");
    }
    private  void printLegal() {
        String s=Polynthic;
        s=s.replace(" ","");
 
        char[] t=s.toCharArray();
        for(int i=0;i<s.length()-1;i++) 
            if(t[i]=='^'&&t[i+1]=='-') t[i+1]='#';
    
        //直接通过tostring转换字符数组会出错,所以一个个字符拼接
        String s1="";
        for(int i=0;i<t.length;i++) 
            s1=s1+t[i];
        //再来整体替换-
        s1=s1.replace("^+","^");
        s1=s1.replace("-","+-");
        
        //如果+出现在第一个位置会报异常,要用\\+
        String [] id=s1.split("\\+");
        
        //加号输出标记
        int flag=0;
        //无项时输出标记,标记若最终为0,最后输出0
        int lazy=0;
        //所有常数直接打印不需要特意放+,带x项,对于大于0项,前面有其他项要打印出来
    
        for(String e :id) {
            //切开后对每个元素进行分析处理,#要替换成-
            e=e.replace("#","-");
            if(e!=null) item.addLast(e);
            
            int start=e.indexOf("x");
            int mid=e.indexOf("*");
            int end=e.indexOf("^");
            //x,^都有
            if(start!=-1&&end!=-1) {
                //系数不为1,存在*
                if(mid!=-1) {
                    BigInteger pro=new BigInteger(e.substring(0,mid));
                    BigInteger pos=new BigInteger(e.substring(end+1,e.length()));
                    BigInteger xishu=pro.multiply(pos);//乘法
                    BigInteger zhishu=pos.subtract(new BigInteger(1+""));//减法
                    
                    if(zhishu.equals(new BigInteger(0+""))) System.out.print(xishu);
                    else {
                        if(xishu.equals(new BigInteger(1+""))) System.out.print("x^"+zhishu);
                        else if(xishu.equals(new BigInteger(-1+"")))System.out.print("-x^"+zhishu);
                        else {
                            if(    xishu.compareTo(new BigInteger(0+""))>0) 
                                if(flag==1) System.out.print("+");
                            System.out.print(xishu+"*x^"+zhishu);
                        }
                    }
                     lazy=1;
                     if(flag==0) flag=1;
                }
                //没有*,系数为负
                else {
                    if(e.charAt(0)=='-') {
                        BigInteger pos=new BigInteger(e.substring(end+1,e.length()));
                        BigInteger xishu=pos.multiply(new BigInteger(-1+""));//乘法
                        BigInteger zhishu=pos.subtract(new BigInteger(1+""));//减法
                        if(zhishu.equals(new BigInteger(0+""))) System.out.print(xishu);
                        else {
                            if(xishu.equals(new BigInteger(1+""))) System.out.print("x^"+zhishu);
                            else if(xishu.equals(new BigInteger(-1+"")))System.out.print("-x^"+zhishu);
                            else {
                                if(    xishu.compareTo(new BigInteger(0+""))>0) 
          if(flag==1) System.out.print("+");
                                System.out.print(xishu+"*x^"+zhishu);
                            }
                        }
                    }
                    //没*,系数不为负
                    else {
                        BigInteger pos=new BigInteger(e.substring(end+1,e.length()));
                        BigInteger xishu=pos.multiply(new BigInteger(1+""));//乘法
                        BigInteger zhishu=pos.subtract(new BigInteger(1+""));//减法
                        if(zhishu.equals(new BigInteger(0+""))) System.out.print(xishu);
                        else {
                            if(xishu.equals(new BigInteger(1+""))) System.out.print("x^"+zhishu);
                            else if(xishu.equals(new BigInteger(-1+"")))System.out.print("-x^"+zhishu);
                            else {
                                if(    xishu.compareTo(new BigInteger(0+""))>0) 
                                    if(flag==1) System.out.print("+");
                                System.out.print(xishu+"*x^"+zhishu);
                            }
                        }
                    }
                    lazy=1;
                    if(flag==0) flag=1;
                }
            }//^,x都存在的分界线
            //有x,没有指数
            else if(start!=-1) {
                //有*
                if(mid!=-1) { 
                    BigInteger num=new BigInteger(e.substring(0, mid));
//                    if(num.compareTo(new BigInteger(0+""))>0) if(flag==1) System.out.print("+");
                    System.out.print(num);                
                }
                //没有*
                else {
                    BigInteger num=null;
                    if(e.charAt(0)=='x') num=new BigInteger("1");
                    else if(e.charAt(0)=='-') num=new BigInteger("-1");
                    else 
                        num=new BigInteger(e.substring(0, start));
//                    if(num.compareTo(new BigInteger(0+""))>0) if(flag==1) System.out.print("+");
                    System.out.print(num);
                }
                lazy=1;
                if(flag==0) flag=1;
            }
            //常数
            else 
                System.out.print("");
        }//大for结尾
        if(lazy==0) System.out.println(0);
    }
}

7-28 图形卡片排序游戏

分数 40

全屏浏览题目

作者 段喜龙

单位 南昌航空大学

掌握类的继承、多态性使用方法以及接口的应用。详见作业指导书

2020-OO第07次作业-1指导书V1.0.pdf

输入格式:

  • 首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如:
    1 3 4 2 1 3 4 2 1 3 0
  • 然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。

输出格式:

  • 如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出Wrong Format
  • 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:
  1. 排序前的各图形类型及面积,格式为图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;
  2. 排序后的各图形类型及面积,格式同排序前的输出;
  3. 所有图形的面积总和,格式为Sum of area:总面积值

输入样例1:

在这里给出一组输入。例如:

1 5 3 2 0

输出样例1:

在这里给出相应的输出。例如:

Wrong Format

输入样例2:

在这里给出一组输入。例如:

4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 3.5

输出样例2:

在这里给出相应的输出。例如:

The original list:
Trapezoid:1.14 Rectangle:3.22 Circle:98.52 Triangle:4.02 
The sorted list:
Circle:98.52 Triangle:4.02 Rectangle:3.22 Trapezoid:1.14 
Sum of area:106.91

输入样例3:

在这里给出一组输入。例如:

4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 8.4

输出样例3:

在这里给出相应的输出。例如:

Wrong Format

代码长度限制

16 KB

时间限制

400 ms

内存限制

7-29 设计一个BankAccount类

分数 10

全屏浏览题目

作者 ywf

单位 浙江传媒学院

设计一个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

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
public class Main {
 
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int x = cin.nextInt();
        System.out.println(x);
        int a = cin.nextInt();
        x -= a;
        System.out.println(x);
        int b = cin.nextInt();
        x += b;
        System.out.println(x);
    }
 
}

7-30 表达式求值

分数 100

全屏浏览题目

作者 段喜龙

单位 南昌航空大学

编写程序,从键盘输入一个合法的表达式,对该表达式进行求值并输出,为降低题目难度,特做如下要求:

  • 运算数均为整型数(即不带小数点)
  • 运算符只支持加减乘除四种(+、-、*、/)以及小括号(()
  • 计算规则为实型数运算规则,例如1/2=0.5
  • 输出计算结果保留两位小数(四舍五入)
  • 表达式中不允许出现如下情况
  1. 空字符串
  2. 错误的运算符
  3. 错误的运算数
  4. 括号不匹配
  5. 空括号
  6. 连续的运算符,例如--5
  7. 运算符为正数时,其符号+必须省略,例如+2+4定义为非法,而负数时为合法,例如-2+4
  8. 程序要能处理表达式中间出现的空格(输入表达式中存在空格为合法情况)
  9. 其他不符合表达式书写规则的情况

输入格式:

从键盘输入一行表达式。例如2+3*(5 -6 / 4)/3 +26-300*3/29

输出格式:

有以下三种输出结果:

  • 表达式不合法时,输出Wrong Format
  • 出现无法计算情况时(例如除0),输出输入表达式 = NaN
  • 能够正确运算时,输出输入表达式 = 计算结果

输入样例1:

在这里给出一组输入。例如:

2+3*(5  -6   /    4)/3 +26-300*3/29

输出样例1:

在这里给出相应的输出。例如:

2+3*(5  -6   /    4)/3 +26-300*3/29 = 0.47

输入样例2:

在这里给出一组输入。例如:

2+3-      5  /   0

输出样例2:

在这里给出相应的输出。例如:

2+3-      5  /   0         = NaN

输入样例3:

在这里给出一组输入。例如:

((2-3/4*5/4  +8-0.4)/100-003*5

输出样例3:

在这里给出相应的输出。例如:

Wrong Format

代码长度限制

16 KB

时间限制

400 ms

内存限制

7-31 马里奥赛车

分数 10

全屏浏览题目

作者 ACPC 2013

单位 贵州工程应用技术学院

你玩过马里奥游戏吗?你当然有,谁没有?!不管怎么说,马里奥游戏的新版本已经发布了,它是某种卡丁车比赛游戏。你决定写一个程序来找到你完成每一个阶段的最佳策略。

每一条水平轨道可以模拟为一条无限长的直线,在这条直线上的某些特定点上有一些站点。每个站点都有一个整数,表示其在轨道上的位置。你的任务是从第一个站(位置最小的站)到最后一个站(位置最大的站)最小移动次数。

你可以直接在任何两个电台之间移动(你可以去一个不相邻的电台,也可以回到位置较低的电台,如果你愿意的话!)如果你有足够的提升金币来完成这个动作。在每个关卡中,你都有一些可以使用的提升币。每一个推进硬币都有成本和能量价值。你可以为每一步选择硬币的任何一个子集,但是每个硬币每次只能使用一次。硬币是永久性的,你可以在同一级别的其他招式中再次使用硬币。

要移动,你必须选择一个子集的增加硬币,这样他们的成本总和不能超过L,他们的权力值的总和必须完全等于你要移动的两个电台的位置之间的绝对差。如果没有这样的子集,则不能直接进行移动。

现在你得到了一些级别的配置,你需要找到完成每一个级别的最小移动次数,或者说不可能完成这个级别。

输入格式:

您的程序将在一个或多个测试用例上进行测试。输入的第一行将是单个整数 T、 测试用例数(1≤T≤100)。

接下来是测试用例,每个测试用例的第一行包含3个整数,用单个空格N M L(2≤N≤100),(1≤M≤100)和(1≤L≤1000),表示站点数量、提升硬币数量和最大硬币总数每次行动的成本。

后跟一行,其中包含N个分隔开的唯一正整数按一个空格(不需要排序,每个整数最多1000个),代表位置所有的车站。后面是M行,每行包含2个整数,用一个空格C V(1≤C,V≤100)隔开,分别代表一枚硬币的成本和权力价值。

输出格式:

对于每个测试用例,打印一行包含单个整数的行,如果无法从最左边的工作站转到最右边的工作站,那么这个整数应该是-1,如果可能的话,这个整数应该是最小移动次数。

输入样例:

2
3 2 4
3 1 6
3 2
3 3
3 1 4
1 3 6
3 2

输出样例:

2
-1

题意:

一条路上有n个车站,你有m个金币,金币有各自的费用和价值,可以通过金币在车站间移动;

每次移动要选择一些金币,总成本不能超过L,其价值和必须刚好等于abs(i-j);

问从1号站移动到n号站最少移动多少次?

注意:

在第一个测试用例中,站点位置是[3,1,6],从1开始,必须在6结束。你会必须做2个移动,

从1->3使用硬币(3,2),从3->6使用硬币(3,3)。你不能直接从1->6使用(3,2)和(3,3),因为硬币的成本总和超出限制4。

代码长度限制

16 KB

时间限制

400 ms

内存限制

7-32 学生类设计

分数 10

全屏浏览题目

作者 AMi

单位 浙江大学

设计一个类Student,并在Main类中生成Student类对象进行测试


1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于setAge方法,如果age被赋值为<=6,则age值为7,其他为参数值。


2.对于Student类,设计无参构造方法,在构造方法中为age赋值为7,name赋值为“无名" 并添加语句System.out.println("无参构造方法");


3.设计方法public void display(),方法中显示该学生的姓名和年龄,显示格式为name:无名,age:8



Main类的main方法中,创建1个学生对象,然后调用display方法显示学生信息,接着通过键盘输入1个学生的姓名和年龄,调用display方法去显示学生信息。

输入格式:

在一行内输入学生的姓名和年龄

输出格式:

对每一组输入,输出学生的姓名和年龄。

输入样例:

在这里给出一组输入。例如:

tom 6
jerry 8

输出样例:

在这里给出相应的输出。例如:

无参构造方法
name:无名,age:7
name:tom,age:7
无参构造方法
name:无名,age:7
name:jerry,age:8

代码长度限制

16 KB

时间限制

400 ms

内存限制

7-33 物联网感知位置计算

分数 10

不啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵                        

全屏浏览题目

作者 栗青生

单位 浙江传媒学院

物联网程序设计中,经常用到两个点的地理位置信息。和数学中的坐标系一个,你生活环境的每一个位置都有一个坐标(经度,纬度)可以用以下方式来声明:

double longitude;
double latitude;
A ,B两个点可以用以下方式:
double longitudeA;
double latitudeA;
double longitudeB;
double latitudeB;
然而你每天生活的轨迹并不是只有两个点,为了更好的表示这些点,我们需要申明一个点类:
class GeographicInfo {
    double latitude;
    double longitude;
}
然后再写出主程序:
public class Main {
   public static void main(String[] args) {
      // TODO Auto-generated method stub
       GeographicInfo G;
       G = new GeographicInfo();
       G.latitude = 35.66;
       G.longitude = 139.75;
       System.out.println(G.latitude);
       System.out.println(G.longitude);
   }
}
假如你的位置信息是从A到B,写一个程序输出你的出行轨迹,注意你的位置用键盘输入语句。
longitudeA;
double latitudeA;
double longitudeB;
double latitudeB;

输入格式:

输入四个double类型变量。

输出格式:

输出这几个变量的位置.

输入样例:

在这里给出一组输入。例如:

35.66
139.75
95.66
939.75

输出样例:

在这里给出相应的输出。例如:

(35.66,139.75)
(95.66,939.75)

代码长度限制

16 KB

时间限制

400 ms

内存限制

7-34 物联网远程点灯实验

分数 10

全屏浏览题目

作者 栗青生

单位 浙江传媒学院

远程点亮一个LED 灯是物联网最基本的实验,假如灯的位置用一个点的从标来表示,请设计一个点类 ,并针对这个类进行编程实验,当输入位置坐标和开关状态时输出Led灯的 on或off状态。

输入格式:

坐标和开关状态,如x y true

输出格式:

灯的开关状态 on或off

输入样例:

在这里给出一组输入。例如:

1 1 false

输出样例:

在这里给出相应的输出。例如:

off

代码长度限制

16 KB

时间限制

400 ms

内存限制

 package pta代码;
 
import java.util.*;
 
class Student {
  private String name;
  private int age;
 
  public Student() {
    this.age = 7;
    this.name = "无名";
    System.out.println("无参构造方法");
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public int getAge() {
    return age;
  }
 
  public void setAge(int age) {
    if (age <= 6) {
      this.age = 7;
    } else {
      this.age = age;
    }
  }
 
  public void display() {
    System.out.println("name:" + this.name + ",age:" + this.age);
  }
}
 
class GeographicInfo {
  double latitude;
  double longitude;
 
  public double getLatitude() {
    return latitude;
  }
 
  public void setLatitude(double latitude) {
    this.latitude = latitude;
  }
 
  public double getLongitude() {
    return longitude;
  }
 
  public void setLongitude(double longitude) {
    this.longitude = longitude;
  }
 
}
 
public class Main {
 
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner cin = new Scanner(System.in);
 
    int x = cin.nextInt();
    int y = cin.nextInt();
    String status = cin.next();
    if (status.equals("false")) {
      System.out.println("off");
    }
    else {
      System.out.println("on");
    }
  }
 
}

7-35 两点成线

分数 10

全屏浏览题目

作者 Ami

单位 临沂大学

都说两点确定一条直线,那么设计一个直线类Line,需要通过两个点Point对象来确定。Line类具体要求如下:


1)定义两个Point对象p1,p2;


2)写出有参构造方法,传递两个对象值给p1,p2


3)为p1,p2写出setters,和getters方法


4)为Line写出一个getLength方法求直线中两点的长度


5) 为LIne写一个ToString方法,方法如下所示:

public String toString() {
return "Line [p1=" + p1 + ", p2=" + p2 + "]";
}
在Main类的main方法中,定义一个Line数组,数组长度通过键盘给出,然后通过键盘为每线段的两个Point对象的坐标赋值,并生成相应Line对象放入数组中,循环数组,输出每条直线的信息,以及两个点之间的距离。
Point 类如下所示:
public class Point {
    private int x, y;// x,y为点的坐标
    //求两点之间的距离
    public double distance(Point p1) {
        return Math.sqrt((p1.x -this.x)*(p1.x -this.x)+(p1.y-this.y)*(p1.y-this.y));
    }
    public Point(int x, int y) {
        super();
        this.x = x;
        this.y = y;
    }
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    public Point() {
        super();
        x = y =0;
    }
    @Override
    public String toString() {
        return "Point [x=" + x + ", y=" + y + "]";
    }
}


输入格式:

第一行输入数组的长度n

每一行输入一个Line对象的两个点对象的 x y的坐标,中间用空格隔开

输出格式:

循环输出,输出直线的信息,以及每条直线的两个点的距离,保留一位小数。

输入样例:

在这里给出一组输入。例如:

2
0 0 2 3
1 3 2 5

输出样例:

在这里给出相应的输出。例如:

Line [p1=Point [x=0, y=0], p2=Point [x=2, y=3]]
此线段的长度为:3.6
Line [p1=Point [x=1, y=3], p2=Point [x=2, y=5]]
此线段的长度为:2.2

代码长度限制

16 KB

时间限制

400 ms

内存限制

// package pta代码;
 
import java.util.*;
 
class Student {
  private String name;
  private int age;
 
  public Student() {
    this.age = 7;
    this.name = "无名";
    System.out.println("无参构造方法");
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public int getAge() {
    return age;
  }
 
  public void setAge(int age) {
    if (age <= 6) {
      this.age = 7;
    } else {
      this.age = age;
    }
  }
 
  public void display() {
    System.out.println("name:" + this.name + ",age:" + this.age);
  }
}
 
class GeographicInfo {
  double latitude;
  double longitude;
 
  public double getLatitude() {
    return latitude;
  }
 
  public void setLatitude(double latitude) {
    this.latitude = latitude;
  }
 
  public double getLongitude() {
    return longitude;
  }
 
  public void setLongitude(double longitude) {
    this.longitude = longitude;
  }
 
}
 
class Point {
 
  private int x, y;// x,y为点的坐标
  // 求两点之间的距离
 
  public double distance(Point p1) {
    return Math.sqrt((p1.x - this.x) * (p1.x - this.x) + (p1.y - this.y) * (p1.y - this.y));
  }
 
  public Point(int x, int y) {
    super();
    this.x = x;
    this.y = y;
  }
 
  public int getX() {
    return x;
  }
 
  public void setX(int x) {
    this.x = x;
  }
 
  public int getY() {
    return y;
  }
 
  public void setY(int y) {
    this.y = y;
  }
 
  public Point() {
    super();
    x = y = 0;
  }
 
  @Override
  public String toString() {
    return "Point [x=" + x + ", y=" + y + "]";
  }
}
 
class Line {
  Point p1, p2;
 
  public Line(Point x, Point y) {
    p1 = x;
    p2 = y;
  }
 
  public Point getP1() {
    return p1;
  }
 
  public void setP1(Point p1) {
    this.p1 = p1;
  }
 
  public Point getP2() {
    return p2;
  }
 
  public void setP2(Point p2) {
    this.p2 = p2;
  }
 
  public double getLength() {
    return p1.distance(p2);
  }
 
  @Override
  public String toString() {
    return "Line [p1=" + p1 + ", p2=" + p2 + "]";
  }
 
}
 
public class Main {
 
  public static void main(String[] args) {
 
    // TODO Auto-generated method stub
    Scanner cin = new Scanner(System.in);
 
    int n = cin.nextInt();
    
    while (n != 0) {
      
      Point xPoint = new Point(cin.nextInt() ,cin.nextInt());
      Point yPoint = new Point(cin.nextInt() ,cin.nextInt());
      
      n--;
      
      Line line = new Line(xPoint, yPoint);
      
      System.out.println(line.toString());
      System.out.println("此线段的长度为:"+String.format("%.1f", line.getLength()));
      
    }
    
  }
 
}

7-36 查询某人

分数 10

全屏浏览题目

作者 AMi

单位 临沂大学

有一个人员数组,要在此数组中查询某个人是否存在,具体要求如下:


1.定义Person类:


a 属性 name和age


b 两个属性的getters 和setters


c 带参数构造方法,为name和age给值 以及无参构造方法,给name赋值为none,age赋值为1


d ToString方法

public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}


2.在main方法中,创建Person数组,数组长度通过键盘输入,数组每一个对象的name和age通过键盘给出,创建数组后,首先显示所有人员的信息,然后输入一个姓名,查询数组中有这个人么?如果有,输出这个人的信息,否则输出not found

输入格式:

请在这里写输入格式。例如:输入在一行中给出2个绝对值不超过1000的整数A和B。

输出格式:

请在这里描述输出格式。例如:对每一组输入,在一行中输出A+B的值。

输入样例:

在这里给出一组输入。例如:

3
tian 3
jerry 23
sun 22
su
3
may 51
sunny 23
lily 32
lily

输出样例:

在这里给出相应的输出。例如:

Person [name=tian, age=3]
Person [name=jerry, age=23]
Person [name=sun, age=22]
not found
Person [name=may, age=51]
Person [name=sunny, age=23]
Person [name=lily, age=32]
查询结果:
Person [name=lily, age=32]

代码长度限制

16 KB

时间限制

400 ms

内存限制

// package pta代码;
 
import java.util.*;
 
class Student {
  private String name;
  private int age;
 
  public Student() {
    this.age = 7;
    this.name = "无名";
    System.out.println("无参构造方法");
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public int getAge() {
    return age;
  }
 
  public void setAge(int age) {
    if (age <= 6) {
      this.age = 7;
    } else {
      this.age = age;
    }
  }
 
  public void display() {
    System.out.println("name:" + this.name + ",age:" + this.age);
  }
}
 
class GeographicInfo {
  double latitude;
  double longitude;
 
  public double getLatitude() {
    return latitude;
  }
 
  public void setLatitude(double latitude) {
    this.latitude = latitude;
  }
 
  public double getLongitude() {
    return longitude;
  }
 
  public void setLongitude(double longitude) {
    this.longitude = longitude;
  }
 
}
 
class Point {
 
  private int x, y;// x,y为点的坐标
  // 求两点之间的距离
 
  public double distance(Point p1) {
    return Math.sqrt((p1.x - this.x) * (p1.x - this.x) + (p1.y - this.y) * (p1.y - this.y));
  }
 
  public Point(int x, int y) {
    super();
    this.x = x;
    this.y = y;
  }
 
  public int getX() {
    return x;
  }
 
  public void setX(int x) {
    this.x = x;
  }
 
  public int getY() {
    return y;
  }
 
  public void setY(int y) {
    this.y = y;
  }
 
  public Point() {
    super();
    x = y = 0;
  }
 
  @Override
  public String toString() {
    return "Point [x=" + x + ", y=" + y + "]";
  }
}
 
class Line {
  Point p1, p2;
 
  public Line(Point x, Point y) {
    p1 = x;
    p2 = y;
  }
 
  public Point getP1() {
    return p1;
  }
 
  public void setP1(Point p1) {
    this.p1 = p1;
  }
 
  public Point getP2() {
    return p2;
  }
 
  public void setP2(Point p2) {
    this.p2 = p2;
  }
 
  public double getLength() {
    return p1.distance(p2);
  }
 
  @Override
  public String toString() {
    return "Line [p1=" + p1 + ", p2=" + p2 + "]";
  }
 
}
 
class Person{
    private String name;
    private int age;
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    public Person(){
        this.name = "none";
        this.age = 1;
    }
    public String toString(){
        return "Person [name=" + name + ", age=" + age + "]";
    }
 
    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;
    }
}
 
public class Main {
 
  public static void main(String[] args) {
 
    // TODO Auto-generated method stub
 
    Scanner cin = new Scanner(System.in);
        int num = cin.nextInt();
        Person person[] = new Person[num];
        for(int i=0;i<num;i++){
            person[i] = new Person(cin.next(),cin.nextInt());
        }
 
        String name = cin.next();
        boolean flag = false;
        int index=0;
        for(int i=0;i<num;i++){
            if(person[i].getName().equals(name)){
                flag = true;
                index = i;
            }
            System.out.println(person[i].toString());
        }
 
        if(flag){
            System.out.println("查询结果:");
            System.out.println(person[index].toString());//输出信息
        }
        else{
            System.out.println("not found");
        }
    }
 
}

7-37 时间类

分数 10

全屏浏览题目

作者 栗青生

单位 浙江传媒学院

设计一个名为Time 的类。这个类包含:

  1. 表示时间的数据域hour、minute 和second。
  2. 一个以当前时间创建Time 对象的无参构造方法(数据域的值表示当前时间)。
  3. 一个构造Time 对象的构造方法,这个对象有一个特定的时间值,这个值是以毫秒表示的、从1970 年1 月丨日午夜开始现在流逝的时间段(数据域的值表示这个时间)。
  4. 一个构造带特定的小时、分钟和秒的Time 对象的构造方法。
  5. 三个数据域hour、minute 和second 各自的get 方法。
— 个名为setTime(long elapseTime)的方法使用流逝的时间给对象设置一个新时间。例如,如果流逝的时间为555550000 毫秒,則转换为10 小时、10 分钟、10 秒。
编写一个测试程序,创建两个Time 对象(使用new Time() 和new Time(555550000)), 然后显示它们的小时、分钟和秒.

输入格式:

输入毫秒

输出格式:

按照小时、分钟、秒显示

输入样例:

在这里给出一组输入。例如:

555550000

输出样例:

在这里给出相应的输出。例如:

Hour: 10 Minute: 19 Second: 10

代码长度限制

16 KB

时间限制

400 ms

内存限制

import java.util.*;
public class Main{ 
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int x = cin.nextInt();
        x=x/1000;
        x=x%(3600*24);
        System.out.println("Hour: " + x / 3600 +" Minute: " + ((x%3600)/60) + " Second: " + ((x%3600)%60));
    }
}


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
2月前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
122 63
|
12天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
16 1
|
24天前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
23 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
30 2
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
36 4
|
3月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
2月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
18 0
|
4月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
3月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
69 2