java - 增加工资加薪

标签 java

我让程序按照我想要的方式运行。我正在努力让该程序为每个员工的工资增加 2%。我的问题是程序的输出不显示 2% 的提升。

这是我运行程序时得到的输出..

Enter social security number:12345678
Enter salary2000
Please input next security numbers or -1 to quit:12345677
Enter salary3000
Please input next security numbers or -1 to quit:-1
        Social Security Number                       Salaries             Salary After Raise
                      12345678                    2000.000000                       0.000000
                      12345677                    3000.000000                       0.000000

代码..

import java.util.Scanner;
public class Salaries {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input = new Scanner (System.in);

    //Declaring variables
    int[] ssNumbers = new int [10];
    double[] salaries = new double [10];
    double[] nSalaries = new double [10];
    int c;

    c = inputData (ssNumbers, salaries); //calling input data method
    raise (salaries, c); // calling raise method
    output (ssNumbers, salaries, nSalaries); //calling output method
}
public static int inputData (int[]ssn, double[]sals){ // input method

    int c = 0;

    Scanner input = new Scanner (System.in);
    int ssNum;

    System.out.print("Enter social security number:");
    ssNum = input.nextInt();

    while (ssNum != -1) //using while loop.
    {
        ssn[c] =  ssNum;

        System.out.print("Enter salary");
        sals[c] = input.nextDouble(); //prompting user for input 
        c++;

        System.out.print("Please input next security numbers or -1 to quit:");
        ssNum = input.nextInt();  //prompting user for input 
    }
        return c;   
}
public static void raise (double[] salaries, int c) // raise method

{
    double[] salaryraise = new double [10];

    for (int i = 0; i < c; i++ )
    salaryraise[i] = salaries[i]*.02;

}
public static void output (int[] ssNumbers, double[] salaries, double[] salaryraise ) //output method
{
    System.out.printf("%30s %30s %30s\n", "Social Security Number", "Salaries", "Salary After Raise");
    for (int i = 0; i < salaries.length; i++)

        //output
        System.out.printf("%30d %30f %30f\n", ssNumbers[i], salaries[i], salaryraise[i]);

    return;
}
}

最佳答案

在您的 raise 方法中,您创建一个名为 salaryraise 的本地数组,并将新数字分配给它,但您不对其执行任何操作,它就会消失范围。

您发送到output的数组nSalaries已声明,但在发送到output之前绝不会被修改。

nSalaries 作为第二个参数传递给 raise,并让 raise 为该数组分配值,而不是声明本地数组并分配值到它。

关于java - 增加工资加薪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22997678/

相关文章:

java - 使用 SWT 进行快速像素绘图?

java - 在 Java 中将许多对象引用初始化为默认值的最佳方法(代码风格)

java - 如何解决 glassfish 服务器上的部署错误?

java - JPA/Eclipselink - 动态选择数据源/JDBC URL

java - 求 BST 中节点到根的距离

java - 如何在 android 中允许对 WebView 的照片库权限?

java - Netbeans 将外部文件夹添加到项目中(如 Eclipse 上的链接文件夹)

java - "java.lang.NullPointerException: Attempt to invoke virtual method ' .. .' on a null object reference"是什么意思,如何解决?

java - 与对象作斗争,程序无法按预期工作(java)

java - 访问自定义字段 Salesforce