Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加薪_Java - Fatal编程技术网

Java 加薪

Java 加薪,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 qui

我让这个计划按照我想要的方式运行。我正试图让这个计划给每个员工的工资增加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;
}
}
import java.util.Scanner;
公营工资{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪输入=新扫描仪(System.in);
//声明变量
int[]ssNumbers=新int[10];
双倍[]工资=新的双倍[10];
double[]nSalaries=新的double[10];
INTC;
c=输入数据(ssNumbers,salary);//调用输入数据方法
raise(salaries,c);//调用raise方法
输出(ssNumbers,salaries);//调用输出方法
}
公共静态int-inputData(int[]ssn,double[]sals){//input方法
int c=0;
扫描仪输入=新扫描仪(System.in);
int-ssNum;
系统输出打印(“输入社会保险号:”);
ssNum=input.nextInt();
while(ssNum!=-1)//使用while循环。
{
ssn[c]=ssNum;
系统输出打印(“输入薪资”);
sals[c]=input.nextDouble();//提示用户输入
C++;
System.out.print(“请输入下一个安全号码或-1退出:”;
ssNum=input.nextInt();//提示用户输入
}
返回c;
}
公共静态无效提升(double[]工资,int c)//提升方法
{
double[]salaryraise=新的double[10];
对于(int i=0;i
在您的
raise
方法中,您创建了一个名为
salaryraise
的本地数组,并将新的数字分配给它,但您对它不做任何操作,它超出了范围

您发送到
输出
nSalaries
的数组已声明,但在发送到
输出
之前,它从未被修改过


nSalaries
作为第二个参数传递给
raise
,并让
raise
为该数组赋值,而不是声明一个本地数组并为其赋值。

raise
方法中,创建一个名为
salaryraise
的本地数组,并为其赋值,但你什么都不做,它超出了范围

您发送到
输出
nSalaries
的数组已声明,但在发送到
输出
之前,它从未被修改过


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

请参见代码中的注释:

public static void raise (double[] salaries, int c) // raise method {
    double[] salaryraise = new double [10];

    // Here, you write to a new array and the original array isn't modified at all.
    for (int i = 0; i < c; i++ ) {
        salaryraise[i] = salaries[i]*.02;
    }
    // Change it for
    for (int i = 0; i < c; i++ ) {
        salaries[i] *= 1.02;
    }
}
publicstaticvoidraise(double[]工资,int c)//raise方法{
double[]salaryraise=新的double[10];
//在这里,您写入一个新数组,而原始数组根本没有被修改。
对于(int i=0;i
请参见代码中的注释:

public static void raise (double[] salaries, int c) // raise method {
    double[] salaryraise = new double [10];

    // Here, you write to a new array and the original array isn't modified at all.
    for (int i = 0; i < c; i++ ) {
        salaryraise[i] = salaries[i]*.02;
    }
    // Change it for
    for (int i = 0; i < c; i++ ) {
        salaries[i] *= 1.02;
    }
}
publicstaticvoidraise(double[]工资,int c)//raise方法{
double[]salaryraise=新的double[10];
//在这里,您写入一个新数组,而原始数组根本没有被修改。
对于(int i=0;i
这似乎是一个家庭作业问题,但我还是会给你一个提示。从外观上看,您正在调用raise(),它将每个工资设置为2%,而不是工资+2%。此外,您实际上并没有在函数之外使用这些“提升”。什么是
void-raise
会影响函数之外的任何内容?我觉得这里没有必要投反对票。这看起来确实与家庭作业有关,但OP确实实现了大部分,他们只需要帮助识别特定的bug。他们显然很努力。这似乎是一个家庭作业问题,但无论如何我会给你一个提示。从外观上看,您正在调用raise(),它将每个工资设置为2%,而不是工资+2%。此外,您实际上并没有在函数之外使用这些“提升”。什么是
void-raise
会影响函数之外的任何内容?我觉得这里没有必要投反对票。这看起来确实与家庭作业有关,但OP确实实现了大部分,他们只需要帮助识别特定的bug。他们显然投入了精力。这将修改原始的
工资
数组,但这些值需要保留,以便可以在
输出
方法中打印。感谢您指出这一点。我没有注意到,因为raise()方法的签名没有提供我提到的方法以外的任何其他方法。这将修改原始的
palaries
数组,但是这些值需要保留,以便可以在
output
方法中打印。感谢您指出这一点。我没有注意到,因为raise()方法的签名除了我提到的方法外,没有提供任何其他方法。