Строки B присваивание слов - PullRequest
2 голосов
/ 26 апреля 2019

Мне нужно написать программу, в которой пользователь вводит 5 слов, эти слова должны храниться в строковом массиве.Когда пользователь закончил, вы должны отобразить количество раз, когда слово, начинающееся с буквы «B», было введено, в нижнем или верхнем регистре, а также переформулировать слова B.Я не могу сказать, сколько слов 'B' есть и что они. Я использую Java, готовый программировать, так как я студент, я не использую сканер и все такое

    //Asking user to input 5 words
    System.out.println ("Please enter 5 words");
    System.out.println ("====================");

    //set up loop so that x is the index variable going from 0 to 4
    //fill words array with five words
    int fromIndex = 0;
    int counter = 0;

    for (int x = 0 ; x <= 4 ; x = x + 1)
    {
        System.out.print (" ");
        words [x] = keyboardInput.readLine ();

      //change word to lowercase
      String lower = words[x].toLowerCase();
      while(fromIndex !=-1)
        {
        fromIndex = lower.indexOf("b",fromIndex);
        if (fromIndex !=-1) 
          {
          //character was matched
          counter = counter + 1;
          fromIndex++;
          }
        }
    }
    System.out.print ("You entered " + counter + " 'B' words and they were: ");

Вот что я получаю:

Пожалуйста, введите 5 слов

Еда

Билли

Подоконник

Медведь

Pop

Вы ввели 0 слов "B", и они были:

Ответы [ 3 ]

1 голос
/ 26 апреля 2019

Вы никогда не сбрасываете fromIndex, и вам не нужен такой цикл fromIndex или while. Я бы использовал String.startsWith(String). Как,

for (int x = 0; x < 5; x++) {
    System.out.print(" ");
    words[x] = keyboardInput.readLine();
    if (words[x].toLowerCase().startsWith("b")) {
        counter++;
    }
}

В качестве альтернативы,

if (Character.toLowerCase(words[x].charAt(0)) == 'b') {
    counter++;
}
0 голосов
/ 26 апреля 2019

Вот полная версия:

public class Bwords {
public static void main(String [] args){
    java.util.Scanner input=new java.util.Scanner(System.in);

    System.out.println ("Please enter 5 words");
    System.out.println ("====================");
    String[] words = new String[5];
    int count=0;
    String  [] b_words=new String[5];


        for (int x = 0; x <= 4; x++) {
            System.out.print(x+1+" word: ");
            words[x] = input.next();
             if (words[x].toLowerCase().startsWith("b")) {
                 count++;
                 b_words[x]=words[x];
             }

    }
    System.out.print ("You entered " + count + " 'B' words and they were: ");

    for (String b_word : b_words) {
        if (b_word != null)
            System.out.print(b_word + " ");
    }
  }
}

Вывод

Пожалуйста, введите 5 слов

1 слово: Еда

2 слова: Билли

3 слова: подоконник

4 слова: медведь

5 слов: поп

Вы ввели 2 слова "Б" и онибыли: Билли Беар

0 голосов
/ 26 апреля 2019

Вы можете использовать функцию indexOf на вашем String. Если это 0, это означает, что ваше слово начинается с b.

for (int x = 0 ; x <= 4 ; x = x + 1)
{
  System.out.print (" ");
  words [x] = keyboardInput.readLine ();

  //change word to lowercase
  String lower = words[x].toLowerCase();
  if(lower.indexOf("b") == 0){
     counter++;
  }
}
System.out.print ("You entered " + counter + " 'B' words and they were: ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...