推特测试程序

时间:2014-12-02 20:43:52

标签: java twitter

你好,我有一个工作代码,用于测试程序中的主题标签,属性和链接的数量,但是我需要测试是否在主题标签或属性之后使用了tab键或空格,以便不计算它们并且遇到了麻烦。

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter a tweet: ");
        String input = scan.nextLine();
        int length = input.length();
        int count = 0;
        int hashtags = 0, attributions = 0, links = 0;
        char letter;
        char letter2;
        if (length > 140) {
            System.out.println("Excess Characters: " + (length - 140));
        } else {
            while (count < length) {
                letter = input.charAt(count);
                if (letter == '#') {
                    if (input.startsWith("#\t", count)) {

                    } else {
                        hashtags++;
                        count++;
                    }

                    if (letter == '@') {
                        if (input.startsWith("@\t", count)) {
                            count++;
                        } else {
                            attributions++;
                            count++;
                        }
                    }

                    if (letter == 'h') {
                        input = input.toLowerCase();
                        if (input.startsWith("http://", count)) {
                            links++;
                            count++;
                        } else {
                            count++;
                        }
                    } else {
                        count++;
                    }
                }
                System.out.println("Length Correct");
                System.out.println("Number of Hashtags: " + hashtags);
                System.out.println("Number of Attributions: " + attributions);
                System.out.println("Number of Links: " + links);
            }
        }
    }
} 

1 个答案:

答案 0 :(得分:0)

一个简单的方法:

致电Character.isWhitespace(char)。 (例如:Character.isWhitespace(input.charAt(count+1)))。显然你需要检查以确保标签不是最后一个字符。

一些未经请求的建议:

  • 尽量不要使用.startsWith(),因为这仅限于特定字符,并且您必须为要检查的每个字符添加不同的if语句(空格,标签等)。我认识到这可能不适用于所有情况,例如您的.startsWith("http:")案例。在这种情况下,.startsWith()仍可以使用,但使用计数来获取索引:input.substring(count).startsWith("http:")(文档here

  • 您的代码当前面临的一个问题是空格检查始终从字符串的开头开始。对于输入字符串#\tabc #def #ghi,它将显示0个主题标签,因为它会使第一个案例中的空格失败,这是每次都要检查的空格。

  • 如果您经常if (letter=='<char>'),您可能想尝试使用switch语句(例如switch(letter))。在Java中,这适用于字符(或字符串,如果您使用的是Java 8)。这有助于避免有关支架放置等难以追踪的错误。