表示数字(整合的别人的)

来源:互联网 发布:阿里云余额怎么使用 编辑:程序博客网 时间:2024/06/04 22:31

方案一:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);char[] strBefore = scan.nextLine().toCharArray();char[] strAfter = new char[2*strBefore.length];int sAL = 0;//strAfterLocationfor(int i = 0 ; i < strBefore.length ; i++){if(i == 0){//对于第一个字符if(strBefore[i]>='0' && strBefore[i]<='9'){//如果第一个字符是数字if(strBefore[i+1]>='0' && strBefore[i+1]<='9'){//如果第一个字符是数字,且第二个字符也是数字strAfter[sAL++]='*';strAfter[sAL++]=strBefore[i];}else{//如果第一个字符是数字,且第二个字符不是数字strAfter[sAL++]='*';strAfter[sAL++]=strBefore[i];strAfter[sAL++]='*';}}else//第一个字符不是数字strAfter[sAL++]=strBefore[i];}else if(i == strBefore.length-1){//对于最后一个字符if(strBefore[i]>='0' && strBefore[i]<='9'){//如果最后一个字符是数字if(strBefore[i-1]>='0' && strBefore[i-1]<='9'){//如果最后一个字符是数字,且倒数第二个字符也是数字strAfter[sAL++]=strBefore[i];strAfter[sAL++]='*';}else{//如果最后一个字符是数字,且倒数第二个字符不是数字strAfter[sAL++]='*';strAfter[sAL++]=strBefore[i];strAfter[sAL++]='*';}}else//如果最后一个字符不是数字strAfter[sAL++]=strBefore[i];}else{//对于中间的字符if(strBefore[i]>='0' && strBefore[i]<='9'){//如果中间的字符是数字if((strBefore[i-1]>='0' && strBefore[i-1]<='9') && (strBefore[i+1]>='0' && strBefore[i+1]<='9')){//前后都是数字strAfter[sAL++]=strBefore[i];}else if(!(strBefore[i-1]>='0' && strBefore[i-1]<='9') && (strBefore[i+1]>='0' && strBefore[i+1]<='9')){//前字母后数字strAfter[sAL++]='*';strAfter[sAL++]=strBefore[i];}else if((strBefore[i-1]>='0' && strBefore[i-1]<='9') && !(strBefore[i+1]>='0' && strBefore[i+1]<='9')){//前数字后字母strAfter[sAL++]=strBefore[i];strAfter[sAL++]='*';}else if(!(strBefore[i-1]>='0' && strBefore[i-1]<='9') && !(strBefore[i+1]>='0' && strBefore[i+1]<='9')){//前后都是字母strAfter[sAL++]='*';strAfter[sAL++]=strBefore[i];strAfter[sAL++]='*';}}else//如果中间的字符不是数字strAfter[sAL++]=strBefore[i];}}for(int i = 0 ; i < sAL; i++){System.out.print(strAfter[i]);}}}

方案二:比较简单。

package oj.test;import java.util.Scanner;public class Demo1 { /**  * @表示数字    * 将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变  */ public static void main(String[] args) {  Scanner sc = new Scanner(System.in);  String str = sc.nextLine();  str = str.replaceAll("([0-9]+)", "*$1*");  System.out.println(str); }}
第二种方案虽然简单,但对转义字符的运用要求比较高。参考文章:http://blog.csdn.net/lily0806/article/details/45026457

0 0
原创粉丝点击