2014-10-05 60 views
-1

我的目标是创建一个字母像这样的二维数组:如何填充一个二维字符数组用拼音

ABC

BCA

驾驶室

,使得每行和列有全部26个字母。我知道我可以用手工丑陋的方式做到这一点,但希望有人知道更有效的方式来填充阵列。

谢谢。

+2

提示:在一个'for'循环迭代从 'a' 到 'Z' 一个'char'。一些额外的代码[在这里](http://www.programmingsimplified.com/java/source-code/java-program-print-alphabets)。 – Voicu 2014-10-05 00:27:13

回答

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); 

    } 

} 

输出:[ABC,DEF,GHI,KLM,NOP,QRS,TUV,WXY,Z]

+0

在'for'循环中初始化数组会更好;例如:'char [] c = new char [26]; for(char letter ='a'; letter <='z'; letter ++)c [letter-'a'] = letter;' – TNT 2014-10-05 01:33:36

+0

就像1-26中只有数字字母的计数器一样? – Oliver 2014-10-05 11:28:45

+0

是的。这比硬编码数组元素容易得多。你也不应该直接捕获'Exception' - 指定你想要捕获的异常的类型,比如'ArrayIndexOutOfBoundsException'。 – TNT 2014-10-05 17:24:04