[英]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.