Warunek sprawdzajacy czy zmienna jest liczbą

0

Witam,
czy jest gotowa metoda w javie sprawdzająca czy zmienna jest liczbą?
Co wpisać w warunek?

if(?){
System.out.print("Zmienna jest liczba")
}
else
System.out.print("Zmienna jest liczba")
0

a nie da się tego zrobić jako warunek?

2

Jaki warunek ? żołnierzu, wróć na poligon, i naucz się podstaw programowania.

if(isNumeric("czytojestliczba?")){
//nie lubie uzywac google
}
0

No jak masz tą funkcję to możesz sobie ją dać do warunku, kto ci zabrania?

0

Poza tym nie chodzi mi o to żeby sprawdzić czy zmienna typu string jest Double.
Chociaż w ostatecznośći mógł bym to pozamieniać to wyświetlenia i sprawdzać stringa.
Chodzi mi o to ze robie kalkulator w Swingu ktory pobiera dane z pól tekstowych i chce napisać warunek który sprawdzi czy wpisane tam dane nie są przez przypadek tekstem jeśli sa wyswietlić komunikat.

0
Biały Młot napisał(a):

Poza tym nie chodzi mi o to żeby sprawdzić czy zmienna typu string jest Double..

Biały Młot napisał(a):

czy jest gotowa metoda w javie sprawdzająca czy zmienna jest liczbą?

"To jest podatek czy nie jest?" ~ Robert Gwiazdowski

0

chce napisać warunek który sprawdzi czy wpisane tam dane nie są przez przypadek tekstem jeśli sa wyswietlić komunikat.

Dokładnie to robi ta funkcja.

0

Ok,
dodałem tą funkcje i warunek zrobiłem tak:

if(isNumeric(Textx.getText())){          
            //instrukcje jak jest double
        }
else{
TextWynik.setText("błędne dane");
}

Textx to pole String w które użytkownik wpisuje dane
Text wynik to pole które ma wyświetlać
Nie działa to, podpowiecie mi jak to poprawić?
i nie rozumiem tego elementu:

catch(NumberFormatException nfe)  
  {  
    return false;  
  }  
  return true;  
}
0
Biały Młot napisał(a):

Ok,

i nie rozumiem tego elementu:

catch(NumberFormatException nfe)  
  {  
    return false;  
  }  
  return true;  
}

https://docs.oracle.com/javase/tutorial/essential/exceptions/

0

Samodzielne pisanie czegoś takiego nie ma sensu. Potrzebny element masz w Apache Commons NumberUtils NumberUtils.isNumber("validJavaNumber")). Biblioteka standardowa jest strasznie uboga. Widziałem też, że ludzie linkowali pomysły, aby robić to na RegExpach o_O.

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/NumberUtils.html (isNumber).

0

Nałóż maseczkę na filda.
Wiesz co, jeśli się nie mylę, w Swingu powienien być nawet komponent "FormattedField". Możesz go zastąpić TextFieldem

0

Kolego podpowiedz mi jak się odwołać do tej biblioteki i jak jej użyć w programie.
Dopiero zaczynam swoją przygodę z javą i najlepiej dla mnie uczyć się na przykładach.

0
if(JSType.isNumber(new JTextField().getText()))
            // gdy prawda
        else
            // gdy falsz
0

Jeżeli korzystasz z Apache Maven (polecam od tego zacząć, powinieneś dopisać bibliotekę Apache Commons) do swojego pliku pom.xml (w bloku dependencies dołączasz biblioteki). Wtedy zostaną automatycznie pobrane z repozytorium (http://mvnrepository.com/). Czasem trzeba pomóc (wymusić w IDE 'download decleared dependencies').

<dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.1</version>
        </dependency>
</dependencies>

Używaj tej biblioteki, bo standardowa jest słaba (w zasadzie dołączam ją do większości swoich projektów). Np. zamiast robić string.isEmpty rób StringUtils.isEmpty(string): jest to np. odporne na nulle.

0

Masz tu metodę...

public static boolean mozeBycRzutowaneNaTypTypuLiczbowy(final String s) {

    return s.matches("-?\\d+(.\\d+)?");
}
3

Po co wrzucasz takie bzdurne metody?
Ona nie zaakceptuje ani -3, ani 3.3, ani 3,3.
Za to zaakceptuje 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222

0

Ty, w sumie to racja. Zjeba*em.

Poprawione. Przepraszam.

0

Jak umożliwić wpisywanie tylko cyfr w komponenty - takie coś nw naszym kompendium

0

A ja się pytam co masz przeciwko wyjątkom?
Z opisu tego co chcesz robić wyraźnie wynika, że spokojnie możesz z ich skorzystać.
Sypnij więcej kodu, to może przekonamy się czemu masz na nie uczulenie.

0

@MarekR22, wyjątki to zło. Generalnie są one efektem ubocznym, który potrafi namieszać w procesie przetwarzania. Jak już to należało by go zamknąć w jakimś obiekcie typu State i niech wywołujący decyduje co z tym robić.

0

@Koziołek, w pierwszym komentarzu wskazałem błędy Twojego kodu. Nie zareagowałeś.

0

Kod do którego odsyła @Koziołek jest dość przerażający i błędny. Poniżej prosty kod, który umożliwia wpisanie (wklejenie) tylko cyfr i znaku '-' na początku.

int ileCyfr = 10;
StringBuilder sb = new StringBuilder("");
for(int i = 0;i<=ileCyfr;i++)
{
      sb.append("*");
}
MaskFormatter mask = new MaskFormatter(sb.toString());
mask.setValidCharacters("-1234567890 ");
JFormattedTextField tf = new JFormattedTextField(mask);
tf.setColumns(ileCyfr+1);

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