2014-01-27 2 views
0

«Это мой код»Как равен одному символу в строке, а затем вычислить его

public static void main(String[] args) { 

    int letter_count = 0; 
    String check_word = new String ("How to equals a single character in string and then calculate it "); 
    String single_letter = " "; 
    int i = 0; 

    for (i = 0; i < check_word.length(); i++) { 

     single_letter = check_word.substring(0); 

     if (single_letter.equals("a")); { 
      letter_count ++; 

     } 
    } 
    System.out.println (" - \"a\"" + " was found " + letter_count + " times"); 
} 
+2

И вопрос является? – AntonH

+8

«Спасибо за код» –

+4

В дополнение к приведенным выше комментариям я укажу на очевидный: удалите семхлоон после 'if'. – yshavit

ответ

2

Одна из ваших проблем является то, что есть ; после if (single_letter.equals("a")) состояния так код

if (single_letter.equals("a")); { 
    letter_count ++; 
} 

эффективно такое же, как

if (single_letter.equals("a")){ 
    //empty block "executed" conditionally 
} 
//block executed regardless of result in `if` condition 
{ 
    letter_count ++; 
} 

Другая проблема заключается в том, что

single_letter = check_word.substring(0); 

получит подстроку check_word из индекса 0, что означает, что он будет хранить ту же строку, как check_word. Рассмотрим метод charAt с i вместо 0. Это вернет простой char, поэтому вам нужно будет сравнить его с ==, как check_word.charAt(i)=='a'.

Другое (и, вероятно, лучше) подход был бы просто перебирает все символы строки с

for (char ch : check_word.toCharArray()){ 
    //test value of ch 
} 
+0

, также имеющий этот check_word.substring (0); должен быть этот check_word.substring (i) – Manmohan

+0

@Manhoman Нет, 'substring (i)' возвращает остаток строки, начинающейся в позиции 'i'. Вам нужно' charAt (i) 'или' подстрока (i, i + 1) ' – jalynn2

+0

@P shemo: Да, я согласен. Я указывал это на Манмохана. – jalynn2

4

Вы, кажется, запутались, что функция делает подстроки. Эта линия:

single_letter = check_word.substring(0); 

по существу возвращает весь check_word и сохраняет его внутри single_letter. Я подозреваю, что вы на самом деле хотели:

single_letter = check_word.substring(i, i + 1); 

чтобы получить единственную букву в этом положении.

Вы также можете изменить его на:

if(check_word.charAt(i) == 'a') { 
    letter_count++; 
} 
0

попробовать ...

public static void main(String[] args) { 

    int letter_count = 0; 
    char[] check_word = "How to equals a single character in string and then calculate it " 
      .toCharArray(); 
    char single_letter = 'a'; 

    for (int i = 0; i < check_word.length; i++) { 
     if (single_letter == check_word[i]) { 
      letter_count++; 
     } 
    } 
    System.out.println(" - \"a\"" + " was found " + letter_count + " times"); 

} 
+0

** Спасибо всем ** – Namuda

0

Почему бы вам не использовать символ, например:

public static void main(String[] args) { 

    int letter_count = 0; 
    String check_word = new String ("How to equals a single character in string and then calculate it "); 
    char toCheck = 'a'; 

    for (int i = 0; i < check_word.length(); i++) { 
     char cursor = check_word.charAt(i); 
     if (cursor == toCheck) { 
      letter_count++; 
     } 
    } 
    System.out.println (" - \"a\"" + " was found " + letter_count + " times"); 
} 
Смежные вопросы