如何向后打印数字,以便显示以下输出?

时间:2018-07-28 11:20:01

标签: java for-loop

我必须编写一个程序,以使其打印如下三角形:

如果用户提供输入3,则输出应为:

 final UploadTask uploadTask = bytepath.putBytes(thumb_byte_data);

                        uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                                uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
                                    @Override
                                    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                                        if (!task.isSuccessful()) {
                                            throw task.getException();
                                        }
                                        // Continue with the task to get the download URL
                                        return filepath.getDownloadUrl();

                                    }
                                }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Uri> task) {
                                        if (task.isSuccessful()) {
                                            thumb_download_url = task.getResult().toString();

                                        }
                                    }
                                });

                            }
                        }).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                            }
                        });

如果用户输入4,则输出应为:

  3
 23
123

所以我写了以下代码:

   4
  34
 234
1234

但是代码的输出是这样的: 如果我输入3:

Scanner sc=new Scanner(System.in);
System.out.println("Enter number of rows");
int row=sc.nextInt();

for(int maincount=1; maincount<=row;maincount++){
    for(int spcount=1;spcount<=row-maincount;spcount++){
        System.out.print(" ");
    }
    //int numprint=row;            
    for(int numcount=1;numcount<=maincount;numcount++){
        System.out.print(/*numprint*/numcount);
        //numprint--;                
    }
        System.out.println("");
    }

它看起来非常接近输出,因此尝试查找问题

我使用了另一个变量“ numprint”而不是“ numcount”。 (我注释掉了我使用numprint的部分);但这一次的输出是:

  1
 12
123

我想出的替代方案找不到任何可以显示与所需输出类似的解决方案。

3 个答案:

答案 0 :(得分:1)

我想这就是你想要的:

    //STEP40  EXEC SORTD                                              
    //SORTIN   DD DSN=FILEONE(0),                           
    //            DISP=SHR                                            
    //SORTOUT  DD DSN=&&TEMP,                                       
    //            DISP=(NEW,PASS,DELETE),                          
    //            DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0),               
    //            UNIT=TAPE                                           
    //SYSOUT   DD SYSOUT=*                                            
    //SYSPRINT DD SYSOUT=*                                            
    //SYSIN    DD *                                                   
         SORT FIELDS=(14,6,PD,A,8,6,PD,A,45,2,ZD,A)                   
         OUTREC IFTHEN=(WHEN=(70,18,CH,EQ,C' encoding="IBM037"'),     
                     OVERLAY=(70:C'  encoding="UTF-8"'))              
         OPTION DYNALLOC=(SYSDA,255)                                  
    /*                                                                

使用Scanner sc=new Scanner(System.in); System.out.println("Enter number of rows"); int row=sc.nextInt(); for (int i=1; i<row+1; i++) { for (int j=1; j<row+1; j++) { if (j > row - i) { System.out.print(j); } else { System.out.print(" "); } } System.out.println(); } 进行外部迭代可确保两件事:

  • 使用内部迭代打印数字序列
  • 使用i跳到下一行

使用System.out.println();进行的内部迭代确保仅打印数字序列。关键是确定是否打印空白j或数字。 " "是条件。

答案 1 :(得分:0)

尝试一下:-

        Scanner sc=new Scanner(System.in);
        System.out.println("Enter number of rows");
        int row=sc.nextInt();

        for (int maincount = 1; maincount <= row; maincount++) {
            for (int spcount = 1; spcount <= row - maincount; spcount++) {
                System.out.print(" ");
            }
            int numprint = row;
            String str = "";
            for (int numcount = 1; numcount <= maincount; numcount++) {
                str = numprint + str;
                numprint--;
            }
            System.out.print(str);
            System.out.println("");
        }

答案 2 :(得分:0)

您可以尝试

        Scanner sc=new Scanner(System.in);
        System.out.println("Enter number of rows");
        int row=sc.nextInt();

        for (int i = 1; i <= row; i++) {
            for(int j = 0; j < row - i; j++) {
                 System.out.print(" ");
            }
            int temp = row - (i -1);
            for (int j = 0; j < i; j++) {
                System.out.print(temp++);
            }
            System.out.println("");
        }