按照降序对整数进行排序而不使用数组
问题描述:
我想按照降序对6个作业成绩的给定输入进行排序,现在输入是从文件中提取的,它由以下格式的成绩组成 例如: hw1 hw2 hw3 HW4 hw5 hw6 学生1 50 30 40 10 30 0 学生2 12 20 30 12 30 40 学生3 12 50 60 10 20 30按照降序对整数进行排序而不使用数组
我已经写正确的代码取输入,并保存在所述等级变量hw1
,其中所有学生都有hw1
等级,等等等等。
我也写了一个代码来排序hw的成绩,但有一些问题与它有任何帮助,将不胜感激,据我所知在排序代码之前我的while
循环中有问题。
double t2,t1,q1,q2,hw1,hw2,hw3,hw4,hw5,hw6,Final;
String Last_Name,First_Name;
int HW_Count=0;
Scanner input=new Scanner(System.in);
Scanner inData=new Scanner(System.in);
File inFile=new File("grades1.txt");
boolean inFileFound = false;
try {
input=new Scanner(inFile);
inFileFound=true;
}
catch(FileNotFoundException fnf) {
System.out.println("File not found");
}
while(inFileFound&&input.hasNextLine()) {
Last_Name=input.next();
t1=input.nextDouble();
t2=input.nextDouble();
Final=input.nextDouble();
hw1=input.nextDouble();
hw2=input.nextDouble();
hw3=input.nextDouble();
hw4=input.nextDouble();
hw5=input.nextDouble();
hw6=input.nextDouble();
q1=input.nextDouble();
q2=input.nextDouble();
HW_Count=input.nextInt();
First_Name=input.nextLine();
double t1final=t1*10/100;
double t2final=t2*15/100;
double Finalfinal=Final*25/200;
double q1final=q1*1/10;
double q2final=q2*1/10;
double finalgrade=0;
double temp=0;
while((hw1<hw2)||(hw2<hw3)||(hw3<hw4)||(hw4<hw5)) {
if(hw1<hw2) {
temp=hw1;
hw1=hw2;
hw2=temp;
}
if(hw2<hw3) {
temp=hw2;
hw2=hw3;
hw3=temp;
}
if(hw3<hw4) {
temp=hw3;
hw3=hw4;
hw4=temp;
}
if(hw4<hw5) {
temp=hw4;
hw4=hw5;
hw5=temp;
}
if(hw5<hw6) {
temp=hw5;
hw5=hw6;
hw6=temp;
}
}
}
答
我发现只有一个问题与您的代码,虽然它可能不是所有的,因为它是很难理解断章取义(我只是要信任你的文件读取,因为我不知道该怎么文件被格式化)。尽管我不喜欢使用Final作为变量(final是关键字),但它起作用。我可以清楚地看到的问题是while循环。虽然你在你的排序中考虑了hw6,但它不是while循环的一部分。这意味着如果hw1 = 5,hw2 = 10,hw3 = 15,hw4 = 20,hw5 = 25,hw6 = 0;排序不会发生,他们仍然会失灵。使while循环while((hw1<hw2)||(hw2<hw3)||(hw3<hw4)||(hw4<hw5))|| (hw5<hw6))
此外,即使没有使用数组时,我会做一个交换方法采取2个HWS和交换它们,因为多余的代码是多余的和凌乱:
private void swap(double a, double b){
int temp= a;
a=b;
b=temp;
}
添加||(hw5