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实验之内部类与异常类
内部类
在类中声明的类,被称为内部类
包含内部类的类成为内部类的外嵌类
异常类
异常就是程序运行时出现非常规现象
异常对象可调用如下方法得到或输出有关异常信息
public String getMessage();
public void printStackTrace();
public String toString();
try~catch语句用法
try部分:
抛出异常对象或调用某个可能抛出对象的方法,且爆出异常对象。
catch部分:
发生异常后的处理
try~catch语句格式
try{
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){
发生异常后的处理1……
}
catch(ExceptionSubClass12 e){
发生异常后的处理2……
}
内部优惠券
手机专卖店为了促销 自己的产品,决定发行 内部购物券,但其他商场不能发行该购物 券 。编写一个 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()+"被禁止!");
}
}
}
}