EditText
と「進む」という名前のボタンを備えたアプリがあります。 EditText
に「a」と入力してボタンをクリックすると、EditText
に「b」という単語が入力されます。もう一度押すと「c」というようになります。 。私が試してみました:
value = edt.getText();
edt.setText(value + 1);
ただし、もちろん、最初の文字列とそれに続く数値「1」を出力します。何か案は?どうもありがとう
テスト済みで動作します
すべての文字は [〜#〜] ascii [〜#〜] 値で表すことができます。
文字をint
にキャストし、1を追加してからchar
にキャストすると、文字は1 ASCII value(次の文字)。
例えば:
'a'
は97
です'b'
は98
です
したがって、入力が'a'
であり、それをint
にキャストした場合、97
を取得します。次に、1を追加して98
を取得し、最後に再度char
にキャストして'b'
を取得します。
キャストの例を次に示します。
System.out.println( (int)('a') ); // 97
System.out.println( (int)('b') ); // 98
System.out.println( (char)(97) ); // a
System.out.println( (char)(98) ); // b
したがって、最終的なコードは次のようになります。
// get first char in the input string
char value = et.getText().toString().charAt(0);
int nextValue = (int)value + 1; // find the int value plus 1
char c = (char)nextValue; // convert that to back to a char
et.setText( String.valueOf(c) ); // print the char as a string
もちろん、これは入力として単一の文字がある場合にのみ正しく機能します。
より簡単な方法は次のとおりです。
char value = edt.getText().toString().charAt(0);
edt.setText(Character.toString ((char) value+1));
ここでvalue + 1
は、文字に相当する10進数を追加し、1ずつ増やします。これが小さなチャートです。
「z」の後にはどうなりますか? ...それはクラッシュしません.. 完全なチャートについてはここを参照してください。 。
これをお試しください
String convertString = getIncrementStr("abc");
public static String getIncrementStr(String str){
StringBuilder sb = new StringBuilder();
for(char c:str.toCharArray()){
sb.append(++c);
}
return sb.toString();
}
String value = edt.getText();
edt.setText(value + 1);
上記があなたのコードである場合、あなたがしていることは、value
文字列の最後に1を連結することです。したがって、ボタンをクリックすると、表示されるテキストが「your text」から「your text1」に変わります。このプロセスは、次のボタンをクリックして続行され、「your text11」が表示されます。問題は本当に型エラーです。
これを試して:
edt.setText(Character.toString((char)(edt.getText().charAt(0) + 1)));
テキスト値(文字)をASCII値に変換し、テキストだけでなくそれを増やす必要があります。
value = edt.getText().toString();
int ascii = (int)value;
edt.setText(Character.toString ((char) ascii+1));