我正在为一个初学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;
我遇到的问题是我无法提取费率,因此可以在计算中使用它们。
答案 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());
}
}
所以在第二个类中我们创建了第一个对象,这样我们就可以操作和使用该对象,它的数据和方法。请注意,我使用构造函数来创建每个类的对象。当您调用该对象时,您还可以调用其公共方法和变量。我再也不建议公开变量,因为它们太容易操作了。如果您拥有导致变量的公共方法,则可以使用这些方法更改或访问存储在其中的数据。希望这有助于解释在另一个内部使用类。
关于缩进的其他一些注意事项,你应该对嵌套在同一级别的代码使用相同的缩进,并且使用{}嵌套在其他东西下面的任何东西都应该再次缩进,以便代码更具可读性为了你和他人。