Jestem nowicjuszem w Javie. Próbuję dowiedzieć się, czy liczba jest Double z czymś takim:
if ( typeof ( items.elementAt(1) )== Double ) {
sum.add( i, items.elementAt(1));
}
Byłbym wdzięczny, gdyby ktoś mógł mi powiedzieć, jak zmienić składnię, aby działała poprawnie.
object o = new object(); Type t = typeof(o);
wyświetla komunikat o błędzie kompilatorao is a variable but is used like a type
. Nazwa tego pytania jest myląca ...Object#GetType()
metodę, która zwraca plikType
. Można to następnie porównać ztypeof()
. W tym przypadku tak by byłoitems.elementAt(1).GetType() == typeof(double)
.Odpowiedzi:
Spróbuj tego:
if (items.elementAt(1) instanceof Double) { sum.add( i, items.elementAt(1)); }
źródło
elementAt(0)
; większość rzeczy w Javie jest oparta na zerach.Ponieważ jest to pierwsze pytanie od Google, dodam
typeof
tutaj również alternatywę stylu JavaScript :myObject.getClass().getName() // String
źródło
Odbicie jest wolniejsze, ale działa w sytuacji, gdy chcesz wiedzieć, czy jest to typ psa czy kota, a nie instancja zwierzęcia. Więc zrobiłbyś coś takiego:
if(null != items.elementAt(1) && items.elementAt(1).getClass().toString().equals("Cat")) { //do whatever with cat.. not any other instance of animal.. eg. hideClaws(); }
Nie mówienie powyższej odpowiedzi nie działa, z wyjątkiem części sprawdzającej wartość null.
Innym sposobem na odpowiedź jest użycie typów ogólnych i masz gwarancję, że każdy element pozycji ma Double.
List<Double> items = new ArrayList<Double>();
źródło
.getClass().toString()
ponieważ nie mogę zaimportować klasy z powodu inejction zależności jednokierunkowej. Dzięki.Aby wykonać to zadanie, użyj wyrażenia regularnego. Proszę zapoznać się z poniższym kodem.
public static void main(String[] args) { try { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter your content: "); String data = reader.readLine(); boolean b1 = Pattern.matches("^\\d+$", data); boolean b2 = Pattern.matches("[0-9a-zA-Z([+-]?\\d*\\.+\\d*)]*", data); boolean b3 = Pattern.matches("^([+-]?\\d*\\.+\\d*)$", data); if(b1) { System.out.println("It is integer."); } else if(b2) { System.out.println("It is String. "); } else if(b3) { System.out.println("It is Float. "); } } catch (IOException ex) { Logger.getLogger(TypeOF.class.getName()).log(Level.SEVERE, null, ex); } }
źródło