我的目標是創建一個字母像這樣的二維數組:如何填充一個二維字符數組用拼音
ABC
BCA
駕駛室
,使得每行和列有全部26個字母。我知道我可以用手工醜陋的方式做到這一點,但希望有人知道更有效的方式來填充陣列。
謝謝。
我的目標是創建一個字母像這樣的二維數組:如何填充一個二維字符數組用拼音
ABC
BCA
駕駛室
,使得每行和列有全部26個字母。我知道我可以用手工醜陋的方式做到這一點,但希望有人知道更有效的方式來填充陣列。
謝謝。
在這裏你去。
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
我在這裏得到了一些東西!不是最好的,但可能喜歡它。
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]
在'for'循環中初始化數組會更好;例如:'char [] c = new char [26]; for(char letter ='a'; letter <='z'; letter ++)c [letter-'a'] = letter;' – TNT 2014-10-05 01:33:36
就像1-26中只有數字字母的計數器一樣? – Oliver 2014-10-05 11:28:45
是的。這比硬編碼數組元素容易得多。你也不應該直接捕獲'Exception' - 指定你想要捕獲的異常的類型,比如'ArrayIndexOutOfBoundsException'。 – TNT 2014-10-05 17:24:04
提示:在一個'for'循環迭代從 'a' 到 'Z' 一個'char'。一些額外的代碼[在這裏](http://www.programmingsimplified.com/java/source-code/java-program-print-alphabets)。 – Voicu 2014-10-05 00:27:13