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

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

public class AvoidFile_old {

public static void main(String[] args) {

//定义一个字符串filepath为一个文件地址的绝对路径

String filepath = "d:/Test/myFiletxt";

/

args 这个字符串数组是保存运行main函数时输入的参数,也就是说你编译好了文件是这样运行的java AvoidFile_old xx yy

这表示你有两个参数:xx和yy args[0]为xx args[1]为yy

如果args的长度大于0,也就是说args数组中有字符串

那么就把args数组中的第一个字符串赋值给filepath

如果你没有在运行时输入参数,就是简单的运行的话此数组为空if下的语句不执行

我认为这段程序有点无厘头,就整个程序而言没有什么意义,可以不考虑,可能整个程序作为模块还有其他作用

/

if(argslength>0) {

filepath = args[0];

}

//通过将给定路径名字符串转换为抽象路径名aFile(aFile的值为d:/Test/myFiletxt)

//来创建一个新 File 实例。抽象路径名可以理解为输入的d:/Test/myFiletxt

File aFile = new File(filepath);

//FileOutputStream用于写入诸如图像数据之类的原始字节的流

FileOutputStream outputFile = null;

//判断此抽象路径名表示的文件是否是一个标准文件

if (aFileisFile()) {

//如果是,创建一个newFile就为此标准文件 此时抽象路径名newFile为d:/Test/myFiletxt

File newFile = aFile;

do {

//返回由此抽象路径名表示的文件名称给name。此时得到的name的值为myFiletxt

String name = newFilegetName();

//返回name中""第一次出现处的索引给period,即myFiletxt根据索引到的位置period为6(从0开始数)

int period = nameindexOf('');

if(period == -1) {

//period == -1表示给定的文件名不存在(表示你定义的String filepath = "d:/Test/txt";是这样的或更不全)

/ newFile = new File(newFilegetParent(), extendName(name));表示

extendName(name)请看程序下段private static String extendName(String name)的方法

newFilegetParent()得到的是父目录,如果你输入的filepath = "d:/Test/txt"

那么父目录为d:/Test

根据 parent(即newFilegetParent())路径名字符串和 child(extendName)路径名字符串创建一个新 File 实例

此时创建的实例文件所在路径为d:/Test/extendName(name)txt

/

newFile = new File(newFilegetParent(), extendName(name));

} else {

/ 如果文件名不为空的话,

根据 parent(newFilegetParent())路径名字符串和 child(extendName) 路径名字符串创建一个新 File 实例

newFilegetParent()返回newFile父目录的路径名字符串即d:/Test

extendName()得到的是文件名+点,"d:/Test/myFiletxt"就是"myFile"

namesubstring(0, period))+ namesubstring(period))表示

返回字符串name=myFiletxt的一个子字符串。该子字符串从指定的0处开始,直到索引最后位 - 1 处的字符第一次创建时

为myFile,第二次源目录创建时为myFile000

再+namesubstring(period)得到一个

/

newFile = new File(newFilegetParent(),

extendName(namesubstring(0, period))

+ namesubstring(period));

}

//如果aFile没有重新命名为newFile抽象路径名表示的文件,则循环上面的 *** 作

} while(!aFilerenameTo(newFile));

}

try {

//文件已经创建则输出文件名

outputFile = new FileOutputStream(aFile);

Systemoutprintln(aFilegetName()+" output stream created");

} catch (FileNotFoundException e) {

eprintStackTrace(Systemerr);

}

Systemexit(0);

}

//定义方法extendName

private static String extendName(String name) {

//把newName定义为动态可变字符串,这样newName可以随时改变,比如下面的newNamedelete()方法

StringBuffer newName = new StringBuffer(name);

//获得digits是newName中除点之外的后三位字符串(因为name是文件名加点在上面已经讲了)

//substring方法返回的是 从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符

//所以点 就不包在digits中,获得的是纯文件名

String digits = newNamesubstring(newNamelength()-3,newNamelength());

int number = 0;

try {

/此段程序为整个程序的最精彩之处,把digits转化为整型number,

如果在原路径中创建了一个同名时,会自动在文件明后加上000

然后通过下面这段程序在000上进行递增即++number

/

number = IntegerparseInt(digits);

++number;

newNamedelete(newNamelength()-3,newNamelength());

} catch(NumberFormatException nfe) {

}

//吧number转化为字符串型

digits = StringvalueOf(number);

//做声明

assert digitslength() < 4;

/

/

return newNameappend("000")replace(newNamelength()-digitslength(),newNamelength(), digits)toString();

}

}

//注:你必须在c盘中有Test文件夹存在才能运行,如果多次运行改程序那么在你的d:\Test文件夹下有myFile00txt文件

它的思路是这样的

譬如对于i=1,它先打印6个空格,然后打印1个星号

即就是对于每一个i,先打印这一行对应的空格号,然后打印星号

你后面的代码一样的效果,先根据行数打印对应的空格数,然后补上星号

其实你不用考虑位置的,因为你每一行都是缩进1个空格,即就是下一行的开始星号一行比前一行提前一个字符的位置。所以那些位置必然居中的,好看期间,你可以改一下就好看多了。。for(int i=1;i<=7;i++){

//代码

import javautil;

public class Test {

public static void main(String[] args) {

Scanner sc=new Scanner(Systemin);

int t,n=scnextInt(),l=2n-1;

for(int i=1-n;i<n;i++)

{

t=Mathabs(i);

for(int j=0;j<l;j++)

{

if(j==t||j==l-t-1)

Systemoutprint("");

else

Systemoutprint(" ");

}

Systemoutprintln();

}

scclose();

}

}

public class Diamond {

public static void main(String[] args) {

final int size = 4;

for (int i = 1; i <= size; i++) {

for (int j = i; j < size; j++) {

Systemoutprint(" ");

}

for (int k = 1; k <= 2 i - 1; k++) {

Systemoutprint("");

}

Systemoutprintln();

}

for (int i = size - 1; i >= 1; i--) {

for (int j = 1; j <= size - i; j++) {

Systemoutprint(" ");

}

for (int k = 2 i - 1; k > 0; k--) {

Systemoutprint("");

}

Systemoutprintln();

}

}

}

------------------------

以上就是关于java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!全部的内容,包括:java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!、一个用JAVA如何打印菱形的程序、java编写程序,读入正整数n,n<10,打印边长为n的,用*组成的菱形轮廓等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9593334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存