Java第六次作业

167 - 学生列表

Time Limit: 1000  Memory Limit: 65535

Submit: 93  Solved: 53

Description

编写学生类,包含学号no、姓名name、成绩score,提供必要的构造函数、toString函数和equals/hashcode函数,其中,toString函数的格式为“no:xxx name:xxx score:xxx”,no参与equals和hashcode的计算

在main函数中构造一个学生列表对象(List),用于存放多个学生对象

从命令行输入多个学生对象,存入列表中

从命令行中读入在列表对象上的操作,具体操作包含:

add 添加一个学生(包含学号和学生姓名)

delete 删除一个学生(包含学号)

set 修改一个学生信息(只修改某学号学生的成绩)

完成操作后按列表顺序输出集合中的学生

Input

学生个数

学生对象数据

操作数

操作内容

Output

列表顺序输出集合中的学生

Sample Input

4

1 wong 90

2 liu 80

3 chen 70

4 fang 60

3

add 5 duan 80

delete 3

set 4 70

Sample Output

no:1 name:wong score:90

no:2 name:liu score:80

no:4 name:fang score:70

no:5 name:duan score:80

_______________________________

import java.util.*;

public class Main {

    public static void main(String[] args){

        List<Student> list=new LinkedList<Student>();

        Scanner scan = new Scanner(System.in);

        int num=scan.nextInt();

        for(int i=0;i<num;i++) {

        int no=scan.nextInt();

        String name=scan.next();

        int score=scan.nextInt();

        list.add(new Student(no,name,score));

        }

        int opnum=scan.nextInt();

        for(int i=0;i<opnum;i++) {

        String op=scan.next();


        if(op.equals("add")) {

        int no=scan.nextInt();

            String name=scan.next();

            int score=scan.nextInt();

        list.add(new Student(no,name,score));

        }

        else if(op.equals("delete")) {

        int n=scan.nextInt();

        for(int j=0;j<num;j++){

                    if(list.get(j).no==n){

                        list.remove(j);

                  }

        }

        }

        else if(op.equals("set")) {

        int pos=scan.nextInt();

        int s=scan.nextInt();

        for(int j=0;j<num;j++){

                    if(list.get(j).no==pos){

                        list.set(j,new Student(list.get(j).no,list.get(j).name,s));

                    }

        }

        }

        }

        for(Student s:list)

        System.out.println(s.toString());

    }

}

class Student {

    int no;

    String name;

    int score;


    public Student(int _no, String _name, int _score) {

        no = _no;

        name = _name;

        score = _score;

    }

    public int getNo() {return no;}

    public String getName() {return name;}

    public int getScore() {return score;}

public String toString() {

      return "no:"+no+" name:"+name+" score:"+score;

}

    public boolean equals(Object o) {

    if (o == null) return false;

    else {

boolean result = false;

if (o instanceof Student) {

Student rec = (Student) o;

      if (this.no == rec.no&&this.name.equals(((Student) o).name)) {

            result = true;

      }

              }

            return result;

    }

    }

    public int hashcode() {

    int result = 17; // 任意素数

    result = 31 * result + no;

    result = 31* result + name.hashCode();

    return result;

    }

}

###########################################

168 - 学生Map

Time Limit: 1000  Memory Limit: 65535

Submit: 109  Solved: 76

Description

修改《学生列表》题目,使用学生Map来存放学生的集合,其中key为学号,value为学生对象

输出时按照学生的学号顺序输出

Input

学生个数

学生对象数据

操作数

操作内容

Output

按照学号顺序输出集合中的学生

Sample Input

4

1 wong 90

2 liu 80

3 chen 70

4 fang 60

3

add 5 duan 80

delete 3

set 4 70

Sample Output

no:1 name:wong score:90

no:2 name:liu score:80

no:4 name:fang score:70

no:5 name:duan score:80

___________________________

import java.util.*;

public class Main {

    public static void main(String[] args){

    Map<Integer,Student> map = new HashMap<Integer,Student>();

        Scanner scan = new Scanner(System.in);

        int num=scan.nextInt();

        for(int i=0;i<num;i++) {

        int no=scan.nextInt();

        String name=scan.next();

        int score=scan.nextInt();

        map.put(no,new Student(no,name,score));

        }

        int opnum=scan.nextInt();

        for(int i=0;i<opnum;i++) {

        String op=scan.next();


        if(op.equals("add")) {

        int no=scan.nextInt();

            String name=scan.next();

            int score=scan.nextInt();

            map.put(no,new Student(no,name,score));

        }

        else if(op.equals("delete")) {

        int n=scan.nextInt();

                map.remove(n);

        }

        else if(op.equals("set")) {

        int pos=scan.nextInt();

        int s=scan.nextInt();

        for(Student stu: map.values()){

                    if(stu.getNo()==pos)

                        stu.setScore(s);

                }

        }

        }

        for(Student s:map.values())

        System.out.println(s.toString());

    }

}

class Student {

    int no;

    String name;

    int score;


    public Student(int _no, String _name, int _score) {

        no = _no;

        name = _name;

        score = _score;

    }

    public int getNo() {return no;}

    public String getName() {return name;}

    public int getScore() {return score;}

    void setScore(int score) {

    this.score=score;

    }

public String toString() {

      return "no:"+no+" name:"+name+" score:"+score;

}

    public boolean equals(Object o) {

    if (o == null) return false;

    else {

boolean result = false;

if (o instanceof Student) {

Student rec = (Student) o;

      if (this.no == rec.no&&this.name.equals(((Student) o).name)) {

            result = true;

      }

              }

            return result;

    }

    }

    public int hashcode() {

    int result = 17; // 任意素数

    result = 31 * result + no;

    result = 31* result + name.hashCode();

    return result;

    }

}

##########################################

184 - 4

Time Limit: 1000  Memory Limit: 65535

Submit: 140  Solved: 40

Description

在上题的基础上构建一个书单类BookList,该类中用一个列表类对象存放书单,提供添加图书(addBook)、查找图书(searchBook)的函数

main函数从键盘输入多个Book添加到书单中,(添加时,提供书的名称、价格、作者、版本号),而后从键盘读入一本书,查找该列表对象中是否包含该书,若包含,输出”found: 该书在列表中的序号”,若不包含,输出“not found”,查找时,提供书的名称、作者、版本号。

Input

添加书的个数

添加的书

查找的书

Output

查找结果

Sample Input

2

ThinkingInJava

86

BruceEckel

4

CoreJava

95

CayS.Horstmann

10

CoreJava

CayS.Horstmann

10

Sample Output

found: 1

________________________________________

import java.util.*;

public class Main{

public static void main(String[] args) {d

Scanner s = new Scanner(System.in);

BookList bl = new BookList();

int n = s.nextInt();

for (int i=0; i<n;i++) {

bl.addBook(new Book(s.next(),

s.nextInt(),

s.next(),

s.nextInt()));

}

bl.searchBook(new Book(s.next(),

0,

s.next(),

s.nextInt()));

}

}

class Book{

String name;

int price;

String author;

int no;

Book(String name,int price,String author,int no){

this.name=name;

this.price=price;

this.author=author;

this.no=no;

}

}

class BookList{

List<Book> book=new ArrayList<Book>();

void addBook(Book b) {

book.add(b);

}

void searchBook(Book B) {

for(Book b:book) {

if(b.name.equals(B.name)&&b.author.equals(B.author)&&b.no==B.no) {

System.out.println("found: "+book.indexOf(b));

                return ;

}

}

System.out.println("not found");

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • 140 - 家电类 Time Limit: 1000 Memory Limit: 65535 Submit: 1...
    z坎坷阅读 632评论 0 0
  • 131 员工类 import java.util.*; public class Main { public st...
    z坎坷阅读 281评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,605评论 18 399
  • 今年除夕前一天,小猫梨名和雪友因不团结友爱发生撕斗,而后雪友落败,不知所踪。我让店面的柬埔寨工人——少年阿正...
    温婉媚阅读 495评论 0 0
  • 其实,是已经失去联系的一个朋友,大概也是我朋友里最年长的一个,不过他一直说自己和我们没有代沟,暂且相信他好了。 认...
    这个景阅读 315评论 0 2