今日突发奇想,想打印一首古诗试试,就拿一首我最欣赏的古诗给各路Java新手试试数组的基本用法。一共三种方法,都是用数组的基本知识。
首先给大家展示一下《清平调》:
《清平调》
李白
云想衣裳花想容,春风拂槛露华浓。
若非群玉山头见,会向瑶台月下逢。
方法1,将诗句的每个字都当作一个数组的元素,利用二维数组进行输出
代码及详情如下:
// 《清平调》
// 李白
//云 想 衣 裳 花 想 容,
//春 风 拂 槛 露 华 浓。
//若 非 群 玉 山 头 见,
//会 向 瑶 台 月 下 逢。
Scanner scanner=new Scanner(System.in);
System.out.print("请输入古诗名:");
String name=scanner.nextLine();
System.out.print("请输入作者:");
String author=scanner.nextLine();
System.out.print("请输入你的古诗的行数与列数,以空格隔开:");
int row=scanner.nextInt();//行数-row排
int col=scanner.nextInt();//列数-column纵队,列
//二维数组的长度知识点:
//arr.length 表示有多少行,二维数组的元素是一维数组,它的长度可以理解为有多少个一维数组
//arr[0].length 表示有多少列,就是一维数组里有多少个元素
//输入
//先定义一个二维数组来存储诗句每个字
String[][] arr3=new String[row][col];
for(int i=0;i<arr3.length;i++) { //arr3.length可以换成row
System.out.print("请输入第"+(i+1)+"排古诗,以空格分隔,回车结束:");
for(int j=0;j<arr3[0].length;j++) { //arr3[0].length可以换成col
arr3[i][j]=scanner.next();
//这里不用nextLine,因为nextLine是读取一排的数据,只以enter结束,用nextLine的话输入的
//时候一排只能输入一个字,要想达到每个字都是数组元素的效果显然nextLIne不适合
//而next是读取下一个,忽略有效数值前的无效字符,默认情况下取出空格前的数据,一排可输入多
//个字符,只要以空格隔开就好
}
}
//输出
//再定义个计数器,用来计换行的位置,每打印一个字就加一,当一排全打印完后count就应该等于列数,此时换行且count清零
int count=0;
System.out.println(" "+name);//输出故事名
System.out.println("\t"+author);//输出诗人,
//这里的格式可以自己调整也可以通过循环来决定打印几个空格
for(int i=0;i<arr3.length;i++) { //外循环代表 行
for(int j=0;j<arr3[0].length;j++) {//内循环代表 列
System.out.print(arr3[i][j]);
count++;
if(count==col) {//一行打印完时
System.out.println();//换行
count=0;//从下一行继续开始计
}
}
}
方法2:将每一句诗句作为一维数组里的一个元素,而后遍历数组输出
代码及详情如下:
System.out.println("请输入古诗名字:");
String name=new Scanner(System.in).nextLine();
System.out.println("请输入作者:");
String author=new Scanner(System.in).nextLine();
System.out.println("该古诗有几行:");//一维数组,只需要行数就行了,因为每一行诗句是一个元素
//输入
int p=new Scanner(System.in).nextInt();//定义行数
String[] arr1=new String[p];//创建一维数组,将一句诗句当成一个元素
for(int i=0;i<p;i++) {//循环遍历数组
System.out.print("请输入第"+(i+1)+"行的诗句:");
arr1[i]=new Scanner(System.in).nextLine();//输入诗句
//这里就能用nextLine,因为我们就是要一行一行的输入
}
//输出
System.out.println(" "+name);//输出故事名
System.out.println("\t"+author);//输出诗人
for(int i=0;i<p;i++) {//打印输出每一个元素,就是每一行诗句
System.out.println(arr1[i]);
}
方法3:将每个字作为二维数组的元素或者将每句诗句作为一维数组的元素直接在定义数组的时候初始化给数组,而后之久循环遍历数组输出,这里用二维数组进行演示。
代码及详情如下:
String[][] arr= { //行
{"云","想","衣","裳","花","想","容,"},//0
{"春","风","拂","槛","露","华","浓。"},//1
{"若","非","群","玉","山","头","见,"},//2
{"会","向","瑶","台","月","下","逢。"} //3
//列 0 1 2 3 4 5 6
};
//输出
System.out.println(" 《清平调》");
System.out.println("\t李白");
//格式可以自己调
int count=0;//用来计换行的位置
for(int i=0;i<arr.length;i++) {//外层循环代表 行
for(int j=0;j<arr[0].length;j++) {//内存循环代表 列
System.out.print(arr[i][j]);
count++;//打印一个字加一
if(count==arr[0].length) {//加到最后一列
System.out.println();//打印换行
count=0;//重置
}
}
}