1

我目前正在做一个练习(在任何人放弃之前不是家庭作业),我被困在问题的最后一部分。

问题是:

Write a program which will input a String from the keyboard, output the number of
seperate words, where a word is one or more characters seperated by spaces. Your
program should only count words as groups of characters in the rang A..Z and a..z

从我的代码中可以看出,我可以做第一部分没有问题:

导入 java.util.Scanner;

public class Exercise10 {

public static void main(String[] args) {
    String input;
    int counter = 0;
    Scanner keyboard = new Scanner(System.in);

    System.out.println("Please enter your text: ");
    input = keyboard.nextLine();

    for(int i = 0; i < input.length(); i++){

        if(input.charAt(i) == ' '){
            counter++;
            }   
    }

    System.out.println(counter + 1);
    keyboard.close();

    }
 }

然而,让我感到困惑的部分是:

Your program should only count words as groups of characters in the rang A..Z and 
a..z

在这种情况下我应该怎么做?

4

2 回答 2

2

我相信它不应该将单独的标点符号视为单词。所以这个短语one, two, three !会有 3 个单词,即使!是用空格分隔的。

在空格上拆分字符串。对于每个令牌,检查字符;如果其中至少一个在 rangea..z或内A..Z,则递增 counter 并获取下一个令牌。

于 2013-10-10T11:46:59.533 回答
2

我不会给你一个完整的答案,但这里有两个提示。

而不是计算空格,而是查看拆分字符串并遍历拆分中的每个元素:

文档

一旦你有了String拆分并且可以遍历元素,遍历每个元素中的每个字符以检查它是否是字母:

暗示

于 2013-10-10T11:49:15.650 回答