目录
7-5 jmu-Java-02基本语法-02-StringBuilder
7-1 群发邮件
作为一个职业HR,要给某个项目组的所有职员群发邮件,已经知道HR有所有人的姓名、电话以及邮箱,请编写程序,取出所有人的邮箱,合并为一个邮箱列表,邮箱之间以“;”隔开,使其可以群发邮件。
输入格式:
在一行中给出所有人的姓名、电话以及邮箱,例如:丽丽/13539870198/lili@qq.com,天梯/13408791122/tiant@qq.com
输出格式:
一行中邮箱列表,以分号隔开。
输入样例:
在这里给出一组输入。例如:
丽丽/13539870198/lili@qq.com,天梯/13408791122/tiant@qq.com,楠楠/13112034567/nn@qq.com
输出样例:
在这里给出相应的输出。例如:
lili@qq.com;tiant@qq.com;nn@qq.com;
import java.util.Comparator;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str;
str = scan.nextLine();
int fg = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '/' && fg == 0) {
fg = 1;
i += 11;
}
if (str.charAt(i) == '/' && fg == 1) {
for (i = i + 1; i < str.length() && str.charAt(i) != ','; i++) {
System.out.print(str.charAt(i));
}
System.out.print(';');
fg = 0;
}
}
scan.close();
}
}
7-2 学号识别
学校的学号由8位数字组成,前两位是入学年份(省略了20);第3、4位是学院编号,01代表材料学院,02代表机械学院,03代表外语学院,20代表软件学院;第5、6位是学院内部班级编号,最后两位是班级内部学号。如:18011103,入学年份是2018年,材料学院,11班,03号
输入格式:
8位数字组成的学号。例如:18011103
注意:输入学号不是8位或者学院编号不是01、02、03、20其中之一,属于非法输入
输出格式:
学号每一项的完整说明。例如:
入学年份:2018年
学院:材料学院
班级:11
学号:03
注意:如非法输入,输出“Wrong Format"
输入样例:
在这里给出一组输入。例如:
18011103
输出样例:
在这里给出相应的输出。例如:
入学年份:2018年
学院:材料学院
班级:11
学号:03
输入样例1:
在这里给出一组输入。例如:
18013
输出样例1:
在这里给出相应的输出。例如:
Wrong Format
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String a;
String year,college,clas,num;
Scanner in = new Scanner(System.in);
a = in.next();
if(8!=a.length()) {
System.out.print("Wrong Format");
return;
}
year = a.substring(0,2);
college = a.substring(2,4);
clas = a.substring(4,6);
num = a.substring(6,8);
if(college.equalsIgnoreCase("01")) {
college = "材料学院";
}else if(college.equalsIgnoreCase("02")) {
college = "机械学院";
}else if(college.equalsIgnoreCase("03")) {
college = "外语学院";
}else if(college.equalsIgnoreCase("20")) {
college = "软件学院";
}else {
System.out.print("Wrong Format");
return;
}
System.out.print("入学年份:20"+year+"年\n"
+ "学院:"+college+"\n"
+ "班级:"+clas+"\n"
+ "学号:"+num);
}
}
7-3 jmu-Java-02基本语法-03-身份证排序
- 输入n,然后连续输入n个身份证号。
- 然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出
exit
并退出。
输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
输入sort2,将所有身份证按照里面的年月日升序输出。
注意:处理输入的时候,全部使用Scanner
的nextLine()
方法,以免出错。
输入样例:
6
410425198309308225
320203197206115011
431227196108033146
330226196605054190
34080019810819327X
320111197112301539
sort1
sort2
e
输出样例:
1961-08-03
1966-05-05
1971-12-30
1972-06-11
1981-08-19
1983-09-30
431227196108033146
330226196605054190
320111197112301539
320203197206115011
34080019810819327X
410425198309308225
exit
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=Integer.valueOf(sc.nextLine());
String s[]=new String[count];
for (int i=0;i<count;i++){
s[i]=sc.nextLine();
}
String temp;
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");
while (true){
String tem=sc.nextLine();
if (tem.equals("sort1")){
Date date[]=new Date[count];
for (int j=0;j<count;j++){
for (int i=0;i<count-j-1;i++){
String bir1=s[i].substring(6,14);
String bir2=s[i+1].substring(6,14);
Date d1;
Date d2;
try {
d1 = df.parse(bir1);
d2 =df.parse(bir2);
if (d1.getTime()>d2.getTime()){
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
for (int i=0;i<count;i++){
String bir=s[i];
System.out.println(bir.substring(6,10)+"-"+bir.substring(10,12)+"-"+bir.substring(12,14));
}
}else if (tem.equals("sort2")){
Date date[]=new Date[count];
for (int j=0;j<count;j++){
for (int i=0;i<count-j-1;i++){
String bir1=s[i].substring(6,14);
String bir2=s[i+1].substring(6,14);
Date d1;
Date d2;
try {
d1 = df.parse(bir1);
d2 =df.parse(bir2);
if (d1.getTime()>d2.getTime()){
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
for (int i=0;i<count;i++){
System.out.println(s[i]);
}
}else {
System.out.println("exit");
}
}
}
}
7-4 单词替换
设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。
输入格式:
首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。
输出格式:
完成查找替换后的完整字符串
输入样例:
在这里给出一组输入。例如:
Although I am without you, I will always be ou you
ou
with
输出样例:
在这里给出相应的输出。例如:
Although I am without you, I will always be with you
import java.util.Scanner;
class ReplaceString {
public static String replaceStr(String str,String minstr,String replaceStr){
String s[] =str.split(" ");
StringBuffer stringBuffer=new StringBuffer();
for(int i=0;i<s.length;i++){
if (minstr.equals(s[i])){
s[i]=replaceStr;
stringBuffer.append(s[i]);
if(i+1<s.length)
stringBuffer.append(" ");
//对修改后的单词进行拼接
}
else if(!minstr.equals(s[i])){
stringBuffer.append(s[i]);
if(i+1<s.length)
stringBuffer.append(" ");
}
}
return stringBuffer.toString();
}
}
class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(ReplaceString.replaceStr(scanner.nextLine(), scanner.nextLine(), scanner.nextLine()));
}
}
7-5 jmu-Java-02基本语法-02-StringBuilder
输入3个整数n、begin、end。
首先,使用如下代码:
for(int i=0;i<n;i++)
将从0到n-1的数字拼接为字符串str。如,n=12
,则拼接出来的字符串为01234567891011
最后截取字符串str从begin到end(包括begin,但不包括end)之间的字符串,并输出。
输入样例:
10
5
8
1000
800
900
输出样例:
567
0330430530630730830931031131231331431531631731831932032132232332432532632732832933
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int n, begin, end;
n = scanner.nextInt();
begin = scanner.nextInt();
end = scanner.nextInt();
StringBuilder str = new StringBuilder("");
for (int i = 0; i < n; i++) {
str.append(i);
}
System.out.println(str.substring(begin,end));
}
}
}
7-6 图书价格汇总
输入格式:
假设某图书馆中图书记录的格式为“Java程序设计: 34;Web程序设计: 56;JSP程序设计:20”(每本书的价格是整数,每本书的价格与下一本书的名字之间有一个中文;)。
输出格式:
编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。
输入样例:
Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20
输出样例:
Java程序设计:34
Web程序设计: 56
JSP程序设计:20
总价格为110
import java.util.Comparator;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Objects;
class Book {
public String name;
public int value;
}
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sumvalue = 0;
String str;
str = scan.nextLine();
int value = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ';') {
System.out.println();
} else {
System.out.print(str.charAt(i));
}
if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
value = value * 10 + str.charAt(i) - '0';
} else if (i + 1 < str.length()) {
sumvalue += value;
value = 0;
}
}
sumvalue += value;
System.out.println();
System.out.println("总价格为" + sumvalue);
scan.close();
}
}
7-7 编写程序,实现字符串大小写的转换并倒序输出。
编写程序,实现字符串大小写的转换并倒序输出。
输入格式:
输入一行字符串
输出格式:
字符串大小写的转换,并倒序输出
输入样例:
Hello World!
输出样例:
!DLROw OLLEh
import java.util.Scanner;
public class Main
{
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
StringBuffer sb=new StringBuffer();
for(int i=0;i<s.length();i++) {
char ch=s.charAt(i);
if(Character.isUpperCase(ch)) {
sb.append(Character.toLowerCase(ch));
}
else if(Character.isLowerCase(ch)) {
sb.append(Character.toUpperCase(ch));
}
else
sb.append(ch);
}
System.out.println(sb.reverse());
}
}
7-8 字符串加密
输入一个原始字符串(长度小于80),然后输入一个5位的数字字符串作为加密密钥,对原始字符串中的每个字符根据其位置(对5取模)变换为加上数字字符串中的数字的字符。如输入原始字符串student,然后输入5位的加密数字12345,因此:
原始字符 加密数字 变换后的字符
s 1 t
t 2 v
u 3 x
d 4 h
e 5 j
n 1 o
t 2 v
加密后的字符串位:tvxhjov
输入格式:
第一个输入一个原始字符串
第二行输入一个5位用来加密的数字字符串
输出格式:
加密后的字符串
输入样例1:
在这里给出一组输入。例如:
student
12345
输出样例1:
在这里给出相应的输出。例如:
tvxhjov
输入样例2:
在这里给出一组输入。例如:
Welcome to Java!
10932
输出样例2:
在这里给出相应的输出。例如:
Xeufqne)wq!Jjyc"
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.nextLine();
int k=sc.nextInt();
// for(int i=0;i<s.length();i++) {
// System.out.print(s.charAt(i));
// }
// System.out.println();
int a[]=new int[5];
for(int i=a.length-1;i>=0;i--) {
a[i]=k%10;
k=k/10;
}
// System.out.println(Arrays.toString(a));
for(int i=0;i<s.length();i++) {
System.out.print((char)(s.charAt(i)+a[i%5]));
}
}
}