首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对整数进行降序排序,不使用数组

对整数进行降序排序,不使用数组
EN

Stack Overflow用户
提问于 2017-04-19 08:25:06
回答 1查看 37关注 0票数 0

我想按降序对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循环中存在问题,如果有任何帮助,我将不胜感激。

代码语言:javascript
运行
复制
 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;
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2017-04-19 09:08:46

我只发现了你的代码中的一个问题,尽管可能不是全部,因为它很难脱离上下文理解(我只会相信你的文件读取,因为我不知道文件是如何格式化的)。虽然我不喜欢使用Final作为一个变量(final是一个关键字),但它是有效的。我能清楚地看到的问题实际上是while循环。尽管在排序中确实考虑到了hw6,但它不是while循环的if的一部分。这意味着如果hw1=5,hw2=10,hw3=15,hw4=20,hw5=25,hw6=0;排序不会发生,它们仍然是无序的。另外,即使不使用数组,我也会创建一个while((hw1<hw2)||(hw2<hw3)||(hw3<hw4)||(hw4<hw5))|| (hw5<hw6))方法来接收2个工作流,并交换它们,因为冗余代码是额外的和混乱的:

代码语言:javascript
运行
复制
private void swap(double a, double b){
    int temp= a;
    a=b;
    b=temp;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43484264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档