【问题标题】:Printing for value of ArrayList Integer打印 ArrayList Integer 的值
【发布时间】:2016-02-13 18:26:20
【问题描述】:

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

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

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

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

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

如何编写此代码来为元素中的每个值打印 *。 IE 4 *'s if element value is 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("*");
        }
    }
}

【问题讨论】:

    标签: java for-loop arraylist printing elements


    【解决方案1】:

    而不是使用这个条件:

    j &lt;= coins.indexOf(i);

    使用这个条件:

    j &lt; 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: **
    

    【讨论】:

    • 谢谢,这很有帮助。如果我想减去其中一个 arraylist 元素的值,我该怎么做呢? coins.set(index, coins.get(index) - numCoins);这对吗?
    【解决方案2】:

    您应该使用 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));
    

    【讨论】:

      【解决方案3】:

      您必须查看不同堆栈的值,方法是访问数组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);            
          }
      }
      

      【讨论】:

      • coins 不是int[] 类型,所以coins[i] 不起作用
      猜你喜欢
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多