我正在尝试打印图案,但它不能正确打印

时间:2018-06-11 07:29:09

标签: java

import java.util.Scanner;

public class Pattern{

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);    
        String d = sc.nextLine();
        System.out.println(d);
        String[] ds = d.split(",");

        for(int i=0;i<ds.length;i++){
            for(int j=i+1;j<=Integer.parseInt(ds[i]);j++) {
                System.out.print("*");   
            }

            System.out.println();
        }
    }
}

它在第二行打印3颗星但是我传递值1,4因此它打印输出在第一行打印1星和第二行打印4星但在输出它显示3星在第二行不是4星如何我解决了这个问题。

3 个答案:

答案 0 :(得分:0)

j应从0开始(条件严格为&lt ;,或1和&lt; =):

for(int j=0;j<Integer.parseInt(ds[i]);j++)

答案 1 :(得分:0)

试试这段代码:

import java.util.Scanner;
public class Main
{
    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        String d = sc.nextLine();
        System.out.println(d);
        String[] ds = d.split(",");
        for(int i=0;i<ds.length;i++){
            for(int j=0;j<Integer.parseInt(ds[i]);j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

您需要更改内部循环,j的值应从0开始,而不是从i+1开始,循环的条件应为j<Integer.parseInt(ds[i])

答案 2 :(得分:0)

import java.util.Scanner;
public class Pattern
{
    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        String d = sc.nextLine();
        System.out.println(d);
        String[] ds = d.split(",");
        for(int i=0;i<ds.length;i++){
            for(int j=1;j<=Integer.parseInt(ds[i]);j++)
            {
                System.out.print("*");
            }
        System.out.println();
    }
}

}

将变量j更新为1而不是i+1