Wpis z mikrobloga

Spotkał mnie dziwny problem. Mam metodę generującą wielokrotności dla danej liczby:

public static String getMultiple(int x, int n)
{
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; ++i) sb.append(x * i).append(',').append(' ');
return sb.toString();
}

Na końcu każdej liczby dodaję przecinek i spację. Kiedy odpalę ten kod na pc to wszystko wykonuje się prawidłowo.
kiedy natomiast wykonuję kod na Androidzie to kilka ostatnich liczb zamiast przecinków dostaje kropki.
Czyli, jeśli np. x=12, n=100, to 99. i 100. wielokrotność są zakończone kropkami ( . ):
... 1164, 1176, 1188. 1200.

Jeśli generuję 50 wielokrotności (x=12) wszystko jest ok, jak chcę 90, to 4 ostatnie liczby dostają kropki (jeśli x=12). Nie widzę tu reguły.
Wynik przekazuję do TextView, jeśli ma to znaczenie.
#androiddev #java #programowanie
  • 17
  • Odpowiedz
@Matt23: Na każdym androidzie? Może coś jest przekombinowane z toString StringBuildera w którejś wersji API i próbuje się wymądrzać stosując Locale do kropek i przecinków. Zamiast przecinka daj np # i potem daj replaceAll na przecinki - brzydki hack, ale co zrobić.
  • Odpowiedz
@Matt23: taki strzał jeszcze. może ze względu na to że pierwszym appendowantym członem jest liczba coś tam się dzieje dziwnego ;P Daj tam String.valueOf(x *1) tak dla testu ;-)
  • Odpowiedz
@zakopywywacz: @zulik: Język angielski, ale na windowsie PL było to samo. Android PL

public void getMultiple(View view)
{
EditText numberS = (EditText) findViewById(R.id.number);
EditText countS = (EditText) findViewById(R.id.count);

try
{
long number = Long.parseLong(numberS.getText().toString());
long count = Long.parseLong(countS.getText().toString());
String result = multiple.getMultiple(number, count);
TextView message = (TextView) findViewById(R.id.result);
Log.d("2", result);
message.setText(result);
Log.d("3", message.getText().toString());
hideKeyboard(countS);
}
catch (NumberFormatException e)
{
toastEmptyFields();
}
}

Wszystkie Logi są wporządku.
  • Odpowiedz
@Matt23: nie mam pojęcia, sprawdzałem ten kod i u mnie jest ok (nie licząc, że w metodzie masz w argumentach int, a podajesz long). Prześlij całe apk jeśli chcesz i sprawdzę u siebie, lub jak Ci wygodniej projekt.
  • Odpowiedz