栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间:发布时间: 百科书网 趣学号
判断题 填空题

函数题 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: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

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

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

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    
}

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

	}

}

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

6-9 Book类的设计

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

}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/852348.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号