【day21】每日一题——MP3光标位置
创始人
2024-01-20 18:47:35

MP3光标位置_牛客题霸_牛客网

 这题就是简单的根据它的规则把它的情况都列举出来即可(当然,我第一次写一脸懵逼,所以你现在一脸懵逼没事,看完你就觉得简单了。看完还懵逼,你就多看几遍,然后自己去尝试一下,只要你成功运行了,那你就觉得真的简单~)

这个光标移动,是要根据它的指令来的,玩过mp3都这个那个歌曲显示的效果,

由于屏幕一次只能显示4首歌曲,所以我们要分情况来讨论,歌曲小于等于4首的时候,跟歌曲数目大于4首的时候

咱们先说说歌曲小于等于4首的时候

假设只有4首歌好了,也就是一个数组,数组里面有4歌元素(1,2,3,4),光标的初始位置会是第一首歌,也就是此时光标指向1,我们要是往下Dowm的话,光标会往下移动到2,在Down再移动到3到4,假设现在光标到4了,你再继续Down的话,光标就会跳到1,也就是第一首歌,这个情况对你来说应该不陌生,我想你不了解的就是代码的实现,对吧?不要急,听完慢慢说~

一直Down的情况说完了,我们再说说Up的情况,假设现在光标在1位置,你要是Up一下,光标就跳到最后一首歌曲了,继续Up就会继续向上到3,到2,再到1,这个肯定不难理解是吧,因为现在歌曲数目 <= 4,所以不需要翻页,你在这个情况看屏幕,屏幕是不会变化的,操作的整个过程只是光标在移动~


上述就是歌曲数小于等于4的理解

下面咱们再说说歌曲数目大于4的情况,假设数目为10,歌曲就是1~10

刚开始,光标指向1对不

(1)然后你此时要是Up一下,光标就会跑到最后一首歌对吧,也就是会跑到10的位置,但是,因为这个情况是大于4首歌曲的,屏幕最多只能显示4首歌曲,这时候不仅光标变动,页面也会跟着跳转,在Up之前,你看到的页面是 1  2  3  4,你一Up,页面变成了  10  9  8  7, 然后光标现在指向10位置~

(2)假如现在光标在10位置,屏幕显示10  9  8  7 ,接着你Down一下,光标跳到了1,页面也跟着变化成1  2  3  4,这跟上面的(1)是两种特殊情况:光标在第一首,显示第一页,但是要Up;

光标在最后一首,显示最后一页,但是要Down

(3)假设现在你的光标指向4对吧,此时页面显示是1  2  3  4,你要往下Dowm,那么光标就会跳到5,然后页面的第一行网上顶一行,把1顶掉,把5显示出来~这个你看手机的时候肯定知道的

(4)同上,假设现在光标指向2,页面显示的是  2  3  4  5,然后你一Up,光标跳到1,然后页面会网下顶一行,把上面的1显示出来

你会发现(3)和(4)的情况是:此时光标位置的在第一行,但你要Up;光标位置在第4行,但你要Down(排除了(1)和(2)的情况,互不相干)

(5)排除了上述的情况后就剩下简单的了:光标现在在页面的中间两首歌的其中一种,不管你是Up还是Dowm,只是光标移动,页面不会变化~


下面是代码展示

import java.util.*;
public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();String cmd = in.next();move(n,cmd);}public static void move(int n, String cmd){if(n <= 4){int[] arr = new int[n];int mouse = 1;for(int i = 0; i < arr.length; i++){arr[i] = i + 1;}for(int i = 0; i < cmd.length(); i++){if(mouse == 1 && cmd.charAt(i) == 'U'){mouse = arr[arr.length-1];}else if(mouse == arr.length && cmd.charAt(i) == 'D'){mouse = 1;}else if(cmd.charAt(i) == 'U'){mouse--;}else {mouse++;}}for(int x : arr){System.out.print(x + " ");}System.out.println();System.out.println(mouse);}else if(n > 4){int[] arr = new int[n];int mouse = 1;//光标此时位置int first = 1;//页面的显示for(int i = 0; i < arr.length; i++){arr[i] = i + 1;}//开始遍历cmdfor(int i =0; i < cmd.length(); i++){//此时位于第一页,第一首歌,并且要UPif(first == 1 && mouse == 1 && cmd.charAt(i) == 'U'){first = n - 3;mouse = arr[n - 1];}else if(first == n - 3 && mouse == arr[n - 1] && cmd.charAt(i) == 'D'){//此时这里表示,位于最后一页,最后一首歌,并且要Downfirst = 1;mouse = 1;}else if(first != 1 && mouse == first && cmd.charAt(i) == 'U'){//这里表示不是第一页,但第一首歌,并且要UPfirst--;mouse--;}else if(first != n - 3 && mouse == first + 3 && cmd.charAt(i) == 'D'){//这里表示不是最后一页,但最后一首歌,并且要Downfirst++;mouse++;}else if(cmd.charAt(i) == 'U'){//这里表示在页面中间的其中一首歌mouse--;}else if(cmd.charAt(i) == 'D'){mouse++;}}//遍历完cmd后打印此时的状态for(int i = 0; i < 4; i++){System.out.print(arr[first - 1 + i] + " ");}System.out.println();System.out.println(mouse);}}
}

我们去遍历命令行cmd,根据歌曲数目分为两种情况,然后在根据命令行去执行光标移动和页面变化,当命令行遍历完后,就要打印出此时的页面,和光标指向的位置

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
毛笔是谁发明的 目前发现最早的... 毛笔人人都见过,现在很多中国人家里还会有那么一两枝,读小学的时候往往还都练过几天的描红,众多家长将自...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
人世界上最大的生殖器 世界最大... 1. 卡图马人——女人可随意强暴男人的民族2. 卡拉莫贾人——禁止女人穿裤子的奇特民族3. 哈扎比人...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...