2016-06-18 23 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