Phillip Huff
Phillip Huff

Reputation: 565

Variable widths in Java's String.format method

I'm working on a project in which I need to display textual trees. I'm trying to use Java's String.format method to simplify the formatting process, but I ran into trouble when trying to apply variable widths.

Current I have a variable (an int) which is called depth.

I try to do the following:

String.format("%"+depth+"s"," ") + getOriginalText() + "\n";

However I get the following error.

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0

Any suggestions on how to do this, or should I just settle for loops?

Thanks for the help!

Upvotes: 14

Views: 16901

Answers (2)

sam
sam

Reputation: 852

You could try the following using "System.out.printf" command:

int depth = 10;

System.out.printf("%s" + "%" +depth + "s", "Hello","World" );

Hello    World

Upvotes: 1

Yogendra Singh
Yogendra Singh

Reputation: 34367

This works:

int depth = 5;
String str= "Hello"+ String.format("%"+depth+"s"," ") + "world" + "\n";
System.out.println(str);

It prints 5 while spaces in between.

Hello     World.

Please check you code and make sure that depth is assigned with a valid int value. Most likely that (invalid value in depth) is the problem.

Upvotes: 12

Related Questions