从Java中键入的键生成字符串

从Java中键入的键生成字符串,java,tostring,keyevent,Java,Tostring,Keyevent,我必须给它取个外号,我用KeyListener做任何事。我想用键盘输入来写昵称,但我不知道如何保存每个字母。例如: keyTyped(KeyEvent e){ char key = e.getKeyChar(); nick = new String[10]; for(int i = 0; i<10; i++){ nick[i] = Character.toString(key);

我必须给它取个外号,我用KeyListener做任何事。我想用键盘输入来写昵称,但我不知道如何保存每个字母。例如:

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();
        }
 }
keyTyped(KeyEvent e){
char key=e.getKeyChar();
尼克=新字符串[10];

for(int i=0;i每次键入一个键时,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;
        }
 }
int count=0;
尼克=新字符串[10];
keyTyped(KeyEvent e){
if(count这里,每次从键盘中提取字符时,都会执行“for”循环。每次变量i被设置为0,最后一个字符被放入字符串数组中

在从键盘获取字符之前初始化循环变量


我希望这解决了您的问题。

这是因为
e.getKeyChar()
只提取已按下的字符,而不是每次都获取一个新字符。因此数组始终只是字符的10次。您的昵称需要是数组吗?因为如果不需要,您可以这样做(也就是说,如果去掉if语句,那么昵称可以任意长):

int count=0;
字符串nick=“”;
keyTyped(KeyEvent e){
char key=e.getKeyChar;
//如果您的昵称只需要10个字符长,那么
//阻止输入太多字符
如果(计数<10){
尼克+=钥匙
}
}

+=
是否与字符串一起工作?如果不使用
nick.concat(键)
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
        }
}