抱歉各位没时间写了有空就补
判断题
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);
其中 a
和 b
都是直角三角形的两条直角边。
裁判测试程序样例:
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
单位 临沂大学
- 定义一个圆柱类Cylinder
- 里面包含私有属性 private int radius(半径),height(高)
- 为属性完成其setter getter方法
- 完成带参构造方法Cylinder(int radius,height),该方法中包含一句System.out.println("Constructor with para");
- 完成无参构造方法Cylinder(),在无参构造方法中调用有参构造方法,为半径和高赋值为2,1,该方法包含一句System.out.println("Constructor no para");
- 完成求体积方法 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,在次类中包括写内容:
- 定义成员变量边长private int edge;
- 定义方法:包括构造方法,setter getter方法,求面积方法等,要求如下所示:
- 定义正方形类的构造方法:在构造方法中给edge赋值为2,并添加System.out.println("this is constructor method");
- 为成员变量edge设置set方法,用来接收用户给edge的值,如果用户给的值<=0,则设置edge值为1
- 为成员变量edge设置get方法,用来返回edge的值
- 完成求面积方法,得到正方形的面积: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,其中包括:
- 成员变量定义 private int radius
- 方法定义 包括下列要求
- 定义无参构造方法 ,给radius赋值为2,并添加语句System.out.println("this is a constructor");
- 定义有参构造方法 ,接收用户给给radius赋值,如果用户输入半径为<=0,则让半径的值为2,并添加语句System.out.println("this is a constructor with para");
- 为radius半径添加setter方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
- 为radius半径添加getter方法,返回用户输入的半径
- 定义求面积方法public int gerArea(),π使用Math.PI代替,面积的结果强制转换为int返回
- 定义toString方法,public String toString( )方法体为:
return "Circle [radius=" + radius + "]";
b定义Main类,在main方法中,完成下列操作
- .定义并创建Circle的第一个对象c1,并使用println方法输出c1
- 求c1的面积并输出
- 定义并创建Circle的第一个对象c2,并使用println方法输出c2
- 从键盘接收整数半径,并赋值给c2的半径,使用println方法输出c2
- 求c2的面积并输出
- 从键盘接收整数半径,并创建Circle的第三个对象c3,并将用户输入整数半径通过有参构造方法传递给出c3,使用println方法输出c3
- 求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类包括:
- 坐标成员变量 int x,int y
- 成员变量x,y的setter gette方法,以及ToString方法
- 带参无参构造方法
- 重写hashcode和equals方法,判断两个点是否相同
- 实现接口Comparable,可以比较两个点的大小,比较规则是若第一个点x大,则第一个点大,第一个点x小则第一个点小,若相同,比较y,根据y值判断大小。
- 实现方法 int distance(Point p2),求两个点的距离(开平方根使用方法Math.sqrt())
测试类中main方法中,要求如下:
- 通过键盘输入2个点坐标,创建2个点对象
- 输出第一个点的信息(调用ToString方法),
- 比较他们的大小,如果第一点大于等于第二个点,输出true否则输出false
- 求这两个点的距离并输出。
### 输入格式:
请在这里写输入格式。例如:输入在一行中给出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”格式返回日期值
应用程序共测试三个功能:
- 求下n天
- 求前n天
- 求两个日期相差的天数
注意:严禁使用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
全屏浏览题目
作者 段喜龙
单位 南昌航空大学
使用蒙特卡洛仿真方法求圆周率。(具体要求见作业指导书
)
输入格式:
从键盘输入四个实型数和一个整型数,分别为矩形左上角的横坐标、纵坐标、矩形长度、矩形宽度和投点次数,数与数之间可以用一个或多个空格或回车分隔。
输出格式:
- 如果矩形长度与宽度不相等(非正方形)或长宽数据非法,则输出“Wrong Format”。
- 如果估算出的π与Math.PI差值小于1E-4,则输出“Success”,否则输出“failed”。
输入样例:
在这里给出一组输入。例如:
0 0 1 1 20000000
输出样例:
在这里给出相应的输出。例如:
Success
7-27 一元多项式求导(类设计重构)
分数 60
全屏浏览题目
作者 段喜龙
单位 南昌航空大学
使用类的继承、编写程序对简单多项式的导函数进行求解。详见题目集03该题目作业指导书,建议类图如下图所示。
输入格式:
在一行内输入一个待计算导函数的表达式,以回车符结束。
输出格式:
- 如果输入表达式不符合上述表达式基本规则,则输出“Wrong Format”。
- 如果输入合法,则在一行内正常输出该表达式的导函数,注意以下几点: 结果不需要排序,也不需要化简;
- 当某一项为“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
全屏浏览题目
作者 段喜龙
单位 南昌航空大学
掌握类的继承、多态性使用方法以及接口的应用。详见作业指导书
输入格式:
- 首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如:
1 3 4 2 1 3 4 2 1 3 0
- 然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。
输出格式:
- 如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出
Wrong Format
。 - 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:
- 排序前的各图形类型及面积,格式为
图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n
,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格; - 排序后的各图形类型及面积,格式同排序前的输出;
- 所有图形的面积总和,格式为
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
- 输出计算结果保留两位小数(四舍五入)
- 表达式中不允许出现如下情况
- 空字符串
- 错误的运算符
- 错误的运算数
- 括号不匹配
- 空括号
- 连续的运算符,例如
--5
- 运算符为正数时,其符号
+
必须省略,例如+2+4
定义为非法,而负数时为合法,例如-2+4
- 程序要能处理表达式中间出现的空格(输入表达式中存在空格为合法情况)
- 其他不符合表达式书写规则的情况
输入格式:
从键盘输入一行表达式。例如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 的类。这个类包含:
- 表示时间的数据域hour、minute 和second。
- 一个以当前时间创建Time 对象的无参构造方法(数据域的值表示当前时间)。
- 一个构造Time 对象的构造方法,这个对象有一个特定的时间值,这个值是以毫秒表示的、从1970 年1 月丨日午夜开始现在流逝的时间段(数据域的值表示这个时间)。
- 一个构造带特定的小时、分钟和秒的Time 对象的构造方法。
- 三个数据域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)); } }