今天来实现一个有趣的Java编程案例——输出24个希腊字母。
案例解析
输出24个希腊字母,利用Unicode码实现
编写程序,输出24个希腊字母,每行输出10个字母后换行。提示:在Unicode字符表中,希腊字母是从945开始的24个字符,可以使用(char)进行强制类型转换。
# 源文件保存为“GreekAlphabetPrinter.java”。
public class GreekAlphabetPrinter {
public static void main(String[] args) {
System.out.println("24个希腊字母:");
// 每行输出10个字母
int i = 945;
for(int m= 0;m<24;m++) {
System.out.print((char) (i+ m)+ " ");
if ((m + 1) % 10 == 0) {
System.out.println();
}
}
}
}
运行结果
24个希腊字母: α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ υ φ χ ψ
代码解析
i=945
是希腊字母α(alpha)的Unicode编码,后续字母编码是连续数字(α=945, β=946...ω=969),循环通过i+m实现编码递增。(char)(i+m)
是代码精髓:把数字强制转换为对应的Unicode字符。(m+1)%10==0
在打印第10/20个字母时换行。
输出24个希腊字母,利用数组实现
编写程序,输出24个希腊字母,每行输出10个字母后换行。提示:利用数组保存24个希腊字符。
# 源文件保存为“GreekAlphabetPrinter.java”。
public class GreekAlphabetPrinter {
public static void main(String[] args) {
// 定义希腊字母数组
char[] greekLetters = {
'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ',
'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ',
'φ', 'χ', 'ψ', 'ω'
};
System.out.println("24个希腊字母:");
// 每行输出10个字母
for (int i = 0; i < greekLetters.length; i++) {
System.out.print(greekLetters[i] + " ");
// 每输出10个字母换行
if ((i + 1) % 10 == 0) {
System.out.println();
}
}
}
}
运行结果
24个希腊字母: α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
代码解析:
- 定义了一个字符数组
greekLetters
,存储24个希腊字母。 - 使用
for
循环遍历数组中的每个字母。 System.out.print
不换行打印当前字母。- 利用
(i + 1) % 10 == 0
判断是否已经输出10个字母. - 当计数器
i+1
能被10整除时,执行System.out.println()
输出换行符。 - 最终输出效果是每行10个字母,共3行(最后一行4个字母)
带编号的希腊字母输出
编写程序,给每个希腊字母加上编号,格式为"1.α 2.β ..."。
# 源文件保存为“NumberedGreekLetters.java”。
public class NumberedGreekLetters {
public static void main(String[] args) {
char[] greekLetters = {
'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ',
'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ',
'φ', 'χ', 'ψ', 'ω'
};
System.out.println("带编号的希腊字母:");
for (int i = 0; i < greekLetters.length; i++) {
// 格式化输出编号和字母
System.out.printf("%2d.%s ", i + 1, greekLetters[i]);
// 每行5组数据
if ((i + 1) % 5 == 0) {
System.out.println();
}
}
}
}
运行结果 带编号的希腊字母:
1.α 2.β 3.γ 4.δ 5.ε 6.ζ 7.η 8.θ 9.ι 10.κ 11.λ 12.μ 13.ν 14.ξ 15.ο 16.π 17.ρ 18.σ 19.τ 20.υ 21.φ 22.χ 23.ψ 24.ω
代码解析:
- 仍然使用字符数组存储希腊字母。
System.out.printf
格式化输出,%2d
表示2位宽的整数编号。- 每行输出5组编号和字母。
(i + 1) % 5 == 0
判断是否已经输出5组数据。- 输出效果更整齐,便于查看。
输出英文字母表
编写程序,使用类似的方法输出26个英文字母。
# 源文件保存为“EnglishAlphabet.java”。
public class EnglishAlphabet {
public static void main(String[] args) {
// 输出小写字母
System.out.println("小写英文字母:");
for (char c = 'a'; c <= 'z'; c++) {
System.out.print(c + " ");
if ((c - 'a' + 1) % 10 == 0) {
System.out.println();
}
}
// 输出大写字母
System.out.println("\n\n大写英文字母:");
for (char c = 'A'; c <= 'Z'; c++) {
System.out.print(c + " ");
if ((c - 'A' + 1) % 10 == 0) {
System.out.println();
}
}
}
}
运行结果
小写英文字母: 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
大写英文字母: 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
代码解析:
- 利用字符可以直接递增的特性
c - 'a' + 1
计算当前字母的位置- 同样每行输出10个字母
- 分别输出小写和大写字母表
输出特殊符号
编写程序,输出一组常用的数学符号。
# 源文件保存为“MathSymbols.java”。
public class MathSymbols {
public static void main(String[] args) {
String[] symbols = {
"≠", "≈", "≡", "≤", "≥", "±", "×", "÷", "√", "∞",
"∫", "∑", "∏", "∂", "∆", "∇", "∈", "∉", "∩", "∪",
"∴", "∵", "∅", "∎"
};
System.out.println("常用数学符号:");
for (int i = 0; i < symbols.length; i++) {
System.out.print(symbols[i] + " ");
if ((i + 1) % 8 == 0) {
System.out.println();
}
}
}
}
运行结果 常用数学符号:
≠ ≈ ≡ ≤ ≥ ± × ÷ √ ∞ ∫ ∑ ∏ ∂ ∆ ∇ ∈ ∉ ∩ ∪ ∴ ∵ ∅ ∎
代码解析:
- 使用字符串数组存储特殊符号
- 每行输出8个符号
- 展示了如何处理Unicode特殊字符
- 输出效果整齐美观
字母金字塔
编写程序,用希腊字母构建金字塔图案:
# 源文件保存为“GreekPyramid.java”。
public class GreekPyramid {
public static void main(String[] args) {
char[] letters = {'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι'};
for (int i = 0; i < 5; i++) {
// 打印空格
for (int j = 0; j < 5 - i - 1; j++) {
System.out.print(" ");
}
// 打印字母
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print(letters[i] + " ");
}
System.out.println();
}
}
}
运行结果
α
β β β
γ γ γ γ γ
δ δ δ δ δ δ δ ε ε ε ε ε ε ε ε ε
代码解析:
- 外层循环控制金字塔层数
- 第一个内层循环控制空格输出
- 第二个内层循环控制字母输出
- 构建出金字塔形状的字母图案
- 展示了循环嵌套的应用
实践练习题
练习:交替输出大小写希腊字母
希腊字母也有大写形式,编写程序,交替输出大小写
# 源文件保存为“UpperLowerGreek.java”。
public class UpperLowerGreek {
public static void main(String[] args) {
char[] lowerGreek = {
'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ',
'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ',
'φ', 'χ', 'ψ', 'ω'
};
char[] upperGreek = {
'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ',
'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ',
'Φ', 'Χ', 'Ψ', 'Ω'
};
System.out.println("交替大小写希腊字母:");
for (int i = 0; i < lowerGreek.length; i++) {
if (i % 2 == 0) {
System.out.print(lowerGreek[i] + " ");
} else {
System.out.print(upperGreek[i] + " ");
}
if ((i + 1) % 10 == 0) {
System.out.println();
}
}
}
}
运行结果
交替大小写希腊字母: α Β γ Δ ε Ζ η Θ ι Κ λ Μ ν Ξ ο Π ρ Σ τ Υ φ Χ ψ Ω
代码解析:
- 定义了两个数组分别存储大小写希腊字母
- 使用
i % 2 == 0
判断奇偶位置 - 偶数位置输出小写,奇数位置输出大写
- 仍然保持每行10个字母的格式
练习:希腊字母与英文名称对照
编写程序,输出希腊字母及其英文名称。
# 源文件保存为“GreekWithNames.java”。
public class GreekWithNames {
public static void main(String[] args) {
String[][] greekWithNames = {
{"α", "alpha"}, {"β", "beta"}, {"γ", "gamma"}, {"δ", "delta"},
{"ε", "epsilon"}, {"ζ", "zeta"}, {"η", "eta"}, {"θ", "theta"},
{"ι", "iota"}, {"κ", "kappa"}, {"λ", "lambda"}, {"μ", "mu"},
{"ν", "nu"}, {"ξ", "xi"}, {"ο", "omicron"}, {"π", "pi"},
{"ρ", "rho"}, {"σ", "sigma"}, {"τ", "tau"}, {"υ", "upsilon"},
{"φ", "phi"}, {"χ", "chi"}, {"ψ", "psi"}, {"ω", "omega"}
};
System.out.println("希腊字母与英文名称对照:");
for (int i = 0; i < greekWithNames.length; i++) {
System.out.printf("%s (%s)\t",
greekWithNames[i][0], greekWithNames[i][1]);
if ((i + 1) % 3 == 0) {
System.out.println();
}
}
}
}
运行结果
希腊字母与英文名称对照: α (alpha) β (beta) γ (gamma) δ (delta) ε (epsilon) ζ (zeta) η (eta) θ (theta) ι (iota) κ (kappa) λ (lambda) μ (mu) ν (nu) ξ (xi) ο (omicron) π (pi) ρ (rho) σ (sigma) τ (tau) υ (upsilon) φ (phi) χ (chi) ψ (psi) ω (omega)
代码解析:
- 使用二维数组存储字母和对应的英文名称
System.out.printf
格式化输出字母和名称- 每行输出3组数据
- 输出效果清晰易读
练习:用户自定义输出格式
编写程序,让用户选择每行输出多少个字母。
# 源文件保存为“CustomGreekPrinter.java”。
import java.util.Scanner;
public class CustomGreekPrinter {
public static void main(String[] args) {
char[] greekLetters = {
'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ',
'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ',
'φ', 'χ', 'ψ', 'ω'
};
Scanner scanner = new Scanner(System.in);
System.out.print("请输入每行要输出的字母数量:");
int perLine = scanner.nextInt();
System.out.println("希腊字母输出:");
for (int i = 0; i < greekLetters.length; i++) {
System.out.print(greekLetters[i] + " ");
if ((i + 1) % perLine == 0) {
System.out.println();
}
}
scanner.close();
}
}
运行结果
运行程序,输入8
,会得到:
请输入每行要输出的字母数量:8
希腊字母输出:
α β γ δ ε ζ η θ
ι κ λ μ ν ξ ο π
ρ σ τ υ φ χ ψ ω
代码解析:
- 使用
Scanner
获取用户输入的每行字母数 - 根据用户输入的值数控制换行时间