简体   繁体   English

如何仅从嵌套的 for 循环中打印一次结果

[英]How can I print a result from a nested for loop only once

I am trying to create a custom bar chart, where the user can enter the number of bars, size of bars and symbol that they would like to use to create each bar.我正在尝试创建一个自定义条形图,用户可以在其中输入他们想用来创建每个条形的条数、条形大小和符号。

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.println("How many bars would you like to display?");
        int num_bars = scan.nextInt();

        int [] bars = new int[num_bars];
        String [] symbol = new String[num_bars];

        System.out.println("Specify the sizes of the bars: ");
        for(int i = 0; i < bars.length; i++) {
            bars[i] = scan.nextInt();
        }

        System.out.println("Specify the symbols to be used for the bars:");
        for(int i = 0; i < symbol.length; i++) {
            symbol[i] = scan.next();
        }

        int number = 1;
        for(int bar : bars) {
            System.out.print("\n" + number);
            for (String sym : symbol) {
                for (int size = 0; size < bar; size ++ ) {
                     System.out.print(sym +" "); 
            }
        System.out.println(" ");
        number++;
        }
        }   

    }
}

The result I am getting is displaying like this:我得到的结果是这样显示的:

How many bars would you like to display?
2
Specify the sizes of the bars: 
8
4
Specify the symbols to be used for the bars:
%
#

1% % % % % % % %  
# # # # # # # #  

3% % % %  
# # # #  

but I am aiming for:但我的目标是:

1 % % % % % % % %  
2 # # # #  

Can someone please help me?有人可以帮帮我吗?

There is no need to loop over the symbol[] array.无需遍历 symbol[] 数组。 it is redundant as you can print the symbol of each bar using its index.这是多余的,因为您可以使用其索引打印每个柱的符号。

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("How many bars would you like to display?");
    int num_bars = scan.nextInt();

    int[] bars = new int[num_bars];
    String[] symbol = new String[num_bars];

    System.out.println("Specify the sizes of the bars: ");
    for (int i = 0; i < bars.length; i++) {
        bars[i] = scan.nextInt();
    }

    System.out.println("Specify the symbols to be used for the bars:");
    for (int i = 0; i < symbol.length; i++) {
        symbol[i] = scan.next();
    }

    int number = 1;
    for (int bar : bars) {
        System.out.print("\n" + number + " ");
        for (int size = 0; size < bar; size++) {
            System.out.print(symbol[number - 1] + " ");
        }
        System.out.println(" ");
        number++;
    }
}

you need to change your code to the following, because you are doing number++ before next number and no need to iterate symbol array again, simple use number integer value.您需要将代码更改为以下内容,因为您在下一个数字之前执行 number++ 并且无需再次迭代符号数组,只需使用数字 integer 值。 Please find below:如下请见:

       for (int bar : bars) {
        System.out.print("\n" + number);
        //for (String sym : symbol) {
            for (int size = 0; size < bar; size++) {
                System.out.print(symbol[number - 1] + " ");
        //              }
        //             System.out.println(" ");
        }
        number++;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM