当前位置: 首页 > 知识库问答 >
问题:

字符串[名称]的描述顺序

华安民
2023-03-14

请帮助根据顶部数字/分数排序字符串(顺便说一句,根据我们的教练,我们不能使用arrays.sort)

package test;
import java.util.Scanner;

public class Test
{

public static void main(String[] args) {   

 
    
    Scanner sc = new Scanner(System.in);
    String [] name = new String[10];
    int [] score = new int [10];     
    int temp = 0;    
        
    //Displaying elements of original array 
    for (int i = 0; i < 10; i++) {  
    System.out.println("\nNumber " + (i+1));
    System.out.print("Input your name: ");
        name[i] = sc.next();
    System.out.print("Input your score: ");
        score[i] = sc.nextInt();
    }    
        
    //Sort the array in descending order    
    for (int i = 0; i < score.length; i++) {     
        for (int j = i+1; j < score.length; j++) {     
           if(score[i] < score[j]) {    
               temp = score[i];    
               score[i] = score[j];    
               score[j] = temp;    
           }     
        }     
    }    
        
    System.out.println();    
        
    //Displaying elements of array after sorting    
    System.out.println("Elements of array sorted in descending order: ");    
    for (int i = 0; i < 3; i++) {     
        System.out.println("the score of " + name[i] + " is " +score[i] + ". ");    
    }    
}    

}

示例输入是这样的

k1 96
k2 92
k3 94
k4 98
k5 91
k6 95
k7 90
k8 99
k9 93
k10 97

我想要的输出是这样的

k8 99
k4 98
k10 97

但是发生的是:

k1 99
k2 98
k3 97

请帮忙,我想要一个简单的解释。非常感谢。

共有2个答案

李烨烁
2023-03-14
//Sort the array in descending order    
    for (int i = 0; i < score.length; i++) {     
        for (int j = i+1; j < score.length; j++) {     
           if(score[i] < score[j]) {    
               temp = score[i];    
               score[i] = score[j];    
               score[j] = temp;    
           }     
        }     
    }   

在这里,对数组排序时,只交换score元素。要保持名称/分数配对,您应该交换偶数名称元素:

//Sort the array in descending order    
    for (int i = 0; i < score.length; i++) {     
        for (int j = i+1; j < score.length; j++) {     
           if(score[i] < score[j]) {    
               temp = score[i];    
               score[i] = score[j];    
               score[j] = temp;
               tmp = name[i]
               name[i] = name[j]
               name[j] = tmp
           }     
        }     
    }   
呼延光明
2023-03-14

您有两个数组,一个名为name,另一个名为score

只对分数进行排序,而不对名称进行更改。

我建议两种解决方案中的任何一种:

  1. 在对象中保留名称和分数,并将其存储在一个数组中,然后根据分数对该数组进行排序

我建议尝试实现数字1,因为名字和分数在概念上是同一个对象的一部分,比如“年龄”和“名字”是代表“人”的对象。

希望这有帮助,祝你的作业好运:-)

 类似资料:
  • 我目前不知道这是如何启用的,但每次我在编辑器中打开一个需要一些参数的文件时,它都会在左侧显示其名称。E、 图中显示的是“值:”。我想禁用它,这样它就不会再显示了。

  • 问题内容: 我正在编程一个网络管理系统,并且需要能够在从SNMP陷阱接收到的OID后面打印出有意义的名称。由于系统的性质/大小,将每个OID手动映射到正在使用的每个设备上的每个MIB的有意义的名称不是一个好主意。 话虽如此,对于MIB中的所有OID,是否有一种免费的(商业用途)自动将名称/描述与其各自的OID配对的方法;然后将这些配对用于Java程序? 换句话说,是否存在将MIB树转换为Java对

  • 问题内容: 我正在使用globus工具包进行项目。在我的服务中,我有一个资源:一个字符串数组。我想从Android客户端获取此资源。我怎样才能做到这一点?如何在wsdl文件中描述“字符串数组”类型?谢谢。 问题答案: 我猜你在找这个 资料来源:http : //www.activebpel.org/samples/samples-2/BPEL_Samples/Resources/Docs/arra

  • 问题内容: 我正在尝试将jenkins管道作为代码来做。我正在使用Github组织文件夹插件来扫描Github组织并为每个分支创建作业。有没有一种方法可以明确定义从Jenkinsfile获取的管道作业的名称?我还想为作业添加一些说明。 问题答案: 您需要使用如下所示。该部分很重要 编辑:上面一个重命名生成,其中原始问题是关于重命名作业。在管道中执行以下脚本可以做到这一点(这需要 适当的权限 )

  • 本文向大家介绍JavaScript 描述符和命名属性,包括了JavaScript 描述符和命名属性的使用技巧和注意事项,需要的朋友参考一下 示例 属性是对象的成员。每个命名属性都是一对(名称,描述符)。该名称是允许访问的字符串(使用点符号object.propertyName或方括号符号object['propertyName'])。描述符是对字段的记录,这些字段定义了访问属性时的行为(属性发生了

  • Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。 本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。 描述符是 Python 中复杂属性访问的基础,它在内部被用于实现 property、方法、类方法、静态方法和 super 类型。 描述符类基于以下 3 个特殊方法,换句话说,这 3 个方法组成