我必须使用KeyListener创建一个昵称,并且我会做所有事情。我想用keyTyped写昵称,但我不知道,如何保存每个字母。对于exaple:
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 :(得分: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
}
}
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
这里每次从键盘上取下角色时都会执行“for”循环。每个时间变量i被设置为0,最后一个字符被放置在字符串数组中。
在从键盘获取字符之前初始化循环变量。
我希望这可以解决您的问题。