一、实验目的:
1.掌握类的声明和创建,掌握构造方法的定义和使用。
2.掌握成员变量和方法的定义和调用。
3.掌握对象的创建、实例或类成员变量和方法的引用。
4.掌握包的使用和导入,掌握Import语句的使用。
5.掌握访问权限的作用范围。
1(题目编号1038)、定义Prime类中的静态方法prime。此方法功能判断输入参数是否是素数。如何是素数返回true,否则返回false再main方法中调用prime静态方法,然后根据返回结果进行输出,如果返回true,则输出YES,否则输出NO(提示:。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数)。
import java.util.Scanner;
class Prime{
// Write your own code
public static String prime(int a){
int i;
for(i=2;i<a;i++)
if(a%i==0){
return "false";
}
return "true";
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
// Write your own code
if(n==1){
System.out.println("NO");
return;
}
String s=Prime.prime(n);
if(s.equals("true"))
System.out.println("YES");
else
System.out.println("NO");
}
}
2(题目编号1039)、创建一个类,为该类定义三个构造函数,从键盘输入两个int值,三个double值,两个字符串,分别执行下列操作:
(1)传递两个整数值并找出其中较大的一个值
(2)传递三个double值并求出其乘积
(3)传递两个字符串值并检查其是否相同
(4)在main方法中测试构造函数的调用。
import java.util.*;
class Check {
//write your code here
Check(int a, int b) {
if(a>=b)
System.out.println("Larger value: "+a);
else
System.out.println("Larger value: "+b);
}
Check(double a, double b, double c) {
System.out.println("a*b*c = "+a*b*c);
}
Check(String a,String b){
if(a.equals(b))
System.out.println("Are equal: true");
else
System.out.println("Are equal: false");
}
}
public class Main {
public static void main(String args[]) {
//write your code here
Scanner in=new Scanner(System.in);
int a,b;
double c,d,e;
String f,g;
a=in.nextInt();
b=in.nextInt();
Check check1=new Check(a,b);
c=in.nextDouble();
d=in.nextDouble();
e=in.nextDouble();
Check check2=new Check(c,d,e);
f=in.next();
g=in.next();
Check check3=new Check(f,g);
}
}
3(题目编号1044)、写一个学生类输入和输出学生的姓名,年龄和学号,并测试。输出语句为:System.out.println(“Name:”+stu.name + " Age:" + stu.getAge() + " No:" + stu.no);根据Main类中的代码定义方法。
import java.util.Scanner;
class Student{
Scanner in=new Scanner(System.in);
String name;
int age;
public String getName(){
String name=in.next();
return name;
}
public void setName(String name){
System.out.print(name);
}
public int getAge(){
int age=in.nextInt();
return age;
}
public void setAge(int age){
System.out.print(age);
}
}
public class Main {
public static void main(String[] args) {
Student a=new Student();
a.name=a.getName();
a.age=a.getAge();
System.out.print("该生姓名:");
a.setName(a.name);
System.out.print(",年龄:");
a.setAge(a.age);
}
}
4(题目编号1051)、编写一个Dog类,其中的私有成员包括,name,color,age。请使用get,set方法访问私有变量。Dog类的无参构造方法,name=dog1,color=white,age=1。有参构造方法name,color,age从键盘上输入。请在主类中,创建dog1,用无参构造方法,dog2为有参构造方法。输出语句为:System.out.println(“name=” + d1.getName() + “,color=” +d1.getcolor()+",age="+d1.getAge());
import java.util.Scanner;
class Dog{
private String name,color;
private int age;
public Dog(){
}
public Dog(String name,String color,int age){
this.name=name;
this.color=color;
this.age=age;
}
public String getName(){
return name;
}
public String getcolor(){
return color;
}
public int getAge(){
return age;
}
public void setName(String name){
this.name=name;
}
public void setColor(String color){
this.color=color;
}
public void setAge(int age){
this.age=age;
}
}
public class Main {
public static void main(String[] args) {
//write code here
int age;
String name,color;
Scanner in=new Scanner(System.in);
Dog d1=new Dog("dog1","white",1);
Dog d2=new Dog();
name=in.next();
color=in.next();
age=in.nextInt();
d2.setAge(age);
d2.setColor(color);
d2.setName(name);
System.out.println("name=" + d1.getName() + ",color=" +d1.getcolor()+",age="+d1.getAge());
System.out.println("name=" + d2.getName() + ",color=" +d2.getcolor()+",age="+d2.getAge());
}
}
5(题目编号7201)、定义一个 point类,该类具有两个构造方法。按顺序实现下属操作:(1)定义一个point对象A,用参数(x,y)初始化。(x,y从键盘输入)
(2)定义一个point类的对象B,用A初始化B。
(3)输出B.GetX()。
(4)调用fun1(),对象B作为fun1的实参。
(5)执行 B=fun2()。
(6)输出 B.GetX()。
import java.util.Scanner;
class Point {
private int x;
private int y;
public Point(int xx,int yy) //构造方法
{
this.x=xx;
this.y=yy;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
//write your code
public static void fun1(Point p){
System.out.println(p.getX());
}
public static Point fun2(){
Point A =new Point(1,2);
return A;
}
}
public class Main{
public static void main(String[] args) {
//write your code
Scanner in=new Scanner(System.in);
int x=in.nextInt();
int y=in.nextInt();
Point A=new Point(x,y);
Point B=A;
System.out.println(B.getX());
A.fun1(B);
B=A.fun2();
System.out.println(B.getX());
}
}
6(题目编号7202)、定义并实现一个复数类Complex,要求实现复数的加法和减法。类拥有两个成员变量a和b,分别代表复数的实部和虚部。类有默认构造方法(a和b的默认值为0),也有拷贝构造方法(参数为复数类对象的引用)。另外还应该有一个Print方法打印复数,打印格式为a+bi,若实部虚部都为0,则输出0。两个复数的实部、虚部在main方法中由键盘输入
import java.util.*;
public class Main{
public static void main(String[] args) {
int m,n; //第一个数的实部和虚部
int p,q; //第二个数的实部和虚部
Scanner scanner =new Scanner(System.in);
m=Integer.parseInt(scanner.next());
n=Integer.parseInt(scanner.next());
p=Integer.parseInt(scanner.next());
q=Integer.parseInt(scanner.next());
Complex t =new Complex(m,n);
Complex s =new Complex(t);
Complex r=new Complex(p,q);
(s.Add(r)).Print();
(t.Sub(r)).Print();
}
}
// Write your own code
class Complex {
int a, b;
public Complex(int a, int b) {
this.a = a;
this.b = b;
}
public Complex(Complex t) {
this.a = t.a;
this.b = t.b;
}
public Complex Add(Complex r) {
this.a = this.a + r.a;
this.b = this.b + r.b;
return this;
}
public Complex Sub(Complex r) {
this.a = this.a - r.a;
this.b = this.b - r.b;
return this;
}
public void Print() {
if (this.a == 0 && this.b == 0)
System.out.println("0");
else
System.out.println(this.a + " " + this.b + "i");
}
}
7(题目编号1342)、定义一个计算类,计算长方体的面积和体积,要求用静态方法完成。
package com.test5.io;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x, y, z;
x = sc.nextInt();
y = sc.nextInt();
z = sc.nextInt();
Cube.volume(x, y, z);
}
}
class Cube {
public static void volume(int x, int y, int z) {
System.out.println("面积=" + (x * y + x * z + y * z) + " 体积=" + x * y * z);
}
}
8(题目编号7203)、编写一个类ObjectCounter,用来统计程序中目前存在多少个该类的对象。测试代码已经在主函数中写出。注意:
(1) 构造方法生成一个类对象
(2) 静态成员的定义与调用
import java.util.*;
class ObjectCounter {
//write your code here
private static int i=0;
ObjectCounter(){
i++;
}
public static int getCount(){
return i;
}
}
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for(int i=0;i<n;i++){
ObjectCounter str1 = new ObjectCounter();
}
System.out.println(ObjectCounter.getCount());
}
}