类与对象实验报告

标签: java小练习题

1、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。
1)面向过程

import java.util.*;

//实现复数的双目运算
//一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。
//面向过程编程
public class complex1{
	static int r1,r2; //定义实数部分
	static int v1,v2;//定义虚数部分
	static int sr,sv;//定义运算后的实部和虚部
	static void add() {
		//定义复数运算加法方法
		sr=r1+r2;
		sv=v1+v2;
	}
	
	static void sub() {
		//定义复数运算减法方法
		sr=r1-r2;
		sv=v1-v2;
	}
	 static void output(int sr,int sv) {
		 //定义输出方法
		System.out.printf("The result is %d+%di",sr,sv);
		
	}
	 public static void main(String args[]) {
		 Scanner reader=new Scanner(System.in);
		 System.out.println("please input the real of first complex:");
		 r1=reader.nextInt();
		 System.out.println("please input the image of first complex:");
		 v1=reader.nextInt();
		 System.out.println("please input the real of second complex:");
		 r2=reader.nextInt();
		 System.out.println("please input the image of second complex:");
		 v2=reader.nextInt();
		 int i; //定义运算方向变量
		 System.out.printf("Which operation do you want to perform\n1.add\t2.sub\n");
		 do {
			 i=reader.nextInt();
			 if(i==1)
				 add();
			 else if (i==2) 
				 sub();
			 else
				 System.out.println("Choose the wrong, please choose again.");
			 
		 }while(i!=1&&i!=2);
		 output(sr,sv);
		 reader.close(); //关闭数据流
		
	 }
}

在这里插入图片描述
2)面向对象

import java.util.Scanner;
//一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。
//面向对象编程
public class Complex {
    double real;//实部和虚部
    double image;
    Complex(){  //编写无参构造方法
        this.real=0.0;
        this.image=0.0;
    }
    Complex(double real,double image){ //编写有参构造方法,给实部和虚部赋值
        this.real=real;
        this.image=image;
    }
    void add(Complex c1, Complex c2){ //编写加法参数为对象类型
        this.real=c1.real+c2.real;
        this.image=c1.image+c2.image;
        System.out.println(this.real+"+"+this.image+"i");
    }
    public void sub(Complex c1,Complex c2){
        this.real=c1.real-c2.real;
        this.image=c1.image-c2.image;
        System.out.println(this.real+"+"+this.image+"i");
    }

    public static void main(String[] args){
        System.out.println("请输入第一个实部和虚部:");
        Scanner a=new Scanner(System.in);
        Complex c1=new Complex(a.nextDouble(),a.nextDouble());//创建对象并给第一个复数赋值
        System.out.println("请第二个输入实部和虚部:");
        Complex c2=new Complex(a.nextDouble(),a.nextDouble());
        Complex c3=new Complex();
        int i; //定义运算方向变量
		System.out.printf("Which operation do you want to perform\n1.add\t2.sub\n");
		do {
			 i=a.nextInt();
			 if(i==1) {
				 System.out.print("两复数之和为:");
			        c3.add(c1,c2);// 也可以c1或c2.add(c1,c2)一样的 这里主要是学习一下这个方法  下同
			 }
				
			 else if (i==2) {
				 System.out.print("两复数之差为:");
			        c3.sub(c1,c2);
			 }
			 else
				 System.out.println("Choose the wrong, please choose again.");
			 
		 }while(i!=1&&i!=2);
       a.close();
       //c.close();
    }
}

在这里插入图片描述
2、用类来描述游戏角色的交手次数、经验值、生命值之间的关系,并断定角色决斗的胜负。
1)、两游戏角色决斗。角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。
2)、给定二个不同的角色,判定交手的胜负关系。
3)、实验报告给出决斗结果和交手次数
4)、实验报告给出所有源代码。

//定义玩家类
class player{
	//下列变量为生命值、经验值、减生命值、加成经验值、奖励生命值、计数
	int HP,EXP,HPC,EXPC,award,count=0;
	//定义战斗结果变量
	boolean fail=false;
	//构造方法
	player(int HP,int EXP,int HPC,int EXPC,int award){
		this.HP=HP;
		this.EXP=EXP;
		this.HPC=HPC;
		this.EXPC=EXPC;
		this.award=award;
	}
	//定义战斗过程方法
	public boolean fight(){
		HP-=HPC; //生命值损耗
		EXP+=EXPC; //经验加成
		if(EXP>=50){ //生命值加成
			HP+=award;
			EXP-=50;
		}
		count++;  //记录战斗次数
		if(HP<=0) //判断战斗结果为负
		fail=true;
		return fail;
	}
}
//定义游戏主类
public class fightgame{
	public static void main(String[] args){
		player p1=new player(1000,0,1,2,1);//创建玩家一 并初始化数据
		player p2=new player(1000,0,2,3,1);//创建玩家二 并初始化数据
		while(!p1.fight()&&!p2.fight()){
			//战斗开始
			p1.fight();
			p2.fight();

		}
		//宣布结果
		if(p1.fail&&!p2.fail)
			System.out.println("p2胜利,p1失败,共战斗"+p1.count+"次");
		else if(!p1.fail&&p2.fail)
			System.out.println("p1胜利,p2失败,共战斗"+p1.count+"次");
		else 
			System.out.println("平局,共战斗"+p1.count+"次");
	}
}


在这里插入图片描述

版权声明:本文为weixin_44659084原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44659084/article/details/105281117