Java中的电梯模拟器帮助
我很难用Java完成一个基本的电梯模拟器。到目前为止,我有一个选项,让用户输入他们是想选择楼层、拉火警还是退出模拟。当他们选择“选择楼层”时,他们可以拾取1到100之间的任何楼层,13除外。我不知道该怎么做的是让模拟跟踪他们当前的楼层,这样他们就可以下降了。这就是我到目前为止所做的:Java中的电梯模拟器帮助,java,simulation,Java,Simulation,我很难用Java完成一个基本的电梯模拟器。到目前为止,我有一个选项,让用户输入他们是想选择楼层、拉火警还是退出模拟。当他们选择“选择楼层”时,他们可以拾取1到100之间的任何楼层,13除外。我不知道该怎么做的是让模拟跟踪他们当前的楼层,这样他们就可以下降了。这就是我到目前为止所做的: public class Elevator { public Elevator() {} public void selectFloor() { Scanner scnr = n
public class Elevator {
public Elevator() {}
public void selectFloor() {
Scanner scnr = new Scanner(System.in);
int newFloor;
System.out.println("Enter the floor you'd like to go to ==> ");
newFloor = scnr.nextInt();
if (newFloor > 100 || newFloor < 0 || newFloor == 13) {
System.out.println("Invalid selection");
}
else if (newFloor <= 100 && newFloor > 0 && newFloor != 13) {
for (int i = 1; i <= newFloor; i++)
System.out.println("..." + i);
System.out.println("Ding!");
}
}
public void fireAlarm() {
System.out.println("Danger, you must exit the building now!");
}
}
公共级电梯{
公共电梯(){}
公众席(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您想去的楼层==>”;
newFloor=scnr.nextInt();
如果(新地板>100 | |新地板<0 | |新地板==13){
System.out.println(“无效选择”);
}
else if(newFloor 0&&newFloor!=13){
对于(int i=1;i通过在类开始标记(位于电梯类构造函数上方)的正下方添加一个private int floor;
,为您的电梯对象提供一个类变量。该变量将直接绑定到包含它的电梯对象
这样,当您使用new lifter
创建电梯时,您还将始终有一个int值可用于固定地板。若要访问此值,请构建一个getter和setter方法。它们应如下所示:
public void setFloor(int floor) {
this.floor = floor;
}
public int getFloor() {
return floor;
}
然后,您可以调用这两种方法来设置楼层编号并获取楼层编号。要保持跟踪,在selectFloor
方法中,您需要使用setFloor并在做出有效选择后将楼层编号传递给它。然后,您可以使用getFloor来确定楼层编号是向上还是向下
创建新电梯对象时,让构造函数将floor
变量设置为1。只需将构造函数更改为如下所示:
public Elevator() {
setFloor(1);
}
希望这有帮助!如果您对这些东西的工作方式有任何疑问,请告诉我,我将尝试提供更多详细信息。电梯
应该有一个currentFloor
字段,如下所示:
private int currentFloor;
然后,在selectFloor
中,您需要找到方向。此外,在selectFloor
中,如果不需要,则需要使用else
public class Elevator {
private int currentFloor;
public Elevator() {
currentFloor = 0;
}
public void selectFloor() {
Scanner scnr = new Scanner(System.in);
int newFloor;
System.out.println("Enter the floor you'd like to go to ==> ");
newFloor = scnr.nextInt();
if (newFloor > 100 || newFloor < 0 || newFloor == 13) {
System.out.println("Invalid selection");
}
else { // The if was not necessary
int direction = 0;
if(currentFloor < newFloor){
direction = 1; // going up;
} else if (currentFloor > newFloor) {
direction = -1; //going down;
} else {
direction = 0; //going nowhere;
}
for (; currentFloor != newFloor; currentFloor += newFloor)
System.out.println("..." + i);
System.out.println("Ding!");
}
}
public void fireAlarm() {
System.out.println("Danger, you must exit the building now!");
}
}
公共级电梯{
私人楼层;
公共电梯(){
currentFloor=0;
}
公众席(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您想去的楼层==>”;
newFloor=scnr.nextInt();
如果(新地板>100 | |新地板<0 | |新地板==13){
System.out.println(“无效选择”);
}
否则{//if是不必要的
int方向=0;
如果(当前楼层<新楼层){
方向=1;//向上;
}否则如果(当前楼层>新建楼层){
方向=-1;//向下;
}否则{
方向=0;//无处可去;
}
对于(;currentFloor!=newFloor;currentFloor+=newFloor)
System.out.println(“…”+i);
System.out.println(“叮!”);
}
}
公共火灾警报(){
System.out.println(“危险,你必须马上离开大楼!”);
}
}
注意:我还没有对此进行测试,所以我不能确定它是否正确。我刚刚插入了一个名为backToBasement()的新方法,并将其绑定到您的selectFloor()方法中。希望它有帮助
public void selectFloor() {
Scanner scnr = new Scanner(System.in);
int newFloor;
System.out.println("Enter the floor you'd like to go to ==> ");
newFloor = scnr.nextInt();
if (newFloor > 100 || newFloor < 0 || newFloor == 13) {
System.out.println("Invalid selection");
}
else if (newFloor <= 100 && newFloor > 0 && newFloor != 13) {
for (int i = 1; i <= newFloor; i++)
System.out.println("..." + i);
System.out.println("Ding!");
backToBasement(newFloor);
}
}
public void fireAlarm() {
System.out.println("Danger, you must exit the building now!");
}
public void backToBasement(int newFloor){
for (int i=newFloor; i>0;i--){
System.out.println("..." + i);
}
System.out.println("Ding!... Back to Ground Level");
}
public void selectFloor(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您想去的楼层==>”;
newFloor=scnr.nextInt();
如果(新地板>100 | |新地板<0 | |新地板==13){
System.out.println(“无效选择”);
}
else if(newFloor 0&&newFloor!=13){
对于(int i=1;i 0;i--){
System.out.println(“…”+i);
}
System.out.println(“叮!…返回地面”);
}
您不能添加一个实例变量来存储currentFloor吗?谢谢大家。我已经很好地解决了这个问题!尝试解决多部电梯的问题,任何一部电梯都可以先上!我不完全确定如何在我的selectFloor方法中实现getFloor和setFloor。到目前为止,我使用了setFloor(floor)在floor=scnr.nextInt()之后,但我不确定这是否有效