2015-12-02 2 views
1

Я новичок в java, и я изо всех сил борется! Я написал следующий код, но продолжаю получать ошибки. Все, что я пытаюсь сделать в данный момент, заполняет матрицу 5x5 буквой A. Вот что я до сих пор, я не уверен, что мне тоже нужно публиковать ошибки. Любая помощь будет очень признательна.Заполнение 2D-массива в Java

public class Encryption { 
    private String Unencoded, FiveLetterKeyword, EncryptedMessage; 

    //constructor method 
    public Encryption(String U, String F, String E) 
    { 
     Unencoded = U; 
     FiveLetterKeyword = F; 
     EncryptedMessage = E; 

    } 
    //create 2D string array 5 by 5 
    String Encrypt [][] = new String[5][5];   

    //create string filled with all letters of the alphabet 
    String String = new String 
     ("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"); 



    //method for loop to print out the matrix 
    public static void matrix() 
    //for loop to create matrix rows and columns   
    { 
     for (int row = 1; row < Encrypt.length; row++) 
     { 
      for (int column = 1; column < Encrypt[row].length; column++) 

      System.out.print(Encrypt[row][column] + " "); 
     }  
    } 

    //filling the array with the letter A 
    public char Encrypt(char Encrypt[][]) 
    { 
     //char[] alpha = alphabets.toCharArray; 

     //declaring variable to fill array with A   
     char aChar = "A"; 

     for (int row = 1; row < Encrypt.length; row++) 
     { 
      for (int column = 1; column < Encrypt.length; column++) 

      return Encrypt; 
     } 
    } 
} 
+0

Да, выкладывает ошибки и указать, где именно они происходят. Я бы также рекомендовал googling ошибки, чтобы попытаться понять, что они собой представляют, почему они происходят и как они могут быть исправлены. – tnw

+0

Просто обратите внимание, что вам не нужно использовать 'new String (" ... ")' и вместо этого просто использовать '' ... "', а при определении символа вам нужно использовать '' A'' вместо '' A''. Одиночные кавычки определяют символы, а двойные кавычки определяют строки – phflack

ответ

4

Массивы в Java являются нуля на основе, что означает, что они не начинаются с нулевого индекса и индекса до диапазона array.length-1.

Ваш код начинается rowcolumn и на 1 -Какой означает, что вы пропуск инициализации строки/столбца 0. Это, вероятно, где по крайней мере, некоторые из проблем, которые приходят, так как вы используете ваш массив 5x5 (строки/столбцы 0,1,2,3,4) в качестве массива 4x4 (строки/столбцы 1,2,3,4).

Существует также тот факт, что ваш метод Encrypt фактически не выполняет никаких присвоений массиву. Вероятно, вы хотите его инициализировать следующим образом:

// NOTE: changed return type to void -- this is a side-effect-only method! 
public void Encrypt(char Encrypt[][]) 
{ 
    // NOTE: use single-quotes for chars. double-quotes are for strings. 
    char aChar = 'A'; 
    // NOTE: changed the starting loop values from `1` to `0` 
    for (int row = 0; row < Encrypt.length; row++) 
    { 
     // NOTE: technically Encrypt.length works here since it's a square 
     // 2D array, but you should really loop until Encrypt[row].length 
     for (int column = 0; column < Encrypt[row].length; column++) 
     { 
      // NOTE: set each entry to the desired char value 
      Encrypt[row][column] = aChar; 
     } 
    } 
} 

Существует несколько проблем с исходным кодом. Посмотрите на записи NOTE в комментариях для отдельных объяснений.

+0

Это замечательно, спасибо большое. Хотя я все еще получаю 4 ошибки :(он говорит, что не статическая переменная Шифрование не может ссылаться на статический контекст? – missrigby

+0

@missrigby - Я предполагаю, что это потому, что вы использовали ключевое слово 'static' на свой метод' matrix() '- что означает, что он не может видеть (нестатические) поля 'Encrypt'. Избавьтесь от' static' перед 'matrix()', и он может исчезнуть ... – DaoWen

+0

Ahhh! Amazing. Большое спасибо! – missrigby

2

Вам не хватает самой важной части того, что вы пытаетесь выполнить.

Где вы устанавливаете матрицу на букву A?

Изменения функции Зашифровать на следующее:

//filling the array with the letter A 
public void Encrypt(char arr[][]) 
{ 
    //char[] alpha = alphabets.toCharArray; 

    //declaring variable to fill array with A   
    char aChar = 'A'; 

    for (int row = 0; row < arr.length; row++) 
    { 
     for (int column = 0; column < arr[row].length; column++) 
     { 
      arr[row][column] = aChar; 
     } 
    } 
} 
Смежные вопросы