A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秋天 黑马帝   /  2011-11-8 16:28  /  1855 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 秋天 于 2011-11-8 16:46 编辑

按照书本打了一个冒泡程序
public class MaoPao{
    public static void main(String[] args){
        int[]a=new int[]{13,10,15,4,2,1,28,25,34};//创建一个整数数组a,其值是13,10,15,4,2,1,28,25,34
        int i,t,j;//定义三个整型变量i,t,j.

        System.out.print("排列前的数组为:");
        for(i=0;i<10;i++){//使用for循环语句
                System.out.print(a+" ");//输出数组a的值
        }
        System.out.println("");//换行

        for(j=0;j<9;j++){//外层循环
                for(i=0;i<9;i++){//内层循环
                        if(a>a[i+1]){//如果前一个数大于后一个
                                t=a;//将前一个元素赋值给中间变量t
                                a=a[i+1];//将后一个元素赋值前一个元素
                                a[i+1]=t;//将中间变量t赋值给后一个元素
                        }
                }
        }
        System.out.print("排列后的数组为:");
        for(i=0;1<10;i++){//使用for循环
                System.out.print(a+" ");//输出数组a的值
        }
    }
}





原来少打了一个数据4现在改过来了
       






public class MaoPao{
    public static void main(String[] args){
        int[]a=new int[]{13,10,3,15,4,2,1,28,25,34};//创建一个整数数组a,其值是13,10,15,4,2,1,28,25,34
        int i,t,j;//定义三个整型变量i,t,j.

        System.out.print("排列前的数组为:");
        for(i=0;i<10;i++){//使用for循环语句
                System.out.print(a+" ");//输出数组a的值
        }
        System.out.println("");//换行

        for(j=1;j<9;j++){//外层循环
                for(i=1;i<9;i++){//内层循环
                        if(a>a[i+1]){//如果前一个数大于后一个
                                t=a;//将前一个元素赋值给中间变量t
                                a=a[i+1];//将后一个元素赋值前一个元素
                                a[i+1]=t;//将中间变量t赋值给后一个元素
                        }
                }
        }
        System.out.print("排列后的数组为:");
        for(i=0;1<10;i++){//使用for循环
                System.out.print(a+" ");//输出数组a的值
        }
    }
}       
               



运行发现第二次的数据中第一个没更改   就把
                  for(j=1;j<9;j++){//外层循环
                for(i=1;i<9;i++){//内层循环
                        if(a>a[i+1]){//如果前一个数大于后一个
                                t=a;//将前一个元素赋值给中间变量t
                                a=a[i+1];//将后一个元素赋值前一个元素
                                a[i+1]=t;//将中间变量t赋值给后一个元素
                        }


改为  for(j=0;j<9;j++){//外层循环
                for(i=0;i<9;i++){//内层循环
                        if(a>a[i+1]){//如果前一个数大于后一个
                                t=a;//将前一个元素赋值给中间变量t
                                a=a[i+1];//将后一个元素赋值前一个元素
                                a[i+1]=t;//将中间变量t赋值给后一个元素
                        }


运行之后这样了---------- java ----------
排列前的数组为:13 10 3 15 4 2 1 28 25 34
排列后的数组为:1 2 3 4 10 13 15 25 28 34 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at MaoPao.main(MaoPao.java:23)

输出完毕 (耗时 1 秒) - 正常终止



       

9 个回复

倒序浏览
编译之后是正常的
回复 使用道具 举报
但运行之后只能输出原来的值  、

QQ截图20111108162933.gif (3.75 KB, 下载次数: 8)

QQ截图20111108162933.gif
回复 使用道具 举报
本帖最后由 秋天 于 2011-11-8 16:34 编辑

改成这样还是错
for(j=1;j<9;j++){//外层循环
                for(i=1;i<9;i++){//内层循环
                        if(a>a[i+1]){//如果前一个数大于后一个
                                t=a;//将前一个元素赋值给中间变量t
                                a=a[i+1];//将后一个元素赋值前一个元素
                                a[i+1]=t;//将中间变量t赋值给后一个元素               
回复 使用道具 举报
数组越界吧,提示你第八行.
第8行的应该是  for(i=0;i<9;i++){//使用for循环语句
回复 使用道具 举报
本帖最后由 秋天 于 2011-11-8 16:39 编辑
齐国峰 发表于 2011-11-8 16:34
数组越界吧,提示你第八行.
第8行的应该是  for(i=0;i


第八行是        System.out.print(a+" ");//输出数组a的值  输出语句怎么错了

QQ截图20111108162933.gif (5.14 KB, 下载次数: 7)

QQ截图20111108162933.gif

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
olkldksl 黑马帝 2011-11-8 16:47:07
7#
内循环改成
for(i=0;i<8;i++){//内层循环
因为数组里就9个值,将最大值送到末尾比较8次就行了
多比较一次数组就越界了
回复 使用道具 举报
齐国峰 黑马帝 2011-11-8 16:49:40
8#
本帖最后由 齐国峰 于 2011-11-8 16:50 编辑
秋天 发表于 2011-11-8 16:36
第八行是        System.out.print(a+" ");//输出数组a的值  输出语句怎么错了


恩,可能是我看错了...
回复 使用道具 举报
秋天 黑马帝 2011-11-8 16:55:58
9#
olkldksl 发表于 2011-11-8 16:47
内循环改成
for(i=0;i

最后输出前我把for(i=0;i<10;i++){//使用for循环  打成了l<10
回复 使用道具 举报
java.lang.ArrayIndexOutOfBoundsException: 一般报这个错就代表数组越界异常了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马