2014-10-05 2 views
-1

Моя цель заключается в создании 2d массив алфавита, как это:Как заполнить 2d массив символов с алфавитом

аЬс

BCA

кабина

Такой, что каждая строка и столбец имеет все 26 букв. Я знаю, что могу сделать это ручным уродливым способом, но надеялся, что кто-то знает более эффективный способ заполнения массива.

спасибо.

+2

Подсказка: итерацию на 'char' от 'а' до 'Z' в' for' петле. Дополнительный код [здесь] (http://www.programmingsimplified.com/java/source-code/java-program-print-alphabets). – Voicu

ответ

1

Здесь вы идете.

class Alphabet { 
public static void main(String args[]) { 

    // Create an array that will hold the grid 
    char alphGrid[][] = genArray(); 

    // Two for loops to print the grid on the screen 
    for(int i=0; i<26; i++) { 

     for(int j=0; j<26; j++) { 
      System.out.print(alphGrid[i][j]); 
     } 
     System.out.println(); 
    } 

} // end of main 

// Create a function to generate the grid 
public static char[][] genArray(){ 
    char[][] arr = new char[26][26]; 

    // Two for loops to generate the grid 
    for(int i = 0; i < 26; i++) { 
     for(int j = 0; j < 26; j++) { 

      // Creates an int that will later be cast to a char 
      int let = i + j; 

      // Keeps the int from getting too big 
      if(let >= 26) 
       let = let - 26; 

      // Add 65 to the int so that the char will return letters and not ASCII symbols 
      let = let + 65; 

      // Cast the int to a char 
      char letter = (char)let; 

      // Put the char into its respective place in the array 
      arr[i][j] = letter; 

     } 
    } 

    // Returns the grid 
    return arr; 
} 
} 

Выход:

ABCDEFGHIJKLMNOPQRSTUVWXYZ 
BCDEFGHIJKLMNOPQRSTUVWXYZA 
CDEFGHIJKLMNOPQRSTUVWXYZAB 
DEFGHIJKLMNOPQRSTUVWXYZABC 
EFGHIJKLMNOPQRSTUVWXYZABCD 
FGHIJKLMNOPQRSTUVWXYZABCDE 
GHIJKLMNOPQRSTUVWXYZABCDEF 
HIJKLMNOPQRSTUVWXYZABCDEFG 
IJKLMNOPQRSTUVWXYZABCDEFGH 
JKLMNOPQRSTUVWXYZABCDEFGHI 
KLMNOPQRSTUVWXYZABCDEFGHIJ 
LMNOPQRSTUVWXYZABCDEFGHIJK 
MNOPQRSTUVWXYZABCDEFGHIJKL 
NOPQRSTUVWXYZABCDEFGHIJKLM 
OPQRSTUVWXYZABCDEFGHIJKLMN 
PQRSTUVWXYZABCDEFGHIJKLMNO 
QRSTUVWXYZABCDEFGHIJKLMNOP 
RSTUVWXYZABCDEFGHIJKLMNOPQ 
STUVWXYZABCDEFGHIJKLMNOPQR 
TUVWXYZABCDEFGHIJKLMNOPQRS 
UVWXYZABCDEFGHIJKLMNOPQRST 
VWXYZABCDEFGHIJKLMNOPQRSTU 
WXYZABCDEFGHIJKLMNOPQRSTUV 
XYZABCDEFGHIJKLMNOPQRSTUVW 
YZABCDEFGHIJKLMNOPQRSTUVWX 
ZABCDEFGHIJKLMNOPQRSTUVWXY 
0

У меня есть что-то здесь! Не самый лучший, но, возможно, такой же, как у него.

import java.util.ArrayList; 
import java.util.List; 

public class Alphabet{ 

    public static void main(String[] args){ 
     char[] c = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; 
     List<String> s = new ArrayList<>(9); 

     for(int i = 0; i < c.length; i+=3){ 
      try{   
       s.add(""+c[i] + c[i + 1] + c[i + 2]); 
      }catch(Exception e){ 

       try{   
        s.add(""+c[i] + c[i + 1]); 
       }catch(Exception e1){ 

        try{   
         s.add(""+c[i]); 
        }catch(Exception e2){ 

        } 
       } 
      } 
     } 


     System.out.println(s); 

    } 

} 

Выхода: [азбука, Защита, ГХИ, клй, NOP, QRS, ТЮФ, WXY, г]

+0

Было бы лучше инициализировать массив в цикле 'for'; например: 'char [] c = new char [26]; for (char letter = 'a'; letter <= 'z'; letter ++) c [letter-'a '] = letter; ' – TNT

+0

Как счетчик с 1-26 с буквами с номерами? – Oliver

+0

Да. Это намного проще, чем hardcoding элементов массива. Также вы не должны ловить 'Exception' напрямую - укажите тип исключения, которое вы хотите поймать, например' ArrayIndexOutOfBoundsException'. – TNT

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