题解 | #MP3光标位置#

MP3光标位置

https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

每屏只能显示 4首歌曲,光标 初始 的位置为第1首歌。

1. 歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。

光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;

光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。

其他情况下用户按Up键,

光标挪到上一首歌曲;

用户按Down键,光标挪到下一首歌曲。

2. 歌曲总数大于4的时候(以一共有10首歌为例):

特殊翻页:

屏幕显示的是第一页(即显示第1 – 4首)时,光标在第一首歌曲上,用户按Up键后,屏幕要显示最后一页(即显示第7-10首歌),同时光标放到最后一首歌上。

同样的,屏幕显示最后一页时,光标在最后一首歌曲上,用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。

一般翻页即屏幕显示的不是第一页时,

光标在当前屏幕显示的第一首歌曲时,用户按Up键后,屏幕从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。

光标当前屏幕的最后一首歌时的Down键处理也类似。

其他情况,不用翻页,只是挪动光标就行。

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         while(sc.hasNextLine()){
             int num=Integer.parseInt(sc.nextLine());
             if(num>4){
                 start=1;
                 end=4;
             }
             String orders=sc.nextLine();
             for (int i = 0; i < orders.length(); i++) {
                 deal(num,orders.charAt(i));
             }

             print();
         }
    }

    static int start=0,end=0,cur=1;
    private static void deal(int num, char order) {

  /*
    歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。
    光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;
    光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。
    其他情况下
        用户按Up键, 光标挪到上一首歌曲;
        用户按Down键,光标挪到下一首歌曲。
    * */
        if(num<=4){
            if(order=='U'){
                if(cur==1){
                   cur=num;
                }else{
                    cur=cur-1;
                }

            }else if(order=='D'){
                if(cur == num){
                    cur=1;
                }else {
                    cur=cur+1;
                }
            }
            start=1;
            end=num;
        }


            /*
歌曲总数大于4的时候(以一共有10首歌为例):
   特殊翻页:
      屏幕显示的是第一页(即显示第1 – 4首)时,光标在第一首歌曲上,用户按Up键后,屏幕要显示最后一页(即显示第7-10首歌),同时光标放到最后一首歌上。
      同样的,屏幕显示最后一页时,光标在最后一首歌曲上,用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。

   一般翻页:
      屏幕显示的不是第一页时,光标在当前屏幕显示的第一首歌曲时,用户按Up键后,屏幕从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。
      光标当前屏幕的最后一首歌时的Down键处理也类似。

   其他情况,不用翻页,只是挪动光标就行。
            * */
        if(num>4){
            if(order=='U'){
                if(cur==1){
                    cur=num;
                    end=num;
                    start=end-3;
                }else if (cur==start) {
                    start=start-1;
                    end=end-1;
                    cur=cur-1;
                }else {
                    cur=cur-1;
                }


            }else if(order=='D'){
                if(cur == num){
                    cur=1;
                    start=1;
                    end=4;
                }else if(cur==end){
                    start=start+1;
                    end=end+1;
                    cur=cur+1;
                } else {
                    cur=cur+1;
                }
            }
        }


    }

    private static void print() {
        for (int i = start; i <= end ; i++) {
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println(cur);
    }
}

全部评论

相关推荐

手撕没做出来是不是一定挂
Chrispp3:不会,写出来也不一定过
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务