2014-10-06 5 views
0

Я пытаюсь завершить эту программу для задания домашней работы, и это единственное, что не работает. Я получаю ожидаемую ошибку в этой строке:Недопустимый идентификатор при использовании ArrayList <Character>

System.out.println (myChars.equals (дополнение));

Вот мой код

public class WCpalindrome { 
    private static char[] dna = {'A', 'C', 'T', 'G'}; 
    private static ArrayList<Character> myChars = new ArrayList<Character>(); 
    private static ArrayList<Character> reverse = new ArrayList<Character>(); 
    private static ArrayList<Character> complement = new ArrayList<Character>(); 


public static char toUpperCase(char c) { 
    if (c == 'A' || c == 'a') { 
    return 'A'; 
    } else if (c == 'T' || c == 't') { 
    return 'T'; 
    } else if (c == 'C' || c == 'c') { 
    return 'C'; 
    } 
    return 'G'; 
} 

public static char getComplement(char c) { 
    if (c == 'A' || c == 'a') { 
    return 'T'; 
    } else if (c == 'T' || c == 't') { 
    return 'A'; 
    } else if (c == 'C' || c == 'c') { 
    return 'G'; 
    } 
    return 'C'; 
} 

public static void main(String[] args) { 

    char current; 
    int i = 0; 

    //Get the input sequence 
    while (StdIn.hasNextChar()) { 
    current = StdIn.readChar(); 
    current = toUpperCase(current); 
    myChars.add(current); 
    StdOut.println(myChars.get(i)); 
    i++; 
    } 

    System.out.println(); 

    //Reverse the sequence 
    int k = 0; 
    int size = myChars.size() - 1; 
    for (int j = size-1; j >= 0; j--) { 
    current = myChars.get(j); 
    StdOut.println(current); 
    reverse.add(k, current); 
    k++; 
    } 

    System.out.println(); 

    //Complement the reversed sequence 
    int n = 0; 
    size = myChars.size() - 1; 
    for (n = 0; n < size; n++) { 
    current = reverse.get(n); 
    complement.add(getComplement(current)); 
    StdOut.println(complement.get(n)); 
    } 
} 

//Prints true if the original equals the complement of the reversal 
//else it prints false 
System.out.println(myChars.equals(complement)); 

}

+0

Когда следует, что линия будет выполнена? –

ответ

3

Линия вы говорите не внутри любого метода. Я думаю, вы хотите перенести его в свой основной метод.

-1
System.out.println(myChars.equals(complement)); 

вне основного метода.

это должно быть в конце

} 
//Prints true if the original equals the complement of the reversal 
    //else it prints false 
    System.out.println(myChars.equals(complement)); 
} 
} 
0

У вас есть место утверждение System.out.println(...); вне main(). Сдвиньте его на 3 строки. Теперь он находится на том уровне, на котором ожидаются объявления методов и полей.

Также равные всегда будут возвращать false, поскольку экземпляры массива не сравнивают их внутри элементов. One might use Arrays.equals`, но вы могли бы просто использовать:

System.out.println(new String(myChars).equals(new String(complement)));