io如何在java程序中解决两层电梯的场景
以下是需求场景——这是黑客入侵问题
一个街区有7层,只有2部电梯。最初,电梯A位于底层,电梯B位于顶层。每当有人从N层呼叫电梯时,离该层最近的电梯就会来接他。如果两部电梯与第N层的距离相等,则较低楼层的电梯将向上
我正试图为上述场景编写java代码,但未能获得预期的结果
我已经初始化了两个电梯位置的整数和楼层呼叫的整数。我使用if条件与操作员一起查找位置,并打印出将到达用户的电梯。问题陈述的正确编程程序是什么。请帮忙。蒂娅
import java.util.*;
class TestClass {
public static void main(String args[] ) throws Exception {
Scanner s = new Scanner(System.in);
int count=s.nextInt();
int[] fc=new int[count];
int posA=0;
int posB=7;
for(int i=0;i<count;i++){
fc[i]=s.nextInt();
if((fc[i]-posA)<(posB-fc[i])){
posA=fc[i];
System.out.println("A");
}
if((fc[i]-posA)==(posB-fc[i])){
if(posA<posB){
posA=fc[i];
System.out.println("A");
}
else if(posA>posB){
posB=fc[i];
System.out.println("B");
}
}
else{
posB=fc[i];
System.out.println("B");
}
}
}
}
我的输入、电流和电流;预期产出如下所述
输入-10 0 6 4 1 1 2 4 0 3 1
电流输出-A B B B A B B B A B
预期输出-A B B A A A B A B A
# 1 楼答案
你刚刚错过了,距离应该总是一个正整数
计算距离时使用
Math.abs()
另外,在第一个
if
块之后缺少一个else
。 加上if(posA>posB)
太多了,因为它过滤掉了posA==posB
我的代码:
输出:
A B B A A A B A B A
(顺便说一句:很好的家庭作业…)