提交的话,需要将sjf改为Main,package去掉
package pta;
import java.util.*;
class Work{
String workName; //workName用来记录作业名
float finishTime; //finishTime记录作业完成时间
float arriveTime; //arriveTime记录作业到达时间
float turnAroundTime; //turnAroundTime记录作业周转时间
float daiTime; //daiTime记录作业带权周转时间
float serviceTime; //serviceTime记录作业服务时间
}
public class sjf{
public static void main(String[] args) {
Work example=new Work(); //example用来交换work
//System.out.println("请输入作业数量:");
Scanner reader= new Scanner(System.in);
int numb = reader.nextInt(); //numb记录作业数量
Work[] work=new Work[numb];
//System.out.println("请输入作业名:");
for(int i=0;i<numb;i++) { //输入作业名
work[i]=new Work();
work[i].workName=reader.next();
}
//System.out.println("请输入作业到达时间:");
for(int i=0;i<numb;i++) { //输入作业到达时间
work[i].arriveTime=reader.nextFloat();
}
//System.out.println("请输入作业服务时间:");
for(int i=0;i<numb;i++) { //输入作业服务时间
work[i].serviceTime=reader.nextFloat();
}
//System.out.println("完成输出");
for(int i=0;i<numb-1;i++) { //根据到达时间排序第一次
for(int j=i+1;j<numb;j++) {
if(work[i].arriveTime>work[j].arriveTime) {
example=work[j];
work[j]=work[i];
work[i]=example;
}
}
}
for(int i=0;i<numb-1;i++) { //在相同的到达时间内再按服务时间排序,确定第一个运行的作业
for(int j=i+1;j<numb;j++) {
if(work[i].arriveTime==work[j].arriveTime) {
if(work[i].serviceTime>work[j].serviceTime) {
example=work[j];
work[j]=work[i];
work[i]=example;
}
}
}
}
for(int i=0;i<numb;i++) {
if(i==0) {
work[i].finishTime=work[i].arriveTime+work[i].serviceTime;
}
else {
for(int j=i;j<numb;j++) {
if(work[i-1].finishTime>=work[j].arriveTime){
if(work[i].serviceTime>work[j].serviceTime) {
example=work[j];
work[j]=work[i];
work[i]=example;
}
work[i].finishTime=work[i].serviceTime+work[i-1].finishTime;
}
else if(work[i-1].finishTime<work[i].arriveTime){
work[i].finishTime=work[i].arriveTime+work[i].serviceTime;
break;
}
}
}
work[i].turnAroundTime=work[i].finishTime-work[i].arriveTime;
work[i].daiTime=work[i].turnAroundTime/work[i].serviceTime;
}
for(int i=0;i<numb-1;i++) { //根据到达时间排序第二次
for(int j=i+1;j<numb;j++) {
if(work[i].arriveTime>work[j].arriveTime) {
example=work[j];
work[j]=work[i];
work[i]=example;
}
}
}
System.out.printf("作 业 名:"); //输出作业名
for(int i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%s ",work[i].workName);
}
else {
System.out.printf("%s",work[i].workName);
}
}
System.out.printf("\n到达时间:"); //输出到达时间
for(int i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%.0f ",work[i].arriveTime);
}
else {
System.out.printf("%.0f",work[i].arriveTime);
}
}
System.out.printf("\n服务时间:"); //输出服务时间
for(int i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%.0f ",work[i].serviceTime);
}
else {
System.out.printf("%.0f",work[i].serviceTime);
}
}
System.out.printf("\n完成时间:"); //输出完成时间
for(int i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%.0f ",work[i].finishTime);
}
else {
System.out.printf("%.0f",work[i].finishTime);
}
}
System.out.printf("\n周转时间:"); //输出周转时间
for(int i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%.0f ",work[i].turnAroundTime);
}
else {
System.out.printf("%.0f",work[i].turnAroundTime);
}
}
System.out.printf("\n带权周转时间:"); //输出带权周转时间
for(int i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%.2f ",work[i].daiTime);
}
else {
System.out.printf("%.2f",work[i].daiTime);
}
}
}
}