Java程序设计实验报告
实验(训)报告
学号: 姓名:游锟 班级:软工1202
实验时间:2014-3-14 实验地点:A4049 指导老师: 刘艳梅
实验名称 | 实验1 Java语言类的特性 |
实验目的 | 1、熟悉Eclipse集成环境,掌握Java输入输出语句,并完成编程; 2、掌握一维数组元素的访问及使用操作; 3、理解类的构造方法的作用、执行过程、this指针的使用; 4、理解类的方法重载的概念。 |
一、实验题目 1、编写一个java程序,在程序中通过键盘输入常用的数据,包括字符串、整数和浮点数。 import java.util.*; public class InputNum { public static void main(String[] args) { int a=0; float b=0F; double c=0D; String s=""; Scanner reader=new Scanner(System.in); System.out.print("从键盘输入一串字符:"); //[代码1]调用reader的nextLine方法,并把读入的数据赋值给s System.out.println("你输入的字符串是"+s); System.out.print("从键盘输入一个整数:"); //[代码2]调用reader的nextInt方法,并把读入的数据赋值给a System.out.println("你输入的一个整数是"+a); System.out.print("从键盘输入一个单精度浮点数:"); //[代码3]调用reader的nextFloat方法,并把读入的数据赋值给b System.out.println("你输入的一个单精度浮点数是"+b); System.out.print("从键盘输入一个双精度浮点数:"); //[代码4]调用reader的nextDouble方法,并把读入的数据赋值给c System.out.println("你输入的一个双精度浮点数"+c); } } 2、编写一个Java程序,定义一个长度为5的整型数组,要求用户从键盘中为每个元素输入一个整数,然后输出每个数组元素的内容,再输出数组中最大整数值和最小整数值。 import java.util.*; public class LinearB { public static void main(String[] args) { int i,max,min; //[代码1]定义一个整形数组a,含5个元素,并为之分配内存空间 Scanner reader=new Scanner(System.in); //[代码2]提示用户从键盘输入5个整数,并把这些整数存储到对应的数组元素中 max=min=a[0]; for(i=0;i<a.length;i++) { //[代码3]如果a[i]大于max,则把max[i]赋值给max //[代码4]如果a[i]小于min,则把min[i]赋值给min } System.out.println("最大数字是:"+max+"\n最小数字是:"+min); } } 3、编写一个java程序,在程序中定义一个Student类,Student类有三个构造方法,分别对不同的属性进行初始化。 public class Student { String name; int age; public Student() { System.out.println("Student()构造方法被调用"); } //[代码1]定义一个Student类的构造方法,该方法能接收一个字符串参数,在方法体中,把该参数 //赋值给name属性,并且显示“Student(String name)构造方法被调用” //[代码2]定义一个Student类的构造方法,该方法能接收一个字符串参数与一个整数参数,在方法 //体中,把字符串参数赋值给name属性,把整数参数赋值给age属性,并且显示“Student(String //name,int age)构造方法被调用” public static void main(String[] args) { //[代码3]创建Student类的一个对象,不传入参数 //[代码4]创建Student类的一个对象,传入一个参数:”张三“ //[代码5]创建Student类的一个对象,传入两个参数:”张三“,15 } } 4、编写一个java程序,在程序中定义一个Employee类,Employee类有4个构造方法,分别对不同的属性进行初始化,有一个setAge()方法设置age属性值,有一个getAge()方法能返回age属性值。 public class Employee { private String name; private int age; private double salary; public Employee(String newName, int newAge, double newSalary) { //[代码1]要求调用两个参数的构造方法,传入参数newAge和newSalary System.out.println("三个参数的构造方法被调用"); name = newName; } public Employee(int newAge, double newSalary) { //[代码2]要求调用一个参数的构造方法,传入参数newSalary System.out.println("两个参数的构造方法被调用"); age = newAge; } public Employee(double newSalary) { //[代码3]要求调用没有参数的构造方法 System.out.println("一个参数的构造方法被调用"); salary = newSalary; } public Employee() { System.out.println("没有参数的构造方法被调用"); } void setAge(int newAge) { int age = 0; //[代码4]设置age属性的值为newAge } int getAge() { return age; } public static void main(String[] args) { Employee s1 = new Employee("李四", 30, 8000); s1.setAge(31); System.out.println("年龄是" + s1.getAge()); } } 5、编写一个Java程序,在程序中定义一个MyPlus类,MyPlus类有三个plus()方法,分别对不同的参数进行求和。 public class MyPlus { public int plus(int a, int b) { int s; s = a + b; return s; } public int plus(int a, int b, int c) { int s; //[代码1]要求调用两个参数的plus方法,得到a+b+c的和 return s; } public int plus(int a, int b, int c, int d) { int s; //[代码2]要求调用三个参数的plus方法,得到a+b+c+d的和 return s; } public static void main(String[] args) { MyPlus p = new MyPlus(); //[代码3]调用plus()方法求1+2的值并显示 //[代码4]调用plus()方法求1+2+3的值并显示 //[代码5]调用plus()方法求1+2+3+4的值并显示 } } 6、思考与提高题目: 程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。 分析如下源代码,有什么问题?请指明原因,并将代码修改正确。 public class Test_1 { public static void main(String[] args) { int x = 10, y = 10; System.out.println("初始时:x=" + x + ", y=" + y); ff1(x, y); System.out.println("方法调用后:x=" + x + ", y=" + y); } static void ff1(int passX, int passY) { int x,y; x = passX * passX; y = passY * passY; System.out.println("方法调用中:x=" + x + ", y=" + y); } } 二、实验内容及结果 1、答案: 【代码1】Line(); 【代码2】Int(); 【代码3】Float(); 【代码4】Double(); 2、答案: 【代码1】int a[] =new int[5]; 【代码2】System.out.println ("依次输入五个数"); for( i=0;i<5;i++) { a[i]=Int(); System.out.println("输入的第"+i+" 个整数是:java定义一维数组并赋值"+a[i]); } 【代码3】if(a[i]>max) { max=a[i]; } 【代码4】if(a[i]<min) { min=a[i]; } 3、答案: 【代码1】public Student(String name) { this.name=name; System.out.println("Student(String name)构造方法被调用"); } 【代码2】public Student(String name,int age) { this.name=name; this.age=age; System.out.println("Student(String name,int age)构造方法被调用"); 【代码3】Student s1=new Student(); 【代码4】Student s2=new Student("张三"); 【代码5】Student s3=new Student("张三",15); 4、答案: 【代码1】this( newAge,newSalary); 【代码2】this(newSalary); 【代码3】Age(); 【代码4】age=newAge; 5、答案: 【代码1】s=a+b; s=s+c; 【代码2】s=a+b;s=s+c;s=s+d 【代码3】System.out.println("1+2="+p.plus(1,2)); 【代码4】System.out.println("1+2+3="+p.plus(1,2,3)); 【代码5】System.out.println("1+2+3+4="+p.plus(1,2,3,4)); 6、答案: 存在问题:通过类里面方法的调用,不能够改变变量X,Y的值,最后返回的值任然是之前变量的值。 原因:Java中参数的传递分为两种:值传递和地址传递,而对于前者形参接受了实参的值它们传递的是变量的内容而对于变量地址没有改变。 正确方案:(提示:通过创建类后,调用对象的方法在方法调用后修改了成员变量的值。) 修改后的代码为: class test { int x, y; void ff1(int passX, int passY) { x = passX * passX; y = passY * passY; System.out.println("方法调用中:x=" + x + ", y=" + y); } } public class Test_1 { public static void main(String[] args) { test x1 = new test(); int x = 10, y = 10; System.out.println("初始时:x=" + x1.x + ", y=" + x1.y); x1.ff1(x, y); System.out.println("方法调用后:x=" + x1.x + ", y=" + x1.y); } } 三、实验总结(将实验中出现的问题总结及实验心得,不少于100字) 时间过得飞快,我们又开始接触一门新的课——java,说实在很兴奋也很紧张,因为离上学的日子一天天的少去,我们或许真的要靠这个为以后的生活拼搏。接下来的时间就是好好学习。 | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论