在上一篇中 我用的简单的String.valueOf 在本文中,我采用的是list和map两种方法来实现。
代码如下:
package com.domain.com;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class UnKown {
static Map<String, Integer> map=new HashMap<String, Integer>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
UnKown unk = new UnKown();
System.out.println("1.开始绿化 2.解除绿化");
int chs= sc.nextInt();
if(chs==1) {
System.out.println("输入检查字符:");
unk.greening();
System.out.println("非法字符共出现:"+"次");
}else {
unk.notGreening();
}
}
首先我们定义一个map 初始化对象
执行如下:
开始运行unk.greening绿化:
public void greening() {
Scanner sc1 = new Scanner(System.in);
String character = sc1.nextLine();
String str = character;
str.trim();//去除首尾空格
StringBuffer sb=new StringBuffer(str);
List list=new ArrayList<>();
list.add("我");
list.add("你");
list.add("他");
map.put("我",0);
map.put("你",0);
map.put("他",0);
int temp=0;
int result=0;
for (int i = 0; i < list.size(); i++) {
result=sb.indexOf(list.get(i).toString());
boolean tag=true;
if(result==-1)
{
break;
}
else {
while(tag) {
temp=result;
sb.replace(result, result+list.get(i).toString().length(), "*"+(map.get(list.get(i))+1));
int num=map.get(list.get(i));
map.put(list.get(i).toString(), ++num);
result=sb.indexOf(list.get(i).toString(), temp);
if(result==-1)
{
tag=false;
}
}
}
}
result=0;
for(int i=0;i<list.size();i++)
{
result+=map.get(list.get(i));
}
System.out.println("绿化后版本:"+sb.toString());
System.out.println("非法字符一共出现了"+result);
noob-Java-man
若有不妥之处,请多指教!