编写程序来计算短语中的空格

时间:2011-03-07 18:06:37

标签: java

我正在尝试编写一个用户输入短语的程序,程序会计算空格并告诉用户有多少空格。使用for循环,但我被卡住,有人可以帮助我吗?

import java.util.Scanner;

public class Count
{
  public static void main (String[] args)
  {
      String phrase;    // a string of characters
      int countBlank;   // the number of blanks (spaces) in the phrase 
      int length;       // the length of the phrase
      char ch;          // an individual character in the string

    Scanner scan = new Scanner(System.in);
      // Print a program header
      System.out.println ();
      System.out.println ("Character Counter");
      System.out.println ();

      // Read in a string and find its length
      System.out.print ("Enter a sentence or phrase: ");
      phrase = scan.nextLine();
      length = phrase.length();

      // Initialize counts
      countBlank = 0;

      // a for loop to go through the string character by character

        for(ch=phrase.charAt()
      // and count the blank spaces

      // Print the results
      System.out.println ();
      System.out.println ("Number of blank spaces: " + countBlank);
      System.out.println ();
    }
}

7 个答案:

答案 0 :(得分:3)

用于计算空格的for循环将写成如下:

for(int i=0; i<phrase.length(); i++) {
    if(Character.isWhitespace(phrase.charAt(i))) {
        countBlank++;
    }
}

其内容如下:“i是一个索引,范围从第一个字符的索引到最后一个字符的索引。对于每个字符(得到phrase.charAt(i)),如果它是空格(我们在这里使用Character.isWhitespace效用函数),则递增countBlank变量。“

答案 1 :(得分:0)

  1. 遍历字符串中的字符。
  2. 检查字符是否为空格(字符值= 32ch == ' '
  3. 如果是空格,请添加到countBlank,否则请继续
  4. 显示结果。
  5. 您可以查看Java文档中的StringCharacter类以获取帮助。

答案 2 :(得分:0)

我对java不太熟悉,但是如果你可以访问字符串中的每个字符。 你可以写这样的东西。

int nChars = phrase.length();
for (int i = 0; i < nChars; i++) {
   if (phrase.charAt(i) == ' ') {
      countBlank++;
   }
}

答案 3 :(得分:0)

只是想知道,你不能只拆分由空格输入的字符串并将数组的长度减去1吗?

在C#中它会像

一样微不足道
string x = "Hello Bob Man";
int spaces = x.Split(' ').Length - 1;

非常确定java有分裂?即使你有两个连续的空间也能工作。

答案 4 :(得分:0)

你必须完成循环和计算空间

//replace this lines

  for(ch=phrase.charAt()
      // and count the blank spaces

//to this lines

for (int i = 0; i < phrase.length(); i++)
{
    if(phrase.charAt(i) == ' ') countBlank++;
}

答案 5 :(得分:0)

你可能对每个循环都有问题

char[] chars = phrase.toCharArray(); Change string into array of chars.

for(char c : phrase.toCharArray()) { //For each char in array
if(Character.isWhitespace(c) { //Check is white space.
  countBlank++; //Increment counter by one.
 }
}

for(int i =0; i <phrase.lenght(); i++) { 
if(Character.isWhitespace(phrase.charAt(i)) { //Check is the character on position i in phrase is a white space.
  countBlank++; //Increment counter by one.
 }
}

答案 6 :(得分:-1)

这是以下Java Tutorials

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class SplitDemo2 {

    private static final String REGEX = "\\d";
    private static final String INPUT = "one9two4three7four1five";

    public static void main(String[] args) {
        Pattern p = Pattern.compile(REGEX);
        String[] items = p.split(INPUT);
        for(String s : items) {
            System.out.println(s);
        }
    }
}

OUTPUT:

one
two
three
four
five

空格的正则表达式是\ s

希望有所帮助。