2017-04-09 52 views
0

(對不起,提前很長一段時間 - 只是想詳細說明) 大家好, 我一直在掙扎讓這段代碼編譯了這麼久,而且我到處研究過(包括在這裏!),但似乎沒有任何工作,我不斷收到錯誤。我不斷調整自己如何定義靜態方法以及我在主要方法中所做的工作,但現在我處於一個不知道錯誤的地步,而這些錯誤對我來說並不合適。 正如它在標題中所說的,我需要編寫一個包含靜態方法的程序,當被調用時,它將返回一個整數數組,表示輸入的字符串中的元音數量,而不管大小寫。 a在4指數處於0的位置。所以 vowelCount(「EeioOoua」)會返回一個{1,2,1,3,1}的數組。Java - 定義一個方法,它接受一個字符串並返回一個包含每個元音數字的整數數組

這個問題是關係到更多的人,而不僅僅是我自己,因爲通常你想能夠計算一個對象內的元素數量,然後在數組中組織。我個人還沒有看到一個堆棧溢出問題,以這種方式/這些參數解決這個問題。任何可以提供的幫助或方向將不勝感激。

請看看我的代碼和錯誤,我得到如下:

這是我在全碼:

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); 

但是,根據我看到的(我認爲堆棧溢出)

我剛剛改變了'vowe lCount(字符串[]字母)」來

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]++; 
+0

改變你的參數名稱letters1或任何其他但不信,你也需要學習更多的陣列,因爲在你的第19行錯誤它應該包含一個數組元素字母[I] ...的charAt(0) – abcOfJavaAndCPP

+0

你是否一個接一個地檢查錯誤?首先,你正在重新定義這個論點,所以沒有任何意義。其次,'charAt'是'String'的一種方法! '字母'不是一個字符串。你不能在字符串上使用'++'! – Li357

+0

爲此使用數組使其變得複雜。一個名爲「VowelCounter」的類會更容易。你堅持不得不使用數組? – JohnG

回答

0

這裏有相當多的錯誤。

首先,你定義靜態方法,像這樣:

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

這需要一個字符串數組作爲參數。在你的例子中,你輸入「EeioOoua」,這只是一個字符串。

然後,再往下,你再使用變量名的說法,字母:

String [] letters = new String[5]; 

不能使用相同的變量名兩次這樣的。

最後,你嘗試增加的字符串:

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

這是沒有意義的,這是因爲你的靜態方法中創建數組應該是一個整數數組。畢竟,你希望你用它來計算一些東西。

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; 
     } 
    } 

編譯和一切 - 美麗的:)

0

假設你沒有使用數組。一個名爲「VowelCounter」的簡單類將使事情變得更容易。下面是一個叫做「VowelCounter」的非常基本的類,它只是這樣做的,它保留了元音的數量。這是使用數組的替代方法。如果你必須返回一個大小爲5的Integer數組,其中元素0是數字A的數量,元素1是E的數量等...我增加了一個方法GetIntegerCountsInAnArray()來返回這個Integer數組。希望這是有道理的,並幫助。

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; 
} 

最後是一個讓類和方法工作的主要方法。

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