java入门实验
【实验题1】安装JDK
步骤如下。
1.打开JDK安装程序,按照提示进行JDK的安装。
2.环境变量的设定
1.右击【我的电脑】,选择属性命令,在高级属性里,切换到高级选项卡,点击环境变量按钮。
2.在系统变量列表框里找到Path,双击Path,在变量已有的值后边填加“;d:\jdk\bin”,单击确定,进行保存。
3.打开命令提示框,输入java,提示设置成功
【实验题2】使用eclipse开发简单的小程序---HellowWorld
步骤如下。
1.新建项目:Text
2.在项目里新建class类Hellowworld
3.编写代码:
public class HellowWord {
public static void main(String[] args) {
System.out.println("Hellow world!");
}
}
4.调试运行
【实验题3】从键盘输入小写字母,回显并输出其对应的大写字母。
步骤如下。
1.新建class类newZimu
2.编写代码
public class newZimu {
public static void main(String[] args) {
try{
System.out.print("请输入一个小写字母:");
int a = System.in.read();
char b=(char)(a-32);
System.out.print("大写字母是:"+b);
}
catch(Exception e)
{System.out.print(e);}
}
}
3.调试运行
【实验题4】计算个人所得税。设某人月收入为x元(x由键盘输入),假设个人所得税
征收方法如下:
(1)当800
800){
a=1;
}
else if(s>1300&s<=2800){
a=2;
}
else if(s>2800&s<=5800){
a=3;
}
else if(s>5800&s<=28000){
a=4;
}
else if(s>28000){
a=5;
}
else{
a=6;
}
switch(a)
{
case 1:
tax=(s-800)*0.05;
sl=s-tax;break;
case 2:
tax=(s-800)*0.1;
sl=s-tax;break;
case 3:
tax=(s-800)*0.15;
sl=s-tax;break;
case 4:
tax=(s-800)*0.2;
sl=s-tax;break;
case 5:
tax=(s-800)*0.3;
sl=s-tax;break;
case 6:
tax=0;
sl=s;break;
}
System.out.println("您应缴税:"+tax+"元,您税后工资为:"+sl);
}
}
3.调试运行
【实验题5】百鸡,公鸡5元/只,母鸡3元/只,小问题鸡3只/元,问100元买100只鸡,
公鸡母鸡小鸡各几何,
步骤如下。
1.新建class类chicken
2.编写代码
public class chicken {
public static void main(String[] args) {
System.out.println(" 百鸡,公鸡5元/只,母鸡3元/只,小问题鸡3只/元,问
100元买100只鸡,公鸡母鸡小鸡各几何,");
int money =100;
int sum = 100;
int x=0,y=0,z=0;
for(x=0;x<=100;x++)
{
money=x*5;
sum=x;
for(y=0;y<=100;y++)
{
for(z=0;z<=100;z++)
{
if((x+y+z==100)&&(x*5+y*3+z/3==100))
System.out.println("公鸡"+x+"只;母鸡"+y+"只;小鸡"+z+"只");
}
}
}
}
}
3.调试运行
【实验题6】
请输入并运行下面的程序,写出程序的运行结果。
public class ArrayCopy {
public static void main(String[] args) {
int[] a = {1,2,3};
int[] b = a;
b[1]=5;
System.out.println("a[1]= "+a[1]+ ",b[1]= "+b[1]);
}
}
步骤如下。
1.新建class类ArrayCopy
2.编写代码:
public class ArrayCopy {
public static void main(String[] args) {
int[] a = {1,2,3};
int[] b = a;
b[1]=5;
System.out.println("a[1]= "+a[1]+ ",b[1]= "+b[1]);
}
}
3.调试运行
【实验题7】将0,99分别赋给一个包含100个整型元素的数组,并用二分查找法查找元素32、1和1032
步骤如下。
1.新建class类Array
2.编写代码:
public class Array {
static boolean Search(int num, int[] array) {
int front = 0;
int tail = array.length - 1;
while (front <= tail) {
int middle = (front + tail) / 2;
if (array[middle] == num) {
return true;
} else if (array[middle] > num) {
tail = middle - 1;
} else {
front = middle + 1;
}
}
return false;
}
public static void main(String[] args) {
int[] a;
a=new int[100];
for(int i=0;i<=99;i++)
{
for(int j=0;j<=i;j++){
a[i]=j;
}
}
System.out.println("查找数字32:"+Search(32,a));
System.out.println("查找数字1:"+Search(1,a));
System.out.println("查找数字1032:"+Search(1032,a));
}
}
3.运行并调试。
【实验题8】
编写一个音乐类,属性包括音乐名称、音乐类型,其方法实现音乐信息的显示。并编写
测试类。
步骤如下。
1.新建class类MusicClass
2.编写代码
public class MusicClass {
String name;
String classical;
public void display(){
System.out.println("音乐名称:"+name);
System.out.println("音乐类型"+classical);
}
}
3.新建class类MusicClass_Test
4.编写代码
public class MusicClass_Test {
public static void main(String[] args) {
MusicClass music=new MusicClass();
music.name="如果还有明天";
music.classical="Rock";
music.display();
MusicClass music2=new MusicClass();
music2.name="离歌";
music2.classical="Rock";
music2.display();
}
}
5.调试运行
【实验题9】
编写一个手机类,属性包括手机品牌、手机型号,其方法实现手机信息的显示。并编写
测试类。
步骤如下。
1.新建class类PhoneClass
2.编写代码:
public class PhoneClass {
String Mark;
String Num;
public void display(){
System.out.println("手机品牌:"+Mark);
System.out.println("手机型号:"+Num);
}
}
3.新建class类PhoneClass_Test
4.编写代码
public class PhoneClass_Test {
public static void main(String[] args) {
PhoneClass phone=new PhoneClass();
phone.Mark="诺基亚";
phone.Num="N81";
phone.display();
PhoneClass phone2=new PhoneClass();
phone2.Mark="Apple";
phone2.Num="3GS";
phone2.display();
}
}
5.调试运行
【实验题10】
编写一个程序,实现设置上月电表读数、设置本月电表读数、显示上月电表读数、显示本月电表读数、 计算本月用电数、显示本月用电数、计算本月用电费用、显示本月用电费用功能。并编写测试类。
步骤如下。
1.新建class类Ammeter
2.编写代码:
import java.util.*;
public class Ammeter {
double i_last;
double i_now;
double money_last;
double money_now;
public void setRecord(){
System.out.println("设置本月电表读数:");
i_now=new Scanner(System.in).nextDouble();
System.out.println("设置上月电表读数:");
i_last=new Scanner(System.in).nextDouble();
}
public void showRecord(){
System.out.println("本月用电(单位:度):"+i_now);
System.out.println("上月用电(单位:度):"+i_last);
}
public void calcUsedFee(){
System.out.println("电费每度0.56元");
money_last=i_last*0.56;
money_now=i_now*0.56;
System.out.println("本月电费(单位:元):"+money_now);
System.out.println("上月电费(单位:元):"+money_last);
}
3.新建class类Ammeter_Test
4.编写代码
public class Ammeter_Test {
public static void main(String[] args) {
Ammeter am=new Ammeter();
am.setRecord();
am.showRecord();
am.calcUsedFee();
}
}
5.运行并调试。
【实验题11】
通过封装编写Book类。要求:类具有属性
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
名、书号、主编、出版社、出版时间、页
数、价格,其中页数不能少于200页,否则输出错误信息,并强制赋默认值200;为各属性设置赋值和取值方法;具有方法detail(),用来在控制台输出每本书的信息。
编写BookTest测试类。为Book对象的属性赋予初始值,然后调用Book对象的detail
方法,看看输出是否正确。
2、给Book类增加构造方法,同时对测试类也做相应的修改。
步骤如下。
1.新建class类Book
2.编写代码
public class Book {
String Name;
String ID;
String Author;
String Book_Public;
String Time;
int Page;
double Price;
public void detail(){
if(Page<200){
System.out.println("输入页码错误,强制转换为200页");
Page=200;
Output();
}
else{
Output();
}
}
public void Output(){
System.out.println("书名是:"+Name);
System.out.println("书号是:"+ID);
System.out.println("作者是:"+Author);
System.out.println("出版社是:"+Book_Public);
System.out.println("出版时间是:"+Time);
System.out.println("页数是:"+Page);
}
}
3.新建class类BookTest
4.编写代码
import java.util.Scanner;
public class BookTest {
public static void main(String[] args) {
Book bk=new Book();
System.out.println("请输入书名:");
bk.Name=new Scanner(System.in).next();
System.out.println("请输入书号:");
bk.ID=new Scanner(System.in).next();
System.out.println("请输入作者:");
bk.Author=new Scanner(System.in).next();
System.out.println("请输入出版社:");
bk.Book_Public=new Scanner(System.in).next();
System.out.println("请输入出版日期:");
bk.Time=new Scanner(System.in).next();
System.out.println("请输入页数:");
bk.Page=new Scanner(System.in).nextInt();
bk.detail();
}
}
5.调试运行
【实验题12】
实现一个名为Person的类和它的两个子类Student和Employee。Employee有子类Faculty和Staff。Person中的人有姓名、地址和电话号码。 Student中的学生有班级状态(一、二、三、四年级)。将这些状态定义为常量。 Employee中的雇员有办公室、工资。Faculty中的教员有级别。Staff中的职员有职务称号。覆盖每个类中的toString方法,显示类名和人名。
步骤如下。
ass类Person 1.新建cl
2.编写代码
public class Person {
private String Name;
private String Tel;
private String Add;
public Person(String Name, String Tel, String Add) {
super();
this.Name = Name;
this.Tel = Tel;
this.Add=Add;
}
public String getName(){
return Name;
}
public String getTel(){
return Tel;
}
public String getAdd(){
return Tel;
}
public String toString() {
return "姓名:" + Name + ",地址:" + Add + ",电话:" + Tel+",class:Person";
}
}
class Student extends Person{
private int student_Grade;
public Student(String Name, String Tel,String Add,int student_Grade){
super(Name,Tel,Add);
this.student_Grade=student_Grade;
}
public int getStudent_Grade() {
return student_Grade;
}
public String toString() {
return super.toString()+",年级:"+student_Grade+",class:Student";
}
}
class Employee extends Person{
private String Office;
private double Salary;
public Employee(String Name,String Tel,String Add,String Office,double Salary){
super(Name,Tel,Add);
this.Office=Office;
this.Salary=Salary;
}
public String getOffice(){
return Office;
}
public double getSalary(){
return Salary;
}
public String toString() {
return super.toString()+",办公室:"+Office+",工资:"+Salary+",class:Employee";
}
}
class Faculty extends Employee{
private String Level;
public Faculty(String Name,String Tel,String Add,String Office,double Salary,String
Level){
super(Name,Tel,Add,Office,Salary);
this.Level=Level;
}
public String getLevel(){
return Level;
}
public String toString() {
return super.toString()+",教员级别:"+Level+",class:Faculty";
}
}
class Staff extends Employee{
private String Post;
public Staff(String Name,String Tel,String Add,String Office,double Salary,String Post){
super(Name,Tel,Add,Office,Salary);
this.Post=Post;
}
public String getPost(){
return Post;
}
public String toString() {
return super.toString()+",职务称号:"+Post+",class:Staff";
}
}
3.新建class类Person_Test
4.编写代码
public class Person_Text {
public static void main(String[] args) {
Person zhangsan=new Person("张三","110","公安局");
Person lisi=new Student("李四","11111111","城建",1);
Person wangwu =new Employee("王五","1689756666","城建","计算机系302",2500.00);
Employee zhaoliu=new Faculty("赵六","10086","城建","计算机系203",2700.00,"副教授");
Employee liuqi=new Staff("刘七","10010","城建","计算机系505",4500.00,"副书记");
System.out.println(zhangsan.toString());
System.out.println(lisi.toString());
System.out.println(wangwu.toString());
System.out.println(zhaoliu.toString());
System.out.println(liuqi.toString());
}
}
5.调试运行
【实验题13】
编写动物世界的继承关系代码。动物(Animal)包括山羊(Goat)和狼(Wolf),他们吃(eat)的行为不同,山羊吃草,狼吃肉,但走路(walk)的行为是一致的。通过继承实现以上需求,并编写AnimalTest测试类进行测试。
步骤如下:
1.新建class类AnimalTest
2.编写代码
class Animal{
private String name;
private String walk="走";
Animal (String name,String walk){
this.name=name;
this.walk=walk;
}
public String getName(){
return name;
}
public String toString(){
return name+"前进方式:"+walk;
}
}
class Goat extends Animal{
private String eat;
Goat(String name ,String eat,String walk){
super(name,walk);
this.eat=eat;
}
public String toString(){
return super.toString()+",吃"+eat;
}
}
class Wolf extends Animal{
private String eat;
Wolf(String name,String eat,String walk){
super(name,walk);
this.eat=eat;
}
public String toString(){
return super.toString()+",吃"+eat;
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal g=new Goat("羊","草","走");
Animal w=new Wolf("狼","肉","走");
System.out.println(g.toString());
System.out.println(w.toString());
}
}
3.调试运行
【实验题14】
设计几何图形(Shape)、矩形(Rectangle)、圆形(Circle)、正方形(Square),能够利
用抽象类和多态性计算几何图形的面积和周长,并显示出来。
步骤如下。
1.新建class类Area
2.编写代码
import java.lang.Math; abstract class Shape{
protected double Area;
protected double Cir;
abstract public double getArea();
abstract public double getCir();
}
class Circle extends Shape{
double r;
Circle(double r){
this.r=r;
}
public double getArea(){
double pi=Math.PI;
return r*r*pi;
}
public double getCir(){
double pi=Math.PI;
return 2*pi*r;
}
}
class Rectangle extends Shape{
double a,b;
Rectangle(double a,double b){
this.a=a;
this.b=b;
}
public double getArea(){
return a*b;
}
public double getCir(){
return 2*(a+b);
}
}
class Square extends Rectangle{
Square(double a,double b){
super(a,b);
this.a=a;
this.b=b;
a=b;
}
public double getArea(){
return Math.pow(a,2);
}
public double getCir(){
return 4*a;
}
}
public class Area {
public static void main(String[] args) {
Circle c=new Circle(5.1);
Rectangle re=new Rectangle(5,5.2);
Square s=new Square(5,5);
System.out.println("圆形的面积是:"+c.getArea()+",周长是:"+c.getCir());
System.out.println("长方形的面积是:"+re.getArea()+",周长是:"+re.getCir());
System.out.println("正方形的面积是:"+s.getArea()+",周长是:"+s.getCir());
}
}
3.调试运行
【实验题15】
编写一个复数类Complex。该类有属性realpart和imaginpart分别表示实部和虚部。该类还有修改设置(set)和读取(get)属性realpart和imaginpart的方法。编写一个抽象类Compute。该类有属性a和b,它们的数据类型为Complex,代表参加运算的2个复数。该类还提供有一个子类进行计算的抽象方法abstract void solve()。编写一个ComplexAdd类,它继承自抽象类Compute。该类有继承自父类的属性Complex a,b及方法void solve()计算两个复数相加并输出结果。编写一个ComplexSub类,它继承自抽象类Compute。该类有继承自父类的属性Complex a,b及方法void solve()计算两个复数相减并输出结果。编写一个测试类TestComplex,其包含main()方法。在中定义两个复数,实现两个复数的加减运算。
步骤如下:
1.新建class类Complex_Calculate
2.编写代码
class Complex{
double realpart;//实部
double imaginpart;//虚部
public void setComplex(double r,double i){
this.realpart=Math.round(r);
this.imaginpart=Math.round(i);
}
public String getComplex(){
return realpart+"+"+imaginpart+"i";
}
}
abstract class Computer{
protected Complex a,b;
abstract void solve();
}
class ComplexAdd extends Computer{
Complex sum=new Complex();
ComplexAdd(Complex a,Complex b){
this.a=a;
this.b=b;
}
void solve(){
sum.realpart= a.realpart+b.realpart;
sum.imaginpart=a.imaginpart+b.imaginpart;
System.out.println(a.getComplex()+"+"+b.getComplex()+"="+sum.getComplex());
};
}
class ComplexSub extends Computer{
Complex sum=new Complex();
ComplexSub(Complex a,Complex b){
this.a=a;
this.b=b;
}
void solve(){
sum.realpart= a.realpart-b.realpart;
sum.imaginpart=a.imaginpart-b.imaginpart;
System.out.println(a.getComplex()+"-"+b.getComplex()+"="+sum.getComplex());
};
}
public class Complex_Calculate {
public static void main(String[] args) {
try{
Complex sp_a=new Complex();
sp_a.setComplex(2.0,3.2);
Complex sp_b=new Complex();
sp_b.setComplex(1.1,2.3);
ComplexAdd ca=new ComplexAdd(sp_a,sp_b);
ComplexSub cs=new ComplexSub(sp_a,sp_b);
ca.solve();
cs.solve();
}
catch(Exception e)
{
System.out.print(e.toString());
}
}
}
3.调试运行
【实验题16】
在Eclipse中创建JAVA项目,项目名为“实验八”+“学号”+“姓名”,如姓名“张三”,学号“061408199”,则项目名为“实验八061408199张三”。在该项目下创建2个包,包名分别为“lx1”、 “lx2”,分别用于存放以下2个题目的相关程序。
步骤如下。
1.新建project项目:实验八081211226亢凯航
2.在项目里新建包lx1和lx2
【实验题17】
设计几何图形(Shape)、矩形(Rectangle)、圆形(Circle)、正方形(Square),能够利用接口和多态性计算几何图形的面积和周长,并显示出来。
步骤如下:
1.在lx1下新建class类SArea
2.编写代码
import java.lang.Math; interface Shape{
double getArea();
double getCir();
}
class Circle implements Shape{
double r;
Circle(double r){
this.r=r;
}
public double getArea(){
double pi=Math.PI;
return r*r*pi;
}
public double getCir(){
double pi=Math.PI;
return 2*pi*r;
}
}
class Rectangle implements Shape{
double a,b;
Rectangle(double a,double b){
this.a=a;
this.b=b;
}
public double getArea(){
return a*b;
}
public double getCir(){
return 2*(a+b);
}
}
class Square extends Rectangle implements Shape{
Square(double a,double b){
super(a,b);
this.a=a;
this.b=b;
a=b;
}
public double getArea(){
return Math.pow(a,2);
}
public double getCir(){
return 4*a;
}
}
public class Area {
public static void main(String[] args) {
Circle c=new Circle(5.1);
Rectangle re=new Rectangle(5,5.2);
Square s=new Square(5,5);
System.out.println("圆形的面积是:"+c.getArea()+",周长是:"+c.getCir());
System.out.println("长方形的面积是:"+re.getArea()+",周长是:"+re.getCir());
System.out.println("正方形的面积是:"+s.getArea()+",周长是:"+s.getCir());
}
}
3.调试运行
【实验题18】
编写接口及实现类。树(Tree)有树根(Root)、树干(Bolo)、树枝(Branch)、叶子(Leaf),柳树(Osier)也有树根、树干、树枝、叶子,但没有花(Flower)。并编写测试类进行测试。
步骤如下:
1.在lx2下新建class类Trea_Test
2.编写代码
package lx2;
public class Trea_Test {
public static void main(String[] args) {
Osier os=new Osier();
os.realize();
}
}
abstract class tree{
String tree_root;
String tree_bolo;
String tree_branch;
String tree_leaf;
String tree_flower;
abstract void realize();
}
interface root{
String root_realize();
}
interface bolo{
String bolo_realize();
}
interface branch{
String branch_realize();
}
interface leaf{
String leaf_realize();
}
interface flower{
String flower_realize();
}
class Osier extends tree implements root,bolo,branch,leaf,flower{
public Osier(){
this.tree_root="能祛风利湿、消肿止痛,可治疗乳痈、牙痛、中耳炎、黄疸等
疾病,酒煮饮服,其祛风、消肿、止痛作用更佳";
this.tree_bolo="树皮组织厚,纵裂,老龄树干中心多朽腐而中空。枝条细长而
低垂,褐绿色,无毛;冬芽线形,密着于枝条。";
this.tree_branch="柳枝是中医传统的接骨妙药。水煎服,可治疗冠心病、慢性
支气管炎、尿路感染、烧烫伤等,水煎熏洗,对风湿性、类风湿性关节炎有明显疗效。";
this.tree_leaf="柳叶功同柳絮,它含有丰富的鞣质,有清热解毒、利湿消肿之
功。水煎服可治疗上呼吸道感染、支气管炎、肺炎、膀胱炎、腮腺炎、咽喉炎。捣烂外敷,
可治疗足跟疼痛。";
this.tree_flower="无花";
}
void realize(){
System.out.println("柳树:");
System.out.println(root_realize());
System.out.println(bolo_realize());
System.out.println(branch_realize());
System.out.println(leaf_realize());
System.out.println(flower_realize());
}
public String root_realize(){
return "树根:"+tree_root+"\n";
}
public String bolo_realize(){
return "树干:"+tree_bolo+"\n";
}
public String branch_realize(){
return "树枝:"+tree_branch+"\n";
}
public String leaf_realize(){
return "树叶:"+tree_leaf+"\n";
}
public String flower_realize(){
return "花:"+tree_flower+"\n";
}
}
3.调试运行
【实验题19】
编写程序,能够产生、捕获和处理NullPointerException异常和ClassCastException 异常。
步骤如下。
1.新建class类NullPE_ClassCE
2.编写代码
public class NullPE_ClassCE {
public static void main(String[] args) {
try{
Children c=new Children();
c.getFirstName();
}
catch(NullPointerException npe){
System.out.println("孩子没有找到父亲,不知道父亲姓什么,也不知道自己姓
什么");
}
finally{
Father f=new Father();
f.getFirstName();
}
try{
Father f=new Father();
f=(Children)f;
f.getFirstName();
}
catch(ClassCastException cce){
System.out.println("孩子可以跟父亲姓,父亲不能跟孩子姓");
}
}
}
class FirstName{
String firstName="张";
}
class Father{
FirstName fn=new FirstName();
String firstName;
public Father(){
firstName=this.fn.firstName;
}
void getFirstName(){
fn.firstName=firstName;
System.out.println("父亲姓:"+fn.firstName);
}
}
class Children extends Father{
FirstName fn_c;
String firstName;
public Children(){
firstName=this.fn.firstName;
}
void getFirstName(){
fn_c.firstName=firstName;
System.out.println("孩子姓:"+fn.firstName);
}
}
3.调试运行
【实验题20】
编写程序,能够产生、捕获和处理ArithmeticException异常和IndexOutOfBoundsException异常。
步骤如下:
1.新建class类ArithmeticE_IndexOOBE
2.编写代码
public class ArithmeticE_IndexOOBE {
public static void main(String[] args) {
int[] a={2,4};
try{
System.out.println(a[0]/2);
System.out.println(a[1]/2);
System.out.println(a[2]/2);
}
catch(IndexOutOfBoundsException ioobe){
System.out.println(ioobe.getMessage());
}
System.out.println();
try{
System.out.println(a[0]/0);
System.out.println(a[1]/0);
System.out.println(a[2]/0);
}
catch(ArithmeticException ae){
System.out.println("0不能做除数");
}
}
}
3.调试运行
【实验题21】
给类的属性身份证号码id设置值,当给定的值长度为18时,赋值给id,当值长度不为18时,抛出IllegalArgumentException异常,然后捕获和处理异常。请编写程序。
步骤如下:
1.新建class类ArithmeticE_IndexOOBE
2.编写代码
import javax.swing.JOptionPane; class Judge{
public void judge(String str)throws IllegalArgumentException{
boolean bl=true;
int a[]=new int[str.length()];
if(a.length!=18)
bl=false;
if(bl){
JOptionPane.showMessageDialog(null,"您的身份证号为:"+str,"输入正确",JOptionPane.PLAIN_MESSAGE);
}
else{
throw new IllegalArgumentException();
}
}
}
public class IllegalAE {
public static void main(String[] args) {
Judge j=new Judge();
String num=JOptionPane.showInputDialog("请输入身份证号:");
try{
j.judge(num);
}
catch(IllegalArgumentException me){
JOptionPane.showMessageDialog(null,me.toString(),"输入错误",JOptionPane.PLAIN_MESSAGE);
}
}
}
【实验题22】
编写Application程序实现如下功能:在窗口中显示字符串abc,字体要求为Symbol字体,字型为斜体,大小为32,颜色要求为红色。
步骤如下。
1.新建class类Application
2.编写代码
import javax.swing.*;
import java.awt.*;
public class Application {
public static void main(String[] args) {
JFrame jf=new JFrame();
JLabel jl=new JLabel("abc");
JPanel jp=new JPanel();
jl.setFont(new Font("Serief",Font.ITALIC,32));
jl.setForeground(Color.red);
jp.add(jl);
jf.setSize(300,300);
Container cp=jf.getContentPane();
cp.add(jp);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.show();
}
}
3.调试运行
【实验题23】
利用Java Swing技术设计一个图形用户登陆界面。
步骤如下:
1.新建class类login
2.编写代码
import javax.swing.*;
import java.awt.*;
public class login{
public static void main(String[] args) {
JPasswordTextFieldFrame f=new JPasswordTextFieldFrame();
f.setResizable(false);
f.setSize(300, 180);
f.setTitle("登陆界面");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class JPasswordTextFieldFrame extends JFrame{
public JPasswordTextFieldFrame(){
JPanel p = new JPanel();
JPanel p1 = new JPanel();
p.setBackground(Color.white);
p1.setBackground(Color.white);
JLabel labUser = new JLabel(" 用 户 ");
JTextField txtUser = new JTextField(10);
JLabel labPwd = new JLabel(" 密 码 ");
JPasswordField txtPwd = new JPasswordField(10);
p.setLayout(null);
labUser.setBounds(40,40,60,20);
txtUser.setBounds(100,40,120,20);
labPwd.setBounds(40,70,60,20);
txtPwd.setBounds(100,70,120,20);
p.add(labUser);
p.add(txtUser);
p.add(labPwd);
p.add(txtPwd);
JButton btnLogin = new JButton("登 录");
JButton btnCancel = new JButton("取 消");
p1.add(btnLogin);
p1.add(btnCancel);
this.getContentPane().add(p1,BorderLayout.SOUTH);
this.getContentPane().add(p,BorderLayout.CENTER);
}
}
3.调试运行
【实验题24】
利用Java Swing技术设计一个类似记事本的窗口界面程序。 步骤如下:
1.新建class类Text_box
2.编写代码
import java.awt.*;
import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.JPanel; public class Text_box{
public static void main(String[] args) {
JPanel p=new JPanel();
JFrame f=new JFrame();
f.setTitle("记事本");
f.setSize(400,300);
Container contentPane=f.getContentPane();
contentPane.add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.show();
MenuBar bar=new MenuBar();
f.setMenuBar(bar);
Menu fileMenu=new Menu("文件(F)");
Menu editMenu=new Menu("编辑(E)");
Menu formatMenu=new Menu("格式(O)");
Menu helpMenu=new Menu("帮助(H)");
Menu viewMenu=new Menu("查看(V)");
bar.add(fileMenu);
bar.add(formatMenu);
bar.add(editMenu);
bar.add(viewMenu);
bar.add(helpMenu);
MenuItem newItem=new MenuItem("新建(N)");
fileMenu.add(newItem);
MenuItem openItem=new MenuItem("打开(O)");
fileMenu.add(openItem);
MenuItem saveItem=new MenuItem("保存(S)");
fileMenu.add(saveItem);
MenuItem saveASItem=new MenuItem("另保存(A)");
fileMenu.add(saveASItem);
fileMenu.addSeparator();
MenuItem exitItem=new MenuItem("推出(E)");
fileMenu.add(exitItem);
CheckboxMenuItem newlineItem=new CheckboxMenuItem("自动换行(W)",true);
formatMenu.add(newlineItem);
JTextArea text=new JTextArea(60,30);
text.setLineWrap(true);
p.add(text);
f.add(text);
}
}
【实验题25】
利用Java Swing技术设计一个能够完成加、减、乘、除和取余运算功能的的图形用户界面应用程序。
步骤如下。
1.新建class类easy_count
2.编写代码
import java.awt.*;
import javax.swing.*;
public class easy_count {
public static void main(String[] args) {
JFrame f=new JFrame();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
f.setSize(300,190);
f.setTitle("简单计算器");
Container contentPane=f.getContentPane();
contentPane.add(p1,BorderLayout.NORTH);
contentPane.add(p2,BorderLayout.SOUTH);
JTextField t=new JTextField(20);
JButton btn_c=new JButton("C");
p1.add(t);
p1.add(btn_c);
JButton []btn=new JButton[16];
btn[0]=new JButton("1");
btn[1]=new JButton("2");
btn[2]=new JButton("3");
btn[3]=new JButton("+");
btn[4]=new JButton("4");
btn[5]=new JButton("5");
btn[6]=new JButton("6");
btn[7]=new JButton("-");
btn[8]=new JButton("7");
btn[9]=new JButton("8");
btn[10]=new JButton("9");
btn[11]=new JButton("*");
btn[12]=new JButton(".");
btn[13]=new JButton("0");
btn[14]=new JButton("%");
btn[15]=new JButton("/");
GridLayout gl=new GridLayout(4,4);
p2.setLayout(gl);
for(int i=0;i
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
个人所得税征收方法,可以得到计算个人所得税的算法。令tax是应交所得税,y=x-800,将上面征收方法进行简化。选择使用if条件语句完成程序的编写,也可以尝试使用switch分支语句实现程序的编写。
实验三 Java语言基础知识(2)
一、实验目的
1、掌握循环流程控制结构:while、do-while、和for循环语句;
2、掌握Java中数组的声明、创建、初始化和使用;
3、理解数组的复制并体会二分查找的基本算法思想。
二、实验内容
1、百鸡问题,公鸡5元/只,母鸡3元/只,小鸡3只/元,问100元买100只鸡,公鸡母鸡小鸡各几何,
2、请输入并运行下面的程序,写出程序的运行结果。
public class ArrayCopy {
public static void main(String[] args) {
int[] a = {1,2,3};
int[] b = a;
b[1]=5;
System.out.println("a[1]= "+a[1]+ ",b[1]= "+b[1]);
}
}
3、随机产生一个包含20个0,99整型元素的数组,并用二分查找法查找元素x,x由键盘输入。
三、简要提示
二分查找的基本思路是:先将整个数组作为查找区间,用给定的值与查找区间的中间元素的值进行比较,若相等,则查找成功;若不等,则缩小范围,判断该值落在区间的前一部分还是后一部分,再将其所在的部分作为新的查找区间,继续上述过程,一直找到该值或区间大小小于0,表明查找不成功为止。
实验四 类与对象(1)
一、实验目的
1、掌握类的定义;
2、掌握创建类的对象;
3、掌握使用对象的步骤;
4、掌握类的方法定义和使用。
二、实验内容
1、编写一个音乐类,属性包括音乐名称、音乐类型,其方法实现音乐信息的显示。并编写测试类。
2、编写一个手机类,属性包括手机品牌、手机型号,其方法实现手机信息的显示。并编写测试类。
3、编写一个程序,实现设置上月电表读数、设置本月电表读数、显示上月电表读数、显示本月电表读数、 计算本月用电数、显示本月用电数、计算本月用电费用、显示本月用电费用功能。并编写测试类。
三、简要提示
1、类的编写三个步骤:? 定义类名;? 编写类的属性;? 编写类的方法。类名、属性名、方法名命名按照相应的要求。类的框架结构不能写错。
2、在设计类的方法时,方法尽可能按照单一功能来设计,让类的方法实现某个特定的功能。在方法之间调用时,调用方不需要知道被调用的方法是如何实现的,只要知道实现此功能的类和它的方法名,就可以直接调用了。
设置上月电表、本月电表读数,通过setRecord()方法实现;显示上月电表读数、本月电表读数,通过showRecord();计算本月用电费用,通过calcUsedFee()方法实现。
实验五 类与对象(2)
一、实验目的
1、掌握封装的思想和实现;
2、掌握构造方法的创建与使用;
3、掌握方法重载的使用。
二、实验内容
1、通过封装编写Book类。要求:类具有属性书名、书号、主编、出版社、出版时间、页数、价格,其中页数不能少于200页,否则输出错误信息,并强制赋默认值200;为各属性设置赋值和取值方法;具有方法detail(),用来在控制台输出每本书的信息。
编写BookTest测试类。为Book对象的属性赋予初始值,然后调用Book对象的detail
方法,看看输出是否正确。
2、给Book类增加构造方法,同时对测试类也做相应的修改。
三、简要提示
1、考虑将类的属性设为private,再设属性的getter()和setter()方法。应该区分在同一个类和不同类中对私有属性的访问方式不同。
2、考虑构造方法的方法重载,一个是无参构造方法,一个是带参构造方法。
实验六 类与对象(3)
一、实验目的
1、掌握继承的概念和实现;
2、掌握多态的概念和实现。
二、实验内容
1、实现一个名为Person的类和它的两个子类Student和Employee。Employee有子类Faculty和Staff。Person中的人有姓名、地址和电话号码。 Student中的学生有班级状态(一、二、三、四年级)。将这些状态定义为常量。 Employee中的雇员有办公室、工资。Faculty中的教员有级别。Staff中的职员有职务称号。覆盖每个类中的toString方法,显示类名和人名。
2、编写动物世界的继承关系代码。动物(Animal)包括山羊(Goat)和狼(Wolf),他们吃(eat)的行为不同,山羊吃草,狼吃肉,但走路(walk)的行为是一致的。通过继承实现以上需求,并编写AnimalTest测试类进行测试。
三、简要提示
山羊类和狼类具有共同的吃、走路行为,应该抽象出来,放在动物类中。但山羊吃草,狼吃肉,具体吃的行为各不相同,所以,在山羊类和狼类中要重写吃行为。
实验七 接口、抽象类与包(1)
一、实验目的
1、掌握Java抽象方法的声明;
2、掌握Java抽象类的定义与使用。
二、实验内容
1、设计几何图形(Shape)、矩形(Rectangle)、圆形(Circle)、正方形(Square),能够利用抽象类和多态性计算几何图形的面积和周长,并显示出来。
2、编写一个复数类Complex。该类有属性realpart和imaginpart分别表示实部和虚部。该类还有修改设置(set)和读取(get)属性realpart和imaginpart的方法。编写一个抽象类Compute。该类有属性a和b,它们的数据类型为Complex,代表参加运算的2个复数。该类还提供有一个子类进行计算的抽象方法abstract void solve()。编写一个ComplexAdd类,它继承自抽象类Compute。该类有继承自父类的属性Complex a,b及方法void solve()计算两个复数相加并输出结果。编写一个ComplexSub类,它继承自抽象类Compute。该类有继承自父类的属性Complex a,b及方法void solve()计算两个复数相减并输出结果。编写一个测试类TestComplex,其包含main()方法。在中定义两个复数,实现两个复数的加减运算。
实验八 接口、抽象类与包(2)
一、实验目的
1、掌握Java接口的定义、实现与使用;
2、掌握Java抽象类与接口的异同;
3、掌握Java接口与多态的关系;
4、掌握面向接口编程的思想;
5、掌握接口中常量的使用;
6、掌握定义包和导入包。
二、实验内容
1、在Eclipse中创建JAVA项目,项目名为“实验八”+“学号”+“姓名”,如姓名“张三”,学号“061408199”,则项目名为“实验八061408199张三”。在该项目下创建2个包,包名分别为“lx1”、 “lx2”,分别用于存放以下2个题目的相关程序。
2、设计几何图形(Shape)、矩形(Rectangle)、圆形(Circle)、正方形(Square),能够利用接口和多态性计算几何图形的面积和周长,并显示出来。
3、编写接口及实现类。树(Tree)有树根(Root)、树干(Bolo)、树枝(Branch)、叶子(Leaf),柳树(Osier)也有树根、树干、树枝、叶子,但没有花(Flower)。并编写测试类进行测试。
三、简要提示
1、几何图形只能是一种图形的抽象,不是一种具体的图形。矩形、圆形、正方形是实际存在的图形。将几何图形设计成接口Shape,具有计算面积和周长的功能。矩形、圆形、正方形设计成类,各自实现几何图形接口Shape的计算面积和周长的功能。在显示功能上,设计一个print(Shape shape)方法,形参为几何图形接口Shape。
2、树根、树干、树枝、叶子及花定义成接口,并提供相应方法描述其功能,树为实现类(可为抽象类),柳树是树的子类,同时是花的实现类。
实验九 异常处理
一、实验目的
1、掌握Java的异常处理机制;
2、掌握运用 try、catch、finally 处理异常;
3、掌握throw抛出异常;
4、掌握throws声明异常;
5、掌握自定义异常。
二、实验内容
1、编写程序,能够产生、捕获和处理NullPointerException异常和ClassCastException 异常。
2、编写程序,能够产生、捕获和处理ArithmeticException异常和IndexOutOfBoundsException异常。
3、给类的属性身份证号码id设置值,当给定的值长度为18时,赋值给id,当值长度不为18时,抛出IllegalArgumentException异常,然后捕获和处理异常。请编写程序。
三、简要提示
1、在产生、捕获和处理异常时,一要学会使用try/catch结构,try语句块中放可能产生
异常的代码,catch语句块放捕获和处理异常的代码。二要掌握异常类之间的继承关系,特别是多重catch结构时,要严格区分异常类的先后顺序。
2、给身份证号码id赋值,定义setId()方法。在方法中抛出异常需要使用throw关键字。在捕获和处理异常时,使用try/catch/finally结构,异常类为IllegalArgumentException。
实验十 GUI编程(1)
一、实验目的
1、掌握使用JFrame构造窗口;
2、掌握使用JPanel构造容器对象;
3、掌握使用基本组件构造GUI界面。
二、实验内容
1、编写Application程序实现如下功能:在窗口中显示字符串abc,字体要求为Symbol字体,字型为斜体,大小为32,颜色要求为红色。
2、利用Java Swing技术设计一个图形用户登陆界面。
3、利用Java Swing技术设计一个类似记事本的窗口界面程序。
实验十一 GUI编程(2)
一、实验目的
1、了解Java布局管理的各种方法;
2、掌握FlowLayout布局管理的使用;
3、掌握BorderLayout布局管理的使用;
4、掌握GridLayout布局管理的使用;
5、掌握CardLayout布局管理的使用;
6、掌握GridBagLayout布局管理的使用;
7、掌握自定义布局管理的使用。
二、实验内容
1、利用Java Swing技术设计一个能够完成加、减、乘、除和取余运算功能的的图形用户界面应用程序。
2、利用Java Swing技术设计一个学生基本信息录入界面。系部信息使用组合框,备注为文本域。
三、简要提示
该程序可用标签来显示提示性文本,用文本框来接收用户输入得两个操作数,用文本框显示运算结果,但该文本框要设置为不可编辑。当单击相应的计算按钮时即可得到运算结果。当单击“重置”按钮时,应将三个文本框中数据置为空,以便重新输入计算。对于除法、取余运算要检测除数为零情况,并给出提示,将三个文本框中数据置为空,重新输入计算。
实验十二 GUI编程(3)
一、实验目的
1、理解Java委托事件处理机制;
2、了解常用的事件类、处理事件的接口及接口中的方法;
3、掌握编写事件处理程序的基本方法;
4、熟练掌握ActionEvent事件的处理;
5、掌握下拉式菜单的设计及菜单事件的处理;
6、掌握弹出菜单的设计及菜单事件的处理;
7、熟练使用Eclipse编写、调试、运行应用程序。
二、实验内容
1、当需要按钮被按下时执行一定的任务,就要向按钮注册动作事件监听器,并为按钮编写动作事件处理代码,即编写实现ActionLisener监听接口的监听器类,并实现actionPerforned方法。设计一个Java GUI应用程序,当点击按钮时,记录点击按钮和点击次数,并显示在窗体中。
2、设计一个带有菜单和工具栏的图形用户界面,点击工具栏图标或菜单命令,使窗口中的文本产生相应的变化。
三、简要提示
根据程序运行结果,可以定义单击按钮类,继承JFrame类,实现ActionLisener监听接口。创建3个JButton按钮对象和1个JLabel标签对象。创建1个JPanel中间容器对象,将4个组件对象加入其中,布局采用默认的流布局方式。定义计数器,记录按钮被单击的次数。
实验十三 GUI编程(4)
一、实验目的
1、理解Java事件处理机制;
2、掌握ItemListener接口的使用;
3、掌握复选框的使用;
4、掌握单选按钮的使用;
5、掌握组合框的使用;
6、掌握MouseEvent事件的处理;
7、了解KeyEvent事件、TextEvent文字事件、WindowEvent窗口事件的处理;
8、熟练使用Eclipse编写、调试、运行应用程序。
二、实验内容
1、综合运用Java选择控件,设计一个简单的字体设置程序,可以进行字体、字形、字号和字体颜色的设置。
2、设计一个带有菜单的图形用户界面,跟踪鼠标的移动,在文本区域实时显示鼠标动作和坐标位置。
三、简要提示
1、根据运行结果,可以定义一个字体设置类实现ActionListener接口和ItemListener接口以进行动作事件处理和选项变化事件处理。使用List构造字形选择列表,使用JComboBox构造字体选择组合框,使用JRadioButton构造字体颜色选择单选按钮,使用JCheckBox构造字体效果选择复选框。使用JLabel构造4个标签分别进行字体、字号、字型、字色的说明,使用JButton构造2个按钮分别进行编辑文本和退出,使用JTextField构造测试文本输入区域。
2、根据运行结果可知,该程序同时使用了菜单和弹出式菜单(快捷菜单),由于菜单子项都是JMenuItem类的,只产生ActionEvent事件,故对菜单子项的事件监听只需实现ActionListener接口。对JTextArea进行了鼠标事件的监听,需要实现MouseListener接口和MouseMotionListener按口。所以MenuMouseEventExample类需要实现这三个接口。在鼠标所产生的各种事件中,通过getX()和getY()方法获得其发生的位置,在JTextArea中显示出
来。该程序有下拉式菜单和弹出式菜单(快捷菜单)两个菜单系统。建立下拉式菜单:含有一个菜单“我的菜单”,“我的菜单”菜单含有“清除文本”和“退出程序”2个普通菜单项;建立弹出式菜单:含有含有“还是清除文本”和“还是退出程序”2个菜单项。创建1个多行文本框,用以显示鼠标移动信息;创建1个按钮,用以弹出快捷菜单。
实验十四 网络编程
一、实训目的
1、掌握创建基于TCP有连接的网络应用程序;
2、掌握创建客户端和服务端套接字的方法;
3、掌握从连接中读取信息和向连接中写入信息的方法;
4、掌握InetAddress对象的创建;
5、掌握DatagramSocket类和DatagramPacket类的使用;
6、掌握数据包的发送与接收。
二、实训内容
1、用Socket实现客户和服务器交互的典型的C/S结构的聊天程序 。
2、编写两个最简单的UDP程序,在一台计算机上由一个程序负责发送数据和另一个程序负责接收数据,接收程序的端口号为10000,发送程序的端口为由系统分配。
三、简要提示
1、首先创建一个服务端serverChat.java应用程序,在该程序中用ServerSocket类来建立服务套接字serverSock,并调用服务套接字serverSock对象的accept()方法接收客户套接字clientsocket的连接请求。 然后创建一个客户端clientChat.java应用程序文件,在该程序中使用Socket类来建立客户端套接字clientsocket,通过该对象与服务套接字serverSock对象建立连接。实现信息的交换。
2、首先,创建一个发送数据的程序文件UdpSend.java, 在该程序中需要使用DatagramPacket类先来创建一个数据包对象,然后调用DatagramSocket对象的send()方法来发送数据包,然后,创建一个接收数据的程序文件UdpRecv.java, 在该程序中需要使用DatagramPacket类先来创建一个数据包对象,用来存放接收到的数据包。
实验十五 I/O操作
一、实训目的
1、了解Java的java.io包及Java的目录管理方法;
2、掌握文件类的常用方法;
3、掌握常用的输入输出类的用法和输入输出类的常用方法;
4、掌握文件的顺序访问方法和随机访问文本的方法。
二、实训内容
1、编写一个程序,用于显示当前目录下的文件和目录信息,类似于DOS中的dir命令。
2、编写一个程序,把几个int型整数写入到一个名字为tom.dat的文件中,然后按相反顺序读出这些数据。
3、编写一个程序,实现写几个Java类型的数据到一个文件,并再读出来。
三、简要提示
1、dos中的dir命令一般会显示子目录的个数和文件的个数、文件的总长度、文件的类型(普通文件还是目录)。根据这个思路,我们会用到文件的exists()方法、ifFile()方法、
isDirectory()方法等。
2、首先定位到文件末尾,然后将数据写入其中。因为是几个int型数据,所以需要采用数组。最后读取的时候采用的仍然是循环,但是是step=-1的递减循环,即可实现按相反顺序读出的效果。
实验十六 多线程
一、实训目的
1、掌握创建和启动线程的方法;
2、掌握线程的状态以及如何对其进行控制;
3、掌握线程同步的方法。
二、实训内容
1、运用Java多线程技术,通过实现Runnable接口来编写一个电子时钟的应用程序RunnableClock,运行程序时会显示系统的当前日期和时间,并且每隔1秒后会自动刷新显示当前日期和时间。
2、编写一个仓库的进货与销售同步控制的线程实例。
三、简要提示
1、首先实现Runnable接口来创建一个类RunnableClock,并重写RunnableClock类中的run方法来实现每隔一秒钟刷新显示系统的的当前日期和当前时间,然后在main()方法中将RunnableClock类实例化为对象r,以对象r为目标对象创建线程对象t。通过调用t.start()来启动线程。
2、本程序需要定义3个类,第一个类为仓库类Stroe,该类的实例对象相当于仓库,在Stroe,类中定义两个成员方法:input()用于进货操作;output()用于出货操作;且要实现这两个成员方法的同步操作,即进货操作与出货操作不能同时修改库存数量。然后定义两个线程类:Sale类,其中的run()方法通过调用Stroe类中的output()方法实现出货操作;Producte类,其中的run()方法通过调用Stroe类中的input()方法实现进货操作。