アーロン :
私は大学のプロジェクトのための基本的なチャットボットをコーディングしています。私は、ユーザーが金額を入力することによって、予算を設定しなければならない時点までです。現時点では、プログラムは、ユーザーのメッセージで番号を検索し、それを正しく保存することができます。£記号がそれに前置されている場合しかし、それが原因メッセージにシャープ記号を有するの整数として保存することができません。
これは私のコードです:
//Scan the user message for a budget amount and save it.
for (int budgetcount = 0; budgetcount < words.length; budgetcount++)
{
if (words[budgetcount].matches(".*\\d+.*"))
{
if (words[budgetcount].matches("\\u00A3."))
{
words[budgetcount].replace("\u00A3", "");
System.out.println("Tried to replace a pound sign");
ResponsesDAO.budget = Integer.parseInt(words[budgetcount]);
}
else
{
System.out.println("Can't find a pound sign here.");
}
}
私は以前)(.containsを試みたが、私が削除したいが、私はまだ取得していることポンド記号であることを示す他の方法している「ここにシャープ記号を見つけることができません。」プリントアウト。
誰もがアドバイスを提供したり、自分のコードを修正することができる場合、私は非常に感謝します。
前もって感謝します!
user2004685:
Strings
JAVAで不変です。あなたは交換するだけに、結果をバックに割り当てることはありませんwords[budgetcount]
。
あなたのコードに次の行を変更し、
words[budgetcount] = words[budgetcount].replace("\u00A3", "");
ここで使用してそれを行うための別の方法でCharacter.isDigit(...)
数字を識別し、編み物桁のみの後に整数として解析することができます文字列は、
コードスニペット:
private String removePoundSign(final String input) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (Character.isDigit(ch)) {
builder.append(ch);
}
}
return builder.toString();
}
入力:
System.out.println(removePoundSign("£12345"));
出力:
12345