Java 如何从数组中打印出名称和数字字符串

Java 如何从数组中打印出名称和数字字符串,java,Java,我必须制作一个程序,让用户输入任意数量的学生,询问每个学生的姓名和年级。如果我说两个学生,我会把比利·史密斯放在54岁,然后它会问我第二个学生的名字,约翰·史密斯,然后是81年级。然后,它按等级降序输出带有等级的名称。它将输出: name---------grades ------------------ John smith 81 billy smith 54 除了打印出来外,我什么都有。我需要它把名字和成绩一起打印出来。以下是我所拥有的: import java.util.*

我必须制作一个程序,让用户输入任意数量的学生,询问每个学生的姓名和年级。如果我说两个学生,我会把比利·史密斯放在54岁,然后它会问我第二个学生的名字,约翰·史密斯,然后是81年级。然后,它按等级降序输出带有等级的名称。它将输出:

name---------grades
------------------
John smith     81

billy smith   54
除了打印出来外,我什么都有。我需要它把名字和成绩一起打印出来。以下是我所拥有的:

import java.util.*;

public class assignment5 {

public static void main(String[] args) {

//      Scanner for first name and last name with space in between.

java.util.Scanner input = new java.util.Scanner(System.in);

input.useDelimiter(System.getProperty("line.separator"));

        System.out.print("Enter the number of students: ");
        int numofstudents = input.nextInt();
        String[] names = new String[numofstudents];
        Double[] array = new Double[numofstudents];
        for(int i = 0; i < numofstudents; i++) {
            System.out.print("Enter the student's name: ");
            names[i] =input.next();
            System.out.print("Enter the student's score: ");
            array[i] = (Double) input.nextDouble();
        }
        System.out.print("Name" + "\tScore");
        System.out.print("\n----" + "\t----\n");
        selectionSort(names, array);
        System.out.println(Arrays.toString(names));

    }
    public static void selectionSort(String[] names, Double[] array) {
        for(int i = array.length - 1; i >= 1; i--) {
            String temp;
            Double currentMax = array[0];
            int currentMaxIndex = 0;
            for(int j = 1; j <= i; j++) {
                if (currentMax > array[j]) {
                    currentMax = array[j];
                    currentMaxIndex = j;
                }
            }       
            if (currentMaxIndex != i) {

                temp = names[currentMaxIndex];
                names[currentMaxIndex] = names[i];
                names[i] = temp;
                array[currentMaxIndex] = array[i];
                array[i] = currentMax;
            }
        }       
    }
}
import java.util.*;
公共课堂作业5{
公共静态void main(字符串[]args){
//名字和姓氏的扫描器,中间有空格。
java.util.Scanner输入=新的java.util.Scanner(System.in);
input.useDelimiter(System.getProperty(“line.separator”);
System.out.print(“输入学生人数:”);
int numofstudents=input.nextInt();
字符串[]名称=新字符串[numofstudents];
Double[]数组=新的Double[numofstudents];
for(int i=0;i=1;i--){
字符串温度;
双电流最大值=数组[0];
int currentMaxIndex=0;
对于(int j=1;j数组[j]){
currentMax=数组[j];
currentMaxIndex=j;
}
}       
如果(currentMaxIndex!=i){
temp=名称[currentMaxIndex];
名称[currentMaxIndex]=名称[i];
名称[i]=临时工;
数组[currentMaxIndex]=数组[i];
数组[i]=currentMax;
}
}       
}
}

这与值基排序图非常相似。下面提供的解决方案会有所帮助


这是一种方法,创建一个
Student
类来存储姓名/成绩对,并在读取所有输入后使用带有自定义
比较器的
数组.sort()
按降序排序:

import java.util.*;

public class assignment5 {

public static void main(String[] args) {

//      Scanner for first name and last name with space in between.

        java.util.Scanner input = new java.util.Scanner(System.in);

        input.useDelimiter(System.getProperty("line.separator"));

        System.out.print("Enter the number of students: ");
        int numofstudents = input.nextInt();
        //String[] names = new String[numofstudents]; //not needed
        //Double[] array = new Double[numofstudents]; //not needed
        Student[] students = new Student[numofstudents]; //added

        for(int i = 0; i < numofstudents; i++) {
            System.out.print("Enter the student's name: ");
            //names[i] =input.next();
            String student = input.next(); //added

            System.out.print("Enter the student's score: ");
            //array[i] = (Double) input.nextDouble();
            Double grade = (Double) input.nextDouble(); //added

            students[i] = new Student(student, grade); //added
        }
        System.out.print("Name" + "\tScore");
        System.out.print("\n----" + "\t----\n");
        //selectionSort(names, array);

        Arrays.sort(students, new Comparator<Student>() {

          @Override
          public int compare(Student entry1, Student entry2) {
            return entry2.grade.compareTo(entry1.grade); //sort by grade in descending order
          }
        });

        //System.out.println(Arrays.toString(students));
        for (int i = 0; i < students.length; i++){
          System.out.println(students[i].student + "\t" + students[i].grade);
        }

    }

}

public class Student{
  public String student;
  public Double grade;
  public Student(String s, Double g){
    this.student = s;
    this.grade = g;
  }
}
import java.util.*;
公共课堂作业5{
公共静态void main(字符串[]args){
//名字和姓氏的扫描器,中间有空格。
java.util.Scanner输入=新的java.util.Scanner(System.in);
input.useDelimiter(System.getProperty(“line.separator”);
System.out.print(“输入学生人数:”);
int numofstudents=input.nextInt();
//String[]name=新字符串[numofstudents];//不需要
//Double[]数组=新的Double[numofstudents];//不需要
学生[]学生=新学生[numofstudents];//已添加
for(int i=0;i
创建一个类来存储名称/年级对,然后使用自定义的
比较器对列表进行排序,该比较器将根据年级值进行排序。我不能再创建一个类,否则我怎么做?这是学校作业。