本帖最后由 王虎 于 2012-10-12 23:54 编辑
要求:1.得到一个字符串,这个字符串是数字与字母的组全
例如 12,A,54,4,D,8,K,24 它们之间使用,分开.
其中的数字是100以内随机得到的,字母是A-Z 随机得到的
一共有100个.
2.将这个字符串中所有数字取到进行排序,所有字母得到进行排序.
import java.util.*;
class Test5
{
public static void main(String[] args)
{
//得到一个随机字符串
String s = getString();
//显示得到的随机字符串
System.out.println(s);
optionString(s);
}
//将一个StringBuilder中的内容转换成int[]中的元素
public static int[] stringBuilderToIntArray(StringBuilder sb)
{
String[] st = sb.toString().split(",");
int[] arr = new int[st.length];
for(int i=0;i<arr.length;i++)
{
arr = Integer.parseInt(st);
}
return arr;
}
public static char[] stringBuilderToCharArray(StringBuilder sb)
{
String[] st = sb.toString().split(",");
char[] ch = new char[st.length];
for(int i=0;i<ch.length;i++)
{
ch= st.charAt(0);
}
return ch;
}
public static void optionString(String s)
{
String[] st = s.split(","); //随机字符串都是用逗号分开的
//st数组中就装的是所有的数字与字母
//用来装数字
StringBuilder buildNumber = new StringBuilder();
//用来装字母
StringBuilder buildChar = new StringBuilder();
//下面循环的作用是便利st数组
for(int i=0;i<st.length;i++)
{
char ch =st.charAt(0);
if(ch>'A'&&ch<'Z')
{
buildChar.append(st).append(",");//所有字母用逗号分开
}else{
int num = Integer.parseInt(st);
buildNumber.append(num).append(",");//所有数字 用逗号分开
}
}
int[] number = stringBuilderToIntArray(buildNumber);
intSort(number);
for(int i=0;i<number.length;i++)
{
System.out.println(number);
}
char[] charArray = stringBuilderToCharArray(buildChar);
charSort(charArray);
for(int i=0;i<charArray.length;i++)
{
System.out.println(charArray);
}
}
//对int数组排序
public static void intSort(int[] arr)
{
//Arrays.sort(arr);
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp =arr[x];
arr[x]=arr[y];
arr[y]= temp;
}
}
}
}
//对char数组排序
public static void charSort(char[] ch)
{
//Arrays.sort(ch);
for(int x=0;x<ch.length-1;x++)
{
for(int y=1;y<ch.length-1-x;y++)
{
if(ch[x]>ch[y])
{
char temp =ch[y];
ch[y]=ch[y+1];
ch[y+1]= temp;
}
}
}
}
//得到一个数字与字母的组的字符串
public static String getString()
{
//String s="";
Random ran = new Random();
StringBuilder build = new StringBuilder();
for(int i=0;i<10;i++)
{
//随机得到一个数判断是否是偶数,如果是偶数得到一个字符.
if(ran.nextInt()%2==0)
{
int num = ran.nextInt(100);
build = build.append(num).append(",");
}else{
char ch=(char)(ran.nextInt(26)+'A');
build = build.append(ch).append(",");
}
}
return build.deleteCharAt(build.length()-1).toString();
}
}
控制台输出结果:
32,13,J,30,Q,79,A,Z,T,41
Exception in thread "main" java.lang.NumberFormatException: For input string: "A
"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at Test5.optionString(Test5.java:119)
at Test5.main(Test5.java:42)
当我调用调用默认的函数时显示是正常的,但是一调用我自己写的方法时第一次结果没事,在运行一次就出现
这个情况,关键是这个让我很不理解“NumberFormatException”时我写的排序方法有问题还是??哪位大神帮忙解决下
|