[英]Pulling info from one class into another class
我是Java的新手。 对于课堂作业,我需要输入销售人员的姓名和年度销售额,然后根据固定年薪50,000美元显示他们的总工资。 它必须包括2个班级。
我让salesperson
班级正常工作。 Annualwages
类运行,但显示“hello null”和“您的年度总薪酬为50,000美元”(这只是没有增加销售额的固定年薪)。
在运行Annualwages
时,我无法弄清楚如何从salesperson
Annualwages
。
package annualwages;
import java.util.Scanner;
/** @author Rachael */
class salesperson { //begins salesperson class
int annualSales;
String name;
public static void main(String[] args) {
int annualSales;
String name;
// Create a Scanner object to read input.
Scanner keyboard = new Scanner(System. in );
//Get the user's name.
System.out.print("What is your name? ");
name = keyboard.nextLine();
//Get the amount of annual Sales
System.out.print("How much in sales did you make in the last year? ");
annualSales = keyboard.nextInt();
}
} //ends salesperson class
package annualwages;
/**
*
* @author Laptop
*/
public class Annualwages {
/**
* @param args the command line arguments
*/
public static void main(String[] args) { //begins the main method
/**Declaration Statements */
final double COMMISSION = 0.15;
//Sets a fixed variable for commission earned
final double SALARY = 50000;
//Sets a fixed variable for Salary earned
final double SALESTARGET = 120000;
//Sets a fixed variable for the sales target
double totalSales, totalWages, actualCommission, accelFactor = 1.25;
/**
* initializes annual Sales, total Sales, Total Wages,
* actual commission and acceleration factor as a double.
* Sets the acceleration factor to increase by 1.25. */
salesperson sp = new salesperson();
//Sales incentive begins at a minimum at $96,000 in sales.
//if less than, then no commission is earned
if (sp.annualSales <= 96000) {
actualCommission = 0;
}
// Sales incentive with $96,000 or more earns 15% commission
else if ((sp.annualSales > 96000) && (sp.annualSales < SALESTARGET)) {
actualCommission = COMMISSION;
}
//Sales incentive increases if the sales person earns more than $120,000
//in sales with the acceleration factor of 1.25
else {
actualCommission = COMMISSION * accelFactor;
}
//Calculates total sales by multiplying sales and commission
totalSales = sp.annualSales * actualCommission;
//Calculates total wages by adding salary to total sales
totalWages = SALARY + totalSales;
//Display the resulting information.
System.out.println("Hello " + sp.name);
System.out.println("Your total annual compensation is $" + totalWages);
} // ends main method
} // ends annual wages class
在您的salesperson
类中,我会将main
函数中的所有代码移动到构造函数中。 像我在下面所做的那样。 这样做允许您设置非静态字段,以便您可以正确设置您的name
和annualSales
。
import java.util.Scanner;
public class salesperson {
int annualSales;
String name;
public salesperson(){
// Create a Scanner object to read input.
Scanner keyboard = new Scanner(System.in);
//Get the user's name.
System.out.print("What is your name? ");
name=keyboard.nextLine();
//Get the amount of annual Sales
System.out.print("How much in sales did you make in the last year? ");
annualSales=keyboard.nextInt();
}
}
请注意,我从方法中删除了声明name
和annualSales
。 在此之后,您的Annualwages
类中的其余代码应该正常工作。
这两个领域
int annualSales;
String name;
应该是“公共静态”。 您也不应该在main方法中再次定义它们。
最后,您似乎没有使用IDE。 下载“Eclipse IDE”,用Java编写代码。 它会让你的生活更轻松
你必须这样做:
import java.util.Scanner;
class salesperson {
protected int annualSales;
protected String name;
public void saleInformation() {
Scanner keyboard = new Scanner(System.in);
System.out.print("What is your name? ");
name = keyboard.nextLine();
System.out.print("How much in sales did you make in the last year? ");
annualSales = keyboard.nextInt();
}
}
public class Annualwages extends salesperson {
public static void main(String[] args) {
salesperson s = new salesperson();
s.saleInformation();
final double COMMISSION = 0.15;
final double SALARY = 50000;
final double SALESTARGET = 120000;
double totalSales, totalWages, actualCommission, accelFactor = 1.25;
if (s.annualSales <= 96000) {
actualCommission = 0;
} else if ((s.annualSales > 96000) && (s.annualSales < SALESTARGET)) {
actualCommission = COMMISSION;
} else {
actualCommission = COMMISSION * accelFactor;
}
totalSales = s.annualSales * actualCommission;
totalWages = SALARY + totalSales;
System.out.println("Hello " + s.name);
System.out.println("Your total annual compensation is $" + totalWages);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.