Напишите программу, которая читает символы с клавиатуры, пока она не прочитает символ перевода строки '\ n' - PullRequest
0 голосов
/ 22 сентября 2019

Напишите программу, которая читает символы с клавиатуры, пока не прочитает символ перевода строки '\ n'.Затем пусть он напечатает количество гласных, количество согласных, количество цифр и количество других символов.Включите последний символ перевода строки в число других символов.

Я выполнил большинство из них, но когда я набираю \ n, это не останавливается.Кто-нибудь может мне помочь?

import java.util.Scanner;
class characters{
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int v=0;
    int c=0;
    int n=0;
    int o=0;
    char ch;
    do{
      System.out.println("Type in any characters: ");
      System.out.println("Type in \\n to stop. ");
      ch = scan.next().charAt(0);
      if(ch=='\n') {
        o++;
        break;}
      else
      {
        if('a'<=ch && ch<='z')
        {
          if(ch=='a') v++;
          else if(ch=='e') v++;
          else if(ch=='i') v++;
          else if(ch=='o') v++;
          else if(ch=='u') v++;          
          else c++;
        }
        else if('0'<=ch && ch<='9') n++;
        else o++;
      }

    }while(ch!='\n');
    System.out.println("There are "+v+" vowels, "+c+" consonants, "+n+" digits, and "+o+" other characters.");
  }
} 

1 Ответ

0 голосов
/ 22 сентября 2019

«Чтение символов до ввода строки» - это просто причудливый способ сказать «прочитать строку ввода».Так что просто прочитайте целую строку ввода и затем итерируйте по ней символ за символом, чтобы получить свои значения.Как то так:

int v=0;
int c=0;
int n=0;
int o=0;
System.out.println("Enter a string of characters (Press ENTER when done):");
String line = scan.nextLine();

// OPTION 1 for iterating over the line character by character
for (char ch : line.toCharArray(){
    if ('a' <= ch && ch <= 'z')
        // etc...
}

// OPTION 2 for iterating over line
for (int i = 0; i < line.length(); ++i){
    char ch = line.charAt(i);
    if ('a' <= ch && ch <= 'z') 
         // etc...

}
...