2016-12-21 2 views
0

Я пытаюсь определить, есть ли число во входных данных, предоставляемых для циклов. Я пытался это сделать в течение долгого времени и даже искал на второй странице Google. Я решил попросить о помощи. Вот что я пытался до сих пор:Идентификация числа в строках с использованием циклов

for (c = 0 ; c < 6 ; c = c++) 
{ 
    c = input.charAt (0); 

    if (Character.isDigit (c)) 
    { 
     System.out.println ("Input must only contain letters."); 
     return; 
    } 

} 

В основном я пытаюсь сканировать через все письма, и проверить их по отдельности, если они буква или число, которое является то, что у меня возникают проблемы с, так как проверяется только первая буква. Я попытался ввести «C++» в цикле. Как я сканирую каждое письмо?

Редактировать: Упс, это была ошибка. Я изменил его на c = c + 1, но он не сработал, я изменил его на C++, но это оказалось как c = C++.

+1

Вы ищете либо регулярное выражение, либо цикл через каждый символ и проверяете, является ли это цифрой или нет, используя функцию Character.isDigit(). Посмотрите на следующий вопрос: http: // stackoverflow.com/questions/18590901/check-if-a-string-contains-numbers-java – Abdulgood89

+0

Как использовать "str.matches (". * \\ d +. * ");"? Я немного новичок в кодировании, и мы еще не узнали об этом. –

+0

String myString = "Insert Your String Here 123"; System.out.println (myString.matches (". * \\ d +. *")); Если ваша строка соответствует этому регулярному выражению, она вернет true. Регулярное выражение проверяет, существуют ли какие-либо цифры в строке. – Abdulgood89

ответ

0

Вы не можете использовать c как индекс и значение одновременно. Попробуйте следующее:

for (int i = 0; i < 6; i++) { 
    c = input.charAt(i); 
    // ... 
} 
+0

О, я вижу. В этом есть смысл. –

3

Эта линия: c = input.charAt(0); имеет две проблемы.

Сначала вы, вероятно, не захотите сбрасывать значение итерации c каждый раз, когда цикл выполняется. Поэтому, возможно, изменить это на другой переменной, как так:

char chr = input.charAt(.... 

Во-вторых, вы только захватывая первый char, потому что вы отправляете 0 функции .charAt(). Попробуйте это:

char chr = input.charAt(c); 
if (Character.isDigit (chr)) 
{ 
    System.out.println ("Input must only contain letters."); 
    return; 
} 
+1

Спасибо, я понимаю сейчас. Я много экспериментировал, поэтому многие вещи находятся в разных позициях. Я верну свой код, еще раз спасибо. –

2

Используйте регулярное выражение и класс шаблон в Java:

boolean b = Pattern.matches("[0-9]+", input); 

Если вы не знакомы с регулярными выражениями, [0-9] + будет найти один или несколько вхождений (далее « + ') любой цифры от 0 до 9 в вашей строке. Тогда все, что вам нужно сделать, это проверить, истинна ли переменная b (указывая, что поиск найден в числе) или false (в строке нет цифр).

Кроме того, я заметил, что вы приращением вашей переменной петли с следующим образом:

c = c++ 

Эта операция фактически не оказывает никакого влияния на величину с. Оператор ++ после переменной в операторе присваивания означает «увеличивать значение переменной на один после, вы назначаете текущее значение другой переменной. То, что происходит тогда, заключается в том, что вы присваиваете значение c самому себе, увеличивая c на .. один Это измененное значение не сохраняется обратно с, так что ваш цикл вероятно, будет продолжаться бесконечно надлежащим образом, чтобы увеличить переменную цикла выглядит следующим образом:

for (c = 0; c < 6; c++) { 
    // ... 
} 
0

Я создал эту булеву проверку функции, если это помогает.

public static boolean containtsDigits(String input) { 
     boolean isDigit = false; 
     if(input != null && !input.isEmpty()){ 
      char[] letterCharArray = input.toCharArray(); 
      for(int i = 0 ; i < letterCharArray.length ; i++){ 
       if(Character.isDigit(letterCharArray[i])){ 
        isDigit = true; 
        break; 
       } 
      } 
     } 

     return isDigit; 
    } 
0

Попробуйте следующее:

public void check(String word){ 

    int n=word.length(); // To Find length of the string. 
    for(int c=0;c<n;c++){ 
     char ch=word.charAt(c); // for extracting every single element of word 

     if(Character.isDigit(ch)) // To check if its Digit 
     { 
      System.out.println ("Input must only contain letters."); 
      break; 
     } 
    } 

    System.out.println ("All Good"); 
} 
+0

Вместо того, чтобы просто сказать «попробуйте это», вы можете объяснить на английском языке, какую проблему вы видели в исходном коде? Ваш пример кода хорош, и комментарии велики, но поскольку этот ответ может быть трудно для кого-то интерпретировать (тем более, что он не отличается от исходного кода). – Guildencrantz

+0

Спасибо Guildencrantz за то, что он указал на мою ошибку, я позабочусь об этом в следующий раз. –

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