我知道如何计算大多数关于Java的东西,但这要么让我感到困惑,要么我的大脑正在死亡。无论如何,我有一个名为“Jobs”的类,并且在该类中是一个名为“day”的String变量。已经创建了多个新作业(具体数字未知),现在我需要查询并查明x天有多少作业。我认为使用while循环会很容易,但我不知道如何创建一个整体看待Jobs而不是一个特定的那个。
通过扫描程序读取文件(其名称为jobFile)来创建作业数据。
public class Job_16997761 {
private int jobID; // unique job identification number
private int customerID; // unique customer identification number
private String registration; // registration number for vehicle for this job
private String date; // when the job is carried out by mechanic
private String day; // day of the week that job is booked for
private double totalFee; // total price for the Job
private int[] serviceCode; // the service codes to be carried out on the vehicle for the job
//Constructor
public Job_16997761(int jobID, int customerID, String registration,
String date, String day, double totalFee, int[] serviceCode) {
this.jobID = jobID;
this.customerID = customerID;
this.registration = registration;
this.date = date;
this.day = day;
this.totalFee = totalFee;
this.serviceCode = serviceCode;
}
答案 0 :(得分:1)
不确定为什么要创建作业的动态实例(例如,Job_16997761,似乎每个作业都有自己的类)。但是在创建作业时,您可以维护一张每天都有作业数量的地图。类似的东西:
Map<String, Long> jobsPerDay=new HashMap<String,Long>();
然后在创建新工作时,您可以简单地增加每天的计数器:
jobsPerDay.put(day,jobsPerDay.get(day)!=null?jobsPerDay.get(day)++:1);
通过这种方式,您可以使用以下内容获取一天的工作数量:jobsPerDay.get(day)
请注意,您可以使用java.time.DayOfWeek
代替String
。
答案 1 :(得分:0)
这只是众多方式中的一种,可能效率不高,但这是您可以考虑的一种方式(编辑上一篇文章之前)。使用arrayList包含所有Job对象并遍历对象。
import java.util.*;
public class SomeClass {
public static void main(String[] args)
{
Jobs job1 = new Jobs(1);
Jobs job2 = new Jobs(1);
Jobs job3 = new Jobs(2);
Jobs job4 = new Jobs(2);
Jobs job5 = new Jobs(2);
ArrayList<Jobs> jobList = new ArrayList<Jobs>();
jobList.add(job1);
jobList.add(job2);
jobList.add(job3);
jobList.add(job4);
jobList.add(job5);
System.out.println(numOfJobOnDayX(jobList, 2)); //Jobs which falls on day 2
}
public static int numOfJobOnDayX(ArrayList<Jobs> jobList, int specifiedDay)
{
int count=0;
for(int x=0; x<jobList.size(); x++) //May use a for-each loop instead
if(jobList.get(x).days == specifiedDay)
count ++;
return count;
}
}
输出: 3
职业班..
class Jobs
{
int days;
public Jobs(int days)
{
this.days = days;
}
}
为简单起见,我没有使用任何getter和setter方法。您可能想要考虑要用于保存对象的数据结构。再一次,我需要再次强调这可能不是一种有效的方式,但它为你提供了一些计算的可能性。
答案 2 :(得分:0)
除非您提供更多详细信息,否则很难告诉您正确的解决方案。你说你可以写while
循环,所以我假设你已经收集了Job
。
int count = 0;
List<Job> jobs = readJobsFromFile();
for(Job job : jobs) {
if(job.getDay().equals(inputDay)){ //inputDay is day you have to find number of jobs on.
count++;
}
}
System.out.Println(count);