# JRJC - How To Make Methods

Sometimes when you do the same task over and over, you need to create your own method (or function) to centralize the task. Take a look at this program:
```
{

// get numbers from the command line, right justify each,
// show the sum and the average
public static void main( String args[] )
{
int sum = 0 ;
int i ;
for ( i = 0 ; i < args.length ; i++ )
{
String s = args[ i ];
sum += Integer.parseInt( s );
while( s.length() < 20 )
{
s = " " + s ;
}
System.out.println( s );
}
System.out.println("--------------------");
String sumStr = " " + sum ;
while( sumStr.length() < 15 )
{
sumStr = " " + sumStr ;
}
System.out.println( "total" + sumStr );
String average = " " + ( sum / args.length ) ;
while( average.length() < 13 )
{
average = " " + average ;
}
System.out.println( "average" + average );
}

}

```
Look at the while loops. The same task is essentially done three times! In all cases, the while loop right justifies a string. Here is the same program with a custom rightJustify() method.
```
{

private static String rightJustify( String s , int newLength )
{
while( s.length() < newLength )
{
s = " " + s ;
}
return s ;
}

// get numbers from the command line, right justify each,
// show the sum and the average
public static void main( String args[] )
{
int sum = 0 ;
int i ;
for ( i = 0 ; i < args.length ; i++ )
{
String s = args[ i ];
sum += Integer.parseInt( s );
System.out.println( rightJustify( s , 20 ) );
}
System.out.println("--------------------");
String sumStr = " " + sum ;
System.out.println( "total" + rightJustify( sumStr , 15 ) );
String average = " " + ( sum / args.length ) ;
System.out.println( "average" + rightJustify( average , 13 ) );
}

}

```
My main() method is much simpler now.

The rightJustify() method takes two parameters. A string and an int. The method returns a string.

By looking at my main() method now, I see three cases where I get a number, format it and print it. I'm going to introduce one more method:

```
{

private static String rightJustify( String s , int newLength )
{
while( s.length() < newLength )
{
s = " " + s ;
}
return s ;
}

private static void justifyAndPrint( String leadingText , int number , int totalLength )
{
// convert the number to text
String s = "" + number ;
}

// get numbers from the command line, right justify each,
// show the sum and the average
public static void main( String args[] )
{
int sum = 0 ;
int i ;
for ( i = 0 ; i < args.length ; i++ )
{
String s = args[ i ];
int num = Integer.parseInt( s );
sum += num ;
justifyAndPrint( "" , num , 20 );
}
System.out.println("--------------------");
justifyAndPrint( "total" , sum , 20 );
justifyAndPrint( "average" , sum / args.length , 20 );
}

}

```
I think main() is even simpler now.

One more thing! Look at how "20" crops up over and over ...

```
{

private static String rightJustify( String s , int newLength )
{
while( s.length() < newLength )
{
s = " " + s ;
}
return s ;
}

private static void justifyAndPrint( String leadingText , int number )
{
// convert the number to text
String s = "" + number ;
}

// get numbers from the command line, right justify each,
// show the sum and the average
public static void main( String args[] )
{
int sum = 0 ;
int i ;
for ( i = 0 ; i < args.length ; i++ )
{
String s = args[ i ];
int num = Integer.parseInt( s );
sum += num ;
justifyAndPrint( "" , num );
}
System.out.println("--------------------");
justifyAndPrint( "total" , sum );
justifyAndPrint( "average" , sum / args.length );
}

}

```
Looking good!

See page 44 in Just Java 1.2, or page 95 in Just Java 2 (sixth edition) for more information on methods.