華爲上機測試題(MP3光標移動-java)

PS:此題滿分,可參考java

 

描述:

MP3 Player由於屏幕較小,顯示歌曲列表的時候每屏只能顯示幾首歌曲,用戶要經過上下鍵才能瀏覽全部的歌曲。爲了簡化處理,假設每屏只能顯示4首歌曲,光標初始的位置爲第1首歌。c++

 

如今要實現經過上下鍵控制光標移動來瀏覽歌曲列表,控制邏輯以下:app

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

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

其餘狀況下用戶按Up鍵,光標挪到上一首歌曲;用戶按Down鍵,光標挪到下一首歌曲。ui

  2. 歌曲總數大於4的時候(以一共有10首歌爲例):spa

 

特殊翻頁:屏幕顯示的是第一頁(即顯示第1  4首)時,光標在第一首歌曲上,用戶按Up鍵後,屏幕要顯示最後一頁(即顯示第7-10首歌),同時光標放到最後一首歌上。一樣的,屏幕顯示最後一頁時,光標在最後一首歌曲上,用戶按Down鍵,屏幕要顯示第一頁,光標挪到第一首歌上。指針

通常翻頁:屏幕顯示的不是第一頁時,光標在當前屏幕顯示的第一首歌曲時,用戶按Up鍵後,屏幕從當前歌曲的上一首開始顯示,光標也挪到上一首歌曲。光標當前屏幕的最後一首歌時的Down鍵處理也相似。code

其餘狀況,不用翻頁,只是挪動光標就行。blog

 

題目類別: 字符串,循環,函數,指針
難度: 中級
分數: 100
運行時間限制: 無限制
內存限制: 無限制
階段: 應聘考試
輸入:

第一行輸入參數爲歌曲總數目M(0 < M < 255)

第二行輸入爲用戶操做,D表示Down鍵,U表示UP,D和U能夠隨意組合。測試用例中用戶的輸入保證合法性,不須要校驗;

例如:

10

DDDD

表示10首歌曲,用戶按了4個Down鍵。

 

 

輸出:

顯示MP3屏幕上當前顯示的4首歌曲,光標所在歌曲須要使用[]括起來;

例如:

2

3

4

[5]

 

樣例輸入:
10
DDDD
樣例輸出:
2
3
4
[5]
答案提示:

 

 

 

 

  1 import java.util.Scanner;
  2 
  3 public class Main {
  4 
  5     private static final String LINE_SEPARATOR = System.getProperty("line.separator");
  6 
  7     public static void main(String[] args) {
  8         
  9         Scanner cin = new Scanner(System.in);
 10         String strNum = cin.nextLine();
 11         String strButton = cin.nextLine();
 12 
 13         cin.close();
 14         
 15         showMp3(strNum, strButton);
 16         
 17     }
 18 
 19     private static void showMp3(String strNum, String strButton) {
 20 
 21         int musicNum = Integer.parseInt(strNum);
 22         char[] ch = strButton.toCharArray();
 23         int len = ch.length;
 24         
 25         if(musicNum <= 0 || musicNum >= 255)
 26         {
 27             return;
 28         }
 29         
 30         int music = 1;
 31         int start = 1;
 32         StringBuilder sb = new StringBuilder();
 33         
 34         for(int i = 0; i < len; i++)
 35         {
 36             switch(ch[i])
 37             {
 38             case 'D':
 39                 music++;
 40                 if(music == musicNum+1)
 41                 {
 42                     music = 1;
 43                     start = 1;
 44                 }
 45                 else if(music-start > 3)
 46                 {
 47                     start++;
 48                 }
 49                 break;
 50             case 'U':
 51                 music--;
 52                 if(music == 0)
 53                 {
 54                     music = musicNum;
 55                     start = musicNum-3;
 56                 }
 57                 else if(start > music)
 58                 {
 59                     start = music;
 60                 }
 61                 break;
 62             default:
 63                 return;
 64             }
 65         }
 66         
 67         if(musicNum < 4)
 68         {
 69             start = 1;
 70             for(int i = 0; i < musicNum; i++, start++)
 71             {
 72                 if(music == start)
 73                 {
 74                     sb.append("["+music+"]");
 75                 }
 76                 else
 77                 {
 78                     sb.append(start);
 79                 }
 80                 
 81                 if(musicNum-1 != i)
 82                 {
 83                     sb.append(LINE_SEPARATOR);
 84                 }
 85             }
 86         }
 87         else
 88         {
 89             for(int i = 0; i < 4; i++, start++)
 90             {
 91                 if(music == start)
 92                 {
 93                     sb.append("["+music+"]");
 94                 }
 95                 else
 96                 {
 97                     sb.append(start);
 98                 }
 99                 
100                 if(3 != i)
101                 {
102                     sb.append(LINE_SEPARATOR);
103                 }
104             }
105         }
106 
107         System.out.println(sb.toString());
108     }
109     
110 }
相關文章
相關標籤/搜索