1. 程式人生 > 其它 >Java機試題:MP3游標位置

Java機試題:MP3游標位置

描述

MP3Player因為螢幕較小,顯示歌曲列表的時候每屏只能顯示幾首歌曲,使用者要通過上下鍵才能瀏覽所有的歌曲。為了簡化處理,假設每屏只能顯示4首歌曲,游標初始的位置為第1首歌。

現在要實現通過上下鍵控制游標移動來瀏覽歌曲列表,控制邏輯如下:

  1. 歌曲總數<=4的時候,不需要翻頁,只是挪動游標位置。

  2. 歌曲總數>4的時候

游標在第一首歌曲上時,按Up鍵游標挪到最後一首歌曲;游標在最後一首歌曲時,按Down鍵游標挪到第一首歌曲。

輸入描述:

輸入說明:
1輸入歌曲數量
2輸入命令U或者D

輸出描述:

輸出說明
1輸出當前列表
2輸出當前選中歌曲

import java.util.Scanner;
/** * * 思路:整體考慮分兩種,歌曲數大於4和小於等於4. * 整體需要兩部分游標的重新整理,和列表重新整理的情況。 * */ public class Main{ // 歌曲數量 static int num = -1; static int[] arr = new int[4]; public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNextLine()){ // 歌曲數量以及游標所在位置
num = Integer.valueOf(sc.nextLine()); String order = sc.nextLine(); // 游標初始化位置為1 int light = 1; // 歌曲數少於等於4時,列表不會重新整理 if(num <= 4) { StringBuffer sb = new StringBuffer(); for (int i = 1; i <= num; i++) { sb.append(i
+ " "); } System.out.println(sb.toString().substring(0, sb.length() - 1)); for (int i = 0; i < order.length(); i++) { // 按上鍵 if(order.charAt(i) == 'U' && light == 1) { light = num; } if(order.charAt(i) == 'U') { light--; } // 按下鍵 if(order.charAt(i) == 'D' && light == num) { light = 1; } if(order.charAt(i) == 'D') { light++; } } System.out.println(light); } else { // 初始化當前列表 changeMp3List(num-3); for (int i = 0; i < order.length(); i++) { // 按上鍵 if(order.charAt(i) == 'U' && light == 1) { // 翻頁 light = num; changeMp3List(num-3); } else if(order.charAt(i) == 'U') { // 需要刷當前列表,上移 if(arr[0] == light) { changeMp3List(arr[0] - 1); } light--; } // 按下鍵 if(order.charAt(i) == 'D' && light == num) { // 翻頁 light = 1; changeMp3List(1); } else if(order.charAt(i) == 'D') { // 需要刷當前列表,下移 if(arr[3] == light) { changeMp3List(arr[0] + 1); } light++; } } StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; i++) { sb.append(arr[i] + " "); } System.out.println(sb.toString().substring(0, sb.length() - 1)); System.out.println(light); } } } // 找準list第一個,填充list,歌曲數大於4,當前列表一定有4首歌 private static void changeMp3List(int first) { arr[0] = first; for (int i = 1; i < 4; i++) { arr[i] = arr[i-1] + 1; } } }