元音和辅音Java

时间:2016-04-05 00:46:08

标签: java

我无法完成有关计算字符串中元音和辅音数量的代码。 当我将一个字符串发送到类时,getVowelCount方法和getConstCount方法都变成了一个错误我认为问题出现在两个方法的for循环中,我尝试用字符串的特定字符调用isLetter方法但我不确定。我得到了

  

线程“main”中的异常java.lang.NullPointerException / at DCMvowelsAndConsonants.getVowelCount(DCMvowelsAndConsonants.java:30)/ at DCMvowelsAndConsonantsDriver.main(DCMvowelsAndConsonantsDriver.java:40)

我不确定是否应该发布驱动程序,因为它已经很大了。

public class DCMvowelsAndConsonants
{
   String line;

   public DCMvowelsAndConsonants()
   {
      String line = " ";
   }

   public DCMvowelsAndConsonants(String l)
   {
      String line = l;
   }

   public static boolean isLetter(char i)
   {
      return i == 'a' || i == 'A' || i == 'e' || i == 'E' || i == 'i' || i == 'I' || i == 'o' || i == 'O' || i == 'u' || i == 'U';
   }

   public int getVowelCount()
   {
      int vowelCount = 0;

      for(int i = 0; i < line.length(); i++)
      {
         if(isLetter(line.charAt(i)))
            vowelCount++;
      }
      return vowelCount;
   }

   public int getConstCount()
   {
      int constCount = 0;

      for(int i = 0; i < line.length(); i++)
      {
         if(!isLetter(line.charAt(i)))
            constCount++;
      }
      return constCount;
  }
}

2 个答案:

答案 0 :(得分:4)

更改构造函数以删除&#34; String&#34;部分。这是声明一个局部变量并分配给它,而不是分配给你的成员变量。

所以他们应该看起来像:

   public DCMvowelsAndConsonants()
   {
      line = " ";
   }

   public DCMvowelsAndConsonants(String l)
   {
      line = l;
   }

答案 1 :(得分:0)

你的问题在于你的构造函数。您正在构造函数中创建一个新变量。将构造函数替换为:

public DCMvowelsAndConsonants() {
      this.line = " ";
}

public DCMvowelsAndConsonants(String l) {
      this.line = l;
}