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")
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")
http://stackoverflow.com/questions/1102891/how-to-check-if-a-string-is-a-numeric-type-in-java
normalnie znalezienie tego linka jest nieosiągalne.
a nie da się tego zrobić jako warunek?
Jaki warunek ? żołnierzu, wróć na poligon, i naucz się podstaw programowania.
if(isNumeric("czytojestliczba?")){
//nie lubie uzywac google
}
No jak masz tą funkcję to możesz sobie ją dać do warunku, kto ci zabrania?
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.
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
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.
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;
}
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/
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.
Nałóż maseczkę na filda.
Wiesz co, jeśli się nie mylę, w Swingu powienien być nawet komponent "FormattedField". Możesz go zastąpić TextFieldem
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.
if(JSType.isNumber(new JTextField().getText()))
// gdy prawda
else
// gdy falsz
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.
Masz tu metodę...
public static boolean mozeBycRzutowaneNaTypTypuLiczbowy(final String s) {
return s.matches("-?\\d+(.\\d+)?");
}
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
Ty, w sumie to racja. Zjeba*em.
Poprawione. Przepraszam.
Jak umożliwić wpisywanie tylko cyfr w komponenty - takie coś nw naszym kompendium
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.
@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ć.
@Koziołek, w pierwszym komentarzu wskazałem błędy Twojego kodu. Nie zareagowałeś.
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);