文本处理分配

时间:2014-04-07 21:47:03

标签: java string whitespace

我正在尝试为我的家庭作业编写一些方法,但我不知道该怎么做。

我尝试了很多东西,但似乎都没有。

第一个问题是我如何获取我拥有的字符串并返回它没有空格。 trim()只消除句子的第一个和最后一个空格(getNoSpaceString方法)。

此外,我正在尝试计算我的句子所具有的数字字数,即一个是1位数字。

我的代码在下面(digitWordCount方法)。

import java.util.*;
public class StringProcessor {
private String noSpaces;
private String input, noVowels;
private String noDigitWords;
private int numOfWords = 0, uppercaseLetters = 0,
            numOfDigits = 0, digitWords = 0;

public StringProcessor()
{
    input = "";
}

public StringProcessor(String s)
{
    StringTokenizer str = new StringTokenizer(s);
    numOfWords = str.countTokens();

    for (int i = 0; i < s.length(); i++)
    {
        if (Character.isUpperCase(s.charAt(i)))
            uppercaseLetters++;
    }

    for (int i = 0; i < s.length(); i++)
    {
        if (Character.isDigit(s.charAt(i)))
            numOfDigits++;
    }

    if (str.nextToken().equalsIgnoreCase("one"))
        digitWords++;


}

public void setString(String s)
{
    input = s;
}

public String getString()
{
    return input;
}

public int wordCount()
{
    return numOfWords;
}

public int uppercaseCount()
{
    return uppercaseLetters;
}

public int digitCount()
{
    return numOfDigits;
}

public int digitWordCount()
{
    return digitWords;
}

public String getNoSpaceString()
{
        return noSpaces;
}

public String getNoVowelString()
{
    return noVowels;
}

public String getNoDigitWordString()
{
    return noDigitWords;
}

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

    System.out.print("Enter a line of text: ");
    input = keyboard.nextLine();

    StringProcessor str = new StringProcessor(input);

    System.out.println("\nwords: " + str.wordCount());
    System.out.println("uppercase: " + str.uppercaseCount());
    System.out.println("digits: " + str.digitCount());
    System.out.println("digit words " + str.digitWordCount());
    System.out.println("line with no spaces: ");

}
}

4 个答案:

答案 0 :(得分:2)

关于你的第一个问题,试着找出如何将“”这是一个空格替换为“”这是什么都没有(如果你已经在你的课程中看过这个,那么还有字符串函数)

对于你的第二个问题,知道一个字符串是一个字符数组可能会有所帮助,再次,如果你已经看过字符串函数,你应该查看你已经得到的文档(或google it)< / p>

我希望你不介意我不直接给你答案,因为这是一个家庭作业,你应该自己找到它,我只是觉得我会让你走上正轨。

答案 1 :(得分:0)

如果你不太关心时间复杂度,你可以只使用for循环来迭代传入的字符串。制作另一个字符串来保存返回的内容,比如称之为toReturn。在for循环中,您需要做的就是确定此字符是否为“”。使用.charAt(i)这样做。如果不是,只需将其附加到toReturn即可。在for循环之后,你将拥有你想要的东西。

答案 2 :(得分:0)

对于第一个,虽然有一种方法可以使用库方法,但鉴于它是一个家庭作业,你应该逐个循环遍历字符,然后将它们添加到一个新的&# 34;结果&#34;字符串如果符合标准(即不是空格)。

对于第二个,有一个库方法,您可以使用它来分隔空格上的字符串,这将为您提供单词列表。您还应该创建一个10&#34;数字&#34;话。然后,您可以迭代输入单词列表,看看它们是否与任何数字单词匹配。

答案 3 :(得分:0)

第一个问题是我如何获取我拥有的字符串并返回它没有空格。 trim()只删除句子的第一个和最后一个空格(getNoSpaceString方法)。

String input = "  Hello World  ";

您可以通过以下方式实现这一目标:

String input2 = input;

input2 = input.replaceAll(" ", "");

Take a look此处了解更多信息

第二个问题:

此外,我正在尝试计算我的句子所具有的数字字数,即一个是1位数字。

如果您正在尝试计算单词数量,那么:

int words = input.trim().split(" ").length;

System.out.println("number of words: " + words);

以下是split的工作原理 让我知道,这不是你在寻找第二个问题