Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java程序中解决两层电梯的场景_Java_Io_Java.util.scanner_Data Manipulation - Fatal编程技术网

如何在java程序中解决两层电梯的场景

如何在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 {

下面是需求场景-这是一个黑客入侵问题

一个街区有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");
            }            
        }
    }
}
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
)。第三:尝试在代码中计算一次距离。有助于理解代码。