Java 加薪
我让这个计划按照我想要的方式运行。我正试图让这个计划给每个员工的工资增加2%。我的问题是程序的输出没有显示2%的提升 这是我运行程序时得到的输出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
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()方法的签名除了我提到的方法外,没有提供任何其他方法。