Java程式設計__Chap3 面對物件__程式設計題
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
{
private double width;
private double height;
public Rectangle(){}
public Rectangle(double w,double h)
{
width=w;
height=h;
}
double getArea()
{
return width*height;
}
double getPerimeter()
{
return (width+height)*2;
}
}
7-1 類的定義與物件使用 (10分)
請定義一個學生類(Student),包含學號、姓名、年齡(7-60歲)三個私有成員。從鍵盤輸入學生的成員值後生成物件,並按要求輸出相應的結果。
輸入格式:
第一行一個整數k,代表後面要生成的學生人數。 從第二行開始的連續k行,每行3個資料,分別表示一個學生的學號、姓名和年齡。
輸出格式:
輸出每個學生的基本情況。如果資料不符合要求則輸出"bad"
輸入樣例:
3
20174042001 zhangsan 20
20174042030 lisi 2
20174042050 wangwu 17
輸出樣例:
zhangsan 20174042001 20
bad
wangwu 20174042050 17
程式
import java.util.*;
class Student
{
private String sno;
private String name;
private int age;
public Student(String s1,String n,int a)
{
sno=s1;
name=n;
age=a;
}
public String toString()
{
return name+" "+sno+" "+age;
}
}
public class Main
{
public static void main(String[] args)
{
int k;
Scanner s=new Scanner(System.in);
k=s.nextInt();
Student stu[]=new Student[k];
for(int i=0;i<k;i++)
{
String sno1=s.next();
String name1=s.next();
int age1=s.nextInt();
if(age1<7||age1>60) System.out.println("bad");
else
{
stu[i]=new Student(sno1,name1,age1);
System.out.println(stu[i]);
}
}
}
}
7-2 好玩的圖形 (20分)
給定圖形介面定義如下:
interface Shape{
float getArea();//求面積
float getPerimeter();//求周長
}
請實現以上介面,定義圓形類(用數字1表示)、矩形類(用數字2表示)。
從鍵盤輸入圖形類別(1代表圓,2代表矩形)和相應的引數,計算並輸出相應圖形的面積和周長,結果保留小數點後2位資料。
輸入格式:
輸入資料包含多行,第一行一個整數n,表示接下來共有n個圖形物件需要生成。
每個圖形資料佔2行,第一行為數字1或2,表示圖形類別,第二行為生成圖形的引數。
輸出格式:
每個圖形對應的面積和周長。
輸入樣例:
2
1
1.0
2
1.0 2.0
輸出樣例:
3.14 6.28
2.00 6.00
程式
import java.util.*;
interface Shape
{
public float getArea();
public float getPerimeter();
}
class Round implements Shape
{
private float radius;
public Round(float r)
{
radius=r;
}
public float getArea()
{
return (float)(Math.PI*radius*radius);
}
public float getPerimeter()
{
return (float)(2*Math.PI*radius);
}
}
class Rect implements Shape
{
private float length;
private float width;
public Rect(float l,float w)
{
length=l;width=w;
}
public float getArea()
{
return (float)(length*width);
}
public float getPerimeter()
{
return (float)(2*(length+width));
}
}
public class Main
{
public static void main(String[] args)
{
Scanner ss=new Scanner(System.in);
int n=ss.nextInt();
for(int i=1;i<=n;i++)
{
int m=ss.nextInt();
if(m==1)
{
float r=ss.nextFloat();
Round r1=new Round(r);
System.out.println(String.format("%.2f",r1.getArea())+" "+String.format("%.2f",r1.getPerimeter()));
}
else if(m==2)
{
float l=ss.nextFloat();
float w=ss.nextFloat();
Rect r2=new Rect(l,w);
System.out.println(String.format("%.2f",r2.getArea())+" "+String.format("%.2f",r2.getPerimeter()));
}
}
}
}
7-3 宣告圖書類,記錄圖書總冊數,利用靜態變數賦值。 (10分)
宣告一個圖書類,其資料成員為書名、編號(利用靜態變數實現自動編號)、書價,並擁有靜態資料成員冊數,記錄圖書的總冊數;在構造方法中,利用靜態變數為物件的編號賦值,在主方法中定義物件陣列,並求出總冊數。
輸出格式:
請輸出每本圖書對應的書名,書號,書價以及總圖書數。
輸出樣例:
書名:Java程式設計, 書號:1, 書價:34.5
書名:資料結構, 書號:2, 書價:44.8
書名:C++程式設計, 書號:3, 書價:35.0
圖書總冊數為:3
程式
class Book
{
private String title;
private double price;
public static String sno;
public static int num=0;
public Book(String t,double p)
{
num++;
title=t;
price=p;
sno=Integer.toString(Integer.parseInt("0")+num);
}
public String toString()
{
return "書名:"+title+", 書號:"+sno+", 書價:"+price;
}
public static int getNum()
{
return num;
}
}
public class Main
{
public static void main(String[] args){
Book a=new Book("Java程式設計",34.5);
System.out.println(a);
Book b=new Book("資料結構",44.8);
System.out.println(b);
Book c=new Book("C++程式設計",35.0);
System.out.println(c);
System.out.println("圖書總冊數為:"+Book.getNum());
}
}
7-4 jmu-Java-03物件導向基礎-04-形狀-繼承 (15分)
前言
前面題目形狀中我們看到,為了輸出所有形狀的周長與面積,需要建立多個陣列進行多次迴圈。這次試驗使用繼承與多型來改進我們的設計。
本題描述:
1、定義抽象類Shape 屬性:不可變靜態常量double PI,值為3.14, 抽象方法:public double
getPerimeter(),public double getArea() 2、Rectangle與Circle類均繼承自Shape類。
Rectangle類(屬性:int width,length)、Circle類(屬性:int radius)。
帶參建構函式為Rectangle(int width,int length),Circle(int radius)。
toString方法(Eclipse自動生成) 3、編寫double sumAllArea方法計算並返回傳入的形狀陣列中所有物件的面積和與
double sumAllPerimeter方法計算並返回傳入的形狀陣列中所有物件的周長和。 4、main方法
4.1 輸入整型值n,然後建立n個不同的形狀。如果輸入rect,則依次輸入寬、長。如果輸入cir,則輸入半徑。
4.2 然後輸出所有的形狀的周長之和,面積之和。並將所有的形狀資訊以樣例的格式輸出。 提示:使用Arrays.toString。
4.3 最後輸出每個形狀的型別與父型別.使用類似shape.getClass() //獲得型別, shape.getClass().getSuperclass() //獲得父型別;
注意:處理輸入的時候使用混合使用nextInt與nextLine需注意行尾回車換行問題。
思考
你覺得sumAllArea和sumAllPerimeter方法放在哪個類中更合適? 是否應該宣告為static?
輸入樣例:
4
rect
3 1
rect
1 5
cir
1
cir
2
輸出樣例:
38.84
23.700000000000003
[Rectangle [width=3, length=1], Rectangle [width=1, length=5], Circle [radius=1], Circle [radius=2]]
class Rectangle,class Shape
class Rectangle,class Shape
class Circle,class Shape
class Circle,class Shape
程式
import java.util.*;
abstract class Shape
{
static final double PI=3.14;
public abstract double getPerimeter();
public abstract double getArea();
}
class Rectangle extends Shape
{
private int width;
private int length;
public Rectangle(int width,int length)
{
this.width=width;
this.length=length;
}
public double getPerimeter()
{
return 2*(width+length);
}
public double getArea()
{
return length*width;
}
public String toString()
{
return "Rectangle [width="+width+", length="+length+"]";
}
}
class Circle extends Shape
{
private int radius;
public Circle(int radius)
{
this.radius=radius;
}
public double getPerimeter()
{
return 2*PI*radius;
}
public double getArea()
{
return PI*radius*radius;
}
public String toString()
{
return "Circle [radius="+radius+"]";
}
}
public class Main
{
public static void main(String[] args)
{
double sumAllArea=0,sumAllPerimeter=0;
Scanner ss=new Scanner(System.in);
int n=ss.nextInt();
Shape sha[]=new Shape[n];
for(int i=0;i<n;i++)
{
String s1=ss.next();
if(s1.equals("rect"))
{
int w=ss.nextInt();
int l=ss.nextInt();
sha[i]=new Rectangle(w,l);
sumAllArea+=sha[i].getArea();
sumAllPerimeter+=sha[i].getPerimeter();
}
else if(s1.equals("cir"))
{
int r=ss.nextInt();
sha[i]=new Circle(r);
sumAllArea+=sha[i].getArea();
sumAllPerimeter+=sha[i].getPerimeter();
}
}
System.out.println(sumAllPerimeter);
System.out.println(sumAllArea);
System.out.print("[");
for(int i=0;i<n;i++)
{
if(i!=0) System.out.print(", ");
System.out.print(sha[i]);
}
System.out.println("]");
for(int i=0;i<n;i++)
{
if(sha[i] instanceof Rectangle) System.out.println("class Rectangle,class Shape");
else if(sha[i] instanceof Circle) System.out.println("class Circle,class Shape");
}
}
}
7-5 學生類-建構函式 (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]
程式
import java.util.*;
class Student
{
private String name;
private String sex;
private int age;
public Student(String n,String s,int a)
{
name=n;
sex=s;
age=a;
}
public String toString()
{
return "Student [name='"+name+"', sex='"+sex+"', age="+age+"]";
}
}
public class Main
{
public static void main(String[] args)
{
Scanner ss=new Scanner(System.in);
String name=ss.next();
int age=ss.nextInt();
String sex=ss.next();
Student s=new Student(name,sex,age);
System.out.println(s);
}
}
7-6 計算年齡 (10分)
定義一個Birthday類,其成員變數有3個整形變數(出生的年月日):year,month,day;提供構造方法對這3個成員變數進行初始化;提供成員變數的get、set方法;成員函式有getAge(),功能是實現計算到2017年12月25日時該Birthday物件的年齡。編寫程式測試這個類。
輸入格式:
輸入出生的年、月、日(注:輸入的年月日以換行隔開)
輸出格式:
計算得到年齡
輸入樣例:
在這裡給出一組輸入。例如:
1995
12
23
輸出樣例:
在這裡給出相應的輸出。例如:
age=22
程式
import java.util.*;
class Birthday
{
private int year;
private int month;
private int day;
public Birthday(int y,int m,int d)
{
year=y;month=m;day=d;
}
public void setYear(int y1)
{
year=y1;
}
public void setMonth(int m1)
{
month=m1;
}
public void setDay(int d1)
{
day=d1;
}
public int getYear()
{
return year;
}
public int getMonth()
{
return month;
}
public int getday()
{
return day;
}
public int getAge()
{
if(day<=25)return 2017-year;
else return 2016-year;
}
}
public class Main
{
public static void main(String[] args)
{
Scanner ss=new Scanner(System.in);
int y=ss.nextInt();
int m=ss.nextInt();
int d=ss.nextInt();
Birthday b=new Birthday(y,m,d);
System.out.println("age="+b.getAge());
}
}
相關文章
- java面對物件程式設計的概念Java物件程式設計
- 物件導向程式設計-java語言 第二週程式設計題物件程式設計Java
- 使用 Python 學習面對物件的程式設計Python物件程式設計
- 當程式設計師面對小學數學題程式設計師
- java優化程式設計-物件重用Java優化程式設計物件
- java物件導向程式設計(轉)Java物件程式設計
- 好程式設計師前端教程面對物件與原型原型鏈程式設計師前端物件原型
- 結對程式設計:肩並肩還是面對面程式設計
- JavaScript物件程式設計JavaScript物件程式設計
- Java 網路程式設計(TCP程式設計 和 UDP程式設計)Java程式設計TCPUDP
- java-物件導向程式設計--(3)Java物件程式設計
- Java高效程式設計之二【對所有物件都通用的方法】Java程式設計物件
- 物件導向程式設計和`GP`泛型程式設計物件程式設計泛型
- JAVA網路程式設計(2)TCP程式設計Java程式設計TCP
- java的socket程式設計問題Java程式設計
- 物件導向程式設計物件程式設計
- 《Java程式設計思想》筆記08——持有物件Java程式設計筆記物件
- Java語言程式設計——物件和類09Java程式設計物件
- JAVA_15 物件導向程式設計(下)Java物件程式設計
- java-物件導向程式設計--多型Java物件程式設計多型
- java-物件導向程式設計--繼承Java物件程式設計繼承
- Java SE 學習---物件導向程式設計Java物件程式設計
- 結束程式設計師對程式設計的恨程式設計師
- 結對程式設計程式設計
- Java對併發程式設計的支援Java程式設計
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 函數語言程式設計 VS 物件導向程式設計函數程式設計物件
- C#面對抽象程式設計第一講C#抽象程式設計
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計
- JavaScript-設計模式-物件導向程式設計JavaScript設計模式物件程式設計
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- 五種Java程式設計高效程式設計方法 - BablaJava程式設計
- Java 網路程式設計 —— 非阻塞式程式設計Java程式設計
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- Java程式設計技巧Java程式設計
- Java Socket程式設計Java程式設計
- Java程式設計:圖Java程式設計