2015-01-09 100 views
-1
public static void printGrid(int rows, int cols) { 
    int totalNum = rows * cols; 
    for (int i = 1; i <= rows; i++) { 
        for (int k = 0; k < cols; k++) { 
            System.out.print(i + rows * k + ", "); 
        } System.out.println();       
    } 
} 

Outputs = 1, 4, 7, 10, 13, 16, 
      2, 5, 8, 11, 14, 17, 
      3, 6, 9, 12, 15, 18, 

我想删除每行最后一个数字的尾部逗号,但我没有一个变量作为一个字符串来保存它们,只是一个打印语句。有没有办法做到这一点?删除尾随逗号没有字符串变量的Java?

+7

而不是试图将其删除,你怎么样只是避免增加呢? – 2015-01-09 22:29:22

回答

8

简单,只在需要时打印:

public static void printGrid(int rows, int cols) { 
    int totalNum = rows * cols; 
    for (int i = 1; i <= rows; i++) { 
     for (int k = 0; k < cols; k++) { 
      System.out.print(i + rows * k); 
      if (k < cols - 1) System.out.print(", "); 
     } 
     System.out.println();  
    } 
} 

输出为ARGS 3,6是:

 
1, 4, 7, 10, 13, 16 
2, 5, 8, 11, 14, 17 
3, 6, 9, 12, 15, 18 
+0

这不会在第一行和第二行末尾打印逗号 – 2015-01-09 22:34:13

+0

Desolator,停止传播谎言。我甚至在Eclipse中尝试过,以证明你错了。我的解决方案正常。 – MightyPork 2015-01-09 22:35:52

+2

@MightyPork我猜Desolator误解了这个问题,并认为OP只希望删除最后一个逗号(在你的例子中是'18')。 – Tom 2015-01-09 22:41:50

1

虽然你可能会测试你在一个后置条件打印后通过的建议@MightyPorkanswer

System.out.print(i + rows * k); 
if (k < cols - 1) { 
    System.out.print(", "); 
} 

我会测试k是不是0和打印逗号时,它不是一个先决条件一样

if (k != 0) { 
    System.out.print(", "); 
} 
System.out.print(i + rows * k); 
+0

这确实会起作用,但是哪种方式更好?没有选择它,真的很好奇。 – MightyPork 2015-01-09 22:51:04

+0

@MightyPork它不需要在每次迭代时计算'cols-1'。但我想这没什么关系。顺便说一句:你们怎么看'if(k> 0)'?更好? – Tom 2015-01-09 22:54:04

+0

这不是更好,因为他们从根本上做同样的事情。但我更喜欢可读性的前提条件,只是看法。这是说我不希望第一个字符是'',而不是我最后一个字符不是','。 – 2015-01-09 22:54:15

-1

效率并不重要,如果你的代码是很难理解。部分问题围绕着您尝试将字符串组合与输出组合的方式展开。你应该完全独立的那些事:

static void printGrid(int rows, int cols) { 
    System.out.println(getGrid(rows, cols)); 
} 

static String getGrid(int rows, int cols) { 
    StringBuilder b = new StringBuilder(); 
    int totalNum = rows * cols; 

    for (int i = 1; i <= rows; i++) { 
     for (int k = 0; k < cols; k++) { 
      b.append(i + rows * k).append(", "); 
     } 
     b.delete(b.size()-2,b.size()); 
     b.append('\n'); 
    } 
    return b.toString(); 
} 

Alterantely,您可以使用番石榴Joiner,或在Java中8,你可以使用Collectors.joining