此冒泡排序是否可运行

dazui521 2010-01-10 11:46:51
public class MP {
public static void main(String[] args){
Object a[] = new Object[9];
a[0] = "1";
a[1] = "2";
a[2] = "8";
a[3] = "5";
a[4] = "7";
a[5] = "9";
a[6] = "13";
a[7] = "4";
a[8] = "0";
Object temp[] = new Object[9];
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-i-1;j++){
if(((Integer)a[j]).intValue()>((Integer)a[j+1]).intValue()){
temp[i] = a[j];
a[j] = a[j+1];
a[j] = temp[i];
}
}
}
for(int k=0;k<a.length;k++){
System.out.print(temp[k]);
}
}
}

运行时有错误:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at com.zy.daoc.MP.main(MP.java:18)
如有问题,请帮忙修改
...全文
108 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dazui521 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java_cxrs 的回复:]
看下我这个冒泡
Java codepublicclass maoPao {publicstaticint[] mp(int []arry){for(int i=0;i<arry.length;i++){for(int j=i;j<arry.length;j++){int temp;if(arry[i]>arry[j]){
temp=arry[i];
arry[i]=arry[j];
arry[j]=temp;
}
}
}return arry;

}publicstaticvoid main(String[] args) {int[] ar={12,23,1,23,45,11,42,9,45,2,16,77,86,56,43};

mp(ar);for(int i=0;i<ar.length;i++){
System.out.print(ar[i]+"");
}
}

}
[/Quote]
这个我知道,但是上面我写的有什么问题呢,最好能帮忙修改,谢谢
不善^ 2010-01-10
  • 打赏
  • 举报
回复
看下我这个冒泡


public class maoPao {
public static int[] mp(int []arry){
for(int i=0;i<arry.length;i++){
for(int j=i;j<arry.length;j++){
int temp;
if(arry[i]>arry[j]){
temp=arry[i];
arry[i]=arry[j];
arry[j]=temp;
}
}
}


return arry;

}

public static void main(String[] args) {
int[] ar ={12,23,1,23,45,11,42,9,45,2,16,77,86,56,43};

mp(ar);
for(int i=0;i<ar.length;i++){
System.out.print(ar[i]+" ");
}
}

}
lovehuazi 2010-01-10
  • 打赏
  • 举报
回复
if(((Integer)a[j]).intValue()>((Integer)a[j+1]).intValue()){
看了这么多回帖,不就是转换出错么,
if(Integet.IntValue(a[j])>Integer.IntValue(a[j+1]))
{

}
三楼的同志干嘛还要把它toString()啊?

还有冒泡排序的外层循环应该是i<a.length-1吧!!!!!!
Thinking_In_IT 2010-01-10
  • 打赏
  • 举报
回复

/**
* @author troy(J2EE)
* @version 1.0 1995年的3月23日
*/
public class Test {
public static void main(String[] args){
int[] a= new int[9];
a[0] = 1;
a[1] = 2;
a[2] = 8;
a[3] = 5;
a[4] = 7;
a[5] = 9;
a[6] = 13;
a[7] = 4;
a[8] = 0;
int temp;
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-i-1;j++){
if( a[j]>a[j+1] ){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int k=0;k<a.length;k++){
System.out.println(a[k]);
}
}
}
Thinking_In_IT 2010-01-10
  • 打赏
  • 举报
回复
冒泡排序 就不要使用Object[] 对象数组了

这样的程序 请直接使用 int[]数组

优点:int[] 效率高,可以持有基本数据类型 不需要JDK自动装箱和拆箱
Thinking_In_IT 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dazui521 的回复:]
引用 3 楼 kaoh1631 的回复:
Java codepublicclass Test {publicstaticvoid main(String[] args){
        Object a[]=new Object[9];
        a[0]="1";
        a[1]="2";
        a[2]="8";
        a[3]="5";
        a[4]="7";
        a[5?-

错误提示
The operator > is undefined for the argument type(s) java.lang.Integer,
java.lang.Integer
请帮忙,谢谢,在线急等
[/Quote]

我的代码是在JDK1.5 上面 编译的 没有问题

请问你的jdk 版本,运行如下命令

java -version
dazui521 2010-01-10
  • 打赏
  • 举报
回复
确实挺麻烦
handsome_huxiulei 2010-01-10
  • 打赏
  • 举报
回复
就一冒泡 这么复杂...
returnnnulll 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java_cxrs 的回复:]
看下我这个冒泡
Java codepublicclass maoPao {publicstaticint[] mp(int []arry){for(int i=0;i<arry.length;i++){for(int j=i+1;j<arry.length;j++){int temp;if(arry[i]>arry[j]){
temp=arry[i];
arry[i]=arry[j];
arry[j]=temp;
}
}
}return arry;

}publicstaticvoid main(String[] args) {int[] ar={12,23,1,23,45,11,42,9,45,2,16,77,86,56,43};

mp(ar);for(int i=0;i<ar.length;i++){
System.out.print(ar[i]+"");
}
}

}
[/Quote]

这样写更合理呀!
for(int j=i+1;j<arry.length;j++){

不善^ 2010-01-10
  • 打赏
  • 举报
回复
我晕 你搞那么麻烦干什么? 转来转去的



public class MP {
public static void main(String[] args){
Object a[] = new Object[9];
a[0] = "1";
a[1] = "2";
a[2] = "8";
a[3] = "5";
a[4] = "7";
a[5] = "9";
a[6] = "13";
a[7] = "4";
a[8] = "0";
Object temp[] = new Object[9];
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-i-1;j++){

if((Integer.valueOf(a[j].toString())).intValue()>((Integer.valueOf(a[j+1].toString())).intValue())){
temp[i] = a[j];
a[j] = a[j+1];
a[j] = temp[i];
}
}
}
for(int k=0;k<a.length;k++){
System.out.print(temp[k]);
}
}
}


底下 temp 也要转换 自己转下吧
dazui521 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kaoh1631 的回复:]
Java codepublicclass Test {publicstaticvoid main(String[] args){
Object a[]=new Object[9];
a[0]="1";
a[1]="2";
a[2]="8";
a[3]="5";
a[4]="7";
a[5?-
[/Quote]
错误提示
The operator > is undefined for the argument type(s) java.lang.Integer,
java.lang.Integer
请帮忙,谢谢,在线急等
sotom 2010-01-10
  • 打赏
  • 举报
回复
java.lang.String cannot be cast to java.lang.Integer

类型转换出错。。
Thinking_In_IT 2010-01-10
  • 打赏
  • 举报
回复

public class Test {
public static void main(String[] args){
Object a[] = new Object[9];
a[0] = "1";
a[1] = "2";
a[2] = "8";
a[3] = "5";
a[4] = "7";
a[5] = "9";
a[6] = "13";
a[7] = "4";
a[8] = "0";
Object temp[] = new Object[9];
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-i-1;j++){
// if(((Integer)a[j]).intValue()>((Integer)a[j+1]).intValue()){ 出错!!
if( Integer.valueOf(a[j].toString())>Integer.valueOf(a[j+1].toString()) ){
temp[i] = a[j];
a[j] = a[j+1];
a[j+1] = temp[i];
}
}
}
for(int k=0;k<a.length;k++){
System.out.println(a[k]);
}
}
}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧