题解 | #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);
}
}
SHEIN希音公司福利 242人发布