练习一
- 1:输出字符串"HelloWorld"的字符串长度
- 2:输出"HelloWorld"中"o"的位置
- 3:输出"HelloWorld"中从下标5开始第一次出现"o"的位置
- 4:截取"HelloWorld"中的"Hello"并输出
- 5:截取"HelloWorld"中的"World"并输出
- 6:输出"HelloWorld"是否是以"h"开头和"ld"结尾的。
- 7:输出"HelloWorld"中第6个字符"W"
public class Test01 {
public static void main(String[] args) {
String str = "HelloWorld";
test1(str);
test2(str);
test3(str);
test4(str);
test5(str);
test6(str);
}
private static void test6(String str) {
System.out.println(str.charAt(5));
}
private static void test5(String str) {
System.out.println(str.startsWith("h"));
System.out.println(str.endsWith("ld"));
}
private static void test4(String str) {
System.out.println(str.substring(str.indexOf("H"), 5));
}
private static void test3(String str) {
System.out.println(str.indexOf("o", 5));
}
private static void test2(String str) {
System.out.println(str.indexOf("o"));
}
public static void test1(String str){
System.out.println(str.length());
}
练习二
- 将"大家好!"修改为:"大家好!我是程序员!"并输出。
- 然后将"大家好!我是程序员!"修改为:“大家好!我是优秀的程序员!”
- 并输出
- 然后再修改为:"大家好!我是牛牛的程序员!"并输出
- 然后在修改为:"我是牛牛的程序员!"并输出
- @author Xiloer
public class Test02 {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("大家好!");
sb.append("我是程序员!");
System.out.println(sb);
sb.insert(sb.indexOf("程"), "优秀的");
System.out.println(sb);
sb.replace(sb.indexOf("优"), sb.indexOf("的"), "🐮🐮");
System.out.println(sb);
sb.replace(sb.indexOf("大"), sb.indexOf("我"), "");
System.out.println(sb);
}
}
练习三
* 编写一个回文字符串,然后调用check方法检查
* 该字符串是否为回文,然后输出检查结果。
* 若是回文则输出:是回文
* 否则输出:不是回文
public class Test03 {
public static void main(String[] args) {
String str="上海自来水来自海上";
System.out.println(check(str));
}
public static boolean check(String str){
for(int i=0;i<=str.length()/2;i++) {
if(!(str.charAt(i)==str.charAt(str.length()-i-1))) {
return false;
}
}
return true;
}
}
练习四
- 要求用户从控制台输入一个email地址,
- 然后获取该email的用户名(@之前的内容)
- @author Xiloer
public class Test04 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入email");
String str=sc.next();
StringBuffer sb=new StringBuffer();
for (int i = 0; i < str.length(); i++) {
String str1=(String) str.subSequence(i, i+1);
if(str1.matches("\\w")) {
sb.append(str1);
}else {
break;
}
}
System.out.println(sb);
}
}
练习五
- 随机生成一个5位的英文字母验证码(大小写混搭)
- 然后将该验证码输出给用户,然后要求用户输入该验证码,
- 大小写不限制。
- 然后判定用户输入的验证码是否有效(无论用户输入大小写,
- 只要字母都正确即可)。
- String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 - String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
public class Test05 {
public static void main(String[] args) {
String str=random();
System.out.println(str);
System.out.println("请输入验证码(不区分大小写)");
Scanner sc=new Scanner(System.in);
String strin=sc.next();
str=str.toUpperCase();
strin=strin.toUpperCase();
if(strin.equals(str)) {
System.out.println("正确");
}else {
System.out.println("错误");
}
}
private static String random() {
char []c=new char[5];
String str="";
for (int i = 0; i < c.length; i++) {
int x=(int)(Math.random()*2);{
if(x==1) {
c[i]=(char)((Math.random()*25)+97);
str+=c[i];
}else {
c[i]=(char)((Math.random()*25)+65);
str+=c[i];
}
}
}
return str;
}
}
练习6
- 要求用户输入一个计算表达式,可以使用加减乘除。
- 只处理一次运算的,不要有连续加减乘除的表达式,
- 且不做小数计算。(例:1+2+3)
- 例如:
- 1+2
- 然后经过处理计算结果并输出:1+2=3
- @author Xiloer
public class Test06 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入表达式");
String str=sc.next();
System.out.println(str+"="+parseInt(str));
}
public static int parseInt(String str){
String s="";
String fuhao="";
int index=0;
int x=0;
int y=0;
for (int i = 0; i < str.length(); i++) {
String str1=(String) str.subSequence(i, i+1);
if(str1.matches("\\d")) {
s+=str1;
}else {
x=Integer.parseInt(s);
s="";
index=i;
fuhao=str1;
break;
}
}
for(int i=index;i<str.length();i++) {
String str1=(String) str.subSequence(i, i+1);
if(str1.matches("\\d")) {
s+=str1;
}
}
y=Integer.parseInt(s);
switch(fuhao) {
case"+":
return x+y;
case"-":
return x-y;
case"*":
return x*y;
case"/":
try {
return x/y;
} catch (Exception e) {
System.out.println("除数不能为0");
}
default:
return 0;
}
}
}
练习七
- 在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成
- 如下操作:用户名长度大于等于6位,必须包含数字和英文字母
- 密码长度大于等于8位,必须包含特殊符号_或者$,英文字母以及数字
- 以上两个条件同时成立注册才能成功。
- @author Kennan
public class Test07 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入用户名");
String user=sc.next();
int count=0;
int count1=0;
int count2=0;
boolean flag=true;
boolean flag1=true;
boolean flag2=true;
boolean flag3=true;
while(flag) {
if(user.length()<6) {
System.out.println("用户名需大于六位,请重新输入");
user=sc.next();
}else {
flag=!flag;
}
}
while(flag1) {
for (int i = 0; i < user.length(); i++) {
String str=(String) user.subSequence(i, i+1);
if((str.matches("[a-zA-Z]"))) {
count++;
}else if(str.matches("[0-9]")) {
count1++;
}
}
if(count!=0&&count1!=0) {
flag1=!flag1;
}else {
System.out.println("用户名格式有误,请重新输入");
count=0;
count1=0;
user=sc.next();
}
count=0;
count1=0;
}
System.out.println("请输入密码");
String password=sc.next();
while(flag2) {
if(password.length()<8) {
System.out.println("密码需大于八位,请重新输入密码");
password=sc.next();
}else {
flag2=!flag2;
}
}
while(flag3) {
for (int i = 0; i < password.length(); i++) {
String str=(String) password.subSequence(i, i+1);
if((str.matches("[0-9]"))) {
count++;
}else if(str.matches("[_$]")) {
count1++;
}else if(str.matches("[a-zA-Z]")) {
count2++;
}
}
if(count!=0&&count1!=0&&count2!=0) {
System.out.println("注册成功");
flag3=!flag3;
}else {
System.out.println("密码格式有误,请重新输入");
count=0;
count1=0;
count2=0;
password=sc.next();
}
}
}
}
练习八
- 编写敏感词过滤程序
- 在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。
- 如“性”、“色情”、“爆炸”、“恐怖”、“枪”等,这些都不可以在网上进行传播,需要过滤掉或者用其他词语替换掉。
- 思路:将用户的聊天内容保存到一个字符串对象或一个StringBuilder对象中,然后与敏感词语进行比对。
- 如果属于敏感词语,就过滤掉或替换掉。
- @author Kennan
public class Test08 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入发言");
while(true) {
String string=sc.next();
grandFather(string);
}
}
private static void grandmother(String string) {
string=string.replace("性", "*");
string=string.replace("色情", "**");
string=string.replace("爆炸", "**");
string=string.replace("恐怖", "**");
string=string.replace("枪", "*");
System.out.println(string);
}
private static void grandFather(String string) {
string=string.replaceAll("[性|色情|恐怖|枪|爆炸]+", "*");
System.out.println(string);
}
private static void father(String string) {
StringBuffer sb=new StringBuffer();
for (int i = 0; i < string.length(); i++) {
String str=(String)string.subSequence(i, i+1);
if(str.equals("枪")||str.equals("性")||str.equals("色")||str.equals("情")
||str.equals("爆")||str.equals("炸")||str.equals("恐")||str.equals("怖")) {
sb.replace(i, i+1, "*");
}else {
sb.append(str);
}
}
System.out.println(sb);
}
private static void mother(String str) {
StringBuffer sb =new StringBuffer();
sb.append(str);
for(int i=0;i<sb.length();i++) {
if(sb.indexOf("炸弹")!=-1) {
sb.replace(sb.indexOf("炸弹"), sb.indexOf("炸弹")+2, "**");
}else if(sb.indexOf("性")!=-1) {
sb.replace(sb.indexOf("性"), sb.indexOf("性")+1, "*");
}else if(sb.indexOf("恐怖")!=-1) {
sb.replace(sb.indexOf("恐怖"), sb.indexOf("恐怖")+2, "**");
}else if(sb.indexOf("色情")!=-1){
sb.replace(sb.indexOf("色情"), sb.indexOf("色情")+2, "**");
}else if(sb.indexOf("枪")!=-1) {
sb.replace(sb.indexOf("枪"), sb.indexOf("枪")+1, "*");
}
}
System.out.println(sb);
}
}