
分数 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 分
分数 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:javalibclasses.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:TestdirTestpackage
分数 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 分
分数 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);
}
}
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();
}
}
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=
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();
}
}
上述代码的运行结果为:
2 分
4-15
分数 2
作者 ouy
单位 贵州工程应用技术学院
若需要定义一个类属性或类方法,应使用
2 分
修饰符
4-16
分数 2
作者 王利
单位 沈阳师范大学
如果一个方法只有方法的声明,而没有方法的实现,则成为
2 分
方法。
4-17
分数 2
作者 王利
单位 沈阳师范大学
接口中的方法其默认属性为
2 分
和public
4-18
分数 2
作者 王利
单位 沈阳师范大学
若要使一个方法能不依赖与该类对象而存在,则需使用的关键字
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
2 分
{ private String name; private int
2 分
; public void setName(String name) {
2 分
} public String getName(){
2 分
name; } public void setGrade(int
2 分
) { this.grade=grade; } public int
2 分
{ return grade; } public
2 分
{ } public Student(String n,int g){ name =
2 分
; grade =
2 分
; } public String message(){ return
2 分
; } } public class Main { public static void main(
2 分
){ Student stu1=new Student(); stu1.setName(
2 分
); stu1.setGrade(
2 分
); System.out.println(
2 分
); Student stu2=new Student(
2 分
); System.out.println(
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 分
2 分
2 分
2 分
2 分
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;
}
}
分数 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);
}
}
分数 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
}
package Java面向对象程序设计3面向对象基础;
import java.util.Arrays;
class CarDriver {
@SuppressWarnings("unused")
private String name;
public CarDriver() {}
//setter/getter
//toString
public Object getName() {
// TODO Auto-generated method stub
return null;
}
public void setName(Object name2) {
// TODO Auto-generated method stub
}
}
class Car implements Cloneable{
private String name;
private CarDriver driver;
private int[] scores;
public Car(){
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setScores(int [] scores){
this.scores = scores;
}
public int[] getScores(){
return scores;
}
public void setDriver(CarDriver driver){
this.driver = driver;
}
public CarDriver getDriver(){
return driver;
}
@Override
public String toString() {
return "Car [name=" + name + ", driver=" + driver + ", scores=" + Arrays.toString(scores) + "]";
}
public Car clone() throws CloneNotSupportedException{
Car car = new Car();
CarDriver cd = new CarDriver();
if(driver == null){
cd = null;
}else{
cd.setName(driver.getName());
}
car.setDriver(cd);
car.setName(name);
if(scores == null){
car.setScores(null);
}else{
int [] arr = Arrays.copyOf(scores, scores.length);
car.setScores(arr);
}
return car;
}
}
public class JJ6_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
分数 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 {
@Override
public int compare(Book b1, Book b2) {
return -(b1.publishDate.compareTo(b2.publishDate));
}
}
class BookComparatorByPrice implements Comparator {
@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));
}
}
}
分数 10
阅读测试程序,设计一个Book类。
class Book{}
该类有 四个私有属性 分别是 书籍名称、 价格、 作者、 出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是书籍名称、 价格、 作者、 出版年份 。
裁判测试程序样例:
import java.util.*;
public class Main {
public static void main(String[] args) {
List books=new ArrayList();
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));
}
public static int totalprice(List books)
{ int result=0;
for(int i=0;i
输入样例:
三体,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 books = new ArrayList();
@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));
}
public static int totalprice(List 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;
}
}