打印 ArrayList Integer 的值

Printing for value of ArrayList Integer

我正在开发一个基本上有成堆硬币的小游戏,您必须从一堆硬币中取出一些硬币,然后程序以以下格式打印出生成的硬币堆:

Pile 1: ****
Pile 2: *****
Pile 3: **

我有一个存储所有这些值的数组列表,如下所示:

List<Integer> coins = new ArrayList<>();
[4,5,2]

但我不知道如何让它正确打印 *'s。

我如何编写这段代码来为元素中的每个值打印出一个 *。 IE 4 *'s 如果元素值为 4?

这是我目前的方法:

static void printGameState(){
    for(int i = 0; i <= coins.size()-1; i++){
        int k = i+1;
        System.out.print("Pile " + k + ": ");
        for(int j = 0; j <= coins.indexOf(i); j++){
            System.out.print("*");
        }
    }
}

您必须通过访问数组coins[i]查看不同堆栈的值,而不是使用堆栈数作为堆栈高度:

static void printGameState(){
    for(int i = 0; i < coins.size(); i++) {
        // Build the coin stack
        String coinStack = "";
        for(int j = 0; j < coins.get(i); j++) {
            coinStack += "*";
        }

        // And output it
        System.out.println("Pile " + (i + 1) + ": " + coinStack);            
    }
}

而不是使用这个条件:

j <= coins.indexOf(i);

使用这个条件:

j < coins.get(i);

试一试:

for(int i = 0; i <= coins.size()-1; i++) {
    int k = i+1;

    System.out.print("Pile " + k + ": ");
    for(int j = 0; j < coins.get(i); j++) {
        System.out.print("*");
    }

    System.out.println();
}

您将获得:

Pile 1: ****
Pile 2: *****
Pile 3: **

您应该使用 < 而不是 <=。此外,您应该能够使用 get(i) 获取索引 i 处的值。

static void printGameState(){
    for(int i = 0; i < coins.size(); i++){
        int k = i+1;
        System.out.print("Pile " + k + ": ");
        for(int j = 0; j < coins.get(i); j++){
            System.out.print("*");
        }
    }
}

您还可以通过形成另一种方法来打印 * 使其更清晰一些,例如:

public void ast(int n){
    for(int i=0; i<n; i++){
        System.out.print("*");
    }
}

那么 printGameState 循环的内容就是

int k = i+1;
System.out.print("Pile " + k + ": ");
ast(coins.get(i));