计算机2019-1/2/3/4-作业5

1.教师类

设计一个教师类Teacher,要求:
属性有编号(int no)、姓名(String name)、年龄(int age)、所属学院(String seminary),为这些属性设置相应的get和set方法。
为Teacher类重写equals方法,要求:当两个教师对象的no相同时返回true。
重写Teacher类的toString方法,通过该方法可以返回“no: , name:, age: , seminary: ”形式的字符串。

输入描述:

两个教师对象的编号,姓名,年龄,学院

输出描述:

教师的信息 两个教师是否相等

输入样例:

在这里给出一组输入。例如:

1 Linda 38 SoftwareEngineering
2 Mindy 27 ComputerScience

输出样例:

在这里给出相应的输出。例如:

no: 1, name:Linda, age: 38, seminary: SoftwareEngineering
no: 2, name:Mindy, age: 27, seminary: ComputerScience
false

自己的代码:

import java.util.Scanner;
class Teacher{
	int no;
	String name;
	int age;
	String seminary;
	Teacher(int no,String name,int age,String seminary){
		this.no=no;
		this.name=name;
		this.age=age;
		this.seminary=seminary;
	}
	public String toString() {
		return "no: "+no+", name:"+name+", age: "+age+", seminary: "+seminary;
	}
	public boolean equals(Teacher an) {
		if(no==an.no)return true;
		else return false;
	}
}
public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		Teacher t1=new Teacher(in.nextInt(),in.next(),in.nextInt(),in.next());
		Teacher t2=new Teacher(in.nextInt(),in.next(),in.nextInt(),in.next());
		System.out.println(t1);
		System.out.println(t2);
		System.out.println(t1.equals(t2));

	}

}






2.教师类-2

修改上题

  1. 修改教师类,使得由多个Teacher对象所形成的数组可以排序(编号由低到高排序),并在main函数中使用Arrays.sort(Object[] a)方法排序
  2. 定义一个类TeacherManagement,包含:
    教师数组,提供方法add(Teacher[]),使其可以添加教师
    提供重载方法search,方法可以在一组给定的教师中,根据姓名或年龄返回等于指定姓名或年龄的教师的字符串信息,信息格式为:“no: , name:, age: , seminary: ”。如果没有满足条件的教师,则返回“no such teacher”

输入描述:

教师个数 教师信息 待查找教师的姓名 待查找教师的年龄

输出描述:

排序后的信息 按姓名查找的老师信息 按年龄查找的老师信息

输入样例:

在这里给出一组输入。例如:

4
3 Linda 38 SoftwareEngineering
1 Mindy 27 ComputerScience
4 Cindy 28 SoftwareEngineering
2 Melody 27 ComputerScience
Cindy
27

输出样例:

在这里给出相应的输出。例如:

no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
no: 3, name: Linda, age: 38, seminary: SoftwareEngineering
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by name:
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by age:
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience

自己的代码:

import java.util.Arrays;
import java.util.Scanner;
class Teacher implements Comparable<Teacher>{
	int no;
	String name;
	int age;
	String seminary;
	Teacher(int no,String name,int age,String seminary){
		this.no=no;
		this.name=name;
		this.age=age;
		this.seminary=seminary;
	}
	public String toString() {
		return "no: "+no+", name: "+name+", age: "+age+", seminary: "+seminary;
	}
	@Override
	public int compareTo(Teacher o) {
		if(no>o.no)return 1;
		else if(no==o.no)return 0;
		else return -1;
	}
	
}
class TeacherManagement {
	Teacher[] teacher;
	int len;
	TeacherManagement(Teacher[] teacher,int len){
		this.teacher=teacher;
		this.len=len;
	}
	void add(Teacher t) {
		teacher[len]=t;
		len++;
	}
	void search(String n) {
		int flag=0;
		for(int i=0;i<len;i++) {
			if(n.equals(teacher[i].name)) {
				System.out.println(teacher[i].toString());
				flag=1;
			}
		}
		if(flag==0)System.out.println("no such teacher");
		
	}
	void search(int age) {
		int flag=0;
		for(int i=0;i<len;i++) {
			if(age==teacher[i].age) {
				System.out.println(teacher[i].toString());
				flag=1;
			}
		}
		if(flag==0)System.out.println("no such teacher");
	}
}
public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int time=in.nextInt();
		Teacher[] teacher=new Teacher[time];
		for(int i=0;i<time;i++)
		   teacher[i]=new Teacher(in.nextInt(),in.next(),in.nextInt(),in.next());
		
		Arrays.sort(teacher);
		 
		for(int i=0;i<time;i++)
			System.out.println(teacher[i]);
		
		TeacherManagement test=new TeacherManagement(teacher,time);
		System.out.println("search by name:");
		test.search(in.next());
		
		System.out.println("search by age:");
		test.search(in.nextInt());
		
	
	}
}






3.镜像字符串

镜像字符串是两个字符序列完全相反的字符串。从键盘录入两个不包含空格的字符串,判断第二个是否为第一个的镜像字符串,是则输出yes,否则输出no.

输入描述:

键盘录入的由一个空格分隔的两个字符串

输出描述:

yes(no)

输入样例:

在这里给出一组输入。例如:

abc cba

输出样例:

在这里给出相应的输出。例如:

yes

自己的代码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		StringBuffer str1=new StringBuffer(in.next());
		StringBuffer str2=new StringBuffer(in.next());
		
		boolean t=(str1.reverse().toString()).equals(str2.toString());
		if(t)System.out.println("yes");
		else System.out.println("no");
	
	
	}
}






4.单词在句子中的位置

给定英文句子,编写方法void wordPositions(String sentence),该方法中计算sentence中的每个单词在句子中的起始位置和单词长度并输出。
假设句子中只包含英文字母和空格,且单词不重复。

输入描述:

句子

输出描述:

每个单词在句子中的起始位置和单词长度

输入样例:

在这里给出一组输入。例如:

Why are you so crazy about java

输出样例:

在这里给出相应的输出。例如:

Why: 0, 3
are: 4, 3
you: 8, 3
so: 12, 2
crazy: 15, 5
about: 21, 5
java: 27, 4

自己的代码:

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str_all=in.nextLine();

        
        //起始位置
        List<Integer> pos=new LinkedList<Integer>();//出现位置
        for(int i=0;i<str_all.length();i++)
        {
            if(i==0)pos.add(i);
            else if(str_all.charAt(i-1)==' ')pos.add(i);
        }

        //单词数组:str_divide[i]
        String[] str_divide=new String[100];
        str_divide=str_all.split(" ");
        
        //单词长度:len[i]
        int[] len=new int[100];//记录长度
        for(int i=0;i<str_divide.length;i++)
            len[i]=str_divide[i].length();

        //打印
        for(int i=0;i<str_divide.length;i++)
            System.out.println(str_divide[i]+": "+pos.get(i)+", "+len[i]);
    }
}






5.字符串

对于输入字符串s(假设字符串只包含字母构成的单词和空格),完成如下功能:

  1. 统计该字符串中字母c出现的次数
  2. 求该字符串的逆
  3. 输出该字符串中子串str的所有位置(无需考虑子串叠加现象)
  4. 将字符串中每个单词的第一个字母变成大写并输出

输入描述:

字符串s 字母c 子串str

输出描述:

c在s中出现的次数 s的逆 str在s中的所有位置 所有单词首字母大写后的字符串

输入样例:

在这里给出一组输入。例如:

I scream you scream we all scream for icecream
m
eam

输出样例:

在这里给出相应的输出。例如:

4
maerceci rof maercs lla ew maercs uoy maercs I
5 16 30 43
I Scream You Scream We All Scream For Icecream

自己的代码:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		String str_all=in.nextLine();
		
		//得到字符c
		String cc=in.nextLine();
		char c=cc.charAt(0);
		//子串
		String substr=in.nextLine();
		
		//~~~~~~~~~~~~~~~~~~~~~次数~~~~~~~~~~~~~~~~~
		int count=0;
		for(int i=0;i<str_all.length();i++)
			if(c==str_all.charAt(i))count++;
		System.out.println(count);
		//~~~~~~~~~~~~~~~~~~~~~逆序~~~~~~~~~~~~~~~~~
		StringBuffer rev=new StringBuffer(str_all);
		System.out.println(rev.reverse().toString());
	
		//~~~~~~~~~~~~~~~~~~~~~3~~~~~~~~~~~~~~~~~
		int pos=str_all.indexOf(substr);
		System.out.print(pos);
		while(pos!=-1) {
			pos=str_all.indexOf(substr, pos+substr.length());
			if(pos!=-1)
			   System.out.print(" "+pos);
		}
		System.out.println();
		//~~~~~~~~~~~~~~~~~~~~~4~~~~~~~~~~~~~~
		StringBuffer upper=new StringBuffer();
		for(int i=0;i<str_all.length();i++)
		{
			if(i==0)upper.append(Character.toUpperCase(str_all.charAt(i)));
			else
			{
				if(str_all.charAt(i-1)==' ')upper.append(Character.toUpperCase(str_all.charAt(i)));
				else
					upper.append(str_all.charAt(i));
			}
		}
		System.out.println(upper);
		
	}
}






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说的白是什么白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值