您的位置:首页 > 其它

小练习1:如何将一个纯数字字符串升序,得到一个新字符串

2016-10-01 19:44 337 查看
相关知识:
1.字符串转换为字符数组
String类的实例方法:char[] toCharArray()
2.字符数组转换为字符串
String类的构造方法:String(char[] chr)
3.数组转化为字符串
Arrays类的静态方法:String toString(type[] arrayName)
(但是此处得到的字符串是这种形式:[ , , , ,])
思路:
1.将纯数字字符串用String类的实例方法toCharArray()变成字符数组
2.将数字元素赋给一个新的int数组,当然中间用switch case的形式将字符‘1’,变成数字1
3.对得到的int[]进行排序
4.使用Arrays类的静态方法toString(int[])将int数组变成(有括号和逗号)字符串
5.写一个方法剔除上面字符串中的非数字元素,返回只含有数字的字符串


package knowledge_basic;

import java.util.Arrays;
import java.util.Scanner;
/**
*
* <p>The class is useful to practice using the command javadoc
* to create my first Java Doc.</p>
* @author Rivers
* @version 1.00
*/
public class JavaDocTest {
/**
* <p>Test how to modify field</p>
* @see JavaDocTest#JAVADOC_TEST
*/
public static  String JAVADOC_TEST;
/**
* <p>纯数字字符串通过此方法得到升序字符串</p>
* @param   s String
* @return  String
*/
public static String sortArray(String s)
{
String result=s;
if(s.matches("\\d*"))
{
char[] c=s.toCharArray();
int[] a=new int[c.length];
for(int i=0;i<c.length;i++)
{
switch (c[i])
{
case '0': {a[i]=0;break;}
case '1': {a[i]=1;break;}
case '2': {a[i]=2;break;}
case '3': {a[i]=3;break;}
case '4': {a[i]=4;break;}
case '5': {a[i]=5;break;}
case '6': {a[i]=6;break;}
case '7': {a[i]=7;break;}
case '8': {a[i]=8;break;}
default:  {a[i]=9;break;}
}
}
a=sortArray(a);
result=Arrays.toString(a);
result=delNotNum(result);
}
else
System.out.println("error:不是纯数字");
return result;
}
/**
* <p>整型数组通过此方法获得升序数组</p>
* @param a int[]
* @return int[]
*/
public static int[] sortArray(int[] a)
{
for(int j=0;j<a.length-1;j++)
{
for(int i=j;i<a.length;i++)
{
if(a[i]<=a[j])
{
int tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
}
return a;
}
/**
* <p>任意字符串通过此方法获得删除数字元素后的字符串</p>
* @param s String
* @return String
*/
public static String delNotNum(String s)
{
int sum=0;
char[] c=s.toCharArray();
char[] c2=new char[c.length];
for(int i=0;i<c.length;i++)
{
if(c[i]=='0')
{c2[sum]=c[i];sum++;}
else if(c[i]=='1')
{c2[sum]=c[i];sum++;}
else if(c[i]=='2')
{c2[sum]=c[i];sum++;}
else if(c[i]=='3')
{c2[sum]=c[i];sum++;}
else if(c[i]=='4')
{c2[sum]=c[i];sum++;}
else if(c[i]=='5')
{c2[sum]=c[i];sum++;}
else if(c[i]=='6')
{c2[sum]=c[i];sum++;}
else if(c[i]=='7')
{c2[sum]=c[i];sum++;}
else if(c[i]=='8')
{c2[sum]=c[i];sum++;}
else if(c[i]=='9')
{c2[sum]=c[i];sum++;}
}
String result=new String(c2);
return result;
}
/**
* <p>测试如何将纯数字字符串升序排列</p>
* @param args String[]
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入一个纯数字字符串(0~9)不限位数:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
sc.close();
System.out.println("排序后的字符串为: "+sortArray(s));
}

}


请输入一个纯数字字符串(0~9)不限位数:31398741974

排序后的字符串为: 11334477899
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  小练习
相关文章推荐