如何在java程序中解决两层电梯的场景
下面是需求场景-这是一个黑客入侵问题 一个街区有7层,只有2部电梯。最初,电梯A位于底层,电梯B位于顶层。每当有人从N层呼叫电梯时,离该层最近的电梯就会来接他。如果两部电梯与第N层的距离相等,则较低层的电梯将向上 我正试图为上述场景编写java代码,但未能获得预期的结果 我已经初始化了电梯位置的整数和楼层呼叫的整数。我使用if条件与操作员一起查找位置,并打印出将到达用户的电梯。问题陈述的正确编程步骤是什么。请帮忙。蒂亚如何在java程序中解决两层电梯的场景,java,io,java.util.scanner,data-manipulation,Java,Io,Java.util.scanner,Data Manipulation,下面是需求场景-这是一个黑客入侵问题 一个街区有7层,只有2部电梯。最初,电梯A位于底层,电梯B位于顶层。每当有人从N层呼叫电梯时,离该层最近的电梯就会来接他。如果两部电梯与第N层的距离相等,则较低层的电梯将向上 我正试图为上述场景编写java代码,但未能获得预期的结果 我已经初始化了电梯位置的整数和楼层呼叫的整数。我使用if条件与操作员一起查找位置,并打印出将到达用户的电梯。问题陈述的正确编程步骤是什么。请帮忙。蒂亚 import java.util.*; class TestClass {
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");
}
}
}
}
import java.util.*;
类TestClass{
公共静态void main(字符串args[])引发异常{
扫描仪s=新的扫描仪(System.in);
int count=s.nextInt();
int[]fc=新的int[计数];
int-posA=0;
int-posB=7;
对于(inti=0;i您刚刚错过的,距离应始终为正整数
计算距离时使用Math.abs()
另外,在第一个if
块之后缺少else
。
加上if(posA>posB)
太多,因为它过滤掉了posA==posB
我的代码:
package de.test.lang.stackexchange;
public class Lifts {
public static void main(String args[]) throws Exception {
int[] fc = new int[]{0, 6, 4, 1, 1, 2, 4, 0, 3, 1};
int posA = 0;
int posB = 7;
for (int reqPos: fc) {
final int distA = Math.abs(reqPos - posA);
final int distB = Math.abs(reqPos - posB);
if (distA < distB) {
posA = reqPos;
System.out.println("A");
} else if (distA == distB) {
if (posA < posB) {
posA = reqPos;
System.out.println("A");
} else {
posB = reqPos;
System.out.println("B");
}
} else {
posB = reqPos;
System.out.println("B");
}
}
}
}
package de.test.lang.stackexchange;
公共电梯{
公共静态void main(字符串args[])引发异常{
int[]fc=新的int[]{0,6,4,1,1,2,4,0,3,1};
int-posA=0;
int-posB=7;
用于(内部需求位置:fc){
最终int distA=数学abs(reqPos-posA);
最终int distB=数学abs(reqPos-posB);
if(distA
输出:abaa
(顺便说一句:很好的作业…你刚刚错过了,距离应该始终是一个正整数
计算距离时使用Math.abs()
另外,在第一个if
块之后缺少else
。
加上if(posA>posB)
太多,因为它过滤掉了posA==posB
我的代码:
package de.test.lang.stackexchange;
public class Lifts {
public static void main(String args[]) throws Exception {
int[] fc = new int[]{0, 6, 4, 1, 1, 2, 4, 0, 3, 1};
int posA = 0;
int posB = 7;
for (int reqPos: fc) {
final int distA = Math.abs(reqPos - posA);
final int distB = Math.abs(reqPos - posB);
if (distA < distB) {
posA = reqPos;
System.out.println("A");
} else if (distA == distB) {
if (posA < posB) {
posA = reqPos;
System.out.println("A");
} else {
posB = reqPos;
System.out.println("B");
}
} else {
posB = reqPos;
System.out.println("B");
}
}
}
}
package de.test.lang.stackexchange;
公共电梯{
公共静态void main(字符串args[])引发异常{
int[]fc=新的int[]{0,6,4,1,1,2,4,0,3,1};
int-posA=0;
int-posB=7;
用于(内部需求位置:fc){
最终int distA=数学abs(reqPos-posA);
最终int distB=数学abs(reqPos-posB);
if(distA
输出:abaa
(顺便说一句:很好的家庭作业…你调试了你的代码吗?第一:你在第一个if
块之后缺少了一个else
。第二:扫描仪很好,但对理解问题没有帮助。试着提供代码,这样就可以去掉它(完全初始化fc
)第三:尝试在代码中计算一次距离。这有助于理解代码。您调试过代码吗?第一:在第一个if
块之后缺少else
。第二:Scanner
很好,但无助于理解问题。尝试提供代码,这样就可以解决问题(完全初始化fc
)。第三:尝试在代码中计算一次距离。有助于理解代码。