Write a Java program that lets the user enter four quarterly sales figures for s
ID: 3677477 • 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.
Explanation / Answer
import static java.lang.System.out;
import java.util.Scanner;
public class QuarterlySales {
public static final int NUM_DIVISIONS = 6;
String[] names = new String[NUM_DIVISIONS];
double[][] figure = new double[names.length][4];
static String[] Quarters = {"Names\Quarters","Quarter 1","Quarter 2","Quarter 3","Quarter 4"};
public void getInputs(){
Scanner in = new Scanner(System.in).useDelimiter(" ");
for(int i=0;i<names.length;i++){
out.print("Enter Name of Division: ");
names[i] = in.next();
out.println("Enter Quarterly Sales figures for division '"+names[i]+"'");
out.println("Instructions: Put 'Q'<QuarterNumber>:<Figure> for entering each Quarterly figure. Example Input: Q1:12345");
out.println("Type 'help' for the List of Available Commands.");
while(true){
out.print(">");
String comm = in.next();
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){
out.println("Sales figure dipped below 0. Try Again.");
continue;
}
switch(comm.charAt(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: out.println("Invalid Quarter.");continue;
}
out.println("Sales figure for Quarter "+comm.charAt(1)+" entered.");
}
if(comm.toLowerCase().startsWith("return")){
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")){
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]};
}
// Used to define rows and columns
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(" ");
}
out.println(hr);
}
// Class and methods used for calculations
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(){
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(){
double[][] avg = totalSalesPerQtr();
for(int i = 0;i<avg[0].length;i++){
avg[0][i] = avg[0][i]/figure.length;
}
return avg;
}
double[][] totalSalesPerQtr(){
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(){
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;
}
// Main String that displays and asks user info
public static void main(String[] args){
Scanner in = new Scanner(System.in);
out.println("------------------------------------------");
out.println(" Accounting");
out.println("------------------------------------------");
out.println(" Input");
out.println("------------------------------------------");
QuarterlySales sales = new QuarterlySales();
sales.getInputs();
out.println("------------------------------------------");
out.println(" Menu");
out.println("------------------------------------------");
out.println("1. Display Input");
out.println("2. Display Average Sales");
out.println("3. Display Total Sales");
out.println("4. Highest Sales Per Quarter");
out.println("5. Increase/Decrease in Sales Per Quarter");
out.println("6. Exit");
while(true){
out.print(">");
switch(in.nextInt()){
case 1:out.println(" Input Data:");
sales.displayAsTable(sales.Quarters,sales.names,sales.convertToString(sales.figure));
break;
case 2:out.println(" Average Sales Per Quarter:");
sales.displayAsTable(Quarters,new String[]{"Average"},sales.convertToString(sales.avgSalesPerQtr()));
break;
case 3:out.println(" Total Sales Per Quarter:");
sales.displayAsTable(Quarters,new String[]{"Total"},sales.convertToString(sales.totalSalesPerQtr()));
break;
case 4:out.println(" Highest Sales Per Quarter:");
sales.displayAsTable(Quarters,sales.names,sales.convertToString(sales.highestSalesPerQtr()));
break;
case 5:out.println(" Increase/Decrease in Sales Per Quarter:");
sales.displayAsTable(Quarters,sales.names,sales.convertToString(sales.diffSales()));
break;
default:return;
}
}
}
}
sample output
Enter Name of Division: 4
Enter Quarterly Sales figures for division '4'
Instructions: Put 'Q'<QuarterNumber>:<Figure> for entering each Quarterly figure.
Example Input: Q1:12345
Type 'help' for the List of Available Commands.
>Q1:12345
Sales figure for Quarter 1 entered.
>3000
>2000
>5000
>1000
>200
>0
>help
'return' - Enter Stop entering Sales Figures for this Division.
'display' - View Data Entered.
'help' - This message.
>return
Your Entry:
+--------------+--------------+--------------+--------------+--------------+
|NamesQuarters|Quarter 1 |Quarter 2 |Quarter 3 |Quarter 4 |
+--------------+--------------+--------------+--------------+--------------+
|4 |12345.0 |0.0 |0.0 |0.0 |
+--------------+--------------+--------------+--------------+--------------+
Confirm?(y/n):n
>
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.