Java 从最低到最高显示标记

Java 从最低到最高显示标记,java,Java,我试图从用户输入中从最低到最高显示分数。代码获取学生姓名数组和分数数组。然后它必须显示从最低到最高的分数以及学生姓名。我对显示学生姓名感到惊讶。代码只是从最低到最高显示分数 int n = 5;//total no of students Scanner in = new Scanner(System.in); System.out.println("Enter Students name:"); String[] s = new String[n]; for (int i = 0; i<

我试图从用户输入中从最低到最高显示分数。代码获取学生姓名数组和分数数组。然后它必须显示从最低到最高的分数以及学生姓名。我对显示学生姓名感到惊讶。代码只是从最低到最高显示分数

int n = 5;//total no of students
Scanner in = new Scanner(System.in);
System.out.println("Enter Students name:");
String[] s = new String[n];
for (int i = 0; i<s.length; i++)
{
  s[i] = in.nextLine();
}
System.out.println("Enter marks:");
int array[] = new int[n]; 
for (int i = 0; i<n; i++) 
{
 array[i] = in.nextInt();
}
Arrays.sort(array);
for (int i = 0; i < array.length; i++) 
{
  System.out.println(array[i]);
}
int n=5//学生总数
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入学生姓名:”);
字符串[]s=新字符串[n];
for(int i=0;i创建一个包装类(比如,
Student
)来存储学生姓名和分数。然后使用比较器对它们进行排序以比较分数

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class testing {
    public static void main(String[] args) {
        int n = 5;//total no of students
        Scanner in = new Scanner(System.in);
        System.out.println("Enter Students name:");
        Student[] students = new Student[n];
        for (int i = 0; i<n; i++)
        {
            students[i] = new Student();
            students[i].name = in.nextLine();
        }
        System.out.println("Enter marks:");
        for (int i = 0; i<n; i++)
        {
            students[i].mark = in.nextInt();
        }
        Arrays.sort(students, new MarkComparator());
        for (int i = 0; i < n; i++)
        {
            System.out.println(students[i].name + " - "+ students[i].mark);
        }
    }
}

class Student {
    int mark;
    String name;
}

class MarkComparator implements Comparator {
    public int compare(Object o1,Object o2){
        Student s1=(Student)o1;
        Student s2=(Student)o2;
        if(s1.mark>=s2.mark) {
            return 1;
        } else {
            return -1;
        }
    }
}

这应该对你有用

// Class student
public class Student implements Comparable {
    public String Name;
    public double Mark;

    // Should implement comparable to be able to compare it via Marks
    @Override
    public int compareTo(Student per) {
        if(this.Mark == per.Mark)
            return 0;
        else
            return this.Mark > per.Mark ? 1 : -1;
    }
}


//total no of students
int n = 5;
// list of students and their marks
Student[] s = new Student[n];
// Scanner
Scanner in = new Scanner(System.in);

// Get student names and their marks
for (int i = 0; i<s.length; i++)
{
    s[i] = new Student();
    System.out.println("Enter Student #" + i + " name :");
    s[i].Name = in.nextLine();

    System.out.println("Enter Student #" + i + " mark :");
    s[i].mark = in.nextDouble();
}


Arrays.sort(s);
for (int i = 0; i < s.length; i++) 
{
    System.out.println(s[i].Name + " : " + s[i].Mark);
}
//班级学生
公立班学生实行可比性{
公共字符串名称;
公共双标记;
//应实施可比性,以便能够通过标记进行比较
@凌驾
公共int比较(每名学生){
如果(this.Mark==每个.Mark)
返回0;
其他的
返回此.Mark>per.Mark?1:-1;
}
}
//学生总数
int n=5;
//学生名单及其分数
学生[]s=新学生[n];
//扫描器
扫描仪输入=新扫描仪(系统输入);
//得到学生的名字和分数

对于(int i=0;iYou应该学习POO来创建一个同时包含
mark
studentName
的对象。现在,您需要自己对数组进行排序,因为您需要同时根据其中一个数组对两个数组进行排序。如果不这样做,您将无法为学生保留正确的标记。没有“简单”的方法回答这个问题。无论我提供什么,根据我看到的你能做的,这都太复杂了。因此,首先,自己编写算法对
数组进行排序,而不使用
数组。排序
。然后,只需同时修改两个数组。如果
s
存储学生的姓名,我看不到显示的任何地方屏幕上的aying
s
。@SteveSmith
String[]s=新字符串[n]
@Matthew,它不会在屏幕上写任何东西,只是初始化数组。@SteveSmith哦,很抱歉我误读了你的评论,是的,他没有打印出名字。整个问题是:我对显示学生的名字感到惊讶。代码只是从最低到最高显示分数。。如果我从用户那里得到n值,它不会如果用户给出n=3,它只得到2个输入,为什么?
// Class student
public class Student implements Comparable {
    public String Name;
    public double Mark;

    // Should implement comparable to be able to compare it via Marks
    @Override
    public int compareTo(Student per) {
        if(this.Mark == per.Mark)
            return 0;
        else
            return this.Mark > per.Mark ? 1 : -1;
    }
}


//total no of students
int n = 5;
// list of students and their marks
Student[] s = new Student[n];
// Scanner
Scanner in = new Scanner(System.in);

// Get student names and their marks
for (int i = 0; i<s.length; i++)
{
    s[i] = new Student();
    System.out.println("Enter Student #" + i + " name :");
    s[i].Name = in.nextLine();

    System.out.println("Enter Student #" + i + " mark :");
    s[i].mark = in.nextDouble();
}


Arrays.sort(s);
for (int i = 0; i < s.length; i++) 
{
    System.out.println(s[i].Name + " : " + s[i].Mark);
}