2016-06-06 1 views
-3

Я хочу проверить, будет ли входная строка какого типа.Как проверить входящую строку, какой тип в java?

Что-то вроде этого:

public void checkType(String str) 
{ 
    if(str is Integer){ 
     //do Integer stuff 
    } 
    if(str is Float){ 
     //do Float stuff 
    } 
    if(str is Boolean){ 
     //do Boolean stuff 
    } 
    if(str is Double){ 
     //do Double stuff 
    } 
} 

Что такое лучший способ сделать это?

+5

Существует логическая проблема здесь, поскольку данный вход «число» может быть огнеупор в 'Integer',' Float' или 'Double'. В этом случае, какой из них вы выберете? Было бы лучше, если бы вызывающий абонент использовал определенный перегруженный метод для определенного типа. –

+0

Ничего объектно-ориентированного. – duffymo

+0

Лучший способ сделать это - реализовать свой вопрос, не так много, как вы думаете –

ответ

-1

За то, что вы пытаетесь сделать, вам лучше объявить метод аргумент как тип объекта, а не в строку, например:

public void checkType(Object var) { 
    // ..... Your code ..... 
} 

Единственное, что вам нужно знать, что тип объекта был предоставлен для вашего конкретного кода метода. Вы можете сделать это довольно просто с одной строки кода, например:

public void checkType(Object var) { 
    String varType = var.getClass().getSimpleName().toUpperCase(); 

    // ..... Your code ..... 
} 

Заявленная переменная строка с именем VARTYPE будет содержать имя объекта поставки. Теперь вы можете использовать свой, если/то это или метод переключатель(), чтобы определить, что на самом деле поставляется, например:

public void checkType(Object var) { 
    String varType = var.getClass().getSimpleName().toUpperCase(); 

    switch (varType) { 
     case "STRING": 
      // do String stuff 
      break; 
     case "INTEGER": 
      // do int stuff 
      break; 
     case "FLOAT": 
      // do float stuff 
      break; 
     case "DOUBLE": 
      // do double stuff 
      break; 
     case "BOOLEAN"; 
      // do boolean stuff 
      break; 
     case "JLABEL": 
      // do JLabel stuff 
      // (any object can be supplied) 
      break; 
    } 
} 

Это должно сделать это, я думаю (ошибка отлова до вас).

+0

OP хочет проверить, что «тип» содержит строка, а не произвольный объект, как в вашем ответе. – Tom

+0

@Tom - Я основывал свой ответ на последнем предложении OP в своем посте: «Каков лучший способ сделать это?» – DevilsHnd

+0

@DevilsHnd - Я использую SAX Parser для чтения xml-файла, и для этой цели я переопределяю ** методы startElement ** и ** endElement **. Этот аргумент метода is bydefault String, и что я могу сделать для этого? – ketan

0

Наконец-то я дошел до решения. Для Integer и Float я использовал выражение Java Regular.

Как это:

  1. Для Integer:

    String intRegex = "[0-9]+"; 
    if (inputString.matches(intRegex)) { 
        //do Integer stuff 
    } 
    
  2. Для Float:

    String floatRegex = "^([+-]?\\d*\\.?\\d*)$"; 
    if (inputString.matches(floatRegex)) { 
        //do Float stuff 
    } 
    

Я думаю, что это также хороший способ определить Строка из Integer или Float type ...?

Для булевых вещей я пока не нашел подходящего решения. поэтому для этого я просто использую equals operator.

Спасибо ...

Смежные вопросы