2015-06-17 2 views
1

Я пытаюсь напечатать недопустимый номер, номер которого не имеет тип int или double, но не получает желаемого результата, пожалуйста, помогите мне указать мою ошибку, а другое можно сделать узнать неверный номер, используя другой способ?Печать недопустимого ввода из строки в Java

public class Test { 
      public static void main(String [] args) 
     { 

     String [] str ={ "10.20","30450","12.valid","100.200"}; 

      for(int i=0; i<str.length; i++) 
      { 
       if(str[i].indexOf(".")>0) 
       { 
        try 
        { 
         Integer.parseInt(str[i]); 
         System.out.println("its a valid int nummber : "+str[i]); 
        } 
        catch(NumberFormatException e) 
        { 
         System.out.println("its invalid number in string: "+str[i]); 
        } 
       } 
       else 
       { 
        try 
        { 
         Double.parseDouble(str[i]); 
         System.out.println("its valid double number: "+str[i]); 
        } 

        catch(NumberFormatException e) 
        { 
         System.out.println("its invalid char in string : "+str[i]); 
        } 
       } 
      } 
     } 
    } 

выход

его недействительным номер строки: 10,20

его действительный двойной номер: 30450

его недействительным номер строки: 12.valid

его недействительным номер строки: 100.200

+2

Это условие неверно: 'if (str [i] .indexOf (". ")> 0)'. Это должно быть 'if (str [i] .indexOf (". ") == -1)', чтобы вы пытались разобрать его как 'int', если там * не * a' .'. Вы пробовали отлаживать, прежде чем спрашивать? Важно развивать навыки диагностики. –

+0

Спасибо, сэр, это помогло мне, сэр, я пытался выяснить свою ошибку, но я думаю, что я пропустил ее>. < – KindZadZa

ответ

0

код внутри если/другое должно быть наоборот:

   if(str[i].indexOf(".")>0) 
       { 
        ///parse for double 
       } 
       else 
       { 
        //parse for int 
       } 
+0

Да, сэр! спасибо за помощь :) – KindZadZa

0

Заменить

if (str[i].indexOf(".") > 0) { 

с этим

if (str[i].indexOf(".") < 0) { 

выход

its valid double number: 10.20 
its a valid int nummber : 30450 
its invalid char in string : 12.valid 
its valid double number: 100.200 
+0

Спасибо, сэр за помощь в этом :) – KindZadZa

0
public class Test { 
      public static void main(String [] args) 
     { 

     String [] str ={ "10.20","30450","12.valid","100.200"}; 

      for(int i=0; i<str.length; i++) 
      { 
       if(str[i].indexOf(".") == -1) 
       { 
        try 
        { 
         Integer.parseInt(str[i]); 
         System.out.println("its a valid int nummber : "+str[i]); 
        } 
        catch(NumberFormatException e) 
        { 
         System.out.println("its invalid number in string: "+str[i]); 
        } 
       } 
       else 
       { 
        try 
        { 
         Double.parseDouble(str[i]); 
         System.out.println("its valid double number: "+str[i]); 
        } 

        catch(NumberFormatException e) 
        { 
         System.out.println("its invalid char in string : "+str[i]); 
        } 
       } 
      } 
     } 
    } 

Выход:

its valid double number: 10.20 
its a valid int nummber : 30450 
its invalid char in string : 12.valid 
its valid double number: 100.200 
+0

Спасибо, что помогли мне сэр :) – KindZadZa

0

почему бы вам не использовать регулярное выражение.

Pattern p = Pattern.compile("[^A-Za-z]"); 
    Pattern p1 = Pattern.compile("[\.]"); 

String [] str ={ "10.20","30450","12.valid","100.200"}; 
for(int i=0; i<str.length; i++) 
     { 

     if (p.matcher(str[i]).find()) 
     { 

       System.out.println("its invalid number in string: "+str[i]); 

     } 
     else (p1.matcher(str[i]).find()){ 

      System.out.println("its invalid char in string : "+str[i]); 

     } 
     else{ 

      System.out.println("its a valid int nummber : "+str[i]); 
     } 
}