java程序,用于计算以大写字母开头的单词数

时间:2015-09-17 15:20:46

标签: java

我想编写一个程序来计算以大写字母开头的单词数。它只算不了。大写字母不是单词试试这一行 “你好你好吗” 根据我的代码输出将是3 但他们只有一个单词以大写字母“嗨”开头......所以我怎么能解决这些问题......请帮我解决这个问题。

import java.util.*;

class Cap
{
    public static void main(String m[])
    {
        Scanner in=new Scanner(System.in);
        String s=new String();
        System.out.println("Enter a line:");
        s=in.nextLine();
        char c;
        int ct=0;
        for(int i=0;i<s.length();i++)
        {
            c=s.charAt(i);
            if(c>=65 && c<=90)
            {
                ct++;

            }
        }
        System.out.println("total  number of words start with capital letters are :"+ct);
    }
}

6 个答案:

答案 0 :(得分:2)

你最好使用scanner.next();,它以其他方式将标记返回到空格 word 。现在,你可以检查{{1}返回的字符串的第一个字符是大写还是不大写。

对于语句这是StackOverflow ,您将有三个令牌,next()Thisis,您可以在此StackOverflow上使用String.charAt(0) {1}}。

此外,您只需使用Character.isUpperCase方法检查字符是否为大写。

答案 1 :(得分:1)

导入java.util。*; 公共课程program_6 {

GtkWindow { background-color: #333; }

}

答案 2 :(得分:0)

目前,您正在计算输入的所有大写字母。 你想要做的是在空间上分割线,如果它是大写的话,只检查第一个字母。

public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    String s;
    System.out.println("Enter a line:");
    s=in.nextLine();
    int ct=0;
    for(String str: s.split(" ")) {
        if(str.charAt(0)>=65 && str.charAt(0)<=90)
        {
            ct++;

        }
    }
    System.out.println("total  number of words start with capital letters are :"+ct);
}

答案 3 :(得分:0)

您正在比较每个字符。相反,您可以在字符串的开头添加一个空格,并检查空格后的每个字符是否为大写。

Scanner in = new Scanner(System. in );
String s = new String();
System.out.println("Enter a line:");
s = " " + in .nextLine().trim();
char c;
int ct = 0;
for (int i = 1; i < s.length(); i++) {
    c = s.charAt(i);
    if (c >= 65 && c <= 90 && s.charAt(i - 1) == 32) {
        ct++;

    }
}
System.out.println("total  number of words start with capital letters are :" + ct);

DEMO

或更好地使用TAsk所说的scanner.next()

答案 4 :(得分:0)

试试这个:

Scanner in = new Scanner(System.in);
        String s = new String();
        System.out.println("Enter a line:");
        s = in.nextLine();
        char c;
        int ct = 0;
        for (int i = 0; i < s.length(); i++) {
            c = s.charAt(i);
            if (Character.isUpperCase(c)
                    && (i == 0 || Character.isWhitespace(s.charAt(i - 1)))) {
                ct++;

            }
        }
        System.out
                .println("total  number of words start with capital letters are :"
                        + ct);

答案 5 :(得分:0)

首先,我们检查第一个位置是否以大写字母开头,并且仅用于以大写字母开头的字符串...如果是,则计数将递增。下一个条件(用于以空格或其他任何字符串开头的字符串)将检查左位置必须有空格才能开始新单词,并且字符必须为大写字母以增加计数变量...

import java.util.*;
public class program_6
{

    public static void main(String[] args) 
    {
        String s1;
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the string... ");
        s1 = scan.nextLine();
        int count=0,i=0,n;
        n = s1.length();
        System.out.println("Size of the string is... " + n );
         if ( null == s1 || s1.isEmpty())
         {
             System.out.println("Text empty");
         }
         else 
         { 
               if( Character.isUpperCase(s1.charAt(0) ))
               {
                   count++;
               }
               for (i=1 ; i<n ; i++)
               {
                   if (  Character.isWhitespace(s1.charAt(i-1)) && Character.isUpperCase(s1.charAt(i) ) )
                    {
                       count++;
                    }
               }  
             }

        System.out.println("Number of the word wich starts with capital letter... " + count );
    }
}