2013-10-25 7 views
3

Я пытаюсь написать цикл for в Java, который будет считать вхождения буквы в строке. Пользователь вводит письмо для подсчета и строку для поиска. Это очень простой код, и мы еще не попали в массивы или многое другое. (Я понимаю, что дважды прописал письмо, но мой мозг уже мертв). Это то, что я пробовал до сих пор, и у меня проблемы, любая помощь приветствуется:Подсчитайте вхождения буквы в строке

Хорошо, я поменял свой код на предложения, но теперь это только чтение первого слова моего предложения?

import java.util.Scanner; 

public class CountCharacters { 
public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 

    char letter; 
    String sentence = ""; 
    System.out.println("Enter a character for which to search"); 
    letter = in.next().charAt(0); 
    System.out.println("Enter the string to search"); 
    sentence = in.next(); 

    int count = 0; 
    for (int i = 0; i < sentence.length(); i++) { 
     char ch = sentence.charAt(i); 
     if (ch == letter) { 
      count++; 
     } 
    } 
    System.out.printf("There are %d occurrences of %s in %s", count, 
      letter, sentence); 

} 
} 
+0

Поскольку ваш код не компилируется, как вы знаете, что он не работает? Это не так, но вы действительно попробовали? Если да, то объясните, в чем проблема (помимо дубликата декларации). –

ответ

0

Ваш if (sentence.length() <= 0) { не является правильным. Измените свое состояние как:

System.out.println("Enter a character for which to search"); 
letter = in.next(); 
System.out.println("Enter the string to search"); 
sentence = in.next(); 
char searchLet=letter.charAt(0); // Convert String to char 
int letter = 0; 
for (int i = 0; i < sentence.length(); i++) { 
    char ch = sentence.charAt(i); 
    if (searchLet== ch) { // Check the occurrence of desired letter. 
     letter++; 
    } 
} 

System.out.print(sentence.charAt(letter)); 
0

Попробуйте это:

Char letter = ''; 
String sentence = ""; 
System.out.println("Enter a character for which to search"); 
letter = in.next().charAt(0); 
System.out.println("Enter the string to search"); 
sentence = in.next(); 

int count= 0; 
for (int i = 0; i < sentence.length(); i++) { 
    char ch = sentence.charAt(i); 
    if (ch==letter) { 
     count++; 
    } 
} 
System.out.print(letter+" occurance:"+count); 
+0

Вы не можете применить in.next(); с символом. – Masudul

+0

ops! починил это.. – Nizam

0

Попробуйте

< забыть String letter = "" - Удалить
забыть letter = in.next() < - Удалить

// There's no nextChar() method, so this is a work aroung 
    char ch = in.findWithinHorizon(".", 0).charAt(0); 

    int letter = 0; 
    for (int i = 0; i < sentence.length(); i++) { 

     if (sentence.charAt(i) == ch) { 
      letter++; 
     } 
    } 

    System.out.println(letter); // print number of times letter appears 

    // You don't want this 
    System.out.print(sentence.charAt(letter)); // Makes no sense 
0
if (sentence.length() <= 0) { 
      letter++; 
} 

Указанная часть кода в вашей программе неверна. Это никогда не будет правдой, пока вы не введете пустую строку.

И в основном это неправильная логика. Вам нужно будет использовать прямое сравнение.

1

Я вижу пару вопросов. Сначала у вас есть две переменные с тем же именем.

Второе ваше условие if проверяет, чтобы длина предложения была больше 0 вместо проверки равенства символов.

Scanner in = new Scanner(System.in); 

char inLetter = ""; 
String sentence = ""; 
System.out.println("Enter a character for which to search"); 
inLetter = in.next().charAt(0); 
System.out.println("Enter the string to search"); 
sentence = in.next(); 

int letter = 0; 
for (int i = 0; i < sentence.length(); i++) { 
    char ch = sentence.charAt(i); 
    if (inLetter == ch) { 
     letter++; 
    } 
} 

System.out.print(sentence.charAt(letter)); 

Я также настоятельно рекомендуем, чтобы подтвердить ввод (который не сделано в приведенном выше примере), вместо того, чтобы только если вы получили 1 символ из первого входа и 1 предложение в секунду.

0

Нет необходимости в цикле:

String sentence = "abcabcabcd"; 
    String letter = "b"; 
    int numOfOccurences = sentence.length() - 
          sentence.replaceAll(letter, "").length(); 
    System.out.println("numOfOccurences = "+numOfOccurences); 

ВЫВОД:

numOfOccurences = 3 
0
  1. Вы должны знать, полукокс вы хотите поиска. Вы можете использовать char charToSearch = letter.toCharArray() [0];
  2. Определите переменную, такую ​​как count, чтобы подсчитать вхождения буквы в заданной строке.
  3. Завершите строку и сравните каждый символ, если символ равен char для поиска, а затем count ++;

Пример --->

int count = 0; 
char charToSearch = letter.toCharArray()[0]; 
for (int i = 0; i < sentence.length(); i++) { 
    if (sentence.charAt(i) == charToSearch) { 
     count++; 
    } 
} 

System.out.printf("Occurrences of a %s in %s is %d", letter, sentence, count); 
0

Надеется, что это будет полезно для вас.

import java.util.Scanner; 

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

     Scanner in = new Scanner(System.in); 

     System.out.println("Enter the string to search"); 
     String sentence = in.nextLine(); 

     System.out.println("Enter a character for which to search"); 
     String letter = in.next(); 

     int noOfOccurance = 0; 

     for (int i = 0; i < sentence.length(); i++) { 
      char dh=letter.charAt(0); 
      char ch = sentence.charAt(i); 
      if (dh==ch) { 
       noOfOccurance++; 
      } 
     } 
     System.out.print(noOfOccurance); 
    } 
} 

Sample Вход Выход:

Enter the string to search 
how are you 
Enter a character for which to search 
o 
No of Occurances : 2 
0

попробовать метод IndexOf(). он должен работать

0

ваш класс Scanner не переносится на следующую строку после прочтения символа

letter = in.next().charAt(0); 

добавить еще in.nextLine() перед чтением входной строки

System.out.println("Enter a character for which to search"); 
    letter = in.next().charAt(0); 
    in.nextLine(); 
    System.out.println("Enter the string to search"); 
    sentence = in.nextLine(); 

старую нить но надеюсь, что это поможет :)

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