我试图按升序从1开始计算一个数字,我需要为每一行添加前导空格,诀窍是第一行没有空格,第二行没有空格,第二行有2个空格第(n + 1)个数字的第三行和n个空格。
例如,如果用户输入值4,则应在中预期输出<{strong>:
我做了一些研究,我无法弄明白。我认为它与String.format方法有关。有任何想法吗?非常感谢您的努力!
public static boolean objectIsEmpty(Object object) {
for (Class<?> c = object.getClass(); c != null; c = c.getSuperclass()) {
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
if (field.get(object) != null) {
if (field.getType().equals(List.class)) {
// System.err.println("len " +
// Array.getLength(field.get(object)));
}
if (Collection.class.isAssignableFrom(field.getType())) {
System.err.println(Collection.class.cast(field).size());
// ClassCastException thrown here
}
}
} catch (IllegalAccessException e) {
// Should not occur with setAccessible(true), return false just
// in case
e.printStackTrace();
return false;
}
}
}
return true;
答案 0 :(得分:3)
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int c = 0 ;
int num = input.nextInt();
input.close();
while (c < num)
{
c++;
System.out.println(String.format("%"+c+"s",c));
}
}
而不是3使用c
答案 1 :(得分:2)
这是一个简单的循环,向您展示它是如何工作的:
for(int i = 1; i < 10; ++i){
System.out.format("%"+i+"s\n", String.valueOf((char)(i+'a'-1)));
}
基本上,这将创建格式%#s,您可以在其中更新#到您想要的数字。
我使用了System.out.format
,但您也可以使用String.format
/!\此标志的最小值为1
输出
a
b
c
d
e
f
g
h
i
答案 2 :(得分:1)
一种解决方案可能是为StringBuilder为每个新数字添加一个空格。
StringBuilder spaces = new StringBuilder();
Scanner sc = new Scanner(System.in);
int userChoice = 0;
while(userChoice != -1){
userChoice = sc.nextInt();
System.out.print(spaces.toString());
System.out.print(userChoice);
System.out.println();
spaces.append(" ");
}