簡體   English   中英

打印ArrayList Integer的值

[英]Printing for value of ArrayList Integer

我正在開發一款基本上有成堆硬幣的小游戲,你必須從一堆硬幣中取出一些硬幣,然后程序打印出以下格式的結果:

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

我有一個數組列表,存儲所有這些值,如下所示:

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

但我無法弄清楚如何正確打印*。

如何編寫此代碼以打印元素中每個值的*。 IE 4 *如果元素值是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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM