当前位置: 首页 > 知识库问答 >
问题:

数组/方法中未存储任何功能不正常的内容

慕弘深
2023-03-14

目的:“使用以下数组作为字段编写工资单类:雇员ID:一个由七个整数组成的数组来保存雇员标识号。该数组应使用以下数字初始化:568845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489小时:一个由七个整数组成的数组来保存每个雇员的工作小时数。pay费率:一个由七个双精度组成的数组来保存每个雇员的小时工资率工资:一个由七个双精度组成的数组来保存每个雇员的总工资。该类应该通过他的子对象来关联每个数组中的数据。该类应该有一个方法来接受雇员的标识号作为参数并返回该雇员的总工资。”

使用Grosspay方法设置/获取方法:

public class Payroll{
   private int [] employeeID ={5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};
   private int [] hours = new int [7];
   private double [] wages = new double [7];
   private double [] payRate = new double [7];


   public void setEmployeeID(int a, int emp){
      employeeID[a] = emp;
   }
   public void setHours(int a, int hr){
      hours[a] = hr;
   }
   public void setWages(int a, int wgs){
      wages[a] = wgs;
   }
   public void setPayrate(int a, int prt){
      payRate[a] = prt;
   }
   public int getEmployeeID(int a){
      return employeeID[a];
   } 
   public int getHours(int a){
      return hours[a];
   }
   public double getWages(int a){
      return wages[a];
   }
   public double getPayrate(int a){
      return payRate[a];
   }
   public void Grosspay(){
      for(int a = 0; a < 7; a++){
         wages[a] = hours[a] * payRate[a];

      }

   } 
}

执行所有操作的地方:

import java.util.Scanner;
public class TestPayroll{
   public static void main(String [] args){
      Scanner in = new Scanner(System.in);
      Payroll pr = new Payroll();
      int hr;
      double prt;

      for (int a = 0; a < 7; a++){
         System.out.println("Enter in the hours worked by employee " + pr.getEmployeeID(a));
         hr = in.nextInt();
         pr.setHours(a,hr);
         while(hr < 0){
            System.out.println("Enter in a number greater than 0");
            hr = in.nextInt();
            pr.setHours(a,hr);
         }
         System.out.println("Enter in the pay rate for employee " + pr.getEmployeeID(a));
         prt = in.nextDouble();
         while(prt < 6.00){
            System.out.println("Enter in a payrate greater than 6.00");
            prt = in.nextDouble();
         }

      }
      pr.Grosspay();
      for(int a = 0; a < 7; a++){
         System.out.println("Employee " + pr.getEmployeeID(a) + " has a gross pay of " + pr.getWages(a));
      }


   }

我运行这个程序,除了打印工资之外,一切都很好。工资不是小时[a]*pay费率[a]的结果,而是打印0.0。我在想Grosspay方法可能没有按照我认为的方式运行。或者可能是我设置了工资[a]=wgs,但代码中没有使用wgs,因此工资数组中没有存储任何内容。那么我的代码有什么问题,0.0正在打印出来?感谢任何帮助。

共有1个答案

赵健柏
2023-03-14

试试这个

工资名单班

private int [] employeeID ={5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};
private int [] hours = new int [7];
private double [] wages = new double [7];
private double [] payRate = new double [7];


public void setEmployeeID(int a, int emp){
    employeeID[a] = emp;
}
public void setHours(int a, int hr){
    hours[a] = hr;
}
public void setWages(int a, int wgs){
    wages[a] = wgs;
}
public void setPayrate(int a, double prt){
    payRate[a] = prt;
}
public int getEmployeeID(int a){
   return employeeID[a];
}
public int getHours(int a){
   return hours[a];
}
public double getWages(int a){
   return wages[a];
}
public double getPayrate(int a){
    return payRate[a];
}
public void Grosspay(){
    for(int a = 0; a < 7; a++){
        wages[a] = hours[a] * payRate[a];
    }
}

Main.class

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    Payroll pr = new Payroll();
    int hr,wgs = 0;
    double prt;

    for (int a = 0; a < 7; a++){
        System.out.println("Enter in the hours worked by employee " + pr.getEmployeeID(a));
        hr = 1;
        pr.setHours(a,hr);
        while(wgs <= 0){
            System.out.println("Enter in a number greater than 0");
            wgs = 1;
            pr.setWages(a,wgs);
        }
        System.out.println("Enter in the pay rate for employee " + pr.getEmployeeID(a));
        prt = 1;
        while(prt < 6.00){
            System.out.println("Enter in a payrate greater than 6.00");
            prt = 7;
            pr.setPayrate(a,prt);
        }

    }
    pr.Grosspay();
    for(int a = 0; a < 7; a++){
        System.out.println("Employee " + pr.getEmployeeID(a) + " has a gross pay of " + pr.getWages(a));
    }
}
 类似资料:
  • 问题内容: JDK中是否有一个标准的功能接口,该接口什么都不做,什么也不返回?我找不到一个。类似于以下内容: 问题答案: 那么Runnable呢:

  • 问题内容: 我试图了解Java中的数组设置。创建数组后,为什么必须为数组中的每个对象初始化空间。它是如何存储在内存中的,如下所示: 或像这样: 换句话说,实际上是在内存中执行的操作。是否仅返回对内存中保留位置的引用,并且该语句沿10个指针的行创建内容,这些指针随后由新语句分配? 问题答案: 阵列,Java软件商店的两件事情之一:要么基本值(,,…)或引用(又名指针)。 因此,仅为10个引用创建空间

  • 我不知道它是否可行,但我可以在数组中存储方法或函数吗?我现在知道多维数组,并使用它来存储我想要的许多数组。我现在想做的是将我创建的方法或函数存储在某个类中。因为我想将所有函数存储到某个类中,如果我想使用循环,就调用它。并使我的编码更简洁易懂。例子: 像那样?可能吗?

  • 问题内容: 我想将方法​​返回的数组存储到另一个数组中。我怎样才能做到这一点? 当我调用此方法时,如何将返回的数组(z)存储到另一个数组中? 问题答案: 上面的方法不返回数组本身,而是返回对该数组的引用。在调用函数中,您可以在另一个引用中收集此返回值,例如: 此后还将引用之前引用的同一数组。 如果这不是您想要的,并且要创建阵列的副本,则可以使用创建副本。

  • 我试图将公共静态void readGrades()的结果存储到方法数组int[]grades中。但是我没有这样做。我试过数组列表和其他东西,但不幸的是。

  • 问题内容: 我在AI项目上使用Redis。 这个想法是让多个环境模拟器在许多cpu内核上运行策略。模拟器将体验(状态/操作/奖励元组列表)写入Redis服务器(重播缓冲区)。然后,培训过程将经验作为数据集读取以生成新策略。将新策略部署到模拟器,删除先前运行的数据,然后继续该过程。 大部分经验都记录在“状态”中。通常将其表示为尺寸为80 x 80的大型numpy数组。模拟器会以cpu允许的最快速度生