黑马程序员技术交流社区
标题:
字符排序
[打印本页]
作者:
记得上线
时间:
2012-7-8 16:57
标题:
字符排序
/*
对字符串中的字符进行自然排序
思路
1 把字符串变成字符数组
2 对数组进行排序。
*/
class StringTest4
{
public static void main(String[] args)
{
String str="12 0 99 -1 -6";
}
public static String paixu(String str)
{
char[] ch=str.toCharArray();
//System.out.println(ch[]);
char ch1=ch.arr();
copyValueOf(ch1);
System.out.println();//这个地方我想打印一下排序后的字符数组,请问怎么写。
}
public static Array arr(char[] arr1)
{
for(int x=0;x<arr1.length-2;x++)
{
for(int y=x+1;y<(arr1.length-1);y++)
{
if(arr1[x]>arr1(y))
{
char temp=arr1[x];
arr1[x]=arr1[y];
arr1[y]=temp;
}
}
}
return arr1[];
}
}
//报错 [img]file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/619034576/QQ/WinTemp/RichOle/I7GRIOT_X3@%U{5NUW[B6`T.jpg[/img]
作者:
记得上线
时间:
2012-7-8 16:58
报错截图为
I7GRIOT_X3@%U{5NUW[B6`T.jpg
(12.11 KB, 下载次数: 24)
下载附件
2012-7-8 16:58 上传
作者:
康大玮
时间:
2012-7-8 17:11
package day7_8;
/*
对字符串中的字符进行自然排序
思路
1 把字符串变成字符数组
2 对数组进行排序。
*/
class StringTest4 {
public static void main(String[] args) {
String str = "12 0 99 -1 -6";
paixu(str);
}
public static String paixu(String str) {
char[] ch = str.toCharArray();
System.out.println(ch);
char[] ch1 = arr(ch);
System.out.println(ch1);// 这个地方我想打印一下排序后的字符数组,请问怎么写。
return "";
}
public static char[] arr(char[] arr1)
{
for(int x=0;x<arr1.length-2;x++)
{
for(int y=x+1;y<(arr1.length-1);y++)
{
if(arr1[x]>arr1[y])
{
char temp=arr1[x];
arr1[x]=arr1[y];
arr1[y]=temp;
}
}
}
return arr1;
}
}
但是 排序结果不对
12 0 99 -1 -6
--0112996
作者:
康大玮
时间:
2012-7-8 17:12
char[] ch = str.toCharArray(); 这句 不好 ?
这是 第几天得视频?
作者:
记得上线
时间:
2012-7-8 17:28
这是课件,课上没讲。
char[] ch = str.toCharArray(); // 如果是这个的问题的话应该不止只报这个错,后面好多都用到了ch。
作者:
董深义
时间:
2012-7-8 17:50
class StringTest4
{
public static void main(String[] args)
{
String str="12 0 99 -1 -6";
paixu(str);
}
public static void paixu(String str)
{
char[] ch=str.toCharArray();//
String.ToCharArray()方法作用:将字符串拆分为字符到数组。12 0 99 -1 -6转化后是一个一个含有13个字符的字符数组
System.out.println(ch.length);//
运行结果为13
char[] ch1=arr(ch);
System.out.println(ch1);//
数组是可以直接输出打印的,也可以自己写个函数,调用一下
}
public static char[] arr(char[] arr1)//
楼主的选择算法也写错了,for语句的比较长度少了一次x<arr1.length-1;y<(arr1.length)
{
for(int x=0;x<arr1.length-1;x++)
{
for(int y=x+1;y<(arr1.length);y++)
{
if(arr1[x]>arr1[y])
{
char temp=arr1[x];
arr1[x]=arr1[y];
arr1[y]=temp;
}
}
}
return arr1;
}
}
作者:
黄丽慧
时间:
2012-7-8 18:22
本帖最后由 黄丽慧 于 2012-7-8 18:45 编辑
楼主,你好像有点太粗心了额,你贴出来的这段代码有不少错误的地方,再仔细地看看改一下吧,要不编译肯定通不过的。
class StringTest4
{
public static void main(String[] args)//
这里是主函数,可是却没有调用任何的方法,只定义了一个字符串变量,肯定是没有办法达到排序的功能啦
{
String str="12 0 99 -1 -6";
//这里应该调用排序的方法,paixu(str);
}
public static String paixu(String str)
{
char[] ch=str.toCharArray();
//System.out.println(ch[]);
char ch1=ch.arr();
copyValueOf(ch1);//
这个程序中根本就没有copyValueOf方法,调用时肯定会出错的,这个地方楼主是想实现什么功能啊
System.out.println();//
楼主这里如果想打印排序好的字符数组,有两种办法,调用数组的toString方法,变成字符串输出,另外一种是用for循环输出
}
public static Array arr(char[] arr1)
//楼主是想返回一个字符数组吧?这样返回是错误的Array不是一个类型啊,应该改成这样的
public static char[] arr(char[] arr1)
{
for(int x=0;x<arr1.length-2;x++)
{
for(int y=x+1;y<(arr1.length-1);y++)//
这里的y<(arr1.length-1)不需要括号的
{
if(arr1[x]>arr1(y))
{
char temp=arr1[x];
arr1[x]=arr1[y];
arr1[y]=temp;
}
}
}
return arr1[];//
}
}
楼主我有个地方不太明白,你给的字符串是由数字组成的吧,数字跟数字之间是不是用空格隔开的,数字有两位数也有负数?如果是这样的话,
单纯地将字符串转换成字符数组再去排序是肯定达不到效果的。我觉得要解决问题的话应该用ArrayList容器来存储,然后再对元素进行比较大小。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2