2017-03-24 6 views
0

この方法では、データファイル内の文字のタイプを数えます。それは文字A-Z(大文字)、a-z(小文字)、および任意の数字の数を正常に数えます。すでにカウントされている文字以外の文字がある場合はカウントする必要があります。私が試したすべてのものは、文字のすべて、文字のどれか、あるいは少数しか選択されていません。配列内にない文字の数を数えよう

おかげ

public void countChars(){ 
     String currentWord; 
     for(int pass = 0; pass < numberOfTokens; pass++){ 
     currentWord = words[pass]; 
     for (int i = 0; i < currentWord.length(); i++){ 
      char ch = currentWord.charAt(i); 
      if (ch >= 'A' && ch <= 'Z'){ 
       numberOfUpperCase++; 
      } 
      if (ch >= 'a' && ch <= 'z'){ 
       numberOfLowerCase++; 
      } 
      if (ch >= '0' && ch <= '9'){ 
       numberOfDigits++; 
      } 
     }  
     } 
    }//end of countChars 
+0

なぜ正規表現を使用しないのですか? – TheValyreanGroup

+0

どういう意味ですか? –

+0

[文字列配列の文字数]の複製があります(http://stackoverflow.com/questions/42617499/char-frequency-in-a-string-array) –

答えて

-1

あなたは、それが容易になります彼らのASCII値をチェックし(int) my_char

を使用して、それは価値がありますかどうかを確認する必要がありは0から47まで、58から64または91から127の間です。理由を理解するには、次の表を参照してください。ASCII VALUES

これは基本的にあなたが何をしているのかを、if(char >= a && char <= z)と言っています。次のコードで問題を解決できるはずです。

char my_char = '@'; 
    int ascii_value = (int) my_char; 

    System.out.println("ASCII value of " + my_char + " is " + ascii_value); 

    if((ascii_value >= 0 && ascii_value <= 47) || (ascii_value >= 58 && ascii_value <= 64) || (ascii_value >= 91 && ascii_value <= 127)){ 
     System.out.println("Your character is a symbol!"); 
    } 
+0

ASCII値はどのように使用しますか?私がちょうど(char <= 0 && char> = 30)を入力しても、それは0の広告30の間の数字を探しませんでしたか? –

+0

はい、あなたはcharを比較しません。ASCII値と比較します(これはあなたのcharでもあります)。私は答えにコードを追加します – Alan

関連する問題