この for ループを使用して、文字列から配列の個々の文字を調べています。
for(int i=0;i< array;i++){
g.drawString を使用して文字を 1 つずつ印刷する必要があります。そのため、配列内の位置 [i] にある文字を文字列に変換する必要があります。どうすればいいですか?
あなたが使用することができます:
String.valueOf(yourChar)
したがって、ループは次のようになります。
for(int i=0;i< array;i++){
g.drawString(String.valueOf(yourString.charAt(i));
}
簡単です。"" + array.charAt(i)
これを行うだけです:
char[] array;
g.drawString(String.valueOf(array[i]));
これがベスト プラクティスの方法です。
char[] array;
for (char c : array) {
String s = String.valueOf(c);
// do something with s
}
通常、これを行う最善の方法は、ソースが String の場合です。
str.substring(i, i+1); // If you have a string.
不必要な文字バッファーのコピーを避けるためです。Java の一部のバージョン (明らかに JDK7u5 以前) は、既存の文字バッファーを再利用できるため、余分なオブジェクトの作成を回避できます。(参照:この変更のアナウンスは、これが JDK7u5 以前に適用されることを示しています)
2 つの非常に明白な代替手段があります (これは、独自のchar[]
データ ソースがある場合にも機能します)。
String.valueOf(str.charAt(i)); // If you have a String
String.valueOf(chararray[i]); // If you have a char[]
String
これらは実際には oneと oneの 2 つのオブジェクトを作成しますchar[1]
。
そして、醜いハックリングがあります:
"" + str.charAt(i); // If you do do not care about doing things right.
これにより、通常、単一の追加操作で文字列バッファーが作成され、文字列に変換されます。このコードをホット ループで使用すると、アプリケーションのパフォーマンスが大幅に低下する可能性があります。コードは非常に単純に見えますが、おそらく次のように変換されます。
StringBuilder temp = new StringBuiler("");
temp.append(str.chatAt(i));
temp.toString();
そして、このオーバーヘッドは、API で使用できる 2 つのクリーンなソリューション (文字を文字列に変換することと、部分文字列を構築すること) があることを考えると、実際にはまったく役に立ちません。
このようなもの
char[] chars = {'a','b','c'};
String[] strings = new String[chars.length];
for (int i = 0; i < chars.length; i++) {
strings[i] = String.valueOf(chars[i]);
}