未打印字符串名称 import java.util.*; //学生班 班级学生{ 字符串名; int-rollNo; 学生(字符串名称,int-rollNo){ this.name=新字符串(name); this.rollNo=rollNo; } } 课堂演示{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); int x=in.nextInt(); int noOfStudents=in.nextInt(); 学生[]学生名单=新学生[无学生]; PriorityQueue集合=新建PriorityQueue(新建比较器(){ 公共整数比较(学生a、学生b){ 返回b.rollNo-a.rollNo; } }); 对于(int i=0;i

未打印字符串名称 import java.util.*; //学生班 班级学生{ 字符串名; int-rollNo; 学生(字符串名称,int-rollNo){ this.name=新字符串(name); this.rollNo=rollNo; } } 课堂演示{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); int x=in.nextInt(); int noOfStudents=in.nextInt(); 学生[]学生名单=新学生[无学生]; PriorityQueue集合=新建PriorityQueue(新建比较器(){ 公共整数比较(学生a、学生b){ 返回b.rollNo-a.rollNo; } }); 对于(int i=0;i,java,string,Java,String,import java.util.*; //student class class Student{ String name; int rollNo; Student(String name, int rollNo){ this.name=new String(name); this.rollNo=rollNo; } } class Demo { public static void main (St

import java.util.*;

//student class
class Student{
    String name;
    int rollNo;
    
    Student(String name, int rollNo){
        this.name=new String(name);
        this.rollNo=rollNo;
    }
    

}
class Demo {
    public static void main (String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        int noOfStudents = in.nextInt();
        Student[] StudentList= new Student[noOfStudents];
        PriorityQueue<Student> set=new PriorityQueue<Student>(new Comparator<Student>(){
            public int compare(Student a, Student b){
                return b.rollNo-a.rollNo;
            }
        });
        for(int i=0;i<noOfStudents;i++){
            String name = in.nextLine();
            in.nextLine();
            int rollNo = in.nextInt();
            set.add(new Student(name,rollNo));
        }
        
        while(!set.isEmpty()){
            Student tmp = set.poll();
            System.out.println(tmp.name+" "+tmp.rollNo);
        }   
        
    }
}

您可以在此处找到问题的完整解释:

更改:

        in.nextLine();
        String name = in.nextLine();
        int rollNo = in.nextInt();


我认为这个版本的工作原理与您从图片中看到的一样。我添加了这一行:

in.nextLine();//它使用换行符并移动到下一行的开头

代码如下:

String name = in.next();
int rollNo = in.nextInt();
import java.util.*;
//学生班
班级学生{
字符串名;
int-rollNo;
学生(字符串名称,int-rollNo){
this.name=新字符串(name);
this.rollNo=rollNo;
}  
}
公共班机{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“请输入学生人数”);
int noOfStudents=in.nextInt();
学生[]学生名单=新学生[无学生];
PriorityQueue集合=新建PriorityQueue(新建比较器(){
公共整数比较(学生a、学生b){
返回b.rollNo-a.rollNo;
}
});

对于(int i=0;i在.nextLine()中移动
int rollNo=in.nextInt()之后移动
顺便说一句。您几乎不应该调用
新字符串
。它强制JVM始终创建新对象,并且不能使用缓存的对象。仍然不工作!
String name = in.nextLine();
in.nextLine();
int rollNo = in.nextInt();
String name = in.next();
int rollNo = in.nextInt();
import java.util.*;

//student class
class Student{
    String name;
    int rollNo;

    Student(String name, int rollNo){
        this.name=new String(name);
        this.rollNo=rollNo;
    }  
}
public class Main {
    public static void main (String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Inert the number of students, please");
        int noOfStudents = in.nextInt();
        Student[] StudentList= new Student[noOfStudents];
        PriorityQueue<Student> set=new PriorityQueue<Student>(new Comparator<Student>(){
            public int compare(Student a, Student b){
                return b.rollNo-a.rollNo;
            }
       });
  
       for(int i=0;i<noOfStudents;i++){
           in.nextLine(); // it  consumes the newline and moves to the starting of the next line.
           System.out.println("Enter the student's name "+i);
           String name = in.nextLine();
           System.out.println("Enter the student ID number "+i);
           int rollNo = in.nextInt();
           set.add(new Student(name,rollNo));
       }
    
       while(!set.isEmpty()){
           Student tmp = set.poll();
           System.out.println(tmp.name.toString()+" "+tmp.rollNo);
       }   
    
   }
 }