2016-06-18 24 views
-1

我必須製作一個暱稱,並且使用KeyListener完成所有工作。我想用keyTyped編寫暱稱,但我不知道如何保存每個字母。例如:從Java中的KeyTyped製作字符串

keyTyped(KeyEvent e){   
     char key = e.getKeyChar(); 
     nick = new String[10]; 
     for(int i = 0; i<10; i++){ 
      nick[i] = Character.toString(key); 
      key = e.getKeyChar(); 
     } 
} 

不幸的是,每個字母都是最後一個字母。怎麼做?

回答

0

每當輸入一個鍵時,for循環就會運行,使數組中的每個字母都是最後一個輸入的字母,就像您說的那樣。在keyTyped事件之外定義一個計數器變量,將其用作數組位置,然後每次鍵入一個鍵時遞增它。還要在keyTyped事件外定義暱稱。

int count = 0; 
nick = new String[10]; 
keyTyped(KeyEvent e){   
     if(count<nick.length) { //make sure if more than 10 characters are pressed it wont cause an error 
      char key = e.getKeyChar(); 
      nick[count] = Character.toString(key); 
      count += 1; 
     } 
} 
0

這裏「for」循環在每次從鍵盤拿走字符時都會執行。每次變量i被設置爲0並且最後一個字符被放置在字符串數組中。

從鍵盤取得字符前初始化循環變量。

我希望這可以解決您的問題。

2

這是因爲e.getKeyChar()只拉取已被按下的字符,它每次都不會獲得新的字符。因此數組總是隻有10次。你的暱稱是否需要成爲一個數組?因爲如果沒有,你可以做這樣的事情(這也意味着,如果你擺脫了if語句,那麼暱稱可以是你喜歡的那個長度):

int count = 0; 
String nick = ""; 
keyTyped (KeyEvent e){ 
     char key = e.getKeyChar; 
     //If your nickname needs to be only 10 characters long, then this 
     //Stops too many characters from entering 
     if (count < 10){ 

      nick += key 
     } 
} 
+0

'+ ='是否工作用字符串?如果不使用'nick.concat(key)' –

+0

+ =可以使用字符串,我選中 – masteryoom