7.6 如何使用String.format()打印空格?(二合一)| Java Debug 笔记

707 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>

提问:如何使用String.format()打印空格?

我该如何使用String.format()重写:

for (int i = 0; i < numberOfSpaces; i++) {
    System.out.print(" ");
}

回答1:

您需要指定字段的最小宽度

for (int i = 0; i < numberOfSpaces; i++) {
    System.out.print(String.format("%" + numberOfSpaces + "s", "")); 
}

但是为什么用输出指定长度的空格呢? 如果您想要具有值的此长度的列,则可以执行以下操作:

String.format("%" + numberOfSpaces + "s", "Hello"); 

它为您提供numberOfSpaces-5个空格,后跟Hello。 如果你希望hello在左侧

 public static void main(String[] args) {
        int numberOfSpaces = 10;
        System.out.println(String.format("%-" + numberOfSpaces + "s", "Hello"));
    }

提问:修改返回值为void函数的输入参数,然后读取这个输入

我有一个相当复杂的Java函数,我想使用jUnit进行测试,并且为此使用了Mockito。 该函数如下所示:

public void myFunction (Object parameter){
   ...
   doStuff();
   ...
   convert(input,output);
   ...
   parameter.setInformationFrom(output);
}

函数convert根据输入设置输出的属性,它是一个返回类型为void类型的函数。 我要模拟的这个convert函数,我不需要依赖于测试的输入,但是我不知道该怎么做,因为我对Mockito不太熟悉。

我已经看到基本情况是when(something).thenReturn(somethingElse)或doAnswer方法,但是我认为这些情况不适合我的情况 ,因为我的函数没有return语句。

回答1:

如果要让模拟方法在参数上调用方法(或以其他方式更改)

doAnswer(new Answer() {
    Object answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        ((MyClass)args[0]).myClassSetMyField(NEW_VALUE);
        return null; // void method, so return null
    }
}).when(mock).someMethod();