【发布时间】:2019-05-17 06:55:05
【问题描述】:
以下是需求场景 - 这是一个hackerearth问题。
一个街区有 7 层楼,只有 2 部电梯。最初电梯 A 位于底层,电梯 B 位于顶层。每当有人从第N层呼叫电梯时,离该层最近的电梯就会来接他。如果两台电梯距离第N层等距,则下层电梯上来。
我正在尝试为上述场景编写 java 代码,但无法获得预期的结果
我已经初始化了两个电梯位置的整数和一个用于楼层呼叫的整数。我与操作员一起使用 if 条件来查找位置并打印出哪个电梯将到达用户。什么是问题陈述的正确编程过程。请帮忙。 TIA。
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
【问题讨论】:
-
你的代码调试了吗?
-
首先:您在第一个
if块之后缺少一个else。第二:Scanner很好,但无助于理解问题。尝试提供代码,摆脱它(完全初始化fc)。第三:尝试在您的代码中计算一次距离。有助于理解代码。
标签: java io java.util.scanner data-manipulation