-2

一个名为 printIndented() 的方法,它接受一个字符串、一个整数和一个布尔值。该整数表示从左边距开始的缩进的大小(以空格为单位),因此该方法应首先打印那么多空格。然后应该打印字符串。然后,如果布尔值为真,则应打印换行符。例如, printIndented(3, "Hello", false) 将打印:

˽˽˽
Hello
...with no newline at the end.

我被这个困住了。我的版本不完整:

int printIndented(int size, String word, boolean n) {
    String spaces = ("");

    print(spaces);

    print(word);
    if(n == true)  println("");    
    else 
    if(n == false)  print("");    
    return(size);
4

5 回答 5

1

这是我的版本:

void printIndented(int size, String word, boolean n)
{
    print(StringUtils.repeat(" ", size));

    print(word);
    if(n)
       println("");    
}

正如我所见,该函数不需要返回任何内容。只是返回size参数告诉调用者没有什么新的。

您可以在Apache Commons Lang库中找到StringUtils该类。请参阅http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html

如果没有StringUtils.repeat,您可以将第一行替换为:

for(int i = 0; i < size; i++) print(" ");
于 2013-09-12T06:48:38.853 回答
1

由于这是一项家庭作业,我不会向您展示完整的解决方案,但我会尽力指导您。

你应该打印空间size时间,你没有这样做。相反,您正在打印""(不是空格)一次。

提示:

  • 使用for 循环- 打印空格 ( " ")size次(String space = " ";另请注意,它应该被命名space而不是,spaces因为它只代表一个空格。
  • 新行表示为\n- 您可能也希望看到一点。
  • 当您检查 aboolean是否为true时,最好这样做if(n)而不是if(n == true).
  • return语句周围的括号是多余的,您可以删除它们。
于 2013-09-12T06:48:40.387 回答
0

改变

String spaces = (""); 

String spaces = " ";

并让您print(spaces)进入循环,以便将空格 equlas 打印到 integer size

  for(int i=0;i<size;i++){
         print(spaces);
    }
于 2013-09-12T06:48:11.277 回答
0
void printIndented(int i, String s, boolean b) {
    for(int j = 0; j < i; j++){
        System.out.print(", ");//Comma is to see how many spaces in output
    }
    System.out.print(s);
    if(b){
        System.out.println();
        System.out.print("NewLine");//to see that new line was added
    }

}
于 2013-09-12T07:01:58.867 回答
0

循环?我们不需要臭气熏天的循环!

public void printIndented(int size, String word, boolean n) {
    System.out.printf("%" + size + "s%s" + (n ? "%n" : ""), "", word);
}

*鸭子*

于 2013-09-12T11:45:55.287 回答