在java中计算String中的空格

时间:2016-02-24 12:49:10

标签: java

我编写了一个程序,它以String作为用户输入并显示字母,数字和white-spaces的计数。我使用Tokenizer - 类编写了代码,它计算字母和数字,但它省略了white-spaces。有什么想法吗?

import java.util.Scanner;

public class line {

  public static void main(String[] args) {

    System.out.println("Enter anything you want.");
    String text;
    int let = 0;
    int dig = 0;
    int space= 0;

    Scanner sc = new Scanner(System.in);
    text = sc.next();
    char[]arr=text.toCharArray();

    for(int i=0;i<text.length();i++) {
        if (Character.isDigit(arr[i])) {
            dig++;
        } else if (Character.isLetter(arr[i])) { 
            let++;
        } else if (Character.isWhitespace(arr[i])) {
            space++;
        }
    }
    System.out.println("Number of Letters : "+let);
    System.out.println("Number of Digits : "+dig);
    System.out.println("Number of Whitespaces : "+space);
  }          
}

4 个答案:

答案 0 :(得分:2)

Scanner默认情况下将输入分为令牌,使用空格作为分隔符!

简单地说,它吞噬了所有的空白!

您可以使用sc.useDelimiter(/*ToDo - suitable character here - a semicolon perhaps*/)将分隔符更改为其他内容。

答案 1 :(得分:1)

你有问题

sc.next();

除此之外,请使用

sc.nextLine();

它应该有用。

答案 2 :(得分:0)

而不是text = sc.next();使用text = sc.nextLine();

答案 3 :(得分:0)

尝试使用

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Line {
 public static void main(String[] args) throws Exception {
  String s;
  System.out.println("Enter anything you want.");
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  s = br.readLine();
  int length = s.length();
  int letters = 0;
  int numbers = 0;
  int spaces = 0;
  for (int i = 0; i < length; i++) {
   char ch;
   ch = s.charAt(i);
   if (Character.isLetter(ch)) {
    letters++;
   } else {
    if (Character.isDigit(ch)) {
     numbers++;
    } else {
     if (Character.isWhitespace(ch)) {
      spaces++;
     } else
      continue;
    }
   }
  }
  System.out.println("Number of letters::" + letters);
  System.out.println("Number of digits::" + numbers);
  System.out.println("Number of white spaces:::" + spaces);
 }
}