2013-12-13 90 views
0

我正在學習java,並且存在此代碼的錯誤。我根本不知道如何解決它。Bug java。我不知道如何修復它

下面的代碼:

public class CountLettersInArray { 

    public static void main(String[] args) { 
    char[] chars = createArray(); 

    System.out.println("The lowercase letters are:"); 
    displayArray(chars);  

    int[] counts = countLetters(chars); 

    System.out.println(" "); 
    System.out.println("The occurence of each letter are: "); 
    displayCounts(counts); 
    } 

    public static void displayCounts(int[] counts) { 
     for (int i = 0; i < counts.length; i++); 
      if ((i + 1) % 10 == 0); 
       System.out.println(counts[i] + " " + (char)(i + 'a')); 
       else 
        System.out.println(counts[i] + " " + (char)(i + 'a') + " "); 


    } 

    public static int[] countLetters(char[] chars) { 
     //Declare and create an array of 26 int 
     int[] counts = new int[26]; 

     //For each lowercase letter in the array, count it 
     for (int i = 0; i < chars.length; i++); 
      counts[chars[i] - 'a']++; 

     return counts; 
    } 

    public static void displayArray(char[] chars) { 
     //Display the characters in the array 20/line 
     for (int i = 0; i < chars.length; i++); 
      if ((i + 1) % 20 == 0) 
       System.out.println(chars[i]); 
      else 
       System.out.print(chars[i] + " "); 
    } 

    public static char[] createArray() { 
     //Declare the array of characters and create it 
     char[] chars = new char[100]; 

     //Create lowercase characters randomly and assign them to array 
     for (int i = 0; i < chars.length; i++); 
      chars[i] = RamdomCharacter.getRandomLowerCaseLetter(); 
     //This return the array 
     return chars; 
    } 

} 

我與Eclypse編碼它和軟件告訴我,這兩件事情:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    i cannot be resolved to a variable 
    RamdomCharacter cannot be resolved 

我怎麼supose解決這一問題?

+0

正如Eclipse所說,RamdomCharacter類不存在。如果你在你的項目中有它,你必須將它導入到這個類的頂部。而你的每一個必須寫成這樣:for(...){actions; } – Kloe2378231

+0

請在Eclipse中不時按下「Ctrl + Shift + F」來查看你的代碼的真實外觀(例如,這會顯示你在'for(..)'後面有';')。另外什麼是「RamdomCharacter」?是否有可能要訪問* Ra ** n ** domCharacter *? – Pshemo

+0

學習如何爲您的循環和if/else結構使用大括號('{'和'}')。 – GriffeyDog

回答

1

您指的是RamdomCharacter類。

  1. 我想你的意思RandomCharacter
  2. 你在你的項目中有這樣一類?
2

你把; s的循環語句的末尾:

for (int i = 0; i < counts.length; i++); 
            ^

擺脫那些並環繞循環體與{}

現在的問題是i存在只有在循環範圍內。但是,您已通過添加;來終止循環範圍,因此當您在外部引用i時會收到編譯錯誤。

0
for (int i = 0; i < chars.length; i++); <--- remove the ; 
     counts[chars[i] - 'a']++; 

;結束聲明。因此,counts[chars[i] - 'a']++;不像您期望的那樣封裝在for循環中。所以它不能訪問那個變量i

  • 你做同樣的事情,其他兩次也
  • 使用括號{}封裝的循環
0

關於第二個問題,我沒有看到RamdomCharacter類的定義,其中,但我的猜測是,它實際上被稱爲RandomCharacter,其中n

0

除了其他兩個答案提到的問題,似乎RamdomCharacter沒有正確導入。這就是爲什麼你會得到這樣的錯誤。正確導入類。

相關問題