Write a java program that lets the user enter four quarterly sales figures for s
ID: 3676277 • Letter: W
Question
Write a java program that lets the user enter four quarterly sales figures for six divisions of a company. The figures should be stored in a two dimensional array. Once the figures are entered the program should display the following for each quarter
a. A list of the sales figures by division.
b. Each division increase or decrease from the previous quarter(this will not be displayed for the first quarter).
c. The total sales for the quarter.
d. The company's increase or decrease from previous quarter(this will not be displayed for the first quarter).
e. The average sales for all divisions that quarter.
f. The division with the highest sales for that quarter.
Input Validation: Do not accept negative numbers for sales figures.
You are expected to design this program on your own. Some help will be provided in class.
Explanation / Answer
import static java.lang.System.out;
import java.util.Scanner;
public class CompanyAccounting
{
public static final int NUM_DIVISIONS = 6;//divisions are not changed
String[] names = new String[NUM_DIVISIONS];
double[][] figure = new double[names.length][4];
//declaring array for reading quarter sales respectively
static String[] Quarters = {"Names\Quarters","Quarter 1","Quarter 2","Quarter 3","Quarter 4"};
//reading four quarterly sales figures for six divisions of a company.
public void getInputs(){
Scanner in = new Scanner(System.in).useDelimiter(" ");
for(int i=0;i<names.length;i++)
{
System.out.print("Enter Name of Division: ");
names[i] = in.next();
System.System.out.println("Enter Quarterly Sales figures for division '"+names[i]+"'"); System.System.out.println("Enter Qnumber and sales Example Input: Q1:12345"); System.System.out.println("Type 'help' for the List of Available Commands."); while(true)
{
out.print(">");
String comm = in.next(); //comm means next string
if(comm.charAt(0)=='q'||comm.charAt(0)=='Q')
{
if(comm.indexOf(":")==-1)continue;
double val =Double.parseDouble(comm.split(":")[1]!=null?comm.split(":")[1]:"0");
if(val<0)
{
System.System.out.println("Sales can not be negative number. Try Again."); continue;
}
switch(comm.charAt(1))//string at char 1 means example Q1 char at1 :1
{
case '1':figure[i][0] = val;break;
case '2':figure[i][1] = val;break;
case '3':figure[i][2] = val;break;
case '4':figure[i][3] = val;break;
default: System.out.println("Invalid Quarter.");
continue;
}
System.out.println("Sales figure for Quarter "+comm.charAt(1)+" entered.");
}
if(comm.toLowerCase().startsWith("return"))
{
System.out.println(" Your Entry:");
displayAsTable(Quarters,new String[]
{names[i]},convertToString(toSingleArray(i)));
out.print(" Confirm?(y/n):");
if(in.next().toLowerCase().charAt(0)=='y')
break;
}
if(comm.toLowerCase().startsWith("display"))
{
displayAsTable(Quarters,new String[]{names[i]},convertToString(toSingleArray(i)));
}
if(comm.toLowerCase().startsWith("help"))
{
System.out.println(" 'return' - Enter Stop entering Sales Figures for this Division. 'display' - View Data Entered. 'help' - This message.");
}
}
}
}
double[][] toSingleArray(int no)
{
return new double[][]{figure[no]};
}
public void displayAsTable(String[] ColumnName, String[] RowName, String[][] data)
{
int max_len = 0;
for(int i=0;i<ColumnName.length;i++)
{
if(max_len<ColumnName[i].length())
max_len = ColumnName[i].length();
}
for(int i=0;i<RowName.length;i++)
{
if(max_len<RowName[i].length())
max_len = RowName[i].length();
}
for(int i=0;i<data.length;i++)
{
for(int j=0;j<data.length;j++)
{
if(max_len<data[i][j].length())
max_len = data[i][j].length();
} }
String hr = "+";
for(int i=0;i<ColumnName.length;i++)
{
for(int j=0;j<max_len;j++)
hr+="-"; hr+="+";
}
out.print(hr+" |");
for(int i=0;i<ColumnName.length;i++)
{
for(int l= ColumnName[i].length();l<max_len;l++)
ColumnName[i]+=" ";
out.print(ColumnName[i]+"|");
}
out.print(" "+hr+" |");
for(int i = 0;i<data.length;i++)
{
for(int l= RowName[i].length();l<max_len;l++)
RowName[i]+=" ";
out.print(RowName[i]+"|");
for(int j=0;j<data[0].length;j++)
{
for(int l= data[i][j].length();l<max_len;l++)
data[i][j]+=" ";
out.print(data[i][j]+"|");
}
if(i!=data.length-1)
out.print(" "+hr+" |");
else out.print(" ");
}
System.out.println(hr);
}
String[][] convertToString(double[][] input)
{
String[][] out = new String[input.length][input[0].length];
for(int i = 0;i<input.length;i++)
for(int j=0;j<input[i].length;j++)
out[i][j] = Double.toString(input[i][j]);
return out;
}
String[][] convertToString(boolean[][] input)
{
String[][] out = new String[input.length][input[0].length];
for(int i = 0;i<input.length;i++)
for(int j=0;j<input[i].length;j++)
out[i][j] = input[i][j]?"u2713":"";
return out;
}
boolean[][] highestSalesPerQtr()//calculating highest sales per quarter
{
boolean[][] hi = new boolean[figure.length][figure[0].length];
for(int i = 0;i<figure[0].length;i++)
{
int max=0;
for(int j=0;j<figure.length;j++)
if(figure[max][i]<figure[j][i])
max = j;
hi[max][i] = true;
}
return hi;
}
double[][] avgSalesPerQtr()//calculating avg sales
{
double[][] avg = totalSalesPerQtr();
for(int i = 0;i<avg[0].length;i++)
{
avg[0][i] = avg[0][i]/figure.length;
}
return avg;
}
double[][] totalSalesPerQtr()//calculating total sales per quarter
{
double[][] total = new double[1][figure[0].length];
for(int i = 0;i<figure[0].length;i++)
{
double sum = 0;
for(int j=0;j<figure.length;j++)
{
sum+=figure[j][i];
}
total[0][i] = sum;
}
return total;
}
double[][] diffSales()//calculating difference between sales
{
double[][] diff = new double[figure.length][figure[0].length];
for(int i = 0;i<figure.length;i++)
{
for(int j=1;j<figure[i].length;j++)
{
diff[i][j] = figure[i][j]-figure[i][j-1];
}
}
return diff;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Company Accounting");
CompanyAccounting sales = new CompanyAccounting();
sales.getInputs();
System.out.println("");
System.out.println("Input Data is:"+; sales.displayAsTable(sales.Quarters,sales.names,sales.convertToString(sales.figure));
System.out.println(" Average Sales Per Quarter:"+ sales.displayAsTable(Quarters,new String[]{"Average"},sales.convertToString(sales.avgSalesPerQtr()));
System.out.println(" Total Sales Per Quarter:"+ sales.displayAsTable(Quarters,new String[]{"Total"},sales.convertToString(sales.totalSalesPerQtr()));
System.out.println(" Highest Sales Per Quarter:"+ sales.displayAsTable(Quarters,sales.names,sales.convertToString(sales.highestSalesPerQtr()));
System.out.println(" Increase/Decrease in Sales Per Quarter:"+ sales.displayAsTable(Quarters,sales.names,sales.convertToString(sales.diffSales()));
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.