[英]Sorting integers in descending order without using arrays
我想按降序对给定的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
于所有学生的所有hw1
成绩,依此类推,以此类推。
我还编写了一个代码来对硬件成绩进行排序,但是有一些问题,只要我知道排序代码之前的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循环if的一部分。 这意味着如果hw1 = 5,hw2 = 10,hw3 = 15,hw4 = 20,hw5 = 25,hw6 = 0; 排序不会发生,它们仍然会混乱。 使while循环while((hw1<hw2)||(hw2<hw3)||(hw3<hw4)||(hw4<hw5))|| (hw5<hw6))
while((hw1<hw2)||(hw2<hw3)||(hw3<hw4)||(hw4<hw5))|| (hw5<hw6))
另外,即使不使用数组,我也将使用swap方法来接收2个hws并进行交换,因为冗余代码是多余的且混乱的:
private void swap(double a, double b){
int temp= a;
a=b;
b=temp;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.