2013-12-13 5 views
0

Я изучаю Java, и в этот код есть ошибка. Я просто не знаю, как это исправить.Ошибка 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 не существует. Если у вас есть это в своем проекте, вы должны импортировать его в верхней части этого класса. И ваш для каждого должен быть написан следующим образом: для (...) {действий; } – Kloe2378231

+0

Пожалуйста, время от времени нажимайте 'Ctrl + Shift + F' в Eclipse, чтобы увидеть, как выглядит ваш код (это покажет вам, например, что у вас есть'; 'right after' for (..)'). Также что такое «RamdomCharacter»? Возможно ли, что вы хотите получить доступ к * Ra ** n ** domCharacter *? – Pshemo

+0

Научитесь использовать фигурные скобки ('' и '' ') для ваших циклов и' if/else'. – GriffeyDog

ответ

1

Вы имеете в виду класс RamdomCharacter.

  1. Я думаю, что вы имеете в виду RandomCharacter
  2. У вас есть такой класс в вашем проекте?
2

Ты ставишь ; с на конце вашей петли:

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 не импортируется должным образом. Вот почему вы получаете такую ​​ошибку. импортируйте класс должным образом.

Смежные вопросы