在Java中使用2个类用于Comission Calculator

时间:2015-09-30 02:24:45

标签: java class

我正在为一个初学Java课做作业。我们必须编写一个佣金计算器并在其中使用两个类。我被困在如何使用第二类中的一个类的变量。到目前为止我找到的方法对我不起作用。任何建议都会有很大帮助。以下是我到目前为止的代码。



package calc;

/**
 *
 * @author Ethan
 */
import java.util.Scanner;

public class Calc {

    public static void main(String[] args) {
        
 Scanner calcu = new Scanner(System.in); //Creats the scanner used for Input
  //Sets all of the variables to be used
 double sal; //salary
  double com1; //Comission percentage
  double com2; // Find the ammount of comisssion from yearly sales
  double comp; //Yearly Sales
  double frac; //Decimal Comission form
  double total; // Total of Compensation of Yearly salary + Comission
          
    System.out.println("Enter the annual Salary here: ");
    sal = calcu.nextDouble();
    
    System.out.println("Enter the total Sales here: ");
    comp = calcu.nextDouble();
    
   Rate();
frac = com1/100; //converts the Sales Comission to a decimal
 com2 = frac * comp; // Find the total Comission based on the 
  total = sal + com2; //find the total compensation
  
  System.out.print("Your total compensation is " + total);
    
    }
private static void Rate(){
     // Rate of commission is determined below.
        if (comp < 10000)
           com1 = 20;            //20% commission rate
        else if (comp < 30000)
           com1 = 22;             // 22% commission rate
        else if (comp < 50000)
           com1 = 23;            // 23% commission rate
        else if (comp < 100000)
           com1 = 24;            // 24% commission rate
        else
           com1 = 25;            // 25% commission rate
    
}
    
}
&#13;
&#13;
&#13;

我遇到的问题是我无法提取费率,因此可以在计算中使用它们。

2 个答案:

答案 0 :(得分:0)

您的代码中的一些主要问题。您的代码封装在Calc类中,但是没有调用任何构造函数。 (例如,新的Calc())。 Rate()是Calc中的一个方法,因此它将由Calc.Rate()调用。查看一些如何构造java类的示例,您将了解变量的封装。

答案 1 :(得分:0)

到目前为止,您只发布了一个班级。第二个在哪里?您需要确保两个类都在单独的文件中。

public class Class1(){
    //Class variables
    public int myPublicInt;   //public variables are accessable to any class that calls it
    private int myPrivateInt; //private variables can not be modified outside of the class

    //Class constructor, this is used to create objects of a class
    public Class1(){
        myPublicInt = 0;
        myPrivateInt = 1;
    }

    //Now we have setter and getter methods to handle private variables

    public void setMyPrivateInt(int newValue){
        myPrivateInt = newValue;
    }

    public void getMyPrivateInt(){
        return myPrivateInt;
    }

    //lastly this is a private method, only Class1 objects can call this method
    //internally, so we can call it in our constructor but not from Class2
    private void somePrivateMethod(){
        //does something
    }

}

所以现在你将拥有一些第一类,它有一些数据,一些方法和一个构造函数。将变量公开对于代码的安全性并不是一个好主意,您将希望使第二个程序创建第一个访问其变量和方法调用的对象。请参阅以下计划。

public class Class2{

//Class Variables, declares an object of the first class
private Class1 myClassObject;

//Constructor for this class, instantiates the first class object
public Class2(){
    myClassObject = new Class1();
}

//Main method and runtime of our program
public static void main(String args[]){
    Class2 thisClass = new Class2();

    thisClass.printMyPrivateIntFromClass1();
}

//Method from this class, Class2
public void printMyPrivateIntFromClass1(){
    System.out.println(myClassObject.getMyPrivateInt());
}

}

所以在第二个类中我们创建了第一个对象,这样我们就可以操作和使用该对象,它的数据和方法。请注意,我使用构造函数来创建每个类的对象。当您调用该对象时,您还可以调用其公共方法和变量。我再也不建议公开变量,因为它们太容易操作了。如果您拥有导致变量的公共方法,则可以使用这些方法更改或访问存储在其中的数据。希望这有助于解释在另一个内部使用类。

关于缩进的其他一些注意事项,你应该对嵌套在同一级别的代码使用相同的缩进,并且使用{}嵌套在其他东西下面的任何东西都应该再次缩进,以便代码更具可读性为了你和他人。