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
修改上题
- 修改教师类,使得由多个Teacher对象所形成的数组可以排序(编号由低到高排序),并在main函数中使用Arrays.sort(Object[] a)方法排序
- 定义一个类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(假设字符串只包含字母构成的单词和空格),完成如下功能:
- 统计该字符串中字母c出现的次数
- 求该字符串的逆
- 输出该字符串中子串str的所有位置(无需考虑子串叠加现象)
- 将字符串中每个单词的第一个字母变成大写并输出
输入描述:
字符串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);
}
}