Java 如何从数组中打印出名称和数字字符串
我必须制作一个程序,让用户输入任意数量的学生,询问每个学生的姓名和年级。如果我说两个学生,我会把比利·史密斯放在54岁,然后它会问我第二个学生的名字,约翰·史密斯,然后是81年级。然后,它按等级降序输出带有等级的名称。它将输出:Java 如何从数组中打印出名称和数字字符串,java,Java,我必须制作一个程序,让用户输入任意数量的学生,询问每个学生的姓名和年级。如果我说两个学生,我会把比利·史密斯放在54岁,然后它会问我第二个学生的名字,约翰·史密斯,然后是81年级。然后,它按等级降序输出带有等级的名称。它将输出: name---------grades ------------------ John smith 81 billy smith 54 除了打印出来外,我什么都有。我需要它把名字和成绩一起打印出来。以下是我所拥有的: import java.util.*
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
创建一个类来存储名称/年级对,然后使用自定义的比较器对列表进行排序,该比较器将根据年级值进行排序。我不能再创建一个类,否则我怎么做?这是学校作业。