2016-06-18 4 views
-1

ニックネームを作成する必要があり、KeyListenerを使用してすべてを行います。私はkeyTypedを使ってニックネームを書いていますが、各文字をどのように保存するのか分かりません。 exapleの場合: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()が押された文字だけをプルするために発生します。毎回新しいcharを取得しないためです。したがって、配列は常に文字だけで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

関連する問題