私がJavaの基本を理解したと思ったとき(完全な学期でした!)、何かが私にそれを疑わせることがあります。私はいくつかの練習レビューを行っていますが、少し問題があります。コードは次のとおりです。
public class LetterCount
{
private char[] wordArray;
private int numVowels = 0, numConsonants = 0, numSpaces = 0, numDigits = 0;
public LetterCount(String str)
{
wordArray = str.toCharArray();
}
public int getNumVowels()
{
for (int count = 0; count < wordArray.length; count++)
{
if (wordArray[count] == 'a' || wordArray[count] == 'e' ||
wordArray[count] == 'i' || wordArray[count] == 'o' || wordArray[count]
== 'u' || wordArray[count] == 'y')
numVowels++;
}
return numVowels;
}
public int getNumDigits()
{
for (int count = 0; count < wordArray.length; count++)
{
if (Character.isDigit(wordArray[count]))
numDigits++;
}
return numDigits;
}
public int getWhiteSpace()
{
for (int count = 0; count < wordArray.length; count++)
{
if (Character.isSpaceChar(wordArray[count]))
numSpaces++;
}
return numSpaces;
}
public int getNumConsonants()
{
numConsonants = wordArray.length - getNumVowels() - getNumDigits() - getWhiteSpace();
return numConsonants;
}
public String toString()
{
String str = "Characters: " + wordArray.length + "\n" +
"Vowels: " + getNumVowels() + "\n" +
"Consonants: " + getNumConsonants() + "\n" +
"Digits: " + getNumDigits() + "\n" +
"Spaces: " + getWhiteSpace();
return str;
}
}
出力は次のとおりです。
Enter a sentence: this is a test 4 u
Characters: 18
Vowels: 5
Consonants: 2
Digits: 2
Spaces: 10
私の質問:1)toString()メソッドでフィールド名を使用できると確信していました(たとえば、numVowelsとgetNumConsonants())が、このクラスではメソッド名を使用する必要があるようです。フィールド名を使用すると0になります。なぜ違いがあるのですか?方程式を返す場合は、メソッド名を使用する必要があることを私は知っています。
2)numConsonants()メソッドが正しい数値を返さない理由もわかりません。各フィールドを個別に返すと(フィールド名を呼び出せないためメソッドを呼び出すと)、正しい番号が取得されます。それらを方程式に入れてください、そしてそれは正しくありません。私は何が間違っているのですか?
これが元の主な方法です。それ以来、LetterCountクラスのメソッドを呼び出すように編集しました。
import java.util.Scanner;
public class LetterCountDemo {
public static void main(String[] args)
{
String sentence;
LetterCount lc;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a sentence: ");
sentence = keyboard.nextLine();
lc = new LetterCount(sentence);
System.out.println(lc);
}
}
追加した:
lc.getNumVowels();
lc.getNumConsonants();