Desperate11221 2022-04-15 10:02 采纳率: 100%
浏览 81
已结题

如何能不按回车就直接输入?


package second;
import java.util.ArrayList;
import java.util.Scanner;
class Student{
      String studentNumber;//记录学生编号
      String studentName;
      int markForMaths;
      int markForEnglish;
      int markForScience;
     Student(String studentNumber,String studentName,int markForMaths,int markForEnglish,int markForScience)
     {
         this.studentName=studentName;
         this.studentNumber=studentNumber;
        this.markForEnglish=markForEnglish;
         this.markForMaths=markForMaths;
         this.markForScience=markForScience;
     }
     Student(String studentNumber,int markForMaths,int markForEnglish,int markForScience)
     {
         this.studentNumber=studentNumber;
        this.markForEnglish=markForEnglish;
         this.markForMaths=markForMaths;
         this.markForScience=markForScience;
     }
     String getNumber()
     {
         return studentNumber;
     }
     String getName()
     {
         return studentName;
     }

     int getMathsMark()
     {
         return markForMaths;
     }
     int getEnglishMark()
     {
         return markForEnglish;
     }
     int getScienceMark()
     {
         return markForScience;
     }
}
public class StudentList{
    static  boolean isused(ArrayList<Student>arrayList,String a)//1
     {
         boolean flag=false;
         for(int i=0;i<arrayList.size();i++)
         {
             Student stu=arrayList.get(i);
             if(stu.getNumber().equals(a)) {
                 flag=true;
                 break;
             }
         }
             return flag;
     }

     public static void main(String[] args)
     {
         ArrayList<Student>list=new ArrayList<>();
         int i=0;
         Scanner in=new Scanner(System.in);
         int n=in.nextInt();
         String[] a=new String[n];
        while(i<n)
         {
          String line =in.next();
          switch(line)
          {
         case "1":
            a[i]= addStudent(list);
             break;
         case "2":
             a[i]=removeStudent(list);
             break;
         case "3":
            a[i]= updateStudent(list);
             break;
         case "4":
            a[i]=showaverage(list);
             break;
         case "5":
            a[i]= judgeempty(list);
             break;
         case "6":
            a[i]= gettotal(list);
             break;
          }
          i++;
         }
        for(i=0;i<n;i++)
        {
            System.out.println(a[i]);
        }
}
    public  static String gettotal(ArrayList<Student> list) {
        String m= list.size()+" ";
        return m;
        
    }
    public  static String judgeempty(ArrayList<Student> list) {
        if(list.size()==0)
        {
            return "List is empty";
        }
        else 
        {
            return"List is not empty";
        }
        
    }
    public static String showaverage(ArrayList<Student> list) {
        Scanner in=new Scanner(System.in);
        String b=in.next();
        String m=null;
        String[] a=new String[3];
        int i=0;
            while(i<list.size())
            {
                Student stu=list.get(i);
            
            if(stu.getNumber().equals(b)) 
            {
                double average=(stu.markForEnglish+stu.markForMaths+stu.markForScience)*(1.0)/(3.0);
                String result=String.format("%.1f",average);
                        m="Student ID:"+stu.studentNumber+"\n"+
                          "Name:"+stu.studentName+"\n"+
                         "Average:"+result;
                 break;
            }
            if(i+1==list.size()&&stu.getNumber()!=b) 
            {
            m="Students do not exist";
            break;
            }
            i++;
            }
            return m;
            
    }
    public static String updateStudent(ArrayList<Student> list) {
        Scanner in=new Scanner(System.in);
        String number=in.next();
        String name= "da";
        int maths=in.nextInt();
        int english=in.nextInt();
        int science=in.nextInt();
        String m=null;
        Student stu=new Student(number,name,maths,english,science);
        for(int i=0;i<list.size();i++)
        {   
            //输入学号与集合中存储的学号进行比对如果一样进行修改,如果不一样提示。
            Student stu1=list.get(i);
            if(stu.getNumber().equals(stu1.getNumber())) 
            {
                m=stu1.studentName;
                stu.studentName=m;
                list.set(i, stu);//修改集合中的set方法修改,直接通过下标修改。
                m= "Update success";
            }
            else 
            {
                m= "Students do not exist";
                
            }
        }
        return m;
        
    }
    public  static String removeStudent(ArrayList<Student> list) {
        Scanner in=new Scanner(System.in);
        String m = null;
        if(list.size()==0)
        {
            m= "Students do not exist";
            return m;
        }
        String b=in.next();
        if(isused(list,b))
        {
            for(int i=0;i<list.size();i++ )
            {
                Student stu=list.get(i);
            
            if(stu.getNumber().equals(b)) 
            {
                list.remove(i);
                m="Delete success";
                break;
            }
            else if(i+1==list.size()&&stu.getNumber()!=b) 
            {
                m="Students do not exist";
            }
                }
        }
        return m;
        
    }
    public  static String addStudent(ArrayList<Student> list) {
        Scanner in=new Scanner(System.in);
        String number=in.next();
        while(true) {
        if(isused(list,number)) 
        {
        System.out.println("Students already exist");
        }else 
        {
        break;
        }
        }
        String name=in.next();
        int maths=in.nextInt();
        int english=in.nextInt();
        int science=in.nextInt();
        Student stu=new Student(number,name,maths,english,science);
        list.add(stu);
        return"Add success";
    }
         
}


这个代码能达到的效果如下图

img


但是如果按照oj要求输入就会是下图的结果

img


请问怎么样才能实现

  • 写回答

2条回答 默认 最新

  • 溪风沐雪 2022-04-15 10:26
    关注

    一次性把一行数据全输入,用nextLine读取,然后通过split函数分割字串处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器