Usunięcie przecinka z końca float

0

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

   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:

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?

 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

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

prosił bym o jakąs porade.

0
 System.out.println("2........5".replaceAll("\\.+", "."));
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

0

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

 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");
          
        }
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?

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?

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1