Java - 定义一个接收String的方法,并返回一个整数数组,其中包含每个元音的数量

时间:2017-04-09 14:34:52

标签: java arrays for-loop methods

(对不起提前q长 - 只是想详细说明!) 嗨,大家好, 我一直在努力让这段代码编译这么长时间,我已经到处研究过(包括在这里!)但似乎没有任何工作,我一直在收到错误。我不断调整我如何定义我的静态方法以及我在主要方法中所采用的方法,但现在我已经知道我不知道什么是错误的。这些错误对我没有意义。 正如标题中所说,我需要编写一个包含静态方法的程序,该方法在调用时将返回一个整数数组,描述输入字符串中的元音数量,无论大小写如何。 a在4指数处一直到0指数。所以 vowelCount(" EeioOoua")将返回{1,2,1,3,1}的数组。

这个问题与更多的人相关,而不仅仅是我自己,因为通常你希望能够计算一个对象内部的元素数量,然后将它组织成一个数组。我个人还没有看到一个堆栈溢出问题以这种方式/使用这些参数来解决这个问题。我们将非常感谢您提供的任何帮助或指导。

请参阅我的代码和我在下面得到的错误:

以下是我的完整代码:

    import java.util.*;
    import java.io.*;
    import java.util.Arrays;

    class Vowels
    {
        public static void main (String [] args)
        {
            vowelCount(String [] letters);
        }
        private static String [] vowelCount (String [] letters)
        {
            String [] letters = new String[5];
            for (int i = 0; i < letters.length; i++)
            {
                if (letters.charAt(i) == 'A' || letters.charAt(i) == 'a')
                {
                    letters[0] = letters[0]++;
                }
                if (letters.charAt(i) == 'E' || letters.charAt(i) == 'e')
                {
                    letters[1] = letters[1]++;
                }
                    if (letters.charAt(i) == 'I' || letters.charAt(i) == 'i')
                {
                    letters[2] = letters[2]++;
                }
                if (letters.charAt(i) == 'O' || letters.charAt(i) == 'o')
                {
                    letters[3] = letters[3]++;
                }
                    if (letters.charAt(i) == 'U' || letters.charAt(i) == 'u')
                {
                    letters[4] = letters[4]++;
                }
            }
            return letters;
        }
    }

使用上面的代码,我只有两个错误:

Vowels.java:9: error: '.class' expected
    vowelCount(String [] letters);
                         ^
Vowels.java:9: error: ';' expected
    vowelCount(String [] letters);

但是,根据我看到的东西(我认为堆栈溢出)

我刚刚更改了'vowelCount(String []字母)&#39;到

String [] userInput = {"I hate this problem set"};
String [] counting = vowelCount (userInput);
vowelCount (userInput);

现在这些都是我的错误(现在我有16个错误):

Vowels.java:16: error: variable letters is already defined in method   vowelCount(String[])
    String [] letters = new String[5];
              ^
Vowels.java:19: error: cannot find symbol
        if (letters.charAt(i) == 'A' || letters.charAt(i) == 'a')
                   ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:19: error: cannot find symbol
        if (letters.charAt(i) == 'A' || letters.charAt(i) == 'a')
                                               ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:21: error: bad operand type String for unary operator '++'
            letters[0] = letters[0]++;
                                   ^
Vowels.java:23: error: cannot find symbol
                if (letters.charAt(i) == 'E' || letters.charAt(i) == 'e')
                           ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:23: error: cannot find symbol
                if (letters.charAt(i) == 'E' || letters.charAt(i) == 'e')
                                                       ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:25: error: bad operand type String for unary operator '++'
            letters[1] = letters[1]++;
                                   ^
Vowels.java:27: error: cannot find symbol
                    if (letters.charAt(i) == 'I' || letters.charAt(i) == 'i')
                               ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:27: error: cannot find symbol
                    if (letters.charAt(i) == 'I' || letters.charAt(i) == 'i')
                                                           ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:29: error: bad operand type String for unary operator '++'
                    letters[2] = letters[2]++;
                                           ^
Vowels.java:31: error: cannot find symbol
            if (letters.charAt(i) == 'O' || letters.charAt(i) == 'o')
                       ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:31: error: cannot find symbol
            if (letters.charAt(i) == 'O' || letters.charAt(i) == 'o')
                                                   ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:33: error: bad operand type String for unary operator '++'
                    letters[3] = letters[3]++;
                                           ^
Vowels.java:35: error: cannot find symbol
                if (letters.charAt(i) == 'U' || letters.charAt(i) == 'u')
                           ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:35: error: cannot find symbol
                if (letters.charAt(i) == 'U' || letters.charAt(i) == 'u')
                                                       ^
symbol:   method charAt(int)
location: variable letters of type String[]
Vowels.java:37: error: bad operand type String for unary operator '++'
                    letters[4] = letters[4]++;

3 个答案:

答案 0 :(得分:0)

这里有很多错误。

首先,您可以像这样定义静态方法:

private static String [] vowelCount (String [] letters) {/* rest of code */}

将字符串数组作为参数。在您的示例中,您输入&#34; EeioOoua&#34;,这只是一个字符串。

然后,再往下,你重复使用你的参数的变量名,字母:

String [] letters = new String[5];

你不能像这样两次使用相同的变量名。

最后,您尝试增加一个字符串:

letters[0] = letters[0]++;

这没有任何意义,因为你在静态方法中创建的数组应该是一个整数数组。毕竟,你想要用它计算一些东西。

答案 1 :(得分:0)

与一位CS专家的朋友坐在一起后,我发现了什么是错的。我基本上一直使用字母作为字符串和数组,以及其他一些愚蠢的错误!

以下是我的解决方案:

    import java.util.*;
    import java.io.*;
    import java.util.Arrays;
    import java.lang.Object;

    class Vowels
    {
        public static void main (String [] args)
        {
            vowelCount("I love programming");
        }
        private static int [] vowelCount (String input)
        {
            int [] vowelNum = {0, 0, 0, 0, 0};

            for (int i = 0; i < input.length(); i++)
            {
                if (input.charAt(i) == 'A' || input.charAt(i) == 'a')
                {
                    vowelNum[0]++;
                }
                if (input.charAt(i) == 'E' || input.charAt(i) == 'e')
                {
                    vowelNum[1]++;
                }
                if (input.charAt(i) == 'I' || input.charAt(i) == 'i')
                {
                    vowelNum[2]++;
                }
                if (input.charAt(i) == 'O' || input.charAt(i) == 'o')
                {
                    vowelNum[3]++;
                }
                if (input.charAt(i) == 'U' || input.charAt(i) == 'u')
                {
                    vowelNum[4]++;
                }
           }
           System.out.println(Arrays.toString(vowelNum)); 
           return vowelNum;
       }
    }

编译和一切 - 美丽:)

答案 2 :(得分:0)

假设您不必使用数组。一个名为“VowelCounter”的简单类将使事情变得更容易。下面是一个非常基本的类叫做“VowelCounter”,就是这样,它保留了元音的数量。这是使用数组的替代方法。如果必须返回一个大小为5的整数数组,其中元素0是数字A的计数,则元素1是E的数量...等...我添加了一个方法GetIntegerCountsInAnArray()来返回此整数数组。希望这有意义并有所帮助。

public class VowelCounter {

  public int A_Count = 0;
  public int E_Count = 0;
  public int I_Count = 0;
  public int O_Count = 0;
  public int U_Count = 0;

  public VowelCounter () { }

  public String toString() {
    return "A:" + A_Count + " E:" + E_Count + " I:" + I_Count + " O:" + O_Count + " U:" + U_Count;
  }

  public Integer[] GetIntegerCountsInAnArray() {
    Integer[] vowelArray = new Integer[5];
    vowelArray[0] = A_Count;
    vowelArray[1] = E_Count;
    vowelArray[2] = I_Count;
    vowelArray[3] = O_Count;
    vowelArray[4] = U_Count;
    return vowelArray;
  }
}

然后您可以使用下面的这个类来帮助您计算给定字符串中的元音。此方法创建一个新的VowelCounter对象并使用它来计算元音,然后返回此VowelCounter对象。

private static VowelCounter vowelCount (String inString)  {
    String stringToSearch = inString.toLowerCase();
    VowelCounter vowelCounter = new VowelCounter();
    for (char curCharacter : stringToSearch.toCharArray()) {
      switch (curCharacter) {
        case 'a':
          vowelCounter.A_Count++;
          break;
        case 'e':
          vowelCounter.E_Count++;
          break;
        case 'i':
          vowelCounter.I_Count++;
          break;
        case 'o':
          vowelCounter.O_Count++;
          break;
        case 'u':
          vowelCounter.U_Count++;
          break;
        default:
          break;
      }
    }
    return vowelCounter;
}

最后一个让Class和方法起作用的主要方法。

public static void main(String[] args) {
  String testString = "EeioOoua";
  VowelCounter vc = vowelCount(testString);
  System.out.println(vc);
}