菜鸟求帮助 大神能帮忙补完整么

package com.sosee;
/**

  • @author :请填写自己的姓名
  • @date :请填写编写代码的日期
  • @function:请描述要实现的功能
    */
    public class StudentManage {
    private String[] studentName;//存储学生姓名

    /**

    • 初始化学生姓名数组,长度为10
    • @param length */ public void initArray(int length){

    }

    /**

    • 利用键盘输入学生姓名,输入姓名必须用拼音或英文 */ public void inputStudentName(){

    }

    /**

    • 对学生姓名按字典顺序从A到Z进行排序,可以采用冒泡或其他排序方法 */ public void sortStudentName(){

    }

    /**

    • 利用键盘输入某个学生姓名,利用折半查找法从排序后的学生名单中找出此人在数组中的位置,并返回结果:
    • 如果找到结果格式:姓名:位置:;如果未找到就返回:查出此人
    • @return
      */
      public String getSingleStudentName(){
      String result="";

      return result;
      }

1个回答

看代码,你上边要求数组长度是十,所以我给他固定死,不过你要想让用户自己输入也行。改一两句就行了,你自己看看
底下这个只是你这个类里边的,main函数中调用也很方便
因为数组的初始化在这个函数中inputStudentName()所以开始你必须先调用它,才能对数组进行赋值

package com.hello.java;

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

public class StudentManage {
    private String[] studentName;//存储学生姓名
    Scanner scanner=new Scanner(System.in);
    /**

    初始化学生姓名数组,长度为10
    @param length */ 
    public void initArray(int length){
        studentName=new String[length];
    }

    /**

    利用键盘输入学生姓名,输入姓名必须用拼音或英文 */ 
    public void inputStudentName(){
        int length=10;
        initArray(length);
        int flag=0;
        String str=null;
        boolean result=false;
        for(int i=0;i<length;i++) {
            System.out.println("请输入第"+(i+1)+"个学生的姓名");
            //此循环是判断是否输入为非字母,如果出现非字母,则一直提示输入知道出现全是字母为止,即将退出
            do {
                str=scanner.next();
                //利用正则表达式进行判断是否都为字母
                //如果都是字母则返回true 否则false
                result = str.matches("[a-zA-Z]+");
                //如果为false则提示
                if(!result) {
                        System.out.println("请输入字母");
                }
            }while((str==null)||(result==false));//终止循环条件
            studentName[i]=str;//对数组进行初始化
        }
    }

    /**

    对学生姓名按字典顺序从A到Z进行排序,可以采用冒泡或其他排序方法 */
    public void sortStudentName(){
        Arrays.sort(studentName);
    }

    /**

    利用键盘输入某个学生姓名,利用折半查找法从排序后的学生名单中找出此人在数组中的位置,并返回结果:
    如果找到结果格式:姓名:位置:;如果未找到就返回:查出此人
    @return
    */
    //注意:此处返回的是排序后的数组的位置
    public String getSingleStudentName(){
    //在调用二分法查找的方法时必须先对数组进行排序
        sortStudentName();
        System.out.println("请输入要查找学生的姓名");
        String name=scanner.next();
        int index=Arrays.binarySearch(studentName, name);
        System.out.println(index);
        String result="";
        if(index<=-1) {
            result="查无此人";
        }
        if((index>-1)&&(index<10)) {
            result="姓名:"+name+"  "+"位置:"+(index+1);
        }
        return result;
    }

}

main函数调用

package com.hello.java;

public class Main {
    public static void main(String[] args) {
            StudentManage sManage=new StudentManage();
            sManage.inputStudentName();
            String string=sManage.getSingleStudentName();
            System.out.println(string);
    }
}

如果回答了你的问题,请采纳,如果还需修改的地方可以提出来

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐