求一个具体的代码

m0_51037688 2020-10-18 02:58:16
键盘输入学生人数,然后反复录入多个学生姓名,把所有学生信息保存到数组中,不能重复录入学生姓名,否则报错并要求重新输入。除此之外,统计不同姓的人,并输出结果。
...全文
3255 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengchuiqi_ 2020-10-19
  • 打赏
  • 举报
回复
package com.demo;

import java.util.*;

public class Test5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map map = new HashMap<String, Object>();
        System.out.println("请输入学生人数");
        int nums = sc.nextInt();
        while (1==1){
            if (map.size()==nums){
                System.out.println(nums+"个学生录入完毕");
                break;
            }
            System.out.println("请输入学生姓名");
            String name = sc.next();
            //执行退出
            if (map.containsKey(name)){
                System.out.println("===["+name+"]===名字已重复\n");
            }else{
                map.put(name,"");
                System.out.println("添加成功\n");
            }
        }
        System.out.println("记录在内的学生姓名");
        Iterator<HashMap.Entry<Integer,Integer>> iterator = map.entrySet().iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next().getKey());
        }
    }
}
qq_30551645 2020-10-19
  • 打赏
  • 举报
回复
import java.io.Serializable; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; import java.util.stream.Collectors; public class T8 { public static void main(String[] args) { Set<Student> set = new HashSet<>(); System.out.println("请输入学生人数:"); Scanner sc = new Scanner(System.in); int planNums = sc.nextInt(); int realNums = 0; while (planNums > realNums) { System.out.println("请输入学生姓氏:"); String firstName = sc.next(); while (firstName == null || firstName.trim().isEmpty()) { System.out.println("请输入学生姓氏:"); firstName = sc.next(); } System.out.println("请输入学生名字:"); String secondName = sc.next(); while (secondName == null || secondName.trim().isEmpty()) { System.out.println("请输入学生名字:"); secondName = sc.next(); } Student student = new Student(firstName, secondName); if (set.contains(student)) { System.out.println("===" + student + "===名字已重复"); } else { System.out.println("" + student + "添加成功"); set.add(student); realNums++; } } Map<String, List<Student>> groupByMap = set.stream().collect(Collectors.groupingBy(e -> e.getFirstName())); groupByMap.forEach((k, v) -> { System.out.println(k +" 姓,共计"+ v.size() + "人 -> " + v.toString()); }); } static class Student implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String firstName; private String secondName; public Student(String firstName, String secondName) { this.firstName = firstName; this.secondName = secondName; } /** * @return the firstName */ public String getFirstName() { return firstName; } /** * @param firstName the firstName to set */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * @return the secondName */ public String getSecondName() { return secondName; } /** * @param secondName the secondName to set */ public void setSecondName(String secondName) { this.secondName = secondName; } @Override public int hashCode() { int hc1 = -1; int hc2 = -1; if (firstName != null) { hc1 = firstName.hashCode(); } if (secondName != null) { hc2 = secondName.hashCode(); } return (hc1 - hc2) * (hc1 + hc2); } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj instanceof Student) { Student s = (Student) obj; String firstName2 = s.getFirstName(); String secondName2 = s.getSecondName(); if (firstName2 == null || secondName2 == null) { return false; } return firstName2.equals(firstName) && secondName2.equals(secondName); } else { return false; } } @Override public String toString() { // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); sb.append(firstName).append(" ").append(secondName); return sb.toString(); } } }
老王就是我 2020-10-19
  • 打赏
  • 举报
回复
上面的大佬已经给了具体代码,可以结贴
唯丶丶丶 2020-10-19
  • 打赏
  • 举报
回复
int count = new Scanner(System.in).nextInt(); String [] arr=new String[count]; int index=0; String name=""; boolean flag=false; while (true) { if (index>=count) { System.out.println("录入完毕"); break; }else { if (!flag) { System.out.println("录入名字"); name = new Scanner(System.in).nextLine(); } flag=false; for (String str : arr) { if (name.equals(str)) { flag=true; break; } } if (flag) { System.out.println("名字重复,重新录入"); name = new Scanner(System.in).nextLine(); }else { arr[index]=name; index++; } } } System.out.println(Arrays.toString(arr)); HashMap<String, Integer> map = new HashMap<>(); for (int i = 0; i < arr.length; i++) { String xing = arr[i].substring(0,1); if (map.keySet().contains(xing)) { Integer xCount = map.get(xing); xCount++; map.put(xing, xCount); }else { map.put(xing, 1); } } StringBuffer sb = new StringBuffer(); for (Entry<String, Integer> entry : map.entrySet()) { sb.append(entry.getKey()+":"+entry.getValue()+","); } System.out.println(sb); 总结了下,放进数组真有点麻烦
KeepSayingNo 2020-10-19
  • 打赏
  • 举报
回复
这个告诉你怎么做了啊

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧