Member 14059794 Ответов: 2

Как я могу попросить пользователя ввести данные несколько раз, пока все совпадающие символы в массиве не будут заменены на 0


Мне нужно написать программу, которая создает массив из 5 символов, случайно заполненных(A-Z), а затем просит пользователя ввести символ с помощью этого
1 java.util.Scanner in = new java.util.Сканер(System.in);
2
3 // . . . .
4
5 char c = in.next().charAt(0);

затем программа должна подсчитать вхождения в заданный массив, распечатать счетчик в консоли и заменить соответствующие символы в заданном массиве на "0". Программа должна завершиться, когда весь массив будет заполнен "0".

Вот что у меня есть на данный момент:
public class New{
    public static void main(String[] args){

        char arr[] = new char[5];
        for(int i=0;i<arr.length;i++){
            arr[i] = (char)(Math.random()*((90-65)+1)+65);
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+ " ");
        }

        java.util.Scanner in = new java.util.Scanner(System.in);
        int counter = 0;
    
        char c = in.next().charAt(0);
       

        for(int j = 0;j<arr.length;j++){
            if(arr[j] == c){
                counter++;
                arr[j]= '0';
            }
        }
        System.out.println("The character is present " + counter+" times");

        for(int j = 0;j<arr.length;j++){
            System.out.print(arr[j]+ " ");
        }


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

Что я уже пробовал:

Я попытался поместить char c = in.next().charAt(0); в другой цикл(внешний цикл), и тот, который у меня есть в приведенном выше коде, был внутри этого цикла, он не сработал

Я попытался найти ответ в Google, но не смог найти ничего, что подходило бы в этой ситуации.

Я не могу использовать методы, которые не обсуждались в классе, поэтому должен быть способ поместить char c = in.next().charAt(0); в цикл, чтобы пользователю было предложено ввести данные несколько раз.

2 Ответов

Рейтинг:
9

CPallini

Вы могли бы использовать do-while петля:

public class New
{
  public static void main(String[] args)
  {
    char arr[] = new char[5];
    for(int i=0;i<arr.length;i++)
      arr[i] = (char)(Math.random()*((90-65)+1)+65);

    for(int i=0;i<arr.length;i++)
      System.out.print(arr[i]+ " ");

    java.util.Scanner in = new java.util.Scanner(System.in);
    int zeroes;
    do
    {
      int matches = 0;
      zeroes = 0;
      System.out.println("Please enter a character");
      char c = in.next().charAt(0);

      for (int j = 0; j<arr.length; ++j)
      {
        if (arr[j] == c)
        {
          ++matches;
          arr[j]= '0';
        }
        if ( arr[j] == '0')
          ++zeroes;
      }
      System.out.println("The character is present " + matches + " times");
    } while (zeroes < arr.length);
    System.out.println("Well done");
  }
}


Member 14059794

Большое спасибо ребятам OriginalGriff и CPallini

CPallini

Добро пожаловать.

Рейтинг:
16

OriginalGriff

Вы уже подумали об этом

java.util.Scanner in = new java.util.Scanner(System.in);
do {
   char c = in.next().charAt(0);
   ... // do something with the input.
   } while (thereIsSomethingLeftInTheArray);

Операторы while и do-while (учебные пособия Java™: основы языка)[^]