java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!

publicclassVar_02{publicstaticvoidmain(Stringargs[]){for(inti=1;i<=7;i+=2){for(intkon... 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();
}
}
}
展开
 我来答
zgntc470ntz
2011-08-23 · TA获得超过387个赞
知道小有建树答主
回答量:972
采纳率:0%
帮助的人:463万
展开全部
public class AvoidFile_old {
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文件
woyani2
2011-08-22 · TA获得超过211个赞
知道小有建树答主
回答量:103
采纳率:0%
帮助的人:104万
展开全部
大半夜没事做,我给你来解释一下吧,解释完睡觉
第一个包含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个空格,一个星
输出结果是这样
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式