System.out.print("*");//打印每行中的"*"字符
System.out.println();//打印完一行后换行
}
通过javac、java等命令编译并运行程序,运行结果如图3-30所示。
实验3-2:
使用switch语句实现条件分支
实验内容
编程实现运算一个简单的程序,程序可以根据学生的成绩判断学生成绩的等级。
声明一个整形数组保存学生成绩,如:
intstudent[]={95,85,75,65,55}。
程序运行结果如图3-31所示。
图3-31实验3-2运行结果
实验目的
通过这个简单实例让读者利用switch语句来实现条件分支,实现对于不同分数段的成绩,输出不同等级标识。
实现思路
首先定义5个学生,分别对其的成绩进行赋值,并在for循环语句中利用Switch语句分别对每个学生的成绩进行判断。
关键代码如下所示:
intstudent[]={95,85,75,65,55};//声明并初始化一个数组,用存放5个学生成绩
for(inti=0;i<5;i++)//通过循环分别判判断每个学生成绩
{
switch(student[i]/10)//使用switch语句,并将成绩整除10后的值作为比较因子
{
case9:
System.out.println("student"+i+"'sresultisA!
");
//学生成绩整除10后结果为9的,输出等级为"A"
break;
case8:
System.out.println("student"+i+"'sresultisB!
");
//学生成绩整除10后结果为8的,输出等级为"B"
break;
case7:
System.out.println("student"+i+"'sresultisC!
");
//学生成绩整除10后结果为7的,输出等级为"C"
break;
case6:
System.out.println("student"+i+"'sresultisD!
");
//学生成绩整除10后结果为6的,输出等级为"D"
break;
default:
System.out.println("student"+i+"'sresultisF!
");
//学生成绩整除10后结果为1~5的,输出等级为"F"
}
}
通过javac、java等命令编译并运行程序,运行程序结果如图3-31所示。
实验3-3:
使用switch语句实现条件分支测试break功能
实验内容
在实验3-2的基础上进行简单修改,在每个case语句后不加break语句。
运行后效果如图3-32所示。
显然这个运行结果是不符合常规逻辑的。
图3-32实验3-3运行结果
实验目的
通过这个简单实例让读者利用switch语句来实现条件分支,用含有break和不含有break的case语句做比较,测试break的功能。
实现思路
结合实验3-2进行比较设计,实现思路与实验3-2基本相同,不同之处在于:
每个case语句之后没有break语句。
通过比较输出结果的区别,进一步了解break语句的功能。
关键代码如下所示:
intstudent[]={95,85,75,65,55};//声明并初始化一个数组,用存放5个学生成绩
for(inti=0;i<5;i++)//通过循环分别判判断每个学生成绩
{
switch(student[i]/10)//使用switch语句,并将成绩整除10后的值作为比较因子
{
case9:
System.out.println("student"+i+"'sresultisA!
");
//学生成绩整除10后结果为9的,输出等级为"A"
case8:
System.out.println("student"+i+"'sresultisB!
");
//学生成绩整除10后结果为8的,输出等级为"B"
case7:
System.out.println("student"+i+"'sresultisC!
");
//学生成绩整除10后结果为7的,输出等级为"C"
case6:
System.out.println("student"+i+"'sresultisD!
");
//学生成绩整除10后结果为6的,输出等级为"D"
default:
System.out.println("student"+i+"'sresultisF!
");
//学生成绩整除10后结果为1~5的,输出等级为"F"
}
}
通过javac、java等命令编译并运行程序,运行程序结果如图3-32所示。
上机指导4
本章介绍了面向对象的基本思想,并详细介绍了类的定义及其使用,同时介绍了成员变量与方法的继承、方法的重载、final与abstract的类与方法。
实验4-1:
对象引用型成员变量的使用
实验内容
编程实现两个同类对象的比较,两个对象的成员变量intMember都为默认值66,并在屏幕上输出比较的结果。
运行后效果如图4-12所示。
图4-12实验4-1运行结果
实验目的
通过这个简单的实例让读者了解对象引用型成员变量的使用,加深对类、对象的理解。
实现思路
首先利用定义类的成员变量intMember默认值为66,两个对象的intMember成员变量初始值都是66,两个对象是一样的。
第一次比较两个引用返回的是False,因为各自指向不同的对象。
第二次比较两个引用返回的是True,因为在比较前将ref2的值赋给了ref1,这样两个引用指向同一个对象了。
关键代码如下所示:
//声明对象引用并创建对象
Sample6_4ref1=newSample6_4();
Sample6_4ref2=newSample6_4();
//打印对象信息
System.out.println("ref1.intMember="+ref1.intMember+",ref2.intMember="+ref2.intMember);
//对引用变量进行比较
if(ref1==ref2)
{
System.out.println("ref1与ref2指向同一个对象。
");
}
else
{
System.out.println("ref1与ref2不是指向同一个对象。
");
}
ref1=ref2;
if(ref1==ref2)
{
System.out.println("ref1与ref2指向同一个对象。
");
}
else
{
System.out.println("ref1与ref2不是指向同一个对象。
");
}
通过javac、java等命令编译并运行程序,运行程序结果如图4-12所示。
实验4-2:
含有返回值的方法的使用
实验内容
图4-13实验4-2运行结果
编程实现调用带有返回值的方法,并在屏幕上输出调用后的结果。
分别定义返回值为整形、字符型、双精度等的方法,为了简单,方法中可以不做任何操作,直接将已定义的变量值返回。
运行后效果如图4-13所示。
实验目的
在书中简单介绍了方法的使用,而本实验将给读者介绍带有返回值的方法的使用,让读者了解如果调用带有返回值的方法。
实现思路
首先利用定义含有返回值的各种方法,如:
返回值为整型的,返回值为字符型的,返回值为双精度型的。
在主方法里,可以直接调用各种方法,将其返回值直接输出至屏幕。
关键代码如下所示:
//获取整型变量,返回值为int型
publicintgetInt()
{returna;}
//获取字符型变量,返回值为char型
publicchargetChar()
{returnc;}
//获取单精度型变量,返回值为float型
publicfloatgetFloat()
{returnf;}
//获取双精度型变量,返回值为double型
publicdoublegetDouble()
{returnd;}
//获取字符串对象变量,返回值为String型
publicStringgetString()
{returnstr;}
//main方法中可以直接调用这些已经定义的方法。
//定义各种类型的类变量
privateinta=100;
privatecharc='C';
privatefloatf=3.0f;
privatedoubled=4.0;
privateStringstr="Hello";
//将方法的返回值输出
System.out.println(getInt());
System.out.println(getChar());
System.out.println(getFloat());
System.out.println(getDouble());
System.out.println(getString());
通过javac、java等命令编译并运行程序,运行程序结果如图4-13所示。
实验4-3:
使用对象模拟“商店客户折扣卡”功能
实验内容
编程实现一个模拟的用户消费信用卡的示例,在其中用户Customer类具有用户名、地址、卡号、消费额度、可以享受的打折度等多种个人信息;而CustomerDemo类中建立3个消费者,对其分别进行操作,模拟其行为。
运行后效果如图4-14所示。
图4-14实验4-3运行结果
实验目的
在前几节介绍了面向对象的基本概念,包括类、对象、属性以及方法。
在这个基础上,用两个面向对象的简单程序,继续让读者充分体会面向对象编程的方法。
实现思路
简单模拟了一个商店客户折扣卡的功能,自定义Customer类用来保存在某个商店中的客户的折扣卡信息。
在主类CustomerDemo中,创建Customer类的一个数组对象,该数组中包含了三个Customer的对象,用来保存三个不同的消费者各自持有的折扣卡信息。
通过这三个对象,可以根据用户消费的金额来改变用户在本店中所能享受的折扣价格。
关键代码如下所示:
//声明三个消费用户Customer对象
Customercustomer[]=newCustomer[3];
publicCustomerDemo()
{
//创建并初始化所声明的三个Customer对象
customer[0]=newCustomer("c0001","wangxyw","BeiJing","wangxyue@");
customer[1]=newCustomer("c0002","XuQuan","ShangHai","chunticha@");
customer[2]=newCustomer("c0003","XuGuangYang","BeiJing","xugy@");
//customer[0]用户消费2800.00元
customer[0].buy(2800.00);
//设置用户下次购物所能享受的折扣
customer[0].setDiscount();
//customer[1]用户消费1688.00元
customer[1].buy(1688.00);
//设置用户下次购物所能享受的折扣
customer[1].setDiscount();
//customer[2]用户消费980.00元
customer[2].buy(980.00);
//设置用户下次购物所能享受的折扣
customer[2].setDiscount();
//显示所有用户的全部信息
for(inti=0;i{
System.out.println("customer["+i+"]");
System.out.println("cardID:
"+customer[i].getCardID());
System.out.println("name:
"+customer[i].getName());
System.out.println("cost:
"+customer[i].getCost());
System.out.println("discount:
"+customer[i].getDiscount()*10);
System.out.println("address:
"+customer[i].getAddress());
System.out.println("email:
"+customer[i].getEmail()+"\n");
}
}
classCustomer
{
privateStringcardID;//用于折扣卡卡号
privateStringname;//用户名
privatedoublecost=0;//用户消费金额
privateStringaddress;//用户住址
privateStringemail;//用户email
privatedoublediscount=1;//用户所能享受的折扣
publicCustomer(Stringid,Stringname,Stringadd,Stringemail)
{
cardID=id;
this.name=name;
address=add;
this.email=email;
}
//当用于购买商品后,增加用户消费值
publicvoidbuy(doublecost)
{this.cost+=cost;}
//根据用户的消费额度来改变用户所能享受的折扣
publicvoidsetDiscount()
{
if(cost>2000.00)
discount-=0.1;
elseif(cost>1000.00)
discount-=0.05;
}
//用于获取和设置用户地址的方法
publicStringgetAddress()
{returnaddress;}
publicvoidsetAddress(Stringaddress)
{this.address=addr