Java第三次作业参考代码

控制杆类

public class Lever {
	protected int lever = 1;

	public Lever()
	{
		lever = 1;
	}

	public Lever(int lever)
	{
		this.lever = lever;
	}

	public int getLever()
	{
		return lever;
	}

	public int leverUp()
	{
		if(lever < 4)
			lever++;
		return lever;
	}

	public int leverDown()
	{
		if(lever > 1)
			lever --;
		return lever;
	}
}

刻度盘类

public class Dial {
	protected int dial = 1;

	public Dial()
	{
		dial = 1;
	}

	public Dial(int lever)
	{
		this.dial = lever;
	}

	public int getDial()
	{
		return dial;
	}

	public int dialUp()
	{
		if(dial < 3)
			dial++;
		return dial;
	}

	public int dialDown()
	{
		if(dial > 1)
			dial --;
		return dial;
	}
}

雨刷类

public class Brush {
	protected int speed = 0;

	public Brush()
	{
		speed = 0;
	}

	public Brush(int speed)
	{
		this.speed = speed;
	}

	public int getSpeed()
	{
		return speed;
	}

	public void setSpeed(int speed)
	{
		this.speed = speed;
	}

}

代理类

public class Agent {
	protected Lever l;
	protected Dial d;
	protected Brush b;

	public Agent()
	{
		l = new Lever();
		d = new Dial();
		b = new Brush();
	}

	public int getLever()
	{
		return l.getLever();
	}

	public int getDial()
	{
		return d.getDial();
	}

	public void doSpeed()
	{
		int speed = 0;
		switch(l.getLever())
		{
		case 1:speed = 0;break;
		case 2:
			switch(d.getDial())
			{
			case 1: speed = 4;break;
			case 2: speed = 6;break;
			case 3: speed = 12;break;
			}
			break;
		case 3: speed = 30;break;
		case 4: speed = 60;break;
		}
		b.setSpeed(speed);
	}

	public void show()
	{
		String slever = "";
		switch(l.getLever())
		{
		case 1: slever = "停止";break;
		case 2: slever = "间歇";break;
		case 3: slever = "低速";break;
		case 4: slever = "高速";break;
		}

		System.out.println("控制杆的档位为:" + slever );
		System.out.println("刻度盘的刻度为:" + d.getDial());
		System.out.println("雨刷的速度为:" + b.getSpeed());
	}
}

测试类

import java.util.Scanner;

public class Brush_Test {
	public static void menu() {
		System.out
				.println("==================Please choose operation============");
		System.out.println("\t==========1:Lever Up===========");
		System.out.println("\t==========2:Lever Down=========");
		System.out.println("\t==========3:Dial Up============");
		System.out.println("\t==========4:Dial Down==========");
		System.out.println("\t==========0:Quit===============");
		System.out
				.println("=====================================================");
		System.out.println("Input the number(0~4):");
	}

	public static void main(String[] args)
	{

			Agent agent = new Agent();
			Scanner input = new Scanner(System.in);
			int choice = 0;

			menu();
		try{ //很多同学问input为什么会报警告,其实input要进行close()操作,参考这段代码,以后会讲
			while(true)
			{
				choice = input.nextInt();
				if(choice == 0)
					break;
				switch(choice)
				{
				case 1:
					if(agent.getLever() >= 4)
					{
						System.out.println("控制杆已经处于高速档位,不能再升档!");
						menu();
						continue;
					}
					else
					{
						agent.l.leverUp();
					}
					break;
				case 2:
					if(agent.getLever() <= 1)
					{
						System.out.println("控制杆已经处于停止档位,不能再降档!");
						menu();
						continue;
					}
					else
					{
						agent.l.leverDown();
					}
					break;
				case 3:
					if(agent.getDial() >= 3)
					{
						System.out.println("刻度盘已经处于最高刻度,不能再升档!");
						menu();
						continue;
					}
					else
					{
						agent.d.dialUp();
					}
					break;
				case 4:
					if(agent.getDial() <= 1)
					{
						System.out.println("刻度盘已经处于最低刻度,不能再降档!");
						menu();
						continue;
					}
					else
					{
						agent.d.dialDown();
					}
					break;
				default:
					System.out.println("请输入数字0~4");
					menu();
					continue;
				} //switch

				agent.doSpeed();
				agent.show();
				menu();
			}  //while

		}finally{
			input.close();
		}
	}
}
时间: 2024-08-10 15:08:13

Java第三次作业参考代码的相关文章

java第三次作业

import java.util.Scanner;public class Sum {public static void main(String[] args) {// TODO Auto-generated method stubint nextValue, sum=0;Scanner sc = new Scanner(System.in);sc.useDelimiter("\s");while(sc.hasNextInt()){nextValue = sc.nextInt();/

java第三次作业:Java与socket实现

//客户端程序1:ChatClient.java<pre name="code" class="java">import java.io.*; import java.net.*; import java.applet.Applet; public class ChatServer { public static void main(String[]args){ try{ ServerSocket server = null; try{ server =

面向对象第四次作业参考代码

第一题:数组 #include <iostream.h> const int MAXSIZE = 20; class List{ public: List() { arr = new int[MAXSIZE]; //Allocation the space length = 0; //the length of current array cout<<"Please input the data into the array:"<<endl; for

面向对象第二次作业参考代码

#include <iostream.h> #include <stdlib.h> #include <time.h> int rollDice(void); void main() { enum Status{CONTINUE,WON,LOST}; int sum,myPoint,num = 1; Status gameStatus; srand(time(NULL)); //init only one time sum = rollDice(); //first r

作业三: 是否需要有代码规范?

需要代码规范.代码规范有很大的重要性. 一.规范的代码可以促进团队合作 一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存在多个人同时开发同一模块的情况,即使是分工十分明晰的,等到要整合代码的时候也有够头疼的了.大多数情况下,并非程序中有复杂的算法或是复杂的逻辑,而是去读别人的代码实在是一件痛苦的事情.统一的风格使得代码可读性大大提高了,人们看到任何一段代码都会觉得异常熟悉.显然的,规范的代码在团队的合作开发中是非常有益而且必要的. 二.规范的代

2018软件工程第三次作业

最大连续子数组和(最大子段和) 一.问题描述 问题描述: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+-+a[j]},1<=i<=j<=n 例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20. 二.题目分析 本

java多线程三之线程协作与通信实例

多线程的难点主要就是多线程通信协作这一块了,前面笔记二中提到了常见的同步方法,这里主要是进行实例学习了,今天总结了一下3个实例: 1.银行存款与提款多线程实现,使用Lock锁和条件Condition.     附加 : 用监视器进行线程间通信 2.生产者消费者实现,使用LinkedList自写缓冲区. 3.多线程之阻塞队列学习,用阻塞队列快速实现生产者消费者模型.    附加:用布尔变量关闭线程        在三种线程同步方法中,我们这里的实例用Lock锁来实现变量同步,因为它比较灵活直观.

Java异常处理机制难点解惑-用代码说话

是否需要看这篇文章? 下面的例子中,如果正常执行返回值多少? 如果出现了ArithmeticException返回值多少? 如果出现非ArithmeticException(如NullPointerException)返回值多少? 如果你了解这个例子说明的问题,并了解例子中三种情况下的执行细节,这篇文章你就不用浪费时间看了. 例子: public int testException_finally(){ int x; try { x = 1; //int y = 1/0; //放开此处,出现Ar

Java EE : 三、图解Session(会话)

目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.Session由来 二.Session机制 三.详细介绍Seesion机制过程 四.补充 五.总结 参考 一.Session由来 HTTP的无状态,也就是说,每次请求都是独立的线程.举个例子吧:购物中,你选择了A商品,加入购物车,这就是A线程.然后在选择B商品就是B线程.可是每次线程独立(对容器而言,A.B成了不同的用户),线程A不知