当前位置: 首页 > 知识库问答 >
问题:

编写一个程序,从键盘读取字符,直到读取换行符“\n”

翟承志
2023-03-14

编写一个程序,从键盘读取字符,直到读取换行符“\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个答案

谢灵均
2023-03-14

“读取字符直到键入换行符”是一种非常奇特的说法“读取一行输入”。因此,只需读取整行输入,然后逐字符迭代即可获得您的计数。类似这样:

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...

}
 类似资料:
  • 问题内容: 我正在学习Go。 我的程序应该从stdin中读取数据,直到我输入一个单句点的行。 我应该如何修改for循环,以在输入单个点时停止程序? 我试图用for语句实现while循环,我的方法是否有问题,条件是否错误,还是ReadString弄乱了我的数据? 问题答案: … ReadString弄乱了我的数据吗? 不,不是。它正在阅读下一个。这意味着一行上只有一个点的行将具有数据或取决于操作系统

  • 问题内容: 给定一个不太长的字符串,逐行读取字符串的最佳方法是什么? 我知道你可以做: 另一种方法是在eol上获取子字符串: 还有其他更简单的方法吗?我对上述方法没有任何问题,只是想知道你们中是否有人知道一些看起来更简单,更有效的方法? 问题答案: 您也可以使用String方法: 这使您可以方便地将所有行排列在一起。 我不知道拆分的性能。它使用正则表达式。

  • get() 是 istream 类的成员函数,它有多种重载形式(请 猛击这里了解详情),不过本文只介绍最简单最常用的一种: int get(); 此函数从输入流中读入一个字符,返回值就是该字符的 ASCII 码。如果碰到输入的末尾,则返回值为 EOF。 EOF 是 End of File 的缩写。istream 类中从输入流(包括文件)中读取数据的成员函数,在把输入数据都读取完后再进行读取,就会返

  • 问题内容: 有没有一种方法可以从用户输入中读取一个字符?例如,他们在终端上按一个键,然后将其返回(类似)。我知道Windows中有一个功能,但是我想要一些跨平台的功能。 问题答案: 以下是指向网站的链接,该网站说明了如何在Windows,Linux和OSX中读取单个字符:http : //code.activestate.com/recipes/134892/

  • 我试图从一个串行端口读取数据,这个端口连接着Arduino和操纵杆。 当试图打印出接收到的数据以检查我是否得到它时,它会继续打印出与连接时相同的值。 我正在从我的串行端口以这种格式发送数据: Xaxis: yAxis: SwitchBool 这是我在WPF应用程序中的C#代码 这是我的arduino代码: 下面是一个例子,说明在移动拇指时,Arduino的串行监视器中的数据应该是什么样子的: -1

  • 问题内容: 如何通过键盘用Java输入字符? 问题答案: 您可以扫描整行: 或者,只要您知道要处理的编码,就可以阅读一本: