2014-10-05 73 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