Java에서 숫자가 Double인지 확인


92

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

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

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


그것은 나뿐입니까, 아니면 typeof (object)가 실제로 C #에서 실제적이지 않습니까? 나는 항상 그것이 typeof (type)이라고 생각했습니다 ... object o = new object(); Type t = typeof(o);라는 컴파일러 오류가 발생 o is a variable but is used like a type합니다. 이 질문의 이름은 잘못된 것입니다 ...
Dan Rayson

C #에서 모든 개체는이 Object#GetType()반환하는 방법을 Type. 그런 다음이를 사용하여 typeof(). 이 경우 items.elementAt(1).GetType() == typeof(double).
Frontear

답변:


154

이 시도:

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

19
+1. 나는 또한 당신이 실제로 확인하고 싶다고 생각하고 있습니다 elementAt(0); Java의 대부분은 제로 기반입니다.
ChssPly76

16

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

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

9

반사는 느리지 만 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>();

9
사람들이 부정적인 평가에 대한 이유를 입력하는 방법을 배우게 해주시겠습니까? 나도 자바를 처음 사용 했고이 답변에 무엇이 잘못되었는지보고 싶으므로 시도 할 필요가 없습니다!
enrey 2014 년

1
하드 코딩 된 문자열과 비교하는 것을 피할 것입니다. 클래스 이름이 변경되면 instanceof도 존재하므로이를 사용합니다.

@enrey instanceof보다 이것의 장점은 무엇입니까?
Charles Shiller

@CharlesShiller 장점은 문자열 "Cat"의 늦은 바인딩입니다.
Robino

2
.getClass().toString()단방향 종속성 주입으로 인해 클래스를 가져올 수 없기 때문에 +1합니다 . 고마워.
Hannes Schneidermayer

1

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

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

1
좋은 예, 'TypeOF'btw는 무엇입니까? 마지막 줄에.
Eddie Kumar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.