用Java打印星形图案
我用下面的代码构建了上半部分用Java打印星形图案,java,for-loop,Java,For Loop,我用下面的代码构建了上半部分 # # # # # # # # # # # # # public void打印模式(int行){ int k=0; 对于(int i=1;i在代码下面创建2个for循环: public void printPattern(int row) { int k=0; for(int i=1; i<=row; i++) { for(int j=1; j<=(row*2)-1; j++) { if(j&l
#
# # #
# # # # #
# # #
#
public void打印模式(int行){
int k=0;
对于(int i=1;i在代码下面创建2个for循环:
public void printPattern(int row) {
int k=0;
for(int i=1; i<=row; i++) {
for(int j=1; j<=(row*2)-1; j++) {
if(j<=i+k) {
System.out.print("#");
}
else {
System.out.print(" ");
}
}
k++;
System.out.println();
}
int k=0;//再次使用0初始化k
对于(int i=1;i0;j--){
如果(j>=i+k){
系统输出打印(“#”);
}
否则{
系统输出打印(“”);
}
}
k++;
System.out.println();}
因此,对于6行模式,您的代码会打印出来:
int k=0;//initilize k with 0 again
for(int i=1; i<=row; i++) {
for(int j=(row*2)-3; j>0;j--) {
if(j>=i+k) {
System.out.print("#");
}
else {
System.out.print(" ");
}
}
k++;
System.out.println();}
在任何情况下,当你达到一半时,你都没有办法开始减少“#”的数量。像这样的作业会教你基本的String
操作和循环
基本上,您需要做的是为一半行添加“#”,然后为其余行删除“#”,如下所示
#
##
###
####
#####
######
public void打印模式(int行){
字符串输出=“#””;
for(inti=1;i您可以在两个for循环中编写完整的代码,如下所示
public void printPattern(int row) {
String output = "#";
for(int i = 1; i <= (row / 2) - 1; i++) {
System.out.println(output);
output += " #";
}
for(int i = 1; i <= (row / 2); i++) {
System.out.println(output);
output = output.substring(0, output.lastIndexOf("#")).trim();
}
}
public void打印模式(int行){
int j=0;
对于(inti=1;i我认为这是一个简单的函数
public void printPattern(int row) {
int j = 0;
for (int i = 1; i <= row; i++) {
boolean isFirstHalf = (i <= (row + 1) / 2);
int noOfHashToPrint = (isFirstHalf) ? (2 * (i-1))+1 : (2 * (row-i) + 1);
for (j = 1; j <= noOfHashToPrint; j++)
System.out.print("#");
System.out.println();
}
}
public void打印模式(int行){
int k=0;
对于(int i=0;ichar[]值=新字符[5];
int j=0;
对于(int i=0;i<5;i++){
值[j]=“#”;
系统输出打印项次(值);
如果(iI如果你有上半部,你认为有什么方法可以调整它并改变一些东西来产生下半部吗?j
如何定义你正在制作的图案?我的答案解决了你的疑问吗?我想直接打印出来,不想替换them@MattJoshi好吧,你不需要替换它们,你只需要移除它们从您的字符串中删除它们。正确吗?如果正确,请将此问题标记为已解决。是否有必要为此添加额外的循环?添加额外的循环不会增加此代码的时间复杂性。如果您只想使用两个循环,请更深入地思考。此代码打印的是连续的“#”,而不是3,然后仅打印1。
public void printPattern(int row) {
int k=0;
for(int i=0; i<row; i++) {
for(int j=0; j<=k; j++) {
System.out.print("#");
}
k++;
System.out.println();
}
}
char[] value = new char[5];
int j = 0;
for (int i=0; i< 5;i++) {
value[j]='#';
System.out.println(value);
if(i<2) {
value[j+1] ='#';
value[j+2] ='#';
j=j+2;
}
else {
if(j != 0) {
value[j]=' ';
value[j-1]=' ';
j=j-2;
}
}
}