Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java打印星形图案_Java_For Loop - Fatal编程技术网

用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;i
char[]值=新字符[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;

        }

    }
}