【问题标题】:Java append newline every n linesJava每n行添加换行符
【发布时间】:2015-11-09 19:37:23
【问题描述】:
String[] names = new String[18];
names[0] = "James Raider";
names[1] = "Calm Hain";
names[2] = "Ewds Ashby";
names[3] = "Gedge Taylor";
names[4] = "Hay Fin";
names[5] = "Ian Hilton";
names[6] = "John Coke";
names[7] = "Nathan Dryer";
names[8] = "Jess Maguire";
names[9] = "Jamie Loyal";
names[10] = "Luke Shwinger";
names[11] = "Parrot Tom";
names[12] = "John Clarke";
names[13] = "Steven Mason";
names[14] = "Shing Lao";
names[15] = "Tom Brook";
names[16] = "Arthitus Pint";
names[17] = "Yifan Yao";

StringBuilder sb = new StringBuilder();
ArrayList<Integer> list = new ArrayList();
for (int i = 0; i < names.length; i++) {
    list.add(i);
}
Collections.shuffle(list);
for (int i = 0; i < names.length; i++) {
    field.append(names[list.get(i)] + "\n");
    for (int u = 0; u < (Integer) number.getValue(); u++) {
        field.append("\n");
    }
}

我试图在输出中添加一个新行,每number.getValue() 次。我正在做的事情是在每一行之后添加它,但我只希望它在一定次数后创建它。


示例:3 次

Harry
John 
Jake

Amanda
Holly
Sam

【问题讨论】:

    标签: java arrays string user-interface


    【解决方案1】:

    只需在您的 for 循环中添加 if 语句,该语句在每 n 行输出之后打印新行(我相信这是您想要的,而不是在 n 次迭代之后)。假设您希望每 3 行换行一次 伪代码:

    int newLine = 3;
    int multiplicator = 1;
    for(int i = 0; i< names.length; i++){
      if( newLine == i){
        // print extra line after every 3rd output        
        field.append("\n");
        newLine = 3; //to reset variable to the correct delimiter on each subsequent n-th iteration
        multiplicator++;
        newLine = newLine * multiplicator;
      }
    field.append(names[i] + "\n")
    // print regular value on normal line during every iteration
    }
    

    【讨论】:

    • 什么是“arr”? for(int i = 0, i
    • @Dullah arr 代表您要迭代的数组。因此,将其替换为您想要的数组名称(或您的情况下的列表)。
    • 我会将“field.append(names[x])”放在该代码的哪个位置?因为现在没有输出。
    • 我编辑了我的解决方案,使其更类似于您的问题。现在应该很清楚了。
    • 现在我正在让它做我想做的事情,对于前 2 个“段落,如果你明白我的意思,它就会吐出剩下的部分。
    【解决方案2】:

    这应该会得到你想要的输出。

    for (int i = 0; i < names.length; ++i) {
        // add name to field
        field.append(names[list.get(i)]);
        field.append('\n');
    
        // every number.getValue() names, add a new line
        if (i % number.getValue() == (number.getValue() - 1)) {
            field.append('\n');
        }
    }
    

    编辑:在编辑您的原始帖子时,我看到您的示例中丢失了一些格式。相应地更新了我的答案。

    【讨论】:

      【解决方案3】:

      您可以使用mod 来帮助您解决这个问题。像这样的:

      for (int i=0; i<names.length; i++) {
          field.append(names[list.get(i)]+"\n");
          if (i%3==0){
              //Do Stuff here every 3rd iteration. 
          }
      }
      

      不确定何时打印,但 mod% 只取余下的数字。循环时非常有用。所以在上面的例子中,当i 除以 3 没有余数时,它只会进入if。所以对于下面的i

      0 3 6 9 12 15

      希望这会有所帮助!

      【讨论】:

      • 实际上,您首先在第 4 次迭代后打印额外的行,然后在第 6 次(这只是两个步骤)迭代后打印。所以你的数学有点缺陷。
      猜你喜欢
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多