How to display asteriks according to total salary

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pantherxin
    New Member
    • Apr 2010
    • 12

    How to display asteriks according to total salary

    Hint at how I can get asteriks to display according to salary ranges?

    Code:
    import java.util.Scanner; // program uses class Scanner
    
    public class SalesCommission
    {
    	public static void main( String args[] )
    	{
            // create Scanner for input from command window
    	    Scanner input = new Scanner( System.in );
    		
    		// declare and initialize array
    		int sales[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    
    		// create space for the array
    		sales = new int[11];
    
    		// declare variables
    		int gross = 0;
    		double commission = 0;
    		double totalSalary = 0;
    		double rate = 0.09;
    		int counter = 0;
    		
    		
    		System.out.printf(  "Enter Gross: " ); // prompt user for input
    		gross = input.nextInt(); // read integer input
            commission = gross * rate;
            totalSalary = gross + commission + 200;
    
            System.out.printf( "%6s%4s\n", "Total Salary is: " , totalSalary );
    		
            // 
    		for ( counter = 2; counter < sales.length; counter++ )
                
    		{
                if ( totalSalary == 200 && totalSalary == 299 )
    			   System.out.printf( "%9d: ", 1000 );
                else
                   System.out.printf( "%04d-%04d: ",
                      counter * 100, counter * 100 + 99 );
    
    			if ( totalSalary == 300 && totalSalary == 399 )
    				 sales[2]++; 
    			else if ( totalSalary == 400 && totalSalary ==499 )
    				sales[3]++;
    			else if ( totalSalary == 500 && totalSalary == 599 )
    				sales[4]++;
    			else if ( totalSalary == 600 && totalSalary == 699 )
    				sales[5]++;
    			else if ( totalSalary == 700 && totalSalary ==799 )
    				sales[6]++;
    			else if ( totalSalary == 800 && totalSalary == 899 )
    				sales[7]++;
    			else if ( totalSalary == 900 && totalSalary == 999 )
    				sales[8]++;
    			else if ( totalSalary = 1000 )
    				sales[9]++;
    
                // print bar of asteriks
    			for ( int stars = 0; stars < sales[counter]; stars++ )
    				System.out.print(  "*" );
    			
    			System.out.println();
            } // end outer for	
    	} // end main
    } // end class SalesCommission
  • jkmyoung
    Recognized Expert Top Contributor
    • Mar 2006
    • 2057

    #2
    Take one statement:
    totalSalary == 300 && totalSalary == 399
    You want:
    totalSalary >= 300 && totalSalary <= 399

    Otherwise the statements will always be false.

    Comment

    • pantherxin
      New Member
      • Apr 2010
      • 12

      #3
      I have tried everything, even switched to this and still wont print asteriks. I think its because when I run it, the results are numbers with decimal, e.g. enter 400, result 636.0. Cant figure out how to return an integer, as that is what my range is, whole numbers.
      Code:
       import java.util.Scanner; // program uses class Scanner
      
      public class SalesCommission
      {
      	public static void main( String args[] )
      	{
              // create Scanner for input from command window
      	    Scanner input = new Scanner( System.in );
      		
      		// declare and initialize array
      		int sales[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      
      		// create space for the array
      		sales = new int[11];
      
      		// declare variables
      		int gross = 0;
      		double commission = 0;
      		double totalSalary = 0;
      		double rate = 0.09;
      		int counter = 0;
      		
      		System.out.printf(  "Enter Gross: " ); // prompt user for input
      		gross = input.nextInt(); // read integer input
              commission = gross * rate;
              totalSalary = gross + commission + 200;
      
              System.out.printf( "%6s%4s\n", "Total Salary is: " , totalSalary );
            
      		for ( counter = 2; counter < sales.length; counter++ )
              {
                  if ( totalSalary >= 200 ){
      				 sales[1]++;
      			}else if ( totalSalary >= 300 ){
      				 sales[2]++; 
      			}else if ( totalSalary >= 400 ){
      				sales[3]++;
      			}else if ( totalSalary >= 500 ){
      				sales[4]++;
      			}else if ( totalSalary >= 600 ){
      				sales[5]++;
      			}else if ( totalSalary >= 700 ){
      				sales[6]++;
      			}else if ( totalSalary >= 800 ){
      				sales[7]++;
      			}else if ( totalSalary >= 900 ){
      				sales[8]++;
      			}else if ( totalSalary >= 1000 ){
      				sales[9]++;
      			}
      
                  // print bar of asteriks
      			for ( int stars = 0; stars < sales[counter]; stars++ )
      				System.out.print(  "*" );
                      System.out.printf( "%04d-%04d: ",
                        counter * 100, counter * 100 + 99 );
      
      	        sales[1] = 200-299;
      			sales[2] = 300-399;
      			sales[3] = 400-499;
      			sales[4] = 500-599;
      			sales[5] = 600-699;
      			sales[6] = 700-799;
      			sales[7] = 800-899;
      			sales[8] = 900-999;
      			sales[9] = 1000-9999;
      
      			System.out.println();
      		
              } // end outer for	
      	} // end main
      } // end class SalesCommission

      Comment

      • pantherxin
        New Member
        • Apr 2010
        • 12

        #4
        I have tried everythink I know, I even switched to something I think is simpler. I think my problem is my return answer when I run this, is a decimal value e.g. enter 400, answer 636.0. I cant figure out how to return an integer or change decimal to integer.
        Code:
        import java.util.Scanner; // program uses class Scanner
        
        public class SalesCommission
        {
        	public static void main( String args[] )
        	{
                // create Scanner for input from command window
        	    Scanner input = new Scanner( System.in );
        		
        		// declare and initialize array
        		int sales[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        
        		// create space for the array
        		sales = new int[11];
        
        		// declare variables
        		int gross = 0;
        		double commission = 0;
        		double totalSalary = 0;
        		double rate = 0.09;
        		int counter = 0;
        		
        		System.out.printf(  "Enter Gross: " ); // prompt user for input
        		gross = input.nextInt(); // read integer input
                commission = gross * rate;
                totalSalary = gross + commission + 200;
        
                System.out.printf( "%6s%4s\n", "Total Salary is: " , totalSalary );
              
        		for ( counter = 2; counter < sales.length; counter++ )
                {
                    if ( totalSalary >= 200 ){
        				 sales[1]++;
        			}else if ( totalSalary >= 300 ){
        				 sales[2]++; 
        			}else if ( totalSalary >= 400 ){
        				sales[3]++;
        			}else if ( totalSalary >= 500 ){
        				sales[4]++;
        			}else if ( totalSalary >= 600 ){
        				sales[5]++;
        			}else if ( totalSalary >= 700 ){
        				sales[6]++;
        			}else if ( totalSalary >= 800 ){
        				sales[7]++;
        			}else if ( totalSalary >= 900 ){
        				sales[8]++;
        			}else if ( totalSalary >= 1000 ){
        				sales[9]++;
        			}
        
                    // print bar of asteriks
        			for ( int stars = 0; stars < sales[counter]; stars++ )
        				System.out.print(  "*" );
                        System.out.printf( "%04d-%04d: ",
                          counter * 100, counter * 100 + 99 );
        
        	        sales[1] = 200-299;
        			sales[2] = 300-399;
        			sales[3] = 400-499;
        			sales[4] = 500-599;
        			sales[5] = 600-699;
        			sales[6] = 700-799;
        			sales[7] = 800-899;
        			sales[8] = 900-999;
        			sales[9] = 1000-9999;
        
        			System.out.println();
        		
                } // end outer for	
        	} // end main
        } // end class SalesCommission

        Comment

        • jkmyoung
          Recognized Expert Top Contributor
          • Mar 2006
          • 2057

          #5
          1. - does not mean range. - means minus. You're setting all the values to -99.

          2. Your else if clauses are unreachable because you don't have top bounds.
          eg, if totalSalary is 525, then
          totalSalary >= 200 is true.

          3. Move the if-else clauses before the for loop.
          You need a seperate for loop around that and the input:
          Code:
          // Section 1: input
          for(....){
            Get input
            Display total salary
            process total salary
          }
          //section 2: output stars
          for(...) {
            for (stars...){
              display stars.
            }
          }

          Comment

          Working...