Usunięcie przecinka z końca float

Usunięcie przecinka z końca float
VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Wiec tak pisze kalkulator, zeby wstukiwac liczby zastosowalem taka metode:

Kopiuj
   public void getKeyboard(String str) {
        String ScrCurrent = Scr.getText().toString();

        if (ScrCurrent.equals("0"))
            ScrCurrent = "";
            ScrCurrent += str;
        
            Scr.setText(ScrCurrent);
        }

obliczenia jako select a wciskanie klawiszy jako default:

Kopiuj
default:

                    String numb = ((Button) v).getText().toString();
                    getKeyboard(numb);
                    break;

nie umiem jednak sobie poradzic z bledem typu 5.............3 (czyli nieskonczona kropka)

Czego probowalem?

Kopiuj
 if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == '.') {
          str = str.substring(0, str.length() - 1);
        }

oraz zliczac kropki i od kropki x nalozyc kasowanie, ale efekt byl jeszcze gorszy bo znikaly cyfry

Kopiuj
    if (str.equals(".") ) {
            ScrCurrent = ".";
            countDot++;
        } else if(countDot >= 1) {
            str = str.substring(0, str.length() - 1);
        }

prosił bym o jakąs porade.

SW
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 4 lata
  • Postów:426
0
Kopiuj
 System.out.println("2........5".replaceAll("\\.+", "."));
VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

co nie zmienia że może się zadziać sytuacja typu 2.5...................6 a twoj przyklad zamieni to na 2.5.6 co zwroci blad

NE
A po co chcesz kasować kropki, wyświetl że błędny format liczby i po sprawie, skąd będziesz wiedział jaka liczbę miał na uwadze użytkownik wpisując na przykład 2.3.3.5.3
VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Wymyslilem cos takiego patrzac w logi dziala dodaje 1 i od razu ucina, ale w rzeczyiwstosci ta kropka nie znika, dlaczego?

Kopiuj
 if (str.equals(".")){
            i++;
            Log.i("op", "postawionych kropek"+i);
        }

        if (str.equals(".") && i==1) {
            String s = Scr.getText().toString();
            s = s.substring(0, s.length() - 1);
            Scr.setText(s);
            i--;
            Log.i("op", "ucina kropke");
          
        }
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 6 godzin
0

Ale co chcesz osiągnąć? Przecież 1.2.3 nie jest prawidłową liczbą i jako taka nie może być użyta do obliczeń. Na jaką liczbę taki ciąg powinien być zamieniony? 1.3? 1.2? 1? 0.3?


DU
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:143
0

Nie ma sensu się tak bawić, tak jak koledzy wyżej piszą nie zgadniesz co miał użytkownik na myśli wprowadzając liczbę 1.2.3 może to być 12.3 lub 1.23, a może 123 bez żadnych kropek. Zrób obsługę błędów i tyle ;)

E:// swoją drogą zamartwiasz się kropkami, a co jeżeli użytkownik poda liczbę z przecinkiem lub jakimkolwiek innym znakiem?

edytowany 1x, ostatnio: duzy
VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

dobra już sobie poradziłem

ale odpowiadając na pytanie
chciałem gdy mam
1.2. - w tym momencie kasuje kropke by nie dopuscic do sytuacji wypisanej powyzej.

nie poda innej liczby bo to kalkulator i może wprowadzac wartosci 1-9 + kropka oraz operowac na podstawowoych znakac jak kalk w windows

edytowany 1x, ostatnio: viamarimar

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.