字符串练习题
第一题
编写一个程序将一个字符串中的字符逆序输出。abcdefg ----> gfedcba
main.c
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入字符串:");
String s = input.next();
char []s1=s.toCharArray();
for (int i = 0; i < s1.length-1-i; i++) {
char a=0;
a=s1[i];
s1[i]=s1[s1.length-1-i];
s1[s1.length-1-i]=a;
}
System.out.println(Arrays.toString(s1));
}
第二题
email地址的验证,要求包含@和”.”。
提示:boolean iscontain = “email_address”.contains(“@”)
mian.c
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for (int i = 1; i < 2; i++) {
System.out.println("请输入地址:");
String address = input.next();
if (address.contains("@") && address.contains(".")) {
System.out.println("包含@和.");
System.out.println("是否要继续验证? yes or no");
for (int j = 1; j <2 ; j++) {
String s = input.next();
if (s.equals("yes")) {
i--;
} else if (s.equals("no")) {
break;
} else {System.out.println("输入不合法,请重新输入:");
j--;
}
}
} else if (!(address.contains("@") )&& address.contains(".")){
System.out.println("不包含@,包含.");
System.out.println("是否要继续验证? yes or no");
for (int j1 = 1; j1 <2 ; j1++) {
String s = input.next();
if (s.equals("yes")) {
i--;
} else if (s.equals("no")) {
break;
} else {System.out.println("输入不合法,请重新输入:");
j1--;
}
}
}
else if (address.contains("@") && !(address.contains("."))){
System.out.println("不包含.,包含@");
System.out.println("是否要继续验证? yes or no");
for (int j2 = 1; j2 <2 ; j2++) {
String s = input.next();
if (s.equals("yes")) {
i--;
} else if (s.equals("no")) {
break;
} else {System.out.println("输入不合法,请重新输入:");
j2--;
}
}
}
else {
System.out.println("@和.都不包含");
System.out.println("是否要继续验证? yes or no");
for (int j3 = 1; j3 <2 ; j3++) {
String s = input.next();
if (s.equals("yes")) {
i--;
} else if (s.equals("no")) {
break;
} else {System.out.println("输入不合法,请重新输入:");
j3--;
}
}
}
}
}
第三题
编写一个方法用来获取身份号中的出生日期,方法参数接收身份证号。
public String getBirthday(String idNo){
}
提示:String.substring(…)
main.c
public static void main(String[] args){
System.out.println("请输入身份证号:");
Scanner input = new Scanner(System.in);
String id = input.next();
String aa=Work603.getBirthday(id);
System.out.println("出生日期为:"+aa);
System.out.println("年份为:"+aa.substring(0,4)+"\t"+"月份为:"+aa.substring(4,6)+"\t"+"日:"+aa.substring(6,8));
}
getBirthday.c
public static String getBirthday(String idNo) {
String a=idNo.substring(6,14);
return a;
}
第四题
将字符串“123”分别转换成short、int、long、double类型。
提示:Integer.parseInt(), Integer.valueOf(), Short.parseShort(), ……
mian.c
public static void main(String[] args) {
String num = "123";
int ints = Integer.parseInt(num);
Integer integer = Integer.valueOf(num);
short i = Short.parseShort(num);
long l = Long.parseLong(num);
double v = Double.parseDouble(num);
System.out.println("int类型:"+ints);
System.out.println("short类型:"+i);
System.out.println("long类型:"+l);
System.out.println("double类型:"+v);
System.out.println("integer包装类型:" + integer);
}
第五题
将字符串“2 11 32 44 281”中空格分割的数字取出如:2,11,32,….
提示:用正则表达式: \\s+ 表示一个或多个空白符
String.split(regex) //expression “\\s+” --> \s+
main.c
public static void main(String[] args) {
String a="2 11 32 44 281";
String[] split = a.split("\\s+");
System.out.println( Arrays.toString(split));
}
第六题
将下面这段文字中的元音(a,e,i,o,u)的个数分别统计出来,同时统计共有多少个单词(有空格分开的就算一个单词):
The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class.
提示:char[] chrs = String.toCharArray()
int a=0,e=0,i=0,o=0,u=0;
for(char chr : chrs){
if(chr==’a’||chr==’A’){
a++;
}else if(chr==’e’||chr==’E’){
e++;
}……
}
main.c
public static void main(String[] args) {
String a1 = "The String class represents character strings." +
" All string literals in Java programs," +
" such as \"abc\", are implemented as instances of this class.";
char[] chrs = a1.toCharArray();
int a = 0, e = 0, i = 0, o = 0, u = 0;
for (char chr : chrs) {
if (chr == 'a' || chr == 'A') {
a++;
} else if (chr == 'e' || chr == 'E') {
e++;
} else if (chr == 'i' || chr == 'I') {
i++;
} else if (chr == 'o' || chr == 'O') {
o++;
} else if (chr == 'u' || chr == 'U') {
u++;
}
}
System.out.println("a:"+a);
System.out.println("e:"+e);
System.out.println("i:"+i);
System.out.println("o:"+o);
System.out.println("u:"+u);
}
第七题
编写一个程序实现将以下字符串中的信息统计出来,实现功能如下要求:
字符串:microsoft成立于1980年11月22日,CEO是bill gate.
- 统计字符串中有多少个英文字母
提示:chrs[] --> chr --> if(chr>=’a’ && chr<=’z’ || chr>=’A’ && chr<=’Z’){ … }
2.统计字符串中有多少个数字
提示:chrs --> chr --> if(chr>=’0’&& chr<=’9’){ … }
3.将字符串中的小写字母转换成大写,大写转换成小写。
4.将CEO的名字提取出来。
mian.c
public static void main(String[] args) {
String a = "microsoft成立于1980年11月22日,CEO是bill gate.";
int english=0;
int num=0;
for (int i = 0; i < a.length(); i++) {
boolean ii=false;
char c = a.charAt(i);
if(c>='a' && c<='z' ){
english++;
System.out.print(Character.toUpperCase(c));
ii=true;
}
if (c>='A'&& c<='Z') {
english++;
System.out.print(Character.toLowerCase(c));
ii=true;
}
if (c>='0'&& c<='9') {
num++;
}
if (ii==false) {
System.out.print(c);
}
}
System.out.println();
System.out.println("english : " + english);
System.out.println("num : " + num);
int billGate = a.indexOf("bill gate");
String substring = a.substring(billGate,billGate+("bill gate").length());
System.out.println("ceo的名字:" + substring);
}
第八题
编写一个方法用来验证邮件地址的合法性,方法参数接收要验证的邮件地址:要求邮件地地址中包含有“@”和“.”字符,并且“.”字符要在“@”字符的后面。
//email正则表达式
String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
email.matche(regex)
main.c
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入邮件地址:");
String email = input.next();
int regress = Work608.regress(email);
if (regress == 1) {
System.out.println("邮件地址合法。");
} else if (regress == 0) {
System.out.println("邮件地址不合法。");
}
}
regress.c
public static int regress(String email) {
String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
if (email.matches(regex)) {
return 1;
}
else return 0;
}
第九题
将字符串:"jjjjjjaaaamesssssss annnnnnnnd jacccccccccccccccckkkkkkkkkk" 中连续出现的字符替换成单个字符。
main.c
public static void main(String[] args) {
String message = "jjjjjjaaaamesssssss annnnnnnnd jacccccccccccccccckkkkkkkkkk";
String s = message.replaceAll("(.)\\1+", "$1");
System.out.println(s);
}
StringBuffer练习题
第一题
编写一个控制台程序,重复输5个学生的信息(学生姓名,年龄,性别),并把这5个学生对象加入到StringBuffer中buffer.append(student),最后输出StringBuffer的内容,输出格式如下:
1.张三 22 男
2.李四 18 女
……
注意每个学生的信息输出一行。
main.c
public static void main(String[] args) {
StringBuffer Buffer = new StringBuffer();
Scanner input = new Scanner(System.in);
for (int i = 1; i < 6; i++) {
System.out.println("请输入第"+i+"个学生信息:");
String name = input.next();
int age = input.nextInt();
String ab = input.next();
Buffer.append(i).append(".").append(name).append("\t").append(age).append("\t").append(ab).append("\n");
}
System.out.println(Buffer.toString());
}
类和对象
第一题
请编写一个Pig 类,可以完成
(1)输出自己的名字,体重,年龄,颜色
Pig.class
public class Pig {
String name;
Double ti;
Integer age;
String colour;
public String toString() {
return name+"\t"+ti+"kg"+"\t"+age+"\t"+colour;
}
Pig(String name, Double ti, Integer age, String colour) {
this.name=name;
this.ti=ti;
this.age=age;
this.colour=colour;
}
public static void main(String[] args) {
Pig pig = new Pig("张三", 44.6, 23, "黄色");
System.out.println(pig);
}
}
第二题
Student.class
public class Student {
String name;
Integer age;
String course;
String habit;
public String toString() {
return "学生信息\n姓名:"+name+"\n"+"年龄:"+age+"\n"+"参加的课程:"+course+"\n"+"兴趣:"+habit+"\n";
}
Student(String name, Integer age, String course, String habit) {
this.name=name;
this.age=age;
this.course=course;
this.habit=habit;
}
}
Teacher.class
public class Teacher {
String name;
Integer age;
String course;
String habit;
public String toString() {
return "教师信息\n姓名:"+name+"\n"+"教龄:"+age+"\n"+"教授的课程:"+course+"\n"+"专业方向:"+habit+"\n";
}
Teacher(String name, Integer age, String course, String habit) {
this.name=name;
this.age=age;
this.course=course;
this.habit=habit;
}
}
Test.class
public class Test {
public static void main(String[] args) {
Student student = new Student("张三", 18, "语文", "打球");
System.out.println( student);
Teacher teacher = new Teacher("李四", 5, "Java", "物联网");
System.out.println(teacher);
}
}
第三题
Dog.class
public class Dog {
String name;
String breed;
String size;
String colour;
Integer age;
public String toString() {
return name+"\t"+breed+"\t"+size+"\t"+colour+"\t"+age;
}
Dog(String name, String breed, String size, String colour, int age) {
this.name=name;
this.breed=breed;
this.size=size;
this.colour=colour;
this.age=age;
}
}
DogTest.class
public class DogTest {
public static void main(String[] args) {
Dog dog = new Dog("狗1", "斗牛犬", "大", "黄色", 5);
System.out.println(dog);
}
}
Music.class
public class Music {
String name;
String date;
String author;
public String toString() {
return "音乐名:"+name+"\n发布日期:"+date+"\n作者:"+author;
}
Music(String name, String date, String author) {
this.name=name;
this.date=date;
this.author=author;
}
}
MusicTest.class
public class MusicTest {
public static void main(String[] args) {
Music music = new Music("晨晨", "2022-04-01", "张三");
System.out.println( music);
}
}
Phone.class
public class Phone {
String model;
String brand;
String colour;
String date;
public String toString() {
return "型号:"+model+"\n品牌:"+brand+"\n颜色:"+colour+"\n发布日期:"+date;
}
Phone(String model, String brand, String colour, String date) {
this.model=model;
this.brand=brand;
this.colour=colour;
this.date=date;
}
}
PhoneTest.class
public class PhoneTest {
public static void main(String[] args) {
Phone phone = new Phone("m50", "晨晨", "蓝色", "2022-04-01");
System.out.println( phone);
}
}