[java] Java에서 숫자가 Double인지 확인

저는 Java 초보자입니다. 나는 숫자가 다음과 같은 Double인지 알아 내려고 노력하고 있습니다.

if ( typeof ( items.elementAt(1) )== Double ) {
       sum.add( i, items.elementAt(1));
}

누군가가 올바르게 작동하도록 구문을 재정렬하는 방법을 알려 주면 감사하겠습니다.



답변

이 시도:

if (items.elementAt(1) instanceof Double) {
   sum.add( i, items.elementAt(1));
}


답변

이것이 Google의 첫 번째 질문이므로 typeof여기에도 JavaScript 스타일 대안을 추가하겠습니다 .

myObject.getClass().getName() // String


답변

반사는 느리지 만 Animal 인스턴스가 아닌 Dog 또는 Cat 유형인지 알고 싶은 상황에서 작동합니다. 그래서 당신은 다음과 같이 할 것입니다.

if(null != items.elementAt(1) && items.elementAt(1).getClass().toString().equals("Cat"))
{
//do whatever with cat.. not any other instance of animal.. eg. hideClaws();
}

위의 대답을 말하지 않으면 null 검사 부분이 필요한 경우를 제외하고는 작동하지 않습니다.

대답하는 또 다른 방법은 제네릭을 사용하는 것이며 항목의 모든 요소로 Double을 보장합니다.

List<Double> items = new ArrayList<Double>();


답변

이 작업을 수행하려면 정규식을 사용하십시오. 아래 코드를 참조하십시오.

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


답변