java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!相关的知识,希望对你有一定的参考价值。
public class Var_02
public static void main(String args[])
for(int i=1;i<=7;i+=2)
for(int kong=7;kong>i-1;kong--)
System.out.print(" ");
for(int xing=1;xing<=i;xing++)
System.out.print("* ");
System.out.println();
for(int j=1;j<=5;j+=2)
for(int kong1=1;kong1<j+3;kong1++)
System.out.print(" ");
for(int xing1=5;xing1>=j;xing1--)
System.out.print("* ");
System.out.println();
public static void main(String[] args)
//定义一个字符串filepath为一个文件地址的绝对路径
String filepath = "d:/Test/myFile.txt";
/*
* args 这个字符串数组是保存运行main函数时输入的参数,也就是说你编译好了文件是这样运行的java AvoidFile_old xx yy
* 这表示你有两个参数:xx和yy args[0]为xx args[1]为yy
* 如果args的长度大于0,也就是说args数组中有字符串
* 那么就把args数组中的第一个字符串赋值给filepath
* 如果你没有在运行时输入参数,就是简单的运行的话此数组为空if下的语句不执行
* 我认为这段程序有点无厘头,就整个程序而言没有什么意义,可以不考虑,可能整个程序作为模块还有其他作用
* */
if(args.length>0)
filepath = args[0];
//通过将给定路径名字符串转换为抽象路径名aFile(aFile的值为d:/Test/myFile.txt)
//来创建一个新 File 实例。抽象路径名可以理解为输入的d:/Test/myFile.txt
File aFile = new File(filepath);
//FileOutputStream用于写入诸如图像数据之类的原始字节的流
FileOutputStream outputFile = null;
//判断此抽象路径名表示的文件是否是一个标准文件
if (aFile.isFile())
//如果是,创建一个newFile就为此标准文件 此时抽象路径名newFile为d:/Test/myFile.txt
File newFile = aFile;
do
//返回由此抽象路径名表示的文件名称给name。此时得到的name的值为myFile.txt
String name = newFile.getName();
//返回name中"."第一次出现处的索引给period,即myFile.txt根据.索引到的位置period为6(从0开始数)
int period = name.indexOf('.');
if(period == -1)
//period == -1表示给定的文件名不存在(表示你定义的String filepath = "d:/Test/.txt";是这样的或更不全)
/* newFile = new File(newFile.getParent(), extendName(name));表示
* extendName(name)请看程序下段private static String extendName(String name)的方法
* newFile.getParent()得到的是父目录,如果你输入的filepath = "d:/Test/.txt"
* 那么父目录为d:/Test
* 根据 parent(即newFile.getParent())路径名字符串和 child(extendName)路径名字符串创建一个新 File 实例
* 此时创建的实例文件所在路径为d:/Test/extendName(name).txt
* */
newFile = new File(newFile.getParent(), extendName(name));
else
/* 如果文件名不为空的话,
* 根据 parent(newFile.getParent())路径名字符串和 child(extendName) 路径名字符串创建一个新 File 实例
* newFile.getParent()返回newFile父目录的路径名字符串即d:/Test
* extendName()得到的是文件名+点,"d:/Test/myFile.txt"就是"myFile."
* name.substring(0, period))+ name.substring(period))表示
* 返回字符串name=myFile.txt的一个子字符串。该子字符串从指定的0处开始,直到索引最后位 - 1 处的字符第一次创建时
* 为myFile,第二次源目录创建时为myFile000
* 再+name.substring(period)得到一个 .
* */
newFile = new File(newFile.getParent(),
extendName(name.substring(0, period))
+ name.substring(period));
//如果aFile没有重新命名为newFile抽象路径名表示的文件,则循环上面的操作
while(!aFile.renameTo(newFile));
try
//文件已经创建则输出文件名
outputFile = new FileOutputStream(aFile);
System.out.println(aFile.getName()+" output stream created");
catch (FileNotFoundException e)
e.printStackTrace(System.err);
System.exit(0);
//定义方法extendName
private static String extendName(String name)
//把newName定义为动态可变字符串,这样newName可以随时改变,比如下面的newName.delete()方法
StringBuffer newName = new StringBuffer(name);
//获得digits是newName中除点之外的后三位字符串(因为name是文件名加点在上面已经讲了)
//substring方法返回的是 从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符
//所以点. 就不包在digits中,获得的是纯文件名
String digits = newName.substring(newName.length()-3,newName.length());
int number = 0;
try
/*此段程序为整个程序的最精彩之处,把digits转化为整型number,
* 如果在原路径中创建了一个同名时,会自动在文件明后加上000
* 然后通过下面这段程序在000上进行递增即++number
*
* */
number = Integer.parseInt(digits);
++number;
newName.delete(newName.length()-3,newName.length());
catch(NumberFormatException nfe)
//吧number转化为字符串型
digits = String.valueOf(number);
//做声明
assert digits.length() < 4;
/*
*
* */
return newName.append("000").replace(newName.length()-digits.length(),newName.length(), digits).toString();
//注:你必须在c盘中有Test文件夹存在才能运行,如果多次运行改程序那么在你的d:\Test文件夹下有myFile00*.txt文件
参考技术A 大半夜没事做,我给你来解释一下吧,解释完睡觉
第一个包含2个for循环的那个for循环,是打印,是打印正尖朝上的三角型
当i=1时
第一行打印7个空格,再打印一个星,然后打印一个换行,继续下一个for循环,也就是i=3的时候
这时候就是第2行,通过第一个for打印5个空格,再打印3个星
依次循环到第4行,打印一个空格,7个星,这样一个三角型就出来了
下面的包含矿个for循环的for循环是打印倒过来的三角型,组合起来,就是一个菱形了。
当j=1时,第5行打印3个空格,5个星,然后依次循环2次,直到第7行结束,也就是和第一行一样,打印7个空格,一个星
输出结果是这样
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*本回答被提问者采纳
Java基础50道经典练习题(19)——打印菱形
【程序 19 打印菱形图案】
题目:打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
源码:
package com.homework.test; /* 【程序 19 打印菱形图案】 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * */ public class Test19 { public static void main(String [] args){ int n = 4; printStar(n); } public static void printStar(int n){ //打印上半部分 for (int i=0; i<n; i++) { for(int j=0; j<2*n+1; j++) { if((j >= n-i)&&(j <= n+i)) System.out.print("*"); else System.out.print(" "); } System.out.println(); } //打印下半部分 for (int i=n-2; i>=0; i--) { for(int j=0; j<2*n+1; j++) { if((j >= n-i)&&(j <= n+i)) System.out.print("*"); else System.out.print(" "); } System.out.println(); } } }
【程序 19 打印菱形图案】
题目:打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
以上是关于java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!的主要内容,如果未能解决你的问题,请参考以下文章