题解 | #MP3光标位置#
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D2%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37
最简单明了,屏显数可配置
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
int num = in.nextInt();
String temp = in.nextLine();
String ud = in.nextLine();
int showNum =4;//后期可配置
int p = 1;//光标位置
int p1 =1,p2 =Math.min(p1+showNum-1,num);//屏幕显示首末歌曲
//int music = p1+p-1;//当前选中歌曲
//int music = (p2-showNum>0?p2-showNum:0)+p;//当前选中歌曲
for(int i =0;i<ud.length();i++){
switch(ud.charAt(i)){
case 'U' :
if(p>1){
p--;
}else{
if(p1>1){
p1--;
p2--;
}else{
p1 = num-showNum>=0 ? num-showNum+1:1;
p2 = num;
p = Math.min(num,showNum);
}
}
break;
case 'D':
if(p<showNum){
p++;
}else{
if(p2<num){
p1++;
p2++;
}else{
p1 = 1;
p2 = num-showNum>=0 ? showNum:num;
p = 1;
}
}
break;
}
}
for(int i=0;i<Math.min(num,showNum);i++){
System.out.print((p1+i) + " ");
}
System.out.println();
System.out.println((p2-showNum>0?p2-showNum:0)+p);
}
}
}
查看8道真题和解析