'I need help understanding the programming challenge called Shipping Charges

The question says The Fast Freight Shipping Company charges the following rates:

Weight of Package                                       Rate per 500 Miles Shipped
2 pounds or less                                        $1.10
Over 2 pounds but not more than 6 pounds                $2.20
Over 6 pounds but not more than 10 pounds               $3.70
Over 10 pounds                                          $3.80

The shipping charge per 500 miles are not prorated. For example, if a 2-pound package is shipped 550 miles, the charges would be $2.20. Write a program that asks the user to enter the weight of a package and then displays the shipping charges.

My problem is that I keep receiving two different answers everytime I put in a weight and distance. For example when I enter the weight as 2 pounds and the distance as 500 miles I get the answers $0.0 and $3.8 which are both incorrect answers. It looks like some weights that I enter are correct answers and others I enter give me incorrect answers. Heres my program:

//import java utilities for scanner class
import java.util.Scanner;           



public class ShippingCharge

{

public static void main (String[] args)

{


//Declare and initialize variable to hold the entered weight.
int weight = 0;                                        

//Declare and initialize variable to hold the entered distance.
double distance = 0.0;                                

//This variable will hold the calculated rate.
double rate; 

//This will decide if the shipping charge will advance up one level.
int distanceMultiplier = (int)distance / 500;  

//This will hold the increments of the shipping charge.
int distanceRemainder;                                  

//Create a Scanner object for the input.
Scanner input = new Scanner(System.in);        

//Get the weight of the package.
System.out.println("What is the weight of the package (in pounds)?");

weight = input.nextInt();

//Get the shipping distance of the package.
System.out.println("What is the shipping distance (in miles)?");

distance = input.nextDouble();

distanceRemainder = (int)distance % 500;
if (distanceRemainder == 0)
{
if (weight <= 2)
    System.out.println("Total Shipping Cost is: $" + (distanceMultiplier * 1.10));
    }
else if (weight > 2 && weight <= 6)
{
    System.out.println("Total Shipping Cost is: $" + (distanceMultiplier * 2.20));
    }
else if (weight > 6 && weight <= 10)
{
    System.out.println("Total Shipping Cost is: $" + (distanceMultiplier * 3.70));
    }
else
{
    System.out.println("Total Shipping Cost is: $" + (distanceMultiplier * 3.80));
    }

if (distanceRemainder != 0)
{
    if (weight <= 2)
    System.out.println("Total Shipping Cost is: $" +(distanceMultiplier + 1) * 1.10);
    }
else if (weight > 2 && weight <= 6)
{
    System.out.println("Total Shipping Cost is: $" +(distanceMultiplier + 1) * 2.20);
    }
else if (weight > 6 && weight <= 10)
{

    System.out.println("Total Shipping Cost is: $" +(distanceMultiplier + 1) * 3.70);

    }
else
{
    System.out.println("Total Shipping Cost is: $" +(distanceMultiplier + 1) * 3.80);

    }

 //end program
 System.exit(0);

 }//end main
 }//end class


Solution 1:[1]

This will work for you

public static void main(String[] args) {

            int weight = 0;
            double distance = 0.0 , distanceExtra ;

            Scanner in = new Scanner(System.in);
            System.out.println("Weight ? ");
            weight = in.nextInt();

            System.out.println("Distance ? ");
            distance = in.nextDouble();
            distanceExtra = distance / 500;
            distanceExtra = Math.ceil(distanceExtra);

            if (weight <= 2) {
                    System.out.printf("charge is :" , (distanceExtra * 1.10));
            } 
            else if (weight > 2 && weight <= 6)
            {
                    System.out.printf("charge is :" , (distanceExtra * 2.20));
            } 
            else if (weight > 6 && weight <= 10) 
            {
                    System.out.printf("charge is :" , (distanceExtra * 3.70));

            } 
            else if (weight > 10) 
            {
                    System.out.printf("charge is :" , (distanceExtra * 4.80));
            }

        }

Solution 2:[2]

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here
        int weight = 0;
        double distance = 0.0 ;
        Scanner keyboard =new Scanner(System.in);

        System.out.println("Enter the Distance");
        distance = keyboard.nextDouble();

        System.out.println("Enter the Weight");
        weight = keyboard.nextInt();


        if (weight <= 2) {
            System.out.println("charge is : " + "$"+1.10);
        }
        else if (weight > 2 && weight <= 6)
        {
            System.out.println("charge is : " + "$"+2.20);
        }
        else if (weight > 6 && weight <= 10)
        {
            System.out.println("charge is : " + "$"+3.70);

        }
        else if (weight > 10)
        {
            System.out.println("charge is :" + "$"+4.80);
        }

    }
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Vishnu Prasad
Solution 2 procrastinator