电梯上下问题的ACM算法(语言-java)

问题遇到的现象和发生背景

电梯

问题相关代码,请勿粘贴截图

java题目描述
在我们的城市最高的建筑只有一个电梯。电梯请求列表包括N个正数。该数字序列表示电梯将要到达的楼层顺序。电梯每上一层楼用时6秒,下一层楼用时4秒,停一次用时5秒。

对于给定的请求列表,请计算花费执行列表中的请求的总时间。电梯初始在第0层。

输入格式
输入数据有多组。每组输入数据包含一个正整数N和N个正整数(N和楼层值不会超过100),表示电梯要到达的楼层数量和楼层。当N=0时输入结束,此组数据不进行处理。

输出格式
对于每组输入数据,计算电梯完成请求列表需要的时间,每组输出占一行。
样例输入
1 2
3 2 3 1
0
样例输出
17
41


public static void main(String[] args) {
        elevator();
    }

    public static void elevator(){
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        if(n < 0){
            System.out.println("请输入大于等于0的数字");
        }
        if(n == 0){
            System.out.println("此组数据不做处理");
        }
        System.out.println("请输入层数:");
        int[] m = new int[n];
        for(int i=0; i<n; i++){
            m[i] = scanner.nextInt();
        }
        int sum = 0;
        sum += 6 * m[0];

        for(int j = 0;j < n-1 ;j++){
            if(m[j] > m[j+1]){
                sum += Math.abs(m[j] - m[j+1])*4;  //下降
            }else if(m[j] < m[j+1]){
                sum += Math.abs(m[j] - m[j+1])*6;  //上升
            }
        }
        sum += n * 5;
        System.out.println(sum);
    }

这不就模拟加一下不就好了。也可以分开算上用总时间,下用总时间,停的总时间,求个和。

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()){
int time = 0;
int num = in.nextInt();
if(num ==0){
break;
}
int cur = 0;
int next;
int acount = 0;
int dcount = 0;
for(int i = 1;i<=num;i++){
next = in.nextInt();
if(next>cur)
acount+=(next-cur);
else
dcount += (cur-next);
cur = next;
}
time = acount6+dcount4+5;
System.out.println(time);
}
}
}