有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

元音和辅音

我很难完成这段关于计算字符串中元音和辅音数量的代码。 当我向类发送一个字符串时,getVouelCount方法和getConstCount方法都被证明是错误的,我相信问题出在这两个方法的for循环中,我尝试用字符串的特定字符调用Isleter方法,但我不确定。我明白了

Exception in thread "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) 个答案

  1. # 1 楼答案

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

    public DCMvowelsAndConsonants() {
          this.line = " ";
    }
    
    public DCMvowelsAndConsonants(String l) {
          this.line = l;
    }
    
  2. # 2 楼答案

    更改构造函数以删除“字符串”部分。这就是声明一个局部变量并赋值给它,而不是赋值给你的成员变量

    所以它们应该看起来像:

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