2015-09-17 45 views
1

我想編寫一個程序來計算以大寫字母開頭的單詞數。它只計數不。大寫字母不試試這一行 「你好,我是你」 根據我的代碼輸出將是3 但是他們只有一個單詞,以大寫字母'Hi'開頭......所以我該如何解決這些問題問題..請幫助我。java程序來計算以大寫字母開頭的單詞數

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); 
    } 
} 

回答

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); 
} 
2

你應該更好地利用scanner.next();,其中最多的空白返回令牌等方式。現在,你可以檢查字符串的第一個字符由next()返回是大寫或沒有。

對於聲明這是StackOverflow的你將有三個令牌,ThisisStackOverflow,你可以在此String使用String.charAt(0)

此外,您可以簡單地使用Character.isUpperCase方法來檢查字符是否大寫。

+0

簡單明瞭,最好的答案海事組織。 – Phantomazi

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

或更好地利用scanner.next()通過任務

+0

您只檢查在大寫字母...選項卡之前是否有空格。 br ?,如果大寫字母是字符串中的第一個,程序將拋出一個java.lang.StringIndexOutOfBoundsException –

+0

@DavidHerrero不,它不會檢查演示 – silentprogrammer

+1

對不起.didnt看到'int i = 1',我的故障;) –

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); 
相關問題