Java實驗之介面與實現、內部類與異常類
阿新 • • 發佈:2021-01-03
技術標籤:javaintellij idea
Java實驗之介面與實現、內部類與異常類
Java實驗之介面與實現
評價成績
體操比賽計算選手成績的辦法是去掉一個最高分和最低分後再計算平均分,而學校考 察一個班級的某科 目的考試情況時,是計算全班同學的平均成績。Gymastics類 和 school類都實現了ComputcrAverage接 口,但實現的方式不同。
執行結果:
package com.company;
interface CompurerAverage {
public double average(double x[]);
}
class Gymnastics implements CompurerAverage {
public double average(double x[]) {
int count=x.length;
double aver=0,temp=0;
for(int i=0;i<count;i++){
for(int j=i;j<count;j++){
if(x[j]<x[i]) {
temp=x[j];
x[j]=x[i];
x[ i]=temp;
}
}
}
for(int i=1;i<count-1;i++){
aver=aver+x[i];
}
if(count>2)
aver=aver/(count-2);
else
aver=0;
return aver;
}
}
class School implements CompurerAverage {
public double average (double[] x) {
int count=x.length;
double aver=0;
for(int i=0;i<count;i++){
aver=aver+x[i];
}
aver=aver/count;
return aver;
}
}
public class Main{
public static void main(String arg[]){
double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};
double b[]={89,56,78,90,100,77,56,45,36,79,98};
CompurerAverage computer;
computer=new Gymnastics();
double result=computer.average(a);
System.out.printf("體操選手最後得分:%5.3f\n",result);
computer = new School();
result = computer.average(b);
System.out.printf("班級考試平均分數:%-5.2f",result);
}
}
Java實驗之內部類與異常類
內部優惠券
手機專賣店為了促銷 自己的產品,決定發行 內部購物券,但其他商場不能發行該購物 券 。編寫一個 Mobi1eshop類 (模擬手機專賣店),該類 中有一個名字為 ImerPurchaseMoney
的內部類 (模擬 內部購物券 )。
執行結果:
package com.company;
class MobileShop{
InnerPurchaseMoney purchaseMoney1;
InnerPurchaseMoney purchaseMoney2;
//
private int mobileAmount;//手機數量
MobileShop(){
purchaseMoney1=new InnerPurchaseMoney(20000);
purchaseMoney2=new InnerPurchaseMoney(10000);
}
void setMobileAmount(int m){
mobileAmount=m;
}
int getMobileAmount(){
return mobileAmount;
}
class InnerPurchaseMoney{
int moneyValue;
InnerPurchaseMoney(int m){
moneyValue=m;
}
void buyMobile(){
if (moneyValue >= 20000) {
mobileAmount=mobileAmount-6;
System.out.println("用價值"+moneyValue+"的內部購物券買了6部手機");
}
else if(moneyValue<20000&&moneyValue>=10000){
mobileAmount=mobileAmount-3;
System.out.println("用價值"+moneyValue+"的內部購物券買了3部手機");
}
}
}
}
public class Main {
public static void main(String[] args) {
MobileShop shop=new MobileShop();
shop.setMobileAmount(30);
System.out.println("手機專賣店目前有"+shop.getMobileAmount()+"部手機");
shop.purchaseMoney1.buyMobile();
shop.purchaseMoney2.buyMobile();
System.out.println("手機專賣店目前有"+shop.getMobileAmount()+"部手機");
}
}
檢查危險品
車站檢查危險品的裝置,如果發現危險品會發出警告。程式設計模擬裝置發現危險品。 編寫一個 Exception的 子類 Dange噸xception,該 子類可 以建立異常物件,該異常物件 呼叫 toshow()方 法輸出 “屬於危險品”。 編寫一個 Machinc類 ,該類的方法 checkBag(Goods goods)當 發現引數 goods是 危險品 時 (goods的 慫Danger屬 性是 tme)將拋 出 DangerException異 常。 程式在主類 的 Ⅲ1ho方法 中的 岬吒atch語 旬 的 W部 分讓 Machhe類 的例項呼叫
GhcρkBag(Goods goods)方 法,如果發現危險品就在 try-catch語 句的 catch部 分處理危險品。
執行結果:
// DangerException.java
public class DangerException extends Throwable {
String message;
public DangerException(){
message="危險品!";
}
public void toShow(){
System.out.print(message+"");
}
}
// Machine.java
public class Machine {
public void checkBag(Goods goods) throws DangerException{
if(goods.isDanger){
DangerException danger=new DangerException();
throw danger;
}
else {
System.out.print(goods.getName()+"不是危險品!");
}
}
}
// Goods.java
public class Goods {
public boolean isDanger;
String name;
public void setDanger(boolean boo)
{
isDanger=boo;
}
public void setName(String s){
name=s;
}
public String getName(){
return name;
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Machine machine=new Machine();
String name[]={"蘋果","炸藥","西服","硫酸","手錶","硫黃"};
Goods []goods=new Goods[name.length];//檢查6件物品
for(int i=0;i<name.length;i++){
goods[i]=new Goods();
if(i%2==0){
goods[i].setDanger(false);
goods[i].setName(name[i]);
}
else {
goods[i].setDanger(true);
goods[i].setName(name[i]);
}
}
for(int i=0;i< goods.length;i++){
try{
machine.checkBag((goods[i]));
System.out.println(goods[i].getName()+"檢查通過");
}
catch (DangerException e){
e.toShow();
System.out.println(goods[i].getName()+"被禁止!");
}
}
}
}