2015-11-22 5 views
0

Привет, последние несколько часов я пытался исправить свой код. Проблема в том, что когда я иду, чтобы проверить, является ли "" целое число, возвращает true, когда оно должно быть ложным. Я знаю, почему это происходит, потому что он не входит в цикл for и возвращает true, но я не могу понять, как заставить его возвращать false для "". При необходимости я могу предоставить дополнительную информацию.Не могу понять, как исправить мой код

public boolean isInteger(String str) 
{ 
for (int x = 0, n = str.length(); x < n; x++) 
{ 
    char c = str.charAt(x); 
    if (c < '0' || c > '9') 
    { 
    if (c != 0 || c != '-') 
    { 
     return false; 
    } 
    } 
}  
return true; 
} 

Спасибо за тратить время на попытки помочь мне :)

+1

Почему не просто проверить длину? – SLaks

ответ

1

Вы можете проверить действительный вход (т.е. строку с длиной = 0) и вернуться ложным, прежде чем вы когда-нибудь попробовать петлю. Вы правы, однако, он не входит в цикл и просто возвращает true.

--edit-- Что-то вроде

if (string == null) || (string.length() == 0){ 
    return false 
} 
+0

Omg Большое вам спасибо, что исправил его. – TheCompile

1

В вашем алгоритме, пустая строка всегда возвращает истину. Вам просто нужно добавить проверку:

if(str==null || str.length()==0) return false; 

В качестве альтернативы, вы можете использовать эту функцию:

public static boolean isInteger(String str) 
{ 
    try 
    { 
     Integer.parseInt(str); 
     return true; 
    } 
    catch(NumberFormatException e) 
    { 
     return false; 
    } 

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