IN JAVA PLEASE !!! Assignment: 1. Consider an interface public interface NumberF
ID: 3721371 • Letter: I
Question
IN JAVA PLEASE !!!
Assignment: 1. Consider an interface public interface NumberFormatter String format(int n); Provide four classes that implement this interface. A DefaultFormatter formats an integer in the usual way. A DeciamlSeparatporFormatrer formats an integer with decimal separators; for example, one million as 1,000,000. An AccoutingFormatter formats negative numbers with parenthesis; for example, -1 as (1). A BaseFormatter formats the number in base n, where n is any number between 2 and 36 that is provided in the constructor. Write a method that takes an array of integers and a NumberFormatter object and prints each number on a separate line, formatted with the given formatter. The numbers should be right aligned. Provide a tester class called IntFormatTester.java that shows the program working with an array of numbers. Use 20 for n for the BaseFormatterExplanation / Answer
Code:
import java.util.Scanner;
interface NumberFormatter
{
String format(int n);
}
//simply convert Integer to String
class DefaultFormatter implements NumberFormatter
{
@Override
public String format(int n) {
// TODO Auto-generated method stub
return String.valueOf(n);
}
}
//comma separated Integer to String conversion
class DecimalSeparatorFormatter implements NumberFormatter
{
@Override
public String format(int n) {
// TODO Auto-generated method stub
String numberAsString = String.format("%,d", n);
return numberAsString;
}
}
//replace negative integer -n with (n)
class AccountingFormatter implements NumberFormatter
{
@Override
public String format(int n) {
// TODO Auto-generated method stub
String str=null;
if(n<0)
{
str=String.valueOf(n);
str=str.replace('-', '(');
str=str+")";
}
else
str=String.valueOf(n);
return str;
}
}
//Convert one base integer to another base integer
class BaseFormatter implements NumberFormatter
{
int base;
public BaseFormatter(int base) {
super();
this.base = base;
}
@Override
public String format(int n) {
// TODO Auto-generated method stub
String str=String.valueOf(n);
return Integer.toString(Integer.parseInt(str, 10), base);
}
}
public class IntFormatTester {
//test method to perform formatting
static void formatting(int arr[],NumberFormatter num)
{
for(int i=0;i<arr.length;i++)
{
System.out.println(num.format(arr[i]));
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int base=20;
int arr[]=new int[10];
System.out.println("Enter the array");
//enter the array
for(int i=0;i<arr.length;i++)
{
Scanner scanner=new Scanner(System.in);
arr[i]=scanner.nextInt();
}
//defining the objects for each formatting class
NumberFormatter num1=new DefaultFormatter();
NumberFormatter num2=new DecimalSeparatorFormatter();
NumberFormatter num3=new AccountingFormatter();
NumberFormatter num4=new BaseFormatter(base);
System.out.println("----Starting Default Formatting----");
formatting(arr,num1);
System.out.println("----End Formatting ---- ");
System.out.println("----Starting Decimal SeparatorFormatting----");
formatting(arr,num2);
System.out.println("----End Formatting ---- ");
System.out.println("----Starting Account Formatting----");
formatting(arr,num3);
System.out.println("----End Formatting ---- ");
System.out.println("----Starting Base Formatting----");
formatting(arr,num4);
System.out.println("----End Formatting ---- ");
}
}
Output:
Enter the array
10000
-20000
10
2
3
4
5
6
7
8
----Starting Default Formatting----
10000
-20000
10
2
3
4
5
6
7
8
----End Formatting ----
----Starting Decimal SeparatorFormatting----
10,000
-20,000
10
2
3
4
5
6
7
8
----End Formatting ----
----Starting Account Formatting----
10000
(20000)
10
2
3
4
5
6
7
8
----End Formatting ----
----Starting Base Formatting----
1500
-2a00
a
2
3
4
5
6
7
8
----End Formatting ----
Note:[Please comment in case of any query.Happy to help]