有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    你刚刚错过了,距离应该总是一个正整数

    计算距离时使用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");
                }
            }
        }
    }
    

    输出:A B B A A A B A B A

    (顺便说一句:很好的家庭作业…)