110 likes | 222 Views
Formatting Converting numbers to Strings and vice versa. Dept of Computer Science. F21SF Software Engineering Foundations. Monica Farrow EM G30 email : M.Farrow@hw.ac.uk Material available on Vision. Formatting output.
E N D
SJF L3 FormattingConverting numbers to Strings and vice versa Dept of Computer Science F21SFSoftware Engineering Foundations Monica Farrow EM G30 email : M.Farrow@hw.ac.uk Material available on Vision
SJF L3 Formatting output • From java 1.5 onwards, there are formatting features similar to C, which look complicated. You specify the type and the spacing. • This lecture covers an absolute minimum • You’re welcome to find out and use other formatting functionality • If you need further information, see • http://java.sun.com/docs/books/tutorial/java/data/numberformat.html • http://java.sun.com/docs/books/tutorial/essential/io/formatting.html
SJF L3 Formatting output • There is a static format method within the String class. • Call using the class name, like a Math function • The parameters are formatting instructions and the item to be formatted. • A formatted String is returned • You usually need to format a real number, to limit the number of decimal places displayed. • If you are concatenating variables within a sentence, this is the only formatting that you need to do. • However, if you want a table, you can use the width component to fix numbers and text to a fixed width.
SJF L3 Formatting real numbers • In the String format method, the value of the 2nd parameter is returned using the format specified in the 1st parameter String myDistString = String.format("%.1f", distance); If distance contained a double of 296.6666recurring, myDistString = “296.7” • "%.1f" means format a real number to 1 decimal place • % means the string contains formatting information • .1 is the number of decimal places after the . • f means it is a real number
SJF L3 Fixed width decimal numbers • "%-6.2f" • % means the string contains formatting information • - left aligned , default is right aligned • 6 is the minimum width, output will be padded with spaces • .2 is the number of decimal places after the . • f means it is a real number • E.g. String.format(“%6.2f”, 2.33333) => “ 2.33” • E.g. String.format(“%-6.2f”, 2.33333) => “2.33 ” • To print a number within a sentence, omit the minimum width component
SJF L3 Fixed width integers • "%-6d" • % means the string contains formatting information • - left aligned , default is right aligned • 6 is the minimum width, output will be padded with spaces • d means it is an integer number • E.g. String.format(“%6d”, 123) => “ 123” • E.g. String.format(“%-6d”, 123) => “123 ”
SJF L3 Fixed-width text • Use this parameter in the String.format method: %-10s • - left aligned , default is right aligned • 10 is the minimum width, output will be padded with spaces • s means text • The following method call returns "Hello " String.format("%-8s", "Hello"); • The following method call returns " Hello" String.format("%8s", "Hello");
SJF L3 Width known at runtime • You can also create the formatting parameter at run time. E.g. int width = 8; String s = String.format("%"+ width + "s","Hello"); • We could use this approach to centre text within a String (same number of blanks on each side). • To start with, we need to divide the total number of blanks by 2, to find out how many on each side. Use integer division (there might be a remainder)
SJF L3 Converting number to String • Why? Usually, to print or display • You can convert a number to text using the formatting commands String.format • You can also use the String.valueOf command but this will not format it int num = 5; String numText = String.valueOf(num); • If you concatenate a number with a String, the result is a String • 5 + “A” => “5A” 5 + “” => “5”
SJF L3 Converting a String to a number • Why? Usually, if read from a text file or from user input, to use in calculations. From L11 on. • The Integer class has a method to do this. String idtext = “1234”; int id = Integer.parseInt(idtext); • If the text is non-numeric (e.g. “ABCD”), you will get a number format exception • Covered in L09 on exceptions